استخدام الأدوات والعمل
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 13 · 01 (Function Calling Deep Dive)
Time: ~60 minutes
أهداف التعلم
- شرح إشارة التدريب ذاتية الإشراف على Toolformer: إبقاء تعليقات الأداة فقط عندما يقلل التنفيذ من خسارة الوهم التالي.
- أسمي فئات التقييم الخمسة في BFCL V4 وما تقيس كل منها.
- تنفيذ سجل أدوات stdlib مع تصحيح النظام، إكراه الحجج، وتنفيذ مربع الرمل.
- تشخيص ثلاثة مشاكل مفتوحة في عام 2026: سلسلة الأدوات طويلة الأفق، اتخاذ القرارات الديناميكية، والذاكرة.
المشكلة
يُسأل استخدام الأدوات المبكرة: هل يمكن أن يتوقع النموذج مكالمة وظيفة صحيحة؟ يُسأل استخدام الأدوات الحديثة: هل يمكن أن تستخدم أدوات سلسلة النموذج عبر 40 خطوة، مع الذاكرة، مع قابلية للملاحظة الجزئية، مع التعافي من فشل الأدوات، دون توهم الأدوات التي لا توجد؟
وقد وضعت Toolformer خط الأساس: يمكن للنماذج تعلم متى تستدعي الأدوات مع الإشراف الذاتي. يحدد BFCL V4 هدف التقييم لعام 2026. الفجوة بينها هي وكلاء إنتاج الفضاء يعيشون فيها.
المفهوم
أداة (شيك وزملاء، NeurIPS 2023)
فكرة: دع النموذج يعلق على جسمه الخاص قبل التدريب مع دعوات API المرشحين. لكل مرشح، قم بتنفيذ ذلك. احتفظ بالتعليق فقط إذا كان تضمين نتيجة الأداة يقلل من الخسارة على الرمز التالي. ضبط دقيقة على جسم المرشح.
الأدوات المشمولة: آلة الحاسبة، نظام تقييم المعلومات، محركات البحث، مترجم، التقويم. إشارة الإشراف الذاتي هي ببساطة حول ما إذا كانت الأداة تساعد على التنبؤ بالنص لا تسميات بشرية.
نتيجة النطاق: يظهر استخدام الأدوات على نطاق واسع. الأدوات الصغيرة تضر من ملاحظات الأدوات؛ والنماذج الكبيرة المكاسب. هذا هو السبب في أن نماذج الحدود 2026 لديها استخدام أدوات قوية في حين أن معظم نماذج 7B تحتاج إلى ضبط واضح استخدام الأدوات لتكون موثوقة.
بركلي وظيفة دعوة قائمة V4 (باتيل وزملاء، ICML 2025)
BFCL هو تقييم عام 2026 في الواقع.
- Agentic (40%) مسارات العملاء الكاملين: الذاكرة، والتحركات المتعددة، والقرارات الديناميكية.
- Multi-Turn (30%) المحادثات التفاعلية مع سلسلة الأدوات.
- Live (10%) طلبات حقيقية قدمتها المستخدم (توزيع أكثر صعوبة).
- Non-Live (10%) حالات اختبار اصطناعية
- Hallucination (10%) اكتشاف متى لا ينبغي استدعاء أداة
أدى V3 إلى تقييم قائم على الحالة: بعد تسلسل أداة، تحقق من الحالة الفعلية لل API (على سبيل المثال "هل تم إنشاء الملف؟") بدلاً من مطابقة AST للدعوات الأداة. أضاف V4 بحث الويب والذاكرة ونقاط حساسية النمط.
النتيجة الرئيسية 2026: استدعاء وظيفة التحول الواحد هو على وشك أن يحل. الاختلالات تركز في الذاكرة (حمل السياق عبر التحولات) ، واتخاذ القرارات الديناميكية (اختيار الأدوات بناء على النتائج السابقة) ، سلسلة الأفق الطويل (التحرك بعد 20 + خطوة) ، وكشف الهلوسة (رفض الاتصال عندما لا يتناسب أداة).
مخطط الأداة
كل مزود لديه مخطط. يختلفون في التفاصيل ولكنهم يشتركون في نفس الشكل:
name: string
description: string (what it does, when to use it)
input_schema: JSON Schema (properties, required, types, enums)الاستخدامات الإنسانية input_schemaمباشرة. OpenAI يستخدم function.parameters. كلتا القبول JSON Schema. وصفيات تحمل الحمل النموذج يقرأها لتحديد الأداة الصحيحة. وصف أداة سيئة هي السبب الرئيسي للفشل في أداة اختارة خاطئة.
تأكيد الحجج
لا تثق في أي مكالمة أداة.
- Type coercion.قد يعود نموذج سلسلة "5" حيث تقول النموذج int. إجبار إذا كان غير واضح؛ رفض إذا لم يكن.
- Enum validation.إذا كان النظام يقول
status in {"open", "closed"}و نموذج الإصدارات"in_progress"، رفض مع خطأ تصريفي. - Required fields.المجال المطلوب مفقود -> ملاحظة الخطأ الفوري العودة إلى النموذج، وليس تحطم.
- Format validation.التواريخ والبريد الإلكتروني والمدونات الإلكترونية تثبت معدات الخرسانة، وليس regex.
كل فشل في التحقق من التحقق يجب أن يعيد ملاحظة مهيكلة حتى يمكن للنموذج تجربة جديدة مع الشكل الصحيح.
مكالمات الأدوات المتوازية
المقدمون الحديثون يدعمون المكالمات المتوازية للأدوات في دور مساعد واحد.
- النموذج ينشر 3 دعوات أداة مع مختلف
tool_use_id(س) - يقوم وقت تشغيله بإجراءها (في نفس الوقت إذا كان مستقلًا).
- كل نتيجة تعود إلى الوراء كـ
tool_resultالكتلة مرتبطة بـtool_use_id. . .
قاعدة هندسية: تعامل أوراق التواصل كحملة، وتبادلها وتحصل على أداة خاطئة إلى نتيجة خاطئة.
القمامة الرملية
تنفيذ الأداة هو حدود مربع الرمل. انظر الدروس 09 للتفاصيل. النسخة المختصرة: يجب على كل أداة تحديد سطح القراءة / الكتابة، وصول الشبكة، وقت التوقف، حد الذاكرة. عام run_shell(cmd)هو علم حمراء، محدد git_status()هو أكثر أمانا.
بناءها
code/main.pyينفذ سجل أدوات شكل إنتاج:
- مؤكدة مجموعة فرعية من JSON Schema (stdlib فقط).
- تسجيل الأداة مع وصف، مخطط إدخال، وقت وقف، والتنفيذ.
- إكراه الحجج و التحقق من الملف
- إرسال أداة متوازية مع هويات التواصل
- ملاحظات الخطأ كسلسلة مهيكلة.
إشغله
python3 code/main.pyيظهر البصمة وكيل صغير يدعو ثلاث أدوات في دور واحد، مع دعوة واحدة بشكل مخطئ عمداً يتم رفضها مع خطأ وصفي يمكن أن يتصرف عليه النموذج.
استخدمها
كل مزود لديه مخطط أداة خاص به انتروبيك، OpenAI، جيميني، بيدروك. استخدم طبقة الترجمة (OpenAI Agents SDK، Vercel AI SDK، لنج تشين أداة مكيّف) إذا كنت بحاجة إلى مزود متعدد. BFCL هو مرجعية مرجعية تشغيله ضد وكيلك قبل الشحن إذا كان استخدام الأداة هو مركزية للمنتج.
أرسله
outputs/skill-tool-registry.mdيخلق كتالوج أداة، مخطط، وسجل لمجال مهمة معين. يتضمن التحقق من جودة التوصيف (هل وصف كل أداة يخبر النموذج متى لاستخدامه؟)
التمارين
- إضافة أداة "لا تشغيل" التي تسمح للنموذج رفض صراحة استخدام أي أداة أخرى. قياس على اختبار الهلوسة مثل BFCL.
- تنفيذ التجبر على الحجة من أجل الإدخال والعطف من أجل الحبل من أين يبدأ الإكراه بإخفاء الحشرات الحقيقية؟
- إضافة وقت وقف لكل أداة ومقطع حلقة (رفض الأداة لمدة 60 سنة بعد 3 فشل متتالية). ما الذي يتغير من هذا حول كيفية التعافي من النموذج؟
- اقرأ وصف BFCL V4. اختر فئة واحدة (مثل "معدة التحول") و إشغيل 10 مثالات من خلال وكيلك. تقرير معدل الانتقال.
- نقل مؤكدة الـ (إستدليب) إلى (بيدانتيك) أو (زود) ما الذي أمسك به (بيدانتيك) / (زود) الذي فات له اللعبة؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Function calling | "Tool use" | Structured-output tool invocation with validated schema |
| Toolformer | "Self-supervised tool annotation" | Schick 2023 — keep tool calls whose results reduce next-token loss |
| BFCL | "Berkeley Function Calling Leaderboard" | 2026 benchmark: 40% agentic, 30% multi-turn, 10% live, 10% non-live, 10% hallucination |
| Tool schema | "Function signature for the model" | name, description, JSON Schema of arguments |
| tool_use_id | "Correlation ID" | Ties a tool call to its result; essential for parallel dispatch |
| Hallucination detection | "Know when not to call" | V4 category: refuse to call when no tool fits |
| Argument coercion | "String-to-int repair" | Narrow fixes for predictable schema-mismatch; reject if ambiguous |
| Sandboxing | "Tool execution boundary" | Per-tool read/write surface, network, timeout, memory cap |
المزيد من القراءة
- Schick et al., Toolformer (arXiv:2302.04761) إشارة أداة ذاتية الإشراف
- Berkeley Function Calling Leaderboard (V4) مقياس تقييم 2026
- Anthropic, Tool use documentation مخطط أداة الإنتاج في SDK Claude Agent
- OpenAI Agents SDK docs نوع الأداة الوظيفية و Guardrails
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.