استفاده از ابزار و تماس با عملکرد
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 را با تأیید طرح، اجبار استدلال و sandboxing اجرا اجرا کنید.
- سه مشکل باز در سال 2026 را تشخیص دهید: زنجیره سازی ابزار افق طولانی، تصمیم گیری پویا و حافظه.
مشکل
استفاده اولیه از ابزار پرسیده شد: آیا مدل می تواند یک تماس عملکرد صحیح را پیش بینی کند؟ استفاده مدرن از ابزار می پرسد: آیا می تواند مدل زنجیره ابزار در طول 40 مرحله، با حافظه، با مشاهده جزئی، با بازیابی از شکست ابزار، بدون توهم کردن ابزار که وجود ندارد؟
Toolformer خط پایه را تعیین کرد: مدل ها می توانند زمانی که ابزار را با خود نظارت می خوانند یاد بگیرند. BFCL V4 هدف ارزیابی 2026 را تعریف می کند. شکاف بین آنها عوامل تولید فضایی زندگی می کنند.
مفهوم
ابزار (شیک و همکارانش، NeurIPS 2023)
ایده: اجازه دهید مدل با تماس API کاندید خود را یادداشت کند. برای هر کاندید، آن را اجرا کنید. یادداشت را تنها در صورتی نگه دارید که شامل نتیجه ابزار کاهش خسارت در توکن بعدی را کاهش دهد. تنظیم دقیق در کورپوس فیلتر شده.
ابزار مورد بررسی: ماشین حساب، سیستم QA، موتورهای جستجو، مترجم، تقویم. سیگنال خود نظارت به طور خالصانه در مورد اینکه آیا ابزار به پیش بینی متن کمک می کند هیچ برچسب انسانی.
نتیجه مقیاس: استفاده از ابزار در مقیاس ظاهر می شود. مدل های کوچکتر از تشریحات ابزار آسیب می بینند؛ مدل های بزرگتر به دست می آیند. به همین دلیل مدل های مرز 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 را قبول می کنند. توضیحات تحمل بار هستند مدل آنها را برای انتخاب ابزار مناسب می خواند. توضیحات ابزار بد علت اصلی اشتباه انتخاب ابزار شکست است.
اعتبار استدلال
به هيچ ابزاري اعتماد نکن
- Type coercion.مدل ممکن است یک رشته "5" را در آن جا که طرح int می گوید، برگرداند. اگر واضح باشد مجبور کنید؛ اگر نه، رد کنید.
- Enum validation.اگه نقشه ميگه
status in {"open", "closed"}و انتشار مدل"in_progress"، با یک خطا توصیف کننده رد کرد - Required fields.فیلدی که نیاز دارد از دست رفته -> مشاهده خطا فوری به مدل، نه تصادف.
- Format validation.تاریخ ها، ایمیل ها، URL ها با پارسر های بتونی، نه 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، جمینی، Bedrock. اگر نیاز به چند ارائه دهنده دارید از یک لایه ترجمه (OpenAI Agents SDK، Vercel AI SDK، آداپتور ابزار LangChain) استفاده کنید. BFCL مرجع است.
-باده
outputs/skill-tool-registry.mdیک کاتالوگ ابزار، طرح و ثبت نام برای یک دامنه کار داده شده تولید می کند. شامل چک کیفیت توصیف (آیا توصیف هر ابزار به مدل می گوید که چه زمانی باید از آن استفاده کند؟)
تمرینات
- یک ابزار "بدون کار" اضافه کنید که به طور صریح اجازه می دهد مدل از استفاده از هر ابزار دیگری انکار کند.
- اجبار استدلال را برای داخل به عنوان رشته و شناور به عنوان رشته اجرا کنید. اجبار کجا شروع به پنهان کردن حشرات واقعی می کند؟
- یک زمان توقف در هر ابزار و یک قطع مدار اضافه کنید (با 3 شکست متوالی ابزار را برای 60 سال رد کنید). این چه تغییری در نحوه بازیابی مدل ایجاد می کند؟
- توضیحات 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.