Caching

Cache konteks memungkinkan Anda menyimpan dan menggunakan kembali token input yang telah dihitung sebelumnya, yang ingin Anda gunakan berulang kali, misalnya saat mengajukan pertanyaan yang berbeda tentang file media yang sama. Hal ini dapat menghemat biaya dan kecepatan, bergantung pada penggunaan. Untuk pengantar mendetail, lihat panduan Pencakupan konteks.

Metode: cacheContents.create

Membuat resource CachedContent.

Endpoint

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

Isi permintaan

Isi permintaan memuat instance CachedContent.

Kolom
contents[] object (Content)

Opsional. Hanya input. Tidak dapat diubah. Konten yang akan di-cache.

tools[] object (Tool)

Opsional. Hanya input. Tidak dapat diubah. Daftar Tools yang dapat digunakan model untuk membuat respons berikutnya

Kolom union expiration. Menentukan kapan masa berlaku resource ini akan berakhir. expiration hanya dapat berupa salah satu dari berikut:
expireTime string (Timestamp format)

Stempel waktu dalam UTC saat resource ini dianggap sudah tidak berlaku. Ini selalu disediakan pada output, terlepas dari apa yang dikirim pada input.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Hanya input. TTL baru untuk resource ini, hanya input.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

name string

Opsional. ID. Nama resource yang merujuk ke konten yang di-cache. Format: cachedContents/{id}

displayName string

Opsional. Tidak dapat diubah. Nama tampilan yang bermakna dan dibuat pengguna untuk konten yang di-cache. Maksimum 128 karakter Unicode.

model string

Wajib. Tidak dapat diubah. Nama Model yang akan digunakan untuk konten yang di-cache Format: models/{model}

systemInstruction object (Content)

Opsional. Input saja. Tidak dapat diubah. Petunjuk sistem yang ditetapkan developer. Saat ini hanya berupa teks.

toolConfig object (ToolConfig)

Opsional. Hanya input. Tidak dapat diubah. Konfigurasi alat. Konfigurasi ini digunakan bersama untuk semua alat.

Contoh permintaan

Dasar

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

Go

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)

Shell

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'"
    }'

Nama dari

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

Go

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)

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

Go

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)

Isi respons

Jika berhasil, isi respons memuat instance CachedContent yang baru dibuat.

Metode: cachedContents.list

Mencantumkan CachedContents.

Endpoint

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

Parameter kueri

pageSize integer

Opsional. Jumlah maksimum konten yang di-cache yang akan ditampilkan. Layanan mungkin menampilkan lebih sedikit dari nilai ini. Jika tidak ditentukan, beberapa jumlah item default (di bawah maksimum) akan ditampilkan. Nilai maksimumnya adalah 1.000; nilai di atas 1.000 akan dikonversi menjadi 1.000.

pageToken string

Opsional. Token halaman, diterima dari panggilan cachedContents.list sebelumnya. Berikan atribut ini untuk mengambil halaman selanjutnya.

Saat melakukan penomoran halaman, semua parameter lain yang diberikan untuk cachedContents.list harus sesuai dengan panggilan yang menyediakan token halaman.

Isi permintaan

Isi permintaan harus kosong.

Isi respons

Respons dengan daftar CachedContents.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Kolom
cachedContents[] object (CachedContent)

Daftar konten yang di-cache.

nextPageToken string

Token, yang dapat dikirim sebagai pageToken untuk mengambil halaman berikutnya. Jika kolom ini dihilangkan, tidak ada halaman berikutnya.

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

Metode: cachedContents.get

Membaca resource CachedContent.

Endpoint

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

Parameter jalur

name string

Wajib. Nama resource yang merujuk ke entri cache konten. Format: cachedContents/{id} Formatnya adalah cachedContents/{cachedcontent}.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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

Go

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)

Shell

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

Isi respons

Jika berhasil, isi respons memuat instance CachedContent.

Metode: cachedContents.patch

Memperbarui resource CachedContent (hanya masa berlaku yang dapat diperbarui).

