Tool Call
Tool Call فقط درخواستی است که Model برای اجرای یک Tool تولید میکند، اجرای واقعی آن توسط Harness انجام میشود و نتیجه دوباره به مدل برمیگردد.
Tool Call در واقع درخواستیه که Model برای استفاده از یه Tool تولید میکنه.
خود Tool Call هیچ کاری انجام نمیده و فقط یه متن ساختاریافتهست که داخلش اسم Tool و آرگومانهای لازم نوشته شده. اجرای واقعی اون به عهدهی Harnessه.
مثلاً اگه Agent بخواد یه فایل بخونه، Model چیزی شبیه این تولید میکنه:
{
"tool": "Read",
"path": "src/index.ts"
}
این فقط یه متن یا JSON ـه. بعد Harness اون رو میخونه، بررسی میکنه که مجازه یا نه، Tool رو اجرا میکنه و نتیجه رو دوباره برای Model میفرسته.
کل فرآیند اینطوریه: اول Model از روی System Prompt یاد میگیره چه Toolهایی در اختیارش هست. بعد تصمیم میگیره کدوم Tool رو صدا بزنه و یه Tool Call تولید میکنه. Harness اون رو بررسی و اجرا میکنه و در آخر نتیجهی اجرا رو به صورت Tool Result داخل یه Model Provider Request جدید برای مدل میفرسته.
از اونجایی که Tool Call هم مثل بقیهی خروجیهای مدل با Next-token prediction ساخته میشه، ممکنه اشتباه هم باشه. مثلاً مدل یه مسیر فایل اشتباه بنویسه، اسم یه دستور رو غلط وارد کنه یا آرگومان نامعتبری تولید کنه. Harness هم همون چیزی رو اجرا میکنه که مدل نوشته، نه چیزی که مدل «منظورش» بوده.
برای همین گاهی Agent فکر میکنه داره روی یه فایل خاص کار میکنه، ولی چون Tool Call اشتباه بوده، یه فایل دیگه رو ویرایش میکنه یا اصلاً دستور اجرا نمیشه.