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 penggunaannya. Untuk pengantar mendetail, lihat panduan Pembuatan cache konteks.

Metode: cacheContents.create

Membuat resource CachedContent.

Endpoint

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

Isi permintaan

Isi permintaan memuat instance CachedContent.

Bidang
contents[] object (Content)

Opsional. Input saja. Tidak dapat diubah. Konten yang akan di-cache.

tools[] object (Tool)

Opsional. Input saja. Tidak dapat diubah. Daftar Tools yang dapat digunakan model untuk membuat respons berikutnya

Kolom union expiration. Menentukan kapan resource ini akan habis masa berlakunya. 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 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)

Input saja. 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 bermakna yang 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 set developer. Saat ini hanya teks.

toolConfig object (ToolConfig)

Opsional. Input saja. Tidak dapat diubah. Konfigurasi alat. Konfigurasi ini digunakan bersama untuk semua alat.

Contoh permintaan

Dasar

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

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

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

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: cacheContents.list

Mencantumkan CachedContents.

Endpoint

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

Parameter kueri

pageSize integer

Opsional. Jumlah maksimum konten cache yang akan ditampilkan. Layanan mungkin menampilkan lebih sedikit dari nilai ini. Jika tidak ditentukan, beberapa item default (di bawah jumlah 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 memberi nomor halaman, semua parameter lain yang diberikan ke cachedContents.list harus cocok 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:

Bidang
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: cacheContents.get

Membaca resource CachedContent.

Endpoint

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

Parameter jalur

name string

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

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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

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: cacheContents.patch

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

Endpoint

tambalan 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 yang dipisahkan koma yang berisi nama kolom yang sepenuhnya memenuhi syarat. Contoh: "user.displayName,photo".

Isi permintaan

Isi permintaan memuat instance CachedContent.

Bidang Kolom union expiration. Menentukan kapan resource ini akan habis masa berlakunya. expiration hanya dapat berupa salah satu dari yang 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 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)

Input saja. 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 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: cacheContents.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} Formatnya adalah cachedContents/{cachedcontent}.

Isi permintaan

Isi permintaan harus kosong.

Contoh permintaan

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

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: cacheContents

Resource: CachedContent

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

Konten dalam cache hanya dapat digunakan dengan model yang dibuatnya.

Bidang
contents[] object (Content)

Opsional. Input saja. Tidak dapat diubah. Konten yang akan di-cache.

tools[] object (Tool)

Opsional. Input saja. Tidak dapat diubah. Daftar Tools yang dapat digunakan model untuk membuat respons berikutnya

createTime string (Timestamp format)

Hanya output. Waktu pembuatan entri cache.

Stempel waktu dalam 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 diperbarui dalam waktu UTC.

Stempel waktu dalam 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 resource ini akan habis masa berlakunya. 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 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)

Input saja. 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 bermakna yang 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 set developer. Saat ini hanya teks.

toolConfig object (ToolConfig)

Opsional. Input saja. 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 multi-bagian pesan.

Content mencakup kolom role yang menentukan produser Content dan kolom parts yang berisi data multi-bagian yang berisi konten pembalikan pesan.

Bidang
parts[] object (Part)

Memesan Parts yang membentuk satu pesan. Komponen mungkin memiliki jenis MIME yang berbeda.

role string

Opsional. Produser konten. Harus 'user' atau 'model'.

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

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

Bagian

Jenis data yang berisi media yang merupakan bagian dari pesan Content multi-bagian.

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.

Bidang

Kolom union data.

data hanya dapat berupa salah satu dari yang berikut:

text string

Teks {i>inline<i}.

inlineData object (Blob)

Byte media inline.

functionCall object (FunctionCall)

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

functionResponse object (FunctionResponse)

Output hasil dari 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 menjalankan 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 'text' kolom tersebut.

Bidang
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 akan ditampilkan dari model yang berisi string yang mewakili FunctionDeclaration.name dengan argumen dan nilainya.

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

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

Bidang
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 akan dieksekusi, dan hasilnya ditampilkan ke model.

Hanya dibuat saat menggunakan alat CodeExecution, yang dapat mengeksekusi kode secara otomatis, dan CodeExecutionResult yang sesuai juga akan dibuat.

Bidang
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 menjalankan ExecutableCode.

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

Bidang
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 dari eksekusi kode.

Enum
OUTCOME_UNSPECIFIED Status belum ditetapkan. Nilai ini tidak boleh digunakan.
OUTCOME_OK Eksekusi kode berhasil diselesaikan.
OUTCOME_FAILED Eksekusi kode selesai tetapi dengan kegagalan. stderr harus berisi alasannya.
OUTCOME_DEADLINE_EXCEEDED Eksekusi kode berjalan terlalu lama, dan dibatalkan. Mungkin ada atau tidak ada output parsial.

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.

Bidang
functionDeclarations[] object (FunctionDeclaration)

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

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

codeExecution object (CodeExecution)

Opsional. Memungkinkan model mengeksekusi kode sebagai bagian dari pembuatan.

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

FunctionDeclaration

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

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

Bidang
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. Informasi ini dapat berisi contoh penggunaan. Deskripsi parameter dapat diformat sebagai Markdown.

nullable boolean

Opsional. Menunjukkan apakah nilai mungkin null.

enum[] string

Opsional. Nilai yang mungkin dari 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.

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,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}

Jenis

Jenis berisi daftar jenis data OpenAPI sebagaimana 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 nomor.
INTEGER Jenis bilangan bulat.
BOOLEAN Jenis Boolean.
ARRAY Jenis array.
OBJECT Jenis objek.

CodeExecution

Jenis ini tidak memiliki kolom.

Alat yang menjalankan 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.

Bidang
functionCallingConfig object (FunctionCallingConfig)

Opsional. Konfigurasi panggilan fungsi.

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

FunctionCallingConfig

Konfigurasi untuk menentukan perilaku panggilan fungsi.

Bidang
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]. Jika mode ditetapkan ke ANY, model akan memprediksi panggilan fungsi dari sekumpulan nama fungsi yang disediakan.

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

Mode

Menentukan perilaku eksekusi untuk panggilan 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 "allowFunctionNames" ditetapkan, panggilan fungsi yang diprediksi akan dibatasi ke salah satu "AllowedFunctionNames". Jika tidak, panggilan fungsi yang diprediksi akan berupa 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.

Bidang
totalTokenCount integer

Jumlah total token yang digunakan oleh konten yang di-cache.

Representasi JSON
{
  "totalTokenCount": integer
}