ADK-Rust v2 · وكيل CodeAct

دع النموذج يكتب سير العمل.

CodeAct هي طريقة يستخدمها وكيل الذكاء الاصطناعي لاتخاذ إجراء من خلال كتابة برنامج قصير. يستدعي هذا البرنامج فقط الأدوات التي توافق عليها، ويجمع نتائجها مع التعليمات البرمجية العادية، ويعيد الإجابة خلال وقت تشغيل ADK-Rust.

cart_assistant.py
cart = call_tool("fetch_cart", args)
subtotal = sum(item["price"] * item["qty"]
               for item in cart["items"])
rate = call_tool("tax_rate", region)
total = subtotal * (1 + rate)
وقفة · أداة · استئناف
اكتب
تشغيل
العودة
total = $141.57 · 3 cart lines

ابدأ هنا

ما هو وكيل CodeAct؟

وكيل CodeAct هو وكيل AI يكتب رمز executable لتحديد كيفية عمل العديد من الأدوات المعتمدة معًا. يقوم تطبيقك بتشغيل هذا الرمز في مترجم يتم التحكم فيه ويظل مسؤولاً عن كل إجراء خارجي.

استدعاء الأداة التقليدية

يختار النموذج إجراءً واحدًا في كل مرة.

  1. 01اسأل النموذج عن الأداة التي يجب الاتصال بها.
  2. 02قم بتشغيل هذه الأداة وأرسل نتيجتها مرة أخرى إلى النموذج.
  3. 03اسأل النموذج عما يجب فعله بعد ذلك، ثم كرر ذلك.
النموذج → fetch_cart → النموذج → tax_rate → النموذج → الإجابة

CodeAct

النموذج يكتب الإجراء الكامل.

  1. 01اطلب من النموذج برنامجًا قصيرًا باستخدام الأدوات المتاحة.
  2. 02قم بتشغيل البرنامج وتوقف مؤقتًا فقط عندما يصل إلى أداة حقيقية.
  3. 03استمر في استخدام نتيجة الأداة حتى يُرجع البرنامج إجابته.
النموذج ← نص واحد ↔ الأدوات المعتمدة ← الإجابة

تشبيه بسيط

يشبه استدعاء الأدوات التقليدية مطالبة أحد الزملاء بالضغط على زر واحد في الآلة الحاسبة، والإبلاغ عن الشاشة، وانتظار التعليمات التالية. يشبه CodeAct إعطاء الإذن لذلك الزميل بكتابة صيغة جدول بيانات صغيرة: تظل المدخلات المسموح بها كما هي، ولكن يمكن أن تحتوي العملية الحسابية على متغيرات وشروط وحلقات وعدة خطوات.

ثماني كلمات ستراها في هذه الصفحة

نموذج

LLM الذي يكتب السيناريو.

وكيل

المكون الذي يحول الهدف إلى أفعال ونتائج.

أداة

وظيفة Rust معتمدة تصل إلى بيانات أو أنظمة العمل.

البرنامج النصي

البرنامج القصير المكتوب لدور الوكيل الحالي.

وقت التشغيل

المترجم الذي executes ويوقف البرنامج النصي مؤقتًا.

الملاحظة

نتيجة أو خطأ يعود إلى النموذج لدورة أخرى.

نقطة تفتيش

برنامج محفوظ متوقف مؤقتًا ويمكن الاستمرار فيه لاحقًا.

النتيجة النهائية

تم إرجاع الإجابة المكتوبة إلى طلبك.

من أين جاءت الفكرة

بدأ CodeAct كسؤال بحثي حول لغة عمل الوكيل.

تمثل معظم وكلاء استخدام الأدوات الأوائل إجراءً كلغة طبيعية أو كائن JSON يحتوي على اسم الأداة والوسائط. تساءل الباحثون شينغ ياو وانغ، ويانغي تشين، وليفان يوان، وييزي تشانغ، ويونزو لي، وهاو بينغ، وهينغ جي عما إذا كان سيكون executable Python تنسيق عمل أكثر تعبيراً.

ورقهم، "إجراءات التعليمات البرمجية القابلة للتنفيذ تثير وكلاء LLM أفضل"، تم إصداره في فبراير 2024 وظهر في ICML 2024. وقام بتقييم 17 نموذجًا للغة على API-Bank ومعيار M³ToolEval الخاص بالورقة. أفاد المؤلفون أن إجراءات التعليمات البرمجية حققت معدلات نجاح أعلى بنسبة 20% من النص وتنسيقات إجراءات JSON التي تم اختبارها.

