Generating content

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

Method: models.generateContent

ইনপুট GenerateContentRequest-এর ভিত্তিতে মডেলের উত্তর জেনারেট করে। ব্যবহার সংক্রান্ত বিস্তারিত তথ্যের জন্য টেক্সট জেনারেশন গাইড দেখুন। টিউন করা মডেল সহ বিভিন্ন মডেলের ইনপুট সংক্রান্ত ক্ষমতা আলাদা হয়। বিস্তারিত জানতে মডেল গাইড এবং টিউনিং গাইড দেখুন।

এন্ডপয়েন্ট

পোস্ট https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

পাথ প্যারামিটার

model string

প্রয়োজনীয়। সম্পূর্ণতা জেনারেট করার জন্য ব্যবহার করার জন্য Model-এর নাম।

ফর্ম্যাট: models/{model}। এটি models/{model} ফর্ম নেয়।

অনুরোধের বডি

অনুরোধের প্রধান অংশে নিম্নলিখিত স্ট্রাকচার সহ ডেটা থাকে:

ফিল্ড
contents[] object (Content)

প্রয়োজনীয়। মডেলের সাথে বর্তমান কথোপকথনের কন্টেন্ট।

সিঙ্গেল-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি সিঙ্গেল ইনস্ট্যান্স। চ্যাট-এর মতো মাল্টি-টার্ন কোয়েরির জন্য, এটি একটি পুনরাবৃত্ত ফিল্ড যাতে কথোপকথনের ইতিহাস এবং লেটেস্ট অনুরোধ থাকে।

tools[] object (Tool)

ঐচ্ছিক। Tools-এর তালিকা যা Model পরবর্তী উত্তর জেনারেট করতে ব্যবহার করতে পারে।

Tool হল কোডের একটি অংশ যা সিস্টেমকে এক্সটার্নাল সিস্টেমের সাথে ইন্টার‍্যাক্ট করতে দেয় যাতে Model-এর জ্ঞান ও স্কোপের বাইরে কোনও অ্যাকশন বা অ্যাকশনের সেট পারফর্ম করা যায়। কাজ করে এমন Tool হল Function এবং codeExecution। আরও জানতে ফাংশন কলিং এবং কোড এক্সিকিউশন সংক্রান্ত নির্দেশিকা দেখুন।

toolConfig object (ToolConfig)

ঐচ্ছিক। অনুরোধে উল্লেখ করা যেকোনও Tool-এর জন্য টুল কনফিগারেশন। ব্যবহারের উদাহরণের জন্য ফাংশন কলিং গাইড দেখুন।

safetySettings[] object (SafetySetting)

ঐচ্ছিক। অসুরক্ষিত কন্টেন্ট ব্লক করার জন্য অনন্য SafetySetting ইনস্ট্যান্সের তালিকা।

এটি GenerateContentRequest.contents এবং GenerateContentResponse.candidates-এর উপর প্রয়োগ করা হবে। প্রতিটি SafetyCategory ধরনের জন্য একাধিক সেটিংস থাকা উচিত নয়। এইসব সেটিংসের মাধ্যমে সেট করা থ্রেশহোল্ড পূরণ করতে না পারা যেকোনও কন্টেন্ট ও উত্তর API ব্লক করে দেবে। এই তালিকা safetySettings-এ উল্লেখ করা প্রতিটি SafetyCategory-এর জন্য ডিফল্ট সেটিংস ওভাররাইড করে। তালিকায় প্রদত্ত কোনও SafetyCategory-এর জন্য SafetySetting না থাকলে, API সেই বিভাগের জন্য ডিফল্ট নিরাপত্তা সেটিং ব্যবহার করবে। ক্ষতির বিভাগ HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK কাজ করে। উপলভ্য নিরাপত্তা সেটিংস সম্পর্কে বিস্তারিত তথ্যের জন্য গাইড দেখুন। এছাড়াও, আপনার AI অ্যাপ্লিকেশনে কীভাবে নিরাপত্তা সংক্রান্ত বিষয়গুলি অন্তর্ভুক্ত করবেন তা জানতে নিরাপত্তা সংক্রান্ত নির্দেশিকা দেখুন।

continuationToken string (bytes format)

ঐচ্ছিক। একটি অস্বচ্ছ কন্টিনিউয়েশন টোকেন যা আগের models.generateContent বা models.streamGenerateContent উত্তর থেকে জেনারেশন আবার শুরু করতে ব্যবহার করা হয় যা finishReason-এ CONTINUATION সেট করার সাথে বন্ধ হয়ে যায়। মনে রাখবেন যে contents বাধ্যতামূলক এবং কোনও অনুরোধে কন্টিনিউয়েশন টোকেন প্রদান করা হলে, প্রাথমিক অনুরোধ থেকে প্রম্পট এবং কথোপকথনের ইতিহাস অবশ্যই অভিন্নভাবে প্রতিলিপি করতে হবে।

একটি base64-এনকোড করা স্ট্রিং।

labels map (key: string, value: string)

ঐচ্ছিক। অনুরোধের জন্য ব্যবহারকারীর দ্বারা নির্ধারিত মেটাডেটা সহ লেবেল।

ঐচ্ছিক। লেবেলকে অবশ্যই স্ট্যান্ডার্ড ইউনিফায়েড Cloud লেবেলের প্রয়োজনীয়তা মেনে চলতে হবে: - লেবেল কী অবশ্যই কোনও অক্ষর দিয়ে শুরু হতে হবে। - লেবেল কী এবং ভ্যালু ৬৩ অক্ষরের (ইউনিকোড কোডপয়েন্ট) বেশি হতে পারবে না এবং এতে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা, আন্ডারস্কোর এবং ড্যাশ থাকতে পারবে। - আন্তর্জাতিক অক্ষর ব্যবহার করা যাবে।

ব্যবহার: - অ্যাগ্রিগেটর থেকে পাওয়া নিরাপত্তা শনাক্তকারী: safety_identifier (যেমন, {"safety_identifier": "user_session_123"}) কী ব্যবহার করুন

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

systemInstruction object (Content)

ঐচ্ছিক। ডেভেলপার সিস্টেম নির্দেশাবলী সেট করেছেন। বর্তমানে, শুধু টেক্সট।

generationConfig object (GenerationConfig)

ঐচ্ছিক। মডেল জেনারেশন ও আউটপুটের জন্য কনফিগারেশন সংক্রান্ত বিকল্প।

cachedContent string

ঐচ্ছিক। পূর্বাভাস দেখানোর জন্য প্রসঙ্গ হিসেবে ব্যবহার করতে কন্টেন্টের নাম ক্যাশে করা হয়েছে। ফর্ম্যাট: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

ঐচ্ছিক। অনুরোধের সার্ভিস টায়ার।

store boolean

ঐচ্ছিক। প্রদত্ত অনুরোধের জন্য লগিং আচরণ কনফিগার করে। সেট করা থাকলে, এটি প্রোজেক্ট-লেভেল লগিং কনফিগারেশনের উপর অগ্রাধিকার পায়।

অনুরোধের উদাহরণ

টেক্সট

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Write a story about a magic backpack.",
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

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": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Java

Client client = new Client();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "Write a story about a magic backpack.", null);

System.out.println(response.text());

ছবি

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Tell me about this instrument", organ],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const organ = await ai.files.upload({
  file: path.join(media, 'organ.jpg'),
});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Tell me about this instrument',
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "organ.jpg"),
	&genai.UploadFileConfig{
		MIMEType: "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

# 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" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
    Content.fromParts(
        Part.fromText("Tell me about this instrument."),
        Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", content, null);

System.out.println(response.text());

অডিও

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const audio = await ai.files.upload({
  file: path.join(media, 'sample.mp3'),
});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Give me a summary of this audio file.',
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "sample.mp3"),
	&genai.UploadFileConfig{
		MIMEType: "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

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": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

ভিডিও

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
  print("Processing video...")
  print("File state:", myfile.state)
  time.sleep(5)
  myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Describe this video clip',
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
	&genai.UploadFileConfig{
		MIMEType: "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

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": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "test.pdf"),
	&genai.UploadFileConfig{
		MIMEType: "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
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": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

চ্যাট

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.8-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const chat = ai.chats.create({
  model: 'gemini-3.8-flash',
  history: [
    {
      role: 'user',
      parts: [{text: 'Hello'}],
    },
    {
      role: 'model',
      parts: [{text: 'Great to meet you. What would you like to know?'}],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: 'I have 2 dogs in my house.',
});
console.log('Chat response 1:', response1.text);

const response2 = await chat.sendMessage({
  message: 'How many paws are in my house?',
});
console.log('Chat response 2:', response2.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

ঝিনুক

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?"}]},
      ]
    }' 2> /dev/null | grep "text"

Java

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
    Content.builder()
        .role("model")
        .parts(
            Collections.singletonList(
                Part.fromText("Great to meet you. What would you like to know?")))
        .build();

Chat chat =
    client.chats.create(
        "gemini-3.8-flash",
        GenerateContentConfig.builder()
            .systemInstruction(userContent)
            .systemInstruction(modelContent)
            .build());

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

ক্যাশে

Python

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.8-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const filePath = path.join(media, 'a11.txt');
const document = await ai.files.upload({
  file: filePath,
  config: {mimeType: 'text/plain'},
});
console.log('Uploaded file name:', document.name);
const modelName = 'gemini-3.8-flash';

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: 'You are an expert analyzing transcripts.',
  },
});
console.log('Cache created:', cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: 'Please summarize this transcript',
  config: {cachedContent: cache.name},
});
console.log('Response text:', response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.8-flash"
document, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "a11.txt"),
	&genai.UploadFileConfig{
		MIMEType: "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

টিউন করা মডেল

Python

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

JSON মোড

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
  recipe_name: str
  ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'List a few popular cookie recipes.',
  config: {
    responseMimeType: 'application/json',
    responseSchema: {
      type: 'array',
      items: {
        type: 'object',
        properties: {
          recipeName: {type: 'string'},
          ingredients: {type: 'array', items: {type: 'string'}},
        },
        required: ['recipeName', 'ingredients'],
      },
    },
  },
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

Java

Client client = new Client();

Schema recipeSchema =
    Schema.builder()
        .type(Array.class.getSimpleName())
        .items(
            Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                    Map.of(
                        "recipe_name",
                        Schema.builder().type(String.class.getSimpleName()).build(),
                        "ingredients",
                        Schema.builder()
                            .type(Array.class.getSimpleName())
                            .items(Schema.builder().type(String.class.getSimpleName()).build())
                            .build()))
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .responseMimeType("application/json")
        .responseSchema(recipeSchema)
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "List a few popular cookie recipes.", config);

System.out.println(response.text());

কোড এক্সিকিউশন

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50"
        " prime numbers. Ensure that only the executable code and its"
        " resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
  print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

Java

Client client = new Client();

String prompt =
    """
    Write and execute code that calculates the sum of the first 50 prime numbers.
    Ensure that only the executable code and its resulting output are generated.
    """;

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", prompt, null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
  System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

ফাংশন কলিং

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
  """returns a + b."""
  return a + b

def subtract(a: float, b: float) -> float:
  """returns a - b."""
  return a - b

def multiply(a: float, b: float) -> float:
  """returns a * b."""
  return a * b

def divide(a: float, b: float) -> float:
  """returns a / b."""
  return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.8-flash",
    config=types.GenerateContentConfig(
        tools=[add, subtract, multiply, divide]
    ),
)
response = chat.send_message(
    message=(
        "I have 57 cats, each owns 44 mittens, how many mittens is that in"
        " total?"
    )
)
print(response.text)

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-3.8-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
case "addNumbers":
	result = add(args.FirstParam, args.SecondParam)
case "subtractNumbers":
	result = subtract(args.FirstParam, args.SecondParam)
case "multiplyNumbers":
	result = multiply(args.FirstParam, args.SecondParam)
case "divideNumbers":
	result = divide(args.FirstParam, args.SecondParam)
default:
	return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is "+fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

