Using files

Mit der Gemini API können Sie Mediendateien separat vom Prompt-Eingabe hochladen. So können Ihre Medien in mehreren Anfragen und mehreren Prompts wiederverwendet werden. Weitere Informationen finden Sie im Leitfaden Prompts mit Media.

Methode: media.upload

Lädt Daten in einen „ragStore“ hoch, verarbeitet sie vor und teilt sie in Chunks auf, bevor sie in einem „RagStore“-Dokument gespeichert werden.

Endpunkt

  • Upload-URI für Media-Uploadanfragen:
post > https://generativelanguage.googleapis.com/upload/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore >
  • Metadaten-URI für reine Metadatenanfragen:
post https://generativelanguage.googleapis.com/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore >
>

Pfadparameter

ragStoreName string

Erforderlich. Nicht veränderbar. Der Name des RagStore, in den die Datei hochgeladen werden soll. Beispiel: ragStores/my-rag-store-123 Sie nimmt die Form ragStores/{ragstore} an.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

Felder
displayName string

Optional. Der Anzeigename des erstellten Dokuments.

customMetadata[] object (CustomMetadata)

Benutzerdefinierte Metadaten, die den Daten zugeordnet werden sollen.

chunkingConfig object (ChunkingConfig)

Optional. Konfiguration, die dem Dienst mitteilt, wie die Daten in Chunks aufgeteilt werden sollen. Wenn nicht angegeben, verwendet der Dienst Standardparameter.

mimeType string

Optional. MIME-Typ der Daten. Wenn sie nicht angegeben wird, wird sie aus den hochgeladenen Inhalten abgeleitet.

Antworttext

Dies ist eine Kopie von google.longrunning.Operation. Wir müssen es kopieren, da wir für die Interaktion mit Scotty ein Scotty-spezifisches Feld hinzufügen müssen, das nicht im Operation-Proto auf oberster Ebene hinzugefügt werden kann.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

Felder
name string

Der vom Server zugewiesene Name, der nur innerhalb des Dienstes eindeutig ist, der ihn ursprünglich zurückgibt. Wenn Sie die Standard-HTTP-Zuordnung verwenden, sollte name ein Ressourcenname sein, der auf operations/{unique_id} endet.

metadata object

Dienstspezifische Metadaten, die mit dem Vorgang verknüpft sind. Typischerweise enthalten sie Informationen zum Verlauf und gemeinsame Metadaten wie den Erstellungszeitpunkt. Solche Metadaten werden nicht von allen Diensten bereitgestellt. Jede Methode, die einen Vorgang mit langer Ausführungszeit zurückgibt, muss gegebenenfalls den Metadatentyp dokumentieren.

Ein Objekt, das Felder eines beliebigen Typs enthält. Ein zusätzliches Feld "@type" enthält einen URI zur Identifizierung des Typs. Beispiel: { "id": 1234, "@type": "types.example.com/standard/id" }

done boolean

Ist der Wert false, bedeutet das, dass der Vorgang noch läuft. Ist der Wert hingegen true, ist der Vorgang abgeschlossen und entweder error oder response ist verfügbar.

result Union type
Das Ergebnis des Vorgangs kann entweder ein error oder eine gültige response sein. Wenn done = false ist, wird weder error noch response festgelegt. Wenn done = true ist, kann genau ein error oder eine response festgelegt werden. Einige Dienste stellen das Ergebnis möglicherweise nicht bereit. Für result ist nur einer der folgenden Werte zulässig:
error object (Status)

Das Fehlerergebnis des Vorgangs im Fall eines Fehlers oder Abbruchs.

response object

Die normale, erfolgreiche Antwort des Vorgangs. Wenn die ursprüngliche Methode im Erfolgsfall keine Daten zurückgibt, wie bei Delete, lautet die Antwort google.protobuf.Empty. Ist die ursprüngliche Methode standardmäßig Get/Create/Update, sollte die Antwort die Ressource sein. Bei anderen Methoden sollte die Antwort vom Typ XxxResponse sein, wobei Xxx der Name der ursprünglichen Methode ist. Wenn zum Beispiel der Name der ursprünglichen Methode TakeSnapshot() ist, ist der gefolgerte Antworttyp TakeSnapshotResponse.

