Skip to main content

Welcome to a Grasp lesson

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

Lesson 36

استدعاء الدوال في نماذج اللغة

Recommended resources

أهلاً بك مجدداً!

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

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


1. لماذا لا يستطيع النموذج اللغوي فعل كل شيء بنفسه؟

نماذج اللغة الكبيرة (LLMs) مثل GPT-4 هي أدوات مذهلة، لكن لديها قيود جوهرية:

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

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

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

08 – نظره عميقه في عالم الـ AI Agents: Think-Time Compute، Function Calling، وأدوات الأتمتة

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

شاهد المقطع من 06:56 إلى 07:48، ثم من 09:37 إلى 11:31. ركز على الأمثلة التي يقدمها المحاضر للمهام التي لا تستطيع النماذج القيام بها بنفسها.



2. ما هو استدعاء الدوال (Function Calling)؟

ببساطة، استدعاء الدوال (Function Calling) هي ميزة تسمح للنموذج اللغوي (العقل) بأن يقرر أنه بحاجة إلى تشغيل دالة برمجية (أداة) معينة لتحقيق طلب المستخدم.

نقطة مهمة جداً: النموذج لا يقوم بتشغيل الكود بنفسه. بدلاً من ذلك، هو يحلل طلب المستخدم ويقول: "لإنجاز هذه المهمة، أعتقد أننا بحاجة لاستدعاء الدالة X مع المدخلات Y و Z". ثم يقوم تطبيقنا (الكود الذي نكتبه) بأخذ هذا "الاقتراح" وتنفيذ الدالة فعلياً.

لتقريب الفكرة، شاهد هذا التشبيه البسيط.

08 – نظره عميقه في عالم الـ AI Agents: Think-Time Compute، Function Calling، وأدوات الأتمتة

يقدم هذا المقطع القصير تشبيهًا ممتازًا. تخيل أنك النموذج اللغوي، وصديقك الذي يملك آلة حاسبة هو "الدالة" أو "الأداة" الخارجية.

شاهد من 08:46 إلى 09:37. لاحظ كيف أنك لست بحاجة إلى أن تكون جيدًا في الرياضيات بنفسك، ولكنك تعرف من تسأل (تستدعي) ليحل لك المشكلة. هذا هو تمامًا ما يفعله النموذج اللغوي.

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



3. كيف تعمل آلية استدعاء الدوال خطوة بخطوة؟

العملية تبدو سحرية، لكنها تتبع سلسلة من الخطوات المنطقية التي تربط بين المستخدم، والنموذج، والكود الذي نكتبه.

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

كل ما تحتاج معرفته عن خاصية Function Calling

يقدم هذا المقال من موقع "3A Ai" شرحاً واضحاً ومفصلاً لمفهوم Function Calling، ودور المطور، وكيفية عمل الآلية من الداخل.

اقرأ الأقسام التالية: "ما هي Function Calling؟"، "كيف تعمل Function Calling من الداخل؟"، "فكرة عميقة: من الذي يكتب الدوال؟"، و "كيف يختار النموذج الدالة المناسبة؟". ركز على فهم المراحل الأربع للعملية ودور المطور في تعريف "الأدوات".

بناءً على ما قرأته للتو، يمكننا تلخيص الدورة الكاملة لاستدعاء الدوال في الخطوات التالية:

  1. المطور يُعرّف الأدوات: أنت، كمطور، تكتب دوال بايثون عادية (مثل get_weather(city)) وتُعد وصفاً نصياً لكل دالة يشرح وظيفتها ومدخلاتها (city هو اسم المدينة).
  2. المستخدم يطرح سؤالاً: المستخدم يكتب طلباً بلغة طبيعية، مثلاً: "ما حالة الطقس في دبي؟".
  3. النموذج يتخذ القرار: يُرسل طلب المستخدم إلى النموذج اللغوي مع قائمة الأدوات المتاحة وأوصافها. يحلل النموذج الطلب ("الطقس"، "دبي") ويقارنه بأوصاف الأدوات المتاحة، فيقرر أن دالة get_weather هي الأنسب، ويستخرج المدخلات المطلوبة (city="Dubai").
  4. النموذج يقترح الاستدعاء: النموذج لا يعيد إجابة نصية، بل يعيد كائناً منظماً (JSON) يقول لتطبيقك: "يرجى استدعاء الدالة get_weather مع المعامل city وقيمته Dubai".
  5. تطبيقك ينفذ الدالة: الكود الخاص بك يستقبل هذا الطلب، يستدعي دالة get_weather("Dubai") فعلياً، والتي قد تتصل بواجهة برمجية خارجية للطقس وتحصل على النتيجة (مثلاً: "غائم جزئياً، 34 درجة مئوية").
  6. إغلاق الحلقة: تطبيقك يرسل نتيجة الدالة ("غائم جزئياً، 34 درجة مئوية") مرة أخرى إلى النموذج ويقول له: "هذه هي نتيجة تنفيذ طلبك".
  7. النموذج يصيغ الإجابة النهائية: يستخدم النموذج هذه المعلومة الجديدة لصياغة رد طبيعي وتقديمه للمستخدم: "حالة الطقس في دبي حالياً هي غائم جزئياً ودرجة الحرارة 34 درجة مئوية."

الصورة التالية تلخص هذه الدورة بشكل مرئي:

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

تخيل أن لديك وكيلاً ذكياً لإدارة المهام، وقمت بتعريف دالة له اسمها create_task(description, due_date).
إذا كتب المستخدم: "أضف مهمة جديدة: شراء الحليب غداً".

ما هو "اقتراح" استدعاء الدالة الذي تتوقع أن يعيده النموذج اللغوي؟

اظهر الإجابة

من المرجح أن يعيد النموذج شيئًا يشبه هذا:

  • اسم الدالة: create_task
  • المعاملات (Arguments):
    • description: "شراء الحليب"
    • due_date: (تاريخ الغد، مثلاً "2023-10-27")

هذا يوضح قدرة النموذج على فهم اللغة الطبيعية ("غداً") وتحويلها إلى بيانات منظمة يمكن للكود استخدامها.



خلاصة الدرس

في هذا الدرس، استوعبنا أحد أهم المفاهيم في بناء وكلاء الذكاء الاصطناعي:

  • استدعاء الدوال (Function Calling) هو الآلية التي تسمح للنماذج اللغوية بالتفاعل مع العالم الخارجي من خلال "أدوات" برمجية.
  • هذه الميزة تتغلب على قيود النماذج، مثل عدم معرفتها بالبيانات الحية أو عدم قدرتها على تنفيذ أفعال.
  • العملية آمنة وخاضعة للتحكم، لأن النموذج يقترح فقط، بينما الكود الذي يكتبه المطور هو من ينفذ.
  • أنت كمطور مسؤول عن كتابة الأدوات (الدوال) وتقديم وصف واضح لها حتى يتمكن النموذج من فهم متى وكيف يستخدمها.

لقد وضعنا اليوم الأساس النظري لإضافة قدرات حقيقية لوكيلنا. لقد انتقلنا من فهم "الذاكرة" إلى فهم "الفعل".


ماذا بعد؟

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