Caching

Bağlam önbelleğe alma sayesinde, tekrar tekrar kullanmak istediğiniz önceden hesaplanmış giriş jetonlarını kaydedip yeniden kullanabilirsiniz (örneğin, aynı medya dosyası hakkında farklı sorular sorarken). Bu, kullanıma bağlı olarak maliyet ve hız tasarrufu sağlayabilir. Ayrıntılı bir giriş için Bağlam önbelleğe alma kılavuzuna bakın.

Yöntem: cachedContents.create

CachedContent kaynağı oluşturur.

Uç nokta

yayınlama https://generativelanguage.googleapis.com/v1beta/cachedContents

İstek içeriği

İstek metni, CachedContent öğesinin bir örneğini içerir.

Alanlar
contents[] object (Content)

İsteğe bağlı. Yalnızca giriş. Değişmez. Önbelleğe alınacak içerik.

tools[] object (Tool)

İsteğe bağlı. Yalnızca giriş. Değişmez. Modelin sonraki yanıtı oluşturmak için kullanabileceği Tools öğelerinin listesi

Birlik alanı expiration. Bu kaynağın süresinin ne zaman dolacağını belirtir. expiration yalnızca aşağıdakilerden biri olabilir:
expireTime string (Timestamp format)

Bu kaynağın geçerliliğinin sona erdiği kabul edilen zamanın UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Yalnızca giriş. Bu kaynak için yeni TTL, yalnızca giriş.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

name string

İsteğe bağlı. Tanımlayıcı. Önbelleğe alınan içeriğe atıfta bulunan kaynak adı. Biçim: cachedContents/{id}

displayName string

İsteğe bağlı. Değişmez. Önbelleğe alınan içeriğin kullanıcı tarafından oluşturulan anlamlı görünen adı. Maksimum 128 Unicode karakteri.

model string

Zorunlu. Değişmez. Önbelleğe alınmış içerik için kullanılacak Model adı. Biçim: models/{model}

systemInstruction object (Content)

İsteğe bağlı. Yalnızca giriş. Değişmez. Geliştiricinin sistem talimatını ayarladı. Şu anda yalnızca metin olarak kullanılabilir.

toolConfig object (ToolConfig)

İsteğe bağlı. Yalnızca giriş. Değişmez. Araç yapılandırması. Bu yapılandırma tüm araçlar için paylaşılır.

Örnek istek

Temel

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)

kabuk

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

Gönderen adı

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)

Sohbetten

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)

Yanıt gövdesi

Başarılı olursa yanıt gövdesi, yeni oluşturulmuş bir CachedContent örneğini içerir.

Yöntem: cachedContents.list

CachedContents öğesini listeler.

Uç nokta

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

Sorgu parametreleri

pageSize integer

İsteğe bağlı. Döndürülecek maksimum önbelleğe alınmış içerik sayısı. Hizmet bu değerden daha az sonuç döndürebilir. Belirtilmemişse varsayılan (maksimumun altında) sayıda öğe döndürülür. Maksimum değer 1.000'dür. 1.000'den büyük değerler 1.000'e zorlanacaktır.

pageToken string

İsteğe bağlı. Önceki bir cachedContents.list çağrısından alınan sayfa jetonu. Sonraki sayfayı almak için bunu sağlayın.

Sayfalandırma yapılırken cachedContents.list parametresine sağlanan diğer tüm parametreler, sayfa jetonunu sağlayan çağrıyla eşleşmelidir.

İstek içeriği

İstek metni boş olmalıdır.

Yanıt gövdesi

CachedContents listesi içeren yanıt.

Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:

Alanlar
cachedContents[] object (CachedContent)

Önbelleğe alınmış içeriklerin listesi.

nextPageToken string

Sonraki sayfayı almak için pageToken olarak gönderilebilen bir jeton. Bu alan atlanırsa sonraki sayfa olmaz.

JSON gösterimi
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Yöntem: cachedContents.get

CachedContent kaynağını okur.

Uç nokta

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

Yol parametreleri

name string

Zorunlu. İçerik önbelleği girişine atıfta bulunan kaynak adı. Biçim: cachedContents/{id} cachedContents/{cachedcontent} biçimindedir.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

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)

kabuk

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

Yanıt gövdesi

Başarılıysa yanıt metni, CachedContent öğesinin bir örneğini içerir.

Yöntem: cachedContents.patch

CachedContent kaynağını günceller (yalnızca geçerlilik süresi güncellenebilir).

Uç nokta

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

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

Yol parametreleri

cachedContent.name string

