जेमा के साथ फ़ंक्शन कॉल

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

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

फ़ंक्शन कॉलिंग का इस्तेमाल कई कामों के लिए किया जा सकता है:

  • प्रोग्रामिंग एपीआई के लिए नैचुरल लैंग्वेज इंटरफ़ेस बनाएं, ताकि प्रोग्रामर के अलावा अन्य लोग भी कोडिंग के बिना प्रोग्रामिंग इंटरफ़ेस का इस्तेमाल कर सकें.
  • एआई एजेंट वर्कफ़्लो के हिस्से के तौर पर, प्रोग्रामिंग कॉल जनरेट करना

फ़ंक्शन कॉल करने की सुविधा, Gemma 3 में काम करती है. हालांकि, फ़ंक्शन कॉल करने की तकनीक का इस्तेमाल, Gemma के पुराने वर्शन के साथ किया जा सकता है. इस गाइड में, फ़ंक्शन कॉल का इस्तेमाल करने वाले Gemma प्रॉम्प्ट बनाने का तरीका बताया गया है. बेहतर परफ़ॉर्मेंस के लिए, हम Gemma3 27B का सुझाव देते हैं. साथ ही, संतुलित परफ़ॉर्मेंस और इंतज़ार के समय के लिए, Gemma3 12B का सुझाव देते हैं.

कॉल प्रोग्रामिंग फ़ंक्शन

Gemma के साथ फ़ंक्शन कॉलिंग का इस्तेमाल करने के लिए, ऐसा प्रॉम्प्ट बनाएं जिसमें आउटपुट फ़ॉर्मैट और उपलब्ध फ़ंक्शन के बारे में निर्देश दिए गए हों.

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

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

You have access to functions. If you decide to invoke any of the function(s),
 you MUST put it in the format of
[func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

इस प्रॉम्प्ट से यह जवाब मिलना चाहिए:

[get_product_name_by_PID(PID="807ZPKBL9V")]

इस उदाहरण में, Python स्टाइल फ़ंक्शन कॉल आउटपुट का इस्तेमाल किया गया है. इसके अलावा, JSON स्टाइल का आउटपुट फ़ॉर्मैट भी दिया जा सकता है, जैसा कि इस उदाहरण में दिखाया गया है:

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

इस प्रॉम्प्ट से यह जवाब मिलना चाहिए:

{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}

फ़ंक्शन कॉल करने के प्रॉम्प्ट के कॉम्पोनेंट

Gemma मॉडल के साथ फ़ंक्शन कॉलिंग का इस्तेमाल करते समय, मॉडल के लिए आपका प्रॉम्प्ट इस क्रम और स्ट्रक्चर का पालन करना चाहिए:

  1. फ़ंक्शन कॉल करने की सुविधा को सेटअप करना
  2. फ़ंक्शन की परिभाषाएं

यहां दिए गए सेक्शन में, इनमें से हर प्रॉम्प्टिंग कॉम्पोनेंट के बारे में ज़्यादा जानकारी दी गई है.

फ़ंक्शन कॉल सेटअप करना

फ़ंक्शन कॉल करने वाले प्रॉम्प्ट का सेटअप सेक्शन, मॉडल के काम करने के तरीके को सेट करता है. इस सेक्शन में, मॉडल के व्यवहार के लिए सामान्य निर्देश जोड़े जा सकते हैं. जैसे, यह बताना कि आउटपुट को print या console.log फ़ंक्शन का इस्तेमाल करके दिखाया जाना चाहिए. कोड सिंटैक्स दिखाने के लिए, मार्कडाउन स्टाइल के सिंगल बैकटिक (func_name) का इस्तेमाल करें.

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function

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

फ़ंक्शन की परिभाषा

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

[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  },
  {
    "name": "get_product_price_by_PID",
    "description": "Finds the price of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]

अगले चरण

Gemma मॉडल को डिप्लॉय और चलाने के तरीके देखें: