Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 37

صنع أدوات Python لوكلائك

Recommended resources

أهلاً بك مجدداً في رحلتنا لبناء وكلاء الذكاء الاصطناعي!

في الدرس السابق، استكشفنا المفهوم النظري لـ "استدعاء الدوال" (Function Calling)، وفهمنا كيف أنه يمثل الجسر الذي يسمح لوكيلنا بالتفاعل مع العالم الحقيقي. لقد تعلمنا أن النموذج اللغوي (العقل) يمكنه "اقتراح" استخدام أداة معينة، لكنه لا ينفذها بنفسه.

اليوم، سننتقل من النظرية إلى التطبيق. هدفنا هو تحقيق المخرج التعليمي التالي: إنشاء دالة Python بسيطة يمكن للوكيل استخدامها كـ 'أداة'. سنكتب أول قطعة كود فعلية ستمنح وكيلنا قدرة جديدة. هذه الخطوة أساسية لتحويل وكيلنا من مجرد "مفكر" إلى "فاعل".


1. ما هي الدالة (Function) في بايثون؟

قبل أن نبني "أداة" للوكيل، نحتاج إلى فهم ما هي "الدالة" في البرمجة. ببساطة، الدالة هي عبارة عن كتلة من الكود المنظم والقابل لإعادة الاستخدام، مصممة لأداء مهمة محددة.

فكر فيها كأنها وصفة طبخ صغيرة:

  • لها اسم (مثلاً: "وصفة الكيك").
  • تتبع خطوات محددة (اخلط المكونات، ضعها في الفرن).
  • في النهاية، تعطيك نتيجة (كيك جاهز).

في البرمجة، استخدام الدوال يساعدنا على:

  • تنظيم الكود: بدلاً من كتابة كل شيء في ملف واحد كبير، نقسم المهام إلى دوال صغيرة وواضحة.
  • إعادة الاستخدام: إذا احتجنا لتنفيذ نفس المهمة عدة مرات، نستدعي الدالة بدلاً من إعادة كتابة الكود.

للحصول على مقدمة ممتازة ومبسطة عن الدوال في بايثون، شاهد المقطع التالي.

تعلم بايثون من الصفر للمبتدئين. إنشاء وظائف او دوال في بايثون

يقدم هذا الفيديو من قناة OctuCode شرحاً واضحاً للمبتدئين حول مفهوم الدوال، لماذا نحتاجها، وكيف تساعدنا في تجنب تكرار الكود.

شاهد من بداية الفيديو حتى 01:28، ثم انتقل إلى المقطع من 06:19 إلى 09:13. ركز على فكرة "لماذا نستخدم الدوال" والمثال العملي الذي يوضح كيف توفر كتابة الكود.



2. كيفية بناء دالة بسيطة في بايثون

الآن بعد أن فهمنا أهمية الدوال، دعنا نتعلم كيفية تعريف واحدة. يتكون هيكل الدالة في بايثون من عدة أجزاء أساسية.

Defining Functions in Python
هذه الصورة توضح بيئة العمل أثناء كتابة الدوال في بايثون، وهو ما سنتعلمه الآن.

لتعريف دالة، نستخدم الصيغة التالية:

def function_name(parameter1, parameter2):
    # الكود الذي تنفذه الدالة
    # ...
    return result

لنتعرف على مكوناتها:

  1. def: كلمة مفتاحية (Keyword) تخبر بايثون أننا بصدد تعريف دالة جديدة.
  2. function_name: الاسم الذي نختاره للدالة. يجب أن يكون وصفياً (مثل calculate_sum بدلاً من func1).
  3. (): الأقواس التي قد تحتوي على "المعاملات" (Parameters). المعاملات هي المدخلات التي تحتاجها الدالة لتعمل.
  4. :: النقطتان الرأسيتان اللتان تشيران إلى بداية "جسم" الدالة.
  5. الجسم المُزاح (Indented Body): كل الأسطر التي تلي النقطتين وتأتي مع مسافة بادئة (Indentation) هي جزء من الدالة. هذا هو الكود الفعلي الذي يتم تنفيذه عند استدعاء الدالة.
  6. return: كلمة مفتاحية اختيارية تعيد نتيجة من الدالة. هذه هي "مخرجات" الأداة التي سيستخدمها وكيل الذكاء الاصطناعي.

لتعميق فهمك لهذه البنية، نقترح عليك قراءة المادة التالية ومشاهدة مقطع الفيديو الذي يشرحها بالتفصيل.

الدوال Functions في Python

يقدم هذا المقال من "ملاحظات خلود التقنية" شرحًا نصيًا واضحًا ومفصلاً لأساسيات إنشاء الدوال في بايثون.

اقرأ قسم "انشاء الدوال Functions في Python" وقسم "تسمية الدوال Functions في Python". ركز على فهم دور كل جزء من أجزاء تعريف الدالة (def, الاسم, الأقواس, ...إلخ) وقواعد التسمية الجيدة.

تعلم بايثون من الصفر للمبتدئين. إنشاء وظائف او دوال في بايثون

يعود هذا المقطع من قناة OctuCode ليشرح بالتفصيل كيفية كتابة الصيغة الصحيحة للدالة، ويوضح الفرق المهم بين تعريف الدالة واستدعائها.

