Caching

ذخیره سازی متن به شما امکان می دهد نشانه های ورودی از پیش محاسبه شده را ذخیره کرده و مجدداً از آنها استفاده کنید، به عنوان مثال هنگام پرسیدن سؤالات مختلف در مورد یک فایل رسانه ای. این می تواند منجر به صرفه جویی در هزینه و سرعت بسته به نوع استفاده شود. برای معرفی دقیق، راهنمای ذخیره سازی متن را ببینید.

روش: cachedContents.create

منبع CachedContent ایجاد می کند.

نقطه پایانی

پست https://generativelanguage.googleapis.com/v1beta/cachedContents

درخواست بدن

بدنه درخواست شامل یک نمونه از CachedContent است.

فیلدها
contents[] object ( Content )

اختیاری. فقط ورودی تغییرناپذیر. محتوا در کش.

tools[] object ( Tool )

اختیاری. فقط ورودی تغییرناپذیر. فهرستی از Tools مدل ممکن است برای ایجاد پاسخ بعدی استفاده کند

expiration میدان اتحادیه زمان منقضی شدن این منبع را مشخص می کند. expiration فقط می تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی در UTC از زمانی که این منبع منقضی شده در نظر گرفته می شود. این همیشه در خروجی ارائه می شود، صرف نظر از آنچه در ورودی ارسال شده است.

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

رشته ttl string ( Duration format)

فقط ورودی TTL جدید برای این منبع، فقط ورودی.

مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' s ' ختم می شود. مثال: "3.5s" .

string name

اختیاری. شناسه. نام منبع که به محتوای ذخیره شده اشاره دارد. قالب: cachedContents/{id}

string displayName

اختیاری. تغییرناپذیر. نام نمایشی معنی دار محتوای ذخیره شده توسط کاربر. حداکثر 128 کاراکتر یونیکد.

string model

مورد نیاز. تغییرناپذیر. نام Model مورد استفاده برای محتوای ذخیره شده در حافظه پنهان قالب: models/{model}

شی systemInstruction object ( Content )

اختیاری. فقط ورودی تغییرناپذیر. دستورالعمل سیستم مجموعه توسعه دهنده. در حال حاضر فقط پیامک

شی toolConfig object ( ToolConfig )

اختیاری. فقط ورودی تغییرناپذیر. پیکربندی ابزار این پیکربندی برای همه ابزارها به اشتراک گذاشته شده است.

درخواست نمونه

اساسی

پایتون

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

برو

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)

پوسته

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

از نام

پایتون

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

برو

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)

از چت

پایتون

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

برو

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)

بدن پاسخگو

در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی یک نمونه جدید از CachedContent است.

روش: cachedContents.list

CachedContents را فهرست می کند.

نقطه پایانی

https://generativelanguage.googleapis.com/v1beta/cachedContents را دریافت کنید

پارامترهای پرس و جو

pageSize integer

اختیاری. حداکثر تعداد محتویات کش برای بازگشت. این سرویس ممکن است کمتر از این مقدار را بازگرداند. اگر مشخص نشده باشد، تعدادی از موارد پیش فرض (زیر حداکثر) برگردانده می شود. حداکثر مقدار 1000 است. مقادیر بالای 1000 به 1000 اجباری می شود.

string pageToken

اختیاری. یک نشانه صفحه، دریافت شده از تماس قبلی cachedContents.list . این را برای بازیابی صفحه بعدی ارائه کنید.

هنگام صفحه بندی، تمام پارامترهای دیگر ارائه شده به cachedContents.list باید با فراخوانی که توکن صفحه را ارائه می کند مطابقت داشته باشد.

درخواست بدن

بدنه درخواست باید خالی باشد.

بدن پاسخگو

پاسخ با لیست CachedContents.

در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

فیلدها
شی cachedContents[] object ( CachedContent )

لیست محتویات کش

string nextPageToken

یک نشانه، که می تواند به عنوان pageToken برای بازیابی صفحه بعدی ارسال شود. اگر این قسمت حذف شود، هیچ صفحه بعدی وجود ندارد.

نمایندگی JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

روش: cachedContents.get

منبع CachedContent را می خواند.

نقطه پایانی

https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*} را دریافت کنید

پارامترهای مسیر

string name

مورد نیاز. نام منبع که به ورودی کش محتوا اشاره دارد. قالب: cachedContents/{id} به شکل cachedContents/{cachedcontent} است.

درخواست بدن

بدنه درخواست باید خالی باشد.

درخواست نمونه

پایتون

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

برو

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)

پوسته

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

بدن پاسخگو

در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی نمونه ای از CachedContent است.

