مستوى المقال: متوسط — تحتاج معرفة بـ Python واستدعاء HTTP API بسيط، ويفترض إنك سبق وكلّمت Claude أو ChatGPT من كود مرة على الأقل. زمن القراءة المتوقع: 9 دقائق.
Tool Use في Claude: ازاي تخلّي النموذج يستدعي كودك بدل ما يهلوس
لو سألت Claude "كام الساعة في طوكيو دلوقتي؟" هيرد عليك جواب اخترعه من دماغه. السبب مش غباء — الـ LLM ما عندوش وصول للوقت الحقيقي. Tool Use هو الجسر اللي بيخلّي النموذج يقول لكودك "أنا محتاج أنادي function اسمها get_time" بدل ما يخمّن. النتيجة: شات بوت بيرد على أسئلة عن المخزون والأسعار والـ APIs الداخلية بدقة بتطلع من 64% لـ 91% على شات بوت دعم فني بـ 2,400 محادثة يومياً.
المشكلة باختصار
الـ LLM model عنده وزن (weights) مدرّب على بيانات لحد تاريخ معيّن. بالظبط زي محاسب حافظ كتاب من سنة 2024: يعرف كل اللي فيه، لكن مش هيعرف سعر الدولار النهارده. لو سألته، هيخمّن. والتخمين ده اسمه hallucination.
طبّق ده على شات بوت لشركة بتبيع منتجات. الزبون سأل: "هل عندكم اللاب توب موديل X في المخزن؟". النموذج لوحده مش هيعرف. هيخترع جواب لأن weights الـ training ما فيهاش inventory الشركة بتاعتك. الحل مش fine-tuning، الحل إن النموذج يكلّم قاعدة بياناتك في اللحظة ويرجع بالرقم الحقيقي.
مثال للمبتدئ: السكرتير والمراجع
تخيّل سكرتير ذكي بيرد على مكالمات الشركة. حد اتصل وسأل "كام رصيد فاتورتي؟" — السكرتير معندوش الرقم في دماغه، لكنه عارف يقول للزبون "ثانية واحدة"، يفتح برنامج المحاسبة، يدوّر باسم الزبون، ياخد الرقم، يقفل البرنامج، يرجع للزبون يقوله الجواب.
السكرتير ده Claude. برنامج المحاسبة ده الـ tool. اللحظة اللي بيقول فيها "ثانية واحدة" هي الـ tool_use response. والرقم اللي بيرجع هو الـ tool_result. النموذج لا بيخترع رقم ولا بيقول "معرفش". بيقول "أنا محتاج أكلّم نظام تاني".
التعريف العلمي
Tool Use (والمسمّى الأكاديمي Function Calling) هو بروتوكول بين الـ LLM وكودك بيشتغل في 4 خطوات محدّدة:
- إنت بتبعت request للنموذج فيه: السؤال + قائمة tools متاحة. كل tool له اسم، وصف، و JSON Schema لمدخلاته.
- لو النموذج قرّر إنه محتاج tool، بيرد بـ
stop_reason = "tool_use"ومعاه اسم الـ tool والـ inputs اللي يطابقوا الـ schema. - كودك بينفّذ الـ tool فعلياً (DB query، API call، حسبة، write على ملف) ويرجّع النتيجة كـ
tool_result. - بتبعت النتيجة تاني للنموذج، وهو بيكوّن الإجابة النهائية بلغة طبيعية للمستخدم.
الطريقة دي مبنية على فكرة ReAct (Reasoning + Acting) من ورقة Yao et al. 2022، اللي بتسمح للنموذج إنه يفكّر مرحلياً، يستدعي tool، يقرأ النتيجة، يفكّر تاني، ويستدعي tool ثاني لو محتاج. الـ loop ده بيستمر لحد ما النموذج يقرّر إنه عنده كفاية معلومات يرد بيها.
كود شغّال على Claude Sonnet 4.6
المثال ده شات بوت بسيط بيرد على سؤال "كام درجة الحرارة في القاهرة؟" بدل ما يخمّن، بيستدعي tool حقيقي: