دع النموذج يكتب سير العمل.
CodeAct هي طريقة يستخدمها وكيل الذكاء الاصطناعي لاتخاذ إجراء من خلال كتابة برنامج قصير. يستدعي هذا البرنامج فقط الأدوات التي توافق عليها، ويجمع نتائجها مع التعليمات البرمجية العادية، ويعيد الإجابة خلال وقت تشغيل ADK-Rust.
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)
ابدأ هنا
ما هو وكيل CodeAct؟
وكيل CodeAct هو وكيل AI يكتب رمز executable لتحديد كيفية عمل العديد من الأدوات المعتمدة معًا. يقوم تطبيقك بتشغيل هذا الرمز في مترجم يتم التحكم فيه ويظل مسؤولاً عن كل إجراء خارجي.
استدعاء الأداة التقليدية
يختار النموذج إجراءً واحدًا في كل مرة.
- 01اسأل النموذج عن الأداة التي يجب الاتصال بها.
- 02قم بتشغيل هذه الأداة وأرسل نتيجتها مرة أخرى إلى النموذج.
- 03اسأل النموذج عما يجب فعله بعد ذلك، ثم كرر ذلك.
CodeAct
النموذج يكتب الإجراء الكامل.
- 01اطلب من النموذج برنامجًا قصيرًا باستخدام الأدوات المتاحة.
- 02قم بتشغيل البرنامج وتوقف مؤقتًا فقط عندما يصل إلى أداة حقيقية.
- 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 مقنعًا عندما يتعين على الوكيل الجمع بين الأدوات والحساب. إنه يمنح النموذج لغة مألوفة للتعبير عن المنطق بينما يحتفظ تطبيقك بحدود الأداة ووقت التشغيل.
يؤلف عدة أدوات
يمكن للبرنامج النصي استدعاء العديد من الأدوات المعتمدة وتمرير نتيجة واحدة مباشرة إلى الخطوة التالية.
استخدم تدفق التحكم الحقيقي
يتم التعبير عن الحلقات والشروط والمتغيرات والفرز والتصفية والحساب مباشرة في التعليمات البرمجية.
تقليل الرحلات النموذجية ذهابًا وإيابًا
يمكن أحيانًا التعبير عن العمل الذي يتطلب العديد من دورات اختيار الأدوات في برنامج نصي واحد تم إنشاؤه.
احتفظ بالبيانات الوسيطة محليًا
يمكن لوقت التشغيل تصفية نتائج الأدوات الكبيرة أو تجميعها قبل تحديد ما ينتمي إلى نسخة النموذج.
تصحيح أخطاء executable
يمكن أن يصبح الخطأ النحوي أو الاستثناء أو التأكيد الفاشل ملاحظة يستخدمها النموذج لمراجعة البرنامج النصي التالي.
فحص العمل
يمكن للمطورين قراءة البرنامج الذي تم إنشاؤه واستدعاءات الأدوات والمخرجات ونقاط التفتيش كمسار execution.
المقايضات
متى يجب أن أتجنبه؟
عمل واحد بسيط
يكون استدعاء أداة LlmAgent العادي أسهل عندما يتم تعيين الطلب بشكل واضح لعملية تجارية واحدة.
توليد كود ضعيف
قد يحتاج النموذج الذي يواجه صعوبة في كتابة تعليمات برمجية صالحة إلى دورات تصحيح أكثر من استدعاء الأدوات المنظمة.
لا يوجد وقت تشغيل آمن
يحتاج الكود الذي تم إنشاؤه إلى مترجم ذو وصول صريح وحدود للموارد. لا تقم أبدًا بتمريرها إلى eval أو exec غير المقيدة.
تطوير البرمجيات الكاملة
استخدم CodingAgent عندما يكون الهدف هو تحرير المستودعات، أو تشغيل أوامر shell، أو تشغيل مساحة عمل التطوير.
التنفيذ في النظام البيئي
يظهر مفهوم CodeAct الآن في العديد من أنظمة الوكلاء.
إنهم يشتركون في فكرة التعليمات البرمجية كتنسيق إجراء، لكنهم يختلفون في دعم اللغة، وعرض الأداة، ووضع الحماية، والحالة، وعبء العمل المقصود.
CodeAct
البحث الأصلي
إجراءات Python، وCodeActInstruct، ونماذج البحث المضبوطة بدقة، ومحرك execution المعبأ في حاوية.
اعرف المزيد ↗OpenHands
وكلاء البرمجيات
يمكن لـ CodeActAgent التحدث، execute Python، وتشغيل أوامر shell لأعمال تطوير البرمجيات.
اعرف المزيد ↗smolagents
Hugging Face
يستخدم CodeAgent إجراءات Python مع الحلقات والشروط ويدعم العديد من أدوات وضع الحماية executors.
اعرف المزيد ↗Pydantic AI
وضع الكود
يلتف أدوات الوكيل في واجهة التعليمات البرمجية ويستخدم Monty كوقت تشغيل Python متحكم فيه.
اعرف المزيد ↗ADK-Rust
Rust-وقت التشغيل الأصلي
إضافة حلقة CodeAct إلى الوكلاء والأدوات والجلسات والأحداث والموافقات وعمليات الاسترجاعات والتحويلات المكتوبة.
اعرف المزيد ↗كيف تقوم 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 كل إجراء خارجي ونقطة تفتيش متينة وحدث يراه التطبيق.
نموذج
يكتب برنامجًا نصيًا باستخدام ملخص وقت التشغيل والأدوات المتاحة لهذا الاستدعاء.
CodeRuntime
يقوم بتشغيل البرنامج النصي خطوة بخطوة ويكشف عن أخطاء الاستدعاءات والإكمال وstdout وأخطاء البرنامج النصي.
المضيف ADK-Rust
ينفذ الأدوات باستخدام التفويض والسياق، ويستمر في الحالة، ويبث النتيجة النهائية.
إرشادات execution المدعومة بالمصدر
دراسة الحالة: تسعير عربة التسوق في دورة واحدة CodeAct.
يتبع هذا المثال الحتمي CodeAct × Monty في مستودع ADK-Rust. حدد كل حد لمعرفة أي جزء من النظام يعمل وما يصبح مرئيًا للجزء التالي.
Runner
يدخل الطلب ADK-Rust
يقوم Runner بإرفاق المستخدم والجلسة وسياق الاستدعاء وعمليات الاسترجاعات والأدوات المتاحة قبل بدء تشغيل وكيل CodeAct.
إشارة مرئية
ما هو إجمالي سلة التسوق u-42، بما في ذلك ضريبة كاليفورنيا؟
اختر شكل الوكيل المناسب
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 بالتقاط لقطات للمترجم المتوقف مؤقتًا ونصه والمكالمة المعلقة في الجلسة حتى يتمكن استدعاء آخر من الاستمرار من نفس سطر التعليمات البرمجية.
حفظ من قبل
استمر في الاستمرار قبل السماح بتشغيل أداة خارجية.
حل
قم بالتنفيذ أو الموافقة أو الرفض أو انتظار نتيجة الأداة المعلقة.
حفظ بعد
استمر في القيمة التي تم إرجاعها حتى لا يؤدي الاسترداد إلى تكرار المكالمة المكتملة.
استئناف
قم بتحميل نقطة التحقق ثم تابع نفس البرنامج النصي من حد الاستدعاء الخاص به.
مسؤولية المطور: قد يؤدي حدوث عطل بعد تأثير جانبي خارجي ولكن قبل نقطة تفتيش الحفظ بعد إلى تشغيل هذه الأداة مرة أخرى. امنح الأدوات غير القادرة على العمل مفتاحًا للعجز أو حارسًا آخر مكررًا.
التنفيذ
أربع قطع تحدد الوكيل الكامل.
اختر نموذجًا، وقم بتوفير CodeRuntime، وقم بتسجيل الأدوات التي قد يستدعيها البرنامج النصي، وقم بتشغيل الوكيل من خلال ADK-Rust Runner العادي.
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
تحويل محادثة أداة متعددة الخطوات إلى برنامج واحد قابل للقراءة.
ابدأ بالمثال الحتمي، وافحص كل توقف واستئناف، ثم قم بتوصيل النموذج والأدوات التي يستخدمها منتجك بالفعل.