Caching

Tính năng lưu vào bộ nhớ đệm theo ngữ cảnh cho phép bạn lưu và sử dụng lại những mã thông báo đầu vào đã tính toán sẵn mà bạn muốn dùng nhiều lần, chẳng hạn như khi đặt nhiều câu hỏi về cùng một tệp nội dung nghe nhìn. Điều này có thể giúp tiết kiệm chi phí và tốc độ, tuỳ thuộc vào cách sử dụng. Để biết thông tin giới thiệu chi tiết, hãy xem hướng dẫn về Lưu vào bộ nhớ đệm theo bối cảnh.

Phương thức: cacheContents.create

Tạo tài nguyên Nội dung được lưu trong bộ nhớ đệm.

Điểm cuối

bài đăng https://generativelanguage.googleapis.com/v1beta/cachedContents

Nội dung yêu cầu

Nội dung yêu cầu chứa một bản sao của CachedContent.

Số trường
contents[] object (Content)

Không bắt buộc. Chỉ nhập. Bất biến. Nội dung được lưu vào bộ nhớ đệm.

tools[] object (Tool)

Không bắt buộc. Chỉ nhập. Bất biến. Danh sách Tools mà mô hình có thể dùng để tạo phản hồi tiếp theo

Trường kết hợp expiration. Chỉ định thời điểm tài nguyên này sẽ hết hạn. expiration chỉ có thể là một trong những trạng thái sau đây:
expireTime string (Timestamp format)

Dấu thời gian (theo giờ UTC) tại thời điểm tài nguyên này được coi là đã hết hạn. Trạng thái này luôn được cung cấp trên đầu ra, bất kể nội dung nào được gửi trên đầu vào.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Chỉ nhập. TTL mới cho tài nguyên này, chỉ nhập.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

name string

Không bắt buộc. Giá trị nhận dạng. Tên tài nguyên tham chiếu đến nội dung được lưu vào bộ nhớ đệm. Định dạng cachedContents/{id}

displayName string

Không bắt buộc. Bất biến. Tên hiển thị có ý nghĩa do người dùng tạo cho nội dung được lưu vào bộ nhớ đệm. Tối đa 128 ký tự Unicode.

model string

Bắt buộc. Bất biến. Tên của Model để sử dụng cho định dạng nội dung được lưu vào bộ nhớ đệm: models/{model}

systemInstruction object (Content)

Không bắt buộc. Chỉ nhập. Bất biến. Hướng dẫn hệ thống thiết lập dành cho nhà phát triển. Hiện chỉ có văn bản.

toolConfig object (ToolConfig)

Không bắt buộc. Chỉ nhập. Bất biến. Cấu hình công cụ. Cấu hình này được dùng chung cho tất cả công cụ.

Yêu cầu mẫu

Cơ bản

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)

Vỏ

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

Tên người gửi

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)

Từ cuộc trò chuyện

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)

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một thực thể mới tạo của CachedContent.

Phương thức: cacheContents.list

Liệt kê Nội dung được lưu trong bộ nhớ đệm.

Điểm cuối

nhận https://generativelanguage.googleapis.com/v1beta/cachedContents

Tham số truy vấn

pageSize integer

Không bắt buộc. Số lượng tối đa nội dung đã lưu vào bộ nhớ đệm cần trả về. Dịch vụ có thể trả về ít hơn giá trị này. Nếu bạn không chỉ định, hàm sẽ trả về một số mục mặc định (dưới mức tối đa). Giá trị tối đa là 1000; các giá trị lớn hơn 1000 sẽ bị buộc thành 1000.

pageToken string

Không bắt buộc. Mã thông báo trang, nhận được từ lệnh gọi cachedContents.list trước đó. Cung cấp mã này để truy xuất trang tiếp theo.

Khi phân trang, tất cả các tham số khác được cung cấp cho cachedContents.list phải khớp với lệnh gọi đã cung cấp mã thông báo trang.

