74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
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
|
|
}
|