درک حلقه عامل (Agent Loop)
اگر با مدلهای فراخوانی ابزار (tool-calling) کار میکنید، مهمترین تصمیم شما پرامپت نیست؛ بلکه حلقهای است که مدل را در بر میگیرد.
یک LLM تصمیم میگیرد از یک ابزار استفاده کند، اما خودش نمیتواند آن ابزار را اجرا کند. اپلیکیشن یا SDK باید زمینه (context) را آماده کند، ابزار را اجرا نماید و نتایج را به آن اضافه کند. این چرخه، همان حلقه عامل (agent loop) است.
مدل تنها بخشی از سیستم است. چارچوب (harness) یا SDK وظیفه مدیریت هماهنگی (orchestration) را بر عهده دارد. این شامل آمادهسازی پرامپت، اجرای ابزار، تلاش مجدد (retries) و پایان دادن به فرآیند است.
مفاهیم کلیدی برای ساخت عاملهای قابل اعتماد:
- مدیریت وضعیت (State management) حیاتی است. اگر خروجیهای ابزار را از دست بدهید، عامل آنچه را که اتفاق افتاده فراموش میکند.
- عملکرد به کنترل رشد پرامپت بستگی دارد. برای پایین نگه داشتن هزینهها، از پیشوندهای ثابت و کشینگ (caching) استفاده کنید.
- ایمنی مستلزم اعتبارسنجی است. برای اقداماتی که دادهها را تغییر میدهند، از دروازههای تأیید (approval gates) استفاده کنید.
- مدیریت چرخه حیات بر عهده چارچوب (harness) است، نه مدل.
یک مدل ذهنی کاربردی برای این حلقه:
- ساخت وضعیت ورودی.
- فراخوانی مدل.
- بررسی پاسخ.
- اگر مدل درخواست ابزار کرد، آنها را اعتبارسنجی و اجرا کنید.
- اضافه کردن نتایج ابزار به زمینه (context).
- فراخوانی مجدد مدل.
- تنها زمانی متوقف شوید که مدل پاسخ نهایی را ارائه دهد.
دو سیستم میتوانند از یک مدل یکسان استفاده کنند اما رفتارهای متفاوتی داشته باشند. این اتفاق به این دلیل میافتد که چارچوبهای آنها تصمیمات متفاوتی در مورد زمینه، ترتیب ابزارها و تاریخچه میگیرند.
مراقب این مشکلات رایج باشید:
- رفتار تکراری: معمولاً ناشی از قطع پیوستگی وضعیت است.
- کیفیت پایین: اغلب ناشی از خروجیهای ابزار است که بیش از حد طولانی یا پر از نویز هستند.
- هزینههای بالا: معمولاً ناشی از ترتیببندی نامناسب پرامپت است که باعث از کار افتادن کشینگ میشود.
- اقدامات ناامن: زمانی رخ میدهد که آرگومانهای ابزار را قبل از اجرا اعتبارسنجی نکنید.
مدل اقدامات را انتخاب میکند. چارچوب واقعیت را کنترل میکند. اگر سیستم بهتری میخواهید، فقط پرامپت را تغییر ندهید؛ بلکه یک حلقه بهتر بسازید.
Optional learning community: https://t.me/GyaanSetuAi