ফাইল API

আপনি মিডিয়া ফাইল আপলোড করতে এবং ইন্টারঅ্যাক্ট করতে Files API ব্যবহার করতে পারেন। ফাইল এপিআই আপনাকে প্রতি প্রোজেক্টে 20 GB পর্যন্ত ফাইল সংরক্ষণ করতে দেয়, যার প্রতি ফাইলের সর্বোচ্চ আকার 2 GB। ফাইল 48 ঘন্টার জন্য সংরক্ষণ করা হয়. সেই সময়ের মধ্যে, আপনি ফাইলগুলি সম্পর্কে মেটাডেটা পেতে API ব্যবহার করতে পারেন, কিন্তু আপনি ফাইলগুলি ডাউনলোড করতে পারবেন না। Gemini API পাওয়া যায় এমন সমস্ত অঞ্চলে Files API বিনা মূল্যে উপলব্ধ।

ফাইল API ব্যবহার করে মিডিয়া ফাইলগুলির সাথে কীভাবে কাজ করবেন তা এই নির্দেশিকা আপনাকে দেখায়। মৌলিক ক্রিয়াকলাপগুলি অডিও ফাইল, ছবি, ভিডিও, নথি এবং অন্যান্য সমর্থিত ফাইল প্রকারের জন্য একই।

একটি ফাইল আপলোড করুন

আপনি একটি মিডিয়া ফাইল আপলোড করতে Files API ব্যবহার করতে পারেন। সর্বদা ফাইল API ব্যবহার করুন যখন মোট অনুরোধের আকার (ফাইল, টেক্সট প্রম্পট, সিস্টেম নির্দেশাবলী, ইত্যাদি সহ) 20 MB এর থেকে বড় হয়৷

নিম্নলিখিত কোডটি একটি ফাইল আপলোড করে এবং তারপরে generateContent করতে একটি কলে ফাইলটি ব্যবহার করে।

from google import genai

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

myfile = client.files.upload(file="path/to/sample.mp3")

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=["Describe this audio clip", myfile]
)

print(response.text)
import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });

async function main() {
  const myfile = await ai.files.upload({
    file: "path/to/sample.mp3",
    config: { mimeType: "audio/mpeg" },
  });

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

await main();
file, err := client.UploadFileFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
    genai.FileData{URI: file.URI},
    genai.Text("Describe this audio clip"))
if err != nil {
    log.Fatal(err)
}

printResponse(resp)
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.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_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

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Describe this audio clip"},
          {"file_data":{"mime_type": "${MIME_TYPE}", "file_uri": '$file_uri'}}]
        }]
      }' 2> /dev/null > response.json

cat response.json
echo

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

একটি ফাইলের জন্য মেটাডেটা পান

আপনি যাচাই করতে পারেন যে API সফলভাবে আপলোড করা ফাইলটি সংরক্ষণ করেছে এবং files.get এ কল করে এর মেটাডেটা পেতে পারে।

myfile = client.files.upload(file='path/to/sample.mp3')
file_name = myfile.name
myfile = client.files.get(name=file_name)
print(myfile)
const myfile = await ai.files.upload({
  file: "path/to/sample.mp3",
  config: { mimeType: "audio/mpeg" },
});

const fileName = myfile.name;
const fetchedFile = await ai.files.get({ name: fileName });
console.log(fetchedFile);
file, err := client.UploadFileFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
    log.Fatal(err)
}

gotFile, err := client.GetFile(ctx, file.Name)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Got file:", gotFile.Name)
# file_info.json was created in the upload example
name=$(jq ".file.name" file_info.json)
# Get the file of interest to check state
curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
# Print some information about the file you got
name=$(jq ".file.name" file_info.json)
echo name=$name
file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

আপলোড করা ফাইলের তালিকা করুন

আপনি Files API ব্যবহার করে একাধিক ফাইল আপলোড করতে পারেন। নিম্নলিখিত কোডটি আপলোড করা সমস্ত ফাইলের একটি তালিকা পায়:

print('My files:')
for f in client.files.list():
    print(' ', f.name)
const listResponse = await ai.files.list({ config: { pageSize: 10 } });
for await (const file of listResponse) {
  console.log(file.name);
}
iter := client.ListFiles(ctx)
for {
    ifile, err := iter.Next()
    if err == iterator.Done {
        break
    }
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(ifile.Name)
}
echo "My files: "

curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GOOGLE_API_KEY"

আপলোড করা ফাইল মুছুন

ফাইলগুলি 48 ঘন্টা পরে স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। আপনি নিজেও একটি আপলোড করা ফাইল মুছতে পারেন:

myfile = client.files.upload(file='path/to/sample.mp3')
client.files.delete(name=myfile.name)
const myfile = await ai.files.upload({
  file: "path/to/sample.mp3",
  config: { mimeType: "audio/mpeg" },
});

const fileName = myfile.name;
await ai.files.delete({ name: fileName });
file, err := client.UploadFileFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
    log.Fatal(err)
}
client.DeleteFile(ctx, file.Name)
curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GOOGLE_API_KEY

এরপর কি

এই গাইডটি দেখায় কিভাবে ফাইল এপিআই ব্যবহার করে ফাইলের সাথে কাজ করতে হয়। ফাইলের সাথে প্রম্পটিং সম্পর্কে আরও জানতে, ফাইল প্রম্পটিং কৌশলগুলি দেখুন।