Nội dung yêu cầu

Nội dung yêu cầu phải trống.

Nội dung phản hồi

Phản hồi có danh sách cacheContents.

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Số trường
cachedContents[] object (CachedContent)

Danh sách nội dung được lưu trong bộ nhớ đệm.

nextPageToken string

Mã thông báo có thể được gửi dưới dạng pageToken để truy xuất trang tiếp theo. Nếu trường này bị bỏ qua thì sẽ không có trang tiếp theo.

Biểu diễn dưới dạng JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Phương thức: collectionsContents.get

Đọc tài nguyên Nội dung được lưu trong bộ nhớ đệm.

Điểm cuối

nhận https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

Tham số đường dẫn

name string

Bắt buộc. Tên tài nguyên tham chiếu đến mục nhập bộ nhớ đệm nội dung. Định dạng: cachedContents/{id}. Định dạng này có dạng cachedContents/{cachedcontent}.

Nội dung yêu cầu

Nội dung yêu cầu phải trống.

Yêu cầu mẫu

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)

Vỏ

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

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một phiên bản của CachedContent.

Phương thức: collectionsContents.patch

Cập nhật tài nguyên Nội dung được lưu vào bộ nhớ đệm (chỉ có thể cập nhật khi hết hạn).

Điểm cuối

bản vá https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

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

Tham số đường dẫn

cachedContent.name string

Không bắt buộc. Giá trị nhận dạng. Tên tài nguyên tham chiếu đến nội dung được lưu vào bộ nhớ đệm. Định dạng: cachedContents/{id}. Định dạng này có dạng cachedContents/{cachedcontent}.

Tham số truy vấn

updateMask string (FieldMask format)

Danh sách các trường cần cập nhật.

Đây là danh sách các tên trường đủ điều kiện được phân tách bằng dấu phẩy. Ví dụ: "user.displayName,photo"

Nội dung yêu cầu

Nội dung yêu cầu chứa một bản sao của CachedContent.

Số trường Trường kết hợp expiration. Chỉ định thời điểm tài nguyên này sẽ hết hạn. expiration chỉ có thể là một trong những trạng thái sau đây:
expireTime string (Timestamp format)

Dấu thời gian (theo giờ UTC) tại thời điểm tài nguyên này được coi là đã hết hạn. Trạng thái này luôn được cung cấp trên đầu ra, bất kể nội dung nào được gửi trên đầu vào.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Chỉ nhập. TTL mới cho tài nguyên này, chỉ nhập.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

name string

Không bắt buộc. Giá trị nhận dạng. Tên tài nguyên tham chiếu đến nội dung được lưu vào bộ nhớ đệm. Định dạng cachedContents/{id}

Yêu cầu mẫu

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)

Vỏ

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

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một phiên bản của CachedContent.

Phương thức: cacheContents.delete

Xoá tài nguyên Nội dung được lưu trong bộ nhớ đệm.

Điểm cuối

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

Tham số đường dẫn

name string

Bắt buộc. Tên tài nguyên tham chiếu đến mục nhập bộ nhớ đệm nội dung Định dạng: cachedContents/{id} Tên này có dạng cachedContents/{cachedcontent}.

Nội dung yêu cầu

Nội dung yêu cầu phải trống.

Yêu cầu mẫu

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)

Vỏ

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

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ trống.

Tài nguyên REST: cacheContents

Tài nguyên: cacheContent

Nội dung đã được xử lý trước và có thể được sử dụng trong các yêu cầu tiếp theo tới dịch vụ tạo sinh.

Bạn chỉ có thể sử dụng nội dung được lưu vào bộ nhớ đệm với mô hình được tạo.

Số trường
contents[] object (Content)

Không bắt buộc. Chỉ nhập. Bất biến. Nội dung được lưu vào bộ nhớ đệm.

tools[] object (Tool)

Không bắt buộc. Chỉ nhập. Bất biến. Danh sách Tools mà mô hình có thể dùng để tạo phản hồi tiếp theo

