60 lines
1.7 KiB
Go
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 "亲爱的你来辣 ~~"
|
|
} |