Endpoint

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

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

Parameter jalur

cachedContent.name string

Opsional. ID. Nama resource yang merujuk ke konten yang di-cache. Format: cachedContents/{id} Formatnya adalah cachedContents/{cachedcontent}.

Parameter kueri

updateMask string (FieldMask format)

Daftar kolom yang akan diperbarui.

Ini adalah daftar dipisahkan koma yang berisi nama-nama kolom yang sepenuhnya memenuhi syarat. Contoh: "user.displayName,photo".

Isi permintaan

Isi permintaan memuat instance CachedContent.

Kolom
Kolom union expiration. Menentukan kapan masa berlaku resource ini akan berakhir. expiration hanya dapat berupa salah satu dari berikut:
expireTime string (Timestamp format)

Stempel waktu dalam UTC saat resource ini dianggap sudah tidak berlaku. Ini selalu disediakan pada output, terlepas dari apa yang dikirim pada input.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Hanya input. TTL baru untuk resource ini, hanya input.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

name string

Opsional. ID. Nama resource yang merujuk ke konten yang di-cache. Format: cachedContents/{id}

Contoh permintaan

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

Go

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)

Shell

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

Isi respons

Jika berhasil, isi respons memuat instance CachedContent.

Metode: cachedContents.delete

Menghapus resource CachedContent.

Endpoint

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

Parameter jalur

name string

Wajib. Nama resource yang merujuk ke format entri cache konten: cachedContents/{id} Nama ini memiliki bentuk cachedContents/{cachedcontent}.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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

Go

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)

Shell

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

Isi respons

Jika berhasil, isi respons akan kosong.

Resource REST: cachedContents

Resource: CachedContent

Konten yang telah dipraproses dan dapat digunakan dalam permintaan berikutnya ke GenerativeService.

Konten dalam cache hanya dapat digunakan dengan model yang dibuatnya.

Kolom
contents[] object (Content)

Opsional. Hanya input. Tidak dapat diubah. Konten yang akan di-cache.

tools[] object (Tool)

Opsional. Hanya input. Tidak dapat diubah. Daftar Tools yang dapat digunakan model untuk menghasilkan respons berikutnya

createTime string (Timestamp format)

Hanya output. Waktu pembuatan entri cache.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Hanya output. Kapan entri cache terakhir kali diperbarui dalam waktu UTC.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

usageMetadata object (UsageMetadata)

Hanya output. Metadata tentang penggunaan konten yang di-cache.

Kolom union expiration. Menentukan kapan masa berlaku resource ini akan berakhir. expiration hanya dapat berupa salah satu dari berikut:
expireTime string (Timestamp format)

Stempel waktu dalam UTC saat resource ini dianggap sudah tidak berlaku. Ini selalu disediakan pada output, terlepas dari apa yang dikirim pada input.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Hanya input. TTL baru untuk resource ini, hanya input.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

name string

Opsional. ID. Nama resource yang merujuk ke konten yang di-cache. Format: cachedContents/{id}

displayName string

Opsional. Tidak dapat diubah. Nama tampilan yang bermakna dan dibuat pengguna untuk konten yang di-cache. Maksimum 128 karakter Unicode.

model string

Wajib. Tidak dapat diubah. Nama Model yang akan digunakan untuk konten yang di-cache Format: models/{model}

systemInstruction object (Content)

Opsional. Input saja. Tidak dapat diubah. Petunjuk sistem yang ditetapkan developer. Saat ini hanya berupa teks.

toolConfig object (ToolConfig)

Opsional. Hanya input. Tidak dapat diubah. Konfigurasi alat. Konfigurasi ini digunakan bersama untuk semua alat.

Representasi JSON
{
  "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)
  }
}

Konten

Jenis data terstruktur dasar yang berisi konten multibagian dari pesan.

Content menyertakan kolom role yang menetapkan produsen Content dan kolom parts yang berisi data multibagian yang berisi konten giliran pesan.

Kolom
parts[] object (Part)

