लाभ:
- एजेन्टलाई 'मोडेल + उपकरण + लूप' को रूपमा परिभाषित गर्दै र यो आवश्यक पर्दा निर्णय गर्ने
- नाम, विवरण र input_schema संग उपकरण परिभाषा लेख्दै
- Tool_use र tool_result लुपको प्रवाह र त्रुटि ह्यान्डलिङको निगरानी गर्दै
अहिले सम्म, मोडेलले सधैं एउटा काम गरेको छ: पाठ इनपुट प्राप्त गर्नुहोस्, पाठ प्रतिक्रियाहरू उत्पादन गर्नुहोस्। तर वास्तविक कामलाई प्राय: पाठ भन्दा बढी चाहिन्छ; एक गणना प्रदर्शन गर्दै, डाटाबेस क्वेरी गर्दै, एपीआई कल गर्दै, हालको विनिमय दर पत्ता लगाउने। मोडेलले यी कामहरू आफैं गर्न सक्दैनन् - तर उनले निर्णय गर्न सक्छिन् कि कहिले गर्न आवश्यक छ र कसैलाई सोध्न सक्छ। यो उपकरणको प्रयोगले मोडेल दिन्छ, र यो एआई एजेन्टहरूको आधार हो। यस एकाइमा, हामी एजेन्ट के हो, उपकरण कसरी परिभाषित गरिएको छ, र उपकरण_उपयोग लुपले कसरी काम गर्छ भन्ने कुरा सिक्नेछौं।
एजेन्ट भनेको के हो? मोडेल + उपकरण + लूप
एआई एजेन्टले तीन भागहरू समावेश गर्दछ: मोडेल (निर्णय गर्ने मस्तिष्क), उपकरणहरू (मोडलले कल गर्न सक्ने प्रकार्यहरू: मौसम, डाटाबेस क्वेरी, इमेल पठाउनुहोस्), र लुप (लूप; मोडेलले उपकरणलाई कल गर्छ, नतिजा प्राप्त गर्दछ, फेरि निर्णय गर्छ के गर्ने, र यस्तै)।
महत्वपूर्ण भिन्नता: एकल ढाँचा कल एजेन्ट होइन। एजेन्ट एक प्रक्रिया हो जसमा मोडेल चरण-दर-चरण अगाडि बढ्छ, प्रत्येक चरणमा उपकरणको नतिजामा आधारित अर्को चाल छनोट गर्दछ। "मानिस जस्तै सोच्नुहोस्, आफ्नो हात प्रयोग गर्नुहोस्, नतिजा हेर्नुहोस्, फेरि सोच्नुहोस्।"
एउटा महत्त्वपूर्ण तथ्य: मोडेल आफैले गाडी चलाउँदैन। मोडेलले मात्र भन्छ "म यी इनपुटहरूसँग यो उपकरणलाई कल गर्न चाहन्छु"। तपाईंको अनुप्रयोगले (हार्नेस भनिन्छ) उपकरण चलाउँछ र परिणाम मोडेलमा फर्काउँछ। यो सुरक्षाको लागि महत्त्वपूर्ण छ: मोडेलले तपाइँको प्रणालीलाई सीधै छुँदैन; हरेक कार्य तपाईको नियन्त्रणमा छ।
सुझाव: एजेन्टसँग हरेक समस्या समाधान गर्ने प्रयास नगर्नुहोस्। एजेन्ट; ढिलाइ, लागत र त्रुटिहरूको जोखिम बढाउँछ। पहिले सोध्नुहोस्: "के यो एकल कल वा निश्चित कार्यप्रवाहबाट समाधान हुनेछ?" यदि उत्तर हो हो भने, एजेन्टको आवश्यकता पर्दैन। एजेन्ट खुला-समाप्त कार्यहरूको लागि हो जहाँ चरणहरू अग्रिम थाहा हुन सक्दैन।
उपकरण परिभाषा: नाम, विवरण, input_schema
मोडेलमा उपकरण परिचय गर्न, तपाइँ तीन चीजहरू दिनुहुन्छ:
- नाम: गाडीको पहिचान, जस्तै get_weather।
- विवरण: उपकरणले के गर्छ र कहिले यसलाई कल गर्ने। यो सबैभन्दा महत्त्वपूर्ण क्षेत्र हो जसले मोडेललाई सही समयमा सही उपकरण छनौट गर्न अनुमति दिन्छ। "के गर्छ" मात्र नभई "कहिले कल गर्नुहोस्" पनि लेख्नुहोस्।
- input_schema (इनपुट स्कीमा): JSON स्कीमा जसले उपकरणले कुन मापदण्डहरू अपेक्षा गर्दछ, कुन प्रकारमा परिभाषित गर्दछ।
# सवारी साधनको परिभाषा (वैचारिक — JSON स्कीमा){ "नाम": "get_order_status", "description": "अर्डरको हालको ढुवानी स्थिति पुन: प्राप्त गर्दछ। प्रयोगकर्ताले अर्डर नम्बर कहाँ छ वा कहिले आइपुग्छ भनेर सोध्दा कल गर्नुहोस्।", "input_schema": { "type": "object", "properties": "description": "description": ""_order": {{} "अर्डर नम्बर, जस्तै SP-1024"} }, "आवश्यक": ["order_no"] }}
राम्रो उपकरण वर्णनको लागि नियमहरू: स्पष्ट र संक्षिप्त नाम, "कहिले प्रयोग गर्ने" सहितको विवरण, प्रत्येक प्यारामिटरको लागि विवरण, आवश्यक पर्ने साँच्चै अनिवार्यहरू राखेर। ध्यान केन्द्रित वाहन संख्या राख्नुहोस्; दर्जनौं समान सवारी मोडेलहरू आश्चर्यजनक छन्।
क्षेत्र
यसले के गर्छ?
राम्रो उदाहरण
खराब उदाहरण
नाम
सवारी साधन आईडी
order_status_getir
ल्याउनुहोस्
विवरण
यसले के गर्छ + कहिले कल गर्ने
"कार्गो स्थिति फर्काउँछ; प्रयोगकर्ताले अर्डर कहाँ छ भनेर सोध्दा कल गर्नुहोस्"
"डेटा ल्याउँछ"
input_schema
प्यारामिटर प्रकार र आवश्यकता
{order_no: string, annotated}
कुनै रेखाचित्र / कुनै विवरण छैन
tool_use → tool_result लूप
चक्र यस प्रकार काम गर्दछ, चरण द्वारा चरण:
- तपाइँ मोडेलमा प्रयोगकर्ता प्रश्न + उपकरण विवरणहरू पठाउनुहुन्छ।
- मोडेलले या त सीधा प्रतिक्रिया दिन्छ वा उपकरण_उपयोग ब्लक उत्पन्न गर्दछ: "order_no=SP-1024 सँग order_durumu_getir लाई कल गर्नुहोस्।"
- तपाईंको अनुप्रयोगले वास्तवमा उपकरण चलाउँछ (डेटाबेस प्रश्नहरू)।
- तपाईंले नतिजालाई मोडेलमा tool_result को रूपमा फिर्ता पठाउनुहुन्छ।
- यस नतिजाको साथ, मोडेलले अन्तिम जवाफ उत्पादन गर्दछ वा अर्को उपकरणलाई कल गर्दछ। मोडेलले "मैले सकियो" नभनेसम्म चक्र जारी रहन्छ।
# एजेन्ट लूप (वैचारिक) सन्देशहरू = [प्रयोगकर्ता_प्रश्न] जबकि सत्य: प्रतिक्रिया = model.uret(सन्देशहरू, उपकरण=उपकरण_परिभाषाहरू) यदि response.tur == "उपकरण_उपयोग": परिणाम = harness.run(response.tool_name, response.entries) # APPLICATION रन सन्देशहरू, # फाइनल रिटर्न रिटर्न उपकरण: प्रतिक्रिया; लुप समाप्त हुन्छ
आधुनिक SDKs ले उपकरण धावकहरू प्रस्ताव गर्दछ जुन तपाईंको लागि यो लूप चलाउँछ; तपाइँ केवल उपकरण प्रकार्यहरू लेख्नुहोस्। तर ठ्याक्कै पर्दा पछाडि के भइरहेको छ।
त्रुटि व्यवस्थापन
उपकरणहरू असफल हुन सक्छन्: अर्डर फेला परेन, API टाइम आउट, इनपुट अमान्य छ। यदि तपाइँ उपकरण चलाउन सक्नुहुन्न भने, त्रुटिलाई वर्णनात्मक उपकरणको रूपमा मोडेलमा फर्काउनुहोस्_ परिणाम ("त्रुटि: अर्डर नम्बर SP-9999 फेला परेन") र त्रुटि झण्डा। मोडेलले यसलाई देख्न र प्रयोगकर्तालाई बिस्तारै व्याख्या गर्न सक्छ, वा फरक तरिकाले प्रयास गर्न सक्छ। त्रुटि निल्नुहोस् र खाली परिणामहरू फर्काउनुहोस्; मोडेलले थाहा पाउनुपर्छ कि के गलत भयो।
कमजोर/बलियो सवारी साधनको विवरण
कमजोर (अनिश्चित संज्ञा, "जब" छैन):
नाम: "डेटा", विवरण: "डेटा ल्याउने"# मोडेललाई कहिले र कसरी कल गर्ने थाहा छैन; यसले कि त कल गर्दैन वा गलत कल गर्दछ।
बलियो (नेट नाम + जब + प्यारामिटर विवरण):
name: "musteri_bakiyesi_getir" वर्णन: "ग्राहकको हालको खाता ब्यालेन्स फिर्ता गर्छ। प्रयोगकर्ताले डेबिट, क्रेडिट वा ब्यालेन्सको लागि सोध्दा कल गर्नुहोस्। भुक्तानी गर्दैन।" input_schema: {custeri_id: string ("Customer ID")}# मोडेलले सही समयमा कल गर्छ, सही सीमाहरू सहित, जान्नुहोस्।
तीन मिनी केसहरू
केस 1 - अनावश्यक एजेन्ट। एउटा टोलीले बहु-उपकरण एजेन्टको साथ "संक्षेपमा पाठ" व्यवसाय निर्माण गर्यो; प्रत्येक रिक्यापले 4 मोडेल कल र 9 सेकेन्ड लिन्छ। काम वास्तवमा एक-कल काम थियो। जब हामीले एजेन्ट हटायौं र यसलाई एकल कलमा घटाउँछौं, समय 1.5 सेकेन्डमा घट्यो र लागत एक चौथाईमा घट्यो। पाठ: वास्तवमा आवश्यक हुँदा एजेन्ट प्रयोग गर्नुहोस्।
केस 2 - कमजोर व्याख्या, गलत कल। समर्थन एजेन्टमा, फेच भनिने एउटा अस्पष्ट उपकरणलाई मोडेलले ब्यालेन्स प्रश्न र ढुवानी प्रश्न दुवैमा अनियमित रूपमा कल गरेको थियो। जब सवारी साधनहरूलाई ब्यालेन्स_गेटिर र कार्गो_डुरुमु_गेटिरमा विभाजन गरियो र "कल जब" स्पष्टीकरणहरू थपियो, गलत सवारी साधन चयन 50 उदाहरणहरूमा 18 बाट 1 मा घट्यो।
केस 3 - त्रुटि निल्यो। अर्डर फेला परेन जब एजेन्ट खाली परिणामहरू फर्काउँदै थियो; मोडेलले यसलाई "अर्डर डेलिभर गरिएको थियो" भनेर व्याख्या गर्यो र ग्राहकलाई बहकाएको थियो। जब त्रुटि सन्देश स्पष्ट रूपमा tool_result मा लेखिएको छ ("अर्डर फेला परेन"), मोडेलले सही रूपमा भन्छ "मैले यो नम्बर फेला पार्न सकेन, के तपाइँ यसलाई जाँच गर्न सक्नुहुन्छ?" उसले भन्न थाल्यो।
सामान्य गल्तीहरू
- सबै कुरा एजेन्टमा फर्काउने: एक कल पर्याप्त हुँदा, एजेन्टले लागत र ढिलाइ थप्छ।
- अस्पष्ट वाहन विवरण: मोडेललाई कहिले कल गर्ने थाहा छैन; गलत छान्छ।
- मोडेलले गाडी चलाउँछ भन्ने सोच्दै: हार्नेसले गाडी चलाउँछ; मोडेल मात्र चाहन्छ।
- त्रुटि निल्ने: मोडेललाई थाहा हुनुपर्छ के गल्ती भयो; त्रुटिलाई खुला उपकरण_परिणामको रूपमा दिनुहोस्।
- धेरै धेरै समान सवारी: मोडेल भ्रमित हुन्छ; टूलसेट केन्द्रित र न्यूनतम राख्नुहोस्।
ध्यान दिनुहोस्: केवल मोडेलले "त्यस गाडीलाई कल गर्नुहोस्" भनेको कारणले कारबाही गर्नुपर्छ भन्ने होइन। विनाशकारी उपकरणहरूमा (मेट्नुहोस्, चेकआउट, इमेल) तपाईंको अनुप्रयोगले कललाई अन्धाधुन्ध रूपमा कार्यान्वयन गर्नु हुँदैन - यो अर्को इकाईमा सुरक्षा विषयको मूल हो।
संक्षेपमा
- एजेन्ट = मोडेल (निर्णय) + उपकरण (कार्यहरू) + लुप (कल उपकरण, परिणाम प्राप्त गर्नुहोस्, फेरि निर्णय गर्नुहोस्)।
- एकल ढाँचा कल एजेन्ट होइन; एजेन्ट एक चरण-दर-चरण प्रक्रिया हो।
- मोडेलले गाडी चलाउँदैन; तपाईको एप्लिकेसन चल्छ (हार्नेस) र परिणामलाई tool_result को रूपमा फर्काउँछ।
- उपकरण नाम, विवरण (विशेष गरी "कल गर्दा"), र input_schema द्वारा पहिचान गरिन्छ।
- टुल_प्रयोग → हार्नेस रन → उपकरण_परिणाम → मोडेलले "सम्पन्न" नभने सम्म मोडेल जारी रहन्छ; त्रुटिहरू स्पष्ट रूपमा मोडेलमा रिपोर्ट गरिएका छन्।
आवेदन कार्य
तपाईंको आफ्नै व्यवसायबाट 3 उपकरणहरू डिजाइन गर्नुहोस् जुन एजेन्टलाई दिन सकिन्छ। (१) नाम लेख्नुहोस्, "कल गर्दा" को साथ विवरण र प्रत्येकको लागि इनपुट_स्कीमा; कम्तिमा एउटा गैर-विनाशकारी पठन उपकरण र एउटा गणना होस्। (२) एक यथार्थपरक प्रयोगकर्ता प्रश्न छान्नुहोस् र म्यानुअल रूपमा चरण-दर-चरण लेख्नुहोस् (लुपमा) यी मध्ये कुन उपकरणहरू मोडेलले कुन इनपुटहरूसँग कल गर्नेछ र उपकरण_परिणाम आएपछि यसले के गर्नेछ। (३) एउटा परिदृश्य सेट अप गर्नुहोस् जसमा एउटा उपकरण असफल हुन्छ र त्रुटि सन्देश मोडेलमा कसरी फर्किनेछ भनेर देखाउनुहोस्।
चेकलिस्ट
- [ ] म एजेन्टलाई "model + tools + loop" को रूपमा परिभाषित गर्न सक्छु र यो कहिले आवश्यक छ भनेर निर्णय गर्न सक्छु।
- [ ] मलाई थाहा छ कि हार्नेसले गाडी चलाउँछ, मोडेलले मात्र यो चाहन्छ।
- म [ ] नाम, विवरण ("कल गर्दा") र input_schema संग ठोस वाहन विवरण लेख्न सक्छु।
- म [ ] tool_use → tool_result चक्र चरणबद्ध रूपमा पछ्याउन सक्छु।
- [ ] म मोडेलमा उपकरण त्रुटिहरू खुला tool_result को रूपमा रिपोर्ट गर्छु।