روش: cachedContents.patch

منبع CachedContent را به روز می کند (فقط انقضا قابل به روز رسانی است).

نقطه پایانی

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

پارامترهای مسیر

string cachedContent.name

اختیاری. شناسه. نام منبع که به محتوای ذخیره شده اشاره دارد. قالب: cachedContents/{id} به شکل cachedContents/{cachedcontent} است.

پارامترهای پرس و جو

رشته updateMask string ( FieldMask format)

لیست فیلدهایی که باید به روز شوند.

این فهرستی از نام‌های فیلدهای کاملاً واجد شرایط با کاما است. مثال: "user.displayName,photo" .

درخواست بدن

بدنه درخواست شامل یک نمونه از CachedContent است.

فیلدها
expiration میدان اتحادیه زمان منقضی شدن این منبع را مشخص می کند. expiration فقط می تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی در UTC از زمانی که این منبع منقضی شده در نظر گرفته می شود. این همیشه در خروجی ارائه می شود، صرف نظر از آنچه در ورودی ارسال شده است.

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

رشته ttl string ( Duration format)

فقط ورودی TTL جدید برای این منبع، فقط ورودی.

مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' s ' ختم می شود. مثال: "3.5s" .

string name

اختیاری. شناسه. نام منبع که به محتوای ذخیره شده اشاره دارد. قالب: cachedContents/{id}

درخواست نمونه

پایتون

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

برو

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)

پوسته

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

بدن پاسخگو

در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی نمونه ای از CachedContent است.

روش: cachedContents.delete

منبع CachedContent را حذف می کند.

نقطه پایانی

حذف https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

پارامترهای مسیر

string name

مورد نیاز. نام منبع به ورودی حافظه پنهان محتوا اشاره دارد. قالب: cachedContents/{id} به شکل cachedContents/{cachedcontent} است.

درخواست بدن

بدنه درخواست باید خالی باشد.

درخواست نمونه

پایتون

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

برو

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)

پوسته

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

بدن پاسخگو

در صورت موفقیت آمیز بودن، بدنه پاسخ خالی است.

منبع REST: cachedContents

منبع: CachedContent

محتوایی که از قبل پردازش شده است و می تواند در درخواست بعدی به GenerativeService استفاده شود.

محتوای ذخیره شده در حافظه پنهان تنها با مدلی که برای آن ایجاد شده است قابل استفاده است.

فیلدها
contents[] object ( Content )

اختیاری. فقط ورودی تغییرناپذیر. محتوا در حافظه پنهان.

tools[] object ( Tool )

اختیاری. فقط ورودی تغییرناپذیر. فهرستی از Tools مدل ممکن است برای ایجاد پاسخ بعدی استفاده کند

رشته createTime string ( Timestamp format)

فقط خروجی زمان ایجاد ورودی کش

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

رشته updateTime string ( Timestamp format)

فقط خروجی آخرین باری که ورودی حافظه پنهان در زمان UTC به روز شد.

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

شیء usageMetadata object ( UsageMetadata )

فقط خروجی فراداده در مورد استفاده از محتوای حافظه پنهان.

expiration میدان اتحادیه زمان منقضی شدن این منبع را مشخص می کند. expiration فقط می تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی در UTC از زمانی که این منبع منقضی شده در نظر گرفته می شود. این همیشه در خروجی ارائه می شود، صرف نظر از آنچه در ورودی ارسال شده است.

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

رشته ttl string ( Duration format)

فقط ورودی TTL جدید برای این منبع، فقط ورودی.

مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' s ' ختم می شود. مثال: "3.5s" .

string name

اختیاری. شناسه. نام منبع که به محتوای ذخیره شده اشاره دارد. قالب: cachedContents/{id}

string displayName

اختیاری. تغییرناپذیر. نام نمایشی معنی دار محتوای ذخیره شده توسط کاربر. حداکثر 128 کاراکتر یونیکد.

string model

مورد نیاز. تغییرناپذیر. نام Model مورد استفاده برای محتوای ذخیره شده در حافظه پنهان قالب: models/{model}

شی systemInstruction object ( Content )

اختیاری. فقط ورودی تغییرناپذیر. دستورالعمل سیستم مجموعه توسعه دهنده. در حال حاضر فقط پیامک

شی toolConfig object ( ToolConfig )

اختیاری. فقط ورودی تغییرناپذیر. پیکربندی ابزار این پیکربندی برای همه ابزارها به اشتراک گذاشته شده است.

نمایندگی JSON
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // Union field expiration can be only one of the following:
  "expireTime": string,
  "ttl": string
  // End of list of possible types for union field expiration.
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

محتوا

