GPT-5.6 के साथ, हमने Programmatic Tool Calling जारी किया है, जो टूल के उपयोग बढ़ने पर एजेंट टूल्स और मॉडल को फोकस्ड रखने के तरीकों की समीक्षा करने का एक अच्छा समय है।
किसी सपोर्ट एजेंट से पूछें कि ऑर्डर A-104 लेट क्यों है, तो वह ऑर्डर पढ़ सकता है, कैरियर को कॉल कर सकता है, और देरी का कारण बता सकता है। यह एक लूप छुपाता है: मॉडल एक कार्रवाई का अनुरोध करता है, एक रनटाइम इसे निष्पादित करता है, और परिणाम वापस आता है। Built-in tools, MCP, skills, Tool Search, और Programmatic Tool Calling बदलते हैं कि मॉडल क्या देखता है और क्या वापस आता है।
1. Tool Calling 101: मॉडल पूछता है; एप्लिकेशन कार्य करता है
क्लाइंट-स्वामित्व वाले फ़ंक्शन के साथ, मॉडल आपका कोड नहीं चलाता है। यह एक टूल नाम, JSON आर्गुमेंट और कॉल ID लौटाता है। आपका एप्लिकेशन अनुरोध की जाँच करता है, फ़ंक्शन चलाता है, और उसी ID के साथ function_call_output लौटाता है।

