Gemini API की मदद से फ़ंक्शन कॉल करने के बारे में जानकारी

Gemini API फ़ंक्शन कॉल करने की सुविधा का इस्तेमाल करके, मॉडल को कस्टम फ़ंक्शन की परिभाषाएं दी जा सकती हैं. मॉडल, इन फ़ंक्शन को सीधे तौर पर नहीं चलाता है. इसके बजाय, वह स्ट्रक्चर्ड आउटपुट जनरेट करता है, जिसमें फ़ंक्शन का नाम और सुझाए गए आर्ग्युमेंट की जानकारी होती है. इसके बाद, किसी बाहरी एपीआई को कॉल करने के लिए, फ़ंक्शन के नाम और आर्ग्युमेंट का इस्तेमाल किया जा सकता है. साथ ही, एपीआई के नतीजे को मॉडल के लिए एक और क्वेरी में शामिल किया जा सकता है. इससे मॉडल, ज़्यादा बेहतर जवाब दे पाता है और अन्य कार्रवाइयां कर पाता है.

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

फ़ंक्शन कॉल करने का काम करने वाला उदाहरण देखने के लिए, "light bot" नोटबुक देखें.

फ़ंक्शन कॉलिंग की सुविधा कैसे काम करती है

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

इसके बाद, मॉडल OpenAPI के साथ काम करने वाले स्कीमा में एक ऑब्जेक्ट दिखाता है. इसमें, उपयोगकर्ता के सवाल का जवाब देने के लिए, एलान किए गए एक या उससे ज़्यादा फ़ंक्शन को कॉल करने का तरीका बताया जाता है. इसके बाद, सुझाए गए फ़ंक्शन कॉल पैरामीटर का इस्तेमाल करके, असल एपीआई को कॉल किया जा सकता है और जवाब पाया जा सकता है. साथ ही, उस जवाब को उपयोगकर्ता को दिया जा सकता है या कोई और कार्रवाई की जा सकती है. ध्यान दें कि मॉडल, एलान किए गए फ़ंक्शन को असल में कॉल नहीं करता. इसके बजाय, फ़ंक्शन को कॉल करने के लिए, रिटर्न किए गए स्कीमा ऑब्जेक्ट पैरामीटर का इस्तेमाल किया जाता है. Gemini API, एक साथ कई फ़ंक्शन कॉल करने की सुविधा भी देता है. इसमें, मॉडल एक ही अनुरोध के आधार पर, कई एपीआई फ़ंक्शन कॉल करने का सुझाव देता है.

फ़ंक्शन के एलान

प्रॉम्प्ट में फ़ंक्शन कॉल करने की सुविधा लागू करने पर, एक tools ऑब्जेक्ट बनता है. इसमें एक या उससे ज़्यादा function declarations होते हैं. JSON का इस्तेमाल करके फ़ंक्शन तय किए जाते हैं. खास तौर पर, OpenAPI स्कीमा फ़ॉर्मैट के चुने गए सबसेट के साथ. किसी फ़ंक्शन के एलान में ये पैरामीटर शामिल किए जा सकते हैं:

  • name (स्ट्रिंग): एपीआई कॉल में फ़ंक्शन के लिए यूनीक आइडेंटिफ़ायर.
  • description (स्ट्रिंग): फ़ंक्शन के मकसद और सुविधाओं के बारे में पूरी जानकारी.
  • parameters (ऑब्जेक्ट): फ़ंक्शन के लिए ज़रूरी इनपुट डेटा तय करता है.
    • type (स्ट्रिंग): इससे पूरे डेटा टाइप के बारे में पता चलता है, जैसे कि object.
    • properties (ऑब्जेक्ट): अलग-अलग पैरामीटर की सूची बनाता है. हर पैरामीटर में ये चीज़ें होती हैं:
      • type (स्ट्रिंग): पैरामीटर का डेटा टाइप, जैसे कि string, integer, boolean.
      • description (स्ट्रिंग): पैरामीटर के मकसद और उसके सही फ़ॉर्मैट के बारे में साफ़ तौर पर जानकारी.
    • required (कलेक्शन): यह पैरामीटर के नामों की सूची वाली स्ट्रिंग का कलेक्शन होता है. फ़ंक्शन के काम करने के लिए, इन नामों की वैल्यू देना ज़रूरी होता है.

