ফাইল ইনপুট পদ্ধতি

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

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

পাইথন

from google import genai
import pathlib

client = genai.Client()

filepath = pathlib.Path('my_local_file.pdf')

prompt = "Summarize this document"
interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        {"type": "text", "text": prompt},
        {"type": "document", "data": filepath.read_bytes(), "mime_type": "application/pdf"}
    ]
)
# Print the model's text response
for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";
import * as fs from 'node:fs';

const client = new GoogleGenAI({});
const prompt = "Summarize this document";

async function main() {
    const filePath = 'my_local_file.pdf';

    const interaction = await client.interactions.create({
        model: "gemini-3-flash-preview",
        input: [
            { type: "text", text: prompt },
            {
                type: "document",
                data: fs.readFileSync(filePath).toString("base64"),
                mimeType: "application/pdf"
            }
        ]
    });
    const modelStep = interaction.steps.find(s => s.type === 'model_output');
    if (modelStep) {
      for (const contentBlock of modelStep.content) {
        if (contentBlock.type === 'text') console.log(contentBlock.text);
      }
    }
}

main();

বিশ্রাম

# Encode the local file to base64
B64_CONTENT=$(base64 -w 0 my_local_file.pdf)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": [
      {"type": "text", "text": "Summarize this document"},
      {
        "type": "document",
        "data": "'${B64_CONTENT}'",
        "mimeType": "application/pdf"
      }
    ]
  }'

ইনপুট পদ্ধতির তুলনা

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

পদ্ধতি সেরা সর্বোচ্চ ফাইলের আকার অধ্যবসায়
ইনলাইন ডেটা দ্রুত পরীক্ষা, ছোট ফাইল, রিয়েল-টাইম অ্যাপ্লিকেশন। প্রতি অনুরোধ বা পেলোডের জন্য ১০০ মেগাবাইট
( পিডিএফ এর জন্য ৫০ এমবি )
কোনোটিই নয় (প্রতিটি অনুরোধের সাথে পাঠানো হয়)
ফাইল এপিআই আপলোড বড় ফাইল, ফাইলগুলো একাধিকবার ব্যবহৃত হয়েছে। প্রতি ফাইলে ২ জিবি,
প্রতি প্রকল্পে ২০ জিবি পর্যন্ত
৪৮ ঘন্টা
ফাইল এপিআই জিসিএস ইউআরআই নিবন্ধন বড় ফাইলগুলো ইতিমধ্যেই গুগল ক্লাউড স্টোরেজে রয়েছে, ফাইলগুলো একাধিকবার ব্যবহার করা হয়েছে। প্রতি ফাইলে ২ জিবি, মোট স্টোরেজের কোনো সীমা নেই কোনোটিই নয় (অনুরোধ অনুযায়ী আনা হয়)। এককালীন নিবন্ধনের মাধ্যমে সর্বোচ্চ ৩০ দিনের জন্য প্রবেশাধিকার পাওয়া যেতে পারে।
বাহ্যিক URL পুনরায় আপলোড না করেই পাবলিক ডেটা বা ক্লাউড বাকেটে (AWS, Azure, GCS) থাকা ডেটা। প্রতি অনুরোধ/পেলোডে ১০০ এমবি কোনোটিই নয় (অনুরোধ অনুযায়ী আনা হয়েছে)

ইনলাইন ডেটা

ছোট ফাইলের (১০০ মেগাবাইটের কম, বা পিডিএফের ক্ষেত্রে ৫০ মেগাবাইট) জন্য, আপনি সরাসরি রিকোয়েস্ট পেলোডে ডেটা পাঠাতে পারেন। দ্রুত পরীক্ষা অথবা রিয়েল-টাইম ও ক্ষণস্থায়ী ডেটা পরিচালনা করে এমন অ্যাপ্লিকেশনের জন্য এটিই সবচেয়ে সহজ পদ্ধতি। আপনি বেস৬৪ এনকোডেড স্ট্রিং হিসেবে অথবা সরাসরি লোকাল ফাইল থেকে ডেটা সরবরাহ করতে পারেন।

স্থানীয় ফাইল থেকে পড়ার একটি উদাহরণের জন্য এই পৃষ্ঠার শুরুতে দেওয়া উদাহরণটি দেখুন।

একটি URL থেকে আনুন

এছাড়াও আপনি একটি URL থেকে ফাইল আনতে, সেটিকে বাইটে রূপান্তর করতে এবং ইনপুটে অন্তর্ভুক্ত করতে পারেন।

পাইথন