Ein Objekt, das Felder eines beliebigen Typs enthält. Ein zusätzliches Feld "@type" enthält einen URI zur Identifizierung des Typs. Beispiel: { "id": 1234, "@type": "types.example.com/standard/id" }

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

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

ChunkingConfig

Parameter, die dem Dienst mitteilen, wie die Datei in Chunks aufgeteilt werden soll. Inspiriert von google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto

Felder
config Union type
Die zu verwendende Chunking-Konfiguration. Für config ist nur einer der folgenden Werte zulässig:
whiteSpaceConfig object (WhiteSpaceConfig)

Konfiguration für die Aufteilung in Blöcke mit Leerraum.

JSON-Darstellung
{

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

WhiteSpaceConfig

Konfiguration für einen Algorithmus zum Aufteilen von Textblöcken in einzelne Wörter [durch Leerzeichen getrennt].

Felder
maxTokensPerChunk integer

Maximale Anzahl von Tokens pro Chunk. Für diesen Chunking-Algorithmus werden Tokens als Wörter definiert. Hinweis: Wir definieren Tokens als Wörter, die durch Leerzeichen getrennt sind, und nicht als Ausgabe eines Tokenizers. Das Kontextfenster des neuesten Gemini-Einbettungsmodells beträgt derzeit 8.192 Tokens (Stand: 17.04.2025). Wir gehen davon aus, dass ein durchschnittliches Wort fünf Zeichen hat. Daher legen wir die Obergrenze auf 2**9 fest, was 512 Wörtern oder 2.560 Tokens entspricht, wobei im schlimmsten Fall ein Zeichen pro Token angenommen wird. Dies ist eine konservative Schätzung, die einen Überlauf des Kontextfensters verhindern soll.

maxOverlapTokens integer

Maximale Anzahl von überlappenden Tokens zwischen zwei benachbarten Blöcken.

JSON-Darstellung
{
  "maxTokensPerChunk": integer,
  "maxOverlapTokens": integer
}

Methode: files.get

Ruft die Metadaten für die angegebene File ab.

Endpunkt

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

Pfadparameter

name string

Erforderlich. Der Name des abzurufenden File. Beispiel: files/abc-123 Sie nimmt die Form files/{file} an.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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

Ok

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)

Muschel

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

Antworttext

Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine Instanz von File.

Methode: files.list

Listet die Metadaten für File auf, die dem anfragenden Projekt gehören.

Endpunkt

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

Abfrageparameter

pageSize integer

Optional. Maximale Anzahl von Files, die pro Seite zurückgegeben werden sollen. Wenn nicht angegeben, wird standardmäßig 10 verwendet. Der Höchstwert für pageSize beträgt 100.

pageToken string

Optional. Ein Seitentoken aus einem vorherigen files.list-Aufruf.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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

Ok

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

Muschel

echo "My files: "

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

Antworttext

Antwort für files.list.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

Felder
files[] object (File)

Die Liste der Files.

nextPageToken string

Ein Token, das als pageToken in einem nachfolgenden files.list-Aufruf gesendet werden kann.

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

Methode: files.delete

Löscht die File.

Endpunkt

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

Pfadparameter

name string

Erforderlich. Der Name der zu löschenden File. Beispiel: files/abc-123 Sie nimmt die Form files/{file} an.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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.

Ok

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

Muschel

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

Antworttext

Wenn der Vorgang erfolgreich abgeschlossen wurde, ist der Antworttext ein leeres JSON-Objekt.

REST-Ressource: files

Ressource: Datei

Eine in die API hochgeladene Datei. Nächste ID: 15

Felder
name string

Nicht veränderbar. ID. Der Name der File-Ressource. Die ID (Name ohne das Präfix „files/“) darf bis zu 40 Zeichen enthalten, die alphanumerisch in Kleinschreibung oder Bindestriche (-) sein dürfen. Die ID darf nicht mit einem Bindestrich beginnen oder enden. Wenn der Name beim Erstellen leer ist, wird ein eindeutiger Name generiert. Beispiel: files/123-456

displayName string

Optional. Der für Menschen lesbare Anzeigename für File. Der Anzeigename darf maximal 512 Zeichen lang sein, einschließlich Leerzeichen. Beispiel: „Welcome Image“

mimeType string

Nur Ausgabe. MIME-Typ der Datei.

sizeBytes string (int64 format)

Nur Ausgabe. Größe der Datei in Byte.

createTime string (Timestamp format)

Nur Ausgabe. Der Zeitstempel für die Erstellung des File.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

Nur Ausgabe. Der Zeitstempel, der angibt, wann File zuletzt aktualisiert wurde.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

expirationTime string (Timestamp format)

Nur Ausgabe. Der Zeitstempel, der angibt, wann die File gelöscht wird. Nur festgelegt, wenn das File ablaufen soll.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

sha256Hash string (bytes format)

Nur Ausgabe. SHA-256-Hash der hochgeladenen Bytes.

Ein base64-codierter String.

uri string

Nur Ausgabe. Der URI der File.

downloadUri string

Nur Ausgabe. Der Download-URI der File.

state enum (State)

Nur Ausgabe. Verarbeitungsstatus der Datei.

source enum (Source)

Quelle der Datei.

error object (Status)

Nur Ausgabe. Fehlerstatus, wenn die Dateiverarbeitung fehlgeschlagen ist.

metadata Union type
Metadaten für die Datei. Für metadata ist nur einer der folgenden Werte zulässig:
videoMetadata object (VideoFileMetadata)

Nur Ausgabe. Metadaten für ein Video.

JSON-Darstellung
{
  "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

Metadaten für ein Video File

Felder
videoDuration string (Duration format)

Dauer des Videos.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

JSON-Darstellung
{
  "videoDuration": string
}

Bundesland

Zustände für den Lebenszyklus einer Datei.

Enums
STATE_UNSPECIFIED Der Standardwert. Dieser Wert wird verwendet, wenn der Bundesstaat weggelassen wird.
PROCESSING Die Datei wird gerade verarbeitet und kann noch nicht für die Inferenz verwendet werden.
ACTIVE Die Datei wurde verarbeitet und ist für die Inferenz verfügbar.
FAILED Die Verarbeitung der Datei ist fehlgeschlagen.

Quelle

Enums
SOURCE_UNSPECIFIED Wird verwendet, wenn keine Quelle angegeben ist.
UPLOADED Gibt an, dass die Datei vom Nutzer hochgeladen wurde.
GENERATED Gibt an, dass die Datei von Google generiert wurde.
REGISTERED Gibt an, dass die Datei registriert ist, d.h. eine Google Cloud Storage-Datei ist.

Status

Mit dem Typ Status wird ein logisches Fehlermodell definiert, das für verschiedene Programmierumgebungen wie REST APIs und RPC APIs geeignet ist. Dieses Modell wird von gRPC verwendet. Jede Status-Meldung enthält die folgenden drei Datenelemente: Fehlercode, Fehlermeldung und Fehlerdetails.

Weitere Informationen zu diesem Fehlermodell und zur Arbeit damit finden Sie in der API-Designanleitung.

Felder
code integer

Der Statuscode, der idealerweise ein ENUM-Wert von google.rpc.Code ist.

message string

Eine an Entwickler gerichtete Fehlermeldung, die englischsprachig sein sollte. Jede Fehlermeldung an den Nutzer sollte lokalisiert und im Feld google.rpc.Status.details gesendet werden. Sie kann auch clientseitig lokalisiert werden.

details[] object

Eine Auflistung aller Meldungen, die die Fehlerdetails enthalten. Es gibt einen gemeinsamen Satz von Nachrichtentypen, die APIs verwenden können.

Ein Objekt, das Felder eines beliebigen Typs enthält. Ein zusätzliches Feld "@type" enthält einen URI zur Identifizierung des Typs. Beispiel: { "id": 1234, "@type": "types.example.com/standard/id" }

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