ट्यूटोरियल: Gemini API का इस्तेमाल शुरू करना


इस ट्यूटोरियल में Node.js के लिए Gemini API को ऐक्सेस करने का तरीका बताया गया है Google के एआई JavaScript SDK टूल का इस्तेमाल करने वाला ऐप्लिकेशन.

इस ट्यूटोरियल में आप इन कामों को करने का तरीका जानेंगे:

इसके अलावा, इस ट्यूटोरियल में बेहतर इस्तेमाल के उदाहरणों (जैसे एम्बेड करना और टोकन गिनना) और विकल्प कॉन्टेंट जनरेट करने के तरीके को कंट्रोल करना.

ज़रूरी शर्तें

यह ट्यूटोरियल मानता है कि आप Node.js.

इस ट्यूटोरियल को पूरा करने के लिए, पक्का करें कि आपका डेवलपमेंट एनवायरमेंट सही हो ये ज़रूरी शर्तें:

  • Node.js वर्शन 18+
  • npm

अपना प्रोजेक्ट सेट अप करना

Gemini API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा. इसमें ये शामिल हैं एपीआई पासकोड सेट अप करना, SDK टूल पैकेज इंस्टॉल करना, और मॉडल शुरू करना.

एपीआई पासकोड सेट अप करना

Gemini API का इस्तेमाल करने के लिए, आपको एपीआई पासकोड की ज़रूरत होगी. अगर आपके पास पहले से कोई AdSense खाता नहीं है, तो Google AI Studio में कोई पासकोड बनाएं.

एपीआई पासकोड पाएं

एपीआई पासकोड को सुरक्षित रखना

हमारा सुझाव है कि आप अपने वर्शन में एपीआई पासकोड की जांच करें कंट्रोल सिस्टम पर काम करते हैं. इसके बजाय, आपको एपीआई पासकोड के लिए सीक्रेट स्टोर का इस्तेमाल करना चाहिए.

इस ट्यूटोरियल के सभी स्निपेट को यह लगता है कि एपीआई पासकोड को ऐक्सेस करने के लिए, इसका इस्तेमाल किया जा रहा है: एक एनवायरमेंट वैरिएबल.

SDK टूल का पैकेज इंस्टॉल करें

अपने ऐप्लिकेशन में Gemini API का इस्तेमाल करने के लिए, आपको Node.js के लिए GoogleGenerativeAI पैकेज:

npm install @google/generative-ai

जनरेटिव मॉडल शुरू करें

कोई भी एपीआई कॉल करने से पहले, आपको जनरेटिव मॉडल.

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// ...

// The Gemini 1.5 models are versatile and work with most use cases
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});

// ...

मॉडल तय करते समय, इन बातों का ध्यान रखें:

  • उस मॉडल का इस्तेमाल करें जो आपके इस्तेमाल के उदाहरण के हिसाब से हो. उदाहरण के लिए, gemini-1.5-flash मल्टीमोडल इनपुट के लिए है). इस गाइड में, हर विज्ञापन के लिए निर्देश लागू करने के लिए, इस्तेमाल के हर उदाहरण के लिए सुझाए गए मॉडल की सूची दी जानी चाहिए.

इस्तेमाल के सामान्य उदाहरण लागू करना

आपका प्रोजेक्ट सेट अप हो गया है. अब Gemini API का इस्तेमाल करके, इस्तेमाल के अलग-अलग उदाहरण लागू करें:

'बेहतर इस्तेमाल के उदाहरण' सेक्शन में, आपको Gemini API के बारे में जानकारी मिल सकती है और एम्बेड की जाने वाली परफ़ॉर्मेंस की जांच करें.

सिर्फ़ टेक्स्ट इनपुट से टेक्स्ट जनरेट करें

अगर प्रॉम्प्ट इनपुट में सिर्फ़ टेक्स्ट शामिल है, तो टेक्स्ट आउटपुट जनरेट करने के लिए, Gemini के generateContent के साथ Gemini 1.5 मॉडल का इस्तेमाल करें:

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
  // The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
  const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});

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

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

run();

टेक्स्ट और इमेज इनपुट से टेक्स्ट जनरेट करें (मल्टीमॉडल)

