Caching

Mit dem Kontext-Caching können Sie vorab berechnete Eingabetokens speichern und wiederverwenden, die Sie wiederholt verwenden möchten, z. B. wenn Sie verschiedene Fragen zu derselben Mediendatei stellen. Je nach Nutzung kann dies zu Kosten- und Geschwindigkeitseinsparungen führen. Eine ausführliche Einführung finden Sie in der Anleitung zum Kontext-Caching.

Methode: cachedContents.create

Erstellt die Ressource „CachedContent“.

Endpunkt

post https://generativelanguage.googleapis.com/v1beta/cachedContents

Anfragetext

Der Anfragetext enthält eine Instanz von CachedContent.

Felder
contents[] object (Content)

Optional. Nur Eingabe. Nicht veränderbar. Die zu cachenden Inhalte.

tools[] object (Tool)

Optional. Nur Eingabe. Nicht veränderbar. Eine Liste von Tools, die das Modell zum Generieren der nächsten Antwort verwenden kann

Union-Feld expiration. Gibt an, wann diese Ressource abläuft. Für expiration ist nur einer der folgenden Werte zulässig:
expireTime string (Timestamp format)

Der Zeitstempel in UTC, der angibt, wann diese Ressource als abgelaufen gilt. Dies wird immer bei der Ausgabe angegeben, unabhängig davon, was bei der Eingabe gesendet wurde.

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

ttl string (Duration format)

Nur Eingabe. Neue TTL für diese Ressource, nur Eingabe.

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

name string

Optional. Kennung. Der Ressourcenname, der sich auf die im Cache gespeicherten Inhalte bezieht. Format: cachedContents/{id}

displayName string

Optional. Nicht veränderbar. Der vom Nutzer erstellte aussagekräftige Anzeigename der im Cache gespeicherten Inhalte. Maximal 128 Unicode-Zeichen.

model string

Erforderlich. Nicht veränderbar. Der Name der Model, die für im Cache gespeicherte Inhalte verwendet werden soll. Format: models/{model}

systemInstruction object (Content)

Optional. Nur Eingabe. Nicht veränderbar. Vom Entwickler festgelegte Systemanweisung. Derzeit nur Text.

toolConfig object (ToolConfig)

Optional. Nur Eingabe. Nicht veränderbar. Toolkonfiguration Diese Konfiguration wird für alle Tools verwendet.

Beispielanfrage

Einfach

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(cache)

model = genai.GenerativeModel.from_cached_content(cache)
response = model.generate_content("Please summarize this transcript")
print(response.text)

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});

console.log(cacheResult);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(cacheResult);
const result = await model.generateContent(
  "Please summarize this transcript.",
);
console.log(result.response.text());

Ok

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
prompt := "Please summarize this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Muschel

wget https://storage.googleapis.com/generativeai-downloads/data/a11.txt
echo '{
  "model": "models/gemini-1.5-flash-001",
  "contents":[
    {
      "parts":[
        {
          "inline_data": {
            "mime_type":"text/plain",
            "data": "'$(base64 $B64FLAGS a11.txt)'"
          }
        }
      ],
    "role": "user"
    }
  ],
  "systemInstruction": {
    "parts": [
      {
        "text": "You are an expert at analyzing transcripts."
      }
    ]
  },
  "ttl": "300s"
}' > request.json

curl -X POST "https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$GOOGLE_API_KEY" \
 -H 'Content-Type: application/json' \
 -d @request.json \
 > cache.json

CACHE_NAME=$(cat cache.json | grep '"name":' | cut -d '"' -f 4 | head -n 1)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-001:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

Von (Name)

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache_name = cache.name  # Save the name for later

# Later
cache = genai.caching.CachedContent.get(cache_name)
apollo_model = genai.GenerativeModel.from_cached_content(cache)
response = apollo_model.generate_content("Find a lighthearted moment from this transcript")
print(response.text)

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheName = cacheResult.name; // Save the name for later.

