Using files

Interfejs Gemini API obsługuje przesyłanie plików multimedialnych oddzielnie od danych wejściowych prompta, co umożliwia ponowne wykorzystanie multimediów w wielu żądaniach i promptach. Więcej informacji znajdziesz w przewodniku Promptowanie z użyciem multimediów.

Metoda: media.upload

Przesyła dane do ragStore, wstępnie je przetwarza i dzieli na fragmenty przed zapisaniem w dokumencie RagStore.

Punkt końcowy

  • Identyfikator URI przesyłania w przypadku żądań przesyłania multimediów:
post https://generativelanguage.googleapis.com/upload/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore
  • Identyfikator URI metadanych w przypadku żądań dotyczących tylko metadanych:
post https://generativelanguage.googleapis.com/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore

Parametry ścieżki

ragStoreName string

Wymagane. Niezmienne. Nazwa RagStore, do której chcesz przesłać plik. Przykład: ragStores/my-rag-store-123 Przyjmuje postać ragStores/{ragstore}.

Treść żądania

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

Pola
displayName string

Opcjonalnie: Wyświetlana nazwa utworzonego dokumentu.

customMetadata[] object (CustomMetadata)

Niestandardowe metadane, które mają być powiązane z danymi.

chunkingConfig object (ChunkingConfig)

Opcjonalnie: Konfiguracja określająca, jak usługa ma dzielić dane na części. Jeśli nie zostaną podane, usługa użyje parametrów domyślnych.

mimeType string

Opcjonalnie: Typ MIME danych. Jeśli nie podasz tej wartości, zostanie ona wywnioskowana na podstawie przesłanych treści.

Treść odpowiedzi

Jest to kopia google.longrunning.Operation. Musimy go skopiować, ponieważ do interakcji z usługą Scotty musimy dodać pole specyficzne dla tej usługi, którego nie można dodać w protokole Operation najwyższego poziomu.

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

Pola
name string

Nazwa przypisana przez serwer, która jest unikalna tylko w ramach tej samej usługi, która ją pierwotnie zwraca. Jeśli używasz domyślnego mapowania HTTP, name powinna być nazwą zasobu kończącą się na operations/{unique_id}.

metadata object

Metadane specyficzne dla usługi powiązane z operacją. Zwykle zawiera informacje o postępach i typowe metadane, takie jak czas utworzenia. Niektóre usługi mogą nie udostępniać takich metadanych. Każda metoda, która zwraca operację długotrwałą, powinna zawierać dokumentację typu metadanych (jeśli występuje).

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

done boolean

Jeśli wartość to false, oznacza to, że operacja jest w toku. Jeśli true, operacja została ukończona i dostępne są wartości error lub response.

result Union type
Wynik operacji, który może być wartością error lub prawidłową wartością response. Jeśli done == false, nie ustawiono ani error, ani response. Jeśli done == true, można ustawić tylko jedną z wartości error lub response. Niektóre usługi mogą nie zwracać wyniku. result może mieć tylko jedną z tych wartości:
error object (Status)

Wynik błędu operacji w przypadku niepowodzenia lub anulowania.

response object

Normalna odpowiedź operacji w przypadku powodzenia. Jeśli oryginalna metoda nie zwraca danych w przypadku powodzenia, np. Delete, odpowiedź to google.protobuf.Empty. Jeśli oryginalna metoda to standardowa metoda Get/Create/Update, odpowiedź powinna być zasobem. W przypadku innych metod odpowiedź powinna mieć typ XxxResponse, gdzie Xxx to oryginalna nazwa metody. Jeśli np. oryginalna nazwa metody to TakeSnapshot(), wywnioskowany typ odpowiedzi to TakeSnapshotResponse.

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

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

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

ChunkingConfig

Parametry określające, jak usługa ma dzielić plik na części. Zainspirowane przez google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto

Pola
config Union type
Konfiguracja dzielenia na części, której chcesz użyć. Pole config może mieć tylko jedną z tych wartości:
whiteSpaceConfig object (WhiteSpaceConfig)

Konfiguracja dzielenia na części zawierające białe znaki.

Zapis JSON
{

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

WhiteSpaceConfig

Konfiguracja algorytmu dzielenia na fragmenty na podstawie białych znaków [rozdzielone białymi znakami].

Pola
maxTokensPerChunk integer

Maksymalna liczba tokenów w bloku. W przypadku tego algorytmu dzielenia na części tokeny są definiowane jako słowa. Uwaga: tokeny definiujemy jako słowa rozdzielone białymi znakami, a nie jako wynik działania tokenizatora. Okno kontekstu najnowszego modelu osadzania Gemini z 17 kwietnia 2025 r. ma obecnie 8192 tokeny. Zakładamy, że średnia długość słowa to 5 znaków. Dlatego ustawiliśmy górny limit na 2**9, czyli 512 słów lub 2560 tokenów, zakładając w najgorszym przypadku 1 znak na token. Jest to ostrożne oszacowanie, które ma zapobiec przepełnieniu okna kontekstu.

maxOverlapTokens integer

Maksymalna liczba nakładających się tokenów między 2 sąsiednimi fragmentami.

Zapis JSON
{
  "maxTokensPerChunk": integer,
  "maxOverlapTokens": integer
}

Metoda: files.get

Pobiera metadane dla podanego File.

Punkt końcowy

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

Parametry ścieżki

name string

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

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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

Przeczytaj

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)

