পাঠ্য প্রজন্ম

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

টেক্সট ইনপুট

Gemini API ব্যবহার করে টেক্সট জেনারেট করার সবচেয়ে সহজ উপায় হল মডেলটিকে একটি মাত্র টেক্সট ইনপুট প্রদান করা, যেমন এই উদাহরণে দেখানো হয়েছে:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=["How does AI work?"]
)
print(response.text)
import { GoogleGenerativeAI } from "@google/generative-ai";

async function main() {
  const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
  const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });
  const prompt = "How does AI work?";

  const result = await model.generateContent(prompt);
  console.log(result.response.text());
}
main();
// import packages here

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
  if err != nil {
    log.Fatal(err)
  }
  defer client.Close()

  model := client.GenerativeModel("gemini-2.0-flash")
  resp, err := model.GenerateContent(ctx, genai.Text("How does AI work?"))
  if err != nil {
    log.Fatal(err)
  }
  printResponse(resp) // helper function for printing content parts
}
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "text": "How does AI work?"
          }
        ]
      }
    ]
  }'

ইমেজ ইনপুট

Gemini API মাল্টিমডাল ইনপুট সমর্থন করে যা পাঠ্য এবং মিডিয়া ফাইলগুলিকে একত্রিত করে। নিচের উদাহরণটি দেখায় কিভাবে টেক্সট এবং ইমেজ ইনপুট থেকে টেক্সট তৈরি করতে হয়:

from PIL import Image
from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

image = Image.open("/path/to/organ.png")
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=[image, "Tell me about this instrument"]
)
print(response.text)
import { GoogleGenerativeAI } from "@google/generative-ai";
import * as fs from 'node:fs';

const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-2.0-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.";
const imagePart = fileToGenerativePart("/path/to/image.png", "image/png");

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());
model := client.GenerativeModel("gemini-2.0-flash")

imgData, err := os.ReadFile(filepath.Join(testDataDir, "organ.jpg"))
if err != nil {
  log.Fatal(err)
}

resp, err := model.GenerateContent(ctx,
  genai.Text("Tell me about this instrument"),
  genai.ImageData("jpeg", imgData))
if err != nil {
  log.Fatal(err)
}

printResponse(resp)
# 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-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d "@$TEMP_JSON"

স্ট্রিমিং আউটপুট

ডিফল্টরূপে, সম্পূর্ণ পাঠ্য প্রজন্মের প্রক্রিয়াটি সম্পূর্ণ করার পরে মডেলটি একটি প্রতিক্রিয়া প্রদান করে। GenerateContentResponse এর দৃষ্টান্তগুলি তৈরি হওয়ার সাথে সাথে আপনি স্ট্রিমিং ব্যবহার করে দ্রুত মিথস্ক্রিয়া অর্জন করতে পারেন।

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content_stream(
    model="gemini-2.0-flash",
    contents=["Explain how AI works"]
)
for chunk in response:
    print(chunk.text, end="")
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Explain how AI works";

const result = await model.generateContentStream(prompt);

for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
model := client.GenerativeModel("gemini-1.5-flash")
iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }
  printResponse(resp)
}
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
  -H 'Content-Type: application/json' \
  --no-buffer \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "text": "Explain how AI works"
          }
        ]
      }
    ]
  }'

বহুমুখী কথোপকথন

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

নিম্নলিখিত কোড উদাহরণ একটি মৌলিক চ্যাট বাস্তবায়ন দেখায়:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")
chat = client.chats.create(model="gemini-2.0-flash")

response = chat.send_message("I have 2 dogs in my house.")
print(response.text)

response = chat.send_message("How many paws are in my house?")
print(response.text)

for message in chat.get_history():
    print(f'role - {message.role}',end=": ")
    print(message.parts[0].text)
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_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());
let result2 = await chat.sendMessage("How many paws are in my house?");
console.log(result2.response.text());
model := client.GenerativeModel("gemini-1.5-flash")
cs := model.StartChat()

cs.History = []*genai.Content{
  {
    Parts: []genai.Part{
      genai.Text("Hello, I have 2 dogs in my house."),
    },
    Role: "user",
  },
  {
    Parts: []genai.Part{
      genai.Text("Great to meet you. What would you like to know?"),
    },
    Role: "model",
  },
}

res, err := cs.SendMessage(ctx, genai.Text("How many paws are in my house?"))
if err != nil {
  log.Fatal(err)
}
printResponse(res)
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_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?"
          }
        ]
      }
    ]
  }'