كما قدمت الورقة CodeActInstruct، مجموعة بيانات مكونة من 7000 تفاعل متعدد المنعطفات، ونماذج CodeActAgent مضبوطة بدقة على كود execute، ومراقبة النتائج، ومراجعة البرامج الفاشلة، ومواصلة المحادثة. هذه هي نتائج البحث حول مهام الورقة؛ فهي لا تعني أن إجراءات التعليمات البرمجية تكون أفضل تلقائيًا لكل منتج.

لماذا أستخدم CodeAct؟

CodeAct

يكون CodeAct مقنعًا عندما يتعين على الوكيل الجمع بين الأدوات والحساب. إنه يمنح النموذج لغة مألوفة للتعبير عن المنطق بينما يحتفظ تطبيقك بحدود الأداة ووقت التشغيل.

01

يؤلف عدة أدوات

يمكن للبرنامج النصي استدعاء العديد من الأدوات المعتمدة وتمرير نتيجة واحدة مباشرة إلى الخطوة التالية.

02

استخدم تدفق التحكم الحقيقي

يتم التعبير عن الحلقات والشروط والمتغيرات والفرز والتصفية والحساب مباشرة في التعليمات البرمجية.

03

تقليل الرحلات النموذجية ذهابًا وإيابًا

يمكن أحيانًا التعبير عن العمل الذي يتطلب العديد من دورات اختيار الأدوات في برنامج نصي واحد تم إنشاؤه.

04

احتفظ بالبيانات الوسيطة محليًا

يمكن لوقت التشغيل تصفية نتائج الأدوات الكبيرة أو تجميعها قبل تحديد ما ينتمي إلى نسخة النموذج.

05

تصحيح أخطاء executable

يمكن أن يصبح الخطأ النحوي أو الاستثناء أو التأكيد الفاشل ملاحظة يستخدمها النموذج لمراجعة البرنامج النصي التالي.

06

فحص العمل

يمكن للمطورين قراءة البرنامج الذي تم إنشاؤه واستدعاءات الأدوات والمخرجات ونقاط التفتيش كمسار execution.

المقايضات

متى يجب أن أتجنبه؟

عمل واحد بسيط

يكون استدعاء أداة LlmAgent العادي أسهل عندما يتم تعيين الطلب بشكل واضح لعملية تجارية واحدة.

توليد كود ضعيف

قد يحتاج النموذج الذي يواجه صعوبة في كتابة تعليمات برمجية صالحة إلى دورات تصحيح أكثر من استدعاء الأدوات المنظمة.

لا يوجد وقت تشغيل آمن

يحتاج الكود الذي تم إنشاؤه إلى مترجم ذو وصول صريح وحدود للموارد. لا تقم أبدًا بتمريرها إلى eval أو exec غير المقيدة.

تطوير البرمجيات الكاملة

استخدم CodingAgent عندما يكون الهدف هو تحرير المستودعات، أو تشغيل أوامر shell، أو تشغيل مساحة عمل التطوير.

كيف تقوم ADK-Rust بتنفيذ CodeAct

يعمل CodeAct داخل وقت تشغيل ADK-Rust.

CodeActAgent هو نوع وكيل جنبا إلى جنب LlmAgent. أنت تعطيه نموذجا، أ CodeRuntimeوأدوات Rust. يمكنك بعد ذلك تشغيله من خلال نفس أنظمة Runner والجلسة والحدث ورد الاتصال والترخيص والإخراج التي يستخدمها وكلاء ADK-Rust الآخرون.

1. النموذج

اختر أي مزود طراز ADK-Rust قادر على إنتاج تعليمات برمجية موثوقة.

2.CodeRuntime

استخدم وقت تشغيل Monty المدعوم من Python أو قم بتطبيق سمة CodeRuntime الحيادية اللغة.

3. أدوات Rust

تسجيل الأدوات المكتوبة. يمكن للبرنامج النصي الوصول فقط إلى الأدوات المتوفرة لهذا الاستدعاء.

4.Runner

قم بتشغيل الوكيل مع مستخدم وجلسة، ثم استهلك أحداث ADK-Rust العادية المكتوبة.

5. الجلسة

نقاط التفتيش المستمرة عندما تقوم الموافقة أو أداة طويلة الأمد بإيقاف البرنامج مؤقتًا.

6. الضوابط

تطبيق التأكيد، وإعادة المحاولة، والمهلات، وعمليات الاسترجاعات، وحواجز الحماية، والمخرجات التي تم التحقق من صحتها.

أسرع بداية عمل

قم بتشغيل المثال الذي تم تسجيل الوصول إليه أولاً.