// Later
const getCacheResult = await cacheManager.get(cacheName);
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(getCacheResult);
model.generateContent("Please summarize this transcript.");

Ok

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Über Google Chat

Python

import google.generativeai as genai

model_name = "gemini-1.5-flash-001"
system_instruction = "You are an expert analyzing transcripts."

model = genai.GenerativeModel(model_name=model_name, system_instruction=system_instruction)
chat = model.start_chat()
document = genai.upload_file(path=media / "a11.txt")
response = chat.send_message(["Hi, could you summarize this transcript?", document])
print("\n\nmodel:  ", response.text)
response = chat.send_message(
    ["Okay, could you tell me more about the trans-lunar injection"]
)
print("\n\nmodel:  ", response.text)

# To cache the conversation so far, pass the chat history as the list of "contents".
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction=system_instruction,
    contents=chat.history,
)
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Continue the chat where you left off.
chat = model.start_chat()
response = chat.send_message(
    "I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash-001" });
const chat = model.startChat();

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

let result = await chat.sendMessage([
  "Hi, could you summarize this transcript?",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(`\n\nmodel: ${result.response.text()}`);
result = await chat.sendMessage(
  "Okay, could you tell me more about the trans-lunar injection",
);
console.log(`\n\nmodel: ${result.response.text()}`);

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: await chat.getHistory(),
});

const newModel = genAI.getGenerativeModelFromCachedContent(cacheResult);

const newChat = newModel.startChat();
result = await newChat.sendMessage(
  "I didn't understand that last part, could you explain it in simpler language?",
);
console.log(`\n\nmodel: ${result.response.text()}`);

Ok

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

modelName := "gemini-1.5-flash-001"
model := client.GenerativeModel(modelName)
model.SystemInstruction = genai.NewUserContent(genai.Text("You are an expert analyzing transcripts."))

cs := model.StartChat()
resp, err := cs.SendMessage(ctx, genai.Text("Hi, could you summarize this transcript?"), fd)
if err != nil {
	log.Fatal(err)
}

resp, err = cs.SendMessage(ctx, genai.Text("Okay, could you tell me more about the trans-lunar injection"))
if err != nil {
	log.Fatal(err)
}

// To cache the conversation so far, pass the chat history as the list of
// contents.