نوع داده ساختار یافته پایه حاوی محتوای چند بخشی از یک پیام.

یک Content شامل یک فیلد role است که سازنده Content را تعیین می کند و یک قسمت parts حاوی داده های چند قسمتی است که حاوی محتوای نوبت پیام است.

فیلدها
parts[] object ( Part )

Parts سفارش داده شده که یک پیام واحد را تشکیل می دهند. قطعات ممکن است انواع مختلف MIME داشته باشند.

string role

اختیاری. تولید کننده محتوا. باید «کاربر» یا «مدل» باشد.

برای تنظیم مکالمات چند نوبتی مفید است، در غیر این صورت می توانید آن را خالی یا تنظیم نشده رها کنید.

نمایندگی JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

قسمت

یک نوع داده حاوی رسانه ای که بخشی از یک پیام Content چند بخشی است.

یک Part شامل داده هایی است که دارای یک نوع داده مرتبط است. یک Part فقط می تواند شامل یکی از انواع پذیرفته شده در Part.data باشد.

اگر قسمت inlineData با بایت های خام پر شده باشد، یک Part باید دارای یک نوع IANA MIME ثابت باشد که نوع و نوع فرعی رسانه را مشخص می کند.

فیلدها

data میدان اتحادیه

data فقط می توانند یکی از موارد زیر باشند:

string text

متن درون خطی.

شی inlineData object ( Blob )

بایت های رسانه ای درون خطی

شیء functionCall object ( FunctionCall )

یک FunctionCall پیش‌بینی‌شده از مدلی که حاوی رشته‌ای است که FunctionDeclaration.name را با آرگومان‌ها و مقادیر آن‌ها نشان می‌دهد، برگردانده می‌شود.

شی functionResponse object ( FunctionResponse )

خروجی نتیجه یک FunctionCall که شامل یک رشته به نمایندگی از FunctionDeclaration.name و یک شی JSON ساختاریافته حاوی هر خروجی از تابع به عنوان زمینه مدل استفاده می شود.

شیء fileData object ( FileData )

داده های مبتنی بر URI

شی executableCode object ( ExecutableCode )

کد تولید شده توسط مدلی که قرار است اجرا شود.

شی codeExecutionResult object ( CodeExecutionResult )

نتیجه اجرای ExecutableCode .

نمایندگی JSON
{

  // Union field data can be only one of the following:
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // End of list of possible types for union field data.
}

لکه

بایت های رسانه خام

متن نباید به صورت بایت خام ارسال شود، از قسمت "متن" استفاده کنید.

فیلدها
string mimeType

نوع استاندارد IANA MIME داده منبع. مثال‌ها: - image/png - image/jpeg اگر نوع MIME پشتیبانی‌نشده ارائه شود، یک خطا برگردانده می‌شود. برای فهرست کامل انواع پشتیبانی شده، فرمت‌های فایل پشتیبانی شده را ببینید.

رشته data string ( bytes format)

بایت های خام برای فرمت های رسانه ای.

رشته ای با کد base64.

نمایندگی JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

یک FunctionCall پیش‌بینی‌شده از مدلی که حاوی رشته‌ای است که FunctionDeclaration.name را با آرگومان‌ها و مقادیر آن‌ها نشان می‌دهد، برگردانده می‌شود.

فیلدها
string name

مورد نیاز. نام تابعی که باید فراخوانی شود. باید az، AZ، ​​0-9 باشد یا دارای زیرخط و خط تیره با حداکثر طول 63 باشد.

شی args object ( Struct format)

اختیاری. پارامترها و مقادیر تابع در قالب شی JSON.

