Using files

Metoda: media.upload

Tworzy File.

Punkt końcowy

prześlij identyfikator URI dla żądań przesłania multimediów:
`post
https://generativelanguage.googleapis.com/upload/v1beta/files
.
  • Identyfikator URI metadanych w przypadku żądań tylko metadanych:
    POST https://generativelanguage.googleapis.com/v1beta/filesAdres URL używa składni transkodowania gRPC.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Pola
file object (File)

Opcjonalnie: Metadane pliku do utworzenia.

Przykładowe żądanie

Obraz

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

Tekst

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

Wideo

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

Treść odpowiedzi

Odpowiedź na pytanie „media.upload”.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Pola
file object (File)

Metadane utworzonego pliku.

Zapis JSON
{
  "file": {
    object (File)
  }
}

Metoda: files.get

Pobiera metadane dotyczące określonego zasobu (File).

Punkt końcowy

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

Parametry ścieżki

name string

Wymagane. Nazwa elementu File do pobrania. Przykład: files/abc-123 przybiera postać files/{file}.

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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

Treść odpowiedzi

W przypadku powodzenia treść odpowiedzi obejmuje wystąpienie elementu File.

Metoda: files.list

Zawiera listę metadanych elementów File należących do projektu, który wysłał żądanie.

Punkt końcowy

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

Parametry zapytania

pageSize integer

Opcjonalnie: Maksymalna liczba wartości File do zwrócenia na stronę. Jeśli nie określono inaczej, domyślna wartość to 10. Maksymalnie pageSize to 100.

pageToken string

Opcjonalnie: Token strony z poprzedniego wywołania funkcji files.list.

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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

Treść odpowiedzi

Odpowiedź na pytanie „files.list”.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Pola
files[] object (File)

Lista elementów typu File.

nextPageToken string

Token, który można wysłać jako pageToken w kolejnym wywołaniu files.list.

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

Metoda: files.delete

Usuwa File.

Punkt końcowy

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

Parametry ścieżki

name string

Wymagane. Nazwa elementu File do usunięcia. Przykład: files/abc-123 przybiera postać files/{file}.

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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

Treść odpowiedzi

Jeśli operacja się uda, treść odpowiedzi będzie pusta.

Zasób REST: files

Zasób: Plik

Plik przesłany do interfejsu API.

Zapis 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.
}
Pola
name string

Stała. Identyfikator. Nazwa zasobu File. Identyfikator (nazwa bez prefiksu „files/”) może zawierać do 40 znaków w postaci małych liter i łączników (-). Identyfikator nie może zaczynać się ani kończyć łącznikiem. Jeśli podczas tworzenia nazwa będzie pusta, zostanie wygenerowana unikalna nazwa. Przykład: files/123-456

displayName string

Opcjonalnie: Zrozumiała dla człowieka wyświetlana nazwa elementu File. Wyświetlana nazwa może mieć maksymalnie 512 znaków łącznie ze spacjami. Przykład: „Obraz powitalny”

mimeType string

Tylko dane wyjściowe. Typ MIME pliku.

sizeBytes string (int64 format)

Tylko dane wyjściowe. Rozmiar pliku w bajtach.

createTime string (Timestamp format)

Tylko dane wyjściowe. Sygnatura czasowa określająca, kiedy obiekt File został utworzony.

Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Tylko dane wyjściowe. Sygnatura czasowa ostatniej aktualizacji elementu File.

Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

expirationTime string (Timestamp format)

Tylko dane wyjściowe. Sygnatura czasowa określająca, kiedy File zostanie usunięty. Ustaw tylko wtedy, gdy okres ważności subskrypcji File jest zaplanowany.

Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

sha256Hash string (bytes format)

Tylko dane wyjściowe. Skrót SHA-256 przesłanych bajtów.

Ciąg zakodowany w formacie base64.

uri string

Tylko dane wyjściowe. Identyfikator URI File.

state enum (State)

Tylko dane wyjściowe. Stan przetwarzania pliku.

error object (Status)

Tylko dane wyjściowe. Stan błędu, jeśli nie udało się przetworzyć pliku.

Pole sumy metadata. Metadane pliku. metadata może mieć tylko jedną z tych wartości:
videoMetadata object (VideoMetadata)

Tylko dane wyjściowe. Metadane filmu

VideoMetadata

Metadane filmu File.

Zapis JSON
{
  "videoDuration": string
}
Pola
videoDuration string (Duration format)

Czas trwania filmu.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku i kończący się „s”. Przykład: "3.5s".

Stan

Stany cyklu życia pliku.

Wartości w polu enum
STATE_UNSPECIFIED Wartość domyślna. Ta wartość jest używana w przypadku pominięcia stanu.
PROCESSING Plik jest przetwarzany i nie można jeszcze używać go do wnioskowania.
ACTIVE Plik został przetworzony i można go wnioskować.
FAILED Nie udało się przetworzyć pliku.

Stan

Typ Status określa logiczny model błędów odpowiedni dla różnych środowisk programowania, w tym interfejsów API typu REST i RPC. Jest używany przez gRPC. Każdy komunikat Status zawiera 3 elementy danych: kod błędu, komunikat o błędzie i szczegóły błędu.

Więcej informacji na temat tego modelu błędów i sposobu jego działania znajdziesz w przewodniku API Design Guide (w języku angielskim).

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

Kod stanu, który powinien być wartością wyliczeniową równą google.rpc.Code.

message string

komunikat o błędzie widoczny dla dewelopera. Powinien być w języku angielskim; Każdy komunikat o błędzie widoczny dla użytkowników powinien zostać zlokalizowany i wysłany w polu google.rpc.Status.details lub zlokalizowany przez klienta.

details[] object

Lista komunikatów ze szczegółami błędu. Istnieje typowy zestaw typów wiadomości, których mogą używać interfejsy API.

Obiekt zawierający pola dowolnego typu. Dodatkowe pole "@type" zawiera identyfikator URI identyfikujący typ. Przykład: { "id": 1234, "@type": "types.example.com/standard/id" }.