Using files

Gemini API mendukung upload file media secara terpisah dari input perintah, sehingga media Anda dapat digunakan kembali di beberapa permintaan dan beberapa perintah. Untuk mengetahui detail selengkapnya, lihat panduan Memberi perintah dengan media.

Metode: media.upload

Mengupload data ke ragStore, melakukan praproses dan membagi-bagi data sebelum menyimpannya dalam Dokumen RagStore.

Endpoint

  • URI upload, untuk permintaan upload media:
postingan https://generativelanguage.googleapis.com/upload/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore
  • URI metadata, khusus untuk permintaan metadata:
post https://generativelanguage.googleapis.com/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore

Parameter jalur

ragStoreName string

Wajib. Tidak dapat diubah. Nama RagStore untuk mengupload file. Contoh: ragStores/my-rag-store-123 Formatnya adalah ragStores/{ragstore}.

Isi permintaan

Isi permintaan memuat data dengan struktur berikut:

Kolom
displayName string

Opsional. Nama tampilan dokumen yang dibuat.

customMetadata[] object (CustomMetadata)

Metadata kustom yang akan dikaitkan dengan data.

chunkingConfig object (ChunkingConfig)

Opsional. Konfigurasi untuk memberi tahu layanan cara membagi data. Jika tidak disediakan, layanan akan menggunakan parameter default.

mimeType string

Opsional. Jenis MIME data. Jika tidak diberikan, nilai akan disimpulkan dari konten yang diupload.

Isi respons

Ini adalah salinan google.longrunning.Operation. Kita perlu menyalinnya karena untuk berinteraksi dengan scotty, kita perlu menambahkan kolom khusus scotty yang tidak dapat ditambahkan di proto Operasi tingkat teratas.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Kolom
name string

Nama server yang ditetapkan, yang hanya bersifat unik dalam layanan yang sama yang awalnya menampilkannya. Jika Anda menggunakan pemetaan HTTP default, name harus berupa nama resource yang diakhiri dengan operations/{unique_id}.

metadata object

Metadata spesifik per layanan yang terkait dengan operasi. Metadata ini biasanya berisi informasi progres dan metadata umum, seperti waktu pembuatan. Beberapa layanan mungkin tidak menyediakan metadata semacam itu. Setiap metode yang menampilkan operasi yang berjalan lama harus mendokumentasikan jenis metadatanya, jika ada.

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

done boolean

Jika nilainya adalah false, itu berarti operasi masih berlangsung. Jika true, operasi sudah selesai, dan error atau response tersedia.

result Union type
Hasil operasi, yang dapat berupa error atau response yang valid. Jika done == false, error atau response tidak ditetapkan. Jika done == true, hanya salah satu dari error atau response yang dapat ditetapkan. Beberapa layanan mungkin tidak memberikan hasil. result hanya dapat berupa salah satu dari hal berikut:
error object (Status)

Hasil error operasi jika terjadi kegagalan atau pembatalan.

response object

Respons normal dan berhasil dari operasi. Jika metode asli tidak menampilkan data saat berhasil, seperti Delete, responsnya adalah google.protobuf.Empty. Jika metode asli adalah Get/Create/Update standar, responsnya harus berupa resource. Untuk metode lain, respons harus memiliki jenis XxxResponse, dengan Xxx yang merupakan nama metode asli. Misalnya, jika nama metode asli adalah TakeSnapshot(), jenis respons yang disimpulkan adalah TakeSnapshotResponse.

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

Representasi JSON
{
  "name": string,
  "metadata": {
    "@type": string,
    field1: ...,
    ...
  },
  "done": boolean,

  // result
  "error": {
    object (Status)
  },
  "response": {
    "@type": string,
    field1: ...,
    ...
  }
  // Union type
}

ChunkingConfig

Parameter untuk memberi tahu layanan cara membagi file menjadi beberapa bagian. Terinspirasi oleh google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto

Kolom
config Union type
Konfigurasi chunking yang akan digunakan. config hanya dapat berupa salah satu dari hal berikut:
whiteSpaceConfig object (WhiteSpaceConfig)

Konfigurasi pengelompokan ruang kosong.

Representasi JSON
{

  // config
  "whiteSpaceConfig": {
    object (WhiteSpaceConfig)
  }
  // Union type
}

WhiteSpaceConfig

Konfigurasi untuk algoritma pengelompokan spasi [dibatasi spasi].

Kolom
maxTokensPerChunk integer