Parts yang diurutkan yang membentuk satu pesan. Bagian mungkin memiliki jenis MIME yang berbeda.

role string

Opsional. Produsen konten. Harus berupa 'user' atau 'model'.

Berguna untuk ditetapkan untuk percakapan multi-giliran, jika tidak, dapat dibiarkan kosong atau tidak ditetapkan.

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

Bagian

Jenis data yang berisi media yang merupakan bagian dari pesan Content multibagian.

Part terdiri dari data yang memiliki jenis data terkait. Part hanya dapat berisi salah satu jenis yang diterima di Part.data.

Part harus memiliki jenis MIME IANA tetap yang mengidentifikasi jenis dan subjenis media jika kolom inlineData diisi dengan byte mentah.

Kolom

Kolom union data.

data hanya dapat berupa salah satu dari hal berikut:

text string

Teks inline.

inlineData object (Blob)

Byte media inline.

functionCall object (FunctionCall)

FunctionCall yang diprediksi ditampilkan dari model yang berisi string yang mewakili FunctionDeclaration.name dengan argumen dan nilainya.

functionResponse object (FunctionResponse)

Output hasil FunctionCall yang berisi string yang mewakili FunctionDeclaration.name dan objek JSON terstruktur yang berisi output apa pun dari fungsi digunakan sebagai konteks untuk model.

fileData object (FileData)

Data berbasis URI.

executableCode object (ExecutableCode)

Kode yang dihasilkan oleh model yang akan dieksekusi.

codeExecutionResult object (CodeExecutionResult)

Hasil dari eksekusi ExecutableCode.