İsteğe bağlı. Tanımlayıcı. Önbelleğe alınan içeriğe atıfta bulunan kaynak adı. Biçim: cachedContents/{id} cachedContents/{cachedcontent} biçimindedir.

Sorgu parametreleri

updateMask string (FieldMask format)

Güncellenecek alanların listesi.

Bu, alanların tam nitelikli adlarının virgülle ayrılmış bir listesidir. Örnek: "user.displayName,photo".

İstek içeriği

İstek metni, CachedContent öğesinin bir örneğini içerir.

Alanlar
Birlik alanı expiration. Bu kaynağın süresinin ne zaman sona ereceğini belirtir. expiration yalnızca aşağıdakilerden biri olabilir:
expireTime string (Timestamp format)

Bu kaynağın geçerliliğinin sona erdiği kabul edilen zamanın UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Yalnızca giriş. Bu kaynak için yeni TTL, yalnızca giriş.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

name string

İsteğe bağlı. Tanımlayıcı. Önbelleğe alınan içeriğe atıfta bulunan kaynak adı. Biçim: cachedContents/{id}

Örnek istek

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)

kabuk

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

Yanıt gövdesi

Başarılıysa yanıt metni, CachedContent öğesinin bir örneğini içerir.

Yöntem: cacheContents.delete

CachedContent kaynağını siler.

Uç nokta

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

Yol parametreleri

name string

Zorunlu. İçerik önbelleği girişine işaret eden kaynak adı Biçim: cachedContents/{id} cachedContents/{cachedcontent} biçimini alır.

İstek içeriği

İstek metni boş olmalıdır.

Örnek istek

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)

kabuk

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

Yanıt gövdesi

Başarılı olursa yanıt metni boş olur.

REST Kaynağı: cachedContents

Kaynak: CachedContent

Önceden işlenmiş ve GenerativeService'e yapılan sonraki isteklerde kullanılabilen içerik.

Önbelleğe alınan içerikler yalnızca oluşturuldukları modelde kullanılabilir.

Alanlar
contents[] object (Content)

İsteğe bağlı. Yalnızca giriş. Sabit. Önbelleğe alınacak içerik.

tools[] object (Tool)

İsteğe bağlı. Yalnızca giriş. Değişmez. Modelin sonraki yanıtı oluşturmak için kullanabileceği Tools öğelerinin listesi

createTime string (Timestamp format)

Yalnızca çıkış. Önbellek girişinin oluşturulma zamanı.

Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Yalnızca çıkış. Önbelleğe alınan girişin UTC saatinde son güncellenme zamanı.

Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

usageMetadata object (UsageMetadata)

Yalnızca çıkış. Önbelleğe alınan içeriğin kullanımına ilişkin meta veriler.

Birlik alanı expiration. Bu kaynağın süresinin ne zaman sona ereceğini belirtir. expiration yalnızca aşağıdakilerden biri olabilir:
expireTime string (Timestamp format)

Bu kaynağın geçerliliğinin sona erdiği kabul edilen zamanın UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Yalnızca giriş. Bu kaynak için yeni TTL, yalnızca giriş.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

name string

İsteğe bağlı. Tanımlayıcı. Önbelleğe alınan içeriğe atıfta bulunan kaynak adı. Biçim: cachedContents/{id}

displayName string

İsteğe bağlı. Değişmez. Önbelleğe alınan içeriğin kullanıcı tarafından oluşturulan anlamlı görünen adı. Maksimum 128 Unicode karakteri.

model string

Zorunlu. Değişmez. Önbelleğe alınmış içerik için kullanılacak Model adı. Biçim: models/{model}

systemInstruction object (Content)

İsteğe bağlı. Yalnızca giriş. Değişmez. Geliştiricinin sistem talimatını ayarladı. Şu anda yalnızca metin olarak kullanılabilir.

toolConfig object (ToolConfig)

İsteğe bağlı. Yalnızca giriş. Değişmez. Araç yapılandırması. Bu yapılandırma tüm araçlar için paylaşılır.

JSON gösterimi
{
  "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)
  }
}

İçerik

Bir mesajın çok parçalı içeriğini içeren temel yapılandırılmış veri türü.

Content, Content öğesinin yapımcısını belirten bir role alanı ve mesaj dönüşünün içeriğini barındıran çok parçalı verilerin bulunduğu bir parts alanı içerir.

Alanlar
parts[] object (Part)

Tek bir mesajı oluşturan sıralı Parts. Parçaların MIME türleri farklı olabilir.

role string

İsteğe bağlı. İçeriğin yapımcısı. "user" veya "model" olmalıdır.