के साथ

Gemini 1.5 Flash और 1.5 Pro, मल्टीमॉडल इनपुट को हैंडल कर सकते हैं, ताकि आप दोनों टेक्स्ट इनपुट कर सकें और इमेज. कृपया प्रॉम्प्ट के लिए इमेज से जुड़ी ज़रूरी शर्तें.

अगर प्रॉम्प्ट वाले इनपुट में टेक्स्ट और इमेज, दोनों शामिल हैं, तो Gemini के 1.5 मॉडल के साथ टेक्स्ट आउटपुट जनरेट करने के लिए generateContent तरीका:

const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// Converts local file information to a GoogleGenerativeAI.Part object.
function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType
    },
  };
}

async function run() {
  // The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
  const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

  const prompt = "What's different between these pictures?";

  const imageParts = [
    fileToGenerativePart("image1.png", "image/png"),
    fileToGenerativePart("image2.jpeg", "image/jpeg"),
  ];

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

run();

बार-बार होने वाली बातचीत (चैट) की सुविधा तैयार करें

Gemini की मदद से, अलग-अलग मौकों पर फ़्रीफ़ॉर्म तरीके से बातचीत की जा सकती है. कॉन्टेंट बनाने SDK टूल, बातचीत की प्रोसेस को मैनेज करके इस प्रक्रिया को आसान बनाता है. यह प्रोसेस को आसान बनाता है generateContent के साथ, आपको बातचीत के इतिहास को सेव करने की ज़रूरत नहीं होती है खुद को बेहतर बनाएं.

कई चरणों में होने वाली बातचीत (जैसे, चैट) शुरू करने के लिए, Gemini के 1.5 मॉडल या Gemini 1.0 Pro मॉडल का इस्तेमाल करें और startChat() को कॉल करके चैट शुरू करें. इसके बाद, उपयोगकर्ता को नया मैसेज भेजने के लिए sendMessage() का इस्तेमाल करें. इससे, यह भी जुड़ जाएगा मैसेज और चैट के इतिहास पर दिया गया जवाब.

इसमें मौजूद कॉन्टेंट से जुड़े role के लिए दो विकल्प हो सकते हैं: बातचीत:

  • user: वह भूमिका जो प्रॉम्प्ट देती है. यह मान इसके लिए डिफ़ॉल्ट है: sendMessage कॉल.

  • model: वह भूमिका जो जवाब देती है. इस भूमिका का इस्तेमाल तब किया जा सकता है, जब मौजूदा history से startChat() को कॉल किया जा रहा है.

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
  // The Gemini 1.5 models are versatile and work with multi-turn conversations (like chat)
  const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});

  const chat = model.startChat({
    history: [
      {
        role: "user",
        parts: [{ text: "Hello, I have 2 dogs in my house." }],
      },
      {
        role: "model",
        parts: [{ text: "Great to meet you. What would you like to know?" }],
      },
    ],
    generationConfig: {
      maxOutputTokens: 100,
    },
  });

  const msg = "How many paws are in my house?";

  const result = await chat.sendMessage(msg);
  const response = await result.response;
  const text = response.text();
  console.log(text);
}

run();

तेज़ी से इंटरैक्शन करने के लिए स्ट्रीमिंग का इस्तेमाल करें

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

नीचे दिया गया उदाहरण, टेक्स्ट और इमेज इनपुट से टेक्स्ट जनरेट करने का generateContentStream तरीका प्रॉम्प्ट.

//...

const result = await model.generateContentStream([prompt, ...imageParts]);

let text = '';
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
  text += chunkText;
}

//...

सिर्फ़ टेक्स्ट इनपुट और चैट के इस्तेमाल के लिए, इसी तरीके का इस्तेमाल किया जा सकता है.

// Use streaming with text-only input
const result = await model.generateContentStream(prompt);

इंस्टैंशिएट करने का तरीका जानने के लिए, ऊपर दिए गए चैट का उदाहरण देखें chat.

// Use streaming with multi-turn conversations (like chat)
const result = await chat.sendMessageStream(msg);

इस्तेमाल के बेहतर उदाहरण लागू करना

