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


এই টিউটোরিয়ালটি Google AI JavaScript SDK ব্যবহার করে কীভাবে সরাসরি আপনার ওয়েব অ্যাপ থেকে Gemini API অ্যাক্সেস করতে হয় তা প্রদর্শন করে। আপনি যদি আপনার ওয়েব অ্যাপে জেমিনি মডেলগুলি অ্যাক্সেস করার জন্য REST API বা সার্ভার-সাইড কোড (যেমন Node.js) এর সাথে সরাসরি কাজ করতে না চান তবে আপনি এই SDK ব্যবহার করতে পারেন৷

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

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

পূর্বশর্ত

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

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

  • (ঐচ্ছিক) Node.js
  • আধুনিক ওয়েব ব্রাউজার

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

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

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

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

একটি API কী পান

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

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

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

SDK আমদানি করুন এবং জেনারেটিভ মডেলটি শুরু করুন

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

<html>
  <body>
    <!-- ... Your HTML and CSS -->

    <script type="importmap">
      {
        "imports": {
          "@google/generative-ai": "https://esm.run/@google/generative-ai"
        }
      }
    </script>
    <script type="module">
      import { GoogleGenerativeAI } from "@google/generative-ai";

      // Fetch your API_KEY
      const API_KEY = "...";
      // Reminder: This should only be for local testing

      // Access your API key (see "Set up your API key" above)
      const genAI = new GoogleGenerativeAI(API_KEY);

      // ...

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

      // ...
    </script>
  </body>
</html>

একটি মডেল নির্দিষ্ট করার সময়, নিম্নলিখিত নোট করুন:

  • আপনার ব্যবহারের ক্ষেত্রে নির্দিষ্ট একটি মডেল ব্যবহার করুন (উদাহরণস্বরূপ, gemini-1.5-flash মাল্টিমোডাল ইনপুটের জন্য)। এই গাইডের মধ্যে, প্রতিটি বাস্তবায়নের নির্দেশাবলী প্রতিটি ব্যবহারের ক্ষেত্রে প্রস্তাবিত মডেলের তালিকা করে।

সাধারণ ব্যবহারের ক্ষেত্রে প্রয়োগ করুন

এখন আপনার প্রকল্প সেট আপ করা হয়েছে, আপনি বিভিন্ন ব্যবহারের ক্ষেত্রে প্রয়োগ করতে Gemini API ব্যবহার করে অন্বেষণ করতে পারেন:

কেবল পাঠ্য-ইনপুট থেকে পাঠ্য তৈরি করুন

যখন প্রম্পট ইনপুটটিতে কেবল পাঠ্য অন্তর্ভুক্ত থাকে, তখন পাঠ্য আউটপুট উত্পন্ন করতে generateContent সহ একটি মিথুন 1.5 মডেল বা জেমিনি 1.0 প্রো মডেল ব্যবহার করুন:

import { GoogleGenerativeAI } from "@google/generative-ai";

// Access your API key (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(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 মডেল) পরিচালনা করতে পারে যাতে আপনি পাঠ্য এবং চিত্র উভয়ই ইনপুট করতে পারেন। প্রম্পটগুলির জন্য চিত্রের প্রয়োজনীয়তাগুলি পর্যালোচনা করার বিষয়টি নিশ্চিত করুন।

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

import { GoogleGenerativeAI } from "@google/generative-ai";

// Access your API key (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(API_KEY);

// Converts a File object to a GoogleGenerativeAI.Part object.
async function fileToGenerativePart(file) {
  const base64EncodedDataPromise = new Promise((resolve) => {
    const reader = new FileReader();
    reader.onloadend = () => resolve(reader.result.split(',')[1]);
    reader.readAsDataURL(file);
  });
  return {
    inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
  };
}

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 fileInputEl = document.querySelector("input[type=file]");
  const imageParts = await Promise.all(
    [...fileInputEl.files].map(fileToGenerativePart)
  );

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

run();

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

জেমিনি ব্যবহার করে আপনি একাধিক টার্ন জুড়ে ফ্রিফর্ম কথোপকথন তৈরি করতে পারেন। এসডিকে কথোপকথনের অবস্থা পরিচালনা করে প্রক্রিয়াটিকে সহজতর করে, তাই generateContent বিপরীতে, আপনাকে কথোপকথনের ইতিহাস নিজেই সঞ্চয় করতে হবে না।

একটি মাল্টি-টার্ন কথোপকথন (চ্যাটের মতো) তৈরি করতে, একটি জেমিনি 1.5 মডেল বা জেমিনি 1.0 প্রো মডেল ব্যবহার করুন এবং startChat() কল করে চ্যাটটি আরম্ভ করুন। তারপরে একটি নতুন ব্যবহারকারী বার্তা প্রেরণের জন্য sendMessage() ব্যবহার করুন, যা চ্যাটের ইতিহাসের বার্তা এবং প্রতিক্রিয়াও সংযোজন করবে।

কথোপকথনে সামগ্রীর সাথে যুক্ত role জন্য দুটি সম্ভাব্য বিকল্প রয়েছে:

  • user : ভূমিকা যা প্রম্পট সরবরাহ করে। এই মানটি sendMessage কলগুলির জন্য ডিফল্ট, এবং যদি অন্য কোনও ভূমিকা পাস হয় তবে ফাংশনটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে।

  • model : ভূমিকা যা প্রতিক্রিয়া সরবরাহ করে। বিদ্যমান history সাথে startChat() কল করার সময় এই ভূমিকাটি ব্যবহার করা যেতে পারে।

import { GoogleGenerativeAI } from "@google/generative-ai";

// Access your API key (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(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);

উন্নত ব্যবহারের কেসগুলি প্রয়োগ করুন

এই টিউটোরিয়ালটির পূর্ববর্তী বিভাগে বর্ণিত সাধারণ ব্যবহারের কেসগুলি আপনাকে জেমিনি এপিআই ব্যবহারে স্বাচ্ছন্দ্য বোধ করতে সহায়তা করে। এই বিভাগটি এমন কিছু ব্যবহারের ক্ষেত্রে বর্ণনা করে যা আরও উন্নত হিসাবে বিবেচিত হতে পারে।

ফাংশন কলিং

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

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

দীর্ঘ প্রম্পটগুলি ব্যবহার করার সময়, মডেলটিতে কোনও সামগ্রী প্রেরণের আগে টোকেনগুলি গণনা করা কার্যকর হতে পারে। নিম্নলিখিত উদাহরণগুলি বিভিন্ন ব্যবহারের ক্ষেত্রে কীভাবে 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 });

বিষয়বস্তু জেনারেশন নিয়ন্ত্রণ করার বিকল্পগুলি

আপনি মডেল পরামিতিগুলি কনফিগার করে এবং সুরক্ষা সেটিংস ব্যবহার করে সামগ্রী প্রজন্মকে নিয়ন্ত্রণ করতে পারেন।

মডেল পরামিতিগুলি কনফিগার করুন

আপনি মডেলটিতে প্রেরণ করা প্রতিটি প্রম্পটে প্যারামিটার মানগুলি অন্তর্ভুক্ত করে যা মডেল কীভাবে প্রতিক্রিয়া তৈরি করে তা নিয়ন্ত্রণ করে। মডেল বিভিন্ন প্যারামিটার মানগুলির জন্য বিভিন্ন ফলাফল উত্পন্ন করতে পারে। মডেল পরামিতি সম্পর্কে আরও জানুন। কনফিগারেশনটি আপনার মডেল উদাহরণের আজীবন বজায় রাখা হয়।

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

এরপর কি

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

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