func CacheUpdate()

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
}