argcc := &genai.CachedContent{
	Model:             modelName,
	SystemInstruction: model.SystemInstruction,
	Contents:          cs.History,
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
cs = modelWithCache.StartChat()
resp, err = cs.SendMessage(ctx, genai.Text("I didn't understand that last part, could you please explain it in simpler language?"))
if err != nil {
	log.Fatal(err)
}
printResponse(resp)

Antworttext

Bei Erfolg enthält der Antworttext eine neu erstellte Instanz von CachedContent.

Methode: cacheContents.list

Listet CachedContents auf.

Endpunkt

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

Abfrageparameter

pageSize integer

Optional. Die maximale Anzahl der im Cache gespeicherten Inhalte, die zurückgegeben werden sollen. Der Dienst gibt möglicherweise weniger als diesen Wert zurück. Wenn nicht angegeben, wird eine Standardanzahl von Elementen (unter der maximalen Anzahl) zurückgegeben. Der Höchstwert beträgt 1.000. Werte über 1.000 werden implizit auf 1.000 umgewandelt.

pageToken string

Optional. Ein Seitentoken, das von einem vorherigen cachedContents.list-Aufruf empfangen wurde. Geben Sie diese an, um die nachfolgende Seite abzurufen.

Beim Paginieren müssen alle anderen für cachedContents.list bereitgestellten Parameter mit dem Aufruf übereinstimmen, der das Seitentoken bereitgestellt hat.

Anfragetext

Der Anfragetext muss leer sein.

Antworttext

Antwort mit Liste der CachedContents

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

Felder
cachedContents[] object (CachedContent)

Liste der im Cache gespeicherten Inhalte.

nextPageToken string

Ein Token, das als pageToken gesendet werden kann, um die nächste Seite abzurufen. Wenn dieses Feld weggelassen wird, gibt es keine nachfolgenden Seiten.

JSON-Darstellung
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Methode: cacheContents.get

Liest die CachedContent-Ressource.

Endpunkt

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

Pfadparameter

name string

Erforderlich. Der Ressourcenname, der sich auf den Inhaltscache-Eintrag bezieht. Format: cachedContents/{id}. Sie hat das Format cachedContents/{cachedcontent}.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(genai.caching.CachedContent.get(name=cache.name))

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheGetResult = await cacheManager.get(cacheResult.name);
console.log(cacheGetResult);

Ok

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Muschel

curl "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY"

Antworttext

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

Methode: cacheContents.patch

Aktualisiert die CachedContent-Ressource (nur die Ablaufzeit kann aktualisiert werden).

Endpunkt

patch https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

Pfadparameter

cachedContent.name string

Optional. Kennung. Der Ressourcenname, der sich auf die im Cache gespeicherten Inhalte bezieht. Format: cachedContents/{id}. Sie hat das Format cachedContents/{cachedcontent}.

Abfrageparameter

updateMask string (FieldMask format)

Die Liste der zu aktualisierenden Felder.

Dies ist eine durch Kommas getrennte Liste vollständig qualifizierter Feldnamen. Beispiel: "user.displayName,photo".

Anfragetext

Der Anfragetext enthält eine Instanz von CachedContent.

Felder
Union-Feld expiration. Gibt an, wann diese Ressource abläuft. Für expiration ist nur einer der folgenden Werte zulässig:
expireTime string (Timestamp format)

Der Zeitstempel in UTC, der angibt, wann diese Ressource als abgelaufen gilt. Dies wird immer bei der Ausgabe angegeben, unabhängig davon, was bei der Eingabe gesendet wurde.

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

ttl string (Duration format)

Nur Eingabe. Neue TTL für diese Ressource, nur Eingabe.

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

name string

Optional. Kennung. Der Ressourcenname, der sich auf die im Cache gespeicherten Inhalte bezieht. Format: cachedContents/{id}

Beispielanfrage

Python

import google.generativeai as genai

import datetime

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)

# You can update the ttl
cache.update(ttl=datetime.timedelta(hours=2))
print(f"After update:\n {cache}")

# Or you can update the expire_time
cache.update(expire_time=datetime.datetime.now() + datetime.timedelta(minutes=15))

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
console.log("initial cache data:", cacheResult);
const cacheUpdateResult = await cacheManager.update(cacheResult.name, {
  cachedContent: {
    // 2 hours
    ttlSeconds: 60 * 60 * 2,
  },
});
console.log("updated cache data:", cacheUpdateResult);

Ok

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Muschel

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY" \
 -H 'Content-Type: application/json' \
 -d '{"ttl": "600s"}'

Antworttext

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

Methode: cachedContents.delete

Löscht die Ressource „CachedContent“.

Endpunkt

Löschen https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

Pfadparameter

name string

Erforderlich. Der Ressourcenname, der sich auf den Inhaltscache-Eintrag bezieht. Format: cachedContents/{id}. Muss das Format cachedContents/{cachedcontent} haben.

Anfragetext

Der Anfragetext muss leer sein.

Beispielanfrage

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache.delete()

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
await cacheManager.delete(cacheResult.name);

Ok

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Muschel

curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY"

Antworttext

Wenn der Vorgang erfolgreich ist, ist der Antworttext leer.

REST-Ressource: cachedContents

Ressource: CachedContent

Inhalte, die vorverarbeitet wurden und in einer nachfolgenden Anfrage an den GenerativeService verwendet werden können.

Im Cache gespeicherte Inhalte können nur mit dem Modell verwendet werden, für das sie erstellt wurden.

Felder
contents[] object (Content)

Optional. Nur Eingabe. Nicht veränderbar. Die Inhalte, die im Cache gespeichert werden sollen.

tools[] object (Tool)