from google import genai
import httpx

client = genai.Client()

doc_url = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"
doc_data = httpx.get(doc_url).content

prompt = "Summarize this document"

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        {"type": "document", "data": doc_data, "mime_type": "application/pdf"},
        {"type": "text", "text": prompt}
    ]
)
# Print the model's text response
for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});
const docUrl = 'https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf';
const prompt = "Summarize this document";

async function main() {
    const pdfResp = await fetch(docUrl)
      .then((response) => response.arrayBuffer());

    const interaction = await client.interactions.create({
        model: "gemini-3-flash-preview",
        input: [
            { type: "text", text: prompt },
            {
                type: "document",
                data: Buffer.from(pdfResp).toString("base64"),
                mimeType: "application/pdf"
            }
        ]
    });
    const modelStep = interaction.steps.find(s => s.type === 'model_output');
    if (modelStep) {
      for (const contentBlock of modelStep.content) {
        if (contentBlock.type === 'text') console.log(contentBlock.text);
      }
    }
}

main();

বিশ্রাম

DOC_URL="https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"
PROMPT="Summarize this document"
DISPLAY_NAME="base64_pdf"

# Download the PDF
wget -O "${DISPLAY_NAME}.pdf" "${DOC_URL}"

# Check for FreeBSD base64 and set flags accordingly
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi

# Base64 encode the PDF
ENCODED_PDF=$(base64 $B64FLAGS "${DISPLAY_NAME}.pdf")

# Generate content using interactions
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "gemini-3-flash-preview",
      "input": [
        {"type": "document", "data": "'$ENCODED_PDF'", "mimeType": "application/pdf"},
        {"type": "text", "text": "'$PROMPT'"}
      ]
    }' 2> /dev/null > response.json

cat response.json
echo

jq ".steps[] | select(.type == \"model_output\") | .content[] | select(.type == \"text\") | .text" response.json

জেমিনি ফাইল এপিআই

ফাইল এপিআইটি বড় ফাইল (২ জিবি পর্যন্ত) অথবা এমন ফাইলের জন্য ডিজাইন করা হয়েছে যা আপনি একাধিক অনুরোধে ব্যবহার করতে চান।

স্ট্যান্ডার্ড ফাইল আপলোড

জেমিনি এপিআই-তে একটি স্থানীয় ফাইল আপলোড করুন। এভাবে আপলোড করা ফাইলগুলো সাময়িকভাবে (৪৮ ঘণ্টা) সংরক্ষিত থাকে এবং মডেল দ্বারা কার্যকরভাবে পুনরুদ্ধারের জন্য প্রক্রিয়াজাত করা হয়।

পাইথন

from google import genai

client = genai.Client()

# Upload the file
audio_file = client.files.upload(file="path/to/your/sample.mp3")
prompt = "Describe this audio clip"

# Use the uploaded file in an interaction
interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        {"type": "text", "text": prompt},
        {"type": "audio", "uri": audio_file.uri, "mime_type": audio_file.mime_type}
    ]
)
# Print the model's text response
for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});
const prompt = "Describe this audio clip";

async function main() {
  const filePath = "path/to/your/sample.mp3";

  const myfile = await client.files.upload({
    file: filePath,
    config: { mimeType: "audio/mpeg" },
  });

  const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: [
        { type: "text", text: prompt },
        { type: "audio", uri: myfile.uri, mimeType: myfile.mimeType }
    ]
  });
  const modelStep = interaction.steps.find(s => s.type === 'model_output');
  if (modelStep) {
    for (const contentBlock of modelStep.content) {
      if (contentBlock.type === 'text') console.log(contentBlock.text);
    }
  }
}

await main();

বিশ্রাম

AUDIO_PATH="path/to/sample.mp3"
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.
curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
  -D "${tmp_header_file}" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -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)

# Now use in an interaction
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "gemini-3-flash-preview",
      "input": [
        {"type": "text", "text": "Describe this audio clip"},
        {"type": "audio", "uri": '$file_uri', "mimeType": "'${MIME_TYPE}'"}
      ]
    }'

গুগল ক্লাউড স্টোরেজ ফাইলগুলি নিবন্ধন করুন

