استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة
تعريف الأدوات كمخطط JSON، ومعالجة tool_calls في الاستجابة، وتنفيذ النتائج وإرجاعها
استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما استدعاء الدوال؟
يتيح استدعاء الدوال (ويُسمى أيضًا استخدام الأدوات) لنموذج لغوي كبير أن يطلب من كودكم تشغيل دالة. لا ينفّذ النموذج أي شيء بنفسه، بل يُرجع طلبًا منظّمًا يقول: «استدعوا هذه الدالة باستخدام هذه الوسائط». ثم يشغّلها برنامجكم ويرسل النتيجة إليه.
وهذه هي الطريقة التي تستخدمها النماذج اللغوية الكبيرة لجلب البيانات المباشرة، وإجراء العمليات الحسابية، أو تنفيذ إجراءات فعلية.
وصف أداة
تقدّمون للنموذج قائمة من الأدوات. وتحتوي كل أداة على name وdescription وparameters المعرّفة وفق مخطط JSON. ويُعد الوصف بالغ الأهمية، إذ يستخدمه النموذج لتحديد الحالات التي تنطبق فيها الأداة.
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"}
},
"required": ["city"]
}
}
}]مخطط JSON للمعلمات
يمثّل الحقل parameters معيار مخطط JSON. وتعلنون عن كائن يحتوي على properties، يضم كل منها type ووصفًا، بالإضافة إلى مصفوفة required. وهذا يوضّح للنموذج بدقة الوسائط التي ينبغي له إنتاجها.
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}تمرير الأدوات إلى النموذج
أرسلوا قائمة tools إلى chat.completions.create(). يمكن للنموذج الآن أن يجيب بنص أو باستدعاء أداة، وفقًا لطلب المستخدم.
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Weather in Tokyo?"}],
tools=tools
)اكتشاف استدعاء أداة
عندما يريد النموذج استخدام أداة، تحتوي الاستجابة على message.tool_calls بدلًا من النص العادي. تحقّقوا من وجود هذه القائمة قبل افتراض أن لديكم إجابة نصية عادية.
msg = response.choices[0].message
if msg.tool_calls:
print("Model wants to call a tool")
else:
print(msg.content)تحليل الوسائط
يحتوي كل استدعاء أداة على function.name وfunction.arguments. وتصل الوسائط على هيئة سلسلة JSON، لذا حلّلوها باستخدام json.loads() قبل استخدامها.
import json
call = msg.tool_calls[0]
name = call.function.name
args = json.loads(call.function.arguments)
print(name, args) # get_weather {"city": "Tokyo"}تنفيذ الدالة
شغّلوا الآن دالة Python الفعلية لديكم باستخدام الوسائط التي حلّلتموها. لقد حدّد النموذج ما ينبغي استدعاؤه فقط، أما تنفيذ العمل الفعلي فتتولاه شفراتكم.
def get_weather(city):
return {"city": city, "temp_c": 18, "condition": "Cloudy"}
result = get_weather(**args)إعادة النتيجة إلى النموذج
أرسلوا النتيجة مرة أخرى كي يتمكّن النموذج من كتابة إجابة بلغة طبيعية. أضيفوا رسالة المساعد الأصلية، ثم رسالة ذات دور tool تحمل النتيجة وtool_call_id المطابق.
messages.append(msg) # the assistant tool-call message
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result)
})إنشاء الإجابة النهائية
استدعوا النموذج مرة أخرى باستخدام messages المحدّثة. بعد حصوله على نتيجة الأداة، يُنتج ردًا نهائيًا ودودًا للمستخدم.
final = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools
)
print(final.choices[0].message.content)الحلقة الكاملة لاستخدام الأدوات
الدورة الكاملة هي: (1) إرسال الأدوات، (2) إرجاع النموذج استدعاء أداة، (3) تحليل الوسائط، (4) تشغيل الدالة، (5) إعادة النتيجة في رسالة أداة، (6) كتابة النموذج للإجابة. قد يطلب النموذج عدة استدعاءات للأدوات قبل الانتهاء، لذا كرّروا العملية حتى تصبح tool_calls فارغة.
التحكم في اختيار الأداة
استخدموا المعلمة tool_choice لتوجيه السلوك. يتيح "auto" (الإعداد الافتراضي) للنموذج اتخاذ القرار، بينما يمنع "none" استخدام الأدوات، ويؤدي تمرير اسم أداة محددة إلى فرض استخدام تلك الدالة بالضبط. ويفيد ذلك عندما يتعيّن عليكم ضمان مخرجات منظّمة.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice={"type": "function", "function": {"name": "get_weather"}}
)تحقّق سريع
اختبروا فهمكم لاستخدام الأدوات.
مراجعة: استدعاء الدوال
عرّفتم الأدوات باستخدام اسم ووصف ومعلمات وفق مخطط JSON، ثم مرّرتموها إلى النموذج. واكتشفتم tool_calls، وحلّلتم function.arguments باستخدام json.loads()، ونفّذتم دالتكم الفعلية، وأعدتم النتيجة في رسالة ذات دور tool تحتوي على tool_call_id المطابق.
يحوّل استدعاء النموذج النهائي النتيجة الأولية إلى إجابة طبيعية، وبذلك تكتمل حلقة استخدام الأدوات.
الأسئلة الشائعة
هل درس «استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة» مجاني؟
نعم — نص درس «استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة»؟
تعريف الأدوات كمخطط JSON، ومعالجة tool_calls في الاستجابة، وتنفيذ النتائج وإرجاعها تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- واجهة OpenAI البرمجية: chat.completions والبث
- واجهة Anthropic Claude البرمجية في Python
- استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة
- هندسة المطالبات لتطبيقات نماذج اللغة الكبيرة الإنتاجية