func CacheCreateFromName()

in go/cache.go [74:136]


func CacheCreateFromName() (*genai.GenerateContentResponse, error) {
	// [START cache_create_from_name]
	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)
	}
	cacheName := cache.Name

	// Later retrieve the cache.
	cache, err = client.Caches.Get(ctx, cacheName, &genai.GetCachedContentConfig{})
	if err != nil {
		log.Fatal(err)
	}

	response, err := client.Models.GenerateContent(
		ctx,
		modelName,
		genai.Text("Find a lighthearted moment from this transcript"),
		&genai.GenerateContentConfig{
			CachedContent: cache.Name,
		},
	)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Response from cache (create from name):")
	printResponse(response)
	// [END cache_create_from_name]

	_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
	return response, err
}