Birden çok dönüşlü konuşmalarda ayarlamak için yararlıdır. Aksi takdirde boş bırakılabilir veya ayarlanmamış olabilir.

JSON gösterimi
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Bölüm

Çok parçalı bir Content mesajının parçası olan medyayı içeren bir veri türü.

Part, ilişkili bir veri türüne sahip verilerden oluşur. Part, yalnızca Part.data'da kabul edilen türlerden birini içerebilir.

inlineData alanı ham baytlarla doldurulmuşsa Part, medyanın türünü ve alt türünü tanımlayan sabit bir IANA MIME türüne sahip olmalıdır.

Alanlar

Birlik alanı data.

data yalnızca aşağıdakilerden biri olabilir:

text string

Satır içi metin.

inlineData object (Blob)

Satır içi medya baytları.

functionCall object (FunctionCall)

Modelden döndürülen ve bağımsız değişkenleri ile değerlerini içeren FunctionDeclaration.name değerini temsil eden bir dize içeren tahmini FunctionCall.

functionResponse object (FunctionResponse)

FunctionDeclaration.name'u temsil eden bir dize ve işlevden gelen tüm çıkışları içeren yapılandırılmış bir JSON nesnesi içeren bir FunctionCall'ün sonuç çıkışı, modelin bağlamı olarak kullanılır.

fileData object (FileData)

URI tabanlı veriler.

executableCode object (ExecutableCode)

Model tarafından oluşturulan ve yürütülmesi amaçlanan kod.

codeExecutionResult object (CodeExecutionResult)

ExecutableCode işlevinin yürütülmesinin sonucu.

