您可以在上下文缓存到期时进行更新。上下文缓存的默认到期时间为其创建时间 60 分钟后。已过期的上下文缓存会在垃圾回收过程中被删除,无法使用或更新。如需更新未过期的上下文缓存的到期时间,请更新其以下任一属性:
ttl
- 缓存在创建后或在ttl
更新后到失效之前的有效期(以秒和纳秒为单位)。设置ttl
后,缓存的expireTime
会更新。expire_time
- 一个Timestamp
,用于指定上下文缓存的绝对到期日期和时间。
使用 ttl
参数更新上下文缓存
以下 curl 命令示例会将其到期时间更新为 3,600 秒。
如需了解如何安装或更新 Python 版 Vertex AI SDK,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 Vertex AI SDK for Python API 参考文档。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您将在生成所有输出词元后收到所有响应。
对于流式回答,请使用 generate_content
中的 stream
参数。
response = model.generate_content(contents=[...], stream = True)
对于非流式回答,请移除该参数或将参数设置为 False
。
示例代码
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 Go 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Vertex AI Go SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您会在生成所有输出词元之后收到所有回答。
对于流式回答,请使用 GenerateContentStream
方法。
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
对于非流式回答,请使用 GenerateContent
方法。
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
示例代码
您可以使用 REST 创建上下文缓存,方法是使用 Vertex AI API 向发布方模型端点发送 PATCH 请求。以下示例展示了如何使用 ttl
参数更新到期日期。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID :您的项目 ID。LOCATION :处理该上下文缓存创建请求的区域。CACHE_ID :相应上下文缓存的 ID。创建上下文缓存时,系统会返回上下文缓存 ID。您还可以通过列出 Google Cloud 项目使用的上下文缓存来查找上下文缓存 ID。如需了解详情,请参阅创建上下文缓存和列出上下文缓存。SECONDS :一个float
,用于指定缓存过期前时长的秒数组件。NANOSECONDS :一个float
,用于指定缓存过期前时长的纳秒部分。
HTTP 方法和网址:
PATCH https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID
请求 JSON 正文:
{ "seconds":"SECONDS ", "nanos":"NANOSECONDS " }
如需发送请求,请选择以下方式之一:
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID "
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{ "name": "projects/PROJECT_NUMBER /locations/us-central1/cachedContents/CACHE_ID ", "model": "projects/PROJECT_ID /locations/us-central1/publishers/google/models/gemini-1.5-pro-002", "createTime": "2024-05-30T21:14:39.880235Z", "updateTime": "2024-05-31T00:21:15.350969Z", "expireTime": "2024-05-31T01:21:15.348014Z" }
示例 curl 命令
PROJECT_NUMBER="PROJECT_NUMBER "
LOCATION="us-central1"
PROJECT_ID="PROJECT_ID "
CACHE_ID="CACHE_ID "
curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"\
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}" -d \
'{
"ttl": {"seconds":"3600","nanos":"0"}
}'
使用 expire_time
参数更新上下文缓存
以下 curl 命令示例使用 expire_time
参数将其到期时间更新为 2024 年 6 月 30 日上午 9 点。
您可以使用 REST 创建上下文缓存,方法是使用 Vertex AI API 向发布方模型端点发送 PATCH 请求。以下示例展示了如何使用 expire_time
参数更新到期日期。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID :您的项目 ID。LOCATION :处理该上下文缓存创建请求的区域。CACHE_ID :相应上下文缓存的 ID。创建上下文缓存时,您可以在响应中找到此 ID。EXPIRE_TIME :一个Timestamp
,用于指定上下文缓存的到期时间。
HTTP 方法和网址:
PATCH https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID
请求 JSON 正文:
{ "expire_time":"EXPIRE_TIME " }
如需发送请求,请选择以下方式之一:
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID "
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /cachedContents/CACHE_ID " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{ "name": "projects/PROJECT_NUMBER /locations/us-central1/cachedContents/CACHE_ID ", "model": "projects/PROJECT_ID /locations/us-central1/publishers/google/models/gemini-1.5-pro-002", "createTime": "2024-05-30T21:14:39.880235Z", "updateTime": "2024-05-31T00:20:24.296585Z", "expireTime": "2024-06-30T09:00:00Z" }
示例 curl 命令
PROJECT_NUMBER="PROJECT_NUMBER "
LOCATION="us-central1"
PROJECT_ID="PROJECT_ID "
CACHE_ID="CACHE_ID "
curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"\
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}" -d \
'{
"expire_time":"2024-06-30T09:00:00.000000Z"
}'
后续步骤
- 了解如何使用上下文缓存。
- 了解如何获取与 Google Cloud 项目关联的所有上下文缓存的相关信息。