mirror of
https://github.com/HugeFrog24/go-telegram-bot.git
synced 2026-03-02 00:14:34 +00:00
Concern separation
This commit is contained in:
51
anthropic.go
Normal file
51
anthropic.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/liushuangls/go-anthropic/v2"
|
||||
)
|
||||
|
||||
func (b *Bot) getAnthropicResponse(ctx context.Context, messages []anthropic.Message, isNewChat, isAdminOrOwner bool) (string, error) {
|
||||
var systemMessage string
|
||||
if isNewChat {
|
||||
systemMessage = "You are a helpful AI assistant."
|
||||
} else {
|
||||
systemMessage = "Continue the conversation."
|
||||
}
|
||||
|
||||
if !isAdminOrOwner {
|
||||
systemMessage += " Avoid discussing sensitive topics or providing harmful information."
|
||||
}
|
||||
|
||||
// Ensure the roles are correct
|
||||
for i := range messages {
|
||||
if messages[i].Role == "user" {
|
||||
messages[i].Role = anthropic.RoleUser
|
||||
} else if messages[i].Role == "assistant" {
|
||||
messages[i].Role = anthropic.RoleAssistant
|
||||
}
|
||||
}
|
||||
|
||||
model := anthropic.ModelClaude3Dot5Sonnet20240620
|
||||
if !isAdminOrOwner {
|
||||
model = anthropic.ModelClaudeInstant1Dot2
|
||||
}
|
||||
|
||||
resp, err := b.anthropicClient.CreateMessages(ctx, anthropic.MessagesRequest{
|
||||
Model: model,
|
||||
Messages: messages,
|
||||
System: systemMessage,
|
||||
MaxTokens: 1000,
|
||||
})
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("error creating Anthropic message: %w", err)
|
||||
}
|
||||
|
||||
if len(resp.Content) == 0 || resp.Content[0].Type != anthropic.MessagesContentTypeText {
|
||||
return "", fmt.Errorf("unexpected response format from Anthropic")
|
||||
}
|
||||
|
||||
return resp.Content[0].GetText(), nil
|
||||
}
|
||||
Reference in New Issue
Block a user