Using files

Gemini API, medya dosyalarının istem girişinden ayrı olarak yüklenmesini destekler. Bu sayede, medyanız birden fazla istekte ve istemde yeniden kullanılabilir. Daha fazla ayrıntı için Medya ile istem oluşturma kılavuzuna göz atın.

Yöntem: media.upload

Verileri bir ragStore'a yükler, RagStore Document'ta depolamadan önce ön işleme tabi tutar ve parçalara ayırır.

Uç nokta

  • Medya yükleme istekleri için yükleme URI'si:
post https://generativelanguage.googleapis.com/upload/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore
  • Yalnızca meta veri istekleri için meta veri URI'si:
post https://generativelanguage.googleapis.com/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore

Yol parametreleri

ragStoreName string

Zorunlu. Değiştirilemez. Dosyanın yükleneceği RagStore adı. Örnek: ragStores/my-rag-store-123 It takes the form ragStores/{ragstore}.

İstek içeriği

İstek içeriği aşağıdaki yapıyla birlikte verileri içerir:

Alanlar
displayName string

İsteğe bağlıdır. Oluşturulan dokümanın görünen adı.

customMetadata[] object (CustomMetadata)

Verilerle ilişkilendirilecek özel meta veriler.

chunkingConfig object (ChunkingConfig)

İsteğe bağlıdır. Hizmete verilerin nasıl bölüneceğini söyleyen yapılandırma. Sağlanmazsa hizmet varsayılan parametreleri kullanır.

mimeType string

İsteğe bağlıdır. Verilerin MIME türü. Belirtilmemişse yüklenen içerikten çıkarılır.

Yanıt gövdesi

Bu, google.longrunning.Operation öğesinin bir kopyasıdır. Bunu kopyalamamız gerekiyor. Çünkü Scotty ile etkileşim kurmak için üst düzey Operation proto'ya eklenemeyen Scotty'ye özgü bir alan eklememiz gerekiyor.

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

Alanlar
name string

Sunucu tarafından atanan ad. Yalnızca bu adı ilk kez sağlayan hizmet kapsamında benzersizdir. Varsayılan HTTP eşlemesini kullanıyorsanız name değeri, operations/{unique_id} ile biten bir kaynak adı olmalıdır.

metadata object

İşlemle ilişkilendirilen, hizmete özgü meta veriler. Genellikle ilerleme bilgilerini ve oluşturma zamanı gibi ortak meta verileri içerir. Bazı hizmetler bu tür meta verileri sağlamayabilir. Uzun süreli bir işlemi döndüren tüm yöntemler, varsa meta veri türünü belirtmelidir.

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

done boolean

Değer false olması işlemin devam ettiği anlamına gelir. Değer true olduğunda işlem tamamlanmış olup error veya response kullanılabilir.

result Union type
İşlem sonucu. error veya geçerli bir response olabilir. done == false ise error öğesi de response öğesi de ayarlanmaz. done == true ise error veya response öğelerinden yalnızca biri ayarlanabilir. Bazı hizmetler sonuç vermeyebilir. result aşağıdakilerden yalnızca biri olabilir:
error object (Status)

İşlem başarısız olduğunda veya iptal edildiğinde sistemin verdiği hata bilgisi.

response object

İşlem başarılı olduğunda sistemin verdiği normal yanıt. Orijinal yöntem başarılı olduğunda veri döndürmüyorsa (ör. Delete) yanıt google.protobuf.Empty olur. Orijinal yöntem standart Get/Create/Update ise yanıt kaynak olmalıdır. Diğer yöntemler için yanıtın türü XxxResponse olmalıdır. Burada Xxx, orijinal yöntem adıdır. Örneğin, orijinal yöntem adı TakeSnapshot() ise tahmin edilen yanıt türü TakeSnapshotResponse olur.

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

JSON gösterimi
{
  "name": string,
  "metadata": {
    "@type": string,
    field1: ...,
    ...
  },
  "done": boolean,

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

ChunkingConfig

Hizmete dosyanın nasıl parçalanacağını söyleyen parametreler. google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto dosyasından alınmıştır.

Alanlar
config Union type
Kullanılacak parçalama yapılandırması. config aşağıdakilerden yalnızca biri olabilir:
whiteSpaceConfig object (WhiteSpaceConfig)

Boşluk parçalama yapılandırması.

JSON gösterimi
{

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

WhiteSpaceConfig

Boşlukla ayrılmış bir boşluk parçalama algoritması için yapılandırma.

Alanlar
maxTokensPerChunk integer

Parça başına maksimum jeton sayısı. Bu parçalama algoritması için jetonlar kelime olarak tanımlanır. Not: Burada jetonlar, jetonlaştırıcı çıktısı yerine boşlukla ayrılmış kelimeler olarak tanımlanmaktadır. 2025-04-17 itibarıyla en yeni Gemini yerleştirme modelinin bağlam penceresi şu anda 8.192 parçadır. Ortalama kelime uzunluğunun 5 karakter olduğunu varsayıyoruz. Bu nedenle, en kötü durumda her jetonun bir karakter olduğu varsayılarak üst sınır 2**9 (512 kelime veya 2.560 jeton) olarak belirlenir. Bu, bağlam penceresinin taşmasını önlemek için yapılan ihtiyatlı bir tahmindir.

maxOverlapTokens integer

İki bitişik parça arasındaki maksimum çakışan jeton sayısı.

JSON gösterimi
{
  "maxTokensPerChunk": integer,
  "maxOverlapTokens": integer
}

Yöntem: files.get

Belirtilen File için meta verileri alır.

Uç nokta

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

Yol parametreleri

name string

Zorunlu. Alınacak File öğesinin adı. Örnek: files/abc-123 It takes the form files/{file}.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

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)

kabuk

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

Yanıt gövdesi

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

Yöntem: files.list

İstek gönderen projeye ait File meta verilerini listeler.

Uç nokta

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

Sorgu parametreleri

pageSize integer

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

pageToken string

İsteğe bağlıdır. Önceki bir files.list çağrısından alınan sayfa jetonu.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

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

kabuk

echo "My files: "

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

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 bir files.list çağrısına pageToken olarak gönderilebilen bir jeton.

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

Yöntem: files.delete

File öğesini siler.

Uç nokta

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

Yol parametreleri

name string

Zorunlu. Silinecek File öğesinin adı. Örnek: files/abc-123 It takes the form files/{file}.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

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

kabuk

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

Yanıt gövdesi

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

REST Kaynağı: files

Kaynak: Dosya

API'ye yüklenen bir dosya. Next ID: 15

Alanlar
name string

Değiştirilemez. Tanımlayıcı. File kaynak adı. Kimlik ("files/" öneki hariç ad) küçük harf alfanümerik karakterler veya kısa çizgiler (-) içeren en fazla 40 karakterden oluşabilir. Kimlik kısa çizgiyle 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ıdır. File için kullanıcılar tarafından okunabilir görünen ad. Görünen ad, boşluklar dahil olmak üzere en fazla 512 karakter uzunluğunda olmalıdır. Örnek: "Welcome Image"

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 oluşturulduğu zamanı gösteren zaman damgası.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

Yalnızca çıkış. File öğesinin en son güncellendiği zamanın zaman damgası.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

expirationTime string (Timestamp format)

Yalnızca çıkış. File öğesinin silineceği zamanın zaman damgası. Yalnızca File süresinin dolması planlanıyorsa ayarlanır.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

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'si.

downloadUri string

Yalnızca çıkış. File dosyasının indirme URI'si.

state enum (State)

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

source enum (Source)

Dosyanın kaynağı.

error object (Status)

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

metadata Union type
Dosyanın meta verileri. metadata aşağıdakilerden yalnızca biri olabilir:
videoMetadata object (VideoFileMetadata)

Yalnızca çıkış. Bir videonun meta verileri.

JSON gösterimi
{
  "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

Bir videonun meta verileri File.

Alanlar
videoDuration string (Duration format)

Videonun süresi.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

JSON gösterimi
{
  "videoDuration": string
}

Eyalet

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

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

Kaynak

Sıralamalar
SOURCE_UNSPECIFIED Kaynak belirtilmemişse kullanılır.
UPLOADED Dosyanın kullanıcı tarafından yüklendiğini gösterir.
GENERATED Dosyanın Google tarafından oluşturulduğunu belirtir.
REGISTERED Dosyanın kayıtlı olduğunu (ör. Google Cloud Storage dosyası) gösterir.

Durum

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

Bu hata modeli ve nasıl kullanılacağı hakkında daha fazla bilgiyi API Tasarım Kılavuzu'nda bulabilirsiniz.

Alanlar
code integer

Durum kodu, google.rpc.Code enum değeri olmalıdır.

message string

Geliştiriciye yönelik hata mesajı (İngilizce olmalıdır). Kullanıcıya gösterilen tüm hata mesajları yerelleştirilmiş olup 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 kullanabileceği ortak bir mesaj türleri kümesi vardır.

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

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