topfans/backend/services/aiChatService/service/chat_service.go
2026-05-28 12:00:19 +08:00

60 lines
1.7 KiB
Go

package service
import (
"context"
"github.com/topfans/backend/services/aiChatService/model"
)
// ChatService 对话服务
type ChatService struct {
LLMService *LLMService
personaService *PersonaService
memoryService *MemoryService
auditService *AuditService
contextTTL int // 上下文过期时间(秒)
triggerTurns int // 触发记忆提取的轮数
}
// NewChatService 创建对话服务
func NewChatService(
llmService *LLMService,
personaService *PersonaService,
memoryService *MemoryService,
auditService *AuditService,
contextTTL int,
triggerTurns int,
) *ChatService {
return &ChatService{
LLMService: llmService,
personaService: personaService,
memoryService: memoryService,
auditService: auditService,
contextTTL: contextTTL,
triggerTurns: triggerTurns,
}
}
// GetHistory 获取对话历史
func (s *ChatService) GetHistory(ctx context.Context, sessionID string) ([]model.Message, error) {
return s.memoryService.GetContext(ctx, sessionID)
}
// SaveContext 保存对话上下文
func (s *ChatService) SaveContext(ctx context.Context, sessionID string, messages []model.Message, personaID string) error {
return s.memoryService.SaveContext(ctx, sessionID, messages, personaID)
}
// ExtractMemory 提取记忆
func (s *ChatService) ExtractMemory(ctx context.Context, userID int64, recentMessages []model.Message) error {
if ShouldExtractMemory(recentMessages, s.triggerTurns) {
return s.memoryService.ExtractMemory(ctx, userID, recentMessages)
}
return nil
}
// GetWelcomeMessage 获取欢迎消息
func (s *ChatService) GetWelcomeMessage(sessionID string, userID int64, starID int64) string {
// 默认欢迎消息
return "亲爱的你来辣 ~~"
}