1. कार्य को बुलाने का परिचय

GPT मॉडल में, कार्य को बुलाना मॉडल को बतौर एपीआई के माध्यम से विवरणमय कार्यों की प्रदान करना होता है, जो प्राप्त करके से एक या अधिक कार्यों को बुलाने के लिए पैरामीटर वाला जेसन ऑब्ज

स्टेप 2: प्रश्न और टूल्स पैरामीटर के आधार पर मॉडल को कॉल करें

अगले कदम में, हमें चैट पूर्णता API के माध्यम से GPT मॉडल को कॉल करने और उपयोक्ता के प्रश्न (जैसे "वर्तमान मौसम क्या है") को भी पारित करने की आवश्यकता है, साथ ही tools पैरामीटर को भी शामिल करना होगा, जिसमें हमने अभी परिभाषित किए गए get_current_weather फ़ंक्शन का विवरण शामिल है।

from openai import OpenAI

client = OpenAI()

tools = [{
    "type": "function",
    "function": {
        "name": "get_current_weather",
        "description": "दिए गए स्थान के लिए वर्तमान मौसम प्राप्त करें",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "शहर का नाम, जैसे: 'सैन फ्रांसिस्को, कैलिफोर्निया'"
                },
                "unit": {
                    "type": "string",
                    "enum": ["सेल्सियस", "फारेनहाइट"]
                }
            },
            "required": ["location"]
        }
    }
}]

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "सैन फ्रांसिस्को में वर्तमान मौसम क्या है?"}],
    tools=tools
)

स्टेप 3: स्थानीय रूप से फ़ंक्शन को निष्पादित करें

मॉडल द्वारा वापस दिए गए परिणाम में tool_calls प्रतिक्रिया पैरामीटर में सामान्यत: फ़ंक्शन कॉल की जानकारी शामिल होती है। फिर हम tool_calls पैरामीटर में वर्णित फ़ंक्शन कॉल जानकारी के आधार पर संबंधित फ़ंक्शन कॉल को स्थानीय रूप से निष्पादित कर सकते हैं।

tool_calls = response.choices[0].message.tool_calls

if tool_calls:
    arguments = json.loads(tool_calls[0].function.arguments)
    weather_info = get_current_weather(**arguments)
    print(weather_info) # यहां हम देख सकते हैं फ़ंक्शन कॉल द्वारा पूछे गए मौसम की जानकारी

स्टेप 4: फ़ंक्शन वापसी परिणाम के साथ मॉडल को फिर से कॉल करें

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

follow_up_response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "सैन फ्रांसिस्को में वर्तमान मौसम क्या है?"},
        {"role": "function", "name": "get_current_weather", "content": weather_info}
    ],
    tools=tools
)

स्पष्टीकरण: उपरोक्त उदाहरण में, फ़ंक्शन वापसी सामग्री को निम्नलिखित रूप में GPT मॉडल को भेजा जाता है:

{"role": "function", "name": "get_current_weather", "content": weather_info}

प्रैक्टिस में, आप आप सीमा सन्देश पूर्व|||रोक्ष सामग्री के रूप में फ़ंक्शन वापसी सामग्री को सीमित संदेश के लिए भी प्रस्तुत कर सकते हैं, ताकि मशीन बोले हुए प्रश्नों का उत्तर देने के लिए AI को संदर्भ के रूप में उपयोग कर सकते हैं।

स्टेप 5: मॉडल से आखिरी प्रतिक्रिया प्राप्त करें

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

final_output = follow_up_response.choices[0].message.content
print(final_output) # यह आउटपुट वो मौसम की जानकारी है जो हम उपयोक्ता को दिखाना चाहते हैं

उपरोक्त स्टेप्स का पालन करते हुए, हमने GPT मॉडल और फ़ंक्शन कॉल का उपयोग करके मौसम का पूर्णत: प्रश्न उठाने का उदाहरण पूरा कर लिया है।

4.2. फ़ंक्शन कॉल फ़ंक्शन परिभाषा की स्पष्टीकरण

4.2.1 'उपकरण' पैरामीटर फ़ील्ड का अर्थ

