আপনি মিডিয়া ফাইল আপলোড করতে এবং ইন্টারঅ্যাক্ট করতে 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
এরপর কি
এই গাইডটি দেখায় কিভাবে ফাইল এপিআই ব্যবহার করে ফাইলের সাথে কাজ করতে হয়। ফাইলের সাথে প্রম্পটিং সম্পর্কে আরও জানতে, ফাইল প্রম্পটিং কৌশলগুলি দেখুন।