Phase 13: Tools & Protocols

उपकरण इंटरफ़ेस एजेंटों को संरचित I/O की आवश्यकता क्यों है

एक भाषा मॉडल टोकन उत्पन्न करता है। एक कार्यक्रम कार्यों को लेता है। इन दोनों के बीच अंतर उपकरण इंटरफ़ेस हैः एक अनुबंध जो मॉडल को एक कार्रवाई का अनुरोध करने और मेजबान को इसे निष्पादित करने की अनुमति देता है। प्रत्येक 2026 स्टैक फ़ंक्शन OpenAI, एंथ्रोपिक और मिथुन पर कॉल करता है; MCP का tools/call; A2A के कार्य भाग एक ही चार चरण लूप का एक अलग एन्कोडिंग है। यह पाठ लूप का नाम देता है और इसे चलाने के लिए न्यूनतम मशीनरी दिखाता है।

Type: Learn

Languages: Python (stdlib, no LLM)

Prerequisites: Phase 11 (LLM completion APIs)

Time: ~45 minutes

सीखने के लक्ष्य

  • यह समझाएं कि एक LLM जो केवल पाठ उत्पन्न कर सकता है, वह स्वयं वास्तविक दुनिया के खिलाफ कार्रवाई क्यों नहीं कर सकता है।
  • चार चरणों के उपकरण-कॉल लूप (वर्णन → निर्णय → निष्पादन → अवलोकन) को खींचें और प्रत्येक चरण के मालिक का नाम दें।
  • तीन भागों के रूप में उपकरण विवरण लिखेंः नाम, JSON स्कीमा इनपुट, और एक निर्धारक निष्पादक फ़ंक्शन।
  • शुद्ध और साइड इफेक्ट वाले उपकरण में अंतर करें और बताएं कि सुरक्षा के लिए विभाजन क्यों महत्वपूर्ण है।

समस्या

एक एलएलएम अगले टोकन पर एक संभावना वितरण जारी करता है। यह पूरी आउटपुट सतह है। यदि आप एक चैट मॉडल से पूछते हैं "इस समय बेंगलुरु में मौसम क्या है", तो यह एक व्यवहार्य वाक्य लिख सकता है, लेकिन यह मौसम एपीआई में डायल नहीं कर सकता है। वाक्य संयोग से सही हो सकता है या तीन दिन पुराना हो सकता है।

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

इस अनुबंध का पहला संस्करण जून 2023 में ओपनएआई के "फंक्शन" पैरामीटर के रूप में भेजा गया था।tool_useक्लॉड 2.1 में ब्लॉक। जुड़वां जोड़ा functionDeclarationsकुछ महीने बाद. प्रत्येक प्रदाता अब एक ही आकार का खुलासा करता हैः एक JSON-Schema-typed tool list में, एक JSON-payload tool कॉल आउट। मॉडल कॉन्टेक्स्ट प्रोटोकॉल (नवंबर 2024) ने अनुबंध को सामान्य बनाया ताकि प्रत्येक मॉडल को एक टूल रजिस्ट्री की सेवा की जा सके। ए 2 ए (अप्रैल 2026, v1.0) ने एजेंट-टू-एजेंट प्रतिनिधि के लिए एक ही आदिम परत बनाई।

चार चरण लूप इन सब के नीचे अपरिवर्तनीय है. चरण 13 में बाकी सब कुछ एक परिष्करण है.

अवधारणा

चरण 1: वर्णन करें

मेजबान प्रत्येक उपकरण को तीन क्षेत्रों के साथ घोषित करता है।

  • Name.एक स्थिर, मशीन-पठनीय पहचानकर्ता।get_weather, "मौसम की बात" नहीं।
  • Description.एक पैराग्राफ का प्राकृतिक भाषा संक्षिप्त विवरण। "जब उपयोगकर्ता किसी विशिष्ट शहर के वर्तमान स्थितियों के बारे में पूछता है, तो इसका उपयोग करें। ऐतिहासिक डेटा के लिए उपयोग न करें।"
  • Input schema.एक JSON Schema ऑब्जेक्ट (ड्राफ्ट 2020-12) जो टूल के तर्कों का वर्णन करता है।

आधुनिक प्रदाता इन घोषणाओं को प्रदाता-विशिष्ट टेम्पलेट का उपयोग करके सिस्टम प्रॉम्प्ट में क्रमबद्ध करते हैं, इसलिए आप कॉल करने वाले के रूप में केवल संरचित फॉर्म से निपटते हैं।

चरण दो: निर्णय लें

उपयोगकर्ता के संदेश और उपलब्ध उपकरणों को देखते हुए, मॉडल तीन व्यवहारों में से एक का चयन करता है।

  1. Answer directlyकोई उपकरण कॉल नहीं।
  2. Call one or more tools.संरचित कॉल ऑब्जेक्ट्स जारी करें।parallel_tool_calls: true(ओपनएआई और मिथुन पर डिफ़ॉल्ट, एंथ्रोपिक पर ऑप्ट-इन) मॉडल एक मोड़ में कई कॉल जारी कर सकता है।
  3. Refuse.सख्त मोड में संरचित आउटपुट एक टाइप किया जा सकता हैrefusalकॉल के बजाय ब्लॉक।

एक उपकरण कॉल उपयोगिता लोड में तीन स्थिर क्षेत्रों हैः एक कॉल id, एक उपकरण name, और एक JSON argumentsआईडी मौजूद है ताकि मेजबान बाद के परिणाम को विशिष्ट कॉल के साथ सहसंबंधित कर सके, जो समानांतर कॉल के क्रम से बाहर आने पर मायने रखता है।

चरण 3: निष्पादित करें

मेजबान कॉल प्राप्त करता है, घोषित योजना के खिलाफ तर्कों को मान्य करता है, और निष्पादक चलाता है। अमान्य तर्क का अर्थ है कि मॉडल ने एक क्षेत्र का भ्रम पैदा किया या गलत प्रकार का उपयोग किया कमजोर मॉडल पर बहुत आम विफलता मोड। उत्पादन मेजबान अवैध तर्क पर तीन चीजों में से एक करते हैंः जल्दी विफलता और मॉडल में त्रुटि का पृष्ठ, एक प्रतिबंधित पार्सर के साथ JSON की मरम्मत, या प्रम्प्ट में शामिल सत्यापन त्रुटि के साथ मॉडल को फिर से प्रयास करें।

निष्पादक स्वयं साधारण कोड है। पायथन, टाइपस्क्रिप्ट, एक खोल कमांड, एक डेटाबेस क्वेरी। यह एक परिणाम उत्पन्न करता है, जो आमतौर पर एक स्ट्रिंग है लेकिन किसी भी JSON मान या एक संरचित सामग्री ब्लॉक (MCP में पाठ, छवि या संसाधन संदर्भ) हो सकता है। परिणाम को क्रमबद्ध किया जाना चाहिए।

चौथा चरण: अवलोकन

मेजबान वार्तालाप के लिए उपकरण परिणाम जोड़ता है (एक toolमेल से भूमिका संदेश id) और मॉडल को फिर से बुलाता है। मॉडल में अब संदर्भ में उपकरण आउटपुट है और अंतिम उत्तर उत्पन्न कर सकता है या अधिक कॉल का अनुरोध कर सकता है। यह तब तक जारी रहता है जब तक मॉडल कॉल जारी करना बंद नहीं करता है या होस्ट पुनरावृत्ति की संख्या पर सुरक्षा सीमा तक नहीं पहुंचता है।

विश्वास टूट गया

उपकरण दो स्वादों में आते हैं जो सुरक्षा के लिए महत्वपूर्ण हैं।

  • Pure.केवल पढ़ने के लिए, निर्धारक, कोई दुष्प्रभाव नहीं।get_weather,search_docs,get_current_time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  • Consequential.राज्य में उत्परिवर्तन, पैसा खर्च करता है, उपयोगकर्ता डेटा को छूता है। send_email,delete_file,execute_trade. . यह बंद होना चाहिए.

मेटा के 2026 के एजेंट सुरक्षा के लिए "दो नियम" का कहना है कि एक एकल मोड़ में अधिकतम दो शामिल हो सकते हैंः अविश्वसनीय इनपुट, संवेदनशील डेटा, परिणामी कार्रवाई। टूल इंटरफ़ेस वह है जहां आप कॉल को अस्वीकार करके, उपयोगकर्ता पुष्टि की आवश्यकता करके या स्कोप को बढ़ाते हुए उस नियम को लागू करते हैं। पूर्ण सुरक्षा अध्याय के लिए चरण 13 · 15 और एजेंट-स्तरीय अनुमति नीतियों के लिए चरण 14 · 09 देखें।

जहां लूप रहता है

ContextWho describesWho decidesWho executes
Single-turn function calling (OpenAI/Anthropic/Gemini)App developerLLMApp developer
MCPMCP serverLLM via MCP clientMCP server
A2AAgent Card publisherCalling agentCalled agent
Web browser (function-calling agent)Browser extension / WebMCPLLMBrowser runtime

हर जगह, एक ही चार कदम। स्तंभ नाम बदलते हैं; संरचना नहीं है।