Optional. Nur Eingabe. Nicht veränderbar. Eine Liste von Tools, die das Modell zum Generieren der nächsten Antwort verwenden kann

createTime string (Timestamp format)

Nur Ausgabe. Erstellungszeit des Cache-Eintrags.

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. Wann der Cache-Eintrag zuletzt in UTC-Zeit aktualisiert wurde.

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

usageMetadata object (UsageMetadata)

Nur Ausgabe. Metadaten zur Nutzung der im Cache gespeicherten Inhalte.

Union-Feld expiration. Gibt an, wann diese Ressource abläuft. Für expiration ist nur einer der folgenden Werte zulässig:
expireTime string (Timestamp format)

Der Zeitstempel in UTC, der angibt, wann diese Ressource als abgelaufen gilt. Dies wird immer bei der Ausgabe angegeben, unabhängig davon, was bei der Eingabe gesendet wurde.

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

ttl string (Duration format)

Nur Eingabe. Neue TTL für diese Ressource, nur Eingabe.

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

name string

Optional. Kennung. Der Ressourcenname, der sich auf die im Cache gespeicherten Inhalte bezieht. Format: cachedContents/{id}

displayName string

Optional. Nicht veränderbar. Der vom Nutzer erstellte aussagekräftige Anzeigename der im Cache gespeicherten Inhalte. Maximal 128 Unicode-Zeichen.

model string

Erforderlich. Nicht veränderbar. Der Name der Model, die für im Cache gespeicherte Inhalte verwendet werden soll. Format: models/{model}

systemInstruction object (Content)

Optional. Nur Eingabe. Nicht veränderbar. Vom Entwickler festgelegte Systemanweisung. Derzeit nur Text.

toolConfig object (ToolConfig)

Optional. Nur Eingabe. Nicht veränderbar. Toolkonfiguration Diese Konfiguration wird für alle Tools freigegeben.

JSON-Darstellung
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // Union field expiration can be only one of the following:
  "expireTime": string,
  "ttl": string
  // End of list of possible types for union field expiration.
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

Inhalt

Der grundlegende strukturierte Datentyp, der mehrteilige Inhalte einer Nachricht enthält.

Eine Content enthält ein role-Feld, das den Ersteller der Content angibt, und ein parts-Feld mit mehrteiligen Daten, die den Inhalt der Nachrichtenrunde enthalten.

Felder
parts[] object (Part)

Parts bestellt, die eine einzelne Nachricht bilden. Teile können unterschiedliche MIME-Typen haben.

role string

Optional. Der Ersteller der Inhalte. Muss entweder „user“ oder „model“ sein.

Nützlich für Unterhaltungen mit mehreren Themen, kann andernfalls leer bleiben oder nicht festgelegt werden.

JSON-Darstellung
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Teil

Datentyp mit Medien, der Teil einer mehrteiligen Content-Nachricht ist.

Ein Part besteht aus Daten, die mit einem Datentyp verknüpft sind. Ein Part kann nur einen der zulässigen Typen in Part.data enthalten.

Ein Part muss einen festen IANA-MIME-Typ haben, der den Typ und den Untertyp der Medien angibt, wenn das Feld inlineData mit Rohbytes gefüllt ist.

Felder

Union-Feld data.

Für data ist nur einer der folgenden Werte zulässig:

text string

Inline-Text

inlineData object (Blob)

Inline-Medien-Byte.

functionCall object (FunctionCall)

Ein vorhergesagter FunctionCall, der vom Modell zurückgegeben wird und einen String enthält, der FunctionDeclaration.name mit den Argumenten und ihren Werten darstellt.

functionResponse object (FunctionResponse)

Die Ergebnisausgabe einer FunctionCall, die einen String enthält, der die FunctionDeclaration.name und ein strukturiertes JSON-Objekt mit einer Ausgabe der Funktion enthält, wird als Kontext für das Modell verwendet.

fileData object (FileData)

URI-basierte Daten.

executableCode object (ExecutableCode)

Vom Modell generierter Code, der ausgeführt werden soll.

