Gemini API का इस्तेमाल करके टेक्स्ट जनरेट करें

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

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

शुरू करने से पहले: अपना प्रोजेक्ट और एपीआई पासकोड सेट अप करना

Gemini API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा और अपनी एपीआई पासकोड को कॉन्फ़िगर करना होगा.

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

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

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream(prompt);

// Print text as it comes in.
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

candidateCount से पता चलता है कि जनरेट किए गए कितने जवाब दिखाने हैं. फ़िलहाल, इस वैल्यू को सिर्फ़ 1 पर सेट किया जा सकता है. अगर यह सेट नहीं है, तो यह डिफ़ॉल्ट रूप से 1 पर सेट हो जाएगा.

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

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

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

generateContent पर अलग-अलग कॉल को कॉन्फ़िगर भी किया जा सकता है:

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

अलग-अलग कॉल पर सेट की गई कोई भी वैल्यू, मॉडल कन्स्ट्रक्टर पर सेट की गई वैल्यू को बदल देती है.

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

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

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