टेक्स्ट जनरेट करना

Gemini API, इनपुट के तौर पर टेक्स्ट, इमेज, वीडियो, और ऑडियो दिए जाने पर टेक्स्ट आउटपुट जनरेट कर सकता है.

इस गाइड में, generateContent और streamGenerateContent तरीकों का इस्तेमाल करके टेक्स्ट जनरेट करने का तरीका बताया गया है. Gemini की विज़न और ऑडियो की सुविधाओं के साथ काम करने के बारे में जानने के लिए, Vision और ऑडियो से जुड़ी गाइड देखें.

सिर्फ़ टेक्स्ट वाले इनपुट से टेक्स्ट जनरेट करना

Gemini API का इस्तेमाल करके टेक्स्ट जनरेट करने का सबसे आसान तरीका यह है कि मॉडल को सिर्फ़ टेक्स्ट वाला एक इनपुट दिया जाए, जैसा कि इस उदाहरण में दिखाया गया है:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

इस मामले में, प्रॉम्प्ट ("एआई कैसे काम करता है, इसकी जानकारी दें") में, आउटपुट के उदाहरण, सिस्टम के निर्देश या फ़ॉर्मैटिंग की जानकारी शामिल नहीं होती. यह ज़ीरो-शॉट वाला तरीका है. कुछ इस्तेमाल के उदाहरणों के लिए, एक-शॉट या कुछ-शॉट प्रॉम्प्ट से ऐसा आउटपुट मिल सकता है जो उपयोगकर्ता की उम्मीदों के मुताबिक हो. कुछ मामलों में, मॉडल को टास्क समझने या खास दिशा-निर्देशों का पालन करने में मदद करने के लिए, सिस्टम के निर्देश भी दिए जा सकते हैं.

टेक्स्ट और इमेज के इनपुट से टेक्स्ट जनरेट करना

Gemini API, अलग-अलग तरह के इनपुट के साथ काम करता है. इनमें टेक्स्ट और मीडिया फ़ाइलें शामिल होती हैं. यहां दिए गए उदाहरण में, टेक्स्ट और इमेज इनपुट से टेक्स्ट जनरेट करने का तरीका बताया गया है:

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

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

टेक्स्ट स्ट्रीम जनरेट करना

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

इंटरैक्टिव चैट बनाना

Gemini SDK की मदद से, कई सवालों और जवाबों को इकट्ठा किया जा सकता है. इससे उपयोगकर्ताओं को जवाब पाने में मदद मिलती है. साथ ही, कई हिस्सों वाली समस्याओं को हल करने में भी मदद मिलती है. SDK टूल की यह सुविधा, बातचीत के इतिहास को ट्रैक करने के लिए एक इंटरफ़ेस उपलब्ध कराती है. हालांकि, जवाब देने के लिए, यह generateContentवही तरीका इस्तेमाल करती है जो SDK टूल के बिना इस्तेमाल किया जाता है.

यहां दिए गए कोड के उदाहरण में, चैट को लागू करने का बुनियादी तरीका बताया गया है:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

चैट स्ट्रीमिंग की सुविधा चालू करना

चैट के साथ स्ट्रीमिंग की सुविधा का इस्तेमाल भी किया जा सकता है. इसका उदाहरण यहां दिया गया है:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

टेक्स्ट जनरेशन की सुविधा कॉन्फ़िगर करना

मॉडल को भेजे गए हर प्रॉम्प्ट में ऐसे पैरामीटर शामिल होते हैं जिनसे यह कंट्रोल होता है कि मॉडल जवाब कैसे जनरेट करता है. इन पैरामीटर को कॉन्फ़िगर करने के लिए, GenerationConfig का इस्तेमाल किया जा सकता है. अगर पैरामीटर कॉन्फ़िगर नहीं किए जाते हैं, तो मॉडल डिफ़ॉल्ट विकल्पों का इस्तेमाल करता है. ये विकल्प, मॉडल के हिसाब से अलग-अलग हो सकते हैं.

यहां दिए गए उदाहरण में, उपलब्ध कई विकल्पों को कॉन्फ़िगर करने का तरीका बताया गया है.

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

stopSequences, कैरेक्टर सीक्वेंस के सेट (ज़्यादा से ज़्यादा पांच) के बारे में बताता है, जो आउटपुट जनरेशन को रोक देगा. अगर एपीआई को stop_sequence के दिखने पर रोकना है, तो एपीआई को stop_sequence के दिखने पर रोक दिया जाएगा. जवाब में स्टॉप का क्रम शामिल नहीं किया जाएगा.

temperature, आउटपुट में रैंडम एलिमेंट को कंट्रोल करता है. ज़्यादा क्रिएटिव जवाबों के लिए ज़्यादा वैल्यू का इस्तेमाल करें. वहीं, ज़्यादा तय जवाबों के लिए कम वैल्यू का इस्तेमाल करें. वैल्यू [0.0, 2.0] के बीच हो सकती हैं.

maxOutputTokens, किसी कैंडिडेट में शामिल करने के लिए ज़्यादा से ज़्यादा टोकन सेट करता है.

topP से, मॉडल के आउटपुट के लिए टोकन चुनने का तरीका बदलता है. टोकन को सबसे ज़्यादा से सबसे कम संभावना के हिसाब से तब तक चुना जाता है, जब तक उनकी संभावनाओं का योग topP वैल्यू के बराबर न हो जाए. topP की डिफ़ॉल्ट वैल्यू 0.95 है.

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

सिस्टम के निर्देश जोड़ना

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

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

मॉडल को शुरू करते समय, सिस्टम के निर्देश सेट किए जा सकते हैं:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

सिस्टम निर्देशों का इस्तेमाल करने का इंटरैक्टिव उदाहरण देखने के लिए, सिस्टम निर्देशों के बारे में जानकारी वाला Colab देखें.

आगे क्या करना है

Gemini API के बारे में बुनियादी बातें जानने के बाद, ये काम किए जा सकते हैं:

  • विज़न को समझना: इमेज और वीडियो को प्रोसेस करने के लिए, Gemini के नेटिव विज़न को समझने की सुविधा का इस्तेमाल करने का तरीका जानें.
  • ऑडियो समझने की सुविधा: ऑडियो फ़ाइलों को प्रोसेस करने के लिए, Gemini की ऑडियो समझने की सुविधा का इस्तेमाल करने का तरीका जानें.