क्यों नहीं सिर्फ मॉडल को JSON उत्सर्जन करने के लिए प्रेरित करते हैं?

"JSON में उत्तर देने के लिए मॉडल से पूछें" पूर्व-कार्यात्मक कॉल पैटर्न था। यह सीमा मॉडल पर ~ 5 से 15 प्रतिशत समय में विफल रहता है और छोटे मॉडल पर बहुत अधिक। विफलता मोड में गायब ब्रैकेट, पीछे के अल्पविराम, भ्रामक क्षेत्रों और गलत प्रकार शामिल हैं। फिर आपको JSON मरम्मत पास, एक पुनः प्रयास या एक प्रतिबंधित डिकोडर की आवश्यकता होती है।

तीन कारणों से मूल कार्य कॉल बेहतर है। सबसे पहले, प्रदाता मॉडल को सटीक कॉल आकार पर अंत-से-अंत प्रशिक्षण देता है, इसलिए कठोर मोड पर मान्य-जेएसओएन दर 98 से 99 प्रतिशत तक बढ़ जाती है। दूसरा, कॉल का उपयोग लोड अपने स्वयं के प्रोटोकॉल स्लॉट में बैठता है, मुक्त पाठ के अंदर नहीं इसलिए एक उपकरण कॉल कभी भी उपयोगकर्ता के दृश्य जवाब में लीक नहीं होता है। तीसरा, प्रदाताओं को प्रतिबंधित डिकोडिंग (OpenAI के सख्त मोड, एंथ्रोपिक के tool_use, जुड़वां के responseSchema) आउटपुट की वैधता की गारंटी है।

चरण 13 · 02 तीन प्रदाता एपीआई को एक साथ चलाता है। चरण 13 · 04 संरचित आउटपुट पर गहराई से जाता है।

सर्किट ब्रेकर

लूप समाप्त हो जाता है जब मॉडल कॉल जारी करना बंद कर देता है या होस्ट अधिकतम मोड़ गिनती पर पहुंचता है। उत्पादन होस्ट इसे 5 से 20 मोड़ के बीच सेट करते हैं। इसके अलावा, आप लगभग निश्चित रूप से एक लूप में हैं जो मॉडल बाहर नहीं निकल सकता है। क्लाउड कोड डिफ़ॉल्ट रूप से 20 तक पहुंचता है; ओपनएआई असिस्टेंट्स 10 तक पहुंचता है; कर्सर का एजेंट मोड 25 तक पहुंचता है।

विकल्प असीमित लूप हर छह महीने में दिखाई देता है "एजेंट ने रातोंरात एपीआई कॉल में $ 400 खर्च किए" पोस्ट-मॉर्टम। बिना सीमा के जहाज न करें।

चरण 14 · 12 में त्रुटि पुनर्प्राप्ती और आत्म-सफाई को गहराई से कवर किया गया है; चरण 17 में उत्पादन दर की सीमाएं शामिल हैं।

जहां से चरण 13 यहाँ से चला जाता है

  • पाठ 02 से 05 तक प्रदाता स्तर के उपकरण-कॉल सतह को पॉलिश करें।
  • पाठ 06 से 14 तक एमसीपी में लूप को सामान्य बनाते हैं।
  • पाठ 15 से 18 शत्रुतापूर्ण सर्वर, विरोधी उपयोगकर्ताओं और गैर-मान्यता प्राप्त रिमोट ऑथ सतहों के खिलाफ लूप का बचाव करते हैं।
  • पाठ 19 से 22 एजेंट-एजेंट सहयोग, अवलोकन, रूटिंग और पैकेजिंग के लिए पैटर्न का विस्तार करते हैं।
  • सबक 23 हर आदिम का उपयोग करके एक पूर्ण पारिस्थितिकी तंत्र जहाजों।

हर शेष पाठ इस चार चरण लूप का एक विस्तार है. इसे याद रखें अपरिवर्तनीय के रूप में।

इसका प्रयोग करें

code/main.pyएक नकली "निर्णायक" फ़ंक्शन उपयोगकर्ता संदेश पर पैटर्न-मैचिंग द्वारा मॉडल का अनुकरण करता है; निष्पादक, स्कीमा सत्यापनकर्ता और अवलोकन-चरण हर्नस वास्तविक हैं। मुद्रण योग्य मध्यवर्ती राज्य के साथ पूर्ण अनुरोध / प्रतिक्रिया कोरियोग्राफी देखने के लिए इसे चलाएं, फिर बाद के पाठ में किसी भी वास्तविक प्रदाता के साथ नकली निर्णयकर्ता को प्रतिस्थापित करें।

