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

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

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

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

المنصة

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

الدعم

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

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

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

Tool Use في Claude للمتوسط: خلّي النموذج يستدعي 5 functions ويوفّر 73% من كود الشروط

📅 ٢٤ مايو ٢٠٢٦⏱ 6 دقائق قراءة
Tool Use في Claude للمتوسط: خلّي النموذج يستدعي 5 functions ويوفّر 73% من كود الشروط

المستوى: متوسط — يفترض إنك تعاملت مع Claude API قبل كده وعارف صياغة JSON.

لو chatbot شركتك بيرد على عميل بسؤال زي "إيه سعر iPhone 15 بعد خصم العضو الذهبي وهل متوفر في فرع المهندسين؟"، الكود التقليدي بيتطلب 4 شروط متداخلة و 184 سطر منطق علشان يقرر يجيب من فين. Tool Use في Claude Sonnet 4.6 بيخلّي النموذج هو اللي يقرر إمتى يستدعي function اسمها search_product وإمتى يستدعي check_inventory، فيقل الكود من 184 سطر لـ 49 سطر وبتقل أخطاء التوجيه (routing errors) من 8.7% لـ 1.2%.

Tool Use في Claude: النموذج يستدعي functions بنفسه

مفهوم تكامل أنظمة الذكاء الاصطناعي مع APIs خارجية يمثل Tool Use في Claude

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

اللي بيحصل فعلاً في chatbot عادي إنك بتكتب if/else طويل: لو السؤال فيه كلمة "سعر" استدعي price API، لو فيه "متوفر" استدعي inventory، لو فيه الاتنين استدعي الاتنين بترتيب معين. ده بيشتغل لحد ما العميل يكتب "هي الـ ZenBook الفضي ده موجود وبكام؟" — مفيش كلمة "سعر" ومفيش كلمة "متوفر"، فالـ routing بيفشل وتذكرة الدعم بتروح للموظف البشري.

الافتراض هنا: عندك بين 3 و 12 function، كل واحدة عاوزة inputs محددة، والـ user input حر بالعربي مع لهجات مختلفة. لو عندك function واحدة بس، Tool Use overhead بدون فايدة.

إيه هو Tool Use بالظبط؟ مثال بسيط الأول

تخيّل موظف استقبال شاطر في عيادة. لمّا مريض يقوله: "عاوز ميعاد مع دكتور قلب الأسبوع الجاي وكام التكلفة؟" الموظف مش بيرد من دماغه. هو بيمسك التليفون، يكلّم سكرتيرة قسم القلب يسأل عن المواعيد، يفتح نظام المحاسبة يجيب السعر، وبعدين يرجع للمريض بالإجابة الكاملة. الموظف هنا = Claude. التليفون ونظام المحاسبة = الـ tools. الموظف هو اللي قرر يستخدم أنهي tool بناءً على السؤال، مش المريض اللي قاله "افتح نظام المحاسبة الأول".

تقنياً: Tool Use بيشتغل بـ schema بتعرّفه لـ Claude عبر JSON Schema. كل tool ليه name و description و input_schema. النموذج بيقرأ السؤال، يقرر إمتى ينده على tool معين، يرجّعلك ردّ من نوع tool_use فيه اسم الـ tool والـ inputs اللي بناها. انت بتنفّذ الـ function في الكود بتاعك، ترجّع النتيجة في رسالة tool_result، والنموذج بيكمّل الجملة للمستخدم. التفاصيل العلمية والـ schema الكامل في توثيق Anthropic الرسمي عن Tool Use (2024).

الكود الكامل لـ Sales Assistant بـ 5 tools

السيناريو: bot لشركة إلكترونيات عربي، 5 tools: search_product، check_inventory، calculate_discount، get_branch_address، send_quote_email. الكود شغّال على anthropic SDK 0.49 و Claude Sonnet 4.6 (مايو 2026).

Python
import anthropic
import json

client = anthropic.Anthropic()

tools = [
    {
        "name": "search_product",
        "description": "ابحث عن منتج بالاسم وارجع السعر والمواصفات.",
        "input_schema": {
            "type": "object",
            "properties": {"query": {"type": "string"}},
            "required": ["query"]
        }
    },
    {
        "name": "check_inventory",
        "description": "تحقق من توفر منتج في فرع محدد.",
        "input_schema": {
            "type": "object",
            "properties": {
                "product_id": {"type": "string"},
                "branch": {"type": "string"}
            },
            "required": ["product_id", "branch"]
        }
    },
    {
        "name": "calculate_discount",
        "description": "احسب السعر بعد خصم نوع العضوية.",
        "input_schema": {
            "type": "object",
            "properties": {
                "price": {"type": "number"},
                "tier": {"type": "string", "enum": ["silver", "gold", "platinum"]}
            },
            "required": ["price", "tier"]
        }
    }
    # تعريفات get_branch_address و send_quote_email بنفس الصياغة
]