نمایندگی JSON
{
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

خروجی نتیجه از یک FunctionCall که حاوی رشته ای است که FunctionDeclaration.name را نشان می دهد و یک شی JSON ساختاریافته حاوی هر خروجی از تابع به عنوان زمینه مدل استفاده می شود. این باید حاوی نتیجه یک FunctionCall باشد که بر اساس پیش‌بینی مدل ساخته شده است.

فیلدها
string name

مورد نیاز. نام تابعی که باید فراخوانی شود. باید az، AZ، ​​0-9 باشد یا دارای زیرخط و خط تیره با حداکثر طول 63 باشد.

شی response object ( Struct format)

مورد نیاز. پاسخ تابع در قالب شی JSON.

نمایندگی JSON
{
  "name": string,
  "response": {
    object
  }
}

FileData

داده های مبتنی بر URI

فیلدها
string mimeType

اختیاری. نوع استاندارد IANA MIME داده منبع.

string fileUri

مورد نیاز. URI.

نمایندگی JSON
{
  "mimeType": string,
  "fileUri": string
}

کد اجرایی

کدی که توسط مدلی که قرار است اجرا شود تولید می‌شود و نتیجه به مدل برمی‌گردد.

فقط هنگام استفاده از ابزار CodeExecution ایجاد می شود، که در آن کد به طور خودکار اجرا می شود و یک CodeExecutionResult مربوطه نیز تولید می شود.

فیلدها
فهرست language enum ( Language )

مورد نیاز. زبان برنامه نویسی code .

string code

مورد نیاز. کدی که باید اجرا شود.

نمایندگی JSON
{
  "language": enum (Language),
  "code": string
}

زبان

پشتیبانی از زبان های برنامه نویسی برای کد تولید شده

Enums
LANGUAGE_UNSPECIFIED زبان نامشخص این مقدار نباید استفاده شود.
PYTHON Python >= 3.10، با numpy و simpy در دسترس است.

CodeExecutionResult

نتیجه اجرای ExecutableCode .

فقط هنگام استفاده از CodeExecution تولید می شود و همیشه part حاوی ExecutableCode دنبال می کند.

فیلدها
تعداد outcome enum ( Outcome )

مورد نیاز. نتیجه اجرای کد

string output

اختیاری. حاوی stdout در صورت موفقیت آمیز بودن اجرای کد، stderr یا سایر توضیحات است.

نمایندگی JSON
{
  "outcome": enum (Outcome),
  "output": string
}

نتیجه

شمارش نتایج احتمالی اجرای کد.

Enums
OUTCOME_UNSPECIFIED وضعیت نامشخص این مقدار نباید استفاده شود.
OUTCOME_OK اجرای کد با موفقیت انجام شد.
OUTCOME_FAILED اجرای کد به پایان رسید اما با شکست. stderr باید حاوی دلیل باشد.
OUTCOME_DEADLINE_EXCEEDED اجرای کد برای مدت طولانی اجرا شد و لغو شد. ممکن است یک خروجی جزئی وجود داشته باشد یا نباشد.

ابزار

جزئیات ابزاری که مدل ممکن است برای تولید پاسخ استفاده کند.

Tool قطعه ای از کد است که سیستم را قادر می سازد تا با سیستم های خارجی برای انجام یک عمل یا مجموعه ای از اقدامات خارج از دانش و محدوده مدل تعامل داشته باشد.

فیلدها
شیء functionDeclarations[] object ( FunctionDeclaration )

اختیاری. لیستی از FunctionDeclarations موجود در مدل که می تواند برای فراخوانی تابع استفاده شود.

مدل یا سیستم عملکرد را اجرا نمی کند. در عوض، تابع تعریف شده ممکن است به عنوان یک FunctionCall با آرگومان هایی به سمت کلاینت برای اجرا برگردانده شود. ممکن است مدل تصمیم بگیرد که زیر مجموعه ای از این توابع را با پر کردن FunctionCall در پاسخ فراخوانی کند. نوبت مکالمه بعدی ممکن است حاوی یک FunctionResponse با زمینه تولید "function" Content.role برای نوبت مدل بعدی باشد.

شی codeExecution object ( CodeExecution )

اختیاری. مدل را قادر می سازد تا کد را به عنوان بخشی از تولید اجرا کند.

نمایندگی JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "codeExecution": {
    object (CodeExecution)
  }
}

اعلامیه عملکرد

نمایش ساختار یافته یک اعلان تابع همانطور که توسط مشخصات OpenAPI 3.03 تعریف شده است. در این اعلان نام تابع و پارامترها گنجانده شده است. این FunctionDeclaration نمایشی از یک بلوک کد است که می تواند به عنوان یک Tool توسط مدل استفاده شود و توسط مشتری اجرا شود.

فیلدها
string name

مورد نیاز. نام تابع. باید az، AZ، ​​0-9 باشد یا دارای زیرخط و خط تیره با حداکثر طول 63 باشد.

string description

مورد نیاز. توضیح مختصری از عملکرد

آبجکت parameters object ( Schema )

اختیاری. پارامترهای این تابع را شرح می دهد. کلید رشته رشته پارامتر Open API 3.03 را منعکس می کند: نام پارامتر. نام پارامترها به حروف بزرگ و کوچک حساس هستند. Schema Value: طرحی که نوع مورد استفاده برای پارامتر را تعیین می کند.

نمایندگی JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}

طرحواره

شی Schema اجازه تعریف انواع داده های ورودی و خروجی را می دهد. این انواع می توانند اشیاء باشند، بلکه بدوی و آرایه نیز هستند. یک زیرمجموعه انتخابی از یک شی طرحواره OpenAPI 3.0 را نشان می دهد.

