عرّف أداة
حقول الأداة
تأخذ المخططات المدقّق الأصلي لكل لغة: في TypeScript دالة أو كائن يتضمن
parse() أو safeParse()؛ وفي Python دالة قابلة للاستدعاء أو نموذج Pydantic أو كائن يتضمن parse أو safe_parse؛ وفي غيرهما دالة أو كائن قابل للاستدعاء يعيد القيمة أو يرمي استثناءً.
ما الذي تفعله المهلة
يؤدي استدعاء معرّف أداة غير موجود في قائمة الأدوات الحالية إلى فشل التشغيل (
unknown tool في Go، وUnknown tool '<name>' في C# وPHP وRuby وJava، وUnknown tool: <name> بوصفه AgentError في Rust). في TypeScript مع return-to-model، يُجاب عن الأداة غير المعروفة أو الوسائط غير القابلة للقراءة كخطأ أداة بدلًا من ذلك.
اشترط الموافقة
اضبط علم الموافقة للأداة علىtrue، أو امنحها دالة تقرر لكل استدعاء. أما دالة الموافقة على مستوى الوكيل، حيث تتوفر في اللغة، فتنطبق على كل الأدوات وتتجاوز كليهما. يوقف الاستدعاء المشروط التشغيل مؤقتًا بالحالة waiting_for_human؛ وافق عليه أو ارفضه بمعرّف الاستدعاء كما في الحالة والموافقة.
سلّم استدعاءً إلى شخص أو نظام آخر
لا تملك الأداة اليدوية منفّذًا: يتولى تطبيقك أو طابور أو خدمة أخرى العمل. أما الأداة التفاعلية فتشغّل خطافًا يمكنه التوقف بانتظار شخص. كلاهما يوقف التشغيل مؤقتًا حتى تتابعه بمخرجات أداة لمعرّف الاستدعاء؛ راجع الحالة والموافقة.
إذا أعاد الخطاف التفاعلي قيمة بدلًا من ذلك، تصبح نتيجة الأداة فورًا. بعد المتابعة، يمكن لـ
onResponseReceived (أو ما يعادله في اللغة) التحقق من المخرجات المقدَّمة أو تحويلها قبل أن يفحصها مدقّق المخرجات.
لا تأخذ الأداة الخارجية في Rust منفّذًا:
أبلغ عن التقدّم وحدّث السياق
يمكن للأداة نشر نتائج أولية أثناء عملها واستبدال سياق التطبيق للأدوار اللاحقة. يظهر التقدّم بوصفه أحداثtool.preliminary_result (راجع البث)، ويُفحص بمدقّق الأحداث عندما تضبطه.
تعافَ من أخطاء الأدوات
افتراضيًا، يُفشل الخطأ الصادر من أداة التشغيل ويُعاد رميه. اضبط سياسة الخطأ للأداة علىreturn-to-model لإعادة الخطأ بوصفه نتيجة الأداة ({"error": "..."}) كي يتمكن النموذج من تجربة شيء آخر. أبقِ القيمة الافتراضية للإخفاقات غير الآمنة أو غير القابلة للاستعادة.
في TypeScript، تحدّ
toolExecution.maxOutputChars مقدار ما يراه النموذج من مخرجات الأداة؛ وتحتفظ المخرجات الأطول ببدايتها ونهايتها حول إشعار.