আপনার ডেটা যদি ইতিমধ্যেই গুগল ক্লাউড স্টোরেজে থাকে, তাহলে আপনাকে তা ডাউনলোড করে পুনরায় আপলোড করতে হবে না। আপনি সরাসরি ফাইল এপিআই (File API) ব্যবহার করে এটি নিবন্ধন করতে পারেন।

  1. পরিষেবা এজেন্টকে প্রতিটি বালতিতে প্রবেশাধিকার দিন।

    1. আপনার গুগল ক্লাউড প্রজেক্টে জেমিনি এপিআই (Gemini API) সক্রিয় করুন।

    2. সার্ভিস এজেন্ট তৈরি করুন:

      gcloud beta services identity create --service=generativelanguage.googleapis.com --project=<your_project>

    3. জেমিনি এপিআই সার্ভিস এজেন্টকে আপনার স্টোরেজ বাকেটগুলো পড়ার অনুমতি দিন

      ব্যবহারকারীকে তার ব্যবহৃত নির্দিষ্ট স্টোরেজ বাকেটগুলিতে এই সার্ভিস এজেন্টকে Storage Object Viewer আইএএম রোলটি বরাদ্দ করতে হবে।

    এই অ্যাক্সেসের মেয়াদ ডিফল্টভাবে শেষ হয় না, তবে এটি যেকোনো সময় পরিবর্তন করা যেতে পারে। অনুমতি দেওয়ার জন্য আপনি Google Cloud Storage IAM SDK কমান্ডগুলোও ব্যবহার করতে পারেন।

  2. আপনার পরিষেবা প্রমাণীকরণ করুন

    পূর্বশর্ত

    • এপিআই সক্ষম করুন
    • যথাযথ অনুমতিসহ একটি পরিষেবা অ্যাকাউন্ট বা এজেন্ট তৈরি করুন।

    প্রথমে আপনাকে সেই সার্ভিস হিসেবে প্রমাণীকরণ করতে হবে যার স্টোরেজ অবজেক্ট ভিউয়ার পারমিশন আছে। এটি কীভাবে ঘটবে তা নির্ভর করে সেই পরিবেশের উপর যেখানে আপনার ফাইল ম্যানেজমেন্ট কোডটি চলবে।

    গুগল ক্লাউডের বাইরে

    আপনার কোড যদি গুগল ক্লাউডের বাইরে থেকে, যেমন আপনার ডেস্কটপ থেকে, চালানো হয়, তাহলে নিচের ধাপগুলো অনুসরণ করে গুগল ক্লাউড কনসোল থেকে অ্যাকাউন্টের ক্রেডেনশিয়াল ডাউনলোড করুন:

    1. সার্ভিস অ্যাকাউন্ট কনসোলে যান
    2. প্রাসঙ্গিক পরিষেবা অ্যাকাউন্ট নির্বাচন করুন
    3. Keys ট্যাবটি নির্বাচন করুন এবং Add key, Create new key বেছে নিন।
    4. JSON কী-এর ধরনটি নির্বাচন করুন এবং আপনার মেশিনে ফাইলটি কোথায় ডাউনলোড হয়েছে তা লিখে রাখুন।

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

    এরপর প্রমাণীকরণের জন্য নিম্নলিখিত কমান্ডগুলো ব্যবহার করুন। এই কমান্ডগুলো ধরে নেয় যে আপনার সার্ভিস অ্যাকাউন্ট ফাইলটি বর্তমান ডিরেক্টরিতে service-account.json নামে রয়েছে।

    পাইথন

    from google.oauth2.service_account import Credentials
    
    GCS_READ_SCOPES = [       
      'https://www.googleapis.com/auth/devstorage.read_only',
      'https://www.googleapis.com/auth/cloud-platform'
    ]
    
    SERVICE_ACCOUNT_FILE = 'service-account.json'
    
    credentials = Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE,
        scopes=GCS_READ_SCOPES
    )
    

    জাভাস্ক্রিপ্ট

    const { GoogleAuth } = require('google-auth-library');
    
    const GCS_READ_SCOPES = [
      'https://www.googleapis.com/auth/devstorage.read_only',
      'https://www.googleapis.com/auth/cloud-platform'
    ];
    
    const SERVICE_ACCOUNT_FILE = 'service-account.json';
    
    const auth = new GoogleAuth({
      keyFile: SERVICE_ACCOUNT_FILE,
      scopes: GCS_READ_SCOPES
    });
    

    সিএলআই

    gcloud auth application-default login \
      --client-id-file=service-account.json \
      --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/devstorage.read_only'
    

    গুগল ক্লাউডে

    আপনি যদি সরাসরি গুগল ক্লাউডে কাজ করেন, উদাহরণস্বরূপ ক্লাউড রান ফাংশন বা একটি কম্পিউট ইঞ্জিন ইনস্ট্যান্স ব্যবহার করে, তাহলে আপনার অন্তর্নিহিত ক্রেডেনশিয়াল থাকবে, কিন্তু উপযুক্ত স্কোপগুলো মঞ্জুর করার জন্য আপনাকে পুনরায় প্রমাণীকরণ করতে হবে।

    পাইথন

    এই কোডটি আশা করে যে পরিষেবাটি এমন একটি পরিবেশে চলছে যেখান থেকে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল স্বয়ংক্রিয়ভাবে পাওয়া যায়, যেমন ক্লাউড রান বা কম্পিউট ইঞ্জিন।

    import google.auth
    
    GCS_READ_SCOPES = [       
      'https://www.googleapis.com/auth/devstorage.read_only',
      'https://www.googleapis.com/auth/cloud-platform'
    ]
    
    credentials, project = google.auth.default(scopes=GCS_READ_SCOPES)
    

    জাভাস্ক্রিপ্ট

    এই কোডটি আশা করে যে পরিষেবাটি এমন একটি পরিবেশে চলছে যেখান থেকে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল স্বয়ংক্রিয়ভাবে পাওয়া যায়, যেমন ক্লাউড রান বা কম্পিউট ইঞ্জিন।

    const { GoogleAuth } = require('google-auth-library');
    
    const auth = new GoogleAuth({
      scopes: [
        'https://www.googleapis.com/auth/devstorage.read_only',
        'https://www.googleapis.com/auth/cloud-platform'
      ]
    });
    

    সিএলআই

    এটি একটি ইন্টারেক্টিভ কমান্ড। Compute Engine-এর মতো সার্ভিসগুলোর ক্ষেত্রে আপনি কনফিগ লেভেলে চলমান সার্ভিসে স্কোপ সংযুক্ত করতে পারেন। একটি উদাহরণের জন্য ইউজার-ম্যানেজড সার্ভিস ডক্স দেখুন।

    gcloud auth application-default login \
    --scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/devstorage.read_only"
    
  3. ফাইল নিবন্ধন (ফাইল এপিআই)

    ফাইলস এপিআই ব্যবহার করে ফাইল রেজিস্টার করুন এবং একটি ফাইলস এপিআই পাথ তৈরি করুন যা সরাসরি জেমিনি এপিআই-তে ব্যবহার করা যাবে।

    পাইথন

    from google import genai
    
    # Note that you must provide an API key in the GEMINI_API_KEY
    # environment variable, but it is unused for the registration endpoint.
    client = genai.Client(credentials=credentials)
    
    registered_gcs_files = client.files.register_files(
        uris=["gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"]
    )
    prompt = "Summarize this file."
    
    # call interactions.create for each file
    for f in registered_gcs_files.files:
      print(f.name)
      interaction = client.interactions.create(
        model="gemini-3-flash-preview",
        input=[
          {"type": "text", "text": prompt},
          {"type": "document", "uri": f.uri, "mime_type": f.mime_type}
        ],
      )
      # Print the model's text response
      for step in interaction.steps:
          if step.type == "model_output":
              for content_block in step.content:
                  if content_block.type == "text":
                      print(content_block.text)
    

    জাভাস্ক্রিপ্ট

    import { GoogleGenAI } from "@google/genai";
    
    const ai = new GoogleGenAI({ auth: auth });
    
    async function main() {
        const registeredGcsFiles = await ai.files.registerFiles({
            uris: ["gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"]
        });
    
        const prompt = "Summarize this file.";
    
        for (const file of registeredGcsFiles.files) {
            console.log(file.name);
            const interaction = await ai.interactions.create({
                model: "gemini-3-flash-preview",
                input: [
                    { type: "text", text: prompt },
                    { type: "document", uri: file.uri, mimeType: file.mimeType }
                ]
            });
    
            const modelStep = interaction.steps.find(s => s.type === 'model_output');
            if (modelStep) {
                for (const contentBlock of modelStep.content) {
                    if (contentBlock.type === 'text') console.log(contentBlock.text);
                }
            }
        }
    }
    
    main();
    

    সিএলআই

    access_token=$(gcloud auth application-default print-access-token)
    project_id=$(gcloud config get-value project)
    curl -X POST https://generativelanguage.googleapis.com/v1beta/files:register \
        -H 'Content-Type: application/json' \
        -H "Authorization: Bearer ${access_token}" \
        -H "x-goog-user-project: ${project_id}" \
        -d '{"uris": ["gs://bucket/object1", "gs://bucket/object2"]}'
    

