Caching

Bağlam önbelleğe alma, tekrar tekrar kullanmak istediğiniz önceden hesaplanmış giriş jetonlarını (ör. aynı medya dosyası hakkında farklı sorular sorarken) kaydedip yeniden kullanmanıza olanak tanır. 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 bir sonraki yanıtı oluşturmak için kullanabileceği Tools 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ı. En fazla 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ştirici tarafından ayarlanan sistem talimatı. Ş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

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

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

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 metni, yeni oluşturulmuş bir CachedContent örneğini içerir.

Yöntem: cachedContents.list

CachedContents'i listeler.

Uç nokta

get 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önderilebilecek bir jeton. Bu alan atlanırsa sonraki sayfalar 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

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

Örnek istek

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)

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

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ğı: önbelleğe alınmışContents

Kaynak: CachedContent

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

Önbelleğe alınan içerik yalnızca oluşturulduğu modelle 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ş. Sabit. 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ı.

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

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ınmış içeriğin kullanımıyla ilgili meta veriler.

Birleştirme alanı expiration. Bu kaynağın süresinin ne zaman sona ereceğini belirtir. expiration şunlardan yalnızca 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ı. En fazla 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ştirici tarafından ayarlanan sistem talimatı. Şu anda yalnızca metin olarak kullanılabilir.

toolConfig object (ToolConfig)

İsteğe bağlı. Yalnızca giriş. Sabit. 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 barındıran temel yapılandırılmış veri türü.

Content, Content'ün üreticisini belirten bir role alanı ve ileti sırasının içeriğini içeren çok parçalı verileri içeren bir parts alanı içerir.

Alanlar
parts[] object (Part)

Tek bir mesajı oluşturan sıralı Parts. Bölümlerin farklı MIME türleri olabilir.

role string

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

Birden çok katılımlı görüşmeler için ayarlanması 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ı 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 şunlardan yalnızca 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 öğesini temsil eden bir dize içeren FunctionCall ve işlevden alınan herhangi bir çıkışı içeren yapılandırılmış JSON nesnesinin sonuç çıktısı, 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

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.

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'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'ten elde edilen 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 nesnesi biçiminde işlev yanıtı.

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

FileData

URI tabanlı veriler.

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 kodun otomatik olarak yürütüleceği CodeExecution aracı kullanılırken buna karşılık gelen bir CodeExecutionResult de 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 gerekçeyi içermelidir.
OUTCOME_DEADLINE_EXCEEDED Kod yürütme işlemi çok uzun sürdü ve iptal edildi. Kısmi çıkış olabilir veya olmayabilir.

Araç

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

Tool, modelin bilgisi ve kapsamı dışında bir işlem veya işlem kümesi gerçekleştirmek için sistemin harici sistemlerle etkileşime girmesini 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 değerini 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 işlevin 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. Bir OpenAPI 3.0 şema nesnesinin belirli 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: NUMBER türü için kayan noktalı, TAM SAYI için çift değer: int32, STRING için int64 türü: 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 olmadığını gösterir.

enum[] string

İsteğe bağlı. Type.STRING öğesinin, enum biçimindeki olası değerleri. Örneğin, Enum Yönü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 ö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 Belirtilmemiş, 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)

Belirli bir kaynak için dinamik alma yapılandırmasını belirtir.

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

DynamicRetrievalConfig

Dinamik alma özelliğini özelleştirme seçeneklerini açıklar.

Alanlar
mode enum (Mode)

Dinamik getirmede kullanılacak öngörücü 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 getirmede kullanılacak öngörücü 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. Bir değer belirtilmezse varsayılan değer OTOMATİK 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ısı 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 kısıtlanmıştır. "allowedFunctionNames" ayarlanırsa tahmin edilen işlev çağrısı, "allowedFunctionNames" değerlerinden biriyle sınırlı olur. Aksi takdirde tahmin edilen işlev çağrısı, sağlanan "functionDeclarations" değerlerinden biriyle sınırlı olur.
NONE Model, işlev çağrısını tahmin etmez. Model davranışı, herhangi bir işlev bildirimlerinin iletilmemesiyle aynıdır.

UsageMetadata

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

Alanlar
totalTokenCount integer

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

JSON gösterimi
{
  "totalTokenCount": integer
}