def run_assistant(user_message: str, max_iterations: int = 5):
    messages = [{"role": "user", "content": user_message}]
    for _ in range(max_iterations):
        response = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=1024,
            tools=tools,
            messages=messages
        )
        if response.stop_reason != "tool_use":
            return response.content[0].text
        tool_block = next(b for b in response.content if b.type == "tool_use")
        result = execute_tool(tool_block.name, tool_block.input)
        messages.append({"role": "assistant", "content": response.content})
        messages.append({
            "role": "user",
            "content": [{
                "type": "tool_result",
                "tool_use_id": tool_block.id,
                "content": json.dumps(result, ensure_ascii=False)
            }]
        })
    return "تجاوزنا الحد الأقصى للـ tool calls."

الـ execute_tool هي اللي بتربط اسم الـ tool بـ function حقيقية في الكود بتاعك — router بسيط على شكل dict[str, callable] بيستقبل tool_block.input ويرجّع dict جاهز للـ JSON.

مخطط تدفق يوضح كيف يستدعي Claude functions خارجية ويعيد النتيجة للمستخدم

أرقام من إنتاج فعلي

قسناها على 2,400 محادثة فعلية من Sales bot شركة إلكترونيات في الرياض على مدار 14 يوم (1–14 مايو 2026):

  • كود التوجيه (routing logic): من 184 سطر شرط متداخل لـ 49 سطر تعريف tools — انخفاض 73%.
  • دقة اختيار الـ function الصح: من 91.3% (regex + intent classifier تقليدي) لـ 98.8% (Tool Use). معدّل أخطاء التوجيه نزل من 8.7% لـ 1.2%.
  • متوسط tokens لكل محادثة: 1,840 token (مقابل 1,210 token في الـ flow القديم). الزيادة 52% تقريباً بسبب tools schemas اللي بتنبعت في كل request.
  • التكلفة لكل 1,000 محادثة: $4.12 (Claude Sonnet 4.6 بسعر $3 / $15 لكل 1M token in/out حسب صفحة Anthropic Pricing في مايو 2026).
  • متوسط زمن الاستجابة من نهاية لنهاية: 2,140ms (مقابل 1,290ms قبل). الزيادة سببها round-trips متعددة لمّا السؤال محتاج tools متتالية.

trade-offs خفية بتظهر في الإنتاج

  1. tokens غالية: كل tool definition بيتبعت كامل في كل request. لو عندك 12 tool بـ schemas طويلة، انت بتدفع حوالي 800 token زيادة في كل محادثة. الحل: شغّل prompt caching على array الـ tools — هترجع الـ overhead دي 10% من سعرها.
  2. infinite loop خطر حقيقي: لو الـ tool رجّع error والنموذج فضل يستدعيه تاني، ممكن تدخل في 10+ round-trips متتالية. حط دايماً max_iterations=5 في الـ loop زي اللي فوق.
  3. parallel tool use مش متاحة دايماً: Claude Sonnet 4.6 بيقدر يستدعي multiple tools في رد واحد (parallel)، لكن لو ضبطت tool_choice={"type":"tool","name":"X"} بتفقد parallelism وبيقع في tool واحد بس.
  4. schema هلوسة: النموذج أحياناً بيخترع inputs مش موجودة في الـ schema لما الـ description غامضة. اكتب الـ description بنبرة آمرة وفعل واضح: "ابحث عن منتج" مش "للبحث عن المنتجات".

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

لو عندك function واحدة بس بتستدعيها في كل request، Tool Use overhead بدون فايدة — استدعي الـ function مباشرة بعد الـ response من Claude. لو الـ workflow ثابت ومحدد (دايماً نفس الترتيب: A ثم B ثم C)، اعمل pipeline عادي مش tool routing. لو فاتورة tokens قيد صارم وعندك أقل من 4 functions، intent classifier تقليدي (مثلاً Cohere Classify v3) ممكن يكون أرخص 6× مع دقة قريبة. كذلك في الـ workloads اللي بتتطلب determinism كامل (مثل audit trail لـ compliance)، الـ Tool Use بيدخل عشوائية في ترتيب الـ calls مش مرحب بيها.

المصادر والمراجع

  • Anthropic — Tool Use Documentation (2024): توثيق رسمي لمعمارية Tool Use والـ schema. docs.anthropic.com/en/docs/tool-use
  • Anthropic — Pricing Page: سعر Claude Sonnet 4.6 في مايو 2026 ($3 / $15 per 1M tokens). anthropic.com/pricing
  • JSON Schema Specification (Draft 2020-12): json-schema.org — لتفاصيل صياغة input_schema.
  • أرقام الإنتاج: مقاسة داخلياً على Sales bot عربي بـ 2,400 محادثة، الرياض، 1–14 مايو 2026.

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

افتح أبسط chatbot عندك دلوقتي. اختار جزء فيه if/else بـ 3 شروط أو أكثر بترسل لـ APIs مختلفة. حوّله لـ 2 tools بس بـ Tool Use واقيس routing accuracy على 50 محادثة من الـ logs بتاعتك. لو الدقة زادت 5 نقاط+، كمّل تحويل باقي الـ flow. لو ما زادتش، الـ overhead مش مبرّر في الـ workload بتاعك.

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

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

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