فراخوانی حدسیِ ابزار؛ ترفند تازه برای سریعتر کردن ایجنتها
خلاصهٔ کاملتر
خیلی از هارنسهای ایجنتی جدید (که بهشون CodeAct یا «حالت کد» هم گفته میشه) بهجای فراخوانی مستقیم ابزار، کد مینویسن و همون کد رو تو یه REPL اجرا میکنن؛ ابزارها هم فقط توابعی داخل همون کدن. مشکل اینه که خیلی از این ابزارها - مخصوصا زیرمدل یا زیرایجنتها - پرتاخیرن، و تولید خود کد هم زمان میبره. نویسنده که قبلا رو RLM کار کرده، الهام از speculative execution تو پردازندهها و speculative decoding تو LLMها گرفته و ترفندی به اسم «فراخوانی حدسیِ برنامهای ابزار» (sPTC) پیشنهاد کرده.
ایده اینه: هنوز مدل داره کد رو توکنبهتوکن تولید میکنه که یه REPL «سایه» (shadow REPL) همون کدِ نیمهکاره رو موازی پردازش میکنه. هر جا یه فراخوانی ابزار قابلحدس دیده بشه - مثلا ورودیهاش رشتههای ثابت باشن یا از متغیرهای «امن» و بدون عوارض جانبی بیان - اون فراخوانی از همون الان بهصورت async اجرا میشه و نتیجهش تو یه حافظهی مشترک ذخیره میمونه. وقتی کد نهایی واقعا اون تابع رو صدا بزنه، بهجای اجرای دوباره، همون نتیجهی حاضر رو برمیداره:
while not LLM.done:
code += LLM.next_tokens()
parse_and_peek(code, shadow_ns)
parse_and_speculate(code, shadow_ns)
exec(code, real_ns)بعضی فراخوانیها اصلا قابلحدس نیستن؛ مثلا اگه ورودی یه تابع از یه فایل خونده بشه (مثل open(...)) یا هر تابعی که «ناخالص» یا دارای عوارض جانبی علامتگذاری شده باشه، sPTC از حدس زدنش صرفنظر میکنه تا حالت واقعی REPL خراب نشه. نویسنده رو یه بنچمارک به اسم OOLONG، با یه سرور vLLM رو ۸ تا GPU از نوع H100 و مدل Qwen3-30B-A3B-Instruct، سرعت رو اندازه گرفته: بهبود سرعت معمولا تو بازهی ۱ تا ۱.۲ برابر بوده - عدد چشمگیری نیست ولی رایگانه و تقریبا بدون سربار اضافه به دست میاد.
نویسنده میگه ایدهی سرعتبخشی حدسی برای فراخوانی ابزار قبلا هم تو کارهایی مثل Conveyor و Speculative Interaction Agents مطرح شده بوده، ولی معتقده تو حالت «کد بهعنوان ابزار» (PTC) ارزشش بیشتره، چون زمان اجرای کل برنامه از قبل مشخص نیست و فضای بیشتری برای همپوشانی وجود داره.