createTime string (Timestamp format)

Chỉ có đầu ra. Thời gian tạo của mục bộ nhớ đệm.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

Chỉ có đầu ra. Thời điểm mục nhập trong bộ nhớ đệm được cập nhật lần gần đây nhất theo giờ UTC.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

usageMetadata object (UsageMetadata)

Chỉ có đầu ra. Siêu dữ liệu về việc sử dụng nội dung được lưu vào bộ nhớ đệm.

Trường kết hợp expiration. Chỉ định thời điểm tài nguyên này sẽ hết hạn. expiration chỉ có thể là một trong những trạng thái sau đây:
expireTime string (Timestamp format)

Dấu thời gian (theo giờ UTC) tại thời điểm tài nguyên này được coi là đã hết hạn. Trạng thái này luôn được cung cấp trên đầu ra, bất kể nội dung nào được gửi trên đầu vào.

Dấu thời gian theo múi giờ "Zulu" RFC3339 (giờ UTC) với độ phân giải nano giây và lên đến 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

Chỉ nhập. TTL mới cho tài nguyên này, chỉ nhập.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

name string

Không bắt buộc. Giá trị nhận dạng. Tên tài nguyên tham chiếu đến nội dung được lưu vào bộ nhớ đệm. Định dạng cachedContents/{id}

displayName string

Không bắt buộc. Bất biến. Tên hiển thị có ý nghĩa do người dùng tạo cho nội dung được lưu vào bộ nhớ đệm. Tối đa 128 ký tự Unicode.

model string

Bắt buộc. Bất biến. Tên của Model để sử dụng cho định dạng nội dung được lưu vào bộ nhớ đệm: models/{model}

systemInstruction object (Content)

Không bắt buộc. Chỉ nhập. Bất biến. Hướng dẫn hệ thống thiết lập dành cho nhà phát triển. Hiện chỉ có văn bản.

toolConfig object (ToolConfig)

Không bắt buộc. Chỉ nhập. Bất biến. Cấu hình công cụ. Cấu hình này được dùng chung cho tất cả công cụ.

Biểu diễn dưới dạng 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)
  }
}

Nội dung

Loại dữ liệu có cấu trúc cơ sở chứa nội dung nhiều phần của một thông báo.

Content bao gồm một trường role chỉ định thực thể tạo của Content và trường parts chứa dữ liệu nhiều phần chứa nội dung của lượt thông báo.

Số trường
parts[] object (Part)

Đã sắp xếp Parts cấu thành một thông báo. Các phần có thể có nhiều loại MIME.

role string

Không bắt buộc. Nhà sản xuất nội dung. Phải là "người dùng" hoặc "model".

Hữu ích khi thiết lập cho các cuộc trò chuyện nhiều lượt, nếu không có thể để trống hoặc không đặt.

Biểu diễn dưới dạng JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Phần

Một loại dữ liệu chứa nội dung nghe nhìn thuộc thông báo Content gồm nhiều phần.

Một Part chứa dữ liệu có một kiểu dữ liệu liên kết. Part chỉ có thể chứa một trong các kiểu được chấp nhận trong Part.data.

Part phải có loại MIME IANA cố định để xác định loại và loại phụ của phương tiện truyền thông nếu trường inlineData được điền bằng các byte thô.

Số trường

Trường kết hợp data.

data chỉ có thể là một trong những trạng thái sau đây:

text string

Văn bản cùng dòng.

inlineData object (Blob)

byte nội dung nghe nhìn cùng dòng.

functionCall object (FunctionCall)

Một FunctionCall được dự đoán được trả về từ mô hình chứa chuỗi đại diện cho FunctionDeclaration.name cùng với các đối số và giá trị của các đối số đó.

functionResponse object (FunctionResponse)

