Using files

Méthode: media.upload

Crée un objet File.

Point de terminaison

<ph type="x-smartling-placeholder"></ph> URI d'importation, pour les requêtes d'importation de médias:
post
https://generativelanguage.googleapis.com/upload/v1beta/files

  • URI de métadonnées, pour les requêtes ne contenant que des métadonnées:
    POST https://generativelanguage.googleapis.com/v1beta/filesL'URL utilise la syntaxe de transcodage gRPC.

Corps de la requête

Le corps de la requête contient des données présentant la structure suivante :

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

Facultatif. Métadonnées du fichier à créer.

Exemple de requête

Image

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

Texte

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

Vidéo

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

Corps de la réponse

Réponse pour media.upload.

Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :

Champs
file object (File)

Métadonnées du fichier créé.

Représentation JSON
{
  "file": {
    object (File)
  }
}

Méthode: files.get

Récupère les métadonnées pour le File donné.

Point de terminaison

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

Paramètres de chemin d'accès

name string

Obligatoire. Nom du File à obtenir. Exemple: files/abc-123. Il se présente sous la forme files/{file}.

Corps de la requête

Le corps de la requête doit être vide.

Exemple de requête

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

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient une instance de File.

Méthode: files.list

Répertorie les métadonnées des File appartenant au projet demandeur.

Point de terminaison

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

Paramètres de requête

pageSize integer

Facultatif. Nombre maximal de Files à renvoyer par page. Si aucune valeur n'est spécifiée, la valeur par défaut est 10. La valeur maximale de pageSize est de 100.

pageToken string

Facultatif. Jeton de page d'un appel files.list précédent.

Corps de la requête

Le corps de la requête doit être vide.

Exemple de requête

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

Corps de la réponse

Réponse pour files.list.

Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :

Champs
files[] object (File)

Liste des objets File.

nextPageToken string

Jeton pouvant être envoyé en tant que pageToken dans un appel files.list ultérieur.

Représentation JSON
{
  "files": [
    {
      object (File)
    }
  ],
  "nextPageToken": string
}

Méthode: files.delete

Supprime File.

Point de terminaison

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

Paramètres de chemin d'accès

name string

Obligatoire. Nom du File à supprimer. Exemple: files/abc-123. Il se présente sous la forme files/{file}.

Corps de la requête

Le corps de la requête doit être vide.

Exemple de requête

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

Corps de la réponse

Si la requête aboutit, le corps de la réponse est vide.

Ressource REST : fichiers

Ressource: Fichier

Fichier importé dans l'API.

Représentation 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.
}
Champs
name string

Immuable. Identifiant. Nom de ressource File. L'ID (nom sans le préfixe "files/") peut contenir jusqu'à 40 caractères alphanumériques minuscules ou tirets (-). L'ID ne peut pas commencer ni se terminer par un tiret. Si le nom est vide lors de la création, un nom unique est généré. Exemple : files/123-456

displayName string

Facultatif. Nom lisible à afficher pour File. Le nom à afficher ne doit pas dépasser 512 caractères, espaces compris. Exemple : "Image de bienvenue"

mimeType string

Uniquement en sortie. Type MIME du fichier.

sizeBytes string (int64 format)

Uniquement en sortie. Taille du fichier en octets.

createTime string (Timestamp format)

Uniquement en sortie. Horodatage de la création de l'élément File.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Uniquement en sortie. Horodatage de la dernière mise à jour de l'élément File.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

expirationTime string (Timestamp format)

Uniquement en sortie. Horodatage de la suppression de l'élément File. Défini uniquement si l'élément File doit expirer.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

sha256Hash string (bytes format)

Uniquement en sortie. Hachage SHA-256 des octets importés.

Chaîne encodée en base64.

uri string

Uniquement en sortie. URI de File.

state enum (State)

Uniquement en sortie. État de traitement du fichier.

error object (Status)

Uniquement en sortie. État de l'erreur en cas d'échec du traitement du fichier.

Champ d'union metadata. Métadonnées pour le fichier. metadata ne peut être qu'un des éléments suivants :
videoMetadata object (VideoMetadata)

Uniquement en sortie. Métadonnées d'une vidéo.

VideoMetadata

Métadonnées pour une vidéo File.

Représentation JSON
{
  "videoDuration": string
}
Champs
videoDuration string (Duration format)

Durée de la vidéo.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

État

États pour le cycle de vie d'un fichier

Enums
STATE_UNSPECIFIED Valeur par défaut. Cette valeur est utilisée si l'État est omis.
PROCESSING Le fichier est en cours de traitement et ne peut pas encore être utilisé pour l'inférence.
ACTIVE Le fichier est traité et disponible pour l'inférence.
FAILED Échec du traitement du fichier.

État

Le type Status définit un modèle d'erreur logique adapté aux différents environnements de programmation, y compris les API REST et RPC. Il est utilisé par le protocole gRPC. Chaque message Status contient trois éléments de données : un code d'erreur, un message d'erreur et les détails de l'erreur.

Pour en savoir plus sur ce modèle d'erreur et sur son utilisation, consultez le Guide de conception d'API.

Représentation JSON
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Champs
code integer

Code d'état, qui doit être une valeur d'énumération de google.rpc.Code.

message string

Message d'erreur destiné au développeur, qui doit être en anglais. Tout message d'erreur destiné aux utilisateurs doit être localisé et envoyé dans le champ google.rpc.Status.details, ou localisé par le client.

details[] object

Liste de messages comportant les détails de l'erreur. Il existe un ensemble commun de types de message utilisable par les API.

Objet contenant des champs d'un type arbitraire. Un champ supplémentaire "@type" contient un URI identifiant le type. Exemple : { "id": 1234, "@type": "types.example.com/standard/id" }.