Using files

Yöntem: media.upload

File oluşturur.

Uç nokta

yükleme URI'si, medya yükleme istekleri için:
`post
https://generativelanguage.googleapis.com/upload/v1beta/files

  • Yalnızca meta veri istekleri için meta veri URI'si:
    POST https://generativelanguage.googleapis.com/v1beta/filesURL, gRPC Kod Dönüştürme söz dizimini kullanır.

İstek içeriği

İstek gövdesi, aşağıdaki yapıya sahip verileri içerir:

Alanlar
file object (File)

İsteğe bağlı. Oluşturulacak dosyanın meta verileri.

Örnek istek

Resim

Python

myfile = genai.upload_file(media / "Cajun_instruments.jpg")
print(f"{myfile=}")

model = genai.GenerativeModel("gemini-1.5-flash")
result = model.generate_content(
    [myfile, "\n\n", "Can you tell me about the instruments in this photo?"]
)
print(f"{result.text=}")

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(
  `${mediaPath}/jetpack.jpg`,
  {
    mimeType: "image/jpeg",
    displayName: "Jetpack drawing",
  },
);
// View the response.
console.log(
  `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent([
  "Tell me about this image.",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(result.response.text());

Ses

Python

myfile = genai.upload_file(media / "sample.mp3")
print(f"{myfile=}")

model = genai.GenerativeModel("gemini-1.5-flash")
result = model.generate_content([myfile, "Describe this audio clip"])
print(f"{result.text=}")

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(
  `${mediaPath}/samplesmall.mp3`,
  {
    mimeType: "audio/mp3",
    displayName: "Audio sample",
  },
);

let file = await fileManager.getFile(uploadResult.file.name);
while (file.state === FileState.PROCESSING) {
  process.stdout.write(".");
  // Sleep for 10 seconds
  await new Promise((resolve) => setTimeout(resolve, 10_000));
  // Fetch the file from the API again
  file = await fileManager.getFile(uploadResult.file.name);
}

if (file.state === FileState.FAILED) {
  throw new Error("Audio processing failed.");
}

// View the response.
console.log(
  `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent([
  "Tell me about this audio clip.",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(result.response.text());

Metin

Python

myfile = genai.upload_file(media / "poem.txt")
print(f"{myfile=}")

model = genai.GenerativeModel("gemini-1.5-flash")
result = model.generate_content(
    [myfile, "\n\n", "Can you add a few more lines to this poem?"]
)
print(f"{result.text=}")

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
  displayName: "Apollo 11",
});
// View the response.
console.log(
  `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent([
  "Transcribe the first few sentences of this document.",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(result.response.text());

Video

Python

import time

# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = genai.upload_file(media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Videos need to be processed before you can use them.
while myfile.state.name == "PROCESSING":
    print("processing video...")
    time.sleep(5)
    myfile = genai.get_file(myfile.name)

model = genai.GenerativeModel("gemini-1.5-flash")
result = model.generate_content([myfile, "Describe this video clip"])
print(f"{result.text=}")

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(
  `${mediaPath}/Big_Buck_Bunny.mp4`,
  {
    mimeType: "video/mp4",
    displayName: "Big Buck Bunny",
  },
);

let file = await fileManager.getFile(uploadResult.file.name);
while (file.state === FileState.PROCESSING) {
  process.stdout.write(".");
  // Sleep for 10 seconds
  await new Promise((resolve) => setTimeout(resolve, 10_000));
  // Fetch the file from the API again
  file = await fileManager.getFile(uploadResult.file.name);
}

if (file.state === FileState.FAILED) {
  throw new Error("Video processing failed.");
}

// View the response.
console.log(
  `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent([
  "Tell me about this video.",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(result.response.text());

Yanıt gövdesi

media.upload için yanıt.

Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:

Alanlar
file object (File)

Oluşturulan dosyanın meta verileri.

JSON gösterimi
{
  "file": {
    object (File)
  }
}

Yöntem: files.get

Belirtilen File için meta verileri alır.

Uç nokta

indir https://generativelanguage.googleapis.com/v1beta/{name=files/*}

Yol parametreleri

name string

Zorunlu. Alınacak File adı. Örnek: files/abc-123 files/{file} biçimindedir.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

Python

myfile = genai.upload_file(media / "poem.txt")
file_name = myfile.name
print(file_name)  # "files/*"

myfile = genai.get_file(file_name)
print(myfile)

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager } from "@google/generative-ai/server";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResponse = await fileManager.uploadFile(
  `${mediaPath}/jetpack.jpg`,
  {
    mimeType: "image/jpeg",
    displayName: "Jetpack drawing",
  },
);

// Get the previously uploaded file's metadata.
const getResponse = await fileManager.getFile(uploadResponse.file.name);

// View the response.
console.log(
  `Retrieved file ${getResponse.displayName} as ${getResponse.uri}`,
);

Yanıt gövdesi

Başarılıysa yanıt metni, File öğesinin bir örneğini içerir.

Yöntem: files.list

İstekte bulunan projeye ait File öğelerinin meta verilerini listeler.

Uç nokta

indir https://generativelanguage.googleapis.com/v1beta/files

Sorgu parametreleri

pageSize integer

İsteğe bağlı. Sayfa başına döndürülecek maksimum File sayısı. Belirtilmemişse varsayılan olarak 10'dur. Maksimum pageSize 100'dür.

pageToken string

İsteğe bağlı. Önceki bir files.list çağrısının sayfa jetonu.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

Python

print("My files:")
for f in genai.list_files():
    print("  ", f.name)

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager } from "@google/generative-ai/server";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const listFilesResponse = await fileManager.listFiles();

// View the response.
for (const file of listFilesResponse.files) {
  console.log(`name: ${file.name} | display name: ${file.displayName}`);
}

Yanıt gövdesi

files.list için yanıt.

Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:

Alanlar
files[] object (File)

File listesi.

nextPageToken string

Sonraki files.list çağrısına pageToken olarak gönderilebilecek jeton.

JSON gösterimi
{
  "files": [
    {
      object (File)
    }
  ],
  "nextPageToken": string
}

Yöntem: files.delete

File öğesini siler.

Uç nokta

sil https://generativelanguage.googleapis.com/v1beta/{name=files/*}

Yol parametreleri

name string

Zorunlu. Silinecek File öğesinin adı. Örnek: files/abc-123 files/{file} biçimindedir.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

Python

myfile = genai.upload_file(media / "poem.txt")

myfile.delete()

try:
    # Error.
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this file."])
except google.api_core.exceptions.PermissionDenied:
    pass

Node.js

// Make sure to include these imports:
// import { GoogleAIFileManager } from "@google/generative-ai/server";
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(
  `${mediaPath}/jetpack.jpg`,
  {
    mimeType: "image/jpeg",
    displayName: "Jetpack drawing",
  },
);

// Delete the file.
await fileManager.deleteFile(uploadResult.file.name);

console.log(`Deleted ${uploadResult.file.displayName}`);

Yanıt gövdesi

Başarılı olursa yanıt gövdesi boş olur.

REST Kaynağı: dosyalar

Kaynak: Dosya

API'ye yüklenen bir dosya.

JSON gösterimi
{
  "name": string,
  "displayName": string,
  "mimeType": string,
  "sizeBytes": string,
  "createTime": string,
  "updateTime": string,
  "expirationTime": string,
  "sha256Hash": string,
  "uri": string,
  "state": enum (State),
  "error": {
    object (Status)
  },

  // Union field metadata can be only one of the following:
  "videoMetadata": {
    object (VideoMetadata)
  }
  // End of list of possible types for union field metadata.
}
Alanlar
name string

Sabit. Tanımlayıcı. File kaynağının adı. Kimlik ("dosyalar/" öneki hariç) en fazla 40 karakter ve küçük harfli alfanümerik veya kısa çizgi (-) içerebilir. Kimlik, tireyle başlayamaz veya bitemez. Oluşturma sırasında ad boşsa benzersiz bir ad oluşturulur. Örnek: files/123-456

displayName string

İsteğe bağlı. File için kullanıcıların okuyabileceği görünen ad. Görünen ad, boşluklar dahil en fazla 512 karakter uzunluğunda olmalıdır. Örnek: "Karşılama Resmi"

mimeType string

Yalnızca çıkış. Dosyanın MIME türü.

sizeBytes string (int64 format)

Yalnızca çıkış. Dosyanın bayt cinsinden boyutu.

createTime string (Timestamp format)

Yalnızca çıkış. File öğesinin oluşturulduğu zamanı gösteren zaman damgası.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Yalnızca çıkış. File öğesinin en son ne zaman güncellendiğine ilişkin zaman damgası.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

expirationTime string (Timestamp format)

Yalnızca çıkış. File öğesinin silineceği zamanı gösteren zaman damgası. Yalnızca File süresi sona erecek şekilde planlandıysa ayarlanır.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

sha256Hash string (bytes format)

Yalnızca çıkış. Yüklenen baytların SHA-256 karması.

base64 kodlu bir dize.

uri string

Yalnızca çıkış. File öğesinin URI'sı.

state enum (State)

Yalnızca çıkış. Dosyanın işlenme durumu.

error object (Status)

Yalnızca çıkış. Dosya işleme başarısız olduğunda hata durumu.

Birleştirme alanı metadata. Dosyaya ilişkin meta veriler. metadata şunlardan yalnızca biri olabilir:
videoMetadata object (VideoMetadata)

Yalnızca çıkış. Videonun meta verileri.

VideoMetadata

File başlıklı videonun meta verileri.

JSON gösterimi
{
  "videoDuration": string
}
Alanlar
videoDuration string (Duration format)

Videonun süresi.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

Eyalet

Dosyanın yaşam döngüsüyle ilgili durumlar.

Sıralamalar
STATE_UNSPECIFIED Varsayılan değerdir. Eyalet atlanırsa bu değer kullanılır.
PROCESSING Dosya işleniyor ve henüz çıkarım için kullanılamaz.
ACTIVE Dosya işlendi ve çıkarım için kullanılabilir.
FAILED Dosya işlenemedi.

Durum

Status türü, REST API'ler ve RPC API'leri dahil olmak üzere farklı programlama ortamları için uygun bir mantıksal hata modelini tanımlar. gRPC tarafından kullanılır. Her Status mesajı üç veri parçası içerir: hata kodu, hata mesajı ve hata ayrıntıları.

API Tasarım Kılavuzu'nda bu hata modeli ve bu hata modeliyle nasıl çalışılacağı hakkında daha fazla bilgi edinebilirsiniz.

JSON gösterimi
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Alanlar
code integer

google.rpc.Code sıralama değeri olması gereken durum kodu.

message string

Geliştiricilere yönelik, İngilizce olması gereken bir hata mesajı. Kullanıcılara yönelik tüm hata mesajları yerelleştirilip google.rpc.Status.details alanında gönderilmeli veya istemci tarafından yerelleştirilmelidir.

details[] object

Hata ayrıntılarını içeren mesajların listesi. API'lerin kullandığı bir dizi mesaj türü vardır.

Rastgele türden alanlar içeren nesne. Ek bir "@type" alanı, türü tanımlayan bir URI içerir. Örnek: { "id": 1234, "@type": "types.example.com/standard/id" }.