Kết quả đầu ra của một FunctionCall chứa một chuỗi đại diện cho FunctionDeclaration.name và một đối tượng JSON có cấu trúc chứa bất kỳ dữ liệu đầu ra nào của hàm sẽ được dùng làm ngữ cảnh cho mô hình.

fileData object (FileData)

Dữ liệu dựa trên URI.

executableCode object (ExecutableCode)

Mã do mô hình tạo ra để thực thi.

codeExecutionResult object (CodeExecutionResult)

Kết quả thực thi ExecutableCode.

Biểu diễn dưới dạng 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.
}

Blob

byte nội dung nghe nhìn thô.

Không được gửi văn bản dưới dạng byte thô, hãy sử dụng "text" .

Số trường
mimeType string

Loại MIME tiêu chuẩn IANA của dữ liệu nguồn. Ví dụ: - image/png - image/jpeg Nếu cung cấp loại MIME không được hỗ trợ, hệ thống sẽ trả về lỗi. Để biết danh sách đầy đủ các loại được hỗ trợ, hãy xem Định dạng tệp được hỗ trợ.

data string (bytes format)

byte thô cho định dạng nội dung nghe nhìn.

Chuỗi được mã hoá base64.

Biểu diễn dưới dạng JSON
{
  "mimeType": string,
  "data": string
}

Lệnh gọi hàm

Một FunctionCall được dự đoán được trả về từ mô hình chứa chuỗi đại diện cho FunctionDeclaration.name cùng với các đối số và giá trị của các đối số đó.

Số trường
name string

Bắt buộc. Tên hàm cần gọi. Phải là a-z, A-Z, 0-9 hoặc chứa dấu gạch dưới và dấu gạch ngang, với độ dài tối đa là 63.

args object (Struct format)

Không bắt buộc. Các tham số và giá trị hàm ở định dạng đối tượng JSON.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Kết quả đầu ra từ FunctionCall chứa một chuỗi đại diện cho FunctionDeclaration.name và một đối tượng JSON có cấu trúc chứa bất kỳ đầu ra nào của hàm sẽ được dùng làm ngữ cảnh cho mô hình. Hàm này phải chứa kết quả của FunctionCall được đưa ra dựa trên thông tin dự đoán về mô hình.

Số trường
name string

Bắt buộc. Tên hàm cần gọi. Phải là a-z, A-Z, 0-9 hoặc chứa dấu gạch dưới và dấu gạch ngang, với độ dài tối đa là 63.

response object (Struct format)

Bắt buộc. Phản hồi hàm ở định dạng đối tượng JSON.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "response": {
    object
  }
}

FileData

Dữ liệu dựa trên URI.

Số trường
mimeType string

Không bắt buộc. Loại MIME tiêu chuẩn IANA của dữ liệu nguồn.

fileUri string

Bắt buộc. URI.

Biểu diễn dưới dạng JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Mã do mô hình tạo ra sẽ được thực thi và kết quả được trả về cho mô hình.

Chỉ được tạo khi sử dụng công cụ CodeExecution, trong đó mã sẽ được thực thi tự động và CodeExecutionResult tương ứng cũng sẽ được tạo.

Số trường
language enum (Language)

Bắt buộc. Ngôn ngữ lập trình của code.

code string

Bắt buộc. Mã cần thực thi.

Biểu diễn dưới dạng JSON
{
  "language": enum (Language),
  "code": string
}

Ngôn ngữ

Ngôn ngữ lập trình được hỗ trợ cho mã đã tạo.

Enum
LANGUAGE_UNSPECIFIED Ngôn ngữ không xác định. Không nên sử dụng giá trị này.
PYTHON Python >= 3.10, có sẵn numpy và simpy.

CodeExecutionResult

Kết quả thực thi ExecutableCode.

Chỉ được tạo khi sử dụng CodeExecution và luôn tuân theo part chứa ExecutableCode.

Số trường
outcome enum (Outcome)

Bắt buộc. Kết quả thực thi mã.

output string

Không bắt buộc. Chứa stdout khi thực thi mã thành công, stderr hoặc các nội dung mô tả khác.

