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 sonraki yanıtı oluşturmak için kullanabileceği Tools öğelerinin listesi

Birlik 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 süresinin dolmuş olarak kabul edildiği UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Ö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 işaret eden kaynak adı. Biçim: cachedContents/{id}

displayName string

İsteğe bağlı. Sabit. Ö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. Sabit. Ö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ş. Sabit. 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.

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

CachedContents öğesini 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. Belirtilmezse varsayılan olarak (maksimum değerin altında) bazı öğeler döndürülür. Maksimum değer 1000'dir; 1.000'in üzerindeki değerler 1.000'e zorlanı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.

Sayfalara ayırma işlemi sırasında cachedContents.list öğesine 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ınan içeriklerin listesi.

nextPageToken string

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

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

Yöntem: önbelleğe alınmışContents.get

CachedContent kaynağını okur.

Uç nokta

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

CachedContent kaynağını günceller (yalnızca son kullanma tarihi 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, tam nitelikli alan 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
Birleştirme 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 süresinin dolmuş olarak kabul edildiği UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Ö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 işaret eden 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: cachedContents.delete

CachedContent kaynağını siler.

Uç nokta

sil 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 bir sonraki yanıtı oluşturmak için kullanabileceği Tools listesi

createTime string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Ö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.

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 süresinin dolmuş olarak kabul edildiği UTC zaman damgası. Bu değer, girişte gönderilenden bağımsız olarak çıkışta her zaman sağlanır.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Ö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 işaret eden kaynak adı. Biçim: cachedContents/{id}

displayName string

İsteğe bağlı. Sabit. Ö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. Sabit. Ö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ş. Sabit. 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.

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 öğ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 Parts sipariş edildi. Bölümlerin farklı MIME türleri olabilir.

role string

İsteğe bağlı. İçeriğin yapımcısı. "Kullanıcı" olmalıdır "model" olarak da adlandırılı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ı 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)

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

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ı veri.

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ı. En fazla 63 karakter olacak şekilde, a-z, A-Z, 0-9 biçiminde olmalı veya alt çizgi ve tire içermelidir.

args object (Struct format)

İsteğe bağlı. JSON nesnesi biçimindeki 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 yürütülmesi amaçlanan 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 başarıyla tamamlandı.
OUTCOME_FAILED Kod yürütme tamamlandı, ancak bir hata oluştu. stderr gerekçeyi içermelidir.
OUTCOME_DEADLINE_EXCEEDED Kod yürütme çok uzun sürdüğü için iptal edildi. Kısmi çıkış olabilir veya 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ı. Modelde kullanılabilen ve işlev çağrısında kullanılabilecek FunctionDeclarations 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 birlikte 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 dönüşümü, bir sonraki model dönüşümü için Content.role "işlevi" oluşturma bağlamını içeren bir FunctionResponse içerebilir.

codeExecution object (CodeExecution)

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

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

FunctionDeclaration

OpenAPI 3.03 spesifikasyonunda tanımlandığı şekliyle bir işlev beyanının yapılandırılmış gösterimi. Bu bildirime işlev adı ve parametreler de dahildir. Bu FunctionDeclaration, model tarafından Tool olarak kullanılabilen ve istemci tarafından yürütülen bir kod bloğunu temsil eder.

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

CodeExecution

Bu türde alan yoktur.

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

Ayrıca, yalnızca bu araç kullanılırken oluşturulan ExecutableCode ve CodeExecutionResult bölümlerine de bakı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ğrısı davranışını belirten yapılandırma.

Alanlar
mode enum (Mode)

İsteğe bağlı. İşlev çağrısının yürütüleceği modu 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 işlev adı grubu.

Bu ayar yalnızca Mod BİRİSİ olduğunda yapılmalıdır. İşlev adları [FunctionDeclaration.name] ile eşleşmelidir. Mod ANY olarak ayarlandığında model, sağlanan işlev adları kümesinden 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" 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 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
}