JSON gösterimi
{

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

Ham medya baytları.

Metin, ham bayt olarak gönderilmemelidir. "metin" alanını kullanın.

Alanlar
mimeType string

Kaynak verilerin IANA standart MIME türü. Örnekler: - image/png - image/jpeg Desteklenmeyen bir MIME türü sağlanırsa hata döndürülür. Desteklenen türlerin tam listesi için Desteklenen dosya biçimleri başlıklı makaleyi inceleyin.

data string (bytes format)

Medya biçimleri için ham baytlar.

Base64 kodlu bir dize.

JSON gösterimi
{
  "mimeType": string,
  "data": string
}

FunctionCall

Bağımsız değişkenler ve bunların değerleriyle birlikte FunctionDeclaration.name öğesini temsil eden bir dizenin yer aldığı modelden, tahmin edilen bir FunctionCall döndürüldü.

Alanlar
name string

Zorunlu. Çağırılacak işlevin adı. a-z, A-Z, 0-9 arasında olmalı veya alt çizgi ve kısa çizgi içermeli, en fazla 63 karakter uzunluğunda olmalıdır.

args object (Struct format)

İsteğe bağlı. JSON nesne biçiminde işlev parametreleri ve değerleri.

JSON gösterimi
{
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

FunctionDeclaration.name öğesini temsil eden bir dizeyi ve işlevden alınan herhangi bir çıkışı içeren yapılandırılmış JSON nesnesini içeren FunctionCall sonuç çıkışı, modelin bağlamı olarak kullanılır. Bu, model tahminine göre oluşturulan bir FunctionCall sonucunu içermelidir.

Alanlar
name string

Zorunlu. Çağırılacak işlevin adı. En fazla 63 karakter olacak şekilde, a-z, A-Z, 0-9 biçiminde olmalı veya alt çizgi ve tire içermelidir.

response object (Struct format)

Zorunlu. JSON nesne biçiminde işlev yanıtı.

JSON gösterimi
{
  "name": string,
  "response": {
    object
  }
}

FileData

URI tabanlı veri.

Alanlar
mimeType string

İsteğe bağlı. Kaynak verilerin IANA standart MIME türü.

fileUri string

Zorunlu. URI.

JSON gösterimi
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Model tarafından oluşturulan ve çalıştırılmak üzere tasarlanmış kod ve modele döndürülen sonuç.

Yalnızca CodeExecution aracı kullanılırken oluşturulur. Bu araçta kod otomatik olarak yürütülür ve ilgili bir CodeExecutionResult da oluşturulur.

Alanlar
language enum (Language)

Zorunlu. code'ün programlama dili.

code string

Zorunlu. Yürütülecek kod.

JSON gösterimi
{
  "language": enum (Language),
  "code": string
}

Dil

Oluşturulan kod için desteklenen programlama dilleri.

Sıralamalar
LANGUAGE_UNSPECIFIED Dil belirtilmedi. Bu değer kullanılmamalıdır.
PYTHON Python >= 3.10, numpy ve simpy kullanılabilir.

CodeExecutionResult

ExecutableCode işlevinin yürütülmesinin sonucu.

Yalnızca CodeExecution kullanıldığında oluşturulur ve her zaman ExecutableCode içeren bir part'dan sonra gelir.

Alanlar
outcome enum (Outcome)

Zorunlu. Kod yürütmenin sonucu.

output string

İsteğe bağlı. Kod yürütme başarılı olduğunda stdout, aksi takdirde stderr veya başka bir açıklama içerir.

JSON gösterimi
{
  "outcome": enum (Outcome),
  "output": string
}

Sonuç

Kod yürütmenin olası sonuçlarının listesi.

Sıralamalar
OUTCOME_UNSPECIFIED Belirtilmemiş durum. Bu değer kullanılmamalıdır.
OUTCOME_OK Kod yürütme işlemi başarıyla tamamlandı.
OUTCOME_FAILED Kod yürütme tamamlandı ancak bir hatayla. stderr, nedeni içermelidir.
OUTCOME_DEADLINE_EXCEEDED Kod yürütme işlemi çok uzun sürdü ve iptal edildi. Kısmi bir çıkış mevcut olabilir ya da olmayabilir.

Araç

Modelin yanıt oluşturmak için kullanabileceği araç ayrıntıları.

Tool, sistemin modelin bilgisi ve kapsamı dışında bir işlem veya işlem grubu gerçekleştirmek için harici sistemlerle etkileşim kurmasını sağlayan bir kod parçasıdır.

Alanlar
functionDeclarations[] object (FunctionDeclaration)

İsteğe bağlı. Modelin kullanabileceği ve işlev çağrısı için kullanılabilen FunctionDeclarations öğelerinin listesi.

Model veya sistem işlevi yürütmez. Bunun yerine, tanımlanan işlev, yürütülmek üzere istemci tarafına gönderilecek bağımsız değişkenlerle bir FunctionCall olarak döndürülebilir. Model, yanıtta FunctionCall öğesini doldurarak bu işlevlerin bir alt kümesini çağırmaya karar verebilir. Bir sonraki sohbet sırası, bir sonraki model sırası için Content.role "işlevi" oluşturma bağlamını içeren bir FunctionResponse içerebilir.

googleSearchRetrieval object (GoogleSearchRetrieval)

İsteğe bağlı. Google Arama tarafından desteklenen getirme aracı.

codeExecution object (CodeExecution)

İsteğe bağlı. Modelin, kod oluşturma işleminin bir parçası olarak kod yürütmesini sağlar.

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

FunctionDeclaration

OpenAPI 3.03 spesifikasyonunda tanımlandığı şekliyle bir işlev beyanının yapılandırılmış gösterimi. Bu beyan, işlev adını ve parametrelerini içerir. Bu FunctionDeclaration, model tarafından Tool olarak kullanılabilen ve istemci tarafından çalıştırılan bir kod bloğunun temsilidir.

Alanlar
name string

Zorunlu. İşlevin adı. a-z, A-Z, 0-9 arasında olmalı veya alt çizgi ve kısa çizgi içermeli, en fazla 63 karakter uzunluğunda olmalıdır.

description string

Zorunlu. İşlevin kısa bir açıklaması.

parameters object (Schema)

İsteğe bağlı. Bu fonksiyonun parametrelerini açıklar. Open API 3.03 Parametre Nesnesi dize anahtarını yansıtır: parametrenin adı. Parametre adları büyük/küçük harfe duyarlıdır. Şema Değeri: Parametre için kullanılan türü tanımlayan şema.

JSON gösterimi
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}

Şema

Schema nesnesi, giriş ve çıkış veri türlerinin tanımlanmasına olanak tanır. Bu türler nesneler olabileceği gibi ilkel ve diziler de olabilir. OpenAPI 3.0 şema nesnesinin belirli bir alt kümesini temsil eder.

Alanlar
type enum (Type)

Zorunlu. Veri türü.

format string

İsteğe bağlı. Verilerin biçimi. Bu, yalnızca ilkel veri türleri için kullanılır. Desteklenen biçimler: SAYI türü için: float, double TAM SAYI türü için: int32, int64 DÜZENLEME türü için: enum

description string

İsteğe bağlı. Parametrenin kısa bir açıklaması. Bu, kullanım örnekleri içerebilir. Parametre açıklaması Markdown olarak biçimlendirilebilir.

nullable boolean

İsteğe bağlı. Değerin boş olup olamayacağını belirtir.

enum[] string

İsteğe bağlı. Type.STRING öğesinin, enum biçimindeki olası değerleri. Örneğin, bir Enum Yön'ü şu şekilde tanımlayabiliriz : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

İsteğe bağlı. Type.ARRAY için maksimum öğe sayısı.

minItems string (int64 format)

İsteğe bağlı. Type.ARRAY için minimum öğe sayısı.

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

İsteğe bağlı. Type.OBJECT özelliğinin özellikleri.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

İsteğe bağlı. Type.OBJECT için zorunlu özellikler.

items object (Schema)

İsteğe bağlı. Type.ARRAY öğelerinin şeması.

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

Tür

Tür, https://spec.openapis.org/oas/v3.0.3#data-types tarafından tanımlanan OpenAPI veri türlerinin listesini içerir.

Sıralamalar
TYPE_UNSPECIFIED Belirtilmedi, kullanılmamalıdır.
STRING Dize türü.
NUMBER Sayı türü.
INTEGER Tam sayı türü.
BOOLEAN Boole türü.
ARRAY Dizi türü.
OBJECT Nesne türü.

GoogleSearchRetrieval

Google tarafından desteklenen, temellendirme için herkese açık web verilerini alma aracı.

Alanlar
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Belirtilen kaynak için dinamik getirme yapılandırmasını belirtir.

JSON gösterimi
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Dinamik getirmeyi özelleştirme seçeneklerini açıklar.

Alanlar
mode enum (Mode)

Dinamik almada kullanılacak tahmin edicinin modu.

dynamicThreshold number

Dinamik getirmede kullanılacak eşik. Ayarlanmazsa sistem varsayılan değeri kullanılır.

JSON gösterimi
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Mod

Dinamik almada kullanılacak tahmin edicinin modu.

Sıralamalar
MODE_UNSPECIFIED Her zaman getirmeyi tetikleyin.
MODE_DYNAMIC Alma işlemini yalnızca sistem gerekli olduğuna karar verdiğinde çalıştırın.

CodeExecution

Bu türde alan yoktur.

Model tarafından oluşturulan kodu yürüten ve sonucu modele otomatik olarak döndüren araç.

Yalnızca bu araç kullanılırken oluşturulan ExecutableCode ve CodeExecutionResult hükümlerine de göz atın.

ToolConfig

İstekte Tool kullanımını belirtmek için parametreler içeren araç yapılandırması.

Alanlar
functionCallingConfig object (FunctionCallingConfig)

İsteğe bağlı. İşlev çağrısı yapılandırması.

JSON gösterimi
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

İşlev çağırma davranışını belirtme yapılandırması.

Alanlar
mode enum (Mode)

İsteğe bağlı. İşlev çağrısının hangi modda yürütüleceğini belirtir. Belirtilmemişse varsayılan değer AUTO olarak ayarlanır.

allowedFunctionNames[] string

İsteğe bağlı. Sağlandığında modelin çağıracağı işlevleri sınırlayan bir dizi işlev adları.

Bu ayar yalnızca Mod BİRİSİ olduğunda yapılmalıdır. İşlev adları, [FunctionDeclaration.name] işleviyle eşleşmelidir. Mod HERHANGİ olarak ayarlandığında model, sağlanan işlev adları grubundan bir işlev çağrısı tahmin eder.

JSON gösterimi
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Mod

Yürütme modunu tanımlayarak işlev çağrısı için yürütme davranışını tanımlar.

Sıralamalar
MODE_UNSPECIFIED Belirtilmemiş işlev çağrı modu. Bu değer kullanılmamalıdır.
AUTO Varsayılan model davranışı. Model, bir işlev çağrısını veya doğal dil yanıtını tahmin etmeye karar verir.
ANY Model, her zaman yalnızca bir işlev çağrısını tahmin edecek şekilde sınırlandırılır. "allowedFunctionNames" ayarlanırsa tahmin edilen işlev çağrısı, "allowedFunctionNames" işlevlerinden herhangi biriyle sınırlanır, aksi takdirde, tahmin edilen işlev çağrısı sağlanan "functionDeclarations" özelliklerinden herhangi biri olur.
NONE Model, işlev çağrısını tahmin etmez. Model davranışı, herhangi bir işlev beyanı iletilmediğinde olduğu gibidir.

UsageMetadata

Önbelleğe alınmış içeriğin kullanımıyla ilgili meta veriler.

Alanlar
totalTokenCount integer

Önbelleğe alınan içeriğin kullandığı toplam jeton sayısı.

JSON gösterimi
{
  "totalTokenCount": integer
}