Biểu diễn dưới dạng JSON
{
  "outcome": enum (Outcome),
  "output": string
}

Kết quả

Liệt kê các kết quả có thể xảy ra của quá trình thực thi mã.

Enum
OUTCOME_UNSPECIFIED Trạng thái không xác định. Không nên sử dụng giá trị này.
OUTCOME_OK Đã thực thi mã thành công.
OUTCOME_FAILED Quá trình thực thi mã đã kết thúc nhưng có lỗi. stderr phải chứa lý do.
OUTCOME_DEADLINE_EXCEEDED Quá trình thực thi mã đã chạy quá lâu nên đã bị huỷ. Có thể có hoặc không có một phần đầu ra.

Công cụ

Thông tin chi tiết về công cụ mà mô hình có thể sử dụng để tạo câu trả lời.

Tool là một đoạn mã cho phép hệ thống tương tác với các hệ thống bên ngoài để thực hiện một hành động hoặc một tập hợp hành động, nằm ngoài phạm vi kiến thức và phạm vi của mô hình.

Số trường
functionDeclarations[] object (FunctionDeclaration)

Không bắt buộc. Danh sách FunctionDeclarations có sẵn cho mô hình có thể dùng để gọi hàm.

Mô hình hoặc hệ thống không thực thi hàm. Thay vào đó, hàm đã định nghĩa có thể được trả về dưới dạng [FunctionCall][content.part.function_call] có các đối số phía máy khách để thực thi. Mô hình có thể quyết định gọi một tập hợp con các hàm này bằng cách điền [FunctionCall][content.part.function_call] trong phản hồi. Lượt trò chuyện tiếp theo có thể chứa [FunctionResponse][content.part.function_response] với "hàm" [content.role] bối cảnh cho phiên bản tiếp theo.

codeExecution object (CodeExecution)

Không bắt buộc. Cho phép mô hình thực thi mã trong quá trình tạo.

Biểu diễn dưới dạng JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "codeExecution": {
    object (CodeExecution)
  }
}

FunctionDeclaration

Biểu diễn có cấu trúc của nội dung khai báo hàm như xác định trong thông số kỹ thuật OpenAPI 3.03. Tên hàm và tham số có trong phần khai báo này. FunctionDeclaration này là bản trình bày của một khối mã có thể được mô hình dùng làm Tool và được ứng dụng thực thi.

Số trường
name string

Bắt buộc. Tên hàm. Phải là a-z, A-Z, 0-9 hoặc chứa dấu gạch dưới và dấu gạch ngang, với độ dài tối đa là 63.

description string

Bắt buộc. Mô tả ngắn gọn về hàm.

parameters object (Schema)

Không bắt buộc. Mô tả các tham số cho hàm này. Phản ánh Khóa chuỗi đối tượng tham số Open API 3.03: tên của tham số. Tên tham số có phân biệt chữ hoa chữ thường. Giá trị giản đồ: Giản đồ xác định loại dùng cho tham số.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}

Lược đồ

Đối tượng Schema cho phép định nghĩa các kiểu dữ liệu đầu vào và đầu ra. Các loại này có thể là đối tượng, cũng có thể là dữ liệu nguyên gốc và mảng. Đại diện cho một tập hợp con chọn lọc của đối tượng giản đồ OpenAPI 3.0.

Số trường
type enum (Type)

Bắt buộc. Kiểu dữ liệu.

format string

Không bắt buộc. Định dạng của dữ liệu. Dữ liệu này chỉ được dùng cho các loại dữ liệu gốc. Các định dạng được hỗ trợ: cho loại NUMBER: số thực, gấp đôi cho loại INTEGER: int32, int64 cho loại CHUỖI: enum

description string

Không bắt buộc. Nội dung mô tả ngắn gọn về tham số. Ví dụ về cách sử dụng. Nội dung mô tả tham số có thể được định dạng là Markdown.

