Files API

می توانید از Files API برای آپلود و تعامل با فایل های رسانه ای استفاده کنید. Files API به شما امکان می دهد تا حداکثر 20 گیگابایت فایل در هر پروژه را با حداکثر اندازه هر فایل 2 گیگابایت ذخیره کنید. فایل ها به مدت 48 ساعت ذخیره می شوند. در این مدت، می توانید از API برای دریافت ابرداده در مورد فایل ها استفاده کنید، اما نمی توانید فایل ها را دانلود کنید. Files API بدون هیچ هزینه ای در تمام مناطقی که Gemini API در دسترس است در دسترس است.

این راهنما نحوه کار با فایل های رسانه ای را با استفاده از Files API به شما نشان می دهد. عملیات اصلی برای فایل های صوتی، تصاویر، فیلم ها، اسناد و سایر انواع فایل های پشتیبانی شده یکسان است.

یک فایل آپلود کنید

می توانید از Files API برای آپلود یک فایل رسانه ای استفاده کنید. همیشه زمانی از Files API استفاده کنید که حجم کل درخواست (شامل فایل‌ها، پیام متنی، دستورالعمل‌های سیستم و غیره) بیشتر از 20 مگابایت باشد.

کد زیر یک فایل را آپلود می کند و سپس از فایل در یک تماس برای 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

بعدش چی

این راهنما نحوه کار با فایل ها را با استفاده از Files API نشان می دهد. برای کسب اطلاعات بیشتر در مورد درخواست با فایل‌ها، به استراتژی‌های درخواست فایل مراجعه کنید.