ويستخدم نموذجًا حتميًا، ومترجمًا حقيقيًا Monty Python، وأداتين Rust، وجلسة في الذاكرة، وADK-Rust Runner. لا يلزم وجود مفتاح API للنموذج.

يعد المحول Monty حاليًا تبعية Git تجريبية ويتطلب Rust 1.95+، لذا فإن المثال يحمل ملف سلسلة الأدوات الخاص به.

محطة
git clone https://github.com/zavora-ai/adk-rust.git
cd adk-rust/examples/codeact_monty_agent

# This example selects Rust 1.95 automatically.
cargo run
الناتج الذي تم التحقق منه
=== ADK-Rust CodeAct × Monty (Python) example ===

[cart_assistant]
{
  "lines": 3,
  "region": "CA",
  "subtotal": 132.0,
  "tax_rate": 0.0725,
  "total": 141.57,
  "user": "u-42"
}

Done.

الهندسة المعمارية

يعمل البرنامج النصي داخل نظام الوكيل.

يقترح النموذج منطق executable. يتحكم CodeRuntime في كيفية تقدم هذا المنطق. يمتلك ADK-Rust كل إجراء خارجي ونقطة تفتيش متينة وحدث يراه التطبيق.

العمارة ADK-Rust CodeActينتقل الطلب عبر وكيل Runner وCodeAct إلى وقت تشغيل التعليمات البرمجية. تتقاطع استدعاءات الأداة مرة أخرى مع ADK-Rust بينما تتحكم نقاط فحص الجلسة وسياسة وقت التشغيل في execution.طلب واحد، خطة executable واحدة، يتم التحكم فيها عند كل الحدودالأسهم الصلبة تحمل الطلب والنتيجة. تُظهر الأسهم المتقطعة التعليق والسياسة والحالة الدائمة.المنتجطلب المستخدمRunnerالجلسة + السياقCodeActAgentنموذج ↔ حلقة البرنامج النصيCodeRuntimeالبدء · الإيقاف المؤقت · الاستئنافScriptOutputالنتيجة · الملاحظة · النقلأدوات ADK-Rustمصادقة · إعادة المحاولة · الاسترجاعاتحالة الجلسةنقطة تفتيش دائمةسياسة وقت التشغيلالملفات · البيئة · الحدودcall_tool يوقف المترجم مؤقتًا؛ يحل المضيف المكالمة ويستأنف نفس الاستمرارية

نموذج

يكتب برنامجًا نصيًا باستخدام ملخص وقت التشغيل والأدوات المتاحة لهذا الاستدعاء.

CodeRuntime

يقوم بتشغيل البرنامج النصي خطوة بخطوة ويكشف عن أخطاء الاستدعاءات والإكمال وstdout وأخطاء البرنامج النصي.

المضيف ADK-Rust

ينفذ الأدوات باستخدام التفويض والسياق، ويستمر في الحالة، ويبث النتيجة النهائية.

إرشادات execution المدعومة بالمصدر

دراسة الحالة: تسعير عربة التسوق في دورة واحدة CodeAct.

يتبع هذا المثال الحتمي CodeAct × Monty في مستودع ADK-Rust. حدد كل حد لمعرفة أي جزء من النظام يعمل وما يصبح مرئيًا للجزء التالي.

Runner

يدخل الطلب ADK-Rust

يقوم Runner بإرفاق المستخدم والجلسة وسياق الاستدعاء وعمليات الاسترجاعات والأدوات المتاحة قبل بدء تشغيل وكيل CodeAct.

إشارة مرئية

ما هو إجمالي سلة التسوق u-42، بما في ذلك ضريبة كاليفورنيا؟

1 من 6

اختر شكل الوكيل المناسب

CodeAct لديه وظيفة محددة.

استخدمه عندما يتمكن النموذج من التعبير عن العمل بشكل أكثر وضوحًا كبرنامج. يوفر ADK-Rust أيضًا أشكال الوكيل لاستخدام أدوات المحادثة وبيئات تطوير البرامج الكاملة.

LlmAgent

اختر الأدوات واتصل بها بشكل تحادثي.

الأفضل لـ: الأسئلة والحوار والإجراءات التجارية المعزولة والتسليم الطبيعي.

النموذج → الأداة → النموذج

CodeActAgent

إنشاء الأدوات والمنطق في خطة executable واحدة.

الأفضل لـ: التحليل وتحويل البيانات والعمل الجماعي والحسابات والتدفقات الشرطية.

النموذج ← البرنامج النصي ↔ الأدوات ← النتيجة

CodingAgent

العمل داخل تسخير تطوير البرمجيات.