इस ट्यूटोरियल सहायता के पिछले सेक्शन में, इस्तेमाल के जिन सामान्य उदाहरणों के बारे में बताया गया है तो आपको Gemini API का इस्तेमाल करने में कोई दिक्कत नहीं है. इस सेक्शन में, कुछ ऐसी जिन्हें ज़्यादा बेहतर माना जा सकता है.

एम्बेड करने की सुविधा का इस्तेमाल करना

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

embedContent तरीके के साथ embedding-001 मॉडल का इस्तेमाल करें (या batchEmbedContent तरीका). यह उदाहरण किसी सिंगल स्ट्रिंग के लिए एम्बेडिंग जनरेट करता है:

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
  // For embeddings, use the embedding-001 model
  const model = genAI.getGenerativeModel({ model: "embedding-001"});

  const text = "The quick brown fox jumps over the lazy dog."

  const result = await model.embedContent(text);
  const embedding = result.embedding;
  console.log(embedding.values);
}

run();

फ़ंक्शन कॉलिंग

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

टोकन गिनें

लंबे प्रॉम्प्ट का इस्तेमाल करते समय, किसी भी मैसेज को भेजने से पहले टोकन की गिनती करना मददगार हो सकता है मॉडल के लिए कॉन्टेंट उपलब्ध कराता है. नीचे दिए गए उदाहरणों में, countTokens() को इस्तेमाल करने का तरीका बताया गया है इस तरह की जानकारी:

// For text-only input
const { totalTokens } = await model.countTokens(prompt);
// For text-and-image input (multimodal)
const { totalTokens } = await model.countTokens([prompt, ...imageParts]);
// For multi-turn conversations (like chat)
const history = await chat.getHistory();
const msgContent = { role: "user", parts: [{ text: msg }] };
const contents = [...history, msgContent];
const { totalTokens } = await model.countTokens({ contents });

कॉन्टेंट जनरेट करने की प्रोसेस को कंट्रोल करने के विकल्प

मॉडल पैरामीटर कॉन्फ़िगर करके और इनका इस्तेमाल करके, कॉन्टेंट जनरेट होने की प्रोसेस को कंट्रोल किया जा सकता है सुरक्षा सेटिंग.

ध्यान दें कि किसी मॉडल अनुरोध के लिए generationConfig या safetySettings को पास करना तरीका (जैसे generateContent) कॉन्फ़िगरेशन ऑब्जेक्ट को पूरी तरह से ओवरराइड कर देगा getGenerativeModel में पास किए गए नाम से.

मॉडल पैरामीटर कॉन्फ़िगर करें

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

const generationConfig = {
  stopSequences: ["red"],
  maxOutputTokens: 200,
  temperature: 0.9,
  topP: 0.1,
  topK: 16,
};

// The Gemini 1.5 models are versatile and work with most use cases
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash",  generationConfig });

सुरक्षा सेटिंग का इस्तेमाल करना

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

यहां एक सुरक्षा सेटिंग सेट करने का तरीका बताया गया है:

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
  },
];

// The Gemini 1.5 models are versatile and work with most use cases
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings });

आप एक से ज़्यादा सुरक्षा सेटिंग भी सेट कर सकते हैं:

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
  },
];

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

  • प्रॉम्प्ट डिज़ाइन ऐसे प्रॉम्प्ट बनाने की प्रोसेस है जो आपके काम के लैंग्वेज मॉडल से मिले रिस्पॉन्स. अच्छी तरह से स्ट्रक्चर किए गए प्रॉम्प्ट लिखना बहुत ज़रूरी है यह पक्का किया जा सकता है कि किसी भाषा के मॉडल से सही और अच्छी क्वालिटी के जवाब मिले हैं. प्रॉम्प्ट लिखने के सबसे सही तरीके जानें.

  • अलग-अलग कामों की ज़रूरतों को पूरा करने के लिए, Gemini कई तरह के मॉडल उपलब्ध कराता है मामलों, जैसे इनपुट प्रकार और जटिलता, चैट या अन्य डायलॉग लैंग्वेज टास्क, और साइज़ कंस्ट्रेंट. Gemini के उपलब्ध मॉडल के बारे में जानें.