package main import ( "context" "fmt" "os" "go.wit.com/log" "google.golang.org/genai" ) // doConnect initializes the Gemini client and handles the request flow. func doConnect() error { apiKey := os.Getenv("GEMINI_API_KEY") if apiKey == "" { return log.Errorf("GEMINI_API_KEY environment variable not set") } ctx := context.Background() client, err := genai.NewClient(ctx, &genai.ClientConfig{APIKey: apiKey}) if err != nil { return log.Errorf("failed to create new genai client: %w", err) } if argv.JsonFile != "" { req, err := parseJSON(argv.JsonFile) if err != nil { return err } log.Info("parseJSON() ok. model =", req.Model) genaiContent, err := convertToGenai(req) if err != nil { return log.Errorf("failed to convert to genai.Content: %w", err) } log.Info("Successfully converted JSON to genai.Content") // Here you would now use the 'genaiContent' to send to the API _ = genaiContent // Prevent unused variable error for now return nil } log.Info("doing sampleHello()") return sampleHello(client) } // sampleHello sends a hardcoded prompt to the model and prints the response. func sampleHello(client *genai.Client) error { log.Info("Sending 'hello, how are you' to the Gemini API...") ctx := context.Background() // Create the parts slice parts := []*genai.Part{ {Text: "hello, how are you"}, } content := []*genai.Content{{Parts: parts}} resp, err := client.Models.GenerateContent(ctx, "gemini-1.5-flash-latest", content, nil) if err != nil { return log.Errorf("error sending message: %v", err) } log.Info("Response from API:") for _, cand := range resp.Candidates { if cand.Content != nil { for _, part := range cand.Content.Parts { fmt.Println(part) } } } return nil }