Using files

Metode: media.upload

Membuat File.

Endpoint

URI upload, untuk permintaan upload media:
`post
https://generativelanguage.googleapis.com/upload/v1beta/files

  • URI Metadata, untuk permintaan khusus metadata:
    POST https://generativelanguage.googleapis.com/v1beta/filesURL menggunakan sintaksis gRPC Transcoding.

Isi permintaan

Isi permintaan memuat data dengan struktur berikut:

Bidang
file object (File)

Opsional. Metadata untuk file yang akan dibuat.

Contoh permintaan

Gambar

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());

Audio

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());

Teks

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());

Isi respons

Respons untuk media.upload.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Bidang
file object (File)

Metadata untuk file yang dibuat.

Representasi JSON
{
  "file": {
    object (File)
  }
}

Metode: files.get

Mendapatkan metadata untuk File yang ditentukan.

Endpoint

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

Parameter jalur

name string

Wajib. Nama File yang akan didapatkan. Contoh: files/abc-123 Formatnya adalah files/{file}.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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}`,
);

Isi respons

Jika berhasil, isi respons memuat instance File.

Metode: files.list

Mencantumkan metadata untuk File yang dimiliki oleh project yang meminta.

Endpoint

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

Parameter kueri

pageSize integer

Opsional. Jumlah maksimum File yang ditampilkan per halaman. Jika tidak ditentukan, defaultnya adalah 10. pageSize maksimum adalah 100.

pageToken string

Opsional. Token halaman dari panggilan files.list sebelumnya.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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}`);
}

Isi respons

Respons untuk files.list.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Bidang
files[] object (File)

Daftar File.

nextPageToken string

Token yang dapat dikirim sebagai pageToken ke panggilan files.list berikutnya.

Representasi JSON
{
  "files": [
    {
      object (File)
    }
  ],
  "nextPageToken": string
}

Metode: files.delete

Menghapus File.

Endpoint

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

Parameter jalur

name string

Wajib. Nama File yang akan dihapus. Contoh: files/abc-123 Formatnya adalah files/{file}.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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}`);

Isi respons

Jika berhasil, isi respons akan kosong.

Resource REST: file

Resource: File

File yang diupload ke API.

Representasi JSON
{
  "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.
}
Bidang
name string

Tidak dapat diubah. ID. Nama resource File. ID (nama yang tidak mencakup awalan "files/") dapat berisi maksimal 40 karakter yang berupa alfanumerik huruf kecil atau tanda hubung (-). ID tidak boleh diawali atau diakhiri dengan tanda hubung. Jika nama tersebut kosong saat dibuat, nama unik akan dibuat. Contoh: files/123-456

displayName string

Opsional. Nama tampilan yang dapat dibaca manusia untuk File. Nama tampilan tidak boleh lebih dari 512 karakter, termasuk spasi. Contoh: "Gambar Selamat Datang"

mimeType string

Hanya output. Jenis file MIME.

sizeBytes string (int64 format)

Hanya output. Ukuran file dalam byte.

createTime string (Timestamp format)

Hanya output. Stempel waktu saat File dibuat.

Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Hanya output. Stempel waktu saat File terakhir diperbarui.

Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

expirationTime string (Timestamp format)

Hanya output. Stempel waktu saat File akan dihapus. Hanya setel jika File dijadwalkan untuk berakhir.

Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

sha256Hash string (bytes format)

Hanya output. Hash SHA-256 byte yang diupload.

String berenkode base64.

uri string

Hanya output. URI File.

state enum (State)

Hanya output. Memproses status File.

error object (Status)

Hanya output. Status error jika Pemrosesan file gagal.

Kolom union metadata. Metadata untuk File. metadata hanya dapat berupa salah satu dari berikut:
videoMetadata object (VideoMetadata)

Hanya output. Metadata untuk video.

VideoMetadata

Metadata untuk video File.

Representasi JSON
{
  "videoDuration": string
}
Bidang
videoDuration string (Duration format)

Durasi video.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

Negara Bagian

Status untuk siklus proses File.

Enum
STATE_UNSPECIFIED Nilai default. Nilai ini digunakan jika status dihilangkan.
PROCESSING File sedang diproses dan belum dapat digunakan untuk inferensi.
ACTIVE File diproses dan tersedia untuk inferensi.
FAILED File gagal diproses.

Status

Jenis Status menentukan model error logis yang cocok untuk berbagai lingkungan pemrograman, meliputi REST API dan RPC API. Jenis error ini digunakan oleh gRPC. Setiap pesan Status berisi tiga bagian data: kode error, pesan error, dan detail error.

Anda dapat mencari tahu lebih lanjut tentang model error ini dan cara penanganannya di Panduan Desain API.

Representasi JSON
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Bidang
code integer

Kode status, harus berupa nilai enum dari google.rpc.Code.

message string

Pesan error yang ditampilkan ke developer dan seharusnya dalam bahasa Inggris. Setiap pesan error yang ditampilkan kepada pengguna harus dilokalkan dan dikirim di kolom google.rpc.Status.details, atau dilokalkan oleh klien.

details[] object

Daftar pesan yang membawa detail error. Ada seperangkat jenis pesan umum untuk digunakan API.

Objek yang berisi kolom tipe arbitrer. Kolom tambahan "@type" berisi URI yang mengidentifikasi jenis. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.