আপনি চ্যাটের সাথে স্ট্রিমিংও ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")
chat = client.chats.create(model="gemini-2.0-flash")

response = chat.send_message_stream("I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text, end="")

response = chat.send_message_stream("How many paws are in my house?")
for chunk in response:
    print(chunk.text, end="")

for message in chat.get_history():
    print(f'role - {message.role}', end=": ")
    print(message.parts[0].text)
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_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);
}
let result2 = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result2.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
model := client.GenerativeModel("gemini-1.5-flash")
cs := model.StartChat()

cs.History = []*genai.Content{
  {
    Parts: []genai.Part{
      genai.Text("Hello, I have 2 dogs in my house."),
    },
    Role: "user",
  },
  {
    Parts: []genai.Part{
      genai.Text("Great to meet you. What would you like to know?"),
    },
    Role: "model",
  },
}

iter := cs.SendMessageStream(ctx, genai.Text("How many paws are in my house?"))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }
  printResponse(resp)
}
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_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?"
          }
        ]
      }
    ]
  }'

কনফিগারেশন পরামিতি

আপনি মডেলে পাঠানো প্রতিটি প্রম্পটে প্যারামিটার অন্তর্ভুক্ত থাকে যা মডেলটি কীভাবে প্রতিক্রিয়া তৈরি করে তা নিয়ন্ত্রণ করে। আপনি এই পরামিতিগুলি কনফিগার করতে পারেন, অথবা মডেলটিকে ডিফল্ট বিকল্পগুলি ব্যবহার করতে দিন৷

নিম্নলিখিত উদাহরণ দেখায় কিভাবে মডেল পরামিতি কনফিগার করতে হয়:

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=["Explain how AI works"],
    config=types.GenerateContentConfig(
        max_output_tokens=500,
        temperature=0.1
    )
)
print(response.text)
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const result = await model.generateContent({
    contents: [
        {
          role: 'user',
          parts: [
            {
              text: "Explain how AI works",
            }
          ],
        }
    ],
    generationConfig: {
      maxOutputTokens: 1000,
      temperature: 0.1,
    }
});

console.log(result.response.text());
model := client.GenerativeModel("gemini-1.5-pro-latest")
model.SetTemperature(0.9)
model.SetTopP(0.5)
model.SetTopK(20)
model.SetMaxOutputTokens(100)
model.SystemInstruction = genai.NewUserContent(genai.Text("You are Yoda from Star Wars."))
model.ResponseMIMEType = "application/json"
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
if err != nil {
  log.Fatal(err)
}
printResponse(resp)
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "text": "Explain how AI works"
          }
        ]
      }
    ],
    "generationConfig": {
      "stopSequences": [
        "Title"
      ],
      "temperature": 1.0,
      "maxOutputTokens": 800,
      "topP": 0.8,
      "topK": 10
    }
  }'

এখানে কিছু মডেল প্যারামিটার রয়েছে যা আপনি কনফিগার করতে পারেন। (প্রোগ্রামিং ভাষা অনুসারে নামকরণের নিয়মগুলি পরিবর্তিত হয়।)

  • stopSequences : ক্যারেক্টার সিকোয়েন্সের সেট নির্দিষ্ট করে (5 পর্যন্ত) যা আউটপুট জেনারেশন বন্ধ করবে। নির্দিষ্ট করা হলে, API একটি stop_sequence এর প্রথম উপস্থিতিতে থেমে যাবে। প্রতিক্রিয়ার অংশ হিসেবে স্টপ সিকোয়েন্স অন্তর্ভুক্ত করা হবে না।
  • temperature : আউটপুটের এলোমেলোতা নিয়ন্ত্রণ করে। আরো সৃজনশীল প্রতিক্রিয়ার জন্য উচ্চ মান ব্যবহার করুন, এবং আরো নির্ধারক প্রতিক্রিয়ার জন্য নিম্ন মান ব্যবহার করুন। মান [0.0, 2.0] থেকে পরিসীমা হতে পারে।
  • maxOutputTokens : একজন প্রার্থীকে অন্তর্ভুক্ত করার জন্য সর্বাধিক সংখ্যক টোকেন সেট করে।
  • topP : মডেল কিভাবে আউটপুট জন্য টোকেন নির্বাচন করে পরিবর্তন করে। টোকেনগুলি সর্বাধিক থেকে সর্বনিম্ন সম্ভাব্য পর্যন্ত নির্বাচন করা হয় যতক্ষণ না তাদের সম্ভাব্যতার যোগফল topP মানের সমান হয়। ডিফল্ট topP মান হল 0.95।
  • topK : মডেল কিভাবে আউটপুট জন্য টোকেন নির্বাচন করে পরিবর্তন করে। 1-এর একটি topK মানে নির্বাচিত টোকেনটি মডেলের শব্দভান্ডারের সমস্ত টোকেনের মধ্যে সবচেয়ে সম্ভাব্য, যখন 3-এর একটি topK মানে তাপমাত্রা ব্যবহার করে 3টি সম্ভাব্য টোকেনের মধ্যে থেকে পরবর্তী টোকেনটি নির্বাচন করা হয়েছে৷ তাপমাত্রা নমুনা ব্যবহার করে নির্বাচিত চূড়ান্ত টোকেন সহ topP উপর ভিত্তি করে টোকেনগুলি আরও ফিল্টার করা হয়।

