টিউটোরিয়াল: Gemini API দিয়ে শুরু করুন


এই টিউটোরিয়ালটি Google AI JavaScript SDK ব্যবহার করে আপনার Node.js অ্যাপ্লিকেশনের জন্য Gemini API কীভাবে অ্যাক্সেস করতে হয় তা প্রদর্শন করে।

এই টিউটোরিয়ালে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:

এছাড়াও, এই টিউটোরিয়ালটিতে উন্নত ব্যবহারের ক্ষেত্রে (যেমন এম্বেডিং এবং গণনা টোকেন ) এবং সেইসাথে বিষয়বস্তু তৈরি নিয়ন্ত্রণের বিকল্পগুলি রয়েছে।

পূর্বশর্ত

এই টিউটোরিয়ালটি অনুমান করে যে আপনি Node.js এর সাথে অ্যাপ্লিকেশন তৈরি করার সাথে পরিচিত।

এই টিউটোরিয়ালটি সম্পূর্ণ করতে, নিশ্চিত করুন যে আপনার উন্নয়ন পরিবেশ নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করে:

  • Node.js v18+
  • npm

আপনার প্রকল্প সেট আপ করুন

Gemini API কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে, যার মধ্যে আপনার API কী সেট আপ করা, SDK প্যাকেজ ইনস্টল করা এবং মডেলটি শুরু করা অন্তর্ভুক্ত রয়েছে।

আপনার API কী সেট আপ করুন

Gemini API ব্যবহার করতে, আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে Google AI স্টুডিওতে একটি কী তৈরি করুন৷

একটি API কী পান

আপনার API কী সুরক্ষিত করুন

এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে একটি API কী পরীক্ষা করবেন না ৷ পরিবর্তে, আপনার API কী এর জন্য একটি গোপন স্টোর ব্যবহার করা উচিত।

এই টিউটোরিয়ালের সমস্ত স্নিপেট অনুমান করে যে আপনি একটি পরিবেশ পরিবর্তনশীল হিসাবে আপনার API কী অ্যাক্সেস করছেন।

SDK প্যাকেজ ইনস্টল করুন

আপনার নিজের অ্যাপ্লিকেশনে Gemini API ব্যবহার করতে, আপনাকে Node.js-এর জন্য GoogleGenerativeAI প্যাকেজ ইনস্টল করতে হবে:

npm install @google/generative-ai

জেনারেটিভ মডেল শুরু করুন

আপনি যেকোন API কল করার আগে, আপনাকে জেনারেটিভ মডেলটি আমদানি এবং আরম্ভ করতে হবে।

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 এবং এম্বেডিং সম্পর্কে তথ্য পেতে পারেন।

শুধুমাত্র পাঠ্য ইনপুট থেকে পাঠ্য তৈরি করুন

যখন প্রম্পট ইনপুট শুধুমাত্র টেক্সট অন্তর্ভুক্ত করে, টেক্সট আউটপুট তৈরি করতে 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();

টেক্সট-এবং-ইমেজ ইনপুট (মাল্টিমোডাল) থেকে পাঠ্য তৈরি করুন

জেমিনি 1.5 ফ্ল্যাশ এবং 1.5 প্রো মাল্টিমোডাল ইনপুট পরিচালনা করতে পারে যাতে আপনি পাঠ্য এবং চিত্র উভয়ই ইনপুট করতে পারেন। প্রম্পটের জন্য চিত্রের প্রয়োজনীয়তাগুলি পর্যালোচনা করতে ভুলবেন না।

যখন প্রম্পট ইনপুট টেক্সট এবং ইমেজ উভয়ই অন্তর্ভুক্ত করে, তখন টেক্সট আউটপুট তৈরি করতে generateContent পদ্ধতি সহ একটি Gemini 1.5 মডেল ব্যবহার করুন:

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();

মাল্টি-টার্ন কথোপকথন তৈরি করুন (চ্যাট)

মিথুন ব্যবহার করে, আপনি একাধিক বাঁক জুড়ে ফ্রিফর্ম কথোপকথন তৈরি করতে পারেন। 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 ব্যবহারে স্বাচ্ছন্দ্য বোধ করতে সাহায্য করে। এই বিভাগে কিছু ব্যবহারের ক্ষেত্রে বর্ণনা করা হয়েছে যেগুলি আরও উন্নত বলে বিবেচিত হতে পারে।