क्लाइंट-स्वामित्व वाला टूल लूप: जब तक आपका एप्लिकेशन चरण 3 निष्पादित नहीं करता, तब तक कोई बाहरी कार्रवाई नहीं होती है। Codex में GPT-Image-2 के साथ जनरेट किया गया।
Python में, function_call_output लौटाने से नियंत्रण मॉडल को वापस मिल जाता है:
1import json2from openai import OpenAI34client = OpenAI()56def get_order(order_id): return {"order_id": order_id, "promised_date": "2026-07-13"}78order_tool = {9 "type": "function", "name": "get_order", "strict": True,10 "description": "Return the promised delivery date for an order.",11 "parameters": {12 "type": "object",13 "properties": {"order_id": {"type": "string"}},14 "required": ["order_id"], "additionalProperties": False,15 },16 "output_schema": {17 "type": "object",18 "properties": {19 "order_id": {"type": "string"}, "promised_date": {"type": "string"},20 },21 "required": ["order_id", "promised_date"], "additionalProperties": False,22 },23}2425first = client.responses.create(26 model="gpt-5.6", tools=[order_tool], input="Why is order A-104 late?",27 tool_choice={"type": "function", "name": "get_order"},28)29call = next(item for item in first.output if item.type == "function_call")30result = get_order(**json.loads(call.arguments))3132final = client.responses.create(33 model="gpt-5.6",34 tools=[order_tool],35 input=[*first.output, {36 "type": "function_call_output",37 "call_id": call.call_id,38 "output": json.dumps(result),39 }],40)41print(final.output_text)
हार्नेस इस लूप को तब तक दोहराता है जब तक मॉडल अंतिम संदेश नहीं लौटाता। सख्त स्कीमा आर्गुमेंट को अच्छी तरह से आकार में रखते हैं; निष्पादक अभी भी अनुमतियों की जाँच करता है।
2. टूल निष्पादन विभिन्न स्थानों पर चल सकता है
Built-in tools, जिसमें वेब सर्च, फ़ाइल सर्च और होस्टेड शेल शामिल हैं, OpenAI के इंफ्रास्ट्रक्चर में चल सकते हैं। एक रिमोट MCP सर्वर टूल को दूरस्थ रूप से एक्सपोज़ और चलाता है; Responses इन सर्वरों और OpenAI-अनुरक्षित कनेक्टर्स का समर्थन करता है, डेटा साझा करने से पहले डिफ़ॉल्ट रूप से अनुमोदन मांगता है।
एक skill निर्देशों और फ़ाइलों को बंडल करता है। इसे होस्टेड शेल से अटैच करें और मॉडल इसकी प्रक्रिया का पालन कर सकता है या इसकी स्क्रिप्ट चला सकता है। यह पहले स्किल का नाम, विवरण और पथ देखता है, फिर चयनित होने पर SKILL.md पढ़ता है।
1carrier_mcp = {2 "type": "mcp",3 "server_label": "carrier",4 "server_url": "https://example.com/mcp",5 "allowed_tools": ["track_package"],6 "require_approval": "always",7}8incident_shell = {9 "type": "shell",10 "environment": {11 "type": "container_auto",12 "skills": [{"type": "skill_reference", "skill_id": "skill_..."}],13 },14}1516response = client.responses.create(17 model="gpt-5.6",18 tools=[carrier_mcp, incident_shell],19 input="Investigate why order A-104 is late using the incident skill.",20)
हार्नेस इन सतहों को एकीकृत करता है: MCP रिमोट टूल को एक्सपोज़ करता है, स्किल प्रक्रियाएँ और फ़ाइलें प्रदान करते हैं, और हार्नेस नियंत्रित करता है कि कॉल कहाँ चलती हैं।
3. Tool Search: जब संदर्भ बाधा बन जाता है
हर दृश्यमान टूल परिभाषा संदर्भ लेती है। नाम, विवरण और स्कीमा इनपुट टोकन का उपयोग करते हैं, समान टूल को अलग करना कठिन हो जाता है, और एक बड़ी MCP सूची एक बड़ा प्रॉम्प्ट बन जाती है।
Tool Search संगत GPT-5.4 या उसके बाद के मॉडल को आवश्यकता होने पर ही विलंबित परिभाषाएँ लोड करने देता है:
1shipping = {2 "type": "namespace", "name": "shipping",3 "description": "Order tracking and delivery tools.",4 "tools": [{5 "type": "function", "name": "get_delivery_eta",6 "description": "Return the ETA for an order.",7 "defer_loading": True,8 "parameters": {9 "type": "object", "required": ["order_id"],10 "properties": {"order_id": {"type": "string"}},11 "additionalProperties": False,12 },13 }],14}1516response = client.responses.create(17 model="gpt-5.6",18 input="When will order A-104 arrive?",19 tools=[shipping, {"type": "tool_search"}],20)
होस्टेड Tool Search अनुरोध में घोषित टूल में से चुनता है; क्लाइंट-निष्पादित सर्च वर्तमान टेनेंट या प्रोजेक्ट के लिए टूल लौटा सकता है। सर्च एक कदम जोड़ता है, इसलिए छोटी सूचियों को बहुत कम लाभ हो सकता है। एक विलंबित फ़ंक्शन अभी भी अपना नाम और विवरण एक्सपोज़ करता है, जबकि एक नेमस्पेस या MCP सर्वर एक छोटे विवरण से शुरू हो सकता है। लोड किए गए टूल को कैश प्रीफ़िक्स को संरक्षित करने के लिए जोड़ा जाता है। स्किल निर्देशों और फ़ाइलों को विलंबित करते हैं; Tool Search कॉल करने योग्य स्कीमा को विलंबित करता है।
4. पूर्वानुमानित मल्टी-टूल कार्य के लिए Programmatic Tool Calling
प्रत्यक्ष कॉल प्रत्येक परिणाम मॉडल को लौटाती हैं। यह तब उपयोगी होता है जब कोई परिणाम अगले निर्णय को बदलता है, लेकिन सरल जॉइन, फ़िल्टर और समानांतर लुकअप संदर्भ को डेटा से भर सकते हैं जिसे कोड कम कर सकता है।
Programmatic Tool Calling GPT-5.6 को JavaScript लिखने देता है जो एक नए, पृथक V8 रनटाइम में चलता है। V8 Chrome के अंदर JavaScript चलाता है, लेकिन यह ब्राउज़र या Node.js नहीं है। यह टॉप-लेवल await, लूप, शर्तें और समानांतर कॉल का समर्थन करता है, बिना पैकेज इंस्टॉलेशन, प्रत्यक्ष नेटवर्क एक्सेस, सामान्य-उद्देश्य फ़ाइलसिस्टम, सबप्रोसेस, कंसोल या स्थायी स्थिति के।