সিস্টেম নির্দেশাবলী

সিস্টেম নির্দেশাবলী আপনাকে আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে একটি মডেলের আচরণ পরিচালনা করতে দেয়। আপনি যখন সিস্টেম নির্দেশাবলী প্রদান করেন, আপনি মডেলটিকে অতিরিক্ত প্রসঙ্গ দেন যাতে এটি কাজটি বুঝতে এবং আরও কাস্টমাইজড প্রতিক্রিয়া তৈরি করতে সহায়তা করে। মডেলটিকে ব্যবহারকারীর সাথে সম্পূর্ণ মিথস্ক্রিয়ায় সিস্টেম নির্দেশাবলী মেনে চলতে হবে, আপনাকে শেষ ব্যবহারকারীদের দ্বারা প্রদত্ত প্রম্পট থেকে পৃথক পণ্য-স্তরের আচরণ নির্দিষ্ট করতে সক্ষম করে।

আপনি যখন আপনার মডেল শুরু করবেন তখন আপনি সিস্টেম নির্দেশাবলী সেট করতে পারেন:

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
    model="gemini-2.0-flash",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."),
    contents="Hello there"
)

print(response.text)
import { GoogleGenerativeAI } from "@google/generative-ai";

async function main() {
  const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
  const model = genAI.getGenerativeModel({
      model: "gemini-2.0-flash",
      systemInstruction: "You are a cat. Your name is Neko.",
  });
  const prompt = "Hello there";

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

main();
// import packages here

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
  if err != nil {
    log.Fatal(err)
  }
  defer client.Close()

  model := client.GenerativeModel("gemini-2.0-flash")
  model.SystemInstruction = &genai.Content{
    Parts: []genai.Part{genai.Text(`
      You are a cat. Your name is Neko.
    `)},
  }
  resp, err := model.GenerateContent(ctx, genai.Text("Hello there"))
  if err != nil {
    log.Fatal(err)
  }
  printResponse(resp) // helper function for printing content parts
}
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_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"
          }
        ]
      }
    ]
  }'

তারপরে, আপনি যথারীতি মডেলটিতে অনুরোধ পাঠাতে পারেন।

সমর্থিত মডেল

মডেলের পুরো মিথুন পরিবার পাঠ্য প্রজন্মকে সমর্থন করে। মডেল এবং তাদের ক্ষমতা সম্পর্কে আরও জানতে, মডেল দেখুন।

প্রম্পটিং টিপস

মৌলিক পাঠ্য প্রজন্মের ব্যবহারের ক্ষেত্রে, আপনার প্রম্পটে কোনো আউটপুট উদাহরণ, সিস্টেম নির্দেশাবলী, বা বিন্যাস তথ্য অন্তর্ভুক্ত করার প্রয়োজন নাও হতে পারে। এটি একটি শূন্য-শট পদ্ধতি। কিছু ব্যবহারের ক্ষেত্রে, একটি এক-শট বা কয়েক-শট প্রম্পট আউটপুট তৈরি করতে পারে যা ব্যবহারকারীর প্রত্যাশার সাথে আরও সারিবদ্ধ। কিছু ক্ষেত্রে, আপনি মডেলটিকে কাজ বুঝতে বা নির্দিষ্ট নির্দেশিকা অনুসরণ করতে সাহায্য করার জন্য সিস্টেম নির্দেশাবলী প্রদান করতে চাইতে পারেন।

এরপর কি