Muszla

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

Treść odpowiedzi

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

Metoda: files.list

Wyświetla metadane File należących do projektu, który wysłał żądanie.

Punkt końcowy

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

Parametry zapytania

pageSize integer

Opcjonalnie: Maksymalna liczba File do zwrócenia na stronie. Jeśli nie określisz tu żadnej wartości, zostanie użyte ustawienie domyślne (10). Maksymalna wartość pageSize to 100.

pageToken string

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

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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

Przeczytaj

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

Muszla

echo "My files: "

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

Treść odpowiedzi

Odpowiedź dla files.list.

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

Pola
files[] object (File)

Lista 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

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

Parametry ścieżki

name string

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

Treść żądania

Treść żądania musi być pusta.

Przykładowe żądanie

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.

Przeczytaj

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

Muszla

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

Treść odpowiedzi

Jeśli operacja się uda, treść odpowiedzi będzie pustym obiektem JSON.

Zasób REST: files

Zasób: File

Plik przesłany do interfejsu API. Następny identyfikator: 15

Pola
name string

Niezmienne. Identyfikator. Nazwa zasobu File. Identyfikator (nazwa bez prefiksu „files/”) może zawierać maksymalnie 40 znaków, które są małymi literami, cyframi lub myślnikami (-). Identyfikator nie może zaczynać się ani kończyć myślnikiem. Jeśli podczas tworzenia nazwa jest pusta, zostanie wygenerowana unikalna nazwa. Przykład: files/123-456

displayName string

Opcjonalnie: Czytelna nazwa wyświetlana dla File. Wyświetlana nazwa nie może mieć więcej niż 512 znaków, w tym spacji. 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 utworzenia File.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

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

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

expirationTime string (Timestamp format)

Tylko dane wyjściowe. Sygnatura czasowa usunięcia File. Ustawiane tylko wtedy, gdy File ma wygasnąć.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

sha256Hash string (bytes format)

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

Ciąg znaków zakodowany w formacie Base64.

uri string

Tylko dane wyjściowe. Identyfikator URI elementu File.

downloadUri string

Tylko dane wyjściowe. Identyfikator URI pobierania pliku File.

state enum (State)

Tylko dane wyjściowe. Stan przetwarzania pliku.

source enum (Source)

Źródło pliku.

error object (Status)

Tylko dane wyjściowe. Stan błędu, jeśli przetwarzanie pliku nie powiodło się.

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

Tylko dane wyjściowe. Metadane filmu.

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

Metadane filmu File.

Pola
videoDuration string (Duration format)

Czas trwania filmu.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „s”. Przykład: "3.5s".

Zapis JSON
{
  "videoDuration": string
}

Stan

Stany cyklu życia pliku.

Wartości w polu enum
STATE_UNSPECIFIED Wartość domyślna. Ta wartość jest używana, jeśli stan jest pominięty.
PROCESSING Plik jest przetwarzany i nie można go jeszcze użyć do wnioskowania.
ACTIVE Plik jest przetwarzany i dostępny do wnioskowania.
FAILED Nie udało się przetworzyć pliku.

Źródło

Wartości w polu enum
SOURCE_UNSPECIFIED Używane, jeśli nie określono źródła.
UPLOADED Wskazuje, że plik został przesłany przez użytkownika.
GENERATED Oznacza, że plik został wygenerowany przez Google.
REGISTERED Wskazuje, że plik jest zarejestrowany, czyli jest to plik Google Cloud Storage.

Stan

Typ Status definiuje model błędu logicznego, który jest odpowiedni dla różnych środowisk programistycznych, w tym interfejsów API typu REST i RPC. Jest używany przez gRPC. Każdy komunikat Status zawiera 3 rodzaje danych: kod błędu, komunikat o błędzie i szczegóły błędu.

Więcej informacji o tym modelu błędów i sposobie pracy z nim znajdziesz w przewodniku API Design Guide.

Pola
code integer

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

message string

Komunikat o błędzie widoczny dla programisty, który powinien być w języku angielskim. Wszelkie komunikaty o błędach dla użytkowników powinny być zlokalizowane i wysyłane w polu google.rpc.Status.details lub zlokalizowane przez klienta.

details[] object

Lista wiadomości zawierających szczegóły błędu. Na potrzeby interfejsów API dostępny jest wspólny zestaw typów wiadomości.

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

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