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. Dies kann je nach Nutzung 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. Der im Cache zu speichernde Inhalt.

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. Dieser Wert 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 generierte aussagekräftige Anzeigename des im Cache gespeicherten Inhalts. Maximal 128 Unicode-Zeichen.

model string

Erforderlich. Nicht veränderbar. Der Name der Model, die für zwischengespeicherte 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.

Beispielanfrage

Einfach

Python

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

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

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: cachedContents.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 der Liste „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 Ressource vom Typ „CachedContent“.

Endpunkt

erhalten 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

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 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 den im Cache gespeicherten Inhalt bezieht. Format: cachedContents/{id}. Muss die Form cachedContents/{cachedcontent} haben.

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. Dieser Wert 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 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: cacheContents.delete

Löscht die CachedContent-Ressource.

Endpunkt

delete 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

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 zu cachenden Inhalte.

tools[] object (Tool)

Optional. Nur Eingabe. Nicht veränderbar. Eine Liste von Tools, die das Modell verwenden kann, um die nächste Antwort zu generieren

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. Der Zeitpunkt, zu dem der Cache-Eintrag zuletzt aktualisiert wurde (UTC).

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. Dieser Wert 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 generierte aussagekräftige Anzeigename des im Cache gespeicherten Inhalts. Maximal 128 Unicode-Zeichen.

model string

Erforderlich. Nicht veränderbar. Der Name der Model, die für zwischengespeicherte 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.

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 Untertyp des Mediums identifiziert, wenn das Feld inlineData mit Rohbyte 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-Mediabyte.

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 FunctionDeclaration.name darstellt, und ein strukturiertes JSON-Objekt mit der Ausgabe der Funktion, 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 von 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 Dateiformate finden Sie unter Unterstützte Dateiformate.

data string (bytes format)

Rohbyte für Medienformate.

Ein base64-codierter String.

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

FunctionCall

Eine vorhergesagte FunctionCall, die vom Modell zurückgegeben wird und einen String enthält, der die 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. Dieser sollte das Ergebnis einerFunctionCall enthalten, die auf der Modellvorhersage basiert.

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 bei Verwendung des CodeExecution-Tools generiert. Darin wird der Code automatisch ausgeführt und eine entsprechende CodeExecutionResult wird generiert.

Felder
language enum (Language)

Erforderlich. Programmiersprache von 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 angegeben. Dieser Wert sollte nicht verwendet werden.
PYTHON Python >= 3.10, numpy und simpy sind verfügbar.

CodeExecutionResult

Ergebnis der Ausführung von 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 stdout.

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

Ergebnis

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

Enums
OUTCOME_UNSPECIFIED Nicht angegebener Status. Dieser Wert sollte nicht verwendet werden.
OUTCOME_OK Codeausführung wurde abgeschlossen.
OUTCOME_FAILED Die Codeausführung wurde beendet, aber ein Fehler ist aufgetreten. 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 Funktionsaufrufe verwendet werden kann.

Das Modell oder System führt die Funktion nicht aus. Stattdessen kann die definierte Funktion als FunctionCall mit Argumenten zur Ausführung an die Clientseite zurückgegeben werden. Das Modell kann entscheiden, eine Teilmenge dieser Funktionen aufzurufen, indem es FunctionCall in die Antwort einträgt. Die nächste Unterhaltungsrunde kann ein FunctionResponse mit der „Funktion“ Content.role enthalten Generierungskontext für die nächste Modellreihe.

codeExecution object (CodeExecution)

Optional. Ermöglicht dem Modell, Code als Teil der Generierung auszuführen.

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

FunctionDeclaration

Strukturierte Darstellung einer Funktionsdeklaration gemäß der Definition 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 Stringschlüssel des OpenAPI 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 Objekt Schema können Eingabe- und Ausgabedatentypen definiert werden. Bei diesen Typen kann es sich um Objekte, aber auch um Primitive und Arrays handeln. 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. Diese können Anwendungsbeispiele enthalten. Die Parameterbeschreibung kann im Markdown-Format formatiert sein.

nullable boolean

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

enum[] string

Optional. Mögliche Werte des Elements vom Typ.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 von Type.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

„Typ“ 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 Zahlentyp.
INTEGER Ganzzahltyp.
BOOLEAN Boolescher Typ.
ARRAY Arraytyp.
OBJECT Objekttyp.

CodeExecution

Dieser Typ hat keine Felder.

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

Weitere Informationen finden Sie unter ExecutableCode und CodeExecutionResult, die nur bei Verwendung dieses Tools generiert werden.

ToolConfig

Die Toolkonfiguration mit den Parametern zur Angabe der Tool-Verwendung 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 der Funktionsaufruf ausgeführt werden soll. Wenn Sie keinen Wert angeben, wird der Standardwert „AUTO“ verwendet.

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

Hiermit wird das Ausführungsverhalten für den Funktionsaufruf durch Festlegen des Ausführungsmodus definiert.

Enums
MODE_UNSPECIFIED Nicht spezifizierter Funktionsaufrufmodus. 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 sind, ist der vorhergesagte Funktionsaufruf auf einen der "allowedFunctionNames"-Funktionen beschränkt. Andernfalls ist der vorhergesagte Funktionsaufruf ein beliebiger der bereitgestellten "functionDeclarations".
NONE Das Modell sagt keinen Funktionsaufruf vorher. Das Modellverhalten ist dann dasselbe wie bei keiner Funktionsdeklaration.

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
}