switch llm to gemini

This commit is contained in:
unintendedfraud
2025-04-27 21:53:31 +02:00
parent 1f2411b6bf
commit 07397d4d8b
7 changed files with 256 additions and 39 deletions
+22 -23
View File
@@ -7,9 +7,11 @@ import (
"regexp"
"time"
"hal/gemini"
"hal/openai"
"github.com/bwmarrin/discordgo"
"google.golang.org/genai"
)
const MAX_HISTORY = 50
@@ -20,17 +22,15 @@ const (
)
var spams = []string{
":GroGroDebile:",
"Arrête de spam putain!",
"Wesh...",
"...",
"Flemme.",
"Laisse-moi tranquille!",
"Fdr",
":soxx:",
}
var messagesHistory []*openai.ChatMessage = []*openai.ChatMessage{}
// messagesHistory []*openai.ChatMessage = []*openai.ChatMessage{}
var geminiHistory []*genai.Content = []*genai.Content{}
var usersHistoryCount map[string]*userHistoryCount = map[string]*userHistoryCount{}
@@ -41,12 +41,14 @@ type userHistoryCount struct {
}
type Handler struct {
client *openai.Client
openaiClient *openai.Client
geminiClient *gemini.Client
}
func Init(token string) Handler {
func Init(openaiToken string, geminiToken string) Handler {
return Handler{
client: openai.NewClient(token),
openaiClient: openai.NewClient(openaiToken),
geminiClient: gemini.NewClient(geminiToken),
}
}
@@ -68,7 +70,7 @@ func (h Handler) OnMessageCreated(s *discordgo.Session, m *discordgo.MessageCrea
return
}
res, err := h.client.Chat(messagesHistory)
llmRes, err := h.geminiClient.GenerateContent(geminiHistory)
if err != nil {
sendResponse(
s,
@@ -76,36 +78,33 @@ func (h Handler) OnMessageCreated(s *discordgo.Session, m *discordgo.MessageCrea
fmt.Sprintf("X_X: %s", err.Error()),
)
log.Printf("\nfailed to query open ai with the following prompt [%s]. Error: %s", m.Content, err.Error())
log.Printf("\nfailed to query the llm with the following prompt [%s]. Error: %s", m.Content, err.Error())
return
}
if len(res.Choices) > 0 {
aiResponse := res.Choices[0].Message.Content
sendResponse(s, m.ChannelID, aiResponse)
} else {
sendResponse(s, m.ChannelID, "la fatigue")
}
sendResponse(s, m.ChannelID, llmRes.Text())
}
func addMessageToHistory(m *discordgo.Message, isHal bool) []*openai.ChatMessage {
func addMessageToHistory(m *discordgo.Message, isHal bool) []*genai.Content {
var role string
if isHal {
role = "system"
role = "model"
} else {
role = "user"
}
messagesHistory = append(messagesHistory, &openai.ChatMessage{
Role: role,
Content: cleanMessage(m.Content),
geminiHistory = append(geminiHistory, &genai.Content{
Role: role,
Parts: []*genai.Part{
genai.NewPartFromText(cleanMessage(m.Content)),
},
})
if len(messagesHistory) > MAX_HISTORY {
messagesHistory = messagesHistory[1:]
if len(geminiHistory) > MAX_HISTORY {
geminiHistory = geminiHistory[1:]
}
return messagesHistory
return geminiHistory
}
func cleanMessage(p string) string {