func XEnumRaw()

in go/controlled_generation.go [307:355]


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

	rawSchema := &genai.Schema{
		Type: genai.TypeString,
		Enum: []string{"Percussion", "String", "Woodwind", "Brass", "Keyboard"},
	}
	config := &genai.GenerateContentConfig{
		ResponseMIMEType: "text/x.enum",
		ResponseSchema:   rawSchema,
	}

	file, err := client.Files.UploadFromPath(
		ctx, 
		filepath.Join(getMedia(), "organ.jpg"), 
		&genai.UploadFileConfig{
			MIMEType : "image/jpeg",
		},
	)
	if err != nil {
		log.Fatal(err)
	}
	parts := []*genai.Part{
		genai.NewPartFromText("What kind of instrument is this:"),
		genai.NewPartFromURI(file.URI, file.MIMEType),
	}
	contents := []*genai.Content{
		genai.NewContentFromParts(parts, genai.RoleUser),
	}
	response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash",
		contents,
		config,
	)
	if err != nil {
		log.Fatal(err)
	}
	printResponse(response)
	// Expected output: "Keyboard"
	// [END x_enum_raw]
	return response, err
}