বাহ্যিক HTTP / স্বাক্ষরিত URL

আপনি আপনার অনুরোধে সরাসরি সর্বজনীনভাবে অ্যাক্সেসযোগ্য HTTPS URL বা প্রি-সাইনড URL দিতে পারেন। জেমিনি এপিআই প্রক্রিয়াকরণের সময় নিরাপদে কন্টেন্টটি সংগ্রহ করবে। এটি ১০০ মেগাবাইট পর্যন্ত ফাইলের জন্য আদর্শ, যা আপনি পুনরায় আপলোড করতে চান না।

পাইথন

from google import genai

uri = "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf"
prompt = "Summarize this file"

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        {"type": "document", "uri": uri, "mime_type": "application/pdf"},
        {"type": "text", "text": prompt}
    ]
)
# Print the model's text response
for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const uri = "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf";

async function main() {
  const interaction = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    input: [
      { type: "document", uri: uri, mimeType: "application/pdf" },
      { type: "text", text: "summarize this file" }
    ]
  });

  const modelStep = interaction.steps.find(s => s.type === 'model_output');
  if (modelStep) {
    for (const contentBlock of modelStep.content) {
      if (contentBlock.type === 'text') console.log(contentBlock.text);
    }
  }
}

main();

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
      -H 'x-goog-api-key: $GEMINI_API_KEY' \
      -H 'Content-Type: application/json' \
      -d '{
          "model": "gemini-3-flash-preview",
          "input": [
            {"type": "text", "text": "Summarize this pdf"},
            {
              "type": "document",
              "uri": "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf",
              "mimeType": "application/pdf"
            }
          ]
        }'

