in go/cache.go [402:464]
func CacheUpdate() error {
// [START cache_update]
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GEMINI_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
if err != nil {
log.Fatal(err)
}
modelName := "gemini-1.5-flash-001"
document, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "a11.txt"),
&genai.UploadFileConfig{
MIMEType : "text/plain",
},
)
if err != nil {
log.Fatal(err)
}
parts := []*genai.Part{
genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
Contents: contents,
SystemInstruction: genai.NewContentFromText(
"You are an expert analyzing transcripts.", genai.RoleUser,
),
})
if err != nil {
log.Fatal(err)
}
// Update the TTL (2 hours).
cache, err = client.Caches.Update(ctx, cache.Name, &genai.UpdateCachedContentConfig{
TTL: 7200 * time.Second,
})
if err != nil {
log.Fatal(err)
}
fmt.Println("After update:")
fmt.Println(cache)
// Alternatively, update expire_time directly.
expire := time.Now().Add(15 * time.Minute).UTC()
cache, err = client.Caches.Update(ctx, cache.Name, &genai.UpdateCachedContentConfig{
ExpireTime: expire,
})
if err != nil {
log.Fatal(err)
}
fmt.Println("After expire_time update:")
fmt.Println(cache)
// [END cache_update]
_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
return err
}