ADK-Rust v2 · CodeAct एजेंट

मॉडल को लिखने दीजिए कार्यप्रवाह.

CodeAct एक AI एजेंट के लिए एक छोटा प्रोग्राम लिखकर कार्रवाई करने का एक तरीका है। वह प्रोग्राम केवल आपके द्वारा अनुमोदित टूल को कॉल करता है, उनके परिणामों को सामान्य कोड के साथ जोड़ता है, और 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 फ़ंक्शन जो व्यावसायिक डेटा या सिस्टम तक पहुंचता है।

स्क्रिप्ट

वर्तमान एजेंट टर्न के लिए लिखा गया संक्षिप्त कार्यक्रम।

रनटाइम

दुभाषिया जो स्क्रिप्ट को execute करता है और रोकता है।

अवलोकन

एक परिणाम या त्रुटि दूसरे मोड़ के लिए मॉडल पर वापस आ गई।

चेकप्वाइंट

एक सहेजा गया रुका हुआ प्रोग्राम जो बाद में भी जारी रह सकता है।

अंतिम परिणाम

टाइप किया गया उत्तर आपके आवेदन पर वापस आ गया।

यह विचार कहां से आया

CodeAct की शुरुआत एक एजेंट की कार्रवाई भाषा के बारे में एक शोध प्रश्न के रूप में हुई।

अधिकांश शुरुआती टूल-उपयोग करने वाले एजेंट किसी क्रिया को प्राकृतिक भाषा या टूल नाम और तर्क वाले JSON ऑब्जेक्ट के रूप में प्रस्तुत करते हैं। शोधकर्ता जिंगयाओ वांग, यांगयी चेन, लिफान युआन, यिझे झांग, युनझु ली, हाओ पेंग और हेंग जी ने पूछा कि क्या executable Python एक अधिक अभिव्यंजक क्रिया प्रारूप होगा.

उनका पेपर, "निष्पादन योग्य कोड क्रियाएँ बेहतर LLM एजेंटों को प्राप्त करती हैं", फरवरी 2024 में जारी किया गया था और ICML 2024 में प्रदर्शित हुआ था। इसने API-Bank और पेपर के M³ToolEval बेंचमार्क पर 17 भाषा मॉडलों को evaluated किया। लेखकों ने बताया कि कोड क्रियाओं ने परीक्षण किए गए पाठ और JSON क्रिया प्रारूपों की तुलना में 20% अधिक सफलता दर हासिल की।

पेपर भी पेश किया CodeActInstruct, 7,000 मल्टी-टर्न इंटरैक्शन का एक डेटासेट, और CodeActAgent मॉडल execute कोड में ठीक से ट्यून किए गए, परिणामों का निरीक्षण करते हैं, विफल कार्यक्रमों को संशोधित करते हैं और बातचीत जारी रखते हैं। ये पेपर के कार्यों पर शोध परिणाम हैं; उनका मतलब यह नहीं है कि कोड क्रियाएं हर उत्पाद के लिए स्वचालित रूप से बेहतर होती हैं।

मैं CodeAct का उपयोग क्यों करूंगा?

CodeAct

CodeAct तब सम्मोहक होता है जब एजेंट को उपकरणों को संगणना के साथ जोड़ना होता है। यह मॉडल को तर्क व्यक्त करने के लिए एक परिचित भाषा देता है जबकि आपका एप्लिकेशन टूल और रनटाइम सीमाओं को बरकरार रखता है।

01

अनेक उपकरण बनाएं

एक स्क्रिप्ट कई स्वीकृत टूल को कॉल कर सकती है और एक परिणाम को सीधे अगले चरण में भेज सकती है।

02

वास्तविक नियंत्रण प्रवाह का प्रयोग करें

लूप, स्थितियाँ, चर, सॉर्टिंग, फ़िल्टरिंग और अंकगणित सीधे कोड में व्यक्त किए जाते हैं।

03

मॉडल राउंड ट्रिप कम करें

जिस कार्य के लिए कई टूल-चयन मोड़ों की आवश्यकता होगी, उसे कभी-कभी एक जेनरेट की गई स्क्रिप्ट में व्यक्त किया जा सकता है।

04

मध्यवर्ती डेटा स्थानीय रखें

मॉडल ट्रांसक्रिप्ट में क्या है, यह तय करने से पहले रनटाइम बड़े टूल परिणामों को फ़िल्टर या एकत्रित कर सकता है।

