컨텍스트 캐시 업데이트

컨텍스트 캐시가 만료되면 업데이트할 수 있습니다. 컨텍스트 캐시의 기본 만료 시간은 생성 시간으로부터 60분 후입니다. 만료된 컨텍스트 캐시는 가비지 컬렉션 프로세스 중에 삭제되며 사용할 수 없거나 업데이트할 수 없습니다. 만료되지 않은 컨텍스트 캐시의 만료 시간을 업데이트하려면 다음 속성 중 하나를 업데이트하세요.

  • ttl - 캐시가 생성된 후 또는 ttl가 만료되기 전에 업데이트된 후 캐시가 유지되는 시간(초 및 나노초)입니다. ttl을 설정하면 캐시의 expireTime이 업데이트됩니다.

  • expire_time - 컨텍스트 캐시가 만료되는 절대 날짜와 시간을 지정하는 Timestamp입니다.

ttl 매개변수를 사용하여 컨텍스트 캐시 업데이트

다음은 만료 시간을 3,600초씩 업데이트하는 curl 명령어의 예입니다.

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generate_contentstream 매개변수를 사용합니다.

  response = model.generate_content(contents=[...], stream = True)
  

비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False로 설정합니다.

샘플 코드

import vertexai
import datetime

from vertexai.preview import caching

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# cache_id = "your-cache-id"

vertexai.init(project=PROJECT_ID, location="us-central1")

cached_content = caching.CachedContent(cached_content_name=cache_id)

# Update the expiration time by 1 hour
cached_content.update(ttl=datetime.timedelta(hours=1))
cached_content.refresh()

print(cached_content.expire_time)
# Example response:
# 2024-09-11 17:16:45.864520+00:00

Go

이 샘플을 사용해 보기 전에 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?"))
  

샘플 코드

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/vertexai/genai"
)

// updateContextCache shows how to update the expiration time of a cached content, by specifying
// a new TTL (time-to-live duration)
// contentName is the ID of the cached content to update
func updateContextCache(w io.Writer, contentName string, projectID, location string) error {
	// location := "us-central1"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	cachedContent, err := client.GetCachedContent(ctx, contentName)
	if err != nil {
		return fmt.Errorf("GetCachedContent: %w", err)
	}

	update := &genai.CachedContentToUpdate{
		Expiration: &genai.ExpireTimeOrTTL{TTL: 2 * time.Hour},
	}

	_, err = client.UpdateCachedContent(ctx, cachedContent, update)
	fmt.Fprintf(w, "Updated cached content %q", contentName)
	return err
}

REST

Vertex AI API를 사용하여 게시자 모델 엔드포인트에 PATCH 요청을 보내면 REST를 사용하여 컨텍스트 캐시를 업데이트할 수 있습니다. 다음 예는 ttl 매개변수를 사용하여 만료일을 업데이트하는 방법을 보여줍니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 컨텍스트 캐시 만들기 요청이 처리된 리전입니다.
  • CACHE_ID: 컨텍스트 캐시 ID입니다. 컨텍스트 캐시를 만들 때 컨텍스트 캐시 ID가 반환됩니다. 또한 다음을 사용하여 Google Cloud 프로젝트의 컨텍스트 캐시를 나열해 컨텍스트 캐시 ID를 찾을 수도 있습니다. 자세한 내용은 컨텍스트 캐시 만들기컨텍스트 캐시 나열을 참조하세요.
  • SECONDS: 캐시가 만료되기 전까지 기간의 초 부분을 지정하는 float입니다.
  • NANOSECONDS: 캐시가 만료되기 전까지 기간의 나노초 부분을 지정하는 float입니다.

HTTP 메서드 및 URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID

JSON 요청 본문:

{
  "seconds":"SECONDS",
  "nanos":"NANOSECONDS"
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 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"

PowerShell

요청 본문을 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 응답이 표시됩니다.

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 매개변수를 사용하여 컨텍스트 캐시 업데이트

다음은 expire_time 매개변수를 사용하여 만료 시간을 2024년 6월 30일 오전 9시로 업데이트하는 curl 명령어의 예입니다.

REST

Vertex AI API를 사용하여 게시자 모델 엔드포인트에 PATCH 요청을 보내면 REST를 사용하여 컨텍스트 캐시를 업데이트할 수 있습니다. 다음 예는 expire_time 매개변수를 사용하여 만료일을 업데이트하는 방법을 보여줍니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

HTTP 메서드 및 URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID

JSON 요청 본문:

{
   "expire_time":"EXPIRE_TIME"
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 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"

PowerShell

요청 본문을 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 응답이 표시됩니다.

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

다음 단계