cURL निर्देशों का इस्तेमाल करके फ़ंक्शन के एलान के कोड के उदाहरणों के लिए, फ़ंक्शन को कॉल करने के उदाहरण देखें. Gemini API SDK टूल का इस्तेमाल करके, फ़ंक्शन के एलान बनाने के उदाहरणों के लिए, फ़ंक्शन कॉल करने का ट्यूटोरियल देखें.

फ़ंक्शन के एलान के लिए सबसे सही तरीके

अपने अनुरोधों में फ़ंक्शन को सही तरीके से शामिल करना ज़रूरी है. हर फ़ंक्शन, खास पैरामीटर पर निर्भर करता है. ये पैरामीटर, मॉडल के साथ उसके व्यवहार और इंटरैक्शन को कंट्रोल करते हैं. नीचे दी गई सूची में, functions_declarations ऐरे में किसी फ़ंक्शन के पैरामीटर तय करने के बारे में बताया गया है.

  • name: स्पेस, पीरियड (.) या डैश (-) वर्ण के बिना, साफ़ और जानकारी देने वाले नामों का इस्तेमाल करें. इसके बजाय, अंडरस्कोर (_) वर्णों या कैमल केस का इस्तेमाल करें.

  • description: फ़ंक्शन के बारे में पूरी जानकारी दें. साथ ही, ज़रूरत पड़ने पर उदाहरण भी दें. उदाहरण के लिए, find theaters के बजाय, find theaters based on location and optionally movie title that is currently playing in theaters. का इस्तेमाल करें. ज़्यादा जानकारी या अस्पष्ट जानकारी देने से बचें.

  • properties > type: मॉडल में गड़बड़ियों को कम करने के लिए, स्ट्रॉन्गली टाइप किए गए पैरामीटर का इस्तेमाल करें. उदाहरण के लिए, अगर पैरामीटर की वैल्यू किसी सीमित सेट से हैं, तो ब्यौरे में वैल्यू की सूची बनाने के बजाय, enum फ़ील्ड का इस्तेमाल करें (उदाहरण के लिए, "type": "enum", "values": ["now_playing", "upcoming"]). अगर पैरामीटर की वैल्यू हमेशा पूर्णांक होती है, तो टाइप को number के बजाय integer पर सेट करें.

  • properties > description: साफ़ तौर पर उदाहरण और पाबंदियां दें. उदाहरण के लिए, the location to search के बजाय The city and state, e.g. San Francisco, CA or a zip code e.g. 95616 का इस्तेमाल करें.

फ़ंक्शन कॉल करने के सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, सबसे सही तरीके सेक्शन देखें.

फ़ंक्शन कॉलिंग मोड

सुविधा के लागू होने के तरीके में बदलाव करने के लिए, फ़ंक्शन कॉलिंग mode पैरामीटर का इस्तेमाल किया जा सकता है. इसके तीन मोड उपलब्ध हैं:

  • AUTO: मॉडल का डिफ़ॉल्ट व्यवहार. मॉडल यह तय करता है कि किसी फ़ंक्शन कॉल या सामान्य भाषा में दिए गए जवाब का अनुमान लगाया जाए.
  • ANY: मॉडल को हमेशा फ़ंक्शन कॉल का अनुमान लगाने के लिए बाध्य किया जाता है. अगर allowed_function_names नहीं दिया गया है, तो मॉडल, फ़ंक्शन के सभी उपलब्ध एलान में से किसी एक को चुनता है. अगर allowed_function_names दिया गया है, तो मॉडल, अनुमति वाले फ़ंक्शन के सेट में से चुनता है.
  • NONE: मॉडल, फ़ंक्शन कॉल का अनुमान नहीं लगाएगा. इस मामले में, मॉडल का व्यवहार वैसा ही होता है जैसे कोई फ़ंक्शन एलान न किया गया हो.

ANY मोड ("फ़ंक्शन को जबरन कॉल करना") का इस्तेमाल, सिर्फ़ Gemini 1.5 Pro और Gemini 1.5 Flash मॉडल के लिए किया जा सकता है.

allowed_function_names का एक सेट भी पास किया जा सकता है. ऐसा करने पर, उन फ़ंक्शन की संख्या सीमित हो जाती है जिन्हें मॉडल कॉल करेगा. आपको सिर्फ़ तब allowed_function_names शामिल करना चाहिए, जब मोड ANY हो. फ़ंक्शन के नाम, फ़ंक्शन के एलान के नाम से मेल खाने चाहिए. मोड को ANY और allowed_function_names सेट करने पर, मॉडल दिए गए फ़ंक्शन के नामों के सेट से फ़ंक्शन कॉल का अनुमान लगाएगा.

अनुरोध के उदाहरण से लिया गया यह कोड स्निपेट, mode को ANY पर सेट करने और अनुमति वाले फ़ंक्शन की सूची तय करने का तरीका दिखाता है:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

फ़ंक्शन कॉल करने के उदाहरण

इस सेक्शन में, cURL निर्देशों का इस्तेमाल करके फ़ंक्शन कॉल करने के लिए, प्रॉम्प्ट के उदाहरण दिए गए हैं. उदाहरणों में, एक मोड़ और कई मोड़ वाले मामले शामिल हैं. साथ ही, फ़ंक्शन को कॉल करने के अलग-अलग मोड चालू करने के बारे में भी बताया गया है.

इस सुविधा के साथ cURL निर्देशों का इस्तेमाल करने पर, फ़ंक्शन और पैरामीटर की जानकारी tools एलिमेंट में शामिल की जाती है. tools एलिमेंट में मौजूद हर फ़ंक्शन के एलान में, फ़ंक्शन का नाम होता है. साथ ही, OpenAPI के साथ काम करने वाले स्कीमा और फ़ंक्शन की जानकारी का इस्तेमाल करके, पैरामीटर तय किए जाते हैं.

एक बार के टर्न का उदाहरण

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

यहां दिया गया कर्ल सैंपल, किसी फ़ंक्शन की जानकारी देने का उदाहरण है. यह फ़ंक्शन, यह जानकारी दिखाता है कि कोई फ़िल्म कहां चल रही है. अनुरोध में कई फ़ंक्शन एलान शामिल हैं, जैसे कि find_movies और find_theaters.

एक बार कॉल करने वाले फ़ंक्शन के उदाहरण का अनुरोध

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show Barbie movie?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ]
}'
    

इस curl उदाहरण का जवाब, नीचे दिए गए जवाब जैसा हो सकता है.

एक बार में काम करने वाले फ़ंक्शन के ज़रिए, कर्ल को कॉल करने के उदाहरण का जवाब

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "movie": "Barbie",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "totalTokenCount": 9
  }
}]
    

किसी भी मोड का इस्तेमाल करके, एक बार में एक टर्न करने का उदाहरण

यहां दिया गया कर्ल का उदाहरण, सिंगल-टर्न के उदाहरण से मिलता-जुलता है. हालांकि, इसमें mode को ANY पर सेट किया गया है:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

किसी भी मोड का इस्तेमाल करके, सिंगल-टर्न फ़ंक्शन कॉलिंग (अनुरोध)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

जवाब कुछ ऐसा हो सकता है:

किसी भी मोड का इस्तेमाल करके, सिंगल-टर्न फ़ंक्शन कॉलिंग (रिस्पॉन्स)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

किसी भी मोड और अनुमति वाले फ़ंक्शन का इस्तेमाल करके, एक बार में होने वाले बदलाव का उदाहरण

यहां दिया गया कर्ल का उदाहरण, सिंगल-टर्न उदाहरण से मिलता-जुलता है. हालांकि, इसमें mode को ANY पर सेट किया गया है और अनुमति वाले फ़ंक्शन की सूची शामिल है:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

किसी भी मोड और अनुमति वाले फ़ंक्शन का इस्तेमाल करके, सिंगल-टर्न फ़ंक्शन कॉल करना (अनुरोध)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

मॉडल, find_movies फ़ंक्शन का अनुमान नहीं लगा सकता, क्योंकि यह अनुमति वाले फ़ंक्शन की सूची में शामिल नहीं है. इसलिए, यह किसी दूसरे फ़ंक्शन का अनुमान लगाता है. रिस्पॉन्स कुछ ऐसा हो सकता है:

ANY मोड और अनुमति वाले फ़ंक्शन का इस्तेमाल करके, सिंगल-टर्न फ़ंक्शन कॉल करना (रिस्पॉन्स)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

एक से ज़्यादा बार बातचीत करने के उदाहरण