এম্বেডিং ব্যবহার করুন

এমবেডিং হল এমন একটি কৌশল যা তথ্যকে একটি অ্যারেতে ভাসমান পয়েন্ট সংখ্যার তালিকা হিসাবে উপস্থাপন করতে ব্যবহৃত হয়। মিথুনের সাথে, আপনি একটি ভেক্টরাইজড আকারে পাঠ্য (শব্দ, বাক্য এবং পাঠ্যের ব্লক) উপস্থাপন করতে পারেন, এটি তুলনা করা এবং এম্বেডিংগুলিকে বৈসাদৃশ্য করা সহজ করে তোলে। উদাহরণ স্বরূপ, যে দুটি পাঠ্য একই বিষয়বস্তু বা অনুভূতি ভাগ করে তাদের অনুরূপ এম্বেডিং থাকা উচিত, যা গাণিতিক তুলনা কৌশল যেমন কোসাইন সাদৃশ্যের মাধ্যমে চিহ্নিত করা যেতে পারে।

এমবেডিং তৈরি করতে embedContent পদ্ধতি (বা batchEmbedContent পদ্ধতি) সহ embedding-001 মডেল ব্যবহার করুন। নিম্নলিখিত উদাহরণটি একটি একক স্ট্রিংয়ের জন্য একটি এম্বেডিং তৈরি করে:

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();

ফাংশন কলিং

ফাংশন কলিং আপনার জন্য জেনারেটিভ মডেল থেকে স্ট্রাকচার্ড ডেটা আউটপুট পেতে সহজ করে তোলে। তারপরে আপনি এই আউটপুটগুলি ব্যবহার করে অন্যান্য API কল করতে এবং মডেলে প্রাসঙ্গিক প্রতিক্রিয়া ডেটা ফেরত দিতে পারেন। অন্য কথায়, ফাংশন কলিং আপনাকে জেনারেটিভ মডেলগুলিকে বাহ্যিক সিস্টেমের সাথে সংযুক্ত করতে সাহায্য করে যাতে তৈরি করা সামগ্রীতে সর্বাধিক আপ-টু-ডেট এবং সঠিক তথ্য অন্তর্ভুক্ত থাকে। ফাংশন কলিং টিউটোরিয়ালে আরও জানুন।

টোকেন গণনা করুন

দীর্ঘ প্রম্পট ব্যবহার করার সময়, মডেলে কোনো সামগ্রী পাঠানোর আগে টোকেন গণনা করা কার্যকর হতে পারে। নিম্নলিখিত উদাহরণগুলি বিভিন্ন ব্যবহারের ক্ষেত্রে 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 এ পাস করা একই নামের সাথে কনফিগারেশন অবজেক্ট সম্পূর্ণরূপে ওভাররাইড হবে।

মডেল প্যারামিটার কনফিগার করুন

আপনি মডেলে পাঠানো প্রতিটি প্রম্পটে প্যারামিটার মান অন্তর্ভুক্ত করে যা নিয়ন্ত্রণ করে কিভাবে মডেলটি একটি প্রতিক্রিয়া তৈরি করে। মডেল বিভিন্ন পরামিতি মান জন্য বিভিন্ন ফলাফল তৈরি করতে পারে. মডেল প্যারামিটার সম্পর্কে আরও জানুন।

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,
  },
];

এরপর কি

  • প্রম্পট ডিজাইন হল প্রম্পট তৈরি করার প্রক্রিয়া যা ভাষার মডেলগুলি থেকে পছন্দসই প্রতিক্রিয়া প্রকাশ করে। একটি ভাষা মডেল থেকে সঠিক, উচ্চ মানের প্রতিক্রিয়া নিশ্চিত করার জন্য ভাল কাঠামোগত প্রম্পট লেখা একটি অপরিহার্য অংশ। প্রম্পট লেখার জন্য সর্বোত্তম অনুশীলন সম্পর্কে জানুন।

  • মিথুন বিভিন্ন ব্যবহারের ক্ষেত্রে যেমন ইনপুট প্রকার এবং জটিলতা, চ্যাট বা অন্যান্য ডায়ালগ ভাষার কাজের জন্য বাস্তবায়ন এবং আকারের সীমাবদ্ধতাগুলির প্রয়োজন মেটাতে বিভিন্ন মডেলের বৈচিত্র অফার করে। উপলব্ধ মিথুন মডেল সম্পর্কে জানুন।