func EnumInJson()

in go/controlled_generation.go [149:187]


func EnumInJson() (*genai.GenerateContentResponse, error) {
	// [START enum_in_json]
	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)
	}

	// We use a schema representing an array of objects.
	schema := &genai.Schema{
		Type: genai.TypeArray,
		Items: &genai.Schema{
			Type: genai.TypeObject,
			Properties: map[string]*genai.Schema{
				"recipe_name": {Type: genai.TypeString},
				"grade":       {Type: genai.TypeString, Enum: []string{"a+", "a", "b", "c", "d", "f"}},
			},
			Required: []string{"recipe_name", "grade"},
		},
	}
	config := &genai.GenerateContentConfig{
		ResponseMIMEType: "application/json",
		ResponseSchema:   schema,
	}
	response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash",
		genai.Text("List about 10 cookie recipes, grade them based on popularity"),
		config,
	)
	if err != nil {
		log.Fatal(err)
	}
	// Expected output: a JSON-parsed list with recipe names and grades (e.g., "a+")
	printResponse(response)
	// [END enum_in_json]
	return response, err
}