संरचित प्रक्रियाएँ
टाइप किए गए चरणों का एक निश्चित क्रम, जिसे आपका एजेंट हर बार एक ही तरह से चलाता है
परिचय
संरचित प्रक्रिया एक प्रक्रिया है, जो चरणों का निश्चित क्रम चलाती है। मुक्त-रूप प्रक्रिया प्राकृतिक भाषा में दिया गया मार्गदर्शन है, जिसे एजेंट समझकर स्थिति के अनुसार ढालता है। संरचित प्रक्रिया टाइप किए गए चरणों की क्रमबद्ध सूची है, जिसे प्रक्रिया लागू होने पर एजेंट हर बार क्रम से चलाता है।
संरचित प्रक्रिया का उपयोग तब करें, जब हर कॉल पर खास चरणों का एक ही तरह से होना ज़रूरी हो: कॉलर की पहचान सत्यापित करना, टिकट एस्केलेट करना या भुगतान लेना। इसे आप सरल भाषा में लिखे छोटे चरणों की सूची के रूप में तैयार करते हैं।
हर प्रक्रिया की तरह, संरचित प्रक्रिया में भी एक ट्रिगर होता है जो बताता है कि वह कब लागू होती है। जब कोई बातचीत ट्रिगर से मेल खाती है, तो एजेंट प्रक्रिया के चरणों को क्रम से चलाता है और फिर बाकी बातचीत पर लौट आता है।

संरचित प्रक्रिया का उपयोग कब करें
संरचित प्रक्रिया का उपयोग तब करें, जब खास चरणों का हर बार एक ही तरह से चलना ज़रूरी हो, लेकिन आप उसे फिर भी सरल चरणों में जल्दी तैयार करना चाहते हों। संरचित प्रक्रियाएँ वर्कफ़्लो की तुलना में लिखने में आसान हैं, लेकिन कम अभिव्यक्तिपूर्ण हैं। वे मुक्त-रूप प्रक्रियाओं, वर्कफ़्लो और सिस्टम प्रॉम्प्ट से कैसे अलग हैं, जानने के लिए प्रक्रियाओं का उपयोग कब करें देखें।
स्ट्रक्चर्ड प्रोसीजर की संरचना
एक स्ट्रक्चर्ड प्रोसीजर के तीन हिस्से होते हैं: एक नाम, एक ट्रिगर और चरणों की क्रमबद्ध सूची।
नाम
एक छोटा लेबल जो डैशबोर्ड में प्रोसीजर की पहचान करता है। नाम कभी भी LLM को नहीं भेजा जाता, इसलिए इससे एजेंट के व्यवहार पर असर नहीं पड़ता।
ट्रिगर
यह सामान्य भाषा में बताया गया विवरण है कि एजेंट को यह प्रोसीजर कब चलाना चाहिए, उदाहरण के लिए जब यूज़र किसी ऑर्डर का रिफ़ंड मांगे। एजेंट यूज़र के इरादे की तुलना हर प्रोसीजर के ट्रिगर से करता है और मेल खाने वाला प्रोसीजर चलाता है, इसलिए ट्रिगर ठोस और अलग-अलग होने चाहिए। एजेंट को सिर्फ़ ट्रिगर टेक्स्ट दिखता है, प्रोसीजर का नाम या ID नहीं। ट्रिगर किसी भी प्रोसीजर की तरह ही काम करता है; ट्रिगर लिखना देखें।
ट्रिगर खाली छोड़ने पर प्रोसीजर एक सब-प्रोसीजर बन जाता है, जो केवल तब चलता है जब कोई दूसरा प्रोसीजर उसे कॉल करता है।
चरण
प्रोसीजर का मुख्य भाग टाइप किए गए चरणों की क्रमबद्ध सूची होता है। चरणों के कई प्रकार होते हैं और आप टास्क का वर्णन करने के लिए इन्हें मिलाकर इस्तेमाल करते हैं।