क्या देखना हैः

  • टूल रजिस्ट्री में प्रत्येक टूल पर तीन फ़ील्ड होते हैंः नाम, विवरण, स्कीमा और एक निष्पादक संदर्भ।
  • सत्यापनकर्ता केवल stdlib में लिखे गए न्यूनतम JSON योजना उपसमूह (प्रकार, आवश्यक, enum, min/max) है। चरण 13 · 04 एक अधिक पूर्ण जहाज करता है।
  • उत्पादन एजेंटों को इस तरह के सर्किट ब्रेकर की जरूरत है।

इसे भेजें

यह सबक हमें फल देता हैoutputs/skill-tool-interface-reviewer.md. एक मसौदा उपकरण परिभाषा (नाम + विवरण + योजना + निष्पादक रूपरेखा) को देखते हुए, कौशल इसे लूप फिटनेस के लिए ऑडिट करता हैः क्या नाम मशीन-स्थिर है, क्या विवरण एक पूर्ण उपयोग संक्षिप्त है, क्या योजना JSON योजना 2020-12 का सही उपयोग करती है, और क्या शुद्ध बनाम परिणाम वर्गीकरण स्पष्ट है।

व्यायाम

  1. में चौथी उपकरण जोड़ेंcode/main.pyबुलाया गयाget_stock_price(ticker). इसका वर्णन "जब उपयोगकर्ता टिकट द्वारा वर्तमान शेयर मूल्य के लिए पूछता है तो इसका उपयोग करें. ऐतिहासिक कीमतों या बाजार सारांश के लिए उपयोग न करें. " के रूप में लिखें। हर्नस चलाएं और नए उपकरण के टिकट का उल्लेख करने वाले नकली निर्णयकर्ता मार्गों के सवालों की पुष्टि करें।
  1. स्कीम सत्यापनकर्ता तोड़. एक कॉल पारित करें जिसका argumentsऑब्जेक्ट में एक आवश्यक फ़ील्ड गायब है, और निष्पादन से पहले होस्ट को अस्वीकार करने की पुष्टि करें। फिर एक अतिरिक्त अज्ञात फ़ील्ड के साथ कॉल करें। निर्णय लेंः होस्ट को अस्वीकार करना चाहिए या अनदेखा करना चाहिए? सुरक्षा तर्क के साथ अपनी पसंद को सही ठहराना।
  1. हर्नस में प्रत्येक उपकरण को शुद्ध या परिणामी के रूप में वर्गीकृत करें।consequential: trueपंजी प्रविष्टियों पर चिह्नित करें जो इसकी आवश्यकता है, और एक "उपयोगकर्ता के साथ पुष्टि करेगा" लाइन प्रिंट करने के लिए लूप बदलें जब भी एक परिणाम उपकरण चुना जाता है। यह पुष्टि गेट का आकार है जो प्रत्येक उत्पादन होस्ट की आवश्यकता है।
  1. अपने पसंदीदा क्लाइंट (क्लाउड डेस्कटॉप, कर्सर, चैटजीपीटी या कस्टम स्टैक) के लिए उपरोक्त प्रदाता-स्तंभ तालिका के साथ कागज पर चार चरणों का लूप खींचें। चरण 13 · 06 में एमसीपी विशिष्ट संस्करण के साथ क्रॉस-रेफरेंस करें।
  1. OpenAI के फ़ंक्शन कॉल गाइड को ऊपर से नीचे तक पढ़ें। अनुरोध में एक फ़ील्ड की पहचान करें जो यहां प्रस्तुत चार-चरण लूप में नहीं है। यह क्या जोड़ता है और यह आवश्यक होने की बजाय सुविधाजनक क्यों है, समझाएं।

प्रमुख शर्तें

TermWhat people sayWhat it actually means
Tool"A thing the model can call"A triple of name + JSON-Schema-typed input + executor function
Function calling"Native tool use"Provider-level API support for emitting structured tool calls instead of prose
Tool call"The model's request to act"A JSON payload with id, name, arguments emitted by the model
Tool result"What the tool returned"The executor's output, wrapped in a tool role message with matching id
Parallel tool calls"Many calls at once"Multiple call objects in one model turn, independent and orderable by id
Strict mode"Guaranteed JSON"Constrained decoding that forces the model's output to validate against the declared schema
Pure tool"Read-only tool"No side effects; safe to re-run
Consequential tool"Action tool"Mutates external state; requires gate, audit, or user confirmation
Four-step loop"The tool-call cycle"describe → decide → execute → observe
Host"Agent runtime"The program that holds the tool registry, calls the model, and runs the executor

आगे पढ़ना

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.