رابط برنامهنویسی Gemini از آپلود فایلهای رسانهای جدا از ورودی اعلان پشتیبانی میکند و به شما امکان میدهد از رسانههای خود در چندین درخواست و اعلان مختلف استفاده مجدد کنید. برای جزئیات بیشتر، راهنمای اعلان با رسانه را بررسی کنید.
منبع REST: فایلها
منبع: فایل
فایلی که در API آپلود شده است.
string name تغییرناپذیر. شناسه. نام منبع File . شناسه (نام به استثنای پیشوند "files/") میتواند شامل حداکثر ۴۰ کاراکتر باشد که حروف کوچک و عددی یا خط تیره (-) باشند. شناسه نمیتواند با خط تیره شروع یا پایان یابد. اگر نام در هنگام ایجاد خالی باشد، یک نام منحصر به فرد ایجاد میشود. مثال: files/123-456
string displayName اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از ۵۱۲ کاراکتر، شامل فاصلهها، باشد. مثال: "تصویر خوش آمدید"
string mimeTypeفقط خروجی. نوع MIME فایل.
sizeBytesstring ( int64 format)فقط خروجی. اندازه فایل بر حسب بایت.
createTimestring ( Timestamp format) فقط خروجی. مهر زمانیِ ایجاد File .
از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .
updateTimestring ( Timestamp format) فقط خروجی. مهر زمانی آخرین بهروزرسانی File .
از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .
string ( Timestamp format) expirationTime فقط خروجی. مهر زمانی که File حذف خواهد شد. فقط در صورتی تنظیم میشود که File برای انقضا برنامهریزی شده باشد.
از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .
sha256Hashstring ( bytes format)فقط خروجی. هش SHA-256 از بایتهای آپلود شده.
یک رشته کدگذاری شده با base64.
string uri فقط خروجی. url File .
downloadUristring فقط خروجی. آدرس دانلود File .
stateenum ( State )فقط خروجی. وضعیت پردازش فایل.
sourceenum ( Source )منبع فایل.
errorobject ( Status )فقط خروجی. وضعیت خطا در صورت عدم موفقیت در پردازش فایل.
Union type metadatavideoMetadataobject ( VideoFileMetadata )فقط خروجی. فراداده برای یک ویدیو.
| نمایش JSON |
|---|
|
فراداده فایل ویدیویی
فراداده برای یک File ویدیویی.
videoDurationstring ( Duration format)مدت زمان ویدیو.
مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' s ' ختم میشود. مثال: "3.5s" .
| نمایش JSON |
|---|
|
ایالت
حالتهایی برای چرخه حیات یک فایل.
| انومها | |
|---|---|
STATE_UNSPECIFIED | مقدار پیشفرض. این مقدار در صورتی استفاده میشود که state حذف شده باشد. |
PROCESSING | فایل در حال پردازش است و هنوز نمیتوان از آن برای استنتاج استفاده کرد. |
ACTIVE | فایل پردازش شده و برای استنتاج در دسترس است. |
FAILED | پردازش فایل ناموفق بود. |
منبع
| انومها | |
|---|---|
SOURCE_UNSPECIFIED | در صورتی که منبع مشخص نشده باشد، استفاده میشود. |
UPLOADED | نشان میدهد که فایل توسط کاربر آپلود شده است. |
GENERATED | نشان میدهد که فایل توسط گوگل ایجاد شده است. |
REGISTERED | نشان میدهد که فایل ثبت شده است، یعنی یک فایل Google Cloud Storage. |
روش: files.get
متادیتای File داده شده را دریافت میکند.
نقطه پایانی
دریافتhttps: / /generativelanguage.googleapis.com /v1beta /{name=files /*}پارامترهای مسیر
string name الزامی. نام File که قرار است دریافت شود. مثال: files/abc-123 این پارامتر به شکل files/{file} است.
درخواست بدنه
بدنه درخواست باید خالی باشد.
درخواست نمونه
پایتون
from google import genai
client = genai.Client()
myfile = client.files.upload(file=media / "poem.txt")
file_name = myfile.name
print(file_name) # "files/*"
myfile = client.files.get(name=file_name)
print(myfile)نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const myfile = await ai.files.upload({
file: path.join(media, "poem.txt"),
});
const fileName = myfile.name;
console.log(fileName);
const fetchedFile = await ai.files.get({ name: fileName });
console.log(fetchedFile);برو
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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "poem.txt"),
&genai.UploadFileConfig{
MIMEType: "text/plain",
},
)
if err != nil {
log.Fatal(err)
}
fileName := myfile.Name
fmt.Println(fileName)
file, err := client.Files.Get(ctx, fileName, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(file)پوسته
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_uripan>.shبدنه پاسخ
در صورت موفقیت، بدنه پاسخ شامل نمونهای از File است.
روش: files.list
فرادادههای مربوط به File که متعلق به پروژه درخواستکننده هستند را فهرست میکند.
نقطه پایانی
دریافتhttps: / /generativelanguage.googleapis.com /v1beta /filesپارامترهای پرس و جو
integer pageSize اختیاری. حداکثر تعداد File برای برگرداندن در هر صفحه. اگر مشخص نشود، پیشفرض ۱۰ است. حداکثر pageSize ۱۰۰ است.
string pageToken اختیاری. یک توکن صفحه از فراخوانی قبلی files.list .
درخواست بدنه
بدنه درخواست باید خالی باشد.
درخواست نمونه
پایتون
from google import genai
client = genai.Client()
print("My files:")
for f in client.files.list():
print(" ", f.name)نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
console.log("My files:");
// Using the pager style to list files
const pager = await ai.files.list({ config: { pageSize: 10 } });
let page = pager.page;
const names = [];
while (true) {
for (const f of page) {
console.log(" ", f.name);
names.push(f.name);
}
if (!pager.hasNextPage()) break;
page = await pager.nextPage();
}برو
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)
}
fmt.Println("My files:")
page, err := client.Files.List(ctx, nil)
if err != nil {
log.Fatal(err)
}
for _, f := range page.Items {
fmt.Println(" ", f.Name)
}پوسته
echo "My files: "
curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GEMINI_API_KEY"بدنه پاسخ
پاسخ برای files.list .
در صورت موفقیت، بدنه پاسخ شامل دادههایی با ساختار زیر است:
files[]object ( File ) فهرست File s.
string nextPageToken یک توکن که میتواند به عنوان یک pageToken به فراخوانی بعدی files.list ارسال شود.
| نمایش JSON |
|---|
|
روش: فایلها.حذف
File را حذف میکند.
نقطه پایانی
حذفhttps: / /generativelanguage.googleapis.com /v1beta /{name=files /*}پارامترهای مسیر
string name الزامی. نام File که قرار است حذف شود. مثال: files/abc-123 این پارامتر به شکل files/{file} است.
درخواست بدنه
بدنه درخواست باید خالی باشد.
درخواست نمونه
پایتون
from google import genai
client = genai.Client()
myfile = client.files.upload(file=media / "poem.txt")
client.files.delete(name=myfile.name)
try:
result = client.models.generate_content(
model="gemini-3.8-flash", contents=[myfile, "Describe this file."]
)
print(result)
except genai.errors.ClientError:
pass.pyنود جی اس
// The Gen AI SDK for TypeScript and JavaScript is in preview.
// Some features have not been implemented.برو
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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "poem.txt"),
&genai.UploadFileConfig{
MIMEType: "text/plain",
},
)
if err != nil {
log.Fatal(err)
}
// Delete the file.
_, err = client.Files.Delete(ctx, myfile.Name, nil)
if err != nil {
log.Fatal(err)
}
// Attempt to use the deleted file.
parts := []*genai.Part{
genai.NewPartFromURI(myfile.URI, myfile.MIMEType,),
genai.NewPartFromText("Describe this file."),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
_, err = client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
// Expect an error when using a deleted file.
if err != nil {
return nil
}
return fmt.Errorf("expected an error when using deleted file")پوسته
curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEYpan>.shبدنه پاسخ
در صورت موفقیت، بدنه پاسخ یک شیء JSON خالی خواهد بود.
روش: files.register
یک فایل Google Cloud Storage را با FileService ثبت میکند. از کاربر انتظار میرود که URIهای Google Cloud Storage را ارائه دهد و در عوض برای هر URI یک منبع File دریافت کند. توجه داشته باشید که فایلها کپی نمیشوند، فقط با File API ثبت میشوند. اگر یک فایل ثبت نشود، کل درخواست با شکست مواجه میشود.
نقطه پایانی
پستhttps: / /generativelanguage.googleapis.com /v1beta /files:registerدرخواست بدنه
بدنه درخواست شامل دادههایی با ساختار زیر است:
string uris[] الزامی. آدرسهای اینترنتی (URI) فضای ذخیرهسازی ابری گوگل برای ثبت. مثال: gs://bucket/object .
روش: media.upload
یک File ایجاد میکند.
نقطه پایانی
https: / /generativelanguage.googleapis.com /upload /v1beta /fileshttps: / /generativelanguage.googleapis.com /v1beta /files
درخواست بدنه
بدنه درخواست شامل دادههایی با ساختار زیر است:
fileobject ( File )اختیاری. فراداده برای ایجاد فایل.
درخواست نمونه
تصویر
پایتون
from google import genai
client = genai.Client()
myfile = client.files.upload(file=media / "Cajun_instruments.jpg")
print(f"{myfile=}")
result = client.models.generate_content(
model="gemini-3.8-flash",
contents=[
myfile,
"\n\n",
"Can you tell me about the instruments in this photo?",
],
)
print(f"{result.text=}")نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const myfile = await ai.files.upload({
file: path.join(media, "Cajun_instruments.jpg"),
config: { mimeType: "image/jpeg" },
});
console.log("Uploaded file:", myfile);
const result = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"\n\n",
"Can you tell me about the instruments in this photo?",
]),
});
console.log("result.text=", result.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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "Cajun_instruments.jpg"),
&genai.UploadFileConfig{
MIMEType : "image/jpeg",
},
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("myfile=%+v\n", myfile)
parts := []*genai.Part{
genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
genai.NewPartFromText("\n\n"),
genai.NewPartFromText("Can you tell me about the instruments in this photo?"),
}
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)
}
text := response.Text()
fmt.Printf("result.text=%s\n", text)پوسته
MIME_TYPE=$(file -b --mime-type "${IMG_PATH_2}")
NUM_BYTES=$(wc -c < "${IMG_PATH_2}")
DISPLAY_NAME=TEXT
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 "@${IMG_PATH_2}" 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-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Can you tell me about the instruments in this photo?"},
{"file_data":
{"mime_type": "image/jpeg",
"file_uri": '$file_uri'}
}]
}]
}' 2> /dev/null > response.json
cat response.json
echo
jq ".candidates[].content.parts[].text" response.jsonصوتی
پایتون
from google import genai
client = genai.Client()
myfile = client.files.upload(file=media / "sample.mp3")
print(f"{myfile=}")
result = client.models.generate_content(
model="gemini-3.8-flash", contents=[myfile, "Describe this audio clip"]
)
print(f"{result.text=}")نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const myfile = await ai.files.upload({
file: path.join(media, "sample.mp3"),
config: { mimeType: "audio/mpeg" },
});
console.log("Uploaded file:", myfile);
const result = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"Describe this audio clip",
]),
});
console.log("result.text=", result.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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "sample.mp3"),
&genai.UploadFileConfig{
MIMEType : "audio/mpeg",
},
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("myfile=%+v\n", myfile)
parts := []*genai.Part{
genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
genai.NewPartFromText("Describe this audio clip"),
}
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)
}
text := response.Text()
fmt.Printf("result.text=%s\n", text)پوسته
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
# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Describe this audio clip"},
{"file_data":{"mime_type": "audio/mp3", "file_uri": '$file_uri'}}]
}]
}' 2> /dev/null > response.json
cat response.json
echo
jq ".candidates[].content.parts[].text" response.jsonمتن
پایتون
from google import genai
client = genai.Client()
myfile = client.files.upload(file=media / "poem.txt")
print(f"{myfile=}")
result = client.models.generate_content(
model="gemini-3.8-flash",
contents=[myfile, "\n\n", "Can you add a few more lines to this poem?"],
)
print(f"{result.text=}")نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const myfile = await ai.files.upload({
file: path.join(media, "poem.txt"),
});
console.log("Uploaded file:", myfile);
const result = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"\n\n",
"Can you add a few more lines to this poem?",
]),
});
console.log("result.text=", result.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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "poem.txt"),
&genai.UploadFileConfig{
MIMEType : "text/plain",
},
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("myfile=%+v\n", myfile)
parts := []*genai.Part{
genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
genai.NewPartFromText("\n\n"),
genai.NewPartFromText("Can you add a few more lines to this poem?"),
}
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)
}
text := response.Text()
fmt.Printf("result.text=%s\n", text)پوسته
MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}")
NUM_BYTES=$(wc -c < "${TEXT_PATH}")
DISPLAY_NAME=TEXT
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 "@${TEXT_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-1.5-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": "text/plain", "file_uri": '$file_uri'}}]
}]
}' 2> /dev/null > response.json
cat response.json
echo
jq ".candidates[].content.parts[].text" response.json
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
curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY
ویدئو
پایتون
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)
result = client.models.generate_content(
model="gemini-3.8-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{result.text=}")نود جی اس
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
let myfile = await ai.files.upload({
file: path.join(media, "Big_Buck_Bunny.mp4"),
config: { mimeType: "video/mp4" },
});
console.log("Uploaded video file:", myfile);
// Poll until the video file is completely processed (state becomes ACTIVE).
while (!myfile.state || myfile.state.toString() !== "ACTIVE") {
console.log("Processing video...");
console.log("File state: ", myfile.state);
await sleep(5000);
myfile = await ai.files.get({ name: myfile.name });
}
const result = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"Describe this video clip",
]),
});
console.log("result.text=", result.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)
}
myfile, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
&genai.UploadFileConfig{
MIMEType : "video/mp4",
},
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("myfile=%+v\n", myfile)
// Poll until the video file is completely processed (state becomes ACTIVE).
for myfile.State == genai.FileStateUnspecified || myfile.State != genai.FileStateActive {
fmt.Println("Processing video...")
fmt.Println("File state:", myfile.State)
time.Sleep(5 * time.Second)
myfile, err = client.Files.Get(ctx, myfile.Name, nil)
if err != nil {
log.Fatal(err)
}
}
parts := []*genai.Part{
genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
genai.NewPartFromText("Describe this video clip"),
}
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)
}
text := response.Text()
fmt.Printf("result.text=%s\n", text)پوسته
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
# Ensure the state of the video is 'ACTIVE'
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
# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Describe this video clip"},
{"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پی دی اف
پایتون
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 pdf file.", sample_pdf],
)
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)
}
samplePdf, 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 pdf file."),
genai.NewPartFromURI(samplePdf.URI, samplePdf.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)
}
text := response.Text()
fmt.Println(text)وضعیت
نوع Status یک مدل خطای منطقی را تعریف میکند که برای محیطهای برنامهنویسی مختلف، از جمله REST APIها و RPC APIها، مناسب است. این مدل توسط gRPC استفاده میشود. هر پیام Status شامل سه بخش داده است: کد خطا، پیام خطا و جزئیات خطا.
میتوانید اطلاعات بیشتری در مورد این مدل خطا و نحوه کار با آن را در راهنمای طراحی API بیابید.
integer code کد وضعیت، که باید یک مقدار شمارشی از google.rpc.Code باشد.
string message یک پیام خطای مربوط به توسعهدهنده که باید به زبان انگلیسی باشد. هرگونه پیام خطای مربوط به کاربر باید بومیسازی شده و در فیلد google.rpc.Status.details ارسال شود، یا توسط کلاینت بومیسازی شود.
details[]objectفهرستی از پیامهایی که جزئیات خطا را در خود دارند. مجموعهای مشترک از انواع پیامها برای استفاده توسط APIها وجود دارد.
یک شیء حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص میکند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .
| نمایش JSON |
|---|
|