codeExecutionResult object (CodeExecutionResult)

Ergebnis der Ausführung der ExecutableCode.

JSON-Darstellung
{

  // Union field data can be only one of the following:
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // End of list of possible types for union field data.
}

Blob

Rohe Media-Byte.

Text darf nicht als Rohbytes gesendet werden. Verwenden Sie stattdessen das Feld „text“.

Felder
mimeType string

Der IANA-Standard-MIME-Typ der Quelldaten. Beispiele: - image/png - image/jpeg Wenn ein nicht unterstützter MIME-Typ angegeben wird, wird ein Fehler zurückgegeben. Eine vollständige Liste der unterstützten Typen finden Sie unter Unterstützte Dateiformate.

data string (bytes format)

Rohbytes für Medienformate.

Ein base64-codierter String.

JSON-Darstellung
{
  "mimeType": string,
  "data": string
}

FunctionCall

Ein vorhergesagter FunctionCall, der vom Modell zurückgegeben wird und einen String enthält, der FunctionDeclaration.name mit den Argumenten und ihren Werten darstellt.

Felder
name string

Erforderlich. Der Name der aufzurufenden Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche und Bindestriche enthalten. Die maximale Länge beträgt 63.

args object (Struct format)

Optional. Die Funktionsparameter und ‑werte im JSON-Objektformat.

JSON-Darstellung
{
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Die Ergebnisausgabe einer FunctionCall, die einen String enthält, der FunctionDeclaration.name darstellt, und ein strukturiertes JSON-Objekt mit der Ausgabe der Funktion, wird als Kontext für das Modell verwendet. Hier sollte das Ergebnis eines FunctionCall enthalten sein, der auf der Grundlage der Modellvorhersage erstellt wurde.

Felder
name string

Erforderlich. Der Name der aufzurufenden Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche und Bindestriche enthalten. Die maximale Länge beträgt 63.

response object (Struct format)

Erforderlich. Die Funktionsantwort im JSON-Objektformat.

JSON-Darstellung
{
  "name": string,
  "response": {
    object
  }
}

FileData

URI-basierte Daten.

Felder
mimeType string

Optional. Der IANA-Standard-MIME-Typ der Quelldaten.

fileUri string

Erforderlich. URI.

JSON-Darstellung
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Vom Modell generierter Code, der ausgeführt werden soll, und das Ergebnis, das an das Modell zurückgegeben wird.

Wird nur generiert, wenn das CodeExecution-Tool verwendet wird, in dem der Code automatisch ausgeführt und ein entsprechender CodeExecutionResult generiert wird.

Felder
language enum (Language)

Erforderlich. Programmiersprache der code.

code string

Erforderlich. Der Code, der ausgeführt werden soll.

JSON-Darstellung
{
  "language": enum (Language),
  "code": string
}

Sprache

Unterstützte Programmiersprachen für den generierten Code.

Enums
LANGUAGE_UNSPECIFIED Sprache nicht bekannt. Dieser Wert sollte nicht verwendet werden.
PYTHON Python >= 3.10 mit numpy und simpy

CodeExecutionResult

Ergebnis der Ausführung der ExecutableCode.

Wird nur bei Verwendung des CodeExecution generiert und folgt immer einem part, das die ExecutableCode enthält.

Felder
outcome enum (Outcome)

Erforderlich. Ergebnis der Codeausführung.

output string

Optional. Enthält stderr oder eine andere Beschreibung, wenn die Codeausführung fehlgeschlagen ist, andernfalls stderr oder eine andere Beschreibung.

JSON-Darstellung
{
  "outcome": enum (Outcome),
  "output": string
}

Ergebnis

Aufzählung der möglichen Ergebnisse der Codeausführung.

Enums
OUTCOME_UNSPECIFIED Unbekannter Status. Dieser Wert sollte nicht verwendet werden.
OUTCOME_OK Die Codeausführung wurde erfolgreich abgeschlossen.
OUTCOME_FAILED Die Codeausführung wurde mit einem Fehler beendet. stderr sollte den Grund enthalten.
OUTCOME_DEADLINE_EXCEEDED Die Codeausführung dauerte zu lange und wurde abgebrochen. Es kann eine teilweise Ausgabe vorhanden sein oder nicht.

Tool

Tooldetails, die das Modell zum Generieren einer Antwort verwenden kann.

Ein Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Modells auszuführen.

Felder
functionDeclarations[] object (FunctionDeclaration)

Optional. Eine Liste der für das Modell verfügbaren FunctionDeclarations, die für den Funktionsaufruf verwendet werden können.

Das Modell oder System führt die Funktion nicht aus. Stattdessen kann die definierte Funktion zur Ausführung als FunctionCall mit Argumenten an die Clientseite zurückgegeben werden. Das Modell kann entscheiden, einen Teil dieser Funktionen aufzurufen, indem es FunctionCall in die Antwort einfügt. Der nächste Gesprächsschritt kann eine FunctionResponse mit dem Content.role-Generierungskontext „function“ für den nächsten Modellschritt enthalten.

googleSearchRetrieval object (GoogleSearchRetrieval)

Optional. Abruftool, das auf der Google-Suche basiert

codeExecution object (CodeExecution)

Optional. Ermöglicht es dem Modell, Code im Rahmen der Generierung auszuführen.

JSON-Darstellung
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  }
}