/**
 * The add function returns the sum of two numbers.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function add(a, b) {
  return a + b;
}

/**
 * The subtract function returns the difference (a - b).
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function subtract(a, b) {
  return a - b;
}

/**
 * The multiply function returns the product of two numbers.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function multiply(a, b) {
  return a * b;
}

/**
 * The divide function returns the quotient of a divided by b.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function divide(a, b) {
  return a / b;
}

const addDeclaration = {
  name: 'addNumbers',
  parameters: {
    type: 'object',
    description: 'Return the result of adding two numbers.',
    properties: {
      firstParam: {
        type: 'number',
        description:
            'The first parameter which can be an integer or a floating point number.',
      },
      secondParam: {
        type: 'number',
        description:
            'The second parameter which can be an integer or a floating point number.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const subtractDeclaration = {
  name: 'subtractNumbers',
  parameters: {
    type: 'object',
    description:
        'Return the result of subtracting the second number from the first.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const multiplyDeclaration = {
  name: 'multiplyNumbers',
  parameters: {
    type: 'object',
    description: 'Return the product of two numbers.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const divideDeclaration = {
  name: 'divideNumbers',
  parameters: {
    type: 'object',
    description:
        'Return the quotient of dividing the first number by the second.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

// Step 1: Call generateContent with function calling enabled.
const generateContentResponse = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents:
      'I have 57 cats, each owns 44 mittens, how many mittens is that in total?',
  config: {
    toolConfig: {
      functionCallingConfig: {
        mode: FunctionCallingConfigMode.ANY,
      },
    },
    tools: [
      {
        functionDeclarations: [
          addDeclaration,
          subtractDeclaration,
          multiplyDeclaration,
          divideDeclaration,
        ],
      },
    ],
  },
});

// Step 2: Extract the function call.(
// Assuming the response contains a 'functionCalls' array.
const functionCall = generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
console.log(functionCall);

// Parse the arguments.
const args = functionCall.args;
// Expected args format: { firstParam: number, secondParam: number }

// Step 3: Invoke the actual function based on the function name.
const functionMapping = {
  addNumbers: add,
  subtractNumbers: subtract,
  multiplyNumbers: multiply,
  divideNumbers: divide,
};
const func = functionMapping[functionCall.name];
if (!func) {
  console.error('Unimplemented error:', functionCall.name);
  return generateContentResponse;
}
const resultValue = func(args.firstParam, args.secondParam);
console.log('Function result:', resultValue);

// Step 4: Use the chat API to send the result as the final answer.
const chat = ai.chats.create({model: 'gemini-3.8-flash'});
const chatResponse = await chat.sendMessage({
  message: 'The final result is ' + resultValue,
});
console.log(chatResponse.text);

ঝিনুক


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

Java

Client client = new Client();

FunctionDeclaration addFunction =
    FunctionDeclaration.builder()
        .name("addNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration subtractFunction =
    FunctionDeclaration.builder()
        .name("subtractNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration multiplyFunction =
    FunctionDeclaration.builder()
        .name("multiplyNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration divideFunction =
    FunctionDeclaration.builder()
        .name("divideNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .toolConfig(
            ToolConfig.builder()
                .functionCallingConfig(FunctionCallingConfig.builder().mode("ANY").build())
                .build())
        .tools(
            Collections.singletonList(
                Tool.builder()
                    .functionDeclarations(
                        Arrays.asList(
                            addFunction, subtractFunction, divideFunction, multiplyFunction))
                    .build()))
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash",
        "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
        config);

if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
  System.err.println("No function call received");
  return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

জেনারেশন কনফিগারেশন

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Tell me a story about a magic backpack.',
  config: {
    candidateCount: 1,
    stopSequences: ['x'],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

ঝিনুক

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
        }
    }'  2> /dev/null | grep "text"

Java

Client client = new Client();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .candidateCount(1)
        .stopSequences(List.of("x"))
        .maxOutputTokens(20)
        .temperature(1.0F)
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "Tell me a story about a magic backpack.", config);

System.out.println(response.text());

নিরাপত্তা সেটিংস

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club"
    " sucks! Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT",
                threshold="BLOCK_ONLY_HIGH",
            ),
        ]
    ),
)
try:
  print(response.text)
except Exception:
  print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const unsafePrompt =
    'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.';

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: unsafePrompt,
  config: {
    safetySettings: [
      {
        category: 'HARM_CATEGORY_HATE_SPEECH',
        threshold: 'BLOCK_MEDIUM_AND_ABOVE',
      },
      {
        category: 'HARM_CATEGORY_HARASSMENT',
        threshold: 'BLOCK_ONLY_HIGH',
      },
    ],
  },
});

try {
  console.log('Generated text:', response.text);
} catch (error) {
  console.log('No information generated by the model.');
}
console.log('Safety ratings:', response.candidates[0].safetyRatings);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

ঝিনুক

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Java

Client client = new Client();

String unsafePrompt =
    """
     I support Martians Soccer Club and I think Jupiterians Football Club sucks!
     Write a ironic phrase about them including expletives.
    """;

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .safetySettings(
            Arrays.asList(
                SafetySetting.builder()
                    .category("HARM_CATEGORY_HATE_SPEECH")
                    .threshold("BLOCK_MEDIUM_AND_ABOVE")
                    .build(),
                SafetySetting.builder()
                    .category("HARM_CATEGORY_HARASSMENT")
                    .threshold("BLOCK_ONLY_HIGH")
                    .build()))
        .build();

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", unsafePrompt, config);

try {
  System.out.println(response.text());
} catch (Exception e) {
  System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

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

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Good morning! How are you?',
  config: {
    systemInstruction: 'You are a cat. Your name is Neko.',
  },
});
console.log(response.text);

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

ঝিনুক

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"}}}'

Java

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config =
    GenerateContentConfig.builder().systemInstruction(content).build();

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", "Good morning! How are you?", config);

System.out.println(response.text());

প্রতিক্রিয়ার বডি

সফল হলে, প্রতিক্রিয়ার বডিতে একটি GenerateContentResponse-এর ইন্সট্যান্স থাকে।

পদ্ধতি: models.streamGenerateContent

ইনপুট GenerateContentRequest দেওয়া হলে মডেল থেকে স্ট্রিম করা উত্তর জেনারেট করে।

এন্ডপয়েন্ট

পোস্ট https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

পাথ প্যারামিটার

model string

প্রয়োজনীয়। সম্পূর্ণতা জেনারেট করার জন্য ব্যবহার করার জন্য Model-এর নাম।

ফর্ম্যাট: models/{model}। এটি models/{model} ফর্ম নেয়।

অনুরোধের বডি

অনুরোধের প্রধান অংশে নিম্নলিখিত স্ট্রাকচার সহ ডেটা থাকে:

ফিল্ড
contents[] object (Content)

প্রয়োজনীয়। মডেলের সাথে বর্তমান কথোপকথনের কন্টেন্ট।

সিঙ্গেল-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি সিঙ্গেল ইনস্ট্যান্স। চ্যাট-এর মতো মাল্টি-টার্ন কোয়েরির জন্য, এটি একটি পুনরাবৃত্ত ফিল্ড যাতে কথোপকথনের ইতিহাস এবং লেটেস্ট অনুরোধ থাকে।

tools[] object (Tool)

ঐচ্ছিক। Tools-এর তালিকা যা Model পরবর্তী উত্তর জেনারেট করতে ব্যবহার করতে পারে।

Tool হল কোডের একটি অংশ যা সিস্টেমকে এক্সটার্নাল সিস্টেমের সাথে ইন্টার‍্যাক্ট করতে দেয় যাতে Model-এর জ্ঞান ও স্কোপের বাইরে কোনও অ্যাকশন বা অ্যাকশনের সেট পারফর্ম করা যায়। কাজ করে এমন Tool হল Function এবং codeExecution। আরও জানতে ফাংশন কলিং এবং কোড এক্সিকিউশন সংক্রান্ত নির্দেশিকা দেখুন।

toolConfig object (ToolConfig)

ঐচ্ছিক। অনুরোধে উল্লেখ করা যেকোনও Tool-এর জন্য টুল কনফিগারেশন। ব্যবহারের উদাহরণের জন্য ফাংশন কলিং গাইড দেখুন।

safetySettings[] object (SafetySetting)

ঐচ্ছিক। অসুরক্ষিত কন্টেন্ট ব্লক করার জন্য অনন্য SafetySetting ইনস্ট্যান্সের তালিকা।

এটি GenerateContentRequest.contents এবং GenerateContentResponse.candidates-এর উপর প্রয়োগ করা হবে। প্রতিটি SafetyCategory ধরনের জন্য একাধিক সেটিংস থাকা উচিত নয়। এইসব সেটিংসের মাধ্যমে সেট করা থ্রেশহোল্ড পূরণ করতে না পারা যেকোনও কন্টেন্ট ও উত্তর API ব্লক করে দেবে। এই তালিকা safetySettings-এ উল্লেখ করা প্রতিটি SafetyCategory-এর জন্য ডিফল্ট সেটিংস ওভাররাইড করে। তালিকায় প্রদত্ত কোনও SafetyCategory-এর জন্য SafetySetting না থাকলে, API সেই বিভাগের জন্য ডিফল্ট নিরাপত্তা সেটিং ব্যবহার করবে। ক্ষতির বিভাগ HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK কাজ করে। উপলভ্য নিরাপত্তা সেটিংস সম্পর্কে বিস্তারিত তথ্যের জন্য গাইড দেখুন। এছাড়াও, আপনার AI অ্যাপ্লিকেশনে কীভাবে নিরাপত্তা সংক্রান্ত বিষয়গুলি অন্তর্ভুক্ত করবেন তা জানতে নিরাপত্তা সংক্রান্ত নির্দেশিকা দেখুন।

continuationToken string (bytes format)

ঐচ্ছিক। একটি অস্বচ্ছ কন্টিনিউয়েশন টোকেন যা আগের models.generateContent বা models.streamGenerateContent উত্তর থেকে জেনারেশন আবার শুরু করতে ব্যবহার করা হয় যা finishReason-এ CONTINUATION সেট করার সাথে বন্ধ হয়ে যায়। মনে রাখবেন যে contents বাধ্যতামূলক এবং কোনও অনুরোধে কন্টিনিউয়েশন টোকেন প্রদান করা হলে, প্রাথমিক অনুরোধ থেকে প্রম্পট এবং কথোপকথনের ইতিহাস অবশ্যই অভিন্নভাবে প্রতিলিপি করতে হবে।

একটি base64-এনকোড করা স্ট্রিং।

labels map (key: string, value: string)

ঐচ্ছিক। অনুরোধের জন্য ব্যবহারকারীর দ্বারা নির্ধারিত মেটাডেটা সহ লেবেল।

ঐচ্ছিক। লেবেলকে অবশ্যই স্ট্যান্ডার্ড ইউনিফায়েড Cloud লেবেলের প্রয়োজনীয়তা মেনে চলতে হবে: - লেবেল কী অবশ্যই কোনও অক্ষর দিয়ে শুরু হতে হবে। - লেবেল কী এবং ভ্যালু ৬৩ অক্ষরের (ইউনিকোড কোডপয়েন্ট) বেশি হতে পারবে না এবং এতে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা, আন্ডারস্কোর এবং ড্যাশ থাকতে পারবে। - আন্তর্জাতিক অক্ষর ব্যবহার করা যাবে।

ব্যবহার: - অ্যাগ্রিগেটর থেকে পাওয়া নিরাপত্তা শনাক্তকারী: safety_identifier (যেমন, {"safety_identifier": "user_session_123"}) কী ব্যবহার করুন

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

systemInstruction object (Content)

ঐচ্ছিক। ডেভেলপার সিস্টেম নির্দেশাবলী সেট করেছেন। বর্তমানে, শুধু টেক্সট।

generationConfig object (GenerationConfig)

ঐচ্ছিক। মডেল জেনারেশন ও আউটপুটের জন্য কনফিগারেশন সংক্রান্ত বিকল্প।

cachedContent string

ঐচ্ছিক। পূর্বাভাস দেখানোর জন্য প্রসঙ্গ হিসেবে ব্যবহার করতে কন্টেন্টের নাম ক্যাশে করা হয়েছে। ফর্ম্যাট: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

ঐচ্ছিক। অনুরোধের সার্ভিস টায়ার।

store boolean

ঐচ্ছিক। প্রদত্ত অনুরোধের জন্য লগিং আচরণ কনফিগার করে। সেট করা থাকলে, এটি প্রোজেক্ট-লেভেল লগিং কনফিগারেশনের উপর অগ্রাধিকার পায়।

অনুরোধের উদাহরণ

টেক্সট

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents="Write a story about a magic backpack.",
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

ঝিনুক

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": "Write a story about a magic backpack."}]}]}'

Java

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
    client.models.generateContentStream(
        "gemini-3.8-flash", "Write a story about a magic backpack.", null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
  System.out.print(res.text());
  response.append(res.text());
}

responseStream.close();

ছবি

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Tell me about this instrument", organ],
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const organ = await ai.files.upload({
  file: path.join(media, 'organ.jpg'),
});

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Tell me about this instrument',
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "organ.jpg"),
	&genai.UploadFileConfig{
		MIMEType: "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

ঝিনুক

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:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
    Content.fromParts(
        Part.fromText("Tell me about this instrument."),
        Part.fromBytes(imageData, "image/jpeg"));

ResponseStream<GenerateContentResponse> responseStream =
    client.models.generateContentStream("gemini-3.8-flash", content, null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
  System.out.print(res.text());
  response.append(res.text());
}

responseStream.close();

অডিও

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "sample.mp3"),
	&genai.UploadFileConfig{
		MIMEType: "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

ঝিনুক

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

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": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

ভিডিও

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
  print("Processing video...")
  print("File state:", myfile.state)
  time.sleep(5)
  myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.8-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Describe this video clip',
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
	&genai.UploadFileConfig{
		MIMEType: "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

ঝিনুক

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

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": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
  print(chunk.text)
  print("_" * 80)

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "test.pdf"),
	&genai.UploadFileConfig{
		MIMEType: "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

ঝিনুক

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
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": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

চ্যাট

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.8-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
  print(chunk.text)
  print("_" * 80)
response = chat.send_message_stream(
    message="How many paws are in my house?"
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const chat = ai.chats.create({
  model: 'gemini-3.8-flash',
  history: [
    {
      role: 'user',
      parts: [{text: 'Hello'}],
    },
    {
      role: 'model',
      parts: [{text: 'Great to meet you. What would you like to know?'}],
    },
  ],
});

console.log('Streaming response for first message:');
const stream1 = await chat.sendMessageStream({
  message: 'I have 2 dogs in my house.',
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log('_'.repeat(80));
}

console.log('Streaming response for second message:');
const stream2 = await chat.sendMessageStream({
  message: 'How many paws are in my house?',
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log('_'.repeat(80));
}

console.log(chat.getHistory());

খুলুন

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

ঝিনুক

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?"}]},
      ]
    }' 2> /dev/null | grep "text"

প্রতিক্রিয়ার বডি

সফল হলে, রেসপন্স বডিতে GenerateContentResponse ইনস্ট্যান্সের একটি স্ট্রিম থাকে।

GenerateContentResponse

একাধিক সম্ভাব্য উত্তর সহ মডেলের থেকে পাওয়া উত্তর।

GenerateContentResponse.prompt_feedback-এ প্রম্পট এবং finishReason ও safetyRatings-এ প্রতিটি ক্যান্ডিডেটের জন্য নিরাপত্তা রেটিং ও কন্টেন্ট ফিল্টারিং রিপোর্ট করা হয়। API: - অনুরোধ করা সব ক্যান্ডিডেট বা তাদের মধ্যে কোনও ক্যান্ডিডেটকে ফিরিয়ে দেয় না - প্রম্পটে কোনও সমস্যা থাকলে (promptFeedback চেক করুন) কোনও ক্যান্ডিডেটকে ফিরিয়ে দেয় না - finishReason এবং safetyRatings-এ প্রতিটি ক্যান্ডিডেটের ব্যাপারে মতামত রিপোর্ট করে।

ফিল্ড
candidates[] object (Candidate)

মডেল থেকে পাওয়া সম্ভাব্য উত্তর।

promptFeedback object (PromptFeedback)

কন্টেন্ট ফিল্টার সম্পর্কিত প্রম্পটের মতামত ফিরিয়ে দেয়।

usageMetadata object (UsageMetadata)

শুধু আউটপুট। জেনারেট করার অনুরোধের টোকেন ব্যবহার সংক্রান্ত মেটাডেটা।

modelVersion string

শুধু আউটপুট। উত্তর জেনারেট করার জন্য ব্যবহৃত মডেল ভার্সন।

responseId string

শুধুমাত্র আউটপুট। প্রতিটি উত্তর শনাক্ত করতে responseId ব্যবহার করা হয়।

modelStatus object (ModelStatus)

শুধু আউটপুট। এই মডেলের বর্তমান মডেল স্ট্যাটাস।

JSON উপস্থাপনা
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

GenerateContentRequest.content-এ উল্লেখ করা প্রম্পটের মতামত সংক্রান্ত মেটাডেটার সেট।

ফিল্ড
blockReason enum (BlockReason)

ঐচ্ছিক। সেট করা থাকলে, প্রম্পট ব্লক করা হয়েছে এবং কোনও ক্যান্ডিডেট রিটার্ন করা হয়নি। প্রম্পটটি অন্যভাবে লিখুন।

safetyRatings[] object (SafetyRating)

প্রম্পটের নিরাপত্তার জন্য রেটিং। প্রতিটি বিভাগে সর্বাধিক একটি রেটিং আছে।

JSON উপস্থাপনা
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

প্রম্পট ব্লক করার কারণ উল্লেখ করে।

Enums
BLOCK_REASON_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
SAFETY নিরাপত্তা সংক্রান্ত কারণে প্রম্পট ব্লক করা হয়েছে। কোন নিরাপত্তা বিভাগ এটি ব্লক করেছে তা বুঝতে safetyRatings পরীক্ষা করুন।
OTHER অজানা কারণে প্রম্পট ব্লক করা হয়েছে।
BLOCKLIST পরিভাষা ব্লকলিস্ট থেকে অন্তর্ভুক্ত করা শব্দের কারণে প্রম্পট ব্লক করা হয়েছে।
PROHIBITED_CONTENT নিষিদ্ধ কন্টেন্টের কারণে প্রম্পট ব্লক করা হয়েছে।
IMAGE_SAFETY অসুরক্ষিত ইমেজ জেনারেশন কন্টেন্টের কারণে ক্যান্ডিডেট ব্লক করা হয়েছে।

UsageMetadata

জেনারেট করার অনুরোধের টোকেন ব্যবহার সংক্রান্ত মেটাডেটা।

ফিল্ড
promptTokenCount integer

প্রম্পটে টোকেনের সংখ্যা। cachedContent সেট করা থাকলেও, এটি এখনও মোট কার্যকর প্রম্পট সাইজ, যার অর্থ হল এতে ক্যাশে করা কন্টেন্টে টোকেনের সংখ্যা অন্তর্ভুক্ত থাকে।

cachedContentTokenCount integer

প্রম্পটের ক্যাশে করা অংশে (ক্যাশে করা কন্টেন্ট) টোকেনের সংখ্যা

candidatesTokenCount integer

জেনারেট করা সব রেসপন্স ক্যান্ডিডেট জুড়ে টোকেনের মোট সংখ্যা।

toolUsePromptTokenCount integer

শুধু আউটপুট। টুল-ব্যবহারের প্রম্পটে থাকা টোকেনের সংখ্যা।

thoughtsTokenCount integer

শুধু আউটপুট। থিঙ্কিং মডেলের জন্য থট টোকেনের সংখ্যা।

totalTokenCount integer

জেনারেট করার অনুরোধের জন্য মোট টোকেন কাউন্ট (প্রম্পট + টুল-ব্যবহার প্রম্পট + চিন্তা + উত্তর ক্যান্ডিডেট)।

promptTokensDetails[] object (ModalityTokenCount)

শুধু আউটপুট। অনুরোধ ইনপুটে প্রসেস করা মোডালিটির তালিকা।

cacheTokensDetails[] object (ModalityTokenCount)

শুধু আউটপুট। অনুরোধ ইনপুটে ক্যাশে করা কন্টেন্টের মোডালিটির তালিকা।

candidatesTokensDetails[] object (ModalityTokenCount)

শুধু আউটপুট। উত্তরে ফেরত পাঠানো মোডালিটির তালিকা।

toolUsePromptTokensDetails[] object (ModalityTokenCount)

শুধু আউটপুট। টুল-ব্যবহারের অনুরোধ ইনপুটের জন্য প্রসেস করা মোডালিটির তালিকা।

serviceTier enum (ServiceTier)

শুধু আউটপুট। অনুরোধের সার্ভিস টায়ার।

JSON উপস্থাপনা
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

অন্তর্নিহিত মডেলের স্ট্যাটাস। এটি অন্তর্নিহিত মডেলের পর্যায় এবং প্রযোজ্য হলে অবসর গ্রহণের সময় নির্দেশ করতে ব্যবহৃত হয়।

ফিল্ড
modelStage enum (ModelStage)

অন্তর্নিহিত মডেলের স্টেজ।

retirementTime string (Timestamp format)

যে সময়ে মডেলটি সরিয়ে দেওয়া হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

message string

মডেলের স্ট্যাটাস ব্যাখ্যা করে একটি মেসেজ।

JSON উপস্থাপনা
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

অন্তর্নিহিত মডেলের পর্যায় নির্ধারণ করে।

Enums
MODEL_STAGE_UNSPECIFIED মডেলের পর্যায় নির্দিষ্ট করা নেই।
UNSTABLE_EXPERIMENTAL

আসল মডেলটি অনেক টিউনিংয়ের উপর নির্ভর করে।

EXPERIMENTAL এই পর্যায়ে মডেলগুলি শুধুমাত্র পরীক্ষামূলক উদ্দেশ্যে ব্যবহার করা হয়।
PREVIEW এই পর্যায়ে থাকা মডেলগুলি এক্সপেরিমেন্টাল মডেলের চেয়ে বেশি উন্নত।
STABLE এই পর্যায়ে থাকা মডেলগুলি স্থিতিশীল এবং প্রোডাকশনে ব্যবহারের জন্য প্রস্তুত বলে বিবেচিত হয়।
LEGACY মডেল এই পর্যায়ে থাকলে, তার অর্থ হল অদূর ভবিষ্যতে এই মডেল বন্ধ করে দেওয়া হবে। শুধুমাত্র পুরনো গ্রাহকরা এই মডেল ব্যবহার করতে পারবেন।
DEPRECATED

এই পর্যায়ে মডেলগুলি বন্ধ করে দেওয়া হয়েছে। এইসব মডেল ব্যবহার করা যাবে না।

RETIRED এই স্টেজে থাকা মডেলগুলি আর ব্যবহার করা হয় না। এইসব মডেল ব্যবহার করা যাবে না।

ক্যান্ডিডেট

মডেল থেকে জেনারেট করা উত্তর ক্যান্ডিডেট।

ফিল্ড
content object (Content)

শুধু আউটপুট। মডেল থেকে জেনারেট করা কন্টেন্ট ফিরে এসেছে।

finishReason enum (FinishReason)

ঐচ্ছিক। শুধু আউটপুট। মডেল কেন টোকেন জেনারেট করা বন্ধ করে দিয়েছে তার কারণ।

খালি থাকলে, মডেল টোকেন জেনারেট করা বন্ধ করেনি।

safetyRatings[] object (SafetyRating)

কোনও সম্ভাব্য উত্তরের নিরাপত্তার জন্য রেটিংয়ের তালিকা।

প্রতিটি বিভাগে সর্বাধিক একটি রেটিং আছে।

citationMetadata object (CitationMetadata)

শুধু আউটপুট। মডেল-জেনারেটেড ক্যান্ডিডেটের জন্য উদ্ধৃতি সংক্রান্ত তথ্য।

content-এ অন্তর্ভুক্ত যেকোনও টেক্সটের জন্য আবৃত্তি সংক্রান্ত তথ্য এই ফিল্ডে থাকতে পারে। এগুলি হল এমন অনুচ্ছেদ যা ফাউন্ডেশনাল LLM-এর ট্রেনিং ডেটাতে কপিরাইটযুক্ত কন্টেন্ট থেকে "আবৃত্তি" করা হয়।

tokenCount integer

শুধু আউটপুট। এই ক্যান্ডিডেটের জন্য টোকেন কাউন্ট।

groundingAttributions[] object (GroundingAttribution)

শুধু আউটপুট। গ্রাউন্ডেড উত্তরে অবদান রাখা সোর্সের জন্য অ্যাট্রিবিউশন তথ্য।

GenerateAnswerটি কলের জন্য এই ফিল্ড পূরণ করা হয়েছে।

groundingMetadata object (GroundingMetadata)

শুধু আউটপুট। প্রার্থীর জন্য গ্রাউন্ডিং মেটাডেটা।

GenerateContentটি কলের জন্য এই ফিল্ড পূরণ করা হয়েছে।

avgLogprobs number

শুধু আউটপুট। প্রার্থীর গড় লগ সম্ভাবনার স্কোর।

logprobsResult object (LogprobsResult)

শুধু আউটপুট। রেসপন্স টোকেন ও টপ টোকেনের জন্য লগ-লাইকলিহুড স্কোর

urlContextMetadata object (UrlContextMetadata)

শুধু আউটপুট। URL কন্টেক্সট রিট্রিভাল টুলের সাথে সম্পর্কিত মেটাডেটা।

continuationToken string (bytes format)

finishReason-এর মান CONTINUATION হলে, একটি ঐচ্ছিক অস্বচ্ছ কন্টিনিউয়েশন টোকেন রিটার্ন করা হয়। জেনারেট করা চালিয়ে যেতে, ক্লায়েন্টরা পরবর্তী GenerateContentRequest-এ এই টোকেন পাস করতে পারবেন।

একটি base64-এনকোড করা স্ট্রিং।

index integer

শুধু আউটপুট। প্রতিক্রিয়া জানানো প্রার্থীদের তালিকায় প্রার্থীর ইন্ডেক্স।

finishMessage string

ঐচ্ছিক। শুধু আউটপুট। মডেল কেন টোকেন জেনারেট করা বন্ধ করে দিয়েছে তার কারণ বিস্তারিতভাবে উল্লেখ করে। finishReason সেট করা থাকলে তবেই এটি পপুলেট করা হয়।

JSON উপস্থাপনা
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "continuationToken": string,
  "index": integer,
  "finishMessage": string
}

FinishReason

মডেল কেন টোকেন জেনারেট করা বন্ধ করে দিয়েছে তার কারণ ব্যাখ্যা করে।

Enums
FINISH_REASON_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
STOP মডেলের ন্যাচেরাল স্টপ পয়েন্ট বা প্রদত্ত স্টপ সিকোয়েন্স।
MAX_TOKENS অনুরোধে উল্লেখ করা টোকেনের সর্বাধিক সংখ্যায় পৌঁছে গেছে।
SAFETY নিরাপত্তা সংক্রান্ত কারণে সম্ভাব্য উত্তরের কন্টেন্ট ফ্ল্যাগ করা হয়েছে।
RECITATION উত্তরের জন্য বেছে নেওয়া কন্টেন্ট আবৃত্তি সংক্রান্ত কারণে ফ্ল্যাগ করা হয়েছে।
LANGUAGE উত্তরের জন্য বেছে নেওয়া কন্টেন্টটি কাজ করে না এমন ভাষা ব্যবহার করার জন্য ফ্ল্যাগ করা হয়েছে।
OTHER অজানা কারণ।
BLOCKLIST কন্টেন্টে নিষিদ্ধ শব্দ থাকার কারণে টোকেন জেনারেশন বন্ধ করা হয়েছে।
PROHIBITED_CONTENT সম্ভাব্য নিষিদ্ধ কন্টেন্ট থাকার কারণে টোকেন জেনারেশন বন্ধ করা হয়েছে।
SPII টোকেন জেনারেশন বন্ধ করা হয়েছে কারণ কন্টেন্টে ব্যক্তিগতভাবে শনাক্তকরণযোগ্য অতি গোপনীয় তথ্য (SPII) থাকতে পারে।
MALFORMED_FUNCTION_CALL মডেলের মাধ্যমে জেনারেট করা ফাংশন কলটি সঠিক নয়।
IMAGE_SAFETY জেনারেট করা ছবিতে নিরাপত্তা সংক্রান্ত লঙ্ঘন থাকায় টোকেন জেনারেশন বন্ধ করা হয়েছে।
IMAGE_PROHIBITED_CONTENT ছবি জেনারেশন বন্ধ করা হয়েছে কারণ জেনারেট করা ছবিতে অন্যান্য নিষিদ্ধ কন্টেন্ট আছে।
IMAGE_OTHER অন্যান্য বিবিধ সমস্যার কারণে ইমেজ জেনারেশন বন্ধ হয়ে গেছে।
NO_IMAGE মডেলটি একটি ছবি তৈরি করবে বলে আশা করা হয়েছিল, কিন্তু কোনও ছবি তৈরি হয়নি।
IMAGE_RECITATION আবৃত্তি করার কারণে ইমেজ জেনারেশন বন্ধ করা হয়েছে।
UNEXPECTED_TOOL_CALL মডেল একটি টুল কল জেনারেট করেছে কিন্তু অনুরোধে কোনও টুল চালু করা হয়নি।
TOO_MANY_TOOL_CALLS মডেল পরপর অনেক টুল কল করেছে, তাই সিস্টেম এক্সিকিউশন থেকে বেরিয়ে এসেছে।
MISSING_THOUGHT_SIGNATURE অনুরোধে অন্তত একটি থট সিগনেচার নেই।
MALFORMED_RESPONSE ভুলভাবে তৈরি করা রেসপন্সের কারণে শেষ হয়েছে।
ESCALATION এসকেলেশন রুল অনুযায়ী অনুরোধ ফিল্টার করা হয়েছে।
PUP_LIMITED_DISABLED এটি ইঙ্গিত করে যে টোকেন জেনারেশন বন্ধ হয়ে গেছে কারণ নিষিদ্ধ ব্যবহার সংক্রান্ত নীতি (PUP) লঙ্ঘনের কারণে ব্যবহারকারীর অ্যাকাউন্ট সীমিত বা বন্ধ করা হয়েছে।
CONTINUATION উত্তরটি প্রতি-অনুরোধ টোকেন সীমায় পৌঁছে যাওয়ায় টোকেন জেনারেশন বন্ধ করা হয়েছে, তবে জেনারেশন এখনও সম্পূর্ণ হয়নি। মডেলের উত্তর, ফেরত পাঠানো continuationToken ব্যবহার করে পরবর্তী অনুরোধের মাধ্যমে চালিয়ে যাওয়া যেতে পারে। মনে রাখবেন, maxOutputTokens হল কন্টিনিউয়েশন হপ জুড়ে ক্রমবর্ধমান এবং এটি অবশ্যই একঘেয়েভাবে বৃদ্ধি বা বাদ দিতে হবে।

GroundingAttribution

কোনও উত্তরে অবদান রাখা সোর্সের জন্য অ্যাট্রিবিউশন।

ফিল্ড
sourceId object (AttributionSourceId)

শুধু আউটপুট। এই অ্যাট্রিবিউশনে অবদান রাখা সোর্সের শনাক্তকারী।

content object (Content)

এই অ্যাট্রিবিউশন তৈরি করে এমন গ্রাউন্ডিং সোর্স কন্টেন্ট।

JSON উপস্থাপনা
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

এই অ্যাট্রিবিউশনে অবদান রাখা সোর্সের শনাক্তকারী।

ফিল্ড
source Union type
নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
groundingPassage object (GroundingPassageId)

ইনলাইন প্যাসেজের শনাক্তকারী।

semanticRetrieverChunk object (SemanticRetrieverChunk)

সেমান্টিক রিট্রিভারের মাধ্যমে ফেচ করা Chunk-এর শনাক্তকারী।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

GroundingPassage-এর মধ্যে কোনও অংশের শনাক্তকারী।

ফিল্ড
passageId string

শুধু আউটপুট। GenerateAnswerRequest-এর GroundingPassage.id-এর সাথে ম্যাচ করা প্যাসেজের আইডি।

partIndex integer

শুধু আউটপুট। GenerateAnswerRequest-এর GroundingPassage.content-এর মধ্যে থাকা অংশের ইন্ডেক্স।

JSON উপস্থাপনা
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

SemanticRetrieverConfig ব্যবহার করে GenerateAnswerRequest-এ নির্দিষ্ট করা সিম্যান্টিক রিট্রিভারের মাধ্যমে ফিরিয়ে আনা Chunk-এর শনাক্তকারী।

ফিল্ড
source string

শুধু আউটপুট। অনুরোধের SemanticRetrieverConfig.source-এর সাথে ম্যাচ করা সোর্সের নাম। উদাহরণ: corpora/123 বা corpora/123/documents/abc

chunk string

শুধু আউটপুট। অ্যাট্রিবিউট করা টেক্সট সহ Chunk-এর নাম। যেমন: corpora/123/documents/abc/chunks/xyz

JSON উপস্থাপনা
{
  "source": string,
  "chunk": string
}

GroundingMetadata

গ্রাউন্ডিং চালু করা থাকলে, ক্লায়েন্টকে মেটাডেটা ফেরত পাঠানো হয়।

ফিল্ড
groundingChunks[] object (GroundingChunk)

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

groundingSupports[] object (GroundingSupport)

গ্রাউন্ডিং সাপোর্টের তালিকা।

webSearchQueries[] string

ফলো-আপ ওয়েব সার্চের জন্য ওয়েব সার্চ কোয়েরি।

imageSearchQueries[] string

গ্রাউন্ডিংয়ের জন্য ব্যবহৃত ছবি সার্চ কোয়েরি।

searchEntryPoint object (SearchEntryPoint)

ঐচ্ছিক। ফলো-আপ ওয়েব সার্চের জন্য Google Search এন্ট্রি।

retrievalMetadata object (RetrievalMetadata)

গ্রাউন্ডিং ফ্লোতে রিট্রিভাল সম্পর্কিত মেটাডেটা।

googleMapsWidgetContextToken string

ঐচ্ছিক। Google Maps উইজেট কনটেক্সট টোকেনের রিসোর্স নাম যা PlacesContextElement উইজেটের সাথে ব্যবহার করা যেতে পারে যাতে প্রাসঙ্গিক ডেটা রেন্ডার করা যায়। Grounding with Google Maps চালু থাকলে তবেই এটি দেখানো হয়।

JSON উপস্থাপনা
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Google Search এন্ট্রি পয়েন্ট।

ফিল্ড
renderedContent string

ঐচ্ছিক। ওয়েব কন্টেন্ট স্নিপেট যা কোনও ওয়েব পৃষ্ঠা বা অ্যাপ ওয়েবভিউতে এম্বেড করা যেতে পারে।

sdkBlob string (bytes format)

ঐচ্ছিক। Base64 এনকোড করা JSON <সার্চ করা শব্দ, সার্চ URL> টাপলের অ্যারে উপস্থাপন করে।

একটি base64-এনকোড করা স্ট্রিং।

JSON উপস্থাপনা
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk হল সহায়ক প্রমাণের একটি অংশ যা মডেলের উত্তরকে ভিত্তি প্রদান করে। এটি ওয়েব থেকে নেওয়া কোনও অংশ, ফাইল থেকে পাওয়া কোনও প্রসঙ্গ বা Google Maps থেকে পাওয়া তথ্য হতে পারে।

ফিল্ড
chunk_type Union type
চাঙ্কের ধরন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
web object (Web)

ওয়েব থেকে গ্রাউন্ডিং চাঙ্ক।

image object (Image)

ঐচ্ছিক। ছবি সার্চ থেকে গ্রাউন্ডিং চাঙ্ক।

retrievedContext object (RetrievedContext)

ঐচ্ছিক। ফাইল সার্চ টুল দ্বারা উদ্ধার করা প্রসঙ্গ থেকে গ্রাউন্ডিং চাঙ্ক।

maps object (Maps)

ঐচ্ছিক। Google Maps থেকে গ্রাউন্ডিং চাঙ্ক।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

ওয়েব

ওয়েব থেকে নেওয়া চাঙ্ক।

ফিল্ড
uri string

শুধু আউটপুট। চাঙ্কের URI রেফারেন্স।

title string

শুধু আউটপুট। চাঙ্কের শীর্ষক।

JSON উপস্থাপনা
{
  "uri": string,
  "title": string
}

ছবি

ছবি সার্চ থেকে চাঙ্ক।

ফিল্ড
sourceUri string

অ্যাট্রিবিউশনের জন্য ওয়েব পেজ URI।

imageUri string

ছবির অ্যাসেট URL।

title string

যে ওয়েবপেজ থেকে ছবিটি নেওয়া হয়েছে সেটির শীর্ষক।

domain string

যে ওয়েব পেজ থেকে ছবিটি নেওয়া হয়েছে সেটির রুট ডোমেন, যেমন "example.com"।

JSON উপস্থাপনা
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

ফাইল সার্চ টুল দ্বারা উদ্ধার করা প্রসঙ্গ থেকে চাঙ্ক।

ফিল্ড
customMetadata[] object (CustomMetadata)

ঐচ্ছিক। উদ্ধার করা কনটেক্সট সম্পর্কে ব্যবহারকারীর দেওয়া মেটাডেটা।

uri string

ঐচ্ছিক। সিম্যান্টিক রিট্রিভাল ডকুমেন্টের URI রেফারেন্স।

title string

ঐচ্ছিক। ডকুমেন্টের নাম।

text string

ঐচ্ছিক। চাঙ্কের টেক্সট।

fileSearchStore string

ঐচ্ছিক। ডকুমেন্টটি যে FileSearchStore-এ আছে সেটির নাম। যেমন: fileSearchStores/123

pageNumber integer

ঐচ্ছিক। উদ্ধার করা কনটেক্সটের পৃষ্ঠা নম্বর, প্রযোজ্য হলে।

mediaId string

ঐচ্ছিক। মাল্টিমোডাল ফাইল সার্চ ফলাফলের জন্য মিডিয়া ব্লব রিসোর্সের নাম। ফর্ম্যাট: fileSearchStores/{file_search_store_id}/media/{blobId}

JSON উপস্থাপনা
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

GroundingFact সম্পর্কে ব্যবহারকারীর দেওয়া মেটাডেটা।

ফিল্ড
key string

মেটাডেটার কী।

value Union type
মেটাডেটার মান। স্ট্রিং, স্ট্রিংয়ের তালিকা বা সংখ্যা হতে পারে। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
stringValue string

ঐচ্ছিক। মেটাডেটার স্ট্রিং ভ্যালু।

stringListValue object (StringList)

ঐচ্ছিক। মেটাডেটার জন্য স্ট্রিং ভ্যালুর তালিকা।

numericValue number

ঐচ্ছিক। মেটাডেটার সংখ্যাসূচক মান। এই ভ্যালুর প্রত্যাশিত রেঞ্জ, ব্যবহৃত নির্দিষ্ট key-এর উপর নির্ভর করে।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

স্ট্রিং ভ্যালুর তালিকা।

ফিল্ড
values[] string

তালিকার স্ট্রিং ভ্যালু।

JSON উপস্থাপনা
{
  "values": [
    string
  ]
}

Maps

Google Maps থেকে পাওয়া গ্রাউন্ডিং চাঙ্ক। Maps চাঙ্ক একটি জায়গার সাথে সম্পর্কিত।

ফিল্ড
uri string

জায়গার URI রেফারেন্স।

title string

জায়গার নাম।

text string

জায়গার উত্তর সম্পর্কে টেক্সট বিবরণ।

placeId string

জায়গার আইডি, places/{placeId} ফর্ম্যাটে। কোনও ব্যবহারকারী এই আইডি ব্যবহার করে সেই জায়গা খুঁজতে পারবেন।

placeAnswerSources object (PlaceAnswerSources)

Google Maps-এ কোনও নির্দিষ্ট জায়গার ফিচার সম্পর্কে উত্তর প্রদানকারী সোর্স।

JSON উপস্থাপনা
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Google Maps-এ কোনও জায়গার ফিচার সম্পর্কে উত্তর প্রদানকারী সোর্সের সংগ্রহ। প্রতিটি PlaceAnswerSources মেসেজ Google Maps-এর নির্দিষ্ট কোনও জায়গার সাথে সম্পর্কিত। Google Maps টুল এইসব সোর্স ব্যবহার করে জায়গার ফিচার সম্পর্কে প্রশ্নের উত্তর দেয় (যেমন: "Bar Foo-তে কি ওয়াই-ফাই আছে" অথবা "Foo Bar-এ কি হুইলচেয়ার ব্যবহার করা যাবে?")। বর্তমানে আমরা সোর্স হিসেবে শুধু রিভিউ স্নিপেট সাপোর্ট করি।

ফিল্ড
reviewSnippets[] object (ReviewSnippet)

Google Maps-এ কোনও নির্দিষ্ট জায়গার ফিচার সম্পর্কে উত্তর তৈরি করতে ব্যবহৃত রিভিউয়ের স্নিপেট।

JSON উপস্থাপনা
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

ব্যবহারকারীর রিভিউয়ের একটি স্নিপেট এনক্যাপসুলেট করে যা Google Maps-এ কোনও নির্দিষ্ট জায়গার ফিচার সম্পর্কে প্রশ্নের উত্তর দেয়।

ফিল্ড
reviewId string

রিভিউ স্নিপেটের আইডি।

googleMapsUri string

Google Maps-এ ব্যবহারকারীর রিভিউয়ের সাথে সম্পর্কিত একটি লিঙ্ক।

title string

রিভিউয়ের শীর্ষক।

JSON উপস্থাপনা
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

গ্রাউন্ডিং সাপোর্ট।

ফিল্ড
groundingChunkIndices[] integer

ঐচ্ছিক। দাবির সাথে সম্পর্কিত উদ্ধৃতি নির্দিষ্ট করে এমন ইন্ডেক্সের তালিকা (response.candidate.grounding_metadata-এ 'grounding_chunk'-এ)। যেমন, [১,৩,৪] মানে হল grounding_chunk[১], grounding_chunk[৩], grounding_chunk[৪] হল দাবির সাথে অ্যাট্রিবিউট করা রিট্রিভ করা কন্টেন্ট। উত্তরটি স্ট্রিমিং হলে, groundingChunkIndices সব উত্তর জুড়ে ইন্ডিসেসকে বোঝায়। সব উত্তর থেকে গ্রাউন্ডিং চাঙ্ক সংগ্রহ করার দায়িত্ব ক্লায়েন্টের (একই ক্রম বজায় রেখে)।

confidenceScores[] number

ঐচ্ছিক। সহায়তা রেফারেন্সের কনফিডেন্স স্কোর। ০ থেকে ১ পর্যন্ত রেঞ্জ। ১ হল সবচেয়ে বেশি আত্মবিশ্বাসী। এই তালিকার সাইজ groundingChunkIndices-এর সাইজের সমান হতে হবে।

renderedParts[] integer

শুধু আউটপুট। প্রার্থীর কন্টেন্টের parts ফিল্ডে ইন্ডেক্স করা। এই ইন্ডেক্সগুলি নির্দিষ্ট করে যে কোন রেন্ডার করা অংশগুলি এই সহায়তা সোর্সের সাথে যুক্ত।

segment object (Segment)

এই সহায়তা কন্টেন্টের যে অংশের সাথে সম্পর্কিত।

JSON উপস্থাপনা
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

সেগমেন্ট

কন্টেন্টের অংশ।

ফিল্ড
partIndex integer

পেরেন্ট কন্টেন্ট অবজেক্টের মধ্যে পার্ট অবজেক্টের ইন্ডেক্স।

startIndex integer

প্রদত্ত অংশে ইন্ডেক্স শুরু করুন, বাইটে পরিমাপ করা হয়। অংশের শুরু থেকে অফসেট, অন্তর্ভুক্ত, শূন্য থেকে শুরু।

endIndex integer

প্রদত্ত অংশে শেষ ইনডেক্স, বাইটে পরিমাপ করা হয়। পার্টের শুরু থেকে অফসেট, এক্সক্লুসিভ, শূন্য থেকে শুরু।

text string

উত্তরের সেগমেন্টের সাথে সম্পর্কিত টেক্সট।

JSON উপস্থাপনা
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

গ্রাউন্ডিং ফ্লোতে রিট্রিভাল সম্পর্কিত মেটাডেটা।

ফিল্ড
googleSearchDynamicRetrievalScore number

ঐচ্ছিক। Google Search থেকে পাওয়া তথ্য প্রম্পটের উত্তর দিতে কতটা সাহায্য করতে পারে তা স্কোর থেকে বোঝা যায়। স্কোর [০, ১] রেঞ্জের মধ্যে থাকে, যেখানে ০ হল সবচেয়ে কম সম্ভাব্য এবং ১ হল সবচেয়ে বেশি সম্ভাব্য। Google Search গ্রাউন্ডিং ও ডায়নামিক রিট্রিভাল চালু থাকলে তবেই এই স্কোর দেখানো হয়। Google Search ট্রিগার করা হবে কিনা তা নির্ধারণ করতে এটি থ্রেশহোল্ডের সাথে তুলনা করা হবে।

JSON উপস্থাপনা
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Logprobs ফলাফল

ফিল্ড
topCandidates[] object (TopCandidates)

দৈর্ঘ্য = ডিকোডিং স্টেপের মোট সংখ্যা।

chosenCandidates[] object (Candidate)

দৈর্ঘ্য = ডিকোডিং স্টেপের মোট সংখ্যা। বেছে নেওয়া প্রার্থী topCandidates-এ থাকতেও পারেন, আবার নাও থাকতে পারেন।

logProbabilitySum number

সব টোকেনের জন্য লগ সম্ভাবনার যোগফল।

JSON উপস্থাপনা
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

প্রতিটি ডিকোডিং ধাপে সর্বাধিক লগ সম্ভাব্যতা সহ প্রার্থী।

ফিল্ড
candidates[] object (Candidate)

লগ সম্ভাবনার ভিত্তিতে বড় থেকে ছোট ক্রমানুসারে সাজানো হয়েছে।

JSON উপস্থাপনা
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

ক্যান্ডিডেট

logprobs টোকেন ও স্কোরের জন্য ক্যান্ডিডেট।

ফিল্ড
token string

প্রার্থীর টোকেন স্ট্রিং ভ্যালু।

tokenId integer

প্রার্থীর টোকেন আইডি ভ্যালু।

logProbability number

প্রার্থীর লগ সম্ভাবনা।

JSON উপস্থাপনা
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

URL কন্টেক্সট রিট্রিভাল টুলের সাথে সম্পর্কিত মেটাডেটা।

ফিল্ড
urlMetadata[] object (UrlMetadata)

URL কন্টেক্সটের তালিকা।

JSON উপস্থাপনা
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

একটি URL রিট্রিভ করার কন্টেক্সট।

ফিল্ড
retrievedUrl string

টুলের মাধ্যমে url ফিরিয়ে আনা হয়েছে৷

urlRetrievalStatus enum (UrlRetrievalStatus)

URL পুনরুদ্ধারের স্ট্যাটাস।

JSON উপস্থাপনা
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

URL পুনরুদ্ধারের স্ট্যাটাস।

Enums
URL_RETRIEVAL_STATUS_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
URL_RETRIEVAL_STATUS_SUCCESS URL ফিরিয়ে আনা হয়েছে।
URL_RETRIEVAL_STATUS_ERROR সমস্যার কারণে URL ফিরিয়ে আনা যায়নি।
URL_RETRIEVAL_STATUS_PAYWALL কন্টেন্ট পেওয়ালের আড়ালে থাকার কারণে URL খুঁজে পাওয়া যায়নি।
URL_RETRIEVAL_STATUS_UNSAFE কন্টেন্টটি নিরাপদ নয় বলে URL পুনরুদ্ধার করা যায়নি।

CitationMetadata

কোনও কন্টেন্টের জন্য সোর্স অ্যাট্রিবিউশনের সংগ্রহ।

ফিল্ড
citationSources[] object (CitationSource)

নির্দিষ্ট উত্তরের জন্য সোর্সের সাইটেশন।

JSON উপস্থাপনা
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

নির্দিষ্ট উত্তরের কোনও অংশের জন্য সোর্সের সাইটেশন।

ফিল্ড
startIndex integer

ঐচ্ছিক। এই সোর্সের সাথে অ্যাট্রিবিউট করা উত্তরের সেগমেন্টের শুরু।

ইনডেক্স সেগমেন্টের শুরু নির্দেশ করে, বাইটে পরিমাপ করা হয়।

endIndex integer

ঐচ্ছিক। অ্যাট্রিবিউট করা সেগমেন্টের শেষ, এক্সক্লুসিভ।

uri string

ঐচ্ছিক। URI যা টেক্সটের একটি অংশের সোর্স হিসেবে অ্যাট্রিবিউট করা হয়েছে।

license string

ঐচ্ছিক। GitHub প্রোজেক্টের লাইসেন্স যা সেগমেন্টের সোর্স হিসেবে অ্যাট্রিবিউট করা হয়েছে।

কোড সাইটেশনের জন্য লাইসেন্স সংক্রান্ত তথ্য প্রয়োজন।

JSON উপস্থাপনা
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

রেটিংয়ের বিভাগ।

এইসব ক্যাটাগরিতে বিভিন্ন ধরনের ক্ষতিকর কন্টেন্ট কভার করা হয় যা ডেভেলপাররা হয়ত অ্যাডজাস্ট করতে চাইবেন।

Enums
HARM_CATEGORY_UNSPECIFIED বিভাগ নির্দিষ্ট করা নেই।
HARM_CATEGORY_DEROGATORY

PaLM - পরিচয় এবং/অথবা সুরক্ষিত অ্যাট্রিবিউটকে টার্গেট করে নেতিবাচক বা ক্ষতিকর মন্তব্য। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_TOXICITY

PaLM - অভদ্র, অসম্মানজনক বা অশ্লীল কন্টেন্ট। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_VIOLENCE

PaLM - কোনও ব্যক্তি বা গোষ্ঠীর বিরুদ্ধে হিংসা বা রক্তপাতের সাধারণ বিবরণ বর্ণনা করে। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_SEXUAL

PaLM - যৌন কার্যকলাপ বা অন্যান্য অশ্লীল কন্টেন্টের উল্লেখ রয়েছে। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_MEDICAL

PaLM - যাচাই না করা চিকিৎসা সংক্রান্ত পরামর্শ প্রচার করে। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_DANGEROUS

PaLM - বিপজ্জনক কন্টেন্ট যা ক্ষতিকর কার্যকলাপ করতে প্রচার, সাহায্য বা উৎসাহিত করে। DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_HARASSMENT Gemini - হয়রানিমূলক কন্টেন্ট।
HARM_CATEGORY_HATE_SPEECH Gemini - ঘৃণাত্মক বক্তব্য ও কন্টেন্ট।
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - যৌনতাপূর্ণ কন্টেন্ট।
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - বিপজ্জনক কন্টেন্ট।
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini - এমন কন্টেন্ট যা নাগরিক সততা নষ্ট করার জন্য ব্যবহার করা হতে পারে। বন্ধ করা হয়েছে: এর পরিবর্তে enableEnhancedCivicAnswers ব্যবহার করুন।

HARM_CATEGORY_JAILBREAK Gemini - মডেলের নিরাপত্তা সংক্রান্ত নির্দেশিকা বাইপাস বা এড়িয়ে যাওয়ার চেষ্টা করা প্রম্পট (জেলব্রেক করার চেষ্টা)।

ModalityTokenCount

একটি সিঙ্গেল মডালিটির জন্য টোকেন গণনা সংক্রান্ত তথ্য দেখায়।

ফিল্ড
modality enum (Modality)

এই টোকেন কাউন্টের সাথে যুক্ত মোডালিটি।

tokenCount integer

টোকেনের সংখ্যা।

JSON উপস্থাপনা
{
  "modality": enum (Modality),
  "tokenCount": integer
}

মোডালিটি

কন্টেন্ট পার্ট মডালিটি

Enums
MODALITY_UNSPECIFIED অনির্দিষ্ট মোডালিটি।
TEXT প্লেন টেক্সট।
IMAGE ছবি।
VIDEO ভিডিও।
AUDIO অডিও।
DOCUMENT ডকুমেন্ট, যেমন PDF।

SafetyRating

কোনও কন্টেন্টের জন্য নিরাপত্তা রেটিং।

নিরাপত্তা রেটিংয়ে ক্ষতির বিভাগ এবং কোনও কন্টেন্টের ক্ষেত্রে সেই বিভাগে ক্ষতির সম্ভাবনার লেভেল থাকে। নিরাপত্তার জন্য কন্টেন্টকে বিভিন্ন ক্ষতিকর বিভাগে শ্রেণীবদ্ধ করা হয় এবং ক্ষতির শ্রেণীবিভাগের সম্ভাবনা এখানে অন্তর্ভুক্ত করা হয়।

ফিল্ড
category enum (HarmCategory)

প্রয়োজনীয়। এই রেটিংয়ের জন্য বিভাগ।

probability enum (HarmProbability)

প্রয়োজনীয়। এই কন্টেন্টের জন্য ক্ষতির সম্ভাবনা।

blocked boolean

এই রেটিংয়ের কারণে কি এই কন্টেন্ট ব্লক করা হয়েছে?

JSON উপস্থাপনা
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

কোনও কন্টেন্ট ক্ষতিকর হওয়ার সম্ভাবনা।

শ্রেণীবিন্যাস সিস্টেম কন্টেন্ট অসুরক্ষিত হওয়ার সম্ভাবনা দেখায়। এটি কোনও কন্টেন্টের জন্য ক্ষতির তীব্রতা নির্দেশ করে না।

Enums
HARM_PROBABILITY_UNSPECIFIED সম্ভাবনা নির্দিষ্ট করা নেই।
NEGLIGIBLE কন্টেন্ট অসুরক্ষিত হওয়ার সম্ভাবনা খুবই কম।
LOW কন্টেন্ট অসুরক্ষিত হওয়ার সম্ভাবনা কম।
MEDIUM কন্টেন্ট অসুরক্ষিত হওয়ার সম্ভাবনা মাঝারি।
HIGH কন্টেন্ট অসুরক্ষিত হওয়ার সম্ভাবনা বেশি।

SafetySetting

নিরাপত্তা সেটিং, যা নিরাপত্তা-ব্লকিং আচরণকে প্রভাবিত করে।

কোনও বিভাগের জন্য নিরাপত্তা সেটিং পাস করলে, কন্টেন্ট ব্লক করার অনুমোদিত সম্ভাবনা পরিবর্তিত হয়।

ফিল্ড
category enum (HarmCategory)

প্রয়োজনীয়। এই সেটিংয়ের জন্য বিভাগ।

threshold enum (HarmBlockThreshold)

প্রয়োজনীয়। ক্ষতি ব্লক করার সম্ভাবনার থ্রেশহোল্ড নিয়ন্ত্রণ করে।

JSON উপস্থাপনা
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

নির্দিষ্ট ক্ষতির সম্ভাবনা এবং তার বেশি হলে ব্লক করুন।

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED থ্রেশহোল্ড নির্দিষ্ট করা নেই।
BLOCK_LOW_AND_ABOVE NEGLIGIBLE সহ কন্টেন্ট দেখানোর অনুমতি দেওয়া হবে।
BLOCK_MEDIUM_AND_ABOVE 'নগণ্য' এবং 'কম' রেটিংয়ের কন্টেন্ট দেখানোর অনুমতি দেওয়া হবে।
BLOCK_ONLY_HIGH নগণ্য, কম ও মাঝারি মাত্রার কন্টেন্ট দেখানোর অনুমতি দেওয়া হবে।
BLOCK_NONE সব কন্টেন্ট দেখানোর অনুমতি দেওয়া হবে।
OFF নিরাপত্তা ফিল্টার বন্ধ করুন।

ServiceTier

অনুরোধের সার্ভিস টায়ার।

Enums
unspecified ডিফল্ট পরিষেবা টিয়ার, যা স্ট্যান্ডার্ড।
standard স্ট্যান্ডার্ড সার্ভিস টায়ার।
flex Flex পরিষেবার টিয়ার।
priority অগ্রাধিকার পরিষেবা টায়ার।

কন্টেন্ট

বেস স্ট্রাকচার্ড ডেটাটাইপ যাতে মেসেজের মাল্টি-পার্ট কন্টেন্ট থাকে।

Content-এ role ফিল্ড থাকে যা Content-এর প্রোডিউসারকে চিহ্নিত করে এবং parts ফিল্ড থাকে যাতে মাল্টি-পার্ট ডেটা থাকে যা মেসেজ টার্নের কন্টেন্ট ধারণ করে।

ফিল্ড
parts[] object (Part)

Parts অর্ডার করা হয়েছে যা একটি মেসেজ হিসেবে দেখানো হয়। বিভিন্ন অংশের MIME-এর প্রকার আলাদা হতে পারে।

role string

ঐচ্ছিক। কন্টেন্টের প্রযোজক। 'ব্যবহারকারী' বা 'মডেল' হতে হবে।

মাল্টি-টার্ন কথোপকথনের জন্য সেট করা উপযোগী, অন্যথায় ফাঁকা বা সেট না করা অবস্থায় ছেড়ে দেওয়া যেতে পারে।

JSON উপস্থাপনা
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

অংশ

একটি ডেটাটাইপ যাতে মিডিয়া থাকে যা মাল্টি-পার্ট Content মেসেজের অংশ।

Part-এ ডেটা থাকে যার সাথে একটি ডেটাটাইপ যুক্ত থাকে। Part-এ Part.data-এর মধ্যে অনুমোদিত ধরনের মধ্যে শুধুমাত্র একটি থাকতে পারে।

inlineData ফিল্ডে র-বাইট থাকলে, Part-এ অবশ্যই একটি নির্দিষ্ট IANA MIME টাইপ থাকতে হবে যা মিডিয়ার টাইপ ও সাবটাইপ শনাক্ত করে।

ফিল্ড
thought boolean

ঐচ্ছিক। মডেল থেকে অংশটি ভাবা হয়েছে কিনা তা নির্দেশ করে।

thoughtSignature string (bytes format)

ঐচ্ছিক। চিন্তার জন্য একটি অস্বচ্ছ স্বাক্ষর যাতে এটি পরবর্তী অনুরোধে আবার ব্যবহার করা যেতে পারে।

একটি base64-এনকোড করা স্ট্রিং।

partMetadata object (Struct format)

পার্টের সাথে যুক্ত কাস্টম মেটাডেটা। কন্টেন্ট উপস্থাপনা হিসেবে genai.Part ব্যবহার করা এজেন্টদের অতিরিক্ত তথ্যের ট্র্যাক রাখতে হতে পারে। যেমন, এটি কোনও ফাইল/সোর্সের নাম হতে পারে যেখান থেকে Part তৈরি হয় অথবা একাধিক Part স্ট্রিম মাল্টিপ্লেক্স করার উপায় হতে পারে।

mediaResolution object (MediaResolution)

ঐচ্ছিক। ইনপুট মিডিয়ার জন্য মিডিয়া রেজোলিউশন।

mediaProcessing enum (MediaProcessing)

ঐচ্ছিক। এই অংশের মিডিয়া বোঝার জন্য মডেল কীভাবে তা প্রসেস করে। শুধুমাত্র ভিডিওর অংশের জন্য অর্থপূর্ণ (ভিডিও মাইম সহ inlineData বা fileData)। ভিডিও নয় এমন অংশ এই ফিল্ডকে উপেক্ষা করে।

audioTranscription object (AudioTranscription)

ঐচ্ছিক। অডিও (ইনপুট বা আউটপুট) ট্রান্সক্রিপশন। এই অংশে অডিও ডেটা থাকলে তবেই এটি সেট করা হয়।

speechMetadata object (SpeechMetadata)

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

data Union type
নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
text string

ইনলাইন টেক্সট।

inlineData object (Blob)

ইনলাইন মিডিয়া বাইট।

functionCall object (FunctionCall)

মডেল থেকে ফেরত আসা একটি অনুমান করা FunctionCall যাতে আর্গুমেন্ট এবং তাদের মান সহ FunctionDeclaration.name-এর প্রতিনিধিত্বকারী একটি স্ট্রিং থাকে।

functionResponse object (FunctionResponse)

FunctionCall-এর ফলাফল আউটপুট, যাতে FunctionDeclaration.name-কে উপস্থাপনকারী স্ট্রিং এবং ফাংশন থেকে পাওয়া যেকোনও আউটপুট সহ স্ট্রাকচার্ড JSON অবজেক্ট থাকে, তা মডেলের জন্য প্রসঙ্গ হিসেবে ব্যবহার করা হয়।

fileData object (FileData)

URI ভিত্তিক ডেটা।

executableCode object (ExecutableCode)

মডেলের মাধ্যমে জেনারেট করা কোড যা এক্সিকিউট করার জন্য তৈরি করা হয়েছে।

codeExecutionResult object (CodeExecutionResult)

ExecutableCode এক্সিকিউট করার ফলাফল।

toolCall object (ToolCall)

সার্ভার-সাইড টুল কল। মডেল যখন কোনও টুল ইনভোকেশন অনুমান করে যা সার্ভারে এক্সিকিউট করা উচিত, তখন এই ফিল্ডটি পূরণ করা হয়। ক্লায়েন্ট এই মেসেজ API-তে ইকো করবে বলে আশা করা হচ্ছে।

toolResponse object (ToolResponse)

সার্ভার-সাইড ToolCall এক্সিকিউশন থেকে পাওয়া আউটপুট। সংশ্লিষ্ট ToolCall কার্যকর করার ফলাফল সহ ক্লায়েন্ট এই ফিল্ড পূরণ করে।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
metadata Union type
ডেটার অতিরিক্ত প্রিপ্রসেসিং নিয়ন্ত্রণ করে। প্রতিটি অংশের জন্য স্ট্যাটিক মিডিয়া প্রিপ্রসেসিং কনফিগার করতে inline_data বা file_data থাকলে এটি সেট করুন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
videoMetadata object (VideoMetadata)

ঐচ্ছিক। ভিডিও মেটাডেটা। ভিডিও ডেটা inlineData বা fileData-তে দেখানো হলে তবেই মেটাডেটা উল্লেখ করা উচিত।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  },
  "toolCall": {
    object (ToolCall)
  },
  "toolResponse": {
    object (ToolResponse)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

ব্লব

র মিডিয়া বাইট।

টেক্সট র বাইট হিসেবে পাঠানো উচিত নয়, 'টেক্সট' ফিল্ড ব্যবহার করুন।

ফিল্ড
mimeType string

সোর্স ডেটার IANA স্ট্যান্ডার্ড MIME-এর প্রকার। যেসব ধরনের ফাইল কাজ করে তার উদাহরণ: - ছবি: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - অডিও: audio/*, video/audio/s16le, video/audio/wav - ভিডিও: video/* - টেক্সট: text/plain, text/html, text/css, text/javascript, text/x-typescript, text/csv, text/markdown, text/x-python, text/xml, text/rtf, video/text/timestamp - অ্যাপ্লিকেশন: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf অতিরিক্ত প্রসঙ্গের জন্য, যেসব ফাইলের ফর্ম্যাট কাজ করে দেখুন। //

data string (bytes format)

মিডিয়া ফর্ম্যাটের জন্য র বাইট।

একটি base64-এনকোড করা স্ট্রিং।

displayName string

ঐচ্ছিক। মডেলের কাছে এই ব্লবকে রেফার করার জন্য ব্যবহৃত নাম উল্লেখ করে (যেমন, "my_blob.png")। verbalizationMode-কে REFERENCE_ONLY হিসেবে সেট করা হলে ব্লব রেফারেন্স আইডেন্টিফায়ার হিসেবে ব্যবহার করা হয়।

JSON উপস্থাপনা
{
  "mimeType": string,
  "data": string,
  "displayName": string
}

FunctionCall

মডেল থেকে পাওয়া একটি অনুমান করা FunctionCall যাতে আর্গুমেন্ট ও সেগুলির মান সহ FunctionDeclaration.name-কে উপস্থাপন করা একটি স্ট্রিং থাকে।

ফিল্ড
id string

ঐচ্ছিক। ফাংশন কলের অনন্য শনাক্তকারী। এটি পূরণ করা হলে, ক্লায়েন্ট functionCall এক্সিকিউট করবে এবং ম্যাচিং id সহ উত্তর ফেরত পাঠাবে।

name string

প্রয়োজনীয়। কল করার জন্য ফাংশনের নাম। a-z, A-Z, 0-9 বা আন্ডারস্কোর ও ড্যাশ থাকতে হবে এবং সর্বাধিক ১২৮টি অক্ষর থাকতে হবে।

args object (Struct format)

ঐচ্ছিক। JSON অবজেক্ট ফর্ম্যাটে ফাংশন প্যারামিটার ও ভ্যালু।

JSON উপস্থাপনা
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

FunctionCall থেকে পাওয়া আউটপুটে FunctionDeclaration.name-এর স্ট্রিং এবং ফাংশন থেকে পাওয়া আউটপুট সহ স্ট্রাকচার্ড JSON অবজেক্ট থাকে যা মডেলের জন্য প্রসঙ্গ হিসেবে ব্যবহার করা হয়। এতে মডেলের পূর্বাভাসের উপর ভিত্তি করে তৈরি করা FunctionCall-এর ফলাফল থাকতে হবে।

ফিল্ড
id string

ঐচ্ছিক। এই উত্তরটি যে ফাংশন কলের জন্য, সেটির শনাক্তকারী। সংশ্লিষ্ট ফাংশন কল id-এর সাথে ম্যাচ করার জন্য ক্লায়েন্ট দ্বারা পপুলেট করা হয়েছে।

name string

প্রয়োজনীয়। কল করার জন্য ফাংশনের নাম। এতে অবশ্যই a-z, A-Z, 0-9 থাকতে হবে অথবা আন্ডারস্কোর ও ড্যাশ থাকতে হবে এবং সর্বাধিক দৈর্ঘ্য ১২৮ হতে হবে।

response object (Struct format)

প্রয়োজনীয়। JSON অবজেক্ট ফর্ম্যাটে ফাংশন রেসপন্স। কলকারীরা ফাংশন আউটপুট ফেরাতে ফাংশনের সিনট্যাক্সের সাথে মানানসই তাদের পছন্দের যেকোনও কী ব্যবহার করতে পারেন, যেমন "output", "result" ইত্যাদি। বিশেষ করে, ফাংশন কল কার্যকর করতে ব্যর্থ হলে, মডেলে ত্রুটির বিবরণ ফেরাতে উত্তরে একটি "error" কী থাকতে পারে।

মাল্টিমিডিয়া অন্তর্ভুক্ত করতে, একটি "$ref" কী সহ সাবঅবজেক্ট ব্যবহার করা যেতে পারে, যার ভ্যালু হল মাল্টিমিডিয়া ধারণকারী FunctionResponsePart-এর inlineData.display_name। https://ai.google.dev/gemini-api/docs/function-calling#multimodal দেখুন।

parts[] object (FunctionResponsePart)

ঐচ্ছিক। ফাংশন রেসপন্স তৈরি করে এমন অর্ডার করা Parts। পার্টের আলাদা IANA MIME-এর প্রকার থাকতে পারে।

willContinue boolean

ঐচ্ছিক। ফাংশন কল চালু থাকার সিগন্যাল এবং আরও উত্তর ফেরত দেওয়া হবে, ফাংশন কলকে জেনারেটরে পরিণত করা হবে। শুধুমাত্র NON_BLOCKING ফাংশন কলের ক্ষেত্রে প্রযোজ্য, অন্যথায় উপেক্ষা করা হয়। "ভুল" হিসেবে সেট করা থাকলে, ভবিষ্যতের উত্তর বিবেচনা করা হবে না। ফাংশন কল শেষ হয়েছে তা বোঝাতে willContinue=False সহ খালি response রিটার্ন করার অনুমতি দেওয়া হয়। এটি এখনও মডেল জেনারেশন ট্রিগার করতে পারে। জেনারেট করা ট্রিগার করা এড়াতে এবং ফাংশন কল শেষ করতে, অতিরিক্তভাবে scheduling-কে SILENT-এ সেট করুন।

scheduling enum (Scheduling)

ঐচ্ছিক। কথোপকথনে কীভাবে উত্তর শিডিউল করা উচিত তা নির্দিষ্ট করে। শুধুমাত্র NON_BLOCKING ফাংশন কলের ক্ষেত্রে প্রযোজ্য, অন্যথায় উপেক্ষা করা হয়। ডিফল্ট হিসেবে WHEN_IDLE সেট করা থাকে।

JSON উপস্থাপনা
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

FunctionResponse মেসেজের অংশ হিসেবে মিডিয়া সহ ডেটাটাইপ।

FunctionResponsePart-এ ডেটা থাকে যার সাথে একটি ডেটাটাইপ যুক্ত থাকে। FunctionResponsePart-এ FunctionResponsePart.data-এর মধ্যে অনুমোদিত ধরনের মধ্যে শুধুমাত্র একটি থাকতে পারে।

inlineData ফিল্ডে র-বাইট থাকলে, FunctionResponsePart-এ অবশ্যই একটি নির্দিষ্ট IANA MIME টাইপ থাকতে হবে যা মিডিয়ার টাইপ ও সাবটাইপ শনাক্ত করে।

ফিল্ড
data Union type
ফাংশন রেসপন্স পার্টের ডেটা। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
inlineData object (FunctionResponseBlob)

ইনলাইন মিডিয়া বাইট।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

ফাংশন উত্তরের জন্য র' মিডিয়া বাইট।

টেক্সট র-বাইট হিসেবে পাঠানো যাবে না, 'FunctionResponse.response' ফিল্ড ব্যবহার করুন।

ফিল্ড
mimeType string

সোর্স ডেটার IANA স্ট্যান্ডার্ড MIME-এর প্রকার। যেমন: - image/png - image/jpeg কাজ করে না এমন MIME-এর প্রকার প্রদান করা হলে, একটি সমস্যা দেখানো হবে। কাজ করে এমন ফাইলের সম্পূর্ণ তালিকা দেখতে, কাজ করে এমন ফাইলের ফর্ম্যাট দেখুন।

data string (bytes format)

মিডিয়া ফর্ম্যাটের জন্য র বাইট।

একটি base64-এনকোড করা স্ট্রিং।

JSON উপস্থাপনা
{
  "mimeType": string,
  "data": string
}

সময়সূচি নির্ধারণ

কথোপকথনে কীভাবে উত্তর শিডিউল করা উচিত তা নির্দিষ্ট করে।

Enums
SCHEDULING_UNSPECIFIED এই ভ্যালু ব্যবহার করা হয়নি।
SILENT শুধুমাত্র কথোপকথনের প্রসঙ্গে ফলাফল যোগ করুন, জেনারেশনকে বাধা দেবেন না বা ট্রিগার করবেন না।
WHEN_IDLE কথোপকথনের প্রসঙ্গে ফলাফল যোগ করুন এবং চলমান জেনারেশনকে বাধা না দিয়ে আউটপুট তৈরি করার জন্য প্রম্পট করুন।
INTERRUPT কথোপকথনের প্রসঙ্গে ফলাফল যোগ করুন, চলমান জেনারেশন এবং আউটপুট জেনারেট করার প্রম্পটকে বাধা দিন।

FileData

URI ভিত্তিক ডেটা।

ফিল্ড
mimeType string

ঐচ্ছিক। সোর্স ডেটার IANA স্ট্যান্ডার্ড MIME-এর প্রকার।

fileUri string

প্রয়োজনীয়। URI.

displayName string

ঐচ্ছিক। মডেলের কাছে এই ফাইলটি উল্লেখ করার জন্য ব্যবহৃত নাম নির্দিষ্ট করে (যেমন, "my_file.pdf")। verbalizationMode-কে REFERENCE_ONLY-এ সেট করা হলে ফাইল রেফারেন্স আইডেন্টিফায়ার হিসেবে ব্যবহার করা হয়।

JSON উপস্থাপনা
{
  "mimeType": string,
  "fileUri": string,
  "displayName": string
}

ExecutableCode

মডেলের মাধ্যমে জেনারেট করা কোড যা এক্সিকিউট করার জন্য তৈরি করা হয়েছে এবং ফলাফল মডেলে ফেরত পাঠানো হয়েছে।

শুধুমাত্র CodeExecution টুল ব্যবহার করার সময় জেনারেট করা হয়, যেখানে কোড অটোমেটিক এক্সিকিউট করা হবে এবং সংশ্লিষ্ট CodeExecutionResult-ও জেনারেট করা হবে।

ফিল্ড
id string

ঐচ্ছিক। ExecutableCode অংশের অনন্য শনাক্তকারী। সার্ভার ম্যাচিং id সহ CodeExecutionResult রিটার্ন করে।

language enum (Language)

প্রয়োজনীয়। code-এর প্রোগ্রামিং ল্যাঙ্গুয়েজ।

code string

প্রয়োজনীয়। যে কোড এক্সিকিউট করতে হবে।

JSON উপস্থাপনা
{
  "id": string,
  "language": enum (Language),
  "code": string
}

ভাষা

তৈরি করা কোডের জন্য কাজ করে এমন প্রোগ্রামিং ল্যাঙ্গুয়েজ।

Enums
LANGUAGE_UNSPECIFIED অনির্দিষ্ট ভাষা। এই ভ্যালু ব্যবহার করা উচিত নয়।
PYTHON Python >= 3.10, numpy ও simpy উপলভ্য। Python হল ডিফল্ট ভাষা।

CodeExecutionResult

ExecutableCode এক্সিকিউট করার ফলাফল।

শুধুমাত্র CodeExecution টুল ব্যবহার করা হলে তবেই জেনারেট করা হয়।

ফিল্ড
id string

ঐচ্ছিক। এই ফলাফলটি ExecutableCode-এর যে অংশের জন্য, সেটির শনাক্তকারী। সংশ্লিষ্ট ExecutableCode-এর আইডি থাকলে তবেই এটি পূরণ করা হয়।

outcome enum (Outcome)

প্রয়োজনীয়। কোড এক্সিকিউশনের ফলাফল।

output string

ঐচ্ছিক। কোড এক্সিকিউশন সফল হলে stdout থাকে, অন্যথায় stderr বা অন্য বিবরণ থাকে।

JSON উপস্থাপনা
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

ফলাফল

কোড এক্সিকিউশনের সম্ভাব্য ফলাফলের তালিকা।

Enums
OUTCOME_UNSPECIFIED অনির্দিষ্ট স্ট্যাটাস। এই ভ্যালু ব্যবহার করা উচিত নয়।
OUTCOME_OK কোড এক্সিকিউট করা হয়ে গেছে। output-এ stdout থাকে, যদি কিছু থাকে।
OUTCOME_FAILED কোড এক্সিকিউট করা যায়নি। output-এ stderr এবং stdout থাকে, যদি কিছু থাকে।
OUTCOME_DEADLINE_EXCEEDED কোড এক্সিকিউশন অনেকক্ষণ ধরে চলেছে এবং বাতিল করা হয়েছে। আংশিক output থাকতে পারে বা নাও থাকতে পারে।

ToolCall

মডেল থেকে একটি অনুমান করা সার্ভার-সাইড ToolCall ফেরত এসেছে। এই মেসেজে এমন একটি টুল সম্পর্কে তথ্য আছে যা মডেলটি চালু করতে চায়। ক্লায়েন্ট এই ToolCall এক্সিকিউট করবে বলে আশা করা হচ্ছে না। পরিবর্তে, ক্লায়েন্টকে এই ToolCall, Content মেসেজের মধ্যে পরবর্তী টার্নে API-তে ফেরত পাঠাতে হবে, সাথে সংশ্লিষ্ট ToolResponse-ও পাঠাতে হবে।

ফিল্ড
id string

ঐচ্ছিক। টুল কলের অনন্য শনাক্তকারী। সার্ভার ম্যাচিং id সহ টুলের উত্তর ফেরত দেয়।

toolName string

ঐচ্ছিক। যে টুল কল করা হয়েছে সেটির নাম।

toolType enum (ToolType)

প্রয়োজনীয়। যে ধরনের টুল কল করা হয়েছে।

args object (Struct format)

ঐচ্ছিক। টুল কল আর্গুমেন্ট। যেমন: {"arg1" : "value1", "arg2" : "value2" , ...}

JSON উপস্থাপনা
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

ফাংশন কলে টুলের ধরন।

Enums
TOOL_TYPE_UNSPECIFIED টুলের ধরন উল্লেখ করা হয়নি।
GOOGLE_SEARCH_WEB Google Search টুল, Tool.google_search.search_types.web_search-এ ম্যাপ করে।
GOOGLE_SEARCH_IMAGE ছবি সার্চ টুল, Tool.google_search.search_types.image_search-এ ম্যাপ করে।
URL_CONTEXT URL কন্টেক্সট টুল, Tool.url_context-এ ম্যাপ করে।
GOOGLE_MAPS Google maps tool, maps to Tool.google_maps.

ToolResponse

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

ফিল্ড
id string

ঐচ্ছিক। এই উত্তরটি যে টুল কলের জন্য, তার শনাক্তকারী।

toolType enum (ToolType)

প্রয়োজনীয়। যে ধরনের টুল কল করা হয়েছে, যা সংশ্লিষ্ট ToolCall-এ toolType-এর সাথে ম্যাচ করে।

response object (Struct format)

ঐচ্ছিক। টুল থেকে পাওয়া উত্তর।

JSON উপস্থাপনা
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

মেটাডেটা ইনপুট ভিডিও কন্টেন্টের বিবরণ দেয়। স্ট্যাটিক ভিডিও প্রিপ্রসেসিং (যেমন টাইম ক্লিপিং, ফ্রেম রেট, সর্বাধিক ফ্রেম সংখ্যা বা এক্সট্র্যাক্ট করা কন্টেন্ট লেয়ার) কনফিগার করার জন্য inlineData বা fileData-এ ভিডিও থাকলে, এটি Part.video_metadata বা FunctionResponsePart.video_metadata-এ সেট করুন।

ফিল্ড
startOffset string (Duration format)

ঐচ্ছিক। ভিডিওর স্টার্ট অফসেট।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

endOffset string (Duration format)

ঐচ্ছিক। ভিডিওর এন্ড অফসেট।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

fps number

ঐচ্ছিক। মডেলে পাঠানো ভিডিওর ফ্রেম রেট। উল্লেখ করা না থাকলে, ডিফল্ট ভ্যালু হবে ১.০। fps রেঞ্জ হল (০.০, ২৪.০]।

JSON উপস্থাপনা
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

টোকেনাইজেশনের জন্য মিডিয়া রেজোলিউশন।

ফিল্ড
value Union type
মিডিয়া রেজোলিউশন লেভেল। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
level enum (Level)

প্রদত্ত মিডিয়ার জন্য ব্যবহৃত টোকেনাইজেশন কোয়ালিটি। Gemini API সংক্রান্ত সহায়তার জন্য ।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{

  // value
  "level": enum (Level)
  // Union type
}

লেভেল

মিডিয়া রেজোলিউশন লেভেল।

Enums
MEDIA_RESOLUTION_UNSPECIFIED মিডিয়া রেজোলিউশন সেট করা হয়নি।
MEDIA_RESOLUTION_LOW মিডিয়া রেজোলিউশন কম হিসেবে সেট করা হয়েছে।
MEDIA_RESOLUTION_MEDIUM মিডিয়া রেজোলিউশন মাঝারি হিসেবে সেট করা হয়েছে।
MEDIA_RESOLUTION_HIGH মিডিয়া রেজোলিউশন হাই হিসেবে সেট করা হয়েছে।
MEDIA_RESOLUTION_ULTRA_HIGH মিডিয়া রেজোলিউশন আল্ট্রা হাই হিসেবে সেট করা হয়েছে।

MediaProcessing

মডেল কীভাবে বোঝার জন্য ইনপুট মিডিয়া প্রসেস করে।

Enums
MEDIA_PROCESSING_UNSPECIFIED ডিফল্ট হিসেবে মডেল-নির্দিষ্ট প্রসেসিংয়ে সেট করা থাকে।
STATIC ফিক্সড-রেট ফ্রেম এক্সট্র্যাকশন। সব ফ্রেম প্রাসঙ্গিকভাবে প্লেস করা হয়েছে।
AGENTIC মডেল-চালিত ডায়নামিক নেভিগেশন। বেশিরভাগ ব্যবহারের ক্ষেত্রে সাজেস্ট করা হয়।

AudioTranscription

অডিওর কোনও অংশের ট্রান্সক্রিপশন। একাধিক স্পিকারের অডিওর ক্ষেত্রে, প্রতিটি স্পিকারের সেগমেন্ট হল একটি আলাদা Part যার নিজস্ব AudioTranscription-এ speakerLabel থাকে।

ফিল্ড
text string

প্রয়োজনীয়। এই অডিও সেগমেন্টের ট্রান্সক্রিপশন টেক্সট।

speakerLabel string

ঐচ্ছিক। এই অডিও সেগমেন্টের স্পিকারকে শনাক্ত করার জন্য একটি লেবেল (যেমন, "spk_1", "spk_2")। ডায়েরাইজেশন সেট করা থাকলে দেখান।

words[] object (WordInfo)

ঐচ্ছিক। শব্দ-লেভেল ট্রান্সক্রিপশন ও টাইমিংয়ের বিস্তারিত বিবরণ। wordTimestamp সেট করা থাকলে উপস্থিত থাকে।

JSON উপস্থাপনা
{
  "text": string,
  "speakerLabel": string,
  "words": [
    {
      object (WordInfo)
    }
  ]
}

WordInfo

শনাক্ত করা একটি শব্দ সম্পর্কে তথ্য।

ফিল্ড
word string

প্রয়োজনীয়। শব্দের ট্রান্সক্রিপ্ট।

startOffset string (Duration format)

ঐচ্ছিক। অডিও শুরু হওয়ার সাপেক্ষে শব্দের সময় অফসেট শুরু করুন।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

endOffset string (Duration format)

ঐচ্ছিক। অডিও শুরু হওয়ার সময়ের সাপেক্ষে শব্দের শেষ অফসেট।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

JSON উপস্থাপনা
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

textটি অংশের জন্য স্পিচ মেটাডেটা।

ফিল্ড
speaker string

ঐচ্ছিক। একাধিক স্পিকার সিন্থেসিসের জন্য ঐচ্ছিক স্পিকারের নাম।

style string

ঐচ্ছিক। স্পিচ সিন্থেসিসের জন্য ঐচ্ছিক স্টাইল সংক্রান্ত নির্দেশাবলী।

JSON উপস্থাপনা
{
  "speaker": string,
  "style": string
}

পরিবেশ

এজেন্টের জন্য এক্সিকিউশন এনভায়রনমেন্ট।

ফিল্ড
id string

প্রয়োজনীয়। শুধু আউটপুট। পরিবেশের আইডি।

sources[] object (Source)

এনভায়রনমেন্টে মাউন্ট করার জন্য সোর্স।

created string

শুধু আউটপুট। ISO 8601 ফর্ম্যাটে (YYYY-MM-DDThh:mm:ssZ) এনভায়রনমেন্ট তৈরি করার সময়।

updated string

শুধু আউটপুট। ISO 8601 ফর্ম্যাটে (YYYY-MM-DDThh:mm:ssZ) যে সময়ে এনভায়রনমেন্ট শেষবার আপডেট করা হয়েছে।

lastAccessed string

শুধু আউটপুট। ISO 8601 ফর্ম্যাটে (YYYY-MM-DDThh:mm:ssZ) যে সময়ে এনভায়রনমেন্ট শেষবার অ্যাক্সেস করা হয়েছে।

status enum (Status)

শুধু আউটপুট। এনভায়রনমেন্ট কন্টেনারের স্ট্যাটাস।

fileCount string (int64 format)

শুধু আউটপুট। এনভায়রনমেন্টে ফাইলের সংখ্যা, শুধুমাত্র আউটপুট।

sizeBytes string (int64 format)

শুধু আউটপুট। বাইট হিসেবে এনভায়রনমেন্ট ফাইলের মোট সাইজ, শুধুমাত্র আউটপুট।

network Union type
এনভায়রনমেন্টের জন্য নেটওয়ার্ক কনফিগারেশন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

শুধুমাত্র নির্দিষ্ট ডোমেনকে অনুমতি দিন।

networkMode enum (NetworkMode)

নেটওয়ার্ক ইগ্রেস মোড।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

স্ট্যাটাস

এনভায়রনমেন্টের স্ট্যাটাস।

Enums
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

অনুমোদিত তালিকার বাইরে থাকা কনফিগারেশনের জন্য নেটওয়ার্ক ইগ্রেস মোড।

Enums
NETWORK_MODE_UNSPECIFIED ডিফল্ট ভ্যালু। ব্যবহার করা হয়নি।
DISABLED সব নেটওয়ার্ক ইগ্রেস ব্লক করা আছে।

স্কিমা

Schema অবজেক্ট ইনপুট ও আউটপুট ডেটার ধরন সংজ্ঞায়িত করার অনুমতি দেয়। এই ধরনের ডেটা অবজেক্ট হতে পারে, তবে প্রিমিটিভ ও অ্যারেও হতে পারে। OpenAPI 3.0 স্কিমা অবজেক্ট-এর বেছে নেওয়া সাবসেটকে দেখায়।

ফিল্ড
type enum (Type)

প্রয়োজনীয়। ডেটার ধরন।

format string

ঐচ্ছিক। ডেটার ফর্ম্যাট। যেকোনও ভ্যালু ব্যবহার করা যায়, তবে বেশিরভাগই কোনও বিশেষ কার্যকারিতা ট্রিগার করে না।

title string

ঐচ্ছিক। স্কিমার শীর্ষক।

description string

ঐচ্ছিক। প্যারামিটারের সংক্ষিপ্ত বিবরণ। এতে ব্যবহারের উদাহরণ থাকতে পারে। প্যারামিটারের বিবরণ মার্কডাউন হিসেবে ফর্ম্যাট করা হতে পারে।

nullable boolean

ঐচ্ছিক। ভ্যালু শূন্য হতে পারে কিনা তা দেখায়।

enum[] string

ঐচ্ছিক। enum ফর্ম্যাট সহ Type.STRING এলিমেন্টের সম্ভাব্য ভ্যালু। যেমন, আমরা Enum Direction এইভাবে সংজ্ঞায়িত করতে পারি : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

ঐচ্ছিক। Type.ARRAY-এর জন্য সর্বাধিক সংখ্যক এলিমেন্ট।

minItems string (int64 format)

ঐচ্ছিক। Type.ARRAY-এর জন্য এলিমেন্টের ন্যূনতম সংখ্যা।

properties map (key: string, value: object (Schema))

ঐচ্ছিক। Type.OBJECT-এর প্রপার্টি।

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

required[] string

ঐচ্ছিক। Type.OBJECT-এর প্রয়োজনীয় প্রপার্টি।

minProperties string (int64 format)

ঐচ্ছিক। Type.OBJECT-এর জন্য প্রপার্টির ন্যূনতম সংখ্যা।

maxProperties string (int64 format)

ঐচ্ছিক। Type.OBJECT-এর জন্য প্রপার্টির সর্বাধিক সংখ্যা।

minLength string (int64 format)

ঐচ্ছিক। SCHEMA FIELDS FOR TYPE STRING Minimum length of the Type.STRING

maxLength string (int64 format)

ঐচ্ছিক। Type.STRING-এর সর্বাধিক দৈর্ঘ্য

pattern string

ঐচ্ছিক। Type.STRING-এর প্যাটার্ন যা কোনও স্ট্রিংকে রেগুলার এক্সপ্রেশনে সীমাবদ্ধ করে।

example value (Value format)

ঐচ্ছিক। অবজেক্টের উদাহরণ। অবজেক্টটি রুট হলে তবেই এটি পূরণ করা হবে।

anyOf[] object (Schema)

ঐচ্ছিক। তালিকার যেকোনও (এক বা একাধিক) সাবস্কিমার সাথে ভ্যালু যাচাই করতে হবে।

propertyOrdering[] string

ঐচ্ছিক। প্রপার্টির ক্রম। ওপেন API স্পেসিফিকেশনে স্ট্যান্ডার্ড ফিল্ড নয়। উত্তরে প্রপার্টির ক্রম নির্ধারণ করতে ব্যবহার করা হয়।

default value (Value format)

ঐচ্ছিক। ফিল্ডের ডিফল্ট ভ্যালু। JSON স্কিমা অনুযায়ী, এই ফিল্ডটি ডকুমেন্টেশন জেনারেটরের জন্য এবং এটি যাচাইকরণকে প্রভাবিত করে না। তাই এটি এখানে অন্তর্ভুক্ত করা হয়েছে এবং উপেক্ষা করা হয়েছে যাতে যেসব ডেভেলপার default ফিল্ড সহ স্কিমা পাঠান তারা অজানা-ফিল্ড সংক্রান্ত সমস্যা না পান।

items object (Schema)

ঐচ্ছিক। Type.ARRAY-এর এলিমেন্টের স্কিমা।

minimum number

ঐচ্ছিক। INTEGER এবং NUMBER টাইপের জন্য স্কিমা ফিল্ড Type.INTEGER এবং Type.NUMBER-এর ন্যূনতম মান

maximum number

ঐচ্ছিক। Type.INTEGER এবং Type.NUMBER-এর সর্বাধিক ভ্যালু

JSON উপস্থাপনা
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

ধরন

এই ধরনের মধ্যে OpenAPI ডেটার ধরনের তালিকা থাকে, যা https://spec.openapis.org/oas/v3.0.3#data-types-এ উল্লেখ করা আছে

Enums
TYPE_UNSPECIFIED নির্দিষ্ট করা নেই, ব্যবহার করা উচিত নয়।
STRING স্ট্রিংয়ের ধরন।
NUMBER নম্বরের ধরন।
INTEGER ইন্টিজার টাইপ।
BOOLEAN বুলিয়ান টাইপ।
ARRAY অ্যারের ধরন।
OBJECT অবজেক্টের ধরন।
NULL Null টাইপ।

টুল

মডেল উত্তর জেনারেট করার জন্য ব্যবহার করতে পারে এমন টুলের বিবরণ।

Tool হল কোডের একটি অংশ যা সিস্টেমকে এক্সটার্নাল সিস্টেমের সাথে ইন্টার‍্যাক্ট করতে দেয় যাতে মডেলের জ্ঞান ও স্কোপের বাইরে কোনও অ্যাকশন বা অ্যাকশনের সেট পারফর্ম করা যায়।

ফিল্ড
functionDeclarations[] object (FunctionDeclaration)

ঐচ্ছিক। মডেলের জন্য উপলভ্য FunctionDeclarations-এর তালিকা যা ফাংশন কলিংয়ের জন্য ব্যবহার করা যেতে পারে।

মডেল বা সিস্টেম ফাংশনটি এক্সিকিউট করে না। পরিবর্তে, নির্দিষ্ট করা ফাংশনটি এক্সিকিউট করার জন্য ক্লায়েন্ট সাইডে আর্গুমেন্ট সহ FunctionCall হিসেবে ফিরিয়ে দেওয়া হতে পারে। মডেলটি উত্তরে FunctionCall পপুলেট করে এই ফাংশনগুলির একটি সাবসেট কল করার সিদ্ধান্ত নিতে পারে। পরবর্তী কথোপকথনে পরবর্তী মডেল টার্নের জন্য Content.role "ফাংশন" জেনারেশন প্রসঙ্গ সহ একটি FunctionResponse থাকতে পারে।

googleSearchRetrieval object (GoogleSearchRetrieval)

ঐচ্ছিক। Google Search দ্বারা পরিচালিত রিট্রিভাল টুল।

codeExecution object (CodeExecution)

ঐচ্ছিক। জেনারেট করার অংশ হিসেবে মডেলকে কোড এক্সিকিউট করার অনুমতি দেয়।

computerUse object (ComputerUse)

ঐচ্ছিক। কম্পিউটারের সাথে সরাসরি ইন্টার‍্যাক্ট করা মডেলকে সহায়তা করার টুল। চালু করা থাকলে, এটি অটোমেটিক কম্পিউটার-ব্যবহার সংক্রান্ত নির্দিষ্ট ফাংশন ডিক্লারেশন পূরণ করে।

urlContext object (UrlContext)

ঐচ্ছিক। URL কন্টেক্সট রিট্রিভাল সংক্রান্ত সহায়তা করার টুল।

mcpServers[] object (McpServer)

ঐচ্ছিক। কানেক্ট করার জন্য MCP সার্ভার।

googleMaps object (GoogleMaps)

ঐচ্ছিক। ব্যবহারকারীর কোয়েরি সম্পর্কিত জিওস্পেশিয়াল প্রাসঙ্গিকতার সাথে মডেলের উত্তর গ্রাউন্ড করার অনুমতি দেয় এমন টুল।

JSON উপস্থাপনা
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

OpenAPI 3.03 স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত ফাংশন ঘোষণার স্ট্রাকচার্ড উপস্থাপনা। এই ডিক্লারেশনে ফাংশনের নাম ও প্যারামিটার অন্তর্ভুক্ত থাকে। এই FunctionDeclaration হল কোডের একটি ব্লকের উপস্থাপনা যা মডেল দ্বারা Tool হিসাবে ব্যবহার করা যেতে পারে এবং ক্লায়েন্ট দ্বারা কার্যকর করা যেতে পারে।

ফিল্ড
name string

প্রয়োজনীয়। ফাংশনের নাম। অবশ্যই a-z, A-Z, 0-9 হতে হবে অথবা আন্ডারস্কোর, কোলন, ডট ও ড্যাশ থাকতে হবে, যার সর্বাধিক দৈর্ঘ্য ১২৮ হতে হবে।

description string

প্রয়োজনীয়। ফাংশনের সংক্ষিপ্ত বিবরণ।

behavior enum (Behavior)

ঐচ্ছিক। ফাংশনের আচরণ নির্দিষ্ট করে। বর্তমানে শুধুমাত্র BidiGenerateContent পদ্ধতিতে কাজ করে।

parameters object (Schema)

ঐচ্ছিক। এই ফাংশনের প্যারামিটার বর্ণনা করে। Open API 3.03 প্যারামিটার অবজেক্ট স্ট্রিং কী দেখায়: প্যারামিটারের নাম। প্যারামিটারের নামে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয়। স্কিমা ভ্যালু: প্যারামিটারের জন্য ব্যবহৃত ধরন নির্ধারণকারী স্কিমা।

parametersJsonSchema value (Value format)

ঐচ্ছিক। JSON স্কিমা ফর্ম্যাটে ফাংশনের প্যারামিটার বর্ণনা করে। স্কিমাতে অবশ্যই এমন একটি অবজেক্টের বর্ণনা থাকতে হবে যেখানে প্রপার্টিগুলি ফাংশনের প্যারামিটার। যেমন:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

এই ফিল্ডটি parameters-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

response object (Schema)

ঐচ্ছিক। JSON স্কিমা ফর্ম্যাটে এই ফাংশন থেকে পাওয়া আউটপুট বর্ণনা করে। Open API 3.03 রেসপন্স অবজেক্ট দেখায়। ফাংশনের রেসপন্স ভ্যালুর জন্য ব্যবহৃত ধরন স্কিমা নির্ধারণ করে।

responseJsonSchema value (Value format)

ঐচ্ছিক। JSON স্কিমা ফর্ম্যাটে এই ফাংশন থেকে পাওয়া আউটপুট বর্ণনা করে। স্কিমা দ্বারা নির্দিষ্ট করা ভ্যালু হল ফাংশনের রেসপন্স ভ্যালু।

এই ফিল্ডটি response-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

JSON উপস্থাপনা
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

আচরণ

ফাংশনের আচরণ নির্ধারণ করে। ডিফল্ট হিসেবে BLOCKING সেট করা থাকে।

Enums
UNSPECIFIED এই ভ্যালু ব্যবহার করা হয়নি।
BLOCKING সেট করা থাকলে, কথোপকথন চালিয়ে যাওয়ার আগে ফাংশন রেসপন্স পাওয়ার জন্য সিস্টেম অপেক্ষা করবে।
NON_BLOCKING সেট করা থাকলে, সিস্টেম ফাংশন রেসপন্স পাওয়ার জন্য অপেক্ষা করবে না। পরিবর্তে, এটি ব্যবহারকারী এবং মডেলের মধ্যে কথোপকথন বজায় রাখার সময় ফাংশন রেসপন্স উপলভ্য হওয়ার সাথে সাথে তা ম্যানেজ করার চেষ্টা করবে।

GoogleSearchRetrieval

Google দ্বারা পরিচালিত, গ্রাউন্ডিংয়ের জন্য সর্বজনীন ওয়েব ডেটা ফিরিয়ে আনার টুল।

ফিল্ড
dynamicRetrievalConfig object (DynamicRetrievalConfig)

প্রদত্ত সোর্সের জন্য ডায়নামিক রিট্রিভাল কনফিগারেশন নির্দিষ্ট করে।

JSON উপস্থাপনা
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

ডায়নামিক রিট্রিভাল কাস্টমাইজ করার বিকল্প বর্ণনা করে।

ফিল্ড
mode enum (Mode)

ডায়নামিক রিট্রিভালে ব্যবহার করার জন্য প্রেডিক্টরের মোড।

dynamicThreshold number

ডায়নামিক রিট্রিভালে ব্যবহার করার থ্রেশহোল্ড। সেট করা না থাকলে, সিস্টেমের ডিফল্ট ভ্যালু ব্যবহার করা হয়।

JSON উপস্থাপনা
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

মোড

ডায়নামিক রিট্রিভালে ব্যবহার করার জন্য প্রেডিক্টরের মোড।

Enums
MODE_UNSPECIFIED সবসময় রিট্রিভাল ট্রিগার করুন।
MODE_DYNAMIC সিস্টেম যখন মনে করবে যে এটি প্রয়োজন, শুধুমাত্র তখনই রিট্রিভাল রান করুন।

CodeExecution

এই ধরনের কোনও ফিল্ড নেই।

মডেলের মাধ্যমে জেনারেট করা কোড এক্সিকিউট করে এবং অটোমেটিক মডেলের কাছে ফলাফল ফেরত পাঠায় এমন টুল।

এছাড়াও, ExecutableCode এবং CodeExecutionResult দেখুন যা শুধুমাত্র এই টুল ব্যবহার করার সময় তৈরি হয়।

GoogleSearch

GoogleSearch টুলের ধরন। মডেলে Google Search-কে সহায়তা করার টুল। Google দ্বারা পরিচালিত।

ফিল্ড
timeRangeFilter object (Interval)

ঐচ্ছিক। সার্চ ফলাফল নির্দিষ্ট সময়সীমার মধ্যে ফিল্টার করা। গ্রাহক শুরুর সময় সেট করলে, তাকে শেষ হওয়ার সময়ও সেট করতে হবে (এবং এর উল্টোটাও)।

searchTypes object (SearchTypes)

ঐচ্ছিক। চালু করার জন্য সার্চের ধরনের সেট। সেট করা না থাকলে, ডিফল্ট হিসেবে ওয়েব সার্চ চালু করা থাকে।

JSON উপস্থাপনা
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

বিরতি

একটি টাইম ইন্টারভাল দেখায়, যা টাইমস্ট্যাম্প শুরু (অন্তর্ভুক্ত) এবং টাইমস্ট্যাম্প শেষ (বাদ দেওয়া) হিসেবে এনকোড করা হয়।

শুরুর মান শেষের মানের চেয়ে কম বা তার সমান হতে হবে। শুরুর সময় ও শেষের সময় একই হলে, ইন্টারভ্যাল খালি থাকে (কোনও সময় ম্যাচ করে না)। শুরু ও শেষ, দুটির কোনওটিই উল্লেখ করা না থাকলে, ইন্টারভ্যাল যেকোনও সময়ের সাথে ম্যাচ করে।

ফিল্ড
startTime string (Timestamp format)

ঐচ্ছিক। ইন্টারভ্যালের অন্তর্ভুক্ত শুরু।

নির্দিষ্ট করা থাকলে, এই ইন্টারভ্যালের সাথে ম্যাচ করা টাইমস্ট্যাম্প শুরুর সময় বা তার পরে হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

endTime string (Timestamp format)

ঐচ্ছিক। ইন্টারভ্যালের এক্সক্লুসিভ শেষ।

নির্দিষ্ট করা থাকলে, এই ইন্টারভ্যালের সাথে ম্যাচ করা টাইমস্ট্যাম্প শেষ হওয়ার আগে হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

JSON উপস্থাপনা
{
  "startTime": string,
  "endTime": string
}

SearchTypes

GoogleSearch টুলে বিভিন্ন ধরনের সার্চ চালু করা যেতে পারে।

ফিল্ড
JSON উপস্থাপনা
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

এই ধরনের কোনও ফিল্ড নেই।

গ্রাউন্ডিং ও সম্পর্কিত কনফিগারেশনের জন্য স্ট্যান্ডার্ড ওয়েব সার্চ।

ImageSearch

এই ধরনের কোনও ফিল্ড নেই।

গ্রাউন্ডিং ও সম্পর্কিত কনফিগারেশনের জন্য ছবি সার্চ।

ComputerUse

কম্পিউটার ব্যবহারের টুল টাইপ।

ফিল্ড
environment enum (Environment)

প্রয়োজনীয়। যে পরিবেশে অপারেট করা হচ্ছে।

excludedPredefinedFunctions[] string

ঐচ্ছিক। ডিফল্ট হিসেবে, আগে থেকে নির্ধারিত ফাংশনগুলি ফাইনাল মডেল কলে অন্তর্ভুক্ত করা হয়। এর মধ্যে কিছু অটোমেটিক অন্তর্ভুক্ত হওয়া থেকে স্পষ্টভাবে বাদ দেওয়া যেতে পারে। এটি দুটি উদ্দেশ্যে ব্যবহার করা যেতে পারে: ১. আরও সীমাবদ্ধ / অন্য অ্যাকশন স্পেস ব্যবহার করা। ২. আগে থেকে নির্ধারিত ফাংশনের সংজ্ঞা / নির্দেশাবলী উন্নত করা।

enablePromptInjectionDetection boolean

ঐচ্ছিক। কম্পিউটার-ব্যবহারের অনুরোধে প্রম্পট ইঞ্জেকশন ডিটেকশন চেক চালু করা হবে কিনা।

disabledSafetyPolicies[] enum (SafetyPolicy)

ঐচ্ছিক। কম্পিউটার ব্যবহারের জন্য নিরাপত্তা নীতি বন্ধ করা হয়েছে।

JSON উপস্থাপনা
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

পরিবেশ

পরিচালিত পরিবেশকে উপস্থাপন করে, যেমন একটি ওয়েব ব্রাউজার।

Enums
ENVIRONMENT_UNSPECIFIED ডিফল্ট হিসেবে ব্রাউজার সেট করা থাকে।
ENVIRONMENT_BROWSER ওয়েব ব্রাউজারে কাজ করে।
ENVIRONMENT_MOBILE মোবাইল এনভায়রনমেন্টে কাজ করে।
ENVIRONMENT_DESKTOP ডেস্কটপ এনভায়রনমেন্টে কাজ করে।

SafetyPolicy

কম্পিউটার ব্যবহারের জন্য পূর্বনির্ধারিত নিরাপত্তা নীতি।

Enums
SAFETY_POLICY_UNSPECIFIED অনির্দিষ্ট নিরাপত্তা নীতি।
FINANCIAL_TRANSACTIONS আর্থিক ট্রানজ্যাকশনের জন্য নিরাপত্তা নীতি।
SENSITIVE_DATA_MODIFICATION সংবেদনশীল ডেটা পরিবর্তনের জন্য নিরাপত্তা নীতি।
COMMUNICATION_TOOL যোগাযোগের টুল (যেমন, Gmail, Chat, Meet) সংক্রান্ত নিরাপত্তা নীতি।
ACCOUNT_CREATION অ্যাকাউন্ট তৈরি করার জন্য নিরাপত্তা নীতি।
DATA_MODIFICATION ডেটা পরিবর্তনের জন্য নিরাপত্তা নীতি।
LEGAL_TERMS_AND_AGREEMENTS আইনি শর্তাবলী ও চুক্তির জন্য নিরাপত্তা নীতি।

UrlContext

এই ধরনের কোনও ফিল্ড নেই।

URL কন্টেক্সট রিট্রিভ করার জন্য টুল।

FileSearch

FileSearch টুল যা সেম্যান্টিক রিট্রিভাল কর্পোরা থেকে নলেজ রিট্রিভ করে। ImportFile API ব্যবহার করে ফাইলগুলি Semantic Retrieval কর্পোরাতে ইমপোর্ট করা হয়।

ফিল্ড
fileSearchStoreNames[] string

প্রয়োজনীয়। যেখান থেকে ফাইল সার্চ স্টোর ফিরিয়ে আনতে হবে তার নাম। উদাহরণ: fileSearchStores/my-file-search-store-123

metadataFilter string

ঐচ্ছিক। সেম্যান্টিক রিট্রিভাল ডকুমেন্ট ও চাঙ্কে প্রয়োগ করার জন্য মেটাডেটা ফিল্টার।

topK integer

ঐচ্ছিক। কতগুলি সিম্যান্টিক রিট্রিভাল চাঙ্ক রিট্রিভ করতে হবে।

JSON উপস্থাপনা
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer হল এমন একটি সার্ভার যা অ্যাকশন পারফর্ম করার জন্য মডেলের মাধ্যমে কল করা যেতে পারে। এটি এমন একটি সার্ভার যা MCP প্রোটোকল প্রয়োগ করে।

ফিল্ড
name string

MCPServer-এর নাম।

transport Union type
MCPServer-এর সাথে কানেক্ট করার জন্য যে ট্রান্সপোর্ট ব্যবহার করা হবে। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
streamableHttpTransport object (StreamableHttpTransport)

HTTP অনুরোধ ও উত্তর স্ট্রিম করতে পারে এমন ট্রান্সপোর্ট।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

HTTP অনুরোধ ও উত্তর স্ট্রিম করতে পারে এমন ট্রান্সপোর্ট।

ফিল্ড
url string

MCPServer এন্ডপয়েন্টের সম্পূর্ণ URL। যেমন: "https://api.example.com/mcp"

headers map (key: string, value: string)

ঐচ্ছিক: প্রয়োজন হলে, যাচাইকরণ হেডার, টাইমআউট ইত্যাদির জন্য ফিল্ড।

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

timeout string (Duration format)

নিয়মিত অপারেশনের জন্য HTTP টাইমআউট।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

sseReadTimeout string (Duration format)

SSE রিড অপারেশনের জন্য টাইমআউট।

's' দিয়ে শেষ হওয়া নয়টি পর্যন্ত ভগ্নাংশ সংখ্যা সহ সেকেন্ডে সময়সীমা। উদাহরণ: "3.5s"।

terminateOnClose boolean

ট্রান্সপোর্ট বন্ধ হয়ে গেলে ক্লায়েন্ট সেশন বন্ধ করা হবে কিনা।

JSON উপস্থাপনা
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

GoogleMaps টুল যা ব্যবহারকারীর কোয়েরির জন্য জিওস্পেশিয়াল প্রসঙ্গ প্রদান করে।

ফিল্ড
enableWidget boolean

ঐচ্ছিক। উত্তরের GroundingMetadata-তে উইজেট কনটেক্সট টোকেন ফেরত দেওয়া হবে কিনা। মডেলের উত্তরে উল্লেখ করা জায়গার সাথে সম্পর্কিত জিওস্পেশিয়াল কনটেক্সট সহ Google Maps উইজেট রেন্ডার করার জন্য ডেভেলপাররা উইজেট কনটেক্সট টোকেন ব্যবহার করতে পারেন।

JSON উপস্থাপনা
{
  "enableWidget": boolean
}

REST রিসোর্স: auth_tokens

রিসোর্স: AuthToken

একটি ক্ষণস্থায়ী প্রমাণীকরণ টোকেন তৈরি করার অনুরোধ।

ফিল্ড
name string

শুধু আউটপুট। শনাক্তকারী। টোকেনটি।

expireTime string (Timestamp format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। একটি ঐচ্ছিক সময় যার পরে, ফলাফল টোকেন ব্যবহার করার সময়, BidiGenerateContent সেশনে মেসেজ বাতিল করা হবে। (এই সময়ের পরে Gemini সেশন বন্ধ করে দিতে পারে।)

সেট করা না থাকলে, এটি ডিফল্ট হিসেবে ভবিষ্যতে ৩০ মিনিট পর্যন্ত সেট করা থাকে। সেট করা হলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

newSessionExpireTime string (Timestamp format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। এই অনুরোধের ফলে পাওয়া টোকেন ব্যবহার করে নতুন লাইভ API সেশন শুরু করার সময়সীমা পেরিয়ে গেছে।

সেট করা না থাকলে, ভবিষ্যতে এটি ডিফল্ট হিসেবে ৬০ সেকেন্ডে সেট করা হয়। সেট করা হলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

fieldMask string (FieldMask format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। fieldMask খালি থাকলে এবং bidiGenerateContentSetup উপস্থিত না থাকলে, কার্যকর BidiGenerateContentSetup মেসেজ Live API কানেকশন থেকে নেওয়া হয়।

fieldMask খালি থাকলে এবং bidiGenerateContentSetup উপস্থিত থাকলে, এই অনুরোধে কার্যকর BidiGenerateContentSetup মেসেজ সম্পূর্ণভাবে bidiGenerateContentSetup থেকে নেওয়া হয়। Live API কানেকশন থেকে সেট-আপ মেসেজ উপেক্ষা করা হয়েছে।

fieldMask ফাঁকা না থাকলে, bidiGenerateContentSetup-এর সংশ্লিষ্ট ফিল্ড Live API কানেকশনে সেট-আপ মেসেজের ফিল্ডকে ওভাররাইট করবে।

এটি কমা দিয়ে আলাদা করা ফিল্ডের সম্পূর্ণ উপযুক্ত নামের তালিকা। উদাহরণ: "user.displayName,photo"।

config Union type
ফলাফল হিসেবে পাওয়া টোকেনের জন্য পদ্ধতি-নির্দিষ্ট কনফিগারেশন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। BidiGenerateContent-এর জন্য নির্দিষ্ট কনফিগারেশন।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
uses integer

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। টোকেনটি যতবার ব্যবহার করা যাবে। এই ভ্যালু শূন্য হলে কোনও সীমা প্রযোজ্য হবে না। Live API সেশন আবার চালু করাকে ব্যবহার হিসেবে ধরা হয় না। উল্লেখ করা না থাকলে, ডিফল্ট হল ১।

JSON উপস্থাপনা
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

প্রথম (এবং শুধুমাত্র প্রথম) BidiGenerateContentClientMessage-এ মেসেজ পাঠানো হবে। স্ট্রিমিং RPC-এর সময়সীমার জন্য প্রযোজ্য হবে এমন কনফিগারেশন এতে রয়েছে।

কোনও অতিরিক্ত মেসেজ পাঠানোর আগে ক্লায়েন্টদের BidiGenerateContentSetupComplete মেসেজের জন্য অপেক্ষা করা উচিত।

ফিল্ড
model string

প্রয়োজনীয়। মডেলের রিসোর্স নাম। এটি মডেলের ব্যবহারের জন্য আইডি হিসেবে কাজ করে।

ফর্ম্যাট: models/{model}

generationConfig object (GenerationConfig)

ঐচ্ছিক। জেনারেশন কনফিগারেশন।

নিম্নলিখিত ফিল্ড কাজ করে না:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

ঐচ্ছিক। ব্যবহারকারী মডেলের জন্য সিস্টেম নির্দেশাবলী প্রদান করেছেন।

মনে রাখবেন: প্রতিটি অংশে শুধু টেক্সট ব্যবহার করতে হবে এবং প্রতিটি অংশের কন্টেন্ট আলাদা আলাদা অনুচ্ছেদে থাকবে।

tools[] object (Tool)

ঐচ্ছিক। Tools-এর একটি তালিকা, যা মডেলটি পরবর্তী উত্তর তৈরি করতে ব্যবহার করতে পারে।

Tool হল কোডের একটি অংশ যা সিস্টেমকে এক্সটার্নাল সিস্টেমের সাথে ইন্টার‍্যাক্ট করতে দেয় যাতে মডেলের জ্ঞান ও স্কোপের বাইরে কোনও অ্যাকশন বা অ্যাকশনের সেট পারফর্ম করা যায়।

realtimeInputConfig object (RealtimeInputConfig)

ঐচ্ছিক। রিয়েল-টাইম ইনপুট ম্যানেজ করার পদ্ধতি কনফিগার করে।

sessionResumption object (SessionResumptionConfig)

ঐচ্ছিক। সেশন আবার চালু করার মেকানিজম কনফিগার করে।

অন্তর্ভুক্ত করা হলে, সার্ভার SessionResumptionUpdateটি মেসেজ পাঠাবে।

contextWindowCompression object (ContextWindowCompressionConfig)

ঐচ্ছিক। কন্টেক্সট উইন্ডো কম্প্রেশন মেকানিজম কনফিগার করে।

অন্তর্ভুক্ত থাকলে, কনফিগার করা দৈর্ঘ্য অতিক্রম করলে সার্ভার অটোমেটিক কনটেক্সটের সাইজ কমিয়ে দেবে।

inputAudioTranscription object (AudioTranscriptionConfig)

ঐচ্ছিক। সেট করা থাকলে, ভয়েস ইনপুটের ট্রান্সক্রিপশন চালু করে। কনফিগার করা থাকলে, ইনপুট অডিওর ভাষার সাথে ট্রান্সক্রিপশন অ্যালাইন করা হয়।

outputAudioTranscription object (AudioTranscriptionConfig)

ঐচ্ছিক। সেট করা থাকলে, মডেলের অডিও আউটপুটের ট্রান্সক্রিপশন চালু করে। কনফিগার করা থাকলে, আউটপুট অডিওর জন্য নির্দিষ্ট করা ভাষা কোডের সাথে ট্রান্সক্রিপশনটি অ্যালাইন করা হয়।

historyConfig object (HistoryConfig)

ঐচ্ছিক। ক্লায়েন্ট ও সার্ভারের মধ্যে ইতিহাস আদানপ্রদান কনফিগার করে।

labels map (key: string, value: string)

ঐচ্ছিক। অনুরোধের জন্য ব্যবহারকারীর দ্বারা নির্ধারিত মেটাডেটা সহ লেবেল।

ঐচ্ছিক। লেবেলকে অবশ্যই স্ট্যান্ডার্ড ইউনিফায়েড Cloud লেবেলের প্রয়োজনীয়তা মেনে চলতে হবে: - লেবেল কী অবশ্যই কোনও অক্ষর দিয়ে শুরু হতে হবে। - লেবেল কী এবং ভ্যালু ৬৩ অক্ষরের (ইউনিকোড কোডপয়েন্ট) বেশি হতে পারবে না এবং এতে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা, আন্ডারস্কোর এবং ড্যাশ থাকতে পারবে। - আন্তর্জাতিক অক্ষর ব্যবহার করা যাবে।

ব্যবহার: - অ্যাগ্রিগেটর থেকে পাওয়া নিরাপত্তা শনাক্তকারী: safety_identifier (যেমন, {"safety_identifier": "user_session_123"}) কী ব্যবহার করুন

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

JSON উপস্থাপনা
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  },
  "labels": {
    string: string,
    ...
  }
}

GenerationConfig

মডেল জেনারেশন ও আউটপুটের জন্য কনফিগারেশন সংক্রান্ত বিকল্প। প্রতিটি মডেলের জন্য সব প্যারামিটার কনফিগার করা যায় না।

ফিল্ড
stopSequences[] string

ঐচ্ছিক। অক্ষরের সিকোয়েন্সের সেট (৫টি পর্যন্ত) যা আউটপুট জেনারেশন বন্ধ করবে। নির্দিষ্ট করা থাকলে, API প্রথমবার stop_sequence দেখানোর পরেই বন্ধ হয়ে যাবে। স্টপ সিকোয়েন্স উত্তরের অংশ হিসেবে অন্তর্ভুক্ত করা হবে না।

responseMimeType string

ঐচ্ছিক। জেনারেট করা ক্যান্ডিডেট টেক্সটের MIME-এর প্রকার। যেসব MIME-এর প্রকার কাজ করে সেগুলি হল: text/plain: (ডিফল্ট) টেক্সট আউটপুট। application/json: রেসপন্স ক্যান্ডিডেটে JSON রেসপন্স। text/x.enum: রেসপন্স ক্যান্ডিডেটে স্ট্রিং রেসপন্স হিসেবে ENUM। কাজ করে এমন সব টেক্সট MIME প্রকারের তালিকা পেতে ডকুমেন্ট দেখুন।

responseSchema
(deprecated)
object (Schema)

ঐচ্ছিক। জেনারেট করা ক্যান্ডিডেট টেক্সটের আউটপুট স্কিমা। স্কিমা অবশ্যই OpenAPI স্কিমার সাবসেট হতে হবে এবং অবজেক্ট, প্রিমিটিভ বা অ্যারে হতে পারে।

সেট করা থাকলে, একটি মানানসই responseMimeType-ও সেট করতে হবে। মানানসই MIME-এর ধরন: application/json: JSON উত্তরের জন্য স্কিমা। আরও বিবরণের জন্য JSON টেক্সট জেনারেশন গাইড দেখুন।

বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে responseFormat ব্যবহার করুন।

_responseJsonSchema
(deprecated)
value (Value format)

ঐচ্ছিক। জেনারেট করা উত্তরের আউটপুট স্কিমা। এটি responseSchema-এর বিকল্প যা JSON স্কিমা গ্রহণ করে।

সেট করা থাকলে, responseSchema বাদ দিতে হবে, তবে responseMimeType প্রয়োজন।

সম্পূর্ণ JSON স্কিমা পাঠানো হলেও, সব ফিচার কাজ করে না। বিশেষ করে, শুধুমাত্র নিম্নলিখিত প্রপার্টি কাজ করে:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (স্ট্রিং ও সংখ্যার জন্য)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (anyOf-এর মতোই ব্যাখ্যা করা হয়েছে)
  • properties
  • additionalProperties
  • required

নন-স্ট্যান্ডার্ড propertyOrdering প্রপার্টিও সেট করা হতে পারে।

সাইক্লিক রেফারেন্স সীমিত পরিমাণে আনরোল করা হয় এবং সেই কারণে শুধুমাত্র অপ্রয়োজনীয় প্রপার্টির মধ্যে ব্যবহার করা যেতে পারে। (নালেবেল প্রপার্টি যথেষ্ট নয়।) $ref সাব-স্কিমায় সেট করা থাকলে, $ দিয়ে শুরু হওয়া প্রপার্টি ছাড়া অন্য কোনও প্রপার্টি সেট করা যাবে না।

বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে responseFormat ব্যবহার করুন।

responseJsonSchema value (Value format)

ঐচ্ছিক। একটি ইন্টার্নাল বিবরণ। এই ফিল্ডের পরিবর্তে responseJsonSchema ব্যবহার করুন।

responseModalities[] enum (Modality)

ঐচ্ছিক। উত্তরের অনুরোধ করা মোডালিটি। মডেল যে সেট অফ মোডালিটি ফেরত দিতে পারে এবং উত্তরে যা প্রত্যাশিত তা দেখায়। এটি উত্তরের মোডালিটির সাথে সম্পূর্ণ মিলে যায়।

একটি মডেলে কাজ করে এমন মোডালিটির একাধিক কম্বিনেশন থাকতে পারে। অনুরোধ করা মোডালিটি যদি কাজ করে এমন কোনও কম্বিনেশনের সাথে না মেলে, তাহলে একটি সমস্যা দেখানো হবে।

খালি তালিকার অর্থ হল শুধুমাত্র টেক্সটের জন্য অনুরোধ করা।

candidateCount integer

ঐচ্ছিক। জেনারেট করা উত্তরের সংখ্যা যা ফেরত দিতে হবে। আনসেট করা থাকলে, এটি ডিফল্ট হিসেবে ১ হবে। মনে রাখবেন, এটি আগের জেনারেশনের মডেলের (Gemini 1.0 ফ্যামিলি) ক্ষেত্রে কাজ করে না

maxOutputTokens integer

ঐচ্ছিক। কোনও রেসপন্স ক্যান্ডিডেটে অন্তর্ভুক্ত করার জন্য টোকেনের সর্বাধিক সংখ্যা।

মনে রাখবেন: ডিফল্ট ভ্যালু মডেল অনুযায়ী আলাদা হয়, getModel ফাংশন থেকে রিটার্ন করা Model-এর Model.output_token_limit অ্যাট্রিবিউট দেখুন।

temperature number

ঐচ্ছিক। আউটপুটের র‍্যান্ডমনেস নিয়ন্ত্রণ করে।

মনে রাখবেন: ডিফল্ট ভ্যালু মডেল অনুযায়ী আলাদা হয়, getModel ফাংশন থেকে রিটার্ন করা Model-এর Model.temperature অ্যাট্রিবিউট দেখুন।

মান [০.০, ২.০] রেঞ্জের মধ্যে হতে পারে।

এই ফিল্ডটি আর কাজ করে না এবং Gemini 3.6 Flash ও নতুন মডেলে এটি নীরবে উপেক্ষা করা হয়।

topP number

ঐচ্ছিক। স্যাম্পেলিং করার সময় বিবেচনা করার জন্য টোকেনের সর্বাধিক ক্রমবর্ধমান সম্ভাবনা।

মডেলটি সম্মিলিত টপ-কে এবং টপ-পি (নিউক্লিয়াস) স্যাম্পলিং ব্যবহার করে।

টোকেনগুলি তাদের নির্ধারিত সম্ভাবনার উপর ভিত্তি করে সাজানো হয় যাতে শুধুমাত্র সবচেয়ে সম্ভাব্য টোকেনগুলি বিবেচনা করা হয়। টপ-কে স্যাম্পলিং সরাসরি বিবেচনা করার জন্য টোকেনের সর্বাধিক সংখ্যা সীমিত করে, যেখানে নিউক্লিয়াস স্যাম্পলিং ক্রমবর্ধমান সম্ভাবনার উপর ভিত্তি করে টোকেনের সংখ্যা সীমিত করে।

মনে রাখবেন: ডিফল্ট ভ্যালু Model অনুযায়ী পরিবর্তিত হয় এবং getModel ফাংশন থেকে পাওয়া Model.top_p অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা হয়। একটি খালি topK অ্যাট্রিবিউট থেকে বোঝা যায় যে মডেলটি টপ-k স্যাম্পলিং প্রয়োগ করে না এবং অনুরোধে topK সেট করার অনুমতি দেয় না।

এই ফিল্ড আর কাজ করে না এবং Gemini 3.6 Flash ও নতুন মডেলে এটি নীরবে উপেক্ষা করা হয়।

topK integer

ঐচ্ছিক। স্যাম্পেলিং করার সময় বিবেচনা করার জন্য টোকেনের সর্বাধিক সংখ্যা।

Gemini মডেল Top-p (নিউক্লিয়াস) স্যাম্পলিং বা Top-k ও নিউক্লিয়াস স্যাম্পলিংয়ের কম্বিনেশন ব্যবহার করে। টপ-k স্যাম্পলিং topKটি সবচেয়ে সম্ভাব্য টোকেনের সেট বিবেচনা করে। নিউক্লিয়াস স্যাম্পলিং সহ রান করা মডেলে topK সেটিংয়ের অনুমতি নেই।

মনে রাখবেন: ডিফল্ট ভ্যালু Model অনুযায়ী পরিবর্তিত হয় এবং getModel ফাংশন থেকে পাওয়া Model.top_p অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা হয়। একটি খালি topK অ্যাট্রিবিউট ইঙ্গিত করে যে মডেলটি টপ-k স্যাম্পলিং প্রয়োগ করে না এবং অনুরোধে topK সেট করার অনুমতি দেয় না।

এই ফিল্ড আর কাজ করে না এবং Gemini 3.6 Flash ও নতুন মডেলে এটি নীরবে উপেক্ষা করা হয়।

seed integer

ঐচ্ছিক। ডিকোডিংয়ে ব্যবহৃত সিড। সেট করা না থাকলে, অনুরোধটি র‍্যান্ডমভাবে জেনারেট করা সিড ব্যবহার করে।

presencePenalty number

ঐচ্ছিক। টোকেনটি আগে থেকেই উত্তরে দেখা গেলে, পরবর্তী টোকেনের logprobs-এ উপস্থিতি সংক্রান্ত পেনাল্টি প্রয়োগ করা হয়।

এই পেনাল্টি বাইনারি অন/অফ এবং টোকেন কতবার ব্যবহার করা হয়েছে তার উপর নির্ভর করে না (প্রথমবারের পরে)। frequencyPenalty ব্যবহার করুন, এটি এমন একটি পেনাল্টি যা প্রতিবার ব্যবহারের সাথে সাথে বৃদ্ধি পায়।

পজিটিভ পেনাল্টি, উত্তরে আগে ব্যবহার করা হয়েছে এমন টোকেন ব্যবহার করতে নিরুৎসাহিত করবে, যার ফলে শব্দভাণ্ডার বৃদ্ধি পাবে।

নেগেটিভ পেনাল্টি, উত্তরে আগে ব্যবহার করা হয়েছে এমন টোকেন ব্যবহার করতে উৎসাহিত করবে, যার ফলে শব্দভাণ্ডার কমে যাবে।

frequencyPenalty number

ঐচ্ছিক। পরবর্তী টোকেনের logprobs-এ ফ্রিকোয়েন্সি পেনাল্টি প্রয়োগ করা হয়েছে, যা এখনও পর্যন্ত উত্তরে প্রতিটি টোকেন যতবার দেখা হয়েছে তার সংখ্যা দ্বারা গুণ করা হয়েছে।

পজিটিভ পেনাল্টি, আগে ব্যবহার করা টোকেন ব্যবহারের প্রবণতাকে নিরুৎসাহিত করবে, যা টোকেনটি কতবার ব্যবহার করা হয়েছে তার সমানুপাতিক: একটি টোকেন যত বেশি ব্যবহার করা হবে, মডেলের পক্ষে সেই টোকেনটি আবার ব্যবহার করা তত বেশি কঠিন হবে, যার ফলে উত্তরের শব্দভাণ্ডার বৃদ্ধি পাবে।

সতর্কতা: নেগেটিভ পেনাল্টি, টোকেন যতবার ব্যবহার করা হয়েছে তার অনুপাতে টোকেন আবার ব্যবহার করার জন্য মডেলকে উৎসাহিত করবে। ছোট নেগেটিভ ভ্যালু উত্তরের শব্দভাণ্ডার কমিয়ে দেবে। আরও বড় নেগেটিভ ভ্যালু থাকলে, মডেলটি maxOutputTokens সীমায় না পৌঁছানো পর্যন্ত একটি সাধারণ টোকেন বারবার ব্যবহার করতে শুরু করবে।

responseLogprobs boolean

ঐচ্ছিক। সত্যি হলে, উত্তরে logprobs ফলাফল এক্সপোর্ট করুন।

logprobs integer

ঐচ্ছিক। responseLogprobs=True হলে তবেই প্রযোজ্য। এটি Candidate.logprobs_result-এ প্রতিটি ডিকোডিং ধাপে ফিরে আসার জন্য বেছে নেওয়া ক্যান্ডিডেট সহ সেরা লগপ্রবের সংখ্যা সেট করে। সংখ্যাটি অবশ্যই [০, ২০] রেঞ্জের মধ্যে হতে হবে।

enableEnhancedCivicAnswers boolean

ঐচ্ছিক। উন্নত নাগরিক উত্তর চালু করে। এটি সব মডেলে উপলভ্য নাও হতে পারে।

speechConfig object (SpeechConfig)

ঐচ্ছিক। স্পিচ জেনারেশন কনফিগারেশন।

thinkingConfig object (ThinkingConfig)

ঐচ্ছিক। থিঙ্কিং ফিচারের জন্য কনফিগারেশন। এই ফিল্ডটি যদি এমন মডেলের জন্য সেট করা হয় যা থিঙ্কিং সমর্থন করে না, তাহলে একটি ত্রুটি রিটার্ন করা হবে।

imageConfig object (ImageConfig)

ঐচ্ছিক। ইমেজ জেনারেশনের জন্য কনফিগারেশন। এই কনফিগারেশন বিকল্প কাজ করে না এমন মডেলের জন্য এই ফিল্ড সেট করা হলে, একটি সমস্যার মেসেজ দেখানো হবে।

mediaResolution enum (MediaResolution)

ঐচ্ছিক। উল্লেখ করা থাকলে, উল্লেখ করা মিডিয়া রেজোলিউশন ব্যবহার করা হবে।

enableAffectiveDialog boolean

ঐচ্ছিক। চালু করা থাকলে, মডেলটি আবেগ শনাক্ত করবে এবং সেই অনুযায়ী তার উত্তর অ্যাডাপ্ট করবে।

responseFormat object (ResponseFormatConfig)

ঐচ্ছিক। উত্তরের আউটপুট ফর্ম্যাটের জন্য কনফিগারেশন। ফ্ল্যাট স্ট্রাকচারে প্রতিটি মোডালিটি (টেক্সট, অডিও, ছবি) অনুযায়ী আউটপুট কনফিগারেশন নির্দিষ্ট করার অনুমতি দেয়।

translationConfig object (TranslationConfig)

ঐচ্ছিক। অনুবাদ করার জন্য কনফিগার করুন।

audioTranscriptionConfig object (AudioTranscriptionConfig)

ঐচ্ছিক। অডিও ট্রান্সক্রিপশনের (স্পিচ রিকগনিশন) জন্য কনফিগারেশন।

JSON উপস্থাপনা
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

মোডালিটি

উত্তরের কাজ করে এমন মোডালিটি।

Enums
MODALITY_UNSPECIFIED ডিফল্ট ভ্যালু।
TEXT মডেলের টেক্সট ফেরত দেওয়া উচিত কিনা তা নির্দেশ করে।
IMAGE মডেলের ছবি ফেরত দেওয়া উচিত তা নির্দেশ করে।
AUDIO মডেলের অডিও রিটার্ন করা উচিত কিনা তা নির্দেশ করে।

SpeechConfig

স্পিচ জেনারেশন ও ট্রান্সক্রিপশনের জন্য কনফিগারেশন।

ফিল্ড
voiceConfig object (VoiceConfig)

সিঙ্গেল-ভয়েস আউটপুটের ক্ষেত্রে কনফিগারেশন।

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

ঐচ্ছিক। মাল্টি-স্পিকার সেট-আপের জন্য কনফিগারেশন। এটি voiceConfig ফিল্ডের সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

languageCode string

ঐচ্ছিক। IETF BCP-47 ভাষা কোড যা ব্যবহারকারী অ্যাপ ব্যবহার করার জন্য কনফিগার করেছেন। স্পিচ রিকগনিশন এবং সিন্থেসিসের জন্য ব্যবহার করা হয়।

সঠিক মান হল: de-DE, en-AU, en-GB, en-IN, en-US, es-US, fr-FR, hi-IN, pt-BR, ar-XA, es-ES, fr-CA, id-ID, it-IT, ja-JP, tr-TR, vi-VN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN, nl-NL, ko-KR, cmn-CN, pl-PL, ru-RU এবং th-TH।

JSON উপস্থাপনা
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

ব্যবহার করার জন্য ভয়েসের কনফিগারেশন।

ফিল্ড
voice_config Union type
স্পিকারের ব্যবহার করার জন্য কনফিগারেশন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

ব্যবহার করার জন্য আগে থেকে তৈরি ভয়েসের কনফিগারেশন।

voice string

ঐচ্ছিক। সিন্থেসিসের জন্য স্পিকার শনাক্তকারী। কাজ করে এমন ফর্ম্যাট:

  • প্রি-বিল্ট ভয়েসের জন্য স্পিকারের নাম (যেমন, Orus বা Kore)।
  • সেভ করা ভয়েসের জন্য ভয়েস আইডি (যেমন, voice_xxx)।
  • ভয়েস রেপ্লিকেশন কী (যেমন, voicekey_xxx)।
মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  },
  "voice": string
  // Union type
}

PrebuiltVoiceConfig

ব্যবহার করার জন্য আগে থেকে তৈরি স্পিকারের কনফিগারেশন।

ফিল্ড
voiceName string

ঐচ্ছিক। ব্যবহার করার জন্য প্রিসেট ভয়েসের নাম।

JSON উপস্থাপনা
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

মাল্টি-স্পিকার সেট-আপের জন্য কনফিগারেশন।

ফিল্ড
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

প্রয়োজনীয়। চালু করা সব স্পিকার ভয়েস।

JSON উপস্থাপনা
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

একাধিক স্পিকার সেট-আপে একটি স্পিকারের কনফিগারেশন।

ফিল্ড
speaker string

প্রয়োজনীয়। ব্যবহার করার জন্য স্পিকারের নাম। প্রম্পটে যা আছে, তাই হতে হবে।

voiceConfig object (VoiceConfig)

প্রয়োজনীয়। ব্যবহার করার জন্য ভয়েসের কনফিগারেশন।

JSON উপস্থাপনা
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

থিঙ্কিং ফিচারের জন্য কনফিগারেশন।

ফিল্ড
includeThoughts boolean

উত্তরে চিন্তাভাবনা অন্তর্ভুক্ত করা হবে কিনা তা নির্দেশ করে। সত্য হলে, উপলভ্য থাকলে তবেই চিন্তা ফেরত পাঠানো হয়।

thinkingBudget integer

মডেলের জেনারেট করা উচিত এমন থট টোকেনের সংখ্যা।

thinkingLevel enum (ThinkingLevel)

ঐচ্ছিক। মডেল উত্তর দেওয়ার আগে তার ইন্টার্নাল রিজনিং প্রসেসের সর্বাধিক গভীরতা কন্ট্রোল করে। ডিফল্ট ভ্যালু মডেলের উপর নির্ভর করে। আরও বিবরণের জন্য চিন্তাভাবনার লেভেল সংক্রান্ত নির্দেশিকা দেখুন। Gemini 3 বা তার পরবর্তী মডেলের জন্য সাজেস্ট করা হয়। আগের মডেলের সাথে ব্যবহার করলে সমস্যা হয়।

JSON উপস্থাপনা
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

ইনটিজার বাজেটের পরিবর্তে enum ব্যবহার করে কতটা ভাবতে হবে তা ব্যবহারকারীকে নির্দিষ্ট করার অনুমতি দিন।

Enums
THINKING_LEVEL_UNSPECIFIED ডিফল্ট ভ্যালু।
MINIMAL খুব কম বা কোনও চিন্তাভাবনা নেই।
LOW কম থিঙ্কিং লেভেল।
MEDIUM মিডিয়াম থিঙ্কিং লেভেল।
HIGH হাই থিঙ্কিং লেভেল।

ImageConfig

ইমেজ জেনারেশন ফিচারের জন্য কনফিগারেশন।

ফিল্ড
aspectRatio string

ঐচ্ছিক। জেনারেট করার জন্য ছবির অ্যাস্পেক্ট রেশিও। যেসব অ্যাস্পেক্ট রেশিও কাজ করে: 1:1, 1:4, 4:1, 1:8, 8:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 অথবা 21:9।

উল্লেখ করা না থাকলে, মডেলটি প্রদত্ত যেকোনও রেফারেন্স ইমেজের উপর ভিত্তি করে একটি ডিফল্ট অ্যাস্পেক্ট রেশিও বেছে নেবে।

imageSize string

ঐচ্ছিক। জেনারেট করা ছবির সাইজ নির্দিষ্ট করে। সাপোর্ট করা ভ্যালু হল 512, 1K, 2K, 4K। নির্দিষ্ট করা না থাকলে, মডেল ডিফল্ট ভ্যালু 1K ব্যবহার করবে।

JSON উপস্থাপনা
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

ইনপুট মিডিয়ার জন্য মিডিয়া রেজোলিউশন।

Enums
MEDIA_RESOLUTION_UNSPECIFIED মিডিয়া রেজোলিউশন সেট করা হয়নি।
MEDIA_RESOLUTION_LOW মিডিয়া রেজোলিউশন কম (৬৪ টোকেন) হিসেবে সেট করা হয়েছে।
MEDIA_RESOLUTION_MEDIUM মিডিয়া রেজোলিউশন মাঝারি (২৫৬ টোকেন) হিসেবে সেট করা হয়েছে।
MEDIA_RESOLUTION_HIGH মিডিয়া রেজোলিউশন হাইতে সেট করা হয়েছে (২৫৬ টোকেন সহ জুম করা রিফ্রেমিং)।

ResponseFormatConfig

উত্তরের আউটপুট ফর্ম্যাটের জন্য কনফিগারেশন। এটি একটি ফ্ল্যাট অবজেক্ট যেখানে প্রতিটি ঐচ্ছিক সাব-ফিল্ড একটি নির্দিষ্ট আউটপুট মোডালিটি কনফিগার করে।

ফিল্ড
text object (TextResponseFormat)

ঐচ্ছিক। টেক্সট আউটপুট ফর্ম্যাট কনফিগারেশন।

audio object (AudioResponseFormat)

ঐচ্ছিক। অডিও আউটপুট ফর্ম্যাট কনফিগারেশন।

image object (ImageResponseFormat)

ঐচ্ছিক। ইমেজ আউটপুট ফর্ম্যাট কনফিগারেশন।

JSON উপস্থাপনা
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

টেক্সট আউটপুট ফর্ম্যাটের জন্য কনফিগারেশন।

ফিল্ড
mimeType enum (MimeType)

ঐচ্ছিক। টেক্সট আউটপুটের MIME-এর প্রকার।

schema value (Value format)

ঐচ্ছিক। আউটপুট যে JSON স্কিমা মেনে চলবে। mimeType, APPLICATION_JSON হলে তবেই প্রযোজ্য।

JSON উপস্থাপনা
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

টেক্সট আউটপুটের জন্য কাজ করে এমন MIME-এর প্রকার।

Enums
MIME_TYPE_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
APPLICATION_JSON JSON আউটপুট ফর্ম্যাট।
TEXT_PLAIN প্লেন টেক্সট আউটপুট ফর্ম্যাট।

AudioResponseFormat

অডিও আউটপুট ফর্ম্যাটের জন্য কনফিগারেশন।

ফিল্ড
mimeType enum (MimeType)

ঐচ্ছিক। অডিও আউটপুটের MIME-এর প্রকার।

delivery enum (Delivery)

ঐচ্ছিক। অডিও আউটপুটের জন্য ডেলিভারি মোড।

sampleRate integer

ঐচ্ছিক। Hz-এ স্যাম্পেল রেট।

bitRate integer

ঐচ্ছিক। বিট রেট, বিট প্রতি সেকেন্ড (bps) হিসেবে। শুধুমাত্র কম্প্রেস করা ফর্ম্যাটের (MP3, Opus) ক্ষেত্রে প্রযোজ্য।

JSON উপস্থাপনা
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

অডিও আউটপুটের জন্য কাজ করে এমন MIME-এর প্রকার।

Enums
MIME_TYPE_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
AUDIO_MP3 MP3 অডিও ফর্ম্যাট।
AUDIO_OGG_OPUS OGG Opus অডিও ফর্ম্যাট।
AUDIO_L16 র পিসিএম (L16) অডিও ফর্ম্যাট।
AUDIO_WAV WAV অডিও ফর্ম্যাট।
AUDIO_ALAW A-law অডিও ফর্ম্যাট।
AUDIO_MULAW Mu-law অডিও ফর্ম্যাট।

ডেলিভারি

অডিও আউটপুটের জন্য ডেলিভারি মোড।

Enums
DELIVERY_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
INLINE উত্তরে অডিও ডেটা ইনলাইন হিসেবে ফেরত পাঠানো হয়।
URI অডিও ডেটা URI হিসেবে ফেরত পাঠানো হয়।

ImageResponseFormat

ইমেজ আউটপুট ফর্ম্যাটের জন্য কনফিগারেশন।

ফিল্ড
mimeType enum (MimeType)

ঐচ্ছিক। ইমেজ আউটপুটের MIME টাইপ।

delivery enum (Delivery)

ঐচ্ছিক। ইমেজ আউটপুটের জন্য ডেলিভারি মোড।

aspectRatio enum (AspectRatio)

ঐচ্ছিক। ইমেজ আউটপুটের জন্য অ্যাস্পেক্ট রেশিও।

imageSize enum (ImageSize)

ঐচ্ছিক। ইমেজ আউটপুটের সাইজ।

JSON উপস্থাপনা
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

ইমেজ আউটপুটের জন্য কাজ করে এমন MIME-এর প্রকার।

Enums
MIME_TYPE_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
IMAGE_JPEG JPEG ইমেজ ফর্ম্যাট।

ডেলিভারি

ছবি আউটপুটের জন্য ডেলিভারি মোড।

Enums
DELIVERY_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
INLINE উত্তরে ছবির ডেটা ইনলাইন হিসেবে দেখানো হয়।
URI ছবির ডেটা URI হিসেবে দেখানো হয়।

AspectRatio

ইমেজ আউটপুটের জন্য কাজ করে এমন অ্যাস্পেক্ট রেশিও।

Enums
ASPECT_RATIO_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
ASPECT_RATIO_ONE_BY_ONE ১:১ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_TWO_BY_THREE ২:৩ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_THREE_BY_TWO ৩:২ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_THREE_BY_FOUR ৩:৪ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_FOUR_BY_THREE ৪:৩ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_FOUR_BY_FIVE ৪:৫ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_FIVE_BY_FOUR ৫:৪ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_NINE_BY_SIXTEEN ৯:১৬ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_SIXTEEN_BY_NINE ১৬:৯ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_TWENTY_ONE_BY_NINE ২১:৯ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_ONE_BY_EIGHT ১:৮ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_EIGHT_BY_ONE ৮:১ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_ONE_BY_FOUR ১:৪ অ্যাস্পেক্ট রেশিও।
ASPECT_RATIO_FOUR_BY_ONE ৪:১ অ্যাস্পেক্ট রেশিও।

ImageSize

ইমেজ আউটপুটের জন্য কাজ করে এমন ছবির সাইজ।

Enums
IMAGE_SIZE_UNSPECIFIED ডিফল্ট ভ্যালু। এই ভ্যালু ব্যবহার করা হয়নি।
IMAGE_SIZE_FIVE_TWELVE ৫১২ পিক্সেল ছবির সাইজ।
IMAGE_SIZE_ONE_K ১K ছবির সাইজ।
IMAGE_SIZE_TWO_K 2K ছবির সাইজ।
IMAGE_SIZE_FOUR_K 4K ছবির সাইজ।

TranslationConfig

অনুবাদ ফিচারের জন্য কনফিগারেশন।

ফিল্ড
targetLanguageCode string

প্রয়োজনীয়। অনুবাদের জন্য টার্গেট করা ভাষা। সাপোর্ট করা ভ্যালু হল BCP-47 ভাষা কোড (যেমন, "en", "es", "fr")।

echoTargetLanguage boolean

ঐচ্ছিক। 'ট্রু' হলে, টার্গেট ভাষায় কথা বলা হলে মডেল অডিও তৈরি করবে, মূলত এটি ইনপুটকে তোতাপাখির মতো নকল করবে। 'ফলস' হলে, আমরা টার্গেট ভাষার জন্য অডিও তৈরি করব না।

JSON উপস্থাপনা
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

অডিও ট্রান্সক্রিপশন কনফিগারেশন।

ফিল্ড
languageCodes[] string

ঐচ্ছিক। BCP-47 ভাষা কোড অডিওতে থাকা ভাষা সম্পর্কে ইঙ্গিত প্রদান করে। বাদ দেওয়া হলে বা খালি থাকলে, ডিফল্ট হিসেবে অটোমেটিক ভাষা শনাক্তকরণ ব্যবহার করা হয়।

adaptationPhrases[]
(deprecated)
string

ঐচ্ছিক। স্পিচ অ্যাডাপ্টেশনের জন্য ব্যবহৃত বাক্যাংশের তালিকা, যা এই নির্দিষ্ট শব্দগুলির শনাক্তকরণ উন্নত করতে ASR মডেলকে প্রভাবিত করে।

customVocabulary[] string

ঐচ্ছিক। নির্দিষ্ট শব্দ (প্রোডাক্টের নাম, প্রপার নাউন, কঠিন পরিভাষা) শনাক্ত করার জন্য স্পিচ শনাক্তকরণ মডেলকে পক্ষপাতদুষ্ট করতে কাস্টম শব্দভাণ্ডার বাক্যাংশের একটি তালিকা।

wordTimestamp boolean

ঐচ্ছিক। শব্দ-লেভেল টাইমস্ট্যাম্প জেনারেশন কনফিগার করে।

diarization boolean

ঐচ্ছিক। স্পিকার ডায়ারাইজেশন কনফিগার করে।

mode enum (Mode)

ঐচ্ছিক। ট্রান্সক্রিপশন মোড কনফিগার করে। সাপোর্ট করা ভ্যালু: VERBATIM, SMART। উল্লেখ করা না থাকলে, ডিফল্ট হিসেবে VERBATIM ট্রান্সক্রিপশন সেট করা হয়। SMART মোডে, মডেলটি ডিসফ্লুয়েন্সি রিমুভাল (ফিলার শব্দ, পুনরাবৃত্তি এবং ভুল শুরু বাদ দেওয়া), হালকা ব্যাকরণগত ক্লিনআপ, অটোমেটিক ফর্ম্যাটিং (অনুচ্ছেদ, বুলেট পয়েন্ট, নম্বরযুক্ত তালিকা) এবং ছোটখাটো ব্যবহারকারীর এডিট (ইনলাইন সেল্ফ-কারেকশন) করে। টাইমস্ট্যাম্প ও ডায়ারিাইজেশন SMART মোডের সাথে মানানসই নয়।

language_config Union type
বন্ধ করা হয়েছে: পরিবর্তে টপ-লেভেল language_codes ব্যবহার করুন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
languageAuto
(deprecated)
object (LanguageAuto)

ঐচ্ছিক। মডেলটি অটোমেটিক ভাষা শনাক্ত করবে।

languageHints
(deprecated)
object (LanguageHints)

ঐচ্ছিক। অডিওতে এক বা একাধিক ভাষা নির্দিষ্ট করে।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
JSON উপস্থাপনা
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

এই ধরনের কোনও ফিল্ড নেই।

অডিওর ভাষা অটোমেটিক শনাক্ত করা উচিত কিনা তা দেখায়।

LanguageHints

অডিওতে সম্ভাব্য ভাষা সম্পর্কে মডেলকে ইঙ্গিত প্রদান করে।

ফিল্ড
languageCodes[]
(deprecated)
string

প্রয়োজনীয়। BCP-47 ভাষার কোড।

JSON উপস্থাপনা
{
  "languageCodes": [
    string
  ]
}

মোড

ট্রান্সক্রিপশন মোড।

Enums
MODE_UNSPECIFIED ট্রান্সক্রিপশন মোড নির্দিষ্ট করা হয়নি।
VERBATIM ভারবাটিম ট্রান্সক্রিপশন মোড।
SMART স্মার্ট ট্রান্সক্রিপশন মোড।

RealtimeInputConfig

BidiGenerateContent-এ রিয়েল-টাইম ইনপুট আচরণ কনফিগার করে।

ফিল্ড
automaticActivityDetection object (AutomaticActivityDetection)

ঐচ্ছিক। সেট করা না থাকলে, অটোমেটিক অ্যাক্টিভিটি শনাক্তকরণ ডিফল্ট হিসেবে চালু করা থাকে। অটোমেটিক ভয়েস শনাক্তকরণ বন্ধ করা থাকলে, ক্লায়েন্টকে অবশ্যই অ্যাক্টিভিটি সিগন্যাল পাঠাতে হবে।

activityHandling enum (ActivityHandling)

ঐচ্ছিক। অ্যাক্টিভিটির কী প্রভাব আছে তা নির্ধারণ করে।

turnCoverage enum (TurnCoverage)

ঐচ্ছিক। ব্যবহারকারীর টার্নে কোন ইনপুট অন্তর্ভুক্ত করা হয়েছে তা নির্ধারণ করে।

interimTranscriptTimestampEnabled boolean

ঐচ্ছিক। অন্তর্বর্তী ট্রান্সক্রিপ্ট টাইমস্ট্যাম্প কনফিগার করে।

JSON উপস্থাপনা
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage),
  "interimTranscriptTimestampEnabled": boolean
}

AutomaticActivityDetection

অ্যাক্টিভিটি অটোমেটিক শনাক্ত করার ফিচার কনফিগার করে।

ফিল্ড
disabled boolean

ঐচ্ছিক। এটি চালু করা থাকলে (ডিফল্ট), শনাক্ত করা ভয়েস ও টেক্সট ইনপুট অ্যাক্টিভিটি হিসেবে গণ্য করা হয়। বন্ধ করা থাকলে, ক্লায়েন্টকে অবশ্যই অ্যাক্টিভিটি সিগন্যাল পাঠাতে হবে।

startOfSpeechSensitivity enum (StartSensitivity)

ঐচ্ছিক। স্পিচ শনাক্ত করার সম্ভাবনা কতটা তা নির্ধারণ করে।

prefixPaddingMs integer

ঐচ্ছিক। স্পিচ শুরু হওয়ার আগে শনাক্ত করা স্পিচের প্রয়োজনীয় সময়সীমা। এই মান যত কম হবে, স্পিচ-শুরু-হওয়া শনাক্তকরণ তত বেশি সংবেদনশীল হবে এবং ছোট স্পিচ শনাক্ত করা যাবে। তবে, এর ফলে ফলস পজিটিভের সম্ভাবনাও বেড়ে যায়।

endOfSpeechSensitivity enum (EndSensitivity)

ঐচ্ছিক। শনাক্ত করা স্পিচ শেষ হওয়ার সম্ভাবনা কতটা তা নির্ধারণ করে।

silenceDurationMs integer

ঐচ্ছিক। স্পিচ শেষ হওয়ার আগে স্পিচ নয় এমন কিছু (যেমন, নীরবতা) শনাক্ত করার জন্য প্রয়োজনীয় সময়সীমা। এই ভ্যালু যত বেশি হবে, ব্যবহারকারীর অ্যাক্টিভিটিতে বাধা না দিয়ে স্পিচ গ্যাপ তত বেশি হতে পারে, তবে এটি মডেলের লেটেন্সি বাড়িয়ে দেবে।

JSON উপস্থাপনা
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

স্পিচ কীভাবে শুরু হয় তা নির্ধারণ করে।

Enums
START_SENSITIVITY_UNSPECIFIED ডিফল্ট হল START_SENSITIVITY_HIGH।
START_SENSITIVITY_HIGH অটোমেটিক শনাক্তকরণ ফিচার আরও ঘন ঘন স্পিচের শুরু শনাক্ত করবে।
START_SENSITIVITY_LOW অটোমেটিক শনাক্তকরণ ফিচারটি স্পিচের শুরু কম শনাক্ত করবে।

EndSensitivity

স্পিচ শেষ হওয়ার বিষয়টি কীভাবে শনাক্ত করা হবে তা নির্ধারণ করে।

Enums
END_SENSITIVITY_UNSPECIFIED ডিফল্ট হল END_SENSITIVITY_HIGH।
END_SENSITIVITY_HIGH অটোমেটিক শনাক্তকরণ স্পিচকে আরও ঘন ঘন শেষ করে।
END_SENSITIVITY_LOW অটোমেটিক শনাক্তকরণ স্পিচ কম শেষ করে।

ActivityHandling

ব্যবহারকারীর অ্যাক্টিভিটি ম্যানেজ করার বিভিন্ন উপায়।

Enums
ACTIVITY_HANDLING_UNSPECIFIED উল্লেখ করা না থাকলে, ডিফল্ট অ্যাকশন হল START_OF_ACTIVITY_INTERRUPTS।
START_OF_ACTIVITY_INTERRUPTS সত্য হলে, অ্যাক্টিভিটি শুরু হলে মডেলের উত্তরে বাধা সৃষ্টি হবে (একে "বার্জ ইন" বলা হয়)। বাধা দেওয়ার মুহূর্তে মডেলের বর্তমান উত্তর কেটে যাবে। এটি হল ডিফল্ট অ্যাকশন।
NO_INTERRUPTION মডেলের উত্তরে কোনও বাধা সৃষ্টি করা হবে না।

TurnCoverage

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

Enums
TURN_COVERAGE_UNSPECIFIED নির্দিষ্ট করা না থাকলে, মডেলের উপর ভিত্তি করে ডিফল্ট অ্যাকশন বেছে নেওয়া হয়। যেমন, Gemini 2.5-এর জন্য ডিফল্ট হল TURN_INCLUDES_ONLY_ACTIVITY, যেখানে Gemini 3.1 এবং তার পরবর্তী ভার্সনের জন্য এটি হল TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO।
TURN_INCLUDES_ONLY_ACTIVITY শেষবার কথা বলার পর থেকে অ্যাক্টিভিটি অন্তর্ভুক্ত করে, নিষ্ক্রিয়তা বাদ দিয়ে (যেমন, অডিও স্ট্রিমে নীরবতা)।
TURN_INCLUDES_ALL_INPUT শেষ টার্ন থেকে শুরু করে সমস্ত রিয়েল-টাইম ইনপুট অন্তর্ভুক্ত করে, যার মধ্যে ইনঅ্যাক্টিভিটি (যেমন অডিও স্ট্রিমে নীরবতা) অন্তর্ভুক্ত।
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO শেষবার চালু করার পর থেকে অডিও অ্যাক্টিভিটি এবং সব ভিডিও অন্তর্ভুক্ত। অটোমেটিক অ্যাক্টিভিটি শনাক্তকরণ ফিচারের মাধ্যমে, অডিও অ্যাক্টিভিটি বলতে স্পিচ বোঝায় এবং নীরবতা বাদ দেওয়া হয়।

SessionResumptionConfig

সেশন আবার চালু করার কনফিগারেশন।

এই মেসেজটি সেশন কনফিগারেশনে BidiGenerateContentSetup.session_resumption হিসেবে অন্তর্ভুক্ত করা হয়েছে। কনফিগার করা থাকলে, সার্ভার SessionResumptionUpdateটি মেসেজ পাঠাবে।

ফিল্ড
handle string

আগের সেশনের হ্যান্ডেল। উপস্থিত না থাকলে, নতুন সেশন তৈরি করা হয়।

সেশন হ্যান্ডেল আগের কানেকশনের SessionResumptionUpdate.token ভ্যালু থেকে আসে।

JSON উপস্থাপনা
{
  "handle": string
}

ContextWindowCompressionConfig

কনটেক্সট উইন্ডো কম্প্রেশন চালু করে — মডেলের কনটেক্সট উইন্ডো ম্যানেজ করার একটি মেকানিজম যাতে এটি প্রদত্ত দৈর্ঘ্যের বেশি না হয়।

ফিল্ড
compression_mechanism Union type
কন্টেক্সট উইন্ডো কম্প্রেশন মেকানিজম ব্যবহার করা হয়েছে। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
slidingWindow object (SlidingWindow)

স্লাইডিং-উইন্ডো মেকানিজম।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
triggerTokens string (int64 format)

কনটেক্সট উইন্ডো কম্প্রেশন ট্রিগার করার জন্য প্রয়োজনীয় টোকেনের সংখ্যা (টার্ন রান করার আগে)।

এটি লেটেন্সির সাথে কোয়ালিটির ভারসাম্য বজায় রাখতে ব্যবহার করা যেতে পারে, কারণ ছোট কনটেক্সট উইন্ডোর ফলে মডেল আরও দ্রুত উত্তর দিতে পারে। তবে, যেকোনও কম্প্রেশন অপারেশনের ফলে সাময়িক লেটেন্সি বৃদ্ধি পাবে, তাই এগুলি ঘন ঘন ট্রিগার করা উচিত নয়।

সেট করা না থাকলে, ডিফল্ট হিসেবে মডেলের কনটেক্সট উইন্ডো সীমার ৮০% সেট করা হয়। এর ফলে পরবর্তী ব্যবহারকারীর অনুরোধ/মডেলের উত্তরের জন্য ২০% বাকি থাকে।

JSON উপস্থাপনা
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

SlidingWindow পদ্ধতিটি কন্টেক্সট উইন্ডোর শুরুতে কন্টেন্ট বাতিল করে কাজ করে। ফলাফল হিসেবে পাওয়া কন্টেক্সট সবসময় USER রোলের টার্নের শুরুতেই শুরু হবে। সিস্টেম নির্দেশাবলী এবং যেকোনও BidiGenerateContentSetup.prefix_turns সবসময় ফলাফলের শুরুতে থাকবে।

ফিল্ড
targetTokens string (int64 format)

যতগুলি টোকেন রাখতে হবে তার টার্গেট সংখ্যা। ডিফল্ট ভ্যালু হল triggerTokens/2।

কন্টেক্সট উইন্ডোর কিছু অংশ বাদ দিলে সাময়িকভাবে লেটেন্সি বেড়ে যায়, তাই ঘনঘন কম্প্রেশন অপারেশন এড়াতে এই ভ্যালু ক্যালিব্রেট করা উচিত।

JSON উপস্থাপনা
{
  "targetTokens": string
}

HistoryConfig

ইতিহাস কনফিগারেশন।

এই মেসেজটি সেশন কনফিগারেশনে BidiGenerateContentSetup.history_config হিসেবে অন্তর্ভুক্ত করা হয়েছে। ইতিহাস মেসেজের আদানপ্রদান কনফিগার করে।

ফিল্ড
initialHistoryInClientContent boolean

ঐচ্ছিক। সত্য হলে, setupComplete পাঠানোর পরে, সার্ভার অপেক্ষা করবে এবং প্রথমে clientContent মেসেজ প্রসেস করবে যতক্ষণ না turnComplete true হয়। এই প্রাথমিক ইতিহাস কোনও মডেল কল ট্রিগার করবে না এবং MODEL রোলের মাধ্যমে শেষ হতে পারে। turnComplete true হওয়ার পরে, ক্লায়েন্ট realtimeInput-এর মাধ্যমে রিয়েল-টাইম কথোপকথন শুরু করতে পারবেন।

JSON উপস্থাপনা
{
  "initialHistoryInClientContent": boolean
}

পদ্ধতি: auth_tokens.create

Creates a token that can be used to constrain the behavior of a BidiGenerateContent session.

এন্ডপয়েন্ট

পোস্ট https://generativelanguage.googleapis.com/v1beta/auth_tokens

অনুরোধের বডি

অনুরোধের বডি ফর্ম্যাটে AuthToken-এর একটি ইন্সট্যান্স থাকে।

ফিল্ড
expireTime string (Timestamp format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। একটি ঐচ্ছিক সময় যার পরে, ফলাফল টোকেন ব্যবহার করার সময়, BidiGenerateContent সেশনে মেসেজ বাতিল করা হবে। (এই সময়ের পরে Gemini সেশন বন্ধ করে দিতে পারে।)

সেট করা না থাকলে, এটি ডিফল্ট হিসেবে ভবিষ্যতে ৩০ মিনিট পর্যন্ত সেট করা থাকে। সেট করা হলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

newSessionExpireTime string (Timestamp format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। এই অনুরোধের ফলে পাওয়া টোকেন ব্যবহার করে নতুন লাইভ API সেশন শুরু করার সময়সীমা পেরিয়ে গেছে।

সেট করা না থাকলে, ভবিষ্যতে এটি ডিফল্ট হিসেবে ৬০ সেকেন্ডে সেট করা হয়। সেট করা হলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"।

fieldMask string (FieldMask format)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। fieldMask খালি থাকলে এবং bidiGenerateContentSetup উপস্থিত না থাকলে, কার্যকর BidiGenerateContentSetup মেসেজ Live API কানেকশন থেকে নেওয়া হয়।

fieldMask খালি থাকলে এবং bidiGenerateContentSetup উপস্থিত থাকলে, এই অনুরোধে কার্যকর BidiGenerateContentSetup মেসেজ সম্পূর্ণভাবে bidiGenerateContentSetup থেকে নেওয়া হয়। Live API কানেকশন থেকে সেট-আপ মেসেজ উপেক্ষা করা হয়েছে।

fieldMask ফাঁকা না থাকলে, bidiGenerateContentSetup-এর সংশ্লিষ্ট ফিল্ড Live API কানেকশনে সেট-আপ মেসেজের ফিল্ডকে ওভাররাইট করবে।

এটি কমা দিয়ে আলাদা করা ফিল্ডের সম্পূর্ণ উপযুক্ত নামের তালিকা। উদাহরণ: "user.displayName,photo"।

config Union type
ফলাফল হিসেবে পাওয়া টোকেনের জন্য পদ্ধতি-নির্দিষ্ট কনফিগারেশন। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। BidiGenerateContent-এর জন্য নির্দিষ্ট কনফিগারেশন।

মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ।
uses integer

ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যাবে না। টোকেনটি যতবার ব্যবহার করা যাবে। এই ভ্যালু শূন্য হলে কোনও সীমা প্রযোজ্য হবে না। Live API সেশন আবার চালু করাকে ব্যবহার হিসেবে ধরা হয় না। নির্দিষ্ট করা না থাকলে, ডিফল্ট হল ১।

প্রতিক্রিয়ার বডি

সফল হলে, রেসপন্স বডিতে AuthToken-এর নতুন তৈরি করা ইনস্ট্যান্স থাকে।