فیلدها
enum را type enum ( Type )

مورد نیاز. نوع داده

string format

اختیاری. فرمت داده ها این فقط برای انواع داده های اولیه استفاده می شود. فرمت های پشتیبانی شده: برای نوع NUMBER: شناور، دو برابر برای نوع INTEGER: int32، int64 برای نوع STRING: enum

string description

اختیاری. شرح مختصری از پارامتر این می تواند شامل نمونه هایی از استفاده باشد. شرح پارامتر ممکن است به صورت Markdown قالب بندی شود.

nullable boolean

اختیاری. نشان می دهد که آیا مقدار ممکن است null باشد.

string enum[]

اختیاری. مقادیر احتمالی عنصر Type.STRING با فرمت enum. برای مثال می‌توانیم یک جهت Enum را به این صورت تعریف کنیم: {type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}

رشته maxItems string ( int64 format)

اختیاری. حداکثر تعداد عناصر برای Type.ARRAY.

رشته minItems string ( int64 format)

اختیاری. حداقل تعداد عناصر برای Type.ARRAY.

نقشه properties map (key: string, value: object ( Schema ))

اختیاری. خواص Type.OBJECT.

یک شی حاوی لیستی از "key": value . مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

string required[]

اختیاری. ویژگی های مورد نیاز Type.OBJECT.

شی items object ( Schema )

اختیاری. طرحواره عناصر Type.ARRAY.

نمایندگی JSON
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}

تایپ کنید

نوع شامل لیستی از انواع داده های OpenAPI است که توسط https://spec.openapis.org/oas/v3.0.3#data-types تعریف شده است.

Enums
TYPE_UNSPECIFIED مشخص نیست، نباید استفاده شود.
STRING نوع رشته
NUMBER نوع شماره
INTEGER نوع عدد صحیح
BOOLEAN نوع بولی.
ARRAY نوع آرایه
OBJECT نوع شی

اجرای کد

این نوع هیچ فیلدی ندارد.

ابزاری که کدهای تولید شده توسط مدل را اجرا می کند و به طور خودکار نتیجه را به مدل برمی گرداند.

همچنین ExecutableCode و CodeExecutionResult را ببینید که فقط هنگام استفاده از این ابزار تولید می شوند.

ToolConfig

پیکربندی ابزار حاوی پارامترهایی برای تعیین استفاده Tool در درخواست.

فیلدها
شی functionCallingConfig object ( FunctionCallingConfig )

اختیاری. پیکربندی فراخوانی تابع.

نمایندگی JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

پیکربندی برای تعیین رفتار فراخوانی تابع.

فیلدها
تعداد mode enum ( Mode )

اختیاری. حالتی را که فراخوانی تابع باید در آن اجرا شود را مشخص می کند. اگر مشخص نشده باشد، مقدار پیش فرض روی AUTO تنظیم می شود.

string allowedFunctionNames[]

اختیاری. مجموعه ای از نام های تابع که در صورت ارائه، توابعی را که مدل فراخوانی می کند محدود می کند.

این فقط زمانی باید تنظیم شود که حالت ANY باشد. نام توابع باید با [FunctionDeclaration.name] مطابقت داشته باشد. با تنظیم حالت بر روی ANY، مدل یک فراخوانی تابع را از مجموعه نام های تابع ارائه شده پیش بینی می کند.

نمایندگی JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

حالت

رفتار اجرا را برای فراخوانی تابع با تعریف حالت اجرا تعریف می کند.

Enums
MODE_UNSPECIFIED حالت فراخوانی عملکرد نامشخص. این مقدار نباید استفاده شود.
AUTO رفتار مدل پیش‌فرض، مدل تصمیم می‌گیرد یک فراخوانی تابع یا یک پاسخ زبان طبیعی را پیش‌بینی کند.
ANY مدل محدود است که همیشه فقط یک فراخوانی تابع را پیش‌بینی کند. اگر "allowedFunctionNames" تنظیم شود، فراخوانی تابع پیش بینی شده به هر یک از "allowedFunctionNames" محدود می شود، در غیر این صورت فراخوانی تابع پیش بینی شده هر یک از "functionDeclarations" ارائه شده خواهد بود.
NONE مدل هیچ فراخوانی تابعی را پیش بینی نمی کند. رفتار مدل مانند زمانی است که هیچ اعلان تابعی را ارسال نمی کنید.

UsageMetadata

فراداده در مورد استفاده از محتوای حافظه پنهان.

فیلدها
totalTokenCount integer

تعداد کل نشانه هایی که محتوای کش مصرف می کند.

نمایندگی JSON
{
  "totalTokenCount": integer
}