FunctionDeclaration

Strukturierte Darstellung einer Funktionsdeklaration gemäß der Definition in der OpenAPI 3.03-Spezifikation. Diese Deklaration enthält den Funktionsnamen und die Parameter. Diese FunctionDeclaration ist eine Darstellung eines Codeblocks, der vom Modell als Tool verwendet und vom Client ausgeführt werden kann.

Felder
name string

Erforderlich. Der Name der Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche und Bindestriche enthalten. Die maximale Länge beträgt 63.

description string

Erforderlich. Eine kurze Beschreibung der Funktion.

parameters object (Schema)

Optional. Hier werden die Parameter dieser Funktion beschrieben. Entspricht dem String-Schlüssel des Open API 3.03-Parameterobjekts: dem Namen des Parameters. Bei Parameternamen wird die Groß- und Kleinschreibung beachtet. Schemawert: Das Schema, das den für den Parameter verwendeten Typ definiert.

JSON-Darstellung
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}

Schema

Mit dem Schema-Objekt können Eingabe- und Ausgabedatentypen definiert werden. Diese Typen können Objekte, aber auch primitive Typen und Arrays sein. Stellt eine ausgewählte Teilmenge eines OpenAPI 3.0-Schemaobjekts dar.

Felder
type enum (Type)

Erforderlich. Datentyp

format string

Optional. Das Format der Daten. Diese Option wird nur für primitive Datentypen verwendet. Unterstützte Formate: für den TYP „ANZAHL“: float, double für den TYP „GANZZAHL“: int32, int64 für den TYP „STRING“: enum

description string

Optional. Eine kurze Beschreibung des Parameters. Dies kann auch Anwendungsbeispiele enthalten. Die Parameterbeschreibung kann als Markdown formatiert sein.

nullable boolean

Optional. Gibt an, ob der Wert null sein kann.

enum[] string

Optional. Mögliche Werte des Elements „Type.STRING“ im enum-Format. Beispielsweise können wir eine Enum-Richtung so definieren : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}.

maxItems string (int64 format)

Optional. Maximale Anzahl der Elemente für „Type.ARRAY“.

minItems string (int64 format)

Optional. Mindestanzahl der Elemente für „Type.ARRAY“.

properties map (key: string, value: object (Schema))

Optional. Eigenschaften von „Type.OBJECT“

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Optional. Erforderliche Properties von „Type.OBJECT“

items object (Schema)

Optional. Schema der Elemente vom Typ „ARRAY“.

JSON-Darstellung
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}

Typ

„Type“ enthält die Liste der OpenAPI-Datentypen gemäß https://spec.openapis.org/oas/v3.0.3#data-types.

