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
}