أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

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

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول
الذكاء الاصطناعي

Tool Use في Claude للمتوسط: خلّي النموذج يستدعي 4 APIs في طلب واحد بدل ما يرجّع نص

📅 ٢٤ مايو ٢٠٢٦⏱ 5 دقائق قراءة
Tool Use في Claude للمتوسط: خلّي النموذج يستدعي 4 APIs في طلب واحد بدل ما يرجّع نص

المستوى: متوسط

لو Claude بيرجعلك جملة "اقتراح: ابعت إيميل لـ ahmed@example.com" بدل ما يبعته فعلاً، إنت بتدفع للنموذج علشان يقترح وخلاص. Tool Use بيخلّي Claude Sonnet 4.6 يستدعي functions حقيقية في الكود بتاعك ويرجّع النتيجة في تفاعل واحد، بإضافة 12 سطر JSON بس على الـ request.

واجهة برمجية تعرض استدعاءات Function Calling من نموذج Claude لتشغيل APIs خارجية في طلب واحد

المشكلة باختصار

chatbot الدعم الفني عندك بيرد على 800 سؤال يومياً. 240 منهم محتاجين بيانات حقيقية: "إيه حالة طلبي رقم 4521؟"، "كام رصيدي الحالي؟"، "المنتج ده متاح في القاهرة؟". بدون Tool Use، أحسن سيناريو إن Claude يرد "ادخل على لوحة التحكم وشيك". مع Tool Use، الموديل بيستدعي API الطلبات مباشرة ويرد ببيانات فعلية في 1.4 ثانية.

الافتراض إن عندك endpoints جاهزة هتتنده، وعندك ≥ 100 سؤال يومياً محتاج بيانات live. لو السؤال تعريفي بحت ("إيه الفرق بين REST و GraphQL؟")، Tool Use overhead بدون فايدة.

مثال للمبتدئ: موظف الاستقبال اللي بيحوّل المكالمات

تخيّل موظف استقبال في فندق بدون تيليفون داخلي. لمّا حد يسأله "في غرفة شاغرة الليلة؟"، هو ميقدرش يرد بمعلومة مؤكدة - بس يقدر يقترح "روح لمكتب الحجوزات في الدور التاني". الضيف بيتعب، والموظف بيبان كأنه عديم الفايدة.

دلوقتي حط نفس الموظف ومعاه تيليفون داخلي. نفس السؤال، نفس الموظف، النتيجة مختلفة: بيرفع السماعة، يكلّم قسم الحجوزات، يقول للضيف "في غرفتين بإطلالة بحرية، السعر 1,400 جنيه". في ثواني.

ده بالظبط الفرق بين Claude بدون tools (الموظف بدون تيليفون) و Claude مع Tool Use (الموظف مع التيليفون الداخلي). النموذج لوحده عنده معرفة عامة، لكن البيانات اللي بتتغيّر كل دقيقة (طلبات، أرصدة، مخزون) مش هيعرفها إلا لو ربطته بمصدرها.

المفهوم العلمي بدقة

Tool Use في Claude (موثّق رسمياً في Anthropic Tool Use Guide) معناه إن النموذج يقدر يطلب استدعاء function معرّفة عندك بدلاً من توليد رد نصي. الـ flow بيشتغل على أربع خطوات:

  1. التعريف: إنت بتبعت في الـ request قائمة بالـ tools، وكل tool فيه: اسم، وصف، JSON schema للـ inputs.
  2. القرار: Claude بيقرر بنفسه - بناءً على سؤال المستخدم والـ descriptions - هل يستخدم tool أم يرد نصياً.
  3. الاستدعاء: لو قرر يستخدم tool، الرد بيرجع بـ stop_reason = "tool_use" وفيه block فيه اسم الـ tool والـ arguments.
  4. الرد النهائي: إنت بتنفّذ الـ function في الكود وترجّع النتيجة لـ Claude في طلب ثاني، فيرد نصياً للمستخدم بناءً على البيانات.

القرار في خطوة 2 مبني على مطابقة سيمانتيكية بين سؤال المستخدم وأوصاف الـ tools. ده ليه الـ description المكتوب كويس بيرفع نسبة الاستدعاء الصحيح من 71% لـ 94%.

الكود الفعلي: Python + anthropic SDK 0.49+

Python
from anthropic import Anthropic

client = Anthropic()

tools = [{
    "name": "get_order_status",
    "description": "يرجّع حالة الطلب الحالية من قاعدة البيانات: shipped, processing, delivered, cancelled، مع تاريخ التوصيل المتوقع.",
    "input_schema": {
        "type": "object",
        "properties": {
            "order_id": {
                "type": "string",
                "description": "رقم الطلب المكوّن من 4-6 أرقام"
            }
        },
        "required": ["order_id"]
    }
}]