किसी फ़ंक्शन को कॉल करते समय, आपको उपकरण पैरामीटर में फ़ंक्शन की संबंधित जानकारी को परिभाषित करनी होती है। उपकरण पैरामीटर एक ऐसा एरे होता है जिसमें कई फांक्शन की परिभाषाएँ होती हैं, और प्रत्येक फ़ंक्शन परिभाषा निम्नलिखित फ़ील्ड्स को समाविष्ट करती है:

  1. प्रकार: यह फ़ील्ड उपकरण के प्रकार को प्रतिनिधित करता है। एक फ़ंक्शन कॉल में, इस फ़ील्ड को "फ़ंक्शन" के रूप में सेट करना चाहिए।
  2. फ़ंक्शन: यह फ़ील्ड फ़ंक्शन की विस्तृत जानकारी को समाविष्ट करता है, और इसमें निम्नलिखित विशिष्ट फ़ील्ड्स के साथ एक ऑब्ज

4.3.1. चरण 1: उपयोगकर्ता प्रश्न और फ़ंक्शन घोषणा के साथ मॉडल को कॉल करें

पहले, हमें उपयोगकर्ता के प्रश्न और हमारी समर्थित फ़ंक्शनों की सूची को GPT मॉडल को भेजना होगा, ताकि मॉडल स्वचालित रूप से विश्लेषण कर सके कि उपयोगकर्ता के प्रश्न का जवाब देने के लिए कौन सा फ़ंक्शन कॉल करना है।

निम्नलिखित उदाहरण में, हम GPT को सूचित करते हैं कि हमारे पास get_current_weather फ़ंक्शन है जिसका उपयोग किसी विशेष शहर के मौसम सूचना के प्रश्न करने के लिए किया जा सकता है।

curl --location 'https://api.aiproxy.io/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {OPENAI_KEY}' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "शंघाई में आज मौसम कैसा है?"
        }
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_current_weather",
                "description": "निर्दिष्ट स्थान के लिए वर्तमान मौसम सूचना प्राप्त करें",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "मौसम का प्रश्न करने के लिए शहर, जैसे 'सॅन फ्रांसिस्को, CA'"
                        },
                        "unit": {
                            "type": "string",
                            "enum": [
                                "celsius",
                                "fahrenheit"
                            ],
                            "description": "तापमान इकाई, सैल्सियस के लिए 'सेल्सियस', फ़ारेनहाइट के लिए 'फ़ारेनहाइट'"
                        }
                    },
                    "required": [
                        "location",
                        "unit"
                    ]
                }
            }
        }
    ]
}'

अनुरोध पैरामीटर स्पष्टीकरण:

{
    "model": "gpt-3.5-turbo", // जिस GPT मॉडल को कॉल करना है
    "messages": [ // यह GPT के लिए संदेशों की सूची है, जिसमें उपयोगकर्ता का प्रश्न शामिल है
        {
            "role": "user",
            "content": "शंघाई में आज मौसम कैसा है?"
        }
    ],
    "tools": [
		// यह आपकी फ़ंक्शन परिभाषा है, जो GPT को उपलब्ध फ़ंक्शनों के बारे में सूचित करती है
    ]
}

tools पैरामीटर की परिभाषा के लिए अनुच्छेद 4.2.2 का संदर्भ देखें।

GPT मॉडल द्वारा सामान्य प्रसंस्करण में, आपको निम्नलिखित तरह की API प्रतिक्रिया प्राप्त होगी:

{
    "model": "gpt-3.5-turbo-0613",
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 122,
        "completion_tokens": 27,
        "total_tokens": 149
    },
    "id": "chatcmpl-8mL4hS4zNMocyR2ajKyAvSTcbNaao",
    "created": 1706531447,
    "choices": [
        {
            "index": 0,
            "delta": null,
            "message": {
                "role": "assistant",
                "tool_calls": [ // टूल_कॉल्स पैरामीटर वह सूची है जिसे GPT ने कॉल करना चाहता है
                    {
                        "id": "call_1iF09ttX1R9ESR18Ul2nLe1R",
                        "type": "function",
                        "function": {
                            "name": "get_current_weather",  // इससे इशारा होता है कि GPT उपयोगकर्ता के प्रश्न का जवाब देने के लिए get_current_weather फ़ंक्शन को कॉल करना चाहता है
                            "arguments": "{\n  \"location\": \"शंघाई, चीन\",\n  \"unit\": \"सेल्सियस\"\n}" // यह get_current_weather फ़ंक्शन को कॉल करने के लिए इनपुट पैरामीटर है
                        }
                    }
                ]
            },
            "finish_reason": "tool_calls"
        }
    ]
}