हर चरण हर जगह इस्तेमाल नहीं किया जा सकता। If आर्म के अंदर आप दूसरे If या Retry को छोड़कर कोई भी चरण इस्तेमाल कर सकते हैं। Tool चरण के विफलता हैंडलर के अंदर आप If या दूसरे Tool को छोड़कर कोई भी चरण इस्तेमाल कर सकते हैं।
API चरण रेफरेंस
स्ट्रक्चर्ड प्रोसीजर का content, steps ऐरे वाले JSON-एन्कोडेड दस्तावेज़ होता है। हर चरण एक ऑब्जेक्ट है, जिसकी पहचान उसके type से होती है। ट्रिगर प्रोसीजर का अलग टॉप-लेवल फ़ील्ड है, content का हिस्सा नहीं। API और SDK पेलोड प्रोसीजर के लिए type: "deterministic" इस्तेमाल करते हैं।
Ask
Ask चरण एजेंट को जानकारी मांगने और यूज़र के उपयुक्त जवाब देने तक इंतज़ार करने का निर्देश देता है।
- API प्रकार:
ask instruction: ज़रूरी, खाली न होने वाली स्ट्रिंग।
Tell
Tell चरण एजेंट को अपने शब्दों में एक संदेश जनरेट करने का निर्देश देता है। आगे बढ़ने से पहले यह यूज़र के जवाब का इंतज़ार नहीं करता।
- API प्रकार:
tell instruction: ज़रूरी, खाली न होने वाली स्ट्रिंग।
Say
Say चरण दिए गए टेक्स्ट को जैसा लिखा है वैसा ही बोलता है, फिर आगे बढ़ता है। एजेंट की हर अतिरिक्त समर्थित भाषा के लिए भाषा कोड के आधार पर एक सटीक संदेश देने के लिए message_translations दें।
- API प्रकार:
say message: ज़रूरी, खाली न होने वाली स्ट्रिंग।message_translations: भाषा कोड को{ "value": "..." }से मैप करने वाला वैकल्पिक ऑब्जेक्ट।
If, else if और else
If चरण में एक या अधिक क्रमबद्ध कंडीशनल आर्म होते हैं। पहला मेल खाने वाला आर्म चलता है। वैकल्पिक fallback ऐरे Else आर्म है।
- API प्रकार:
branch branches: ज़रूरी, कंडीशनल आर्म की खाली न होने वाली सूची।fallback: Else चरणों की वैकल्पिक सूची।- हर आर्म के लिए
conditionऔर खाली न होने वालीstepsसूची ज़रूरी है।
यह if/else-if/else की तरह काम करता है:
- शर्तों का क्रम से मूल्यांकन होता है।
- पहला मेल खाने वाला आर्म चलता है।
- कोई शर्त मेल न खाने पर
fallbackचलता है। - आर्म पूरा होने के बाद प्रोसीजर फिर से मुख्य क्रम में जुड़ जाता है।
ऊपर का उदाहरण टेक्स्ट कंडीशन इस्तेमाल करता है, जिसका मॉडल सामान्य भाषा में मूल्यांकन करता है। कंडीशन डायनामिक वेरिएबल के एक्सप्रेशन भी हो सकती हैं:
एक एक्सप्रेशन कंडीशन डायनामिक वेरिएबल की जांच करती है, जिन्हें टूल रिज़ल्ट से भरा जाता है या बातचीत शुरू होने पर सेट किया जाता है। यह यूज़र का सबसे हालिया जवाब नहीं पढ़ सकती। यूज़र की बात के आधार पर ब्रांच करने के लिए टेक्स्ट कंडीशन इस्तेमाल करें।
एक If चरण के सभी आर्म में एक ही कंडीशन प्रकार होना चाहिए: llm या expression।
Tool
Tool चरण किसी खास टूल को कॉल करता है।
- API प्रकार:
tool_call tool_id: ज़रूरी, खाली न होने वाली टूल ID। टूल एजेंट से अटैच होना चाहिए।tool_name: टूल से मेल खाने वाला ज़रूरी टूल नाम।instruction: टूल को कॉल करने का तरीका बताने वाला वैकल्पिक निर्देश।schema_overrides: टूल के पैरामीटर के लिए वैकल्पिक तय वैल्यू।on_failure: वैकल्पिक विफलता हैंडलर।
तय पैरामीटर वैल्यू
जब किसी पैरामीटर की वैल्यू हमेशा एक खास होनी चाहिए, तब schema_overrides इस्तेमाल करें। मॉडल ओवरराइड किए गए पैरामीटर को नहीं देखता और न ही चुनता है। की टूल के स्कीमा में पैरामीटर पाथ होती हैं; हर वैल्यू एक स्रोत बताती है:
विफलता हैंडलिंग
on_failure के बिना, विफल टूल कॉल बातचीत समाप्त कर देता है। इसके बजाय रिकवरी चरण चलाने के लिए on_failure जोड़ें।
fallback: टूल विफल होने पर चलने वाले चरणों की ज़रूरी, खाली न होने वाली सूची।branches: कंडीशनल विफलता हैंडलिंग के लिए आरक्षित। इसे खाली छोड़ें।
विफलता हैंडलर में Ask, Tell, Say, Sub-procedure, System tool और Retry चरण हो सकते हैं। इसमें Tool या If चरण नहीं हो सकते। हैंडलर चलने के बाद प्रोसीजर Tool चरण के बाद वाले चरण के साथ जारी रहता है।
Retry
Retry चरण उस विफलता हैंडलर को फिर से चलाता है जिसमें वह मौजूद है, जिसमें टूल कॉल भी शामिल है। हर प्रयास टूल को फिर से कॉल करता है और, अगर वह फिर विफल हो जाता है, तो हैंडलर के हर चरण को फिर से चलाता है। प्रयास समाप्त होने पर बातचीत खत्म हो जाती है।
- API प्रकार:
retry max_retries: 1 से 3 तक का वैकल्पिक पूर्णांक। डिफ़ॉल्ट 1 है।- वैल्यू मूल टूल कॉल के बाद के प्रयासों की गिनती करती है।
- Retry सिर्फ़
on_failureके अंदर मान्य है। - Retry अपने विफलता हैंडलर का अंतिम चरण होना चाहिए, क्योंकि बाद के चरण पहुंच से बाहर होंगे।
Sub-procedure
Sub-procedure चरण दूसरा स्ट्रक्चर्ड प्रोसीजर चलाता है। उस प्रोसीजर के चरण पूरे होने पर निष्पादन Sub-procedure चरण के बाद वाले चरण पर लौटता है।
- API प्रकार:
sub_procedure procedure_id: ज़रूरी, खाली न होने वाली प्रोसीजर ID।- टारगेट उसी एजेंट पर मौजूद होना चाहिए।
- टारगेट स्ट्रक्चर्ड प्रोसीजर होना चाहिए।
- कोई प्रोसीजर खुद को कॉल नहीं कर सकता।
System tool
System tool चरण बिल्ट-इन सिस्टम कार्रवाई करता है।
- API प्रकार:
system_tool system_tool_name: ज़रूरी सिस्टम-टूल नाम।- फ़िलहाल सिर्फ़
end_callसमर्थित है। बाद में और सिस्टम टूल जोड़े जा सकते हैं। - क्योंकि
end_callअंतिम है, यह अपने कंटेनिंग क्रम, आर्म या विफलता हैंडलर का अंतिम चरण होना चाहिए।
वैलिडेशन नियम
एजेंट को पब्लिश करने या एजेंट ड्राफ़्ट सेव करने पर, इनमें से किसी भी नियम को तोड़ने वाला स्ट्रक्चर्ड प्रोसीजर अस्वीकार हो जाता है। त्रुटि उसके पाथ से समस्या वाले चरण का नाम बताती है।
- दो If चरण एक के बाद एक नहीं रखे जा सकते।
- If चरण नेस्ट नहीं किए जा सकते।
- एक्सप्रेशन कंडीशन वाला If चरण सीधे Ask चरण के बाद नहीं हो सकता।
- एक If चरण की सभी कंडीशन एक ही प्रकार की होनी चाहिए:
llmयाexpression। - Retry सिर्फ़
on_failureके अंदर हो सकता है और वहीं का आखिरी चरण होना चाहिए। end_callजिस भी सूची में हो, उसका आखिरी चरण होना चाहिए।- विफलता हैंडलर के
fallbackमें कम से कम एक चरण होना चाहिए। - Sub-procedure को उसी एजेंट के किसी मौजूदा स्ट्रक्चर्ड प्रोसीजर की ओर पॉइंट करना चाहिए, खुद की ओर नहीं।
tool_idएजेंट का टूल होना चाहिए,tool_nameमेल खाना चाहिए औरschema_overridesटूल के स्कीमा से मेल खाना चाहिए।stepsसूची, हरinstructionऔर हरmessageखाली नहीं होने चाहिए।
इनमें से कोई नियम लागू होने पर प्रोसीजर को फिर से व्यवस्थित करने का तरीका जानने के लिए सर्वोत्तम तरीके देखें।
पूरा API उदाहरण
यह उदाहरण शिपमेंट स्टेटस के आधार पर ऑर्डर रद्द करना संभालता है। यह एक टूल पैरामीटर तय करता है, विफल टूल कॉल से रिकवर करता है, दूसरे स्ट्रक्चर्ड प्रोसीजर को कॉल करता है और फिर कॉल समाप्त करता है।
स्ट्रक्चर्ड प्रोसीजर कैसे चलता है
स्ट्रक्चर्ड प्रोसीजर के चरणों को एजेंट द्वारा निष्पादित किए जाने वाले रूप में बदलने को कंपाइल करना कहते हैं। जब आप पब्लिश करते हैं, तो प्लेटफ़ॉर्म हर स्ट्रक्चर्ड प्रोसीजर को कंपाइल करता है; आपको खुद कुछ कंपाइल नहीं करना होता। कंपाइल किया गया परिणाम फ़िलहाल Workflow टैब में सिर्फ़ पढ़ने योग्य नोड्स के रूप में दिखता है।
जब यूज़र का अनुरोध किसी प्रोसीजर के ट्रिगर से मेल खाता है, तो एजेंट उस प्रोसीजर में प्रवेश करता है और उसके चरण क्रम से चलाता है। स्ट्रक्चर्ड प्रोसीजर के अंदर एजेंट हर चरण पर अलग से ध्यान देता है। अंत तक पहुंचने पर यह बाकी बातचीत में लौट आता है।
नीचे दिए गए नियम बताते हैं कि रनटाइम पर चरण कैसे काम करते हैं।
सिर्फ़ Ask यूज़र के लिए रुकता है
Ask के अलावा हर चरण तुरंत चलता है और नियंत्रण उसी टर्न में अगले चरण पर बढ़ जाता है। Tell या Say चरण
अपना संदेश देता है और आगे बढ़ता है। Ask के अलावा ऐसा कोई चरण नहीं है जो बातचीत को रोकता हो,
और ऐसा कोई चरण नहीं है जो मौजूदा टर्न समाप्त करता हो। अगर आपको यूज़र का इनपुट चाहिए, तो Ask चरण
इस्तेमाल करें। अगर बातचीत समाप्त करनी है, तो end_call सिस्टम टूल इस्तेमाल करें।
प्रोसीजर के अंत तक पहुंचने से टर्न समाप्त नहीं होता
आखिरी चरण पूरा होने पर प्रोसीजर समाप्त हो जाता है और एजेंट खुले टर्न के साथ बाकी बातचीत में लौटता है, इसलिए वह और बोल सकता है। सब-प्रोसीजर पूरा होने पर नियंत्रण उसे कॉल करने वाले प्रोसीजर के अगले चरण पर लौटता है।
Tool चरण सिर्फ़ सफलता और विफलता में अंतर करते हैं
Tool चरण स्टेटस कोड या रिस्पॉन्स बॉडी के आधार पर ब्रांच नहीं कर सकता। टूल सफल होने पर प्रोसीजर जारी रहता है। अगर यह विफल हो और चरण में कोई विफलता हैंडलर न हो, तो बातचीत समाप्त हो जाती है। अगर हैंडलर हो, तो उसके चरण चलते हैं और प्रोसीजर अगले चरण पर जारी रहता है। हैंडलर के अंदर Retry टूल को फिर चलाता है और, अगर यह दोबारा विफल हो, तो हैंडलर के हर चरण को तब तक चलाता है, जब तक टूल सफल न हो जाए या प्रयास समाप्त न हो जाएं। प्रयास समाप्त होने पर बातचीत खत्म हो जाती है।
कुछ भी मेल न खाने पर If चरण आगे बढ़ जाते हैं
शर्तों का क्रम से मूल्यांकन होता है और पहला मेल चलता है। कुछ भी मेल न खाने पर Else आर्म चलता है। अगर Else नहीं है और कुछ भी मेल नहीं खाता, तो प्रोसीजर If के बाद वाले चरण के साथ जारी रहता है। अनहैंडल किया गया केस त्रुटि नहीं है।
If आर्म स्टेट आगे नहीं ले जाते
If आर्म के अंदर तय की गई कोई बात बाद के चरणों में याद नहीं रखी जाती। अगर किसी आर्म में सीखी गई बात बाद में चाहिए, तो उसे टूल कॉल या डायनामिक वेरिएबल से स्पष्ट रूप से सेव करें।
Ask, Tell और Say चरणों में टूल नहीं होते
सिर्फ़ Tool चरण ही टूल कॉल कर सकते हैं। Ask, Tell या Say चरण को टूल कॉल न करने के लिए बताने की ज़रूरत नहीं है; वे ऐसा कर ही नहीं सकते।
स्ट्रक्चर्ड प्रोसीजर मैनेज करें
डैशबोर्ड से बनाएं
CLI से मैनेज करें
API से मैनेज करें
डैशबोर्ड में अपना एजेंट खोलें, फिर Procedures चुनें। स्ट्रक्चर्ड प्रोसीजर बनाने के लिए + इस्तेमाल करें। ट्रिगर जोड़ें, हर चरण के लिए एक प्रकार चुनें और एजेंट के बदलाव पब्लिश करें।
एडिट करते समय डैशबोर्ड स्ट्रक्चर्ड प्रोसीजर को वैलिडेट करता है। अगर कोई प्रोसीजर वैलिडेशन नियम तोड़ता है, तो Publish बटन त्रुटि स्थिति दिखाता है, Procedures टैब में त्रुटि बैज दिखता है और प्रोसीजर ठीक होने तक प्रीव्यू शुरू नहीं हो सकता। कौन सा प्रोसीजर और चरण प्रभावित है, यह देखने के लिए त्रुटि संकेतक चुनें।


