फ़ंक्शन कॉलिंग बड़े भाषा मॉडल (LLM) में एक एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (API) तंत्र है, जो मॉडल को सादा टेक्स्ट उत्पन्न करने के बजाय, डेवलपर-परिभाषित फ़ंक्शन या टूल को लागू करने के लिए एक संरचित, मशीन-पठनीय अनुरोध आउटपुट करने की अनुमति देता है। यह क्षमता संवादात्मक या जनरेटिव आउटपुट और निष्पादन योग्य क्रियाओं के बीच की खाई को पाटती है, जिससे LLM वास्तविक समय का डेटा प्राप्त कर सकते हैं, गणनाएँ कर सकते हैं, बाहरी प्रणालियों के साथ बातचीत कर सकते हैं, या बहु-चरणीय वर्कफ़्लो को व्यवस्थित कर सकते हैं। एक विशिष्ट कार्यान्वयन में, डेवलपर मॉडल को फ़ंक्शन परिभाषाओं का एक सेट प्रदान करता है, जिसमें नाम, विवरण और पैरामीटर स्कीमा शामिल होते हैं; मॉडल फिर उपयोगकर्ता के प्रॉम्प्ट के आधार पर निर्णय लेता है कि फ़ंक्शन को कॉल करना है या नहीं, और यदि हाँ, तो यह फ़ंक्शन नाम और तर्कों वाली एक संरचित वस्तु (अक्सर JSON) उत्सर्जित करता है। एप्लिकेशन फ़ंक्शन को निष्पादित करता है, परिणाम मॉडल को लौटाता है, और मॉडल फिर उस परिणाम को उपयोगकर्ता को अंतिम प्रतिक्रिया में शामिल कर सकता है।
फ़ंक्शन कॉलिंग, टूल उपयोग के लिए प्रॉम्प्ट इंजीनियरिंग या फ़ाइन-ट्यूनिंग जैसे पहले के दृष्टिकोणों से अलग है, क्योंकि यह संरचित आउटपुट प्रारूपों का पालन करने और टूल को कब और कैसे लागू करना है, इसके बारे में तर्क करने की मॉडल की मूल क्षमता पर निर्भर करता है। यह कई आधुनिक LLM API की एक मुख्य विशेषता है, जिसमें OpenAI, Anthropic और Google DeepMind शामिल हैं, और यह एजेंटिक AI प्रणालियों के लिए एक मानक निर्माण खंड बन गया है, जहाँ मॉडल स्वायत्त रूप से क्रियाओं के अनुक्रमों की योजना बनाते हैं और उन्हें निष्पादित करते हैं। इस तंत्र को टूल उपयोग, टूल कॉलिंग या संरचित आउटपुट जनरेशन भी कहा जाता है, हालांकि फ़ंक्शन कॉलिंग विशेष रूप से मॉडल और एप्लिकेशन के बीच API अनुबंध पर जोर देती है।
ऐतिहासिक विकास
भाषा मॉडल को बाहरी टूल से जोड़ने की अवधारणा "फ़ंक्शन कॉलिंग" शब्द से पहले की है। 2010 के दशक में प्रारंभिक कार्य, जैसे कि तंत्रिका मॉडल के साथ पुनर्प्राप्ति प्रणालियों का एकीकरण, ने यह प्रदर्शित करके आधार तैयार किया कि मॉडल बाहरी सूचना स्रोतों से लाभ उठा सकते हैं। हालाँकि, आधुनिक फ़ंक्शन कॉलिंग प्रतिमान ट्रांसफॉर्मर-आधारित LLM के उदय और विश्वसनीय रूप से संरचित आउटपुट उत्पन्न करने की उनकी क्षमता के साथ उभरा।
OpenAI ने जून 2023 में अपने GPT-4 और GPT-3.5 Turbo मॉडल अपडेट के भाग के रूप में एक औपचारिक फ़ंक्शन कॉलिंग API पेश किया। इसने डेवलपर्स को फ़ंक्शन परिभाषित करने और मॉडल से एक JSON ऑब्जेक्ट लौटाने की अनुमति दी, जो निर्दिष्ट करता था कि किस फ़ंक्शन को कॉल करना है और किन तर्कों के साथ। इस रिलीज़ के साथ दस्तावेज़ीकरण और उदाहरण भी शामिल थे, जिनमें डेटाबेस क्वेरी करना, ईमेल भेजना और मौसम डेटा प्राप्त करना जैसे उपयोग के मामले दिखाए गए थे। Anthropic ने 2024 में अपनी स्वयं की टूल उपयोग सुविधा का अनुसरण किया, और Google DeepMind ने अपने Gemini मॉडल में समान क्षमताओं को शामिल किया। 2025 तक, फ़ंक्शन कॉलिंग प्रमुख LLM प्रदाताओं में एक मानक सुविधा बन गई थी, जिसमें Meta और Mistral के ओपन-सोर्स मॉडल शामिल हैं, जिन्हें अक्सर OpenAI-संगत API प्रारूप के माध्यम से लागू किया जाता था।
फ़ंक्शन कॉलिंग का डिज़ाइन टूल-वर्धित भाषा मॉडल पर पहले के शोध से प्रभावित था, जैसे कि Meta AI (2023) का Toolformer मॉडल, जिसने API को कब कॉल करना है यह तय करना सीखा, और ReAct पैटर्न (2022), जिसने तर्क और क्रिया को आपस में जोड़ा। इन दृष्टिकोणों ने प्रदर्शित किया कि LLM स्पष्ट टूल आह्वान से लाभ उठा सकते हैं, लेकिन उन्हें कस्टम प्रशिक्षण या प्रॉम्प्टिंग की आवश्यकता थी। फ़ंक्शन कॉलिंग ने इसे एक सरल API अनुबंध में मानकीकृत किया, जिससे यह किसी भी डेवलपर के लिए सुलभ हो गया।
तकनीकी तंत्र
फ़ंक्शन कॉलिंग मानक LLM अनुमान लूप के भीतर संचालित होती है। डेवलपर API को एक अनुरोध भेजता है जिसमें उपयोगकर्ता प्रॉम्प्ट और फ़ंक्शन परिभाषाओं की एक सूची शामिल होती है। प्रत्येक परिभाषा में आमतौर पर एक नाम, एक विवरण और पैरामीटर निर्दिष्ट करने वाली एक JSON स्कीमा शामिल होती है। मॉडल इस इनपुट को संसाधित करता है और या तो एक सामान्य टेक्स्ट प्रतिक्रिया या एक संरचित फ़ंक्शन कॉल उत्पन्न करता है। उदाहरण के लिए, OpenAI API में, मॉडल प्रतिक्रिया में एक tool_calls फ़ील्ड लौटाता है, जिसमें फ़ंक्शन नाम और तर्क JSON स्ट्रिंग के रूप में होते हैं।
मॉडल की वैध संरचित आउटपुट उत्पन्न करने की क्षमता JSON और अन्य संरचित प्रारूपों को शामिल करने वाले बड़े कॉर्पोरा पर इसके प्रशिक्षण के साथ-साथ निर्देश ट्यूनिंग और मानव प्रतिक्रिया से सुदृढीकरण सीखने (RLHF) द्वारा सक्षम है। कुछ कार्यान्वयन यह गारंटी देने के लिए बाधित डिकोडिंग या व्याकरण-आधारित सैंपलिंग का उपयोग करते हैं कि आउटपुट वाक्य रचनात्मक रूप से मान्य है, हालांकि अधिकांश आधुनिक LLM ऐसे प्रतिबंधों के बिना उच्च विश्वसनीयता के साथ सही JSON उत्पन्न कर सकते हैं।
मॉडल द्वारा फ़ंक्शन कॉल उत्सर्जित करने के बाद, एप्लिकेशन फ़ंक्शन को सैंडबॉक्स या विश्वसनीय वातावरण में निष्पादित करता है, परिणाम (जो एक स्ट्रिंग, संख्या या जटिल ऑब्जेक्ट हो सकता है) कैप्चर करता है, और इसे अनुवर्ती अनुरोध में मॉडल को वापस भेजता है। मॉडल फिर एक अंतिम प्रतिक्रिया उत्पन्न करता है जिसमें टूल परिणाम शामिल होता है। इस लूप को कई बार दोहराया जा सकता है, जिससे मॉडल को एक जटिल कार्य को पूरा करने के लिए कई फ़ंक्शन कॉल श्रृंखलाबद्ध करने की अनुमति मिलती है।
उपयोग के मामले और अनुप्रयोग
फ़ंक्शन कॉलिंग व्यावहारिक अनुप्रयोगों की एक विस्तृत श्रृंखला को सक्षम बनाती है। एक सामान्य उपयोग का मामला वास्तविक समय डेटा पुनर्प्राप्ति है: एक उपयोगकर्ता वर्तमान स्टॉक मूल्य, मौसम या खेल स्कोर के बारे में प्रश्न पूछता है, और मॉडल एक फ़ंक्शन को कॉल करता है जो नवीनतम डेटा प्राप्त करने के लिए एक बाहरी API से क्वेरी करता है। एक और डेटाबेस इंटरैक्शन है, जहाँ मॉडल प्राकृतिक भाषा प्रश्नों को SQL या अन्य क्वेरी भाषाओं में अनुवादित करता है और उन्हें डेटाबेस के विरुद्ध निष्पादित करता है, परिणाम उपयोगकर्ता को लौटाता है।
उद्यम सेटिंग्स में, फ़ंक्शन कॉलिंग ग्राहक सेवा चैटबॉट्स को शक्ति प्रदान करती है जो ऑर्डर स्थिति देख सकते हैं, रिकॉर्ड अपडेट कर सकते हैं या मुद्दों को बढ़ा सकते हैं। सॉफ़्टवेयर विकास में, यह AI सहायकों को कोड निष्पादित करने, परीक्षण चलाने या संस्करण नियंत्रण प्रणालियों के साथ बातचीत करने में सक्षम बनाता है। स्वचालन में, यह मॉडल को स्मार्ट होम डिवाइस नियंत्रित करने, संदेश भेजने या अपॉइंटमेंट शेड्यूल करने की अनुमति देता है। यह तंत्र एजेंटिक फ्रेमवर्क के लिए भी केंद्रीय है, जहाँ एक मॉडल क्रियाओं के अनुक्रम की योजना बनाता है, प्रत्येक चरण को निष्पादित करने के लिए फ़ंक्शन को कॉल करता है, और परिणामों के आधार पर पुनरावृत्ति करता है।
एजेंटिक प्रणालियों के साथ एकीकरण
फ़ंक्शन कॉलिंग एजेंटिक AI का एक आधारभूत घटक है, जहाँ मॉडल केवल संवादात्मक नहीं होते हैं बल्कि उपयोगकर्ताओं की ओर से कार्य करते हैं। एक एजेंट फ़ंक्शन कॉलिंग का उपयोग उपयोगकर्ता के लक्ष्य को उप-कार्यों में विभाजित करने, जानकारी इकट्ठा करने के लिए खोज फ़ंक्शन को कॉल करने, डेटा संसाधित करने के लिए गणना फ़ंक्शन को कॉल करने और फिर परिणाम देने के लिए संदेश फ़ंक्शन को कॉल करने के लिए कर सकता है। फ़ंक्शन को कब कॉल करना है और परिणामों की व्याख्या कैसे करनी है, यह तय करने की मॉडल की क्षमता प्रभावी एजेंसी के लिए महत्वपूर्ण है।
LangChain, LlamaIndex और AutoGPT जैसे फ्रेमवर्क जटिल वर्कफ़्लो को व्यवस्थित करने के लिए फ़ंक्शन कॉलिंग का लाभ उठाते हैं। ये फ्रेमवर्क टूल परिभाषित करने, संवाद स्थिति प्रबंधित करने और त्रुटियों को संभालने के लिए अमूर्तता प्रदान करते हैं। फ़ंक्शन कॉलिंग के उदय ने टूल रजिस्ट्रियों और मार्केटप्लेस के विकास को भी जन्म दिया है, जहाँ डेवलपर्स फ़ंक्शन परिभाषाओं को साझा और पुन: उपयोग कर सकते हैं।
वैकल्पिक दृष्टिकोणों के साथ तुलना
फ़ंक्शन कॉलिंग से पहले, डेवलपर्स LLM को टूल तक पहुंच देने के लिए कई वर्कअराउंड का उपयोग करते थे। एक दृष्टिकोण प्रॉम्प्ट इंजीनियरिंग था, जहाँ मॉडल को एक विशिष्ट प्रारूप आउटपुट करने का निर्देश दिया जाता था (उदाहरण के लिए, "'action' और 'action_input' वाली JSON ऑब्जेक्ट के साथ उत्तर दें"), और एप्लिकेशन उस आउटपुट को पार्स करता था। यह नाजुक था, क्योंकि मॉडल प्रारूप से विचलित हो सकता था। एक और दृष्टिकोण फ़ाइन-ट्यूनिंग था, जहाँ एक मॉडल को टूल उपयोग के उदाहरणों पर प्रशिक्षित किया जाता था, लेकिन इसके लिए महत्वपूर्ण डेटा और कंप्यूट की आवश्यकता होती थी।
फ़ंक्शन कॉलिंग एक संरचित API प्रदान करके इनमें सुधार करती है जिसका पालन करने के लिए मॉडल को स्पष्ट रूप से प्रशिक्षित किया जाता है। यह पार्सिंग त्रुटियों को कम करता है, विश्वसनीयता में सुधार करता है और डेवलपर अनुभव को सरल बनाता है। हालाँकि, यह सीमाओं के बिना नहीं है। मॉडल उन फ़ंक्शन कॉल्स को भ्रमित कर सकता है जो मौजूद नहीं हैं, गलत तर्क उत्पन्न कर सकता है, या आवश्यकता पड़ने पर फ़ंक्शन को कॉल करने में विफल हो सकता है। इन मुद्दों को कम करने के लिए डेवलपर्स को सत्यापन और त्रुटि हैंडलिंग लागू करनी चाहिए।
सुरक्षा और विश्वसनीयता संबंधी विचार
फ़ंक्शन कॉलिंग सुरक्षा जोखिम पेश करती है, क्योंकि मॉडल का आउटपुट सीधे क्रियाओं को ट्रिगर करता है। एक दुर्भावनापूर्ण प्रॉम्प्ट मॉडल को हानिकारक तर्कों वाले फ़ंक्शन को कॉल करने के लिए धोखा दे सकता है, जैसे कि डेटा हटाना या अनधिकृत संदेश भेजना। डेवलपर्स को फ़ंक्शन तर्कों का कठोर सत्यापन लागू करना चाहिए, अनुमत फ़ंक्शनों की अनुमति-सूची का उपयोग करना चाहिए, और कम से कम-विशेषाधिकार पहुंच के साथ सैंडबॉक्स वातावरण में फ़ंक्शन चलाना चाहिए।
विश्वसनीयता एक और चिंता है। मॉडल वाक्य रचनात्मक रूप से मान्य लेकिन शब्दार्थ रूप से गलत तर्क उत्पन्न कर सकता है, या यह गलत फ़ंक्शन को कॉल कर सकता है। कुछ-शॉट प्रॉम्प्टिंग, बेहतर फ़ंक्शन विवरण और पोस्ट-हॉक सत्यापन जैसी तकनीकें सटीकता में सुधार कर सकती हैं। कुछ प्रदाता संरचित आउटपुट मोड प्रदान करते हैं जो JSON स्कीमा अनुपालन लागू करते हैं, जिससे विकृत कॉल का जोखिम कम हो जाता है।
भविष्य की दिशाएँ
फ़ंक्शन कॉलिंग तेजी से विकसित हो रही है। शोधकर्ता सही फ़ंक्शन का चयन करने, अस्पष्ट प्रॉम्प्ट को संभालने और त्रुटियों से उबरने की मॉडल की क्षमता में सुधार करने के तरीकों की खोज कर रहे हैं। मल्टी-टर्न फ़ंक्शन कॉलिंग, जहाँ मॉडल समानांतर या अनुक्रम में फ़ंक्शन को कॉल कर सकता है, अधिक सामान्य होती जा रही है। फ़ंक्शन कॉलिंग को अधिक कुशल बनाने पर भी काम चल रहा है, फ़ंक्शन परिभाषाओं के लिए उपयोग किए जाने वाले टोकन की संख्या को कम करके और टूल स्कीमा को कैश करके।
जैसे-जैसे LLM अधिक सक्षम होते जाते हैं, फ़ंक्शन कॉलिंग के मेमोरी, प्लानिंग और मल्टीमॉडल इनपुट जैसी अन्य सुविधाओं के साथ अधिक एकीकृत होने की संभावना है। फ़ंक्शन कॉलिंग और सामान्य टूल उपयोग के बीच की सीमा धुंधली होती जा रही है, कुछ मॉडल स्पष्ट परिभाषाओं के बिना सीधे कोड या API को लागू करने में सक्षम हैं। OpenAI-संगत API जैसे प्रदाताओं में फ़ंक्शन कॉलिंग प्रारूपों का मानकीकरण, इंटरऑपरेबल टूल और एजेंटों के एक पारिस्थितिकी तंत्र को बनाने में मदद कर रहा है।