4.3.2. चरण 2: स्थानीय फ़ंक्शन कॉल का निष्पादन

क्योंकि GPT मॉडल खुद विशिष्ट फ़ंक्शन को नहीं निष्पादित कर सकता और केवल हमें सूचित करता है कि वह किस फ़ंक्शन को कॉल करना चाहता है, हमारी स्थानीय कार्यक्रम को मॉडल द्वारा वापस आए tool_calls पैरामीटर के आधार पर विशिष्ट फ़ंक्शन कॉल करना होता है। स्थानीय फ़ंक्शन को निष्पादित करने का तरीका विभिन्न प्रोग्रामिंग भाषाओं में भिन्न होता है। उदाहरण के लिए, Python में आप पहले के खंड का संदर्भ कर सकते हैं।

4.3.3. चरण 3: फ़ंक्शन के फिर से मॉडल को कॉल करें जिसके फ़ंक्शन के परिणाम से

क्योंकि फ़ंक्शन कॉल स्थानीय रूप से निष्पादित होता है, हमें फ़ंक्शन के नतीजे और उपयोगकर्ता के सवाल को मॉडल को वापस भेजने की आवश्यकता है ताकि अंतिम प्रतिक्रिया दी जा सके।

curl --location 'https://api.aiproxy.io/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-Roc5MX1zEuVxiuaMaETV6wZ2jXcCehjUCzwP9AcNErUiwppQ' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "आज शंघाई में मौसम कैसा है?"
        },
        {
            "role": "function",
            "name": "get_current_weather",
            "content": "{\"city\":\"शंघाई\", \"temperature\":\"25 डिग्री सेल्सियस\"}"
        }
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_current_weather",
                "description": "निर्दिष्ट स्थान के लिए वर्तमान मौसम सूचना प्राप्त करें",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "मौसम का पूछताछ करने के लिए शहर, जैसे 'सैन फ्रांसिस्को, सीए'।"
                        },
                        "unit": {
                            "type": "string",
                            "enum": [
                                "सेल्सियस",
                                "फ़ारेनहाइट"
                            ],
                            "description": "तापमान की इकाई, सेल्सियस के लिए 'सेल्सियस', फ़ारेनहाइट के लिए 'फ़ारेनहाइट'"
                        }
                    },
                    "required": [
                        "location",
                        "unit"
                    ]
                }
            }
        }
    ]
}'

नोट: ऊपर की अनुरोध में एक अतिरिक्त फ़ंक्शन संदेश शामिल है जिससे जीपीटी मॉडल को फ़ंक्शन के वापसी मूल्य की सूचना दी जाती है। जीपीटी सीधे फ़ंक्शन के नतीजों के आधार पर उपयोगकर्ता के प्रश्न का उत्तर देगा और फिर से फ़ंक्शन को कॉल नहीं करेगा।

फ़ंक्शन संदेश फ़ंक्शन के वापसी मूल्य को प्रतिनिधित्व करता है और नीचे दिए गए प्रारूप का पालन करता है:

{
    "role": "function", // संदेश प्रकार फ़ंक्शन है, जिससे प्रकट होता है कि फ़ंक्शन के बहाव मूल्य है
    "name": "get_current_weather", // जीपीटी को सूचित करता है कि वर्तमान संदेश को get_current_weather फ़ंक्शन के वापसी मूल्य का बताया गया है
    "content": "{\"city\":\"शंघाई\", \"temperature\":\"25 डिग्री सेल्सियस\"}" // फ़ंक्शन वापसी सामग्री, जो कि JSON प्रारूप में या अन्य पाठ सामग्री में हो सकती है।
}

नीचे दिए गए गीपीटी द्वारा विकसित अंतिम प्रतिक्रिया है:

{
    "model": "gpt-3.5-turbo-0613",
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 144,
        "completion_tokens": 17,
        "total_tokens": 161
    },
    "id": "chatcmpl-8mLmvvKAjSql7rGF8fvQeddKhWYvr",
    "created": 1706534189,
    "choices": [
        {
            "index": 0,
            "delta": null,
            "message": {
                "role": "assistant",
                "content": "आज शंघाई में मौसम 25 डिग्री सेल्सियस है।"
            },
            "finish_reason": "stop"
        }
    ]
}