एक से ज़्यादा बार कॉल करने की सुविधा को लागू करने के लिए, यह तरीका अपनाएं:

  1. भाषा मॉडल को कॉल करके, फ़ंक्शन कॉल का जवाब पाएं. यह पहला मुड़ाव है.
  2. पहले टर्न से मिले फ़ंक्शन कॉल रिस्पॉन्स और उस फ़ंक्शन को कॉल करने से मिले फ़ंक्शन रिस्पॉन्स का इस्तेमाल करके, भाषा मॉडल को कॉल करें. यह दूसरा चरण है.

दूसरे चरण में मिलने वाले जवाब में, पहले चरण में आपकी क्वेरी के जवाब के लिए नतीजों की खास जानकारी दी जाती है. इसके अलावा, इसमें दूसरा फ़ंक्शन कॉल भी शामिल होता है. इसका इस्तेमाल करके, अपनी क्वेरी के बारे में ज़्यादा जानकारी पाई जा सकती है.

इस विषय में, एक से ज़्यादा बार मुड़ने वाले कर्ल के दो उदाहरण शामिल हैं:

पिछले चरण के जवाब का इस्तेमाल करना

यहां दिया गया कर्ल सैंपल, जवाब पाने के लिए, एक ही चरण वाले पिछले उदाहरण से मिले फ़ंक्शन और आर्ग्युमेंट को कॉल करता है. एक-टर्न वाले उदाहरण से मिले तरीके और पैरामीटर, इस JSON में मौजूद हैं.

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

मल्टी-टर्न फ़ंक्शन कॉलिंग कर्ल के अनुरोध का उदाहरण

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

इस curl उदाहरण के रिस्पॉन्स में, find_theaters तरीके को कॉल करने का नतीजा शामिल है. जवाब कुछ ऐसा हो सकता है:

एक से ज़्यादा बार कॉल करने वाले फ़ंक्शन के लिए, कर्ल के जवाब का उदाहरण

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "candidatesTokenCount": 27,
    "totalTokenCount": 36
  }
}
    

मॉडल को कई बार कॉल करना

यहां दिया गया cURL उदाहरण, किसी फ़ंक्शन को कॉल करने के लिए जनरेटिव एआई मॉडल को कई बार कॉल करता है. जब भी मॉडल फ़ंक्शन को कॉल करता है, तो अनुरोध में उपयोगकर्ता की किसी दूसरी क्वेरी का जवाब देने के लिए, वह किसी दूसरे फ़ंक्शन का इस्तेमाल कर सकता है.

मल्टी-टर्न फ़ंक्शन कॉलिंग कर्ल के अनुरोध का उदाहरण

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

एक से ज़्यादा बार कॉल करने वाले फ़ंक्शन के लिए, कर्ल के जवाब का उदाहरण

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 48,
    "totalTokenCount": 48
  }
}
]
    

सबसे सही तरीके

फ़ंक्शन कॉल की सटीक और भरोसेमंद जानकारी पाने के लिए, इन सबसे सही तरीकों का पालन करें.

उपयोगकर्ता प्रॉम्प्ट

बेहतर नतीजे पाने के लिए, उपयोगकर्ता की क्वेरी के आगे यह जानकारी जोड़ें:

  • मॉडल के लिए अतिरिक्त जानकारी. उदाहरण के लिए, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • फ़ंक्शन इस्तेमाल करने के तरीके और समय के बारे में जानकारी या निर्देश. उदाहरण के लिए, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • अगर उपयोगकर्ता की क्वेरी साफ़ तौर पर नहीं समझ आ रही हैं, तो उन्हें समझाने के लिए सवाल पूछने के निर्देश. उदाहरण के लिए, Ask clarifying questions if not enough information is available to complete the request.

सैंपलिंग पैरामीटर

तापमान पैरामीटर के लिए, 0 या किसी दूसरी कम वैल्यू का इस्तेमाल करें. इससे मॉडल को ज़्यादा भरोसेमंद नतीजे जनरेट करने का निर्देश मिलता है. साथ ही, गलत नतीजों की संख्या कम हो जाती है.

एपीआई को कॉल करना

अगर मॉडल किसी ऐसे फ़ंक्शन को ट्रिगर करने का सुझाव देता है जिससे कोई ऑर्डर भेजा जा सकता है, किसी डेटाबेस को अपडेट किया जा सकता है या कोई और अहम नतीजा मिल सकता है, तो उसे लागू करने से पहले उपयोगकर्ता से फ़ंक्शन कॉल की पुष्टि करें.