सर्वोत्तम तरीके
हर स्टेप टाइप पहले से अपना व्यवहार लागू करता है, इसलिए आपको शायद ही इसे अलग से बताने की ज़रूरत पड़ती है। हर स्टेप का उद्देश्य लिखें और बाकी काम स्टेप टाइप पर छोड़ दें। नीचे दिए गए निर्देश उन मामलों के लिए हैं जिन्हें सही रखना ज़रूरी है।
किसी स्ट्रक्चर्ड प्रोसिजर को टेस्ट करने के लिए, प्रोसिजर को बेहतर बनाना देखें।
स्टेप टाइप चुनना
हर Ask स्टेप में एक सवाल पूछें
Ask स्टेप एक जवाब का इंतज़ार करता है। अगर आप एक निर्देश में कई सवाल जोड़ देते हैं, तो एजेंट कुछ सवाल छोड़ सकता है या उन्हें मिला सकता है। हर जानकारी के लिए एक Ask इस्तेमाल करें।
बयानों के लिए Tell और सवालों के लिए Ask इस्तेमाल करें
Tell स्टेप अपना संदेश देता है और बिना इंतज़ार किए आगे बढ़ जाता है। सवाल के रूप में लिखा गया Tell कभी जवाब नहीं पाता। अगर किसी स्टेप को यूज़र से जवाब चाहिए, तो वह Ask है।
जब सिर्फ सवाल पर्याप्त न हो, तो Ask के लिए स्पष्ट एग्ज़िट कंडीशन दें
Ask स्टेप उपयुक्त जवाब मिलते ही आगे बढ़ जाता है। अगर सवाल से यह स्पष्ट नहीं है कि किसे जवाब माना जाएगा, तो इसे निर्देश में बताएं, उदाहरण के लिए _ऑर्डर ID पूछें; मान्य ID आठ अंकों की होती है _।
वाक्यांश के लिए Tell, सटीक शब्दों के लिए Say चुनें
जब एजेंट को खुद संदेश बनाना हो तो Tell स्टेप इस्तेमाल करें, और जब शब्द बिल्कुल वही या अनुवादित होने चाहिए हों तो Say स्टेप इस्तेमाल करें। दोनों ठीक एक संदेश देते हैं, इसलिए किसी स्टेप को एक ही संदेश भेजने का निर्देश देने की ज़रूरत नहीं है।
नॉन-टूल स्टेप्स को टूल्स से बचने के लिए न कहें
Ask, Tell और Say स्टेप्स टूल्स को कॉल नहीं कर सकते। इनमें कोई टूल कॉल न करें लिखने से व्यवहार बदले बिना निर्देश में अनावश्यक जानकारी जुड़ती है।
प्रोसिजर की संरचना बनाना
दो If स्टेप्स के बीच अनावश्यक स्टेप न जोड़ें
दो If स्टेप्स को एक के बाद एक नहीं रखा जा सकता। नियम पूरा करने के लिए उनके बीच कोई असंबंधित Tell या Say जोड़ने से एजेंट वह बात कह सकता है जो उसे नहीं कहनी चाहिए। इसके बजाय, दूसरे निर्णय को पहले If में अतिरिक्त Else if आर्म्स के रूप में जोड़ें या उसे किसी सब-प्रोसिजर में ले जाएं।
नेस्टेड निर्णयों को सब-प्रोसिजर में रखें
If स्टेप्स को नेस्ट नहीं किया जा सकता। जब एक निर्णय दूसरे पर निर्भर हो, तो अंदरूनी निर्णय को उसके अपने स्ट्रक्चर्ड प्रोसिजर में रखें और जिस आर्म को इसकी ज़रूरत हो, वहां से Sub-procedure स्टेप के जरिए उसे कॉल करें।
जब 'इनमें से कोई नहीं' मायने रखता हो, तो Else जोड़ें
बिना Else वाला If स्टेप कुछ भी मैच न होने पर अगले स्टेप पर चला जाता है। अगर न मिलने वाले मामले का व्यवहार अलग होना चाहिए, तो उसके लिए Else आर्म जोड़ें।
बाद के स्टेप को ज़रूरी हर चीज़ सेव करें
If आर्म के अंदर लिए गए निर्णय बाद में याद नहीं रखे जाते। अगर कोई बाद का स्टेप आर्म में मिली जानकारी पर निर्भर है, तो उसे आर्म के अंदर टूल कॉल या डायनामिक वेरिएबल से रिकॉर्ड करें।
एक्सप्रेशन कंडीशन्स को उन्हें भरने वाले टूल के बाद रखें
एक्सप्रेशन कंडीशन्स डायनामिक वेरिएबल्स को टेस्ट करती हैं। इन्हें इस्तेमाल करने वाला If स्टेप, उन वेरिएबल्स को सेट करने वाले Tool स्टेप के ठीक बाद रखें। यूज़र के कहे आधार पर ब्रांच करने के लिए टेक्स्ट कंडीशन इस्तेमाल करें।
साझा स्टेप्स को सब-प्रोसिजर में निकालें
जब कई स्ट्रक्चर्ड प्रोसिजर एक ही क्रम साझा करते हैं, जैसे किसी इंसान को एस्केलेट करना, तो उसे खाली ट्रिगर वाले एक स्ट्रक्चर्ड प्रोसिजर में रखें और हर जगह से उसे कॉल करें। कॉपी किए गए क्रम समय के साथ अलग हो जाते हैं।
टूल्स के साथ काम करना
Tool स्टेप को उसके निर्देश से नहीं, If से नियंत्रित करें
Tool स्टेप हमेशा अपना टूल कॉल करता है। निर्देश में लिखी कंडीशन, जैसे _अगर टिकट पर पहले से टैग लगा है तो इसे छोड़ दें _, कॉल को रोक नहीं सकती। अगर कॉल हर बार नहीं होनी चाहिए, तो Tool स्टेप से पहले If स्टेप में कंडीशन रखें।
पैरामीटर वैल्यू का वर्णन करने के बजाय उन्हें तय करें
जब किसी पैरामीटर को हमेशा एक खास वैल्यू लेनी हो, तो उसे
schema_overrides में constant ओवरराइड से सेट करें। स्टेटस को हमेशा pending पर सेट करें जैसा निर्देश मॉडल से
पालन करने को कहता है; ओवरराइड लागू होता है और उसे छोड़ा नहीं जा सकता।
हर Tool स्टेप के लिए फेल्योर हैंडलर दें
on_failure के बिना, कोई भी टूल फेल होने पर बातचीत खत्म हो जाती है। ऐसा हैंडलर जोड़ें जो यूज़र को
बताए कि क्या हुआ और फिर दोबारा कोशिश करे, एस्केलेट करे या आगे बढ़े।
Tool स्टेप्स को सिर्फ टूल कॉल तक सीमित रखें
Tool स्टेप सिर्फ टूल चलाता है; इस दौरान एजेंट बोल नहीं सकता या कोई निर्णय नहीं ले सकता। यूज़र से बात करने के लिए या टूल के लौटाए परिणाम के आधार पर ब्रांच करने के लिए, उसे Tool स्टेप से पहले या बाद के अलग स्टेप में रखें।
निर्देश लिखना
सिर्फ मौजूदा स्टेप का वर्णन करें
प्रोसिजर तय करता है कि आगे क्या चलेगा, और मौजूदा स्टेप चलाते समय एजेंट को बाद के स्टेप्स की जानकारी नहीं होती। क्रम के लिए स्टेप ऑर्डर को काम करने दें।
गद्य से टर्न खत्म करने की कोशिश न करें
स्टेप निर्देशों में लिखे वाक्य, जैसे यह इस टर्न का आखिरी संदेश है,
एजेंट से ऐसी सीमा लागू करने को कहते हैं जो प्लेटफ़ॉर्म नहीं करता। यूज़र का इंतज़ार करने के लिए Ask स्टेप या
बातचीत खत्म करने के लिए end_call सिस्टम टूल इस्तेमाल करें।
ग्लोबल नियम सिस्टम प्रॉम्प्ट में रखें
टोन, फ़ॉर्मैटिंग, साइन-ऑफ और इनकार की नीतियां सिस्टम प्रॉम्प्ट में होती हैं। स्टेप निर्देश में सिर्फ वही लिखें जो उस स्टेप के लिए खास हो।
प्रोसिजर को संयोजित करना
प्रोसिजर को संयोजित करने के सामान्य निर्देश स्ट्रक्चर्ड प्रोसिजर पर भी लागू होते हैं; फ्री-फॉर्म प्रोसिजर पेज पर प्रोसिजर को संयोजित करना देखें।
एक पैटर्न खास तौर पर टाइप्स को मिलाने के लिए है: फ्री-फॉर्म प्रोसिजर किसी स्ट्रक्चर्ड प्रोसिजर को रेफ़र कर सकता है। खुले तौर पर संभालने वाले काम फ्री-फॉर्म प्रोसिजर में रखें और वे हिस्से जिन्हें हर बार एक ही तरीके से चलना चाहिए, जैसे पहचान की पुष्टि या एस्केलेशन, स्ट्रक्चर्ड प्रोसिजर को सौंपें।
सीमाएं
- If स्टेप्स को नेस्ट नहीं किया जा सकता और दो If स्टेप्स को एक के बाद एक नहीं रखा जा सकता।
- केवल
end_callसिस्टम टूल समर्थित है। - स्ट्रक्चर्ड प्रोसिजर नॉलेज बेस डॉक्यूमेंट्स को रेफ़र नहीं कर सकते।
- प्रोसिजर पूरा होने पर मौजूदा टर्न खत्म करने का कोई तरीका नहीं है; एजेंट टर्न खुला रखता है और बोलना जारी रख सकता है।
- डैशबोर्ड में किसी खास वर्कफ़्लो नोड से स्ट्रक्चर्ड प्रोसिजर शुरू नहीं किया जा सकता।
- प्रोसिजर शुरू करने से लेटेंसी बढ़ती है: एजेंट इसमें प्रवेश करने के लिए टूल कॉल करता है और फिर जनरेटेड वर्कफ़्लो से आगे बढ़ता है।
मॉडल प्रोवाइडर सपोर्ट
स्ट्रक्चर्ड प्रोसिजर सब-प्रोसिजर में प्रवेश करते समय और प्रोसिजर पूरा करते समय इंटरनल टूल कॉल्स को फ़ोर्स करते हैं। प्रमुख OpenAI, Anthropic, Gemini और Grok मॉडल फैमिलीज़ फ़ोर्स्ड टूल चॉइस को सपोर्ट करती हैं। अन्य मॉडल या कस्टम प्रोवाइडर इसकी गारंटी नहीं दे सकते, जिससे सब-प्रोसिजर ट्रांज़िशन या प्रोसिजर पूरा होना कम भरोसेमंद हो सकता है। किसी दूसरे मॉडल प्रोवाइडर का इस्तेमाल करते समय फ़ोर्स्ड टूल-चॉइस सपोर्ट की पुष्टि करें।
कंटेंट साइज़ सीमा और स्ट्रक्चर्ड प्रोसिजर फ्री-फॉर्म प्रोसिजर से कैसे अलग हैं, सहित सभी प्रोसिजर पर लागू सीमाओं के लिए प्रोसिजर देखें।