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 da kullanıma bağlı olarak maliyet ve hız tasarrufu sağlayabilir. Ayrıntılı bilgi için Bağlamı önbelleğe alma kılavuzuna bakın.

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

CachedContent kaynağı oluşturur.

Uç nokta

yayınlayacağım 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ş. 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

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, girişte ne gönderildiğine bakılmaksızın her zaman çıkışta 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 kesir basamağı olan 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ştiricinin sistem talimatını ayarladı. Ş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 gövdesi, yeni oluşturulmuş bir CachedContent örneğini içerir.

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

CachedContents'i 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 bir değer 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 cachedContents.list çağrısından alınan bir 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:

ziyaret edin.
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: cacheContents.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: cacheContents.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 işaret eden 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 şunlardan yalnızca biri olabilir:
expireTime string (Timestamp format)

Bu kaynağın süresinin dolmuş olarak kabul edildiği UTC zaman damgası. Bu, girişte ne gönderildiğine bakılmaksızın her zaman çıkışta 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 kesir basamağı olan 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: cacheContents.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 gövdesi boş olur.

REST Kaynağı: önbelleğe alınmışContents

Kaynak: CachedContent

Ön işlenmiş ve GenerativeService'e sonraki isteklerde kullanılabilecek içerik.

Önbelleğe alınan içerik yalnızca oluşturulduğu modelle kullanılabilir.

ziyaret edin.
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ış. Önbellek girişinin en son UTC saatiyle güncellendiği zaman.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Ö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, girişte ne gönderildiğine bakılmaksızın her zaman çıkışta 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 kesir basamağı olan 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ştiricinin sistem talimatını ayarladı. Ş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 öğ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.

ziyaret edin.
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.

Çok dönüşlü ileti dizilerinde 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ı 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, Part.data alanında kabul edilen türlerden yalnızca birini içerebilir.

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

ziyaret edin.
Alanlar

Birleştirme 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)

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

executableCode object (ExecutableCode)

Model tarafından oluşturulan ve yürütülmesi gereken kod.

codeExecutionResult object (CodeExecutionResult)

ExecutableCode yürütmesinin 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" değerini kullanın girin.

ziyaret edin.
Alanlar
mimeType string

Kaynak verilerin IANA standart MIME türü. Örnekler: - image/png - resim/jpeg Desteklenmeyen bir MIME türü sağlanırsa bir 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
}

İşlev Çağrısı

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

ziyaret edin.
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 dayalı olarak oluşturulan FunctionCall sonucunu içermelidir.

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

ziyaret edin.
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

Yürütülmesi amaçlanan model tarafından üretilen kod ve sonuç, modele döndürülür.

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.

ziyaret edin.
Alanlar
language enum (Language)

Zorunlu. code öğesinin 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 yürütmesinin sonucu.

Yalnızca CodeExecution kullanılırken oluşturulur ve her zaman ExecutableCode öğesini içeren bir part öğesini izler.

ziyaret edin.
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 bir çıkış mevcut olabilir ya da 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.

ziyaret edin.
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ütme için istemci tarafında bağımsız değişkenlerle birlikte bir [FunctionCall][content.part.function_call] olarak döndürülebilir. Model, yanıtta [FunctionCall][content.part.function_call] öğesini doldurarak bu işlevlerin bir alt kümesini çağırmaya karar verebilir. Bir sonraki ileti dizisi dönüşü, [content.role] "işlevine" sahip bir [FunctionResponse][content.part.function_response] içerebilir ne anlama geldiğini açıklamaya çalışın.

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 spesifikasyonu ile tanımlanan şekilde bir işlev bildiriminin 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.

ziyaret edin.
Alanlar
name string

Zorunlu. İşlevin adı. Az, AZ, 0-9 olmalı veya alt çizgi ve tire içermelidir ve 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 nesnelerin yanı sıra temel öğeler ve diziler de olabilir. Bir OpenAPI 3.0 şema nesnesinin belirli alt kümesini temsil eder.

ziyaret edin.
Alanlar
type enum (Type)

Zorunlu. Veri türü.

format string

İsteğe bağlı. Verilerin biçimi. Bu, yalnızca temel 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ı. Numaralandırma biçimindeki Type.STRING öğesinin olası değerleri. Örneğin, bir Sıralama 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ı.

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ı. Gerekli Type.OBJECT özellikleri.

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,
  "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 Numara türü.
INTEGER Tam sayı türü.
BOOLEAN Boole türü.
ARRAY Dizi türü.
OBJECT Nesne türü.

CodeExecution

Bu türde alan yok.

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

ziyaret edin.
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.

ziyaret edin.
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 dizi işlev adları.

Bu yalnızca Mod ANY olduğunda ayarlanmalıdır. İşlev adları, [FunctionDeclaration.name] işleviyle eşleşmelidir. Mod ANY değerine 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ı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 sınırlandırılır. "allowedFunctionNames" ise 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" öğelerinden herhangi biri olur.
NONE Model herhangi bir 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.

ziyaret edin.
Alanlar
totalTokenCount integer

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

JSON gösterimi
{
  "totalTokenCount": integer
}