Representasi JSON
{

  // 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

Byte media mentah.

Teks tidak boleh dikirim sebagai byte mentah, gunakan kolom 'text'.

Kolom
mimeType string

Jenis MIME standar IANA dari data sumber. Contoh: - image/png - image/jpeg Jika tersedia jenis MIME yang tidak didukung, error akan ditampilkan. Untuk mengetahui daftar lengkap jenis yang didukung, lihat Format file yang didukung.

data string (bytes format)

Byte mentah untuk format media.

String berenkode base64.

Representasi JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

FunctionCall yang diprediksi ditampilkan dari model yang berisi string yang mewakili FunctionDeclaration.name dengan argumen dan nilainya.

Kolom
name string

Wajib. Nama fungsi yang akan dipanggil. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah dan tanda hubung, dengan panjang maksimum 63.

args object (Struct format)

Opsional. Parameter dan nilai fungsi dalam format objek JSON.

Representasi JSON
{
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Output hasil dari FunctionCall yang berisi string yang mewakili FunctionDeclaration.name dan objek JSON terstruktur yang berisi output apa pun dari fungsi tersebut digunakan sebagai konteks untuk model. Ini harus berisi hasil FunctionCall yang dibuat berdasarkan prediksi model.

Kolom
name string

Wajib. Nama fungsi yang akan dipanggil. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah dan tanda hubung, dengan panjang maksimum 63.

response object (Struct format)

Wajib. Respons fungsi dalam format objek JSON.

Representasi JSON
{
  "name": string,
  "response": {
    object
  }
}

FileData

Data berbasis URI.

Kolom
mimeType string

Opsional. Jenis MIME standar IANA dari data sumber.

fileUri string

Wajib. URI.

Representasi JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Kode yang dihasilkan oleh model yang dimaksudkan untuk dieksekusi, dan hasilnya ditampilkan ke model.

Hanya dibuat saat menggunakan alat CodeExecution, tempat kode akan otomatis dijalankan, dan CodeExecutionResult yang sesuai juga akan dibuat.

Kolom
language enum (Language)

Wajib. Bahasa pemrograman code.

code string

Wajib. Kode yang akan dieksekusi.

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

Language

Bahasa pemrograman yang didukung untuk kode yang dihasilkan.

Enum
LANGUAGE_UNSPECIFIED Bahasa tidak ditentukan. Nilai ini tidak boleh digunakan.
PYTHON Python >= 3.10, dengan numpy dan simpy tersedia.

CodeExecutionResult

Hasil dari eksekusi ExecutableCode.

Hanya dibuat saat menggunakan CodeExecution, dan selalu mengikuti part yang berisi ExecutableCode.

Kolom
outcome enum (Outcome)

Wajib. Hasil eksekusi kode.

output string

Opsional. Berisi stdout jika eksekusi kode berhasil, stderr, atau deskripsi lain jika tidak.

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

Hasil

Enumerasi kemungkinan hasil eksekusi kode.

Enum
OUTCOME_UNSPECIFIED Status tidak ditentukan. Nilai ini tidak boleh digunakan.
OUTCOME_OK Eksekusi kode berhasil diselesaikan.
OUTCOME_FAILED Eksekusi kode selesai, tetapi mengalami kegagalan. stderr harus berisi alasannya.
OUTCOME_DEADLINE_EXCEEDED Eksekusi kode berjalan terlalu lama, dan dibatalkan. Output sebagian mungkin ada atau tidak.

Alat

Detail alat yang dapat digunakan model untuk menghasilkan respons.

Tool adalah potongan kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan model.

Kolom
functionDeclarations[] object (FunctionDeclaration)

Opsional. Daftar FunctionDeclarations yang tersedia untuk model yang dapat digunakan untuk pemanggilan fungsi.

Model atau sistem tidak menjalankan fungsi. Sebagai gantinya, fungsi yang ditentukan dapat ditampilkan sebagai FunctionCall dengan argumen ke sisi klien untuk dieksekusi. Model dapat memutuskan untuk memanggil subset fungsi ini dengan mengisi FunctionCall dalam respons. Giliran percakapan berikutnya dapat berisi FunctionResponse dengan konteks pembuatan "fungsi" Content.role untuk giliran model berikutnya.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opsional. Alat pengambilan yang didukung oleh Google Penelusuran.

codeExecution object (CodeExecution)

Opsional. Memungkinkan model mengeksekusi kode sebagai bagian dari pembuatan.

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

FunctionDeclaration

Representasi terstruktur dari deklarasi fungsi seperti yang ditentukan oleh spesifikasi OpenAPI 3.03. Yang disertakan dalam deklarasi ini adalah nama dan parameter fungsi. FunctionDeclaration ini adalah representasi blok kode yang dapat digunakan sebagai Tool oleh model dan dieksekusi oleh klien.

Kolom
name string

Wajib. Nama fungsi. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah dan tanda hubung, dengan panjang maksimum 63.

description string

Wajib. Deskripsi singkat fungsi.

parameters object (Schema)

Opsional. Menjelaskan parameter untuk fungsi ini. Mencerminkan Kunci string Objek Parameter Open API 3.03: nama parameter. Nama parameter peka huruf besar/kecil. Nilai Skema: Skema yang menentukan jenis yang digunakan untuk parameter.

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

Skema

Objek Schema memungkinkan definisi jenis data input dan output. Jenis ini dapat berupa objek, tetapi juga primitif dan array. Mewakili subset yang dipilih dari objek skema OpenAPI 3.0.

Kolom
type enum (Type)

Wajib. Tipe data.

format string

Opsional. Format data. Ini hanya digunakan untuk jenis data primitif. Format yang didukung: untuk jenis NOMOR: float, double untuk jenis INTEGER: int32, int64 untuk jenis STRING: enum

description string

Opsional. Deskripsi singkat parameter. Bagian ini dapat berisi contoh penggunaan. Deskripsi parameter dapat diformat sebagai Markdown.

nullable boolean

Opsional. Menunjukkan apakah nilai mungkin null.

enum[] string

Opsional. Kemungkinan nilai elemen Type.STRING dengan format enum. Misalnya, kita dapat menentukan Arah Enum sebagai : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opsional. Jumlah maksimum elemen untuk Type.ARRAY.

minItems string (int64 format)

Opsional. Jumlah minimum elemen untuk Type.ARRAY.

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

Opsional. Properti Type.OBJECT.

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Opsional. Properti yang diperlukan dari Type.OBJECT.

items object (Schema)

Opsional. Skema elemen Type.ARRAY.

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

Jenis

Jenis berisi daftar jenis data OpenAPI seperti yang ditentukan oleh https://spec.openapis.org/oas/v3.0.3#data-types

Enum
TYPE_UNSPECIFIED Tidak ditentukan, tidak boleh digunakan.
STRING Jenis string.
NUMBER Jenis angka.
INTEGER Jenis bilangan bulat.
BOOLEAN Jenis boolean.
ARRAY Jenis array.
OBJECT Jenis objek.

GoogleSearchRetrieval

Alat untuk mengambil data web publik untuk grounding, yang didukung oleh Google.

Kolom
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Menentukan konfigurasi pengambilan dinamis untuk sumber tertentu.

Representasi JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Menjelaskan opsi untuk menyesuaikan pengambilan dinamis.

Kolom
mode enum (Mode)

Mode prediktor yang akan digunakan dalam pengambilan dinamis.

dynamicThreshold number

Nilai minimum yang akan digunakan dalam pengambilan dinamis. Jika tidak disetel, nilai default sistem akan digunakan.

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

Mode

Mode prediktor yang akan digunakan dalam pengambilan dinamis.

Enum
MODE_UNSPECIFIED Selalu picu pengambilan.
MODE_DYNAMIC Jalankan pengambilan hanya jika sistem memutuskan bahwa hal itu diperlukan.

CodeExecution

Jenis ini tidak memiliki kolom.

Alat yang mengeksekusi kode yang dihasilkan oleh model, dan otomatis menampilkan hasilnya ke model.

Lihat juga ExecutableCode dan CodeExecutionResult yang hanya dibuat saat menggunakan alat ini.

ToolConfig

Konfigurasi Alat yang berisi parameter untuk menentukan penggunaan Tool dalam permintaan.

Kolom
functionCallingConfig object (FunctionCallingConfig)

Opsional. Konfigurasi panggilan fungsi.

Representasi JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

Konfigurasi untuk menentukan perilaku panggilan fungsi.

Kolom
mode enum (Mode)

Opsional. Menentukan mode tempat panggilan fungsi harus dijalankan. Jika tidak ditentukan, nilai default akan ditetapkan ke AUTO.

allowedFunctionNames[] string

Opsional. Kumpulan nama fungsi yang, jika disediakan, akan membatasi fungsi yang akan dipanggil model.

Kunci ini hanya boleh disetel jika Mode adalah APA PUN. Nama fungsi harus cocok dengan [FunctionDeclaration.name]. Dengan mode yang ditetapkan ke ANY, model akan memprediksi panggilan fungsi dari kumpulan nama fungsi yang disediakan.

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

Mode

Menentukan perilaku eksekusi untuk pemanggilan fungsi dengan menentukan mode eksekusi.

Enum
MODE_UNSPECIFIED Mode panggilan fungsi tidak ditentukan. Nilai ini tidak boleh digunakan.
AUTO Perilaku model default, model memutuskan untuk memprediksi panggilan fungsi atau respons natural language.
ANY Model dibatasi untuk selalu memprediksi panggilan fungsi saja. Jika "allowedFunctionNames" ditetapkan, panggilan fungsi yang diprediksi akan dibatasi pada salah satu "allowedFunctionNames", jika tidak, panggilan fungsi yang diprediksi akan menjadi salah satu "functionDeclarations" yang disediakan.
NONE Model tidak akan memprediksi panggilan fungsi apa pun. Perilaku model sama seperti saat tidak meneruskan deklarasi fungsi apa pun.

UsageMetadata

Metadata tentang penggunaan konten yang di-cache.

Kolom
totalTokenCount integer

Jumlah total token yang digunakan konten yang di-cache.

Representasi JSON
{
  "totalTokenCount": integer
}