05

executable गलतियों को सुधारें

एक सिंटैक्स त्रुटि, अपवाद, या असफल दावा एक अवलोकन बन सकता है जिसका उपयोग मॉडल अगली स्क्रिप्ट को संशोधित करने के लिए करता है।

06

कार्रवाई का निरीक्षण करें

डेवलपर्स जेनरेट किए गए प्रोग्राम, टूल कॉल, आउटपुट और चेकपॉइंट्स को execution ट्रेल के रूप में पढ़ सकते हैं।

लेन-देन

मुझे इससे कब बचना चाहिए?

एक सरल क्रिया

एक सामान्य LlmAgent टूल कॉल तब आसान हो जाती है जब अनुरोध एक व्यावसायिक ऑपरेशन के लिए स्पष्ट रूप से मैप किया जाता है।

कमजोर कोड जनरेशन

एक मॉडल जो वैध कोड लिखने के लिए संघर्ष करता है, उसे संरचित टूल कॉलिंग की तुलना में अधिक सुधार की आवश्यकता हो सकती है।

कोई सुरक्षित रनटाइम नहीं

जेनरेट किए गए कोड के लिए स्पष्ट पहुंच और संसाधन सीमाओं वाले दुभाषिया की आवश्यकता होती है। इसे कभी भी अप्रतिबंधित eval या exec पर न भेजें।

पूर्ण सॉफ्टवेयर विकास

जब लक्ष्य रिपॉजिटरी संपादित करना, शेल कमांड चलाना, या विकास कार्यक्षेत्र संचालित करना हो तो CodingAgent का उपयोग करें।

पारिस्थितिकी तंत्र में कार्यान्वयन

CodeAct अवधारणा अब कई एजेंट प्रणालियों में दिखाई देती है।

वे कोड के विचार को एक क्रिया प्रारूप के रूप में साझा करते हैं, लेकिन भाषा समर्थन, टूल एक्सपोज़र, सैंडबॉक्सिंग, स्थिति और इच्छित कार्यभार में भिन्न होते हैं।

CodeAct

मौलिक शोध

Python क्रियाएँ, CodeActInstruct, सुव्यवस्थित अनुसंधान मॉडल और एक कंटेनरीकृत execution इंजन।

और जानें ↗

OpenHands

सॉफ्टवेयर एजेंट

इसका CodeActAgent बातचीत कर सकता है, execute Python कर सकता है और सॉफ्टवेयर-डेवलपमेंट कार्य के लिए शेल कमांड चला सकता है।

और जानें ↗

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 हर बाहरी कार्रवाई, टिकाऊ चेकपॉइंट और एप्लिकेशन द्वारा देखी जाने वाली घटना का मालिक है।

ADK-Rust CodeAct वास्तुकलाएक अनुरोध Runner और CodeAct एजेंट के माध्यम से एक कोड रनटाइम में चला जाता है। टूल कॉल ADK-Rust में वापस आ जाती है जबकि रनटाइम नीति और सत्र चौकियाँ execution को नियंत्रित करती हैं।एक अनुरोध, एक executable योजना, प्रत्येक सीमा पर नियंत्रितठोस तीर अनुरोध और परिणाम दर्शाते हैं। धराशायी तीर निलंबन, नीति और टिकाऊ स्थिति दर्शाते हैं।उत्पादउपयोगकर्ता अनुरोधRunnerसत्र + प्रसंगCodeActAgentमॉडल ↔ स्क्रिप्ट लूपCodeRuntimeशुरू करें · रोकें · फिर से शुरू करेंScriptOutputपरिणाम · निरीक्षण · स्थानांतरणADK-Rust उपकरणप्रमाणीकरण · पुनः प्रयास करें · कॉलबैकसत्र की स्थितिटिकाऊ चौकीरनटाइम नीतिफ़ाइलें · पर्यावरण · सीमाएँcall_tool दुभाषिया को रोक देता है; होस्ट कॉल का समाधान करता है और उसी निरंतरता को फिर से शुरू करता है

मॉडल

रनटाइम ब्रीफिंग और इस आह्वान के लिए उपलब्ध टूल का उपयोग करके एक स्क्रिप्ट लिखता है।

CodeRuntime

स्क्रिप्ट को चरण दर चरण चलाता है और कॉल, पूर्णता, stdout और स्क्रिप्ट त्रुटियों को उजागर करता है।

ADK-Rust होस्ट