Enums
TYPE_UNSPECIFIED Nicht angegeben, sollte nicht verwendet werden.
STRING Stringtyp.
NUMBER Nummerntyp.
INTEGER Ganzzahltyp.
BOOLEAN Boolescher Typ.
ARRAY Arraytyp.
OBJECT Objekttyp.

GoogleSearchRetrieval

Tool von Google zum Abrufen öffentlicher Webdaten zur Fundierung

Felder
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Gibt die dynamische Abrufkonfiguration für die angegebene Quelle an.

JSON-Darstellung
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Hier werden die Optionen zum Anpassen des dynamischen Abrufs beschrieben.

Felder
mode enum (Mode)

Der Modus des Prädiktors, der beim dynamischen Abrufen verwendet werden soll.

dynamicThreshold number

Der Schwellenwert, der beim dynamischen Abrufen verwendet werden soll. Wenn dieser Wert nicht festgelegt ist, wird ein Systemstandardwert verwendet.

JSON-Darstellung
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Modus

Der Modus des Vorhersagemodells, der beim dynamischen Abrufen verwendet werden soll.

Enums
MODE_UNSPECIFIED Abruf immer auslösen.
MODE_DYNAMIC Die Daten werden nur dann abgerufen, wenn das System dies für erforderlich hält.

CodeExecution

Dieser Typ hat keine Felder.

Tool, das vom Modell generierten Code ausführt und das Ergebnis automatisch an das Modell zurückgibt.

Siehe auch ExecutableCode und CodeExecutionResult, die nur bei Verwendung dieses Tools generiert werden.

ToolConfig

Die Toolkonfiguration mit Parametern zur Angabe der Verwendung von Tool in der Anfrage.

Felder
functionCallingConfig object (FunctionCallingConfig)

Optional. Konfiguration für Funktionsaufruf.

JSON-Darstellung
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

Konfiguration zum Angeben des Verhaltens von Funktionsaufrufen.

Felder
mode enum (Mode)

Optional. Gibt den Modus an, in dem Funktionsaufrufe ausgeführt werden sollen. Wenn keine Vorgabe erfolgt, wird der Standardwert AUTOMATISCH festgelegt.

allowedFunctionNames[] string

Optional. Eine Reihe von Funktionsnamen, die die vom Modell aufgerufenen Funktionen einschränken.

Sollte nur festgelegt werden, wenn für den Modus ANY festgelegt ist. Funktionsnamen müssen mit [FunctionDeclaration.name] übereinstimmen. Wenn der Modus auf „JEDER“ festgelegt ist, prognostiziert das Modell einen Funktionsaufruf aus den angegebenen Funktionsnamen.

JSON-Darstellung
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Modus

Definiert das Ausführungsverhalten für Funktionsaufrufe, indem der Ausführungsmodus definiert wird.

Enums
MODE_UNSPECIFIED Nicht angegebener Modus für Funktionsaufrufe. Dieser Wert sollte nicht verwendet werden.
AUTO Standardverhalten des Modells: Das Modell entscheidet, ob ein Funktionsaufruf oder eine Antwort in natürlicher Sprache vorhergesagt werden soll.
ANY Das Modell ist darauf beschränkt, immer nur einen Funktionsaufruf vorherzusagen. Wenn „allowedFunctionNames“ festgelegt ist, wird der vorhergesagte Funktionsaufruf auf eine der „allowedFunctionNames“ beschränkt. Andernfalls wird der vorhergesagte Funktionsaufruf auf eine der bereitgestellten „functionDeclarations“ beschränkt.
NONE Das Modell sagt keinen Funktionsaufruf vorher. Das Modellverhalten entspricht dem, wenn keine Funktionsdeklarationen übergeben werden.

UsageMetadata

Metadaten zur Nutzung der im Cache gespeicherten Inhalte.

Felder
totalTokenCount integer

Gesamtzahl der Tokens, die der im Cache gespeicherte Inhalt verbraucht.

JSON-Darstellung
{
  "totalTokenCount": integer
}