nullable boolean

Không bắt buộc. Cho biết liệu giá trị này có thể là rỗng hay không.

enum[] string

Không bắt buộc. Các giá trị có thể có của phần tử Type.STRING có định dạng enum. Ví dụ: chúng ta có thể xác định một Hướng Enum là : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Không bắt buộc. Số lượng phần tử tối đa cho Type.ARRAY.

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

Không bắt buộc. Thuộc tính của Type.OBJECT.

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Không bắt buộc. Các thuộc tính bắt buộc của Type.OBJECT.

items object (Schema)

Không bắt buộc. Giản đồ các phần tử của Type.ARRAY.

Biểu diễn dưới dạng JSON
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}

Loại

Loại chứa danh sách các loại dữ liệu OpenAPI như được xác định theo https://spec.openapis.org/oas/v3.0.3#data-types

Enum
TYPE_UNSPECIFIED Không được chỉ định, không nên sử dụng.
STRING Loại chuỗi.
NUMBER Loại số.
INTEGER Loại số nguyên.
BOOLEAN Loại boolean.
ARRAY Loại mảng.
OBJECT Loại đối tượng.

CodeExecution

Loại này không có trường nào.

Công cụ thực thi mã do mô hình tạo ra và tự động trả về kết quả cho mô hình.

Hãy xem thêm ExecutableCodeCodeExecutionResult chỉ được tạo khi dùng công cụ này.

ToolConfig

Cấu hình Công cụ chứa các tham số để chỉ định cách sử dụng Tool trong yêu cầu.

Số trường
functionCallingConfig object (FunctionCallingConfig)

Không bắt buộc. Cấu hình gọi hàm.

Biểu diễn dưới dạng JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

Cấu hình để chỉ định hành vi gọi hàm.

Số trường
mode enum (Mode)

Không bắt buộc. Chỉ định chế độ thực thi lệnh gọi hàm. Nếu bạn không chỉ định, giá trị mặc định sẽ được đặt thành TỰ ĐỘNG.

allowedFunctionNames[] string

Không bắt buộc. Một tập hợp tên hàm mà khi được cung cấp, sẽ giới hạn các hàm mà mô hình sẽ gọi.

Bạn chỉ nên đặt thuộc tính này khi chế độ là BẤT KỲ. Tên hàm phải khớp với [FunctionDeclaration.name]. Khi chế độ được đặt thành BẤT KỲ, mô hình sẽ dự đoán lệnh gọi hàm từ tập hợp tên hàm được cung cấp.

Biểu diễn dưới dạng JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Chế độ

Xác định hành vi thực thi cho lệnh gọi hàm bằng cách xác định chế độ thực thi.

Enum
MODE_UNSPECIFIED Chế độ gọi hàm không xác định. Không nên sử dụng giá trị này.
AUTO Hành vi mặc định của mô hình, mô hình sẽ quyết định dự đoán lệnh gọi hàm hoặc phản hồi bằng ngôn ngữ tự nhiên.
ANY Mô hình bị hạn chế để chỉ luôn dự đoán lệnh gọi hàm. Nếu "AllowedFunctionNames" được đặt, lệnh gọi hàm dự đoán sẽ bị giới hạn ở bất kỳ một trong số " allowedFunctionNames", nếu không thì lệnh gọi hàm được dự đoán sẽ là bất kỳ một trong các "functionDeclarations" đã cho.
NONE Mô hình sẽ không dự đoán bất kỳ lệnh gọi hàm nào. Hành vi của mô hình cũng giống như khi không truyền bất kỳ nội dung khai báo hàm nào.

UsageMetadata

Siêu dữ liệu về việc sử dụng nội dung được lưu vào bộ nhớ đệm.

Số trường
totalTokenCount integer

Tổng số mã thông báo mà nội dung được lưu vào bộ nhớ đệm sử dụng.

Biểu diễn dưới dạng JSON
{
  "totalTokenCount": integer
}