प्राधिकरण और संदर्भ के साथ उपकरण निष्पादित करता है, स्थिति बनाए रखता है, और अंतिम परिणाम स्ट्रीम करता है।

स्रोत-समर्थित execution वॉकथ्रू

केस स्टडी: एक CodeAct मोड़ में शॉपिंग कार्ट की कीमत तय करें।

यह ADK-Rust रिपॉजिटरी में नियतात्मक CodeAct × Monty उदाहरण का अनुसरण करता है। यह देखने के लिए प्रत्येक सीमा का चयन करें कि सिस्टम का कौन सा भाग काम कर रहा है और अगले भाग में क्या दिखाई देता है।

Runner

अनुरोध ADK-Rust में प्रवेश करता है

Runner एजेंट शुरू होने से पहले Runner उपयोगकर्ता, सत्र, आमंत्रण संदर्भ, कॉलबैक और उपलब्ध टूल संलग्न करता है।

दर्शनीय संकेत

सीए टैक्स सहित कार्ट यू-42 का कुल योग क्या है?

1 का 6

सही एजेंट आकार चुनें

CodeAct का एक विशिष्ट कार्य है।

इसका उपयोग तब करें जब कोई मॉडल प्रोग्राम के रूप में कार्य को अधिक स्पष्ट रूप से व्यक्त कर सके। ADK-Rust संवादात्मक उपकरण उपयोग और पूर्ण सॉफ़्टवेयर-विकास वातावरण के लिए एजेंट आकार भी प्रदान करता है।

LlmAgent

बातचीत के तरीके से टूल चुनें और कॉल करें।

इसके लिए सर्वोत्तम: प्रश्न, संवाद, अलग-अलग व्यावसायिक गतिविधियाँ, और प्राकृतिक हैंडऑफ़।

मॉडल → टूल → मॉडल

CodeActAgent

एक executable योजना में उपकरण और तर्क लिखें।

इसके लिए सर्वोत्तम: विश्लेषण, डेटा परिवर्तन, बैच कार्य, गणना और सशर्त प्रवाह।

मॉडल → स्क्रिप्ट ↔ उपकरण → परिणाम

CodingAgent

सॉफ़्टवेयर-डेवलपमेंट हार्नेस के अंदर कार्य करें।

इसके लिए सर्वोत्तम: रिपॉजिटरी संपादन, शेल कमांड, बिल्ड, परीक्षण, पैच और कोडिंग-एजेंट प्रोटोकॉल।

एजेंट ↔ कार्यक्षेत्र + शेल

Monty रनटाइम

जेनरेट किए गए कोड को एक स्पष्ट परिचालन सीमा दें।

ADK-Rust का वर्तमान Python एडाप्टर प्रक्रिया में Monty चलाता है। execution शुरू होने से पहले होस्ट तय करता है कि स्क्रिप्ट क्या पढ़, लिख, जान और उपभोग कर सकती है।

Monty अभी भी प्रायोगिक है। यह वर्तमान में एक पिन की गई Git निर्भरता है और इसके लिए Rust 1.95+ की आवश्यकता है। Monty crates.io पर उपलब्ध होने तक एडॉप्टर अपने टोकरे में रहता है।

डिफ़ॉल्ट सैंडबॉक्स

कोई फ़ाइल सिस्टम पहुंच नहीं और खाली वातावरण। नेटवर्क और सबप्रोसेस संचालन में कोई Monty सतह नहीं है।

स्पष्ट माउंट

चयनित होस्ट निर्देशिकाओं को वर्चुअल पथों पर मैप करें और प्रत्येक के लिए केवल-पढ़ने या पढ़ने-लिखने की पहुंच चुनें।

संसाधन सीमा

प्रत्येक अग्रिम के लिए एक समय सीमा और मेमोरी कैप निर्धारित करें। क्रमबद्ध निरंतरताएँ फिर से शुरू होने पर उन सीमाओं को बरकरार रखती हैं।

एक उपकरण प्रपत्र

स्क्रिप्ट्स call_tool(नाम, 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 के साथ बनाएं

मल्टी-स्टेप टूल वार्तालाप को एक पठनीय प्रोग्राम में बदलें।

नियतात्मक उदाहरण से प्रारंभ करें, प्रत्येक विराम और पुनरारंभ का निरीक्षण करें, फिर उस मॉडल और टूल को कनेक्ट करें जिसका उपयोग आपका उत्पाद पहले से कर रहा है।