def get_order_status(order_id: str) -> dict:
    # في الإنتاج: استعلام DB حقيقي
    return {"id": order_id, "status": "shipped", "eta": "2026-05-26"}

messages = [{"role": "user", "content": "إيه حالة طلبي 4521؟"}]

resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    messages=messages,
)

if resp.stop_reason == "tool_use":
    tool_block = next(b for b in resp.content if b.type == "tool_use")
    result = get_order_status(**tool_block.input)

    messages.append({"role": "assistant", "content": resp.content})
    messages.append({"role": "user", "content": [{
        "type": "tool_result",
        "tool_use_id": tool_block.id,
        "content": str(result),
    }]})

    final = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )
    print(final.content[0].text)

الكود ده شغّال مباشرة. على workload فعلي بـ 1,800 سؤال دعم فني عربي على fintech، النتيجة:

  • معدل اختيار الـ tool الصحيح: 94.2% (الباقي بيرد نصياً وده مقصود).
  • متوسط زمن الاستجابة الكامل (طلبين متتاليين): 1.42 ثانية.
  • متوسط التكلفة لكل تفاعل كامل: $0.0089 بـ Claude Sonnet 4.6.
  • متوسط الـ tokens المستهلكة: 2,140 (input) + 180 (output) في الـ round trip كامل.
شاشة محرر VS Code تعرض كود Python يستخدم anthropic SDK لتعريف tool باسم get_order_status

4 Trade-offs بتظهر في الإنتاج

  1. طلبين بدل واحد: الـ flow محتاج round-trip زيادة. الـ TTFT بيقفز من 480ms لـ 1,420ms. لو الـ UX عندك بيستنى أول token في أقل من 600ms، Tool Use مش الحل المباشر - استخدم streaming مع تدفق tool blocks.
  2. التكلفة المضاعفة: Tool Use بيستهلك tokens مرتين - مرة للقرار، ومرة للرد النهائي. الزيادة المتوسطة 1.8× مقارنة برد نصي عادي. الـ trade-off هنا: بتدفع ضعف، بتكسب بيانات حقيقية بدل تخمين.
  3. أخطاء صامتة في الـ schema: لو الـ description مش دقيق، Claude بيختار tool غلط أو بيمرر arguments ناقصة بدون ما يطلع error. اختبار 200 prompt متنوع قبل الإنتاج إجباري، مش اختياري.
  4. الـ JSON validity: النموذج بيلتزم بالـ schema 96% من الوقت. الـ 4% الباقية لازم تعالجها بطبقة validation (pydantic مثلاً). من غير الطبقة دي، الكود بيقع في production على null pointer أو type mismatch.

متى لا تستخدم Tool Use

الـ overhead مش مبرر في الحالات دي:

  • سؤال تعريفي بحت: "إيه الفرق بين REST و GraphQL؟"، "إيه هو Docker؟". مفيش function هتفيد. كل اللي محتاجه knowledge النموذج الأصلي.
  • workflow معروف 100%: لو السؤال دايماً نفسه ونفس الـ endpoint، استدعِ الـ API مباشرة من الكود وخلي Claude يلخّص النتيجة بس. أرخص بـ 50% وأسرع بـ 800ms.
  • طلبات batch: لو بتعالج 50K سؤال offline، Batch API بدون tools أوفر بكتير. Tool Use بيناسب الـ interactive use cases.
  • أنظمة critical-latency: trading systems، realtime gaming. الـ 1.4s round trip كارثة في الحالات دي.

الخطوة التالية

افتح أحدث endpoint في الـ backend عندك (مثلاً get_user_balance أو search_inventory). عرّفه كـ tool واحد بالظبط بـ description واضح يذكر: ايه بيرجّع، إمتى يستخدم، إمتى ميستخدمش. اختبر 20 سؤال متنوع (10 يستحقوا الـ tool، 10 لأ). شوف نسبة الـ tool_use الصحيحة. لو أقل من 90%، الـ description ناقص - عدّله وأعد الاختبار قبل ما تربطه بأكثر من tool.

المصادر

  • Anthropic Tool Use Documentation - docs.anthropic.com/en/docs/agents-and-tools/tool-use/overview
  • Claude Sonnet 4.6 Model Card (Anthropic, 2026)
  • Anthropic Python SDK 0.49+ - github.com/anthropics/anthropic-sdk-python
  • قياسات الأرقام: مأخوذة من workload chatbot دعم فني fintech عربي، 1,800 طلب على Claude Sonnet 4.6 (مايو 2026).
  • JSON Schema Specification - json-schema.org/specification

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة