Using files

Methode: media.upload

Erstellt einen File.

Endpunkt

<ph type="x-smartling-placeholder"></ph> Upload-URI, für Anfragen zum Hochladen von Medien:
`post
https://generativelanguage.googleapis.com/upload/v1beta/files

  • Metadaten-URI für Anfragen, die nur Metadaten enthalten:
    POST https://generativelanguage.googleapis.com/v1beta/filesDie URL verwendet die Syntax der gRPC-Transcodierung.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

<ph type="x-smartling-placeholder">
</ph> Felder
file object (File)

Optional. Metadaten für die zu erstellende Datei.

Beispielanfrage

Bild

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

Text

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

Antworttext

Antwort für media.upload.

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

Felder
file object (File)

Metadaten für die erstellte Datei.

JSON-Darstellung
{
  "file": {
    object (File)
  }
}

Methode: files.get

Ruft die Metadaten für die angegebene File ab.

Endpunkt

<ph type="x-smartling-placeholder"></ph> erhalten https://generativelanguage.googleapis.com/v1beta/{name=files/*}
.

Pfadparameter

name string

Erforderlich. Der Name des abzurufenden File. Beispiel: files/abc-123. Sie hat das Format files/{file}.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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

Antworttext

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

Methode: files.list

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

Endpunkt

<ph type="x-smartling-placeholder"></ph> erhalten https://generativelanguage.googleapis.com/v1beta/files
.

Abfrageparameter

pageSize integer

Optional. Maximale Anzahl von Files, die pro Seite zurückgegeben werden sollen. Wenn keine Vorgabe erfolgt, wird standardmäßig 10 verwendet. Der Höchstwert für pageSize ist 100.

pageToken string

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

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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

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 an einen nachfolgenden files.list-Aufruf gesendet werden kann.

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

Methode: files.delete

Löscht File.

Endpunkt

<ph type="x-smartling-placeholder"></ph> Löschen https://generativelanguage.googleapis.com/v1beta/{name=files/*}
.

Pfadparameter

name string

Erforderlich. Der Name der zu löschenden File. Beispiel: files/abc-123. Sie hat das Format files/{file}.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

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

Antworttext

Wenn der Vorgang erfolgreich ist, ist der Antworttext leer.

REST-Ressource: files

Ressource: Datei

Eine in die API hochgeladene Datei.

JSON-Darstellung
{
  "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.
}
Felder
name string

Nicht veränderbar. Kennung. Der Ressourcenname File. Die ID (Name ohne das Präfix „files/“) kann bis zu 40 Zeichen enthalten: kleingeschriebene alphanumerische Zeichen oder Bindestriche (-). 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 visuell lesbare Anzeigename für die File. Der Anzeigename darf höchstens 512 Zeichen (einschließlich Leerzeichen) lang sein. Beispiel: „Willkommensbild“

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.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Nur Ausgabe. Der Zeitstempel der letzten Aktualisierung von File.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

expirationTime string (Timestamp format)

Nur Ausgabe. Der Zeitstempel für das Löschen der File. Wird nur festgelegt, wenn das File abläuft.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

sha256Hash string (bytes format)

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

Ein base64-codierter String.

uri string

Nur Ausgabe. Der URI von File.

state enum (State)

Nur Ausgabe. Verarbeitungsstatus der Datei.

error object (Status)

Nur Ausgabe. Fehlerstatus, wenn die Dateiverarbeitung fehlgeschlagen ist.

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

Nur Ausgabe. Metadaten für ein Video.

VideoMetadata

Metadaten für ein Video File.

JSON-Darstellung
{
  "videoDuration": string
}
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".

Status

Status für den Lebenszyklus einer Datei.

Enums
STATE_UNSPECIFIED Der Standardwert. Dieser Wert wird verwendet, wenn der Status weggelassen wird.
PROCESSING Die Datei wird verarbeitet und kann noch nicht für die Inferenz verwendet werden.
ACTIVE Die Datei wird verarbeitet und steht für die Inferenz zur Verfügung.
FAILED Die Verarbeitung der Datei ist fehlgeschlagen.

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.

JSON-Darstellung
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
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" }.