الأفضل لـ: تحرير المستودع، وأوامر الصدفة، والإنشاءات، والاختبارات، والتصحيحات، وبروتوكولات وكيل الترميز.

الوكيل ↔ مساحة العمل + الغلاف

وقت التشغيل Monty

إعطاء التعليمات البرمجية التي تم إنشاؤها حدود تشغيل واضحة.

يقوم محول Python الحالي الخاص بـ ADK-Rust بتشغيل Monty قيد التشغيل. يقرر المضيف ما يمكن للبرنامج النصي قراءته وكتابته ومعرفته واستهلاكه قبل بدء execution.

Monty لا يزال تجريبيًا. وهي حاليًا تبعية Git المثبتة وتتطلب Rust 1.95+. يبقى المحول في صندوقه الخاص حتى يتوفر Monty على crates.io.

صندوق الرمل الافتراضي

لا يوجد وصول إلى نظام الملفات وبيئة فارغة. عمليات الشبكة والعمليات الفرعية ليس لها سطح Monty.

يتصاعد صريحة

قم بتعيين أدلة المضيف المحددة إلى المسارات الافتراضية واختر الوصول للقراءة فقط أو الوصول للقراءة والكتابة لكل منها.

حدود الموارد

قم بتعيين حد أقصى للوقت وغطاء للذاكرة لكل تقدم. تحتفظ الاستمرارات المتسلسلة بهذه الحدود عند استئنافها.

شكل أداة واحدة

تستدعي البرامج النصية call_tool(name, args). تبقى الوسيطات المسماة بالضبط بعد التسلسل وترتبط مركزيًا في ADK-Rust.

بيئة خاضعة للرقابة

كشف فقط عن قيم البيئة التي تحتاجها المهمة. لا يتم توريث أسرار عملية المضيف تلقائيًا أبدًا.

إخفاقات واضحة

تعود الأخطاء والاستثناءات النحوية إلى النموذج كتعليقات نصية قابلة للإصلاح؛ يؤدي فشل وقت تشغيل المضيف إلى إيقاف التشغيل.

execution المتين

يمكن أن يصبح البرنامج المتوقف مؤقتًا حالة وكيل دائمة.

قد تحتاج أدوات التأكيد والتي تعمل لفترة طويلة إلى إنهاء الطلب قبل وجود الإجابة. يقوم CodeAct بالتقاط لقطات للمترجم المتوقف مؤقتًا ونصه والمكالمة المعلقة في الجلسة حتى يتمكن استدعاء آخر من الاستمرار من نفس سطر التعليمات البرمجية.

01

حفظ من قبل

استمر في الاستمرار قبل السماح بتشغيل أداة خارجية.

02

حل

قم بالتنفيذ أو الموافقة أو الرفض أو انتظار نتيجة الأداة المعلقة.

03

حفظ بعد

استمر في القيمة التي تم إرجاعها حتى لا يؤدي الاسترداد إلى تكرار المكالمة المكتملة.

04

استئناف

قم بتحميل نقطة التحقق ثم تابع نفس البرنامج النصي من حد الاستدعاء الخاص به.

مسؤولية المطور: قد يؤدي حدوث عطل بعد تأثير جانبي خارجي ولكن قبل نقطة تفتيش الحفظ بعد إلى تشغيل هذه الأداة مرة أخرى. امنح الأدوات غير القادرة على العمل مفتاحًا للعجز أو حارسًا آخر مكررًا.

التنفيذ

أربع قطع تحدد الوكيل الكامل.

اختر نموذجًا، وقم بتوفير CodeRuntime، وقم بتسجيل الأدوات التي قد يستدعيها البرنامج النصي، وقم بتشغيل الوكيل من خلال ADK-Rust Runner العادي.

ADK-Rust v2
use std::sync::Arc;
use adk_agent::codeact::CodeActAgent;
use adk_codeact_monty::MontyRuntime;

let runtime = MontyRuntime::builder()
    .environ_var("CART_USER", "u-42")
    .environ_var("TAX_REGION", "CA")
    .system_clock(true)
    .build();

let agent = CodeActAgent::builder()
    .name("cart_assistant")
    .model(model)
    .runtime(Arc::new(runtime))
    .instruction("Price the cart by writing Python.")
    .tool(Arc::new(fetch_cart))
    .tool(Arc::new(tax_rate))
    .output_key("priced_cart")
    .build()?;

البناء باستخدام CodeAct

تحويل محادثة أداة متعددة الخطوات إلى برنامج واحد قابل للقراءة.

ابدأ بالمثال الحتمي، وافحص كل توقف واستئناف، ثم قم بتوصيل النموذج والأدوات التي يستخدمها منتجك بالفعل.