شاهد من 01:28 إلى 06:19. انتبه جيداً لكيفية استخدام كلمة def، ومتى يتم تنفيذ الكود الذي بداخل الدالة.



3. بناء "أداة" عملية للوكيل

الآن لنطبق ما تعلمناه لبناء أول أداة حقيقية لوكيلنا. ستكون أداة بسيطة لكنها مفيدة: دالة تقوم بحساب عدد الكلمات في نص معين.

لماذا قد يحتاج الوكيل لمثل هذه الأداة؟ قد يستخدمها لتقدير طول رد المستخدم، أو لتلخيص نص طويل، أو للتأكد من أن طلباً ما يقع ضمن طول معين.

هنا هي الدالة:

def count_words(text):
    """
    هذه الدالة تستقبل نصاً (string) وتعيد عدد الكلمات فيه.
    """
    words = text.split()  # .split() هي دالة جاهزة في بايثون تقسم النص إلى قائمة من الكلمات
    number_of_words = len(words) # len() هي دالة جاهزة تحسب عدد العناصر في قائمة
    return number_of_words

# --- طريقة الاستخدام ---
user_sentence = "ما هي حالة الطقس في الرياض اليوم؟"
word_count = count_words(user_sentence)

print(f"الجملة تحتوي على {word_count} كلمات.") 
# سيطبع: الجملة تحتوي على 7 كلمات.

شرح الكود:

  1. def count_words(text):: نُعرّف دالة اسمها count_words تستقبل معاملًا واحدًا اسمه text.
  2. words = text.split(): نستخدم دالة split() المدمجة في بايثون لتقسيم النص عند المسافات، والنتيجة هي قائمة (List) من الكلمات.
  3. number_of_words = len(words): نستخدم دالة len() المدمجة لحساب عدد العناصر في القائمة words.
  4. return number_of_words: نُرجع العدد النهائي. هذه هي القيمة التي سيحصل عليها الوكيل بعد استخدام الأداة.
اختبر فهمك!

بناءً على ما تعلمته، حاول كتابة دالة بسيطة اسمها get_character_count تستقبل نصاً (text) وتعيد عدد الحروف فيه (بما في ذلك المسافات).

تلميح: دالة len() تعمل أيضاً على النصوص (strings) مباشرة.

اظهر الإجابة
def get_character_count(text):
    """
    هذه الدالة تستقبل نصاً (string) وتعيد عدد الحروف فيه.
    """
    return len(text)

# --- طريقة الاستخدام ---
my_text = "أهلاً بالعالم"
char_count = get_character_count(my_text)
print(f"النص يحتوي على {char_count} حرفاً.")
# سيطبع: النص يحتوي على 12 حرفاً.

في سياق وكيل الذكاء الاصطناعي، هذه الدالة تمثل "أداة" أو "إجراء" (Action) يمكن للوكيل استدعاؤه. شاهد كيف يصف هذا الفيديو القصير دالة بسيطة على أنها "إجراء" يمكن للذكاء الاصطناعي استخدامه.

Create AI Agents From Scratch With Python! (Free Course)

يوضح هذا المقطع القصير كيف أن دالة بايثون البسيطة تعتبر بمثابة "أداة" أو "إجراء" يمكن للوكيل استخدامه. على الرغم من أن الشرح باللغة الإنجليزية، إلا أن تركيزك يجب أن يكون على فكرة ربط الدالة البرمجية بمفهوم "أداة الوكيل".

شاهد من 06:11 إلى 07:01. لاحظ كيف يُعرّف المحاضر دالة بسيطة ويشير إليها على أنها "أداة يمكن للذكاء الاصطناعي استخدامها".



خلاصة الدرس

لقد قمنا بخطوة عملية كبيرة اليوم! تعلمنا أساسيات بناء "الأدوات" التي ستمنح وكيلنا قدرات حقيقية.

أهم النقاط:

  • الدالة (Function) هي كتلة كود منظمة وقابلة لإعادة الاستخدام تؤدي مهمة محددة.
  • لتعريف دالة نستخدم def function_name(parameters):.
  • المعاملات (Parameters) هي المدخلات التي تحتاجها الدالة لتعمل.
  • نستخدم return لإرجاع نتيجة من الدالة، وهي المخرج الذي سيستخدمه الوكيل.
  • لقد قمنا ببناء أول "أداة" لنا: دالة count_words، وهي دالة بايثون بسيطة يمكن للوكيل استدعاؤها نظرياً.

ماذا بعد؟

رائع! لقد أنشأنا دالة. ولكن، كيف سيعرف "عقل" الوكيل (النموذج اللغوي) أن هذه الأداة موجودة أصلاً، وماذا تفعل، وكيف يستخدمها؟ النموذج لا يستطيع قراءة كود بايثون مباشرة.

في الدرس القادم، سنتعلم الخطوة الحاسمة التالية: تجهيز وصف الأداة لنموذج اللغة ليتمكن من فهم وظيفتها. سنحول دالتنا البرمجية إلى شيء يمكن للنموذج اللغوي "قراءته" و"فهمه" لاتخاذ قرار باستدعائها.