Jumlah maksimum token per bagian. Token didefinisikan sebagai kata untuk algoritma pengelompokan ini. Catatan: kami mendefinisikan token sebagai kata yang dipisahkan oleh spasi, bukan output tokenizer. Jendela konteks model penyematan gemini terbaru pada 17-04-2025 saat ini adalah 8192 token. Kami mengasumsikan bahwa rata-rata kata terdiri dari 5 karakter. Oleh karena itu, kami menetapkan batas atas menjadi 2**9, yaitu 512 kata, atau 2560 token, dengan asumsi kasus terburuk adalah satu karakter per token. Ini adalah perkiraan konservatif yang dimaksudkan untuk mencegah luapan jendela konteks.

maxOverlapTokens integer

Jumlah maksimum token yang tumpang-tindih antara dua bagian yang berdekatan.

Representasi JSON
{
  "maxTokensPerChunk": integer,
  "maxOverlapTokens": integer
}

Metode: files.get

Mendapatkan metadata untuk File yang ditentukan.

Endpoint

get 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

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)

Node.js

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

Go

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)

Shell

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

Isi respons

Jika berhasil, isi respons memuat instance File.

Metode: files.list

Mencantumkan metadata untuk File yang dimiliki oleh project yang meminta.

Endpoint

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

Parameter kueri

pageSize integer

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

pageToken string

Opsional. Token halaman dari panggilan files.list sebelumnya.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

Python

from google import genai

client = genai.Client()
print("My files:")
for f in client.files.list():
    print("  ", f.name)

Node.js

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

Go

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

Shell

echo "My files: "

curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GEMINI_API_KEY"

Isi respons

Respons untuk files.list.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Kolom
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

delete 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

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-2.0-flash", contents=[myfile, "Describe this file."]
    )
    print(result)
except genai.errors.ClientError:
    pass

Node.js

// The Gen AI SDK for TypeScript and JavaScript is in preview.
// Some features have not been implemented.

Go

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-2.0-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")

Shell

curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY

Isi respons

Jika berhasil, isi respons adalah objek JSON kosong.

Resource REST: file

Resource: File

File diupload ke API. ID Berikutnya: 15

Kolom
name string

Tidak dapat diubah. ID. Nama resource File. ID (nama tidak termasuk awalan "files/") dapat berisi hingga 40 karakter yang berupa alfanumerik huruf kecil atau tanda hubung (-). ID tidak boleh diawali atau diakhiri dengan tanda hubung. Jika nama 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 MIME file.

sizeBytes string (int64 format)

Hanya output. Ukuran file dalam byte.

createTime string (Timestamp format)

Hanya output. Stempel waktu saat File dibuat.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

Hanya output. Stempel waktu saat File terakhir diperbarui.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

expirationTime string (Timestamp format)

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

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

sha256Hash string (bytes format)

Hanya output. Hash SHA-256 byte yang diupload.

String berenkode base64.

uri string

Hanya output. URI File.

downloadUri string

Hanya output. URI download File.

state enum (State)

Hanya output. Status pemrosesan File.

source enum (Source)

Sumber File.

error object (Status)

Hanya output. Status error jika Pemrosesan file gagal.

metadata Union type
Metadata untuk File. metadata hanya dapat berupa salah satu dari hal berikut:
videoMetadata object (VideoFileMetadata)

Hanya output. Metadata untuk video.

Representasi JSON
{
  "name": string,
  "displayName": string,
  "mimeType": string,
  "sizeBytes": string,
  "createTime": string,
  "updateTime": string,
  "expirationTime": string,
  "sha256Hash": string,
  "uri": string,
  "downloadUri": string,
  "state": enum (State),
  "source": enum (Source),
  "error": {
    object (Status)
  },

  // metadata
  "videoMetadata": {
    object (VideoFileMetadata)
  }
  // Union type
}

VideoFileMetadata

Metadata untuk video File.

Kolom
videoDuration string (Duration format)

Durasi video.

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

Representasi JSON
{
  "videoDuration": string
}

Negara Bagian

Status untuk siklus proses File.

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

Sumber

Enum
SOURCE_UNSPECIFIED Digunakan jika sumber tidak ditentukan.
UPLOADED Menunjukkan bahwa file diupload oleh pengguna.
GENERATED Menunjukkan bahwa file dibuat oleh Google.
REGISTERED Menunjukkan bahwa file adalah file terdaftar, yaitu file Google Cloud Storage.

Status

Jenis Status menentukan model error logis yang cocok untuk berbagai lingkungan pemrograman, termasuk 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 mengetahui selengkapnya tentang model error ini dan penanganannya di Panduan Desain API.

Kolom
code integer

Kode status yang 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 arbitrer. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.

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