প্রবেশগম্যতা

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

নিরাপত্তা পরীক্ষা

সিস্টেমটি ইউআরএলটি নিরাপত্তা এবং নীতিগত মানদণ্ড পূরণ করে কিনা তা নিশ্চিত করার জন্য একটি কন্টেন্ট মডারেশন চেক করে। যদি ইউআরএলটি এই পরীক্ষায় উত্তীর্ণ না হয়, তাহলে আপনি URL_RETRIEVAL_STATUS_UNSAFE url_retrieval_status পাবেন।

সমর্থিত বিষয়বস্তুর প্রকার

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

টেক্সট ফাইলের প্রকার

  • text/html
  • text/css
  • text/plain
  • text/xml
  • text/csv
  • text/rtf
  • text/javascript

অ্যাপ্লিকেশন ফাইলের প্রকার

  • application/json
  • application/pdf

ছবির ফাইলের প্রকার

  • image/bmp
  • image/jpeg
  • image/png
  • image/webp

সর্বোত্তম অনুশীলন

  • সঠিক পদ্ধতিটি বেছে নিন: ছোট ও ক্ষণস্থায়ী ফাইলের জন্য ইনলাইন ডেটা ব্যবহার করুন। বড় বা ঘন ঘন ব্যবহৃত ফাইলের জন্য ফাইল এপিআই (File API) ব্যবহার করুন। ইতিমধ্যে অনলাইনে হোস্ট করা ডেটার জন্য এক্সটার্নাল ইউআরএল (External URLs) ব্যবহার করুন।
  • MIME টাইপ নির্দিষ্ট করুন: সঠিক প্রক্রিয়াকরণ নিশ্চিত করতে ফাইল ডেটার জন্য সর্বদা সঠিক MIME টাইপ প্রদান করুন।
  • ত্রুটি পরিচালনা: নেটওয়ার্ক ব্যর্থতা, ফাইল অ্যাক্সেসের সমস্যা বা এপিআই (API) ত্রুটির মতো সম্ভাব্য সমস্যাগুলো সামাল দিতে আপনার কোডে ত্রুটি পরিচালনা ব্যবস্থা প্রয়োগ করুন।

সীমাবদ্ধতা

  • পদ্ধতি ( তুলনা সারণি দেখুন) এবং ফাইলের প্রকারভেদে ফাইলের আকারের সীমা ভিন্ন হয়।
  • ইনলাইন ডেটা রিকোয়েস্ট পেলোডের আকার বাড়িয়ে দেয়।
  • ফাইল এপিআই আপলোডগুলি অস্থায়ী এবং ৪৮ ঘণ্টা পর মেয়াদোত্তীর্ণ হয়ে যায়।
  • বাহ্যিক ইউআরএল থেকে ডেটা আনার ক্ষেত্রে প্রতি পেলোডের সীমা ১০০ মেগাবাইট এবং এটি নির্দিষ্ট ধরনের কন্টেন্ট সমর্থন করে।

এরপর কী?

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