in gollm/gemini.go [386:412]
func (c *GeminiChat) Send(ctx context.Context, contents ...any) (ChatResponse, error) {
log := klog.FromContext(ctx)
log.V(1).Info("sending LLM request", "user", contents)
parts, err := c.partsToGemini(contents...)
if err != nil {
return nil, err
}
genaiContent := &genai.Content{
Role: "user",
Parts: parts,
}
c.history = append(c.history, genaiContent)
result, err := c.client.Models.GenerateContent(ctx, c.model, c.history, c.genConfig)
if err != nil {
return nil, fmt.Errorf("failed to generate content: %w", err)
}
if result == nil || len(result.Candidates) == 0 {
return nil, fmt.Errorf("no response from Gemini")
}
c.history = append(c.history, result.Candidates[0].Content)
geminiResponse := result
log.V(1).Info("got LLM response", "response", geminiResponse)
return &GeminiChatResponse{geminiResponse: geminiResponse}, nil
}