पृथक V8 रनटाइम में तीन प्रत्यक्ष कॉल की तुलना तीन समानांतर कॉल से। Codex में GPT-Image-2 के साथ जनरेट किया गया।
जब कोई प्रोग्राम क्लाइंट-स्वामित्व वाले फ़ंक्शन तक पहुँचता है, तो यह रुक जाता है जबकि आपका एप्लिकेशन कॉल चलाता है; इसका call_id और caller लौटाने से यह फिर से शुरू होता है। carrier_mcp अनुमोदन के लिए भी रुक सकता है, और output_schema JavaScript को बताता है कि वह किन फ़ील्ड्स का निरीक्षण कर सकता है।
1for tool in (order_tool, carrier_mcp):2 tool["allowed_callers"] = ["programmatic"]34response = client.responses.create(5 model="gpt-5.6",6 tools=[7 order_tool,8 carrier_mcp,9 {"type": "programmatic_tool_calling"},10 ],11 input="Compare order A-104 with carrier status and return delay evidence.",12)
प्रोग्राम फ़ंक्शन और कस्टम टूल, MCP, apply_patch, शेल और कोड इंटरप्रेटर को कॉल कर सकते हैं, लेकिन वेब सर्च या फ़ाइल सर्च को नहीं। टॉप-लेवल Tool Search को प्रोग्राम शुरू होने से पहले एक विलंबित टूल लोड करना होगा; एक चल रहा प्रोग्राम टूल खोज नहीं सकता है।
कॉल को प्रत्यक्ष रखें जब अगले चरण में मॉडल निर्णय, अनुमोदन, उद्धरण या साइड इफ़ेक्ट की आवश्यकता हो। प्रोग्राम का उपयोग करें जब स्पष्ट नियम कोड को सबूत खोए बिना छोटा परिणाम लौटाने देते हैं। होस्टेड निष्पादन बदलता है कि कार्य कहाँ चलता है, Tool Search बदलता है कि कौन सी परिभाषाएँ संदर्भ में प्रवेश करती हैं, और प्रोग्रामेटिक कॉल बदलते हैं कि कौन से परिणाम वापस आते हैं। उन्हें संयोजित करें जब एक eval दिखाता है कि शुद्धता बनी रहती है जबकि टोकन, विलंबता या लागत में सुधार होता है।
बोनस: लंबे टूल लूप को एक कनेक्शन पर रखें
यदि कोई एजेंट बार-बार मॉडल और क्लाइंट-स्वामित्व वाले टूल के बीच स्विच करता है, तो Responses WebSocket mode निरंतरता ओवरहेड को कम कर सकता है। सॉकेट आपके हार्नेस को Responses से जोड़ता है; यह टूल को तेज़ नहीं चलाता है। यह फ़ंक्शन, MCP, Tool Search और Programmatic Tool Calling के लिए समान response.create फ़ील्ड स्वीकार करता है, हालाँकि दस्तावेज़ हर संयोजन को बेंचमार्क नहीं करते हैं। OpenAI ने 20 या अधिक कॉल वाले रोलआउट में 40% तक तेज़ निष्पादन देखा है, इसलिए अपने वर्कफ़्लो को मापें।
इसे अपने एजेंट के साथ आज़माएँ
इस लेख का एक Appshot लें, Codex में अपना एजेंट प्रोजेक्ट खोलें, और पेस्ट करें:
इस लेख और वर्तमान कोडबेस का उपयोग करके इस एजेंट के टूल पथ को अपग्रेड करें। बड़े या कम उपयोग किए जाने वाले टूल को समूहित करें और उन्हें विलंबित करने के लिए Tool Search सक्षम करें। सीमित चरणों का पता लगाएँ जहाँ Programmatic Tool Calling कॉल को समानांतर में चला सकता है और कॉम्पैक्ट परिणाम लौटा सकता है। शब्दार्थ निर्णय, अनुमोदन, उद्धरण और साइड इफ़ेक्ट को प्रत्यक्ष कॉल के रूप में रखें। प्रोडक्शन रूटिंग बदलने से पहले शुद्धता, साक्ष्य कवरेज, टूल सफलता, टोकन, विलंबता, पुनर्प्रयास और लागत के लिए दोनों पथों की तुलना करें।





