+21
-5
@@ -30,11 +30,16 @@ func (s *Store) path(id string) string {
|
||||
}
|
||||
|
||||
func (s *Store) Create() (*message.Conversation, error) {
|
||||
return s.CreateWithPreset("")
|
||||
}
|
||||
|
||||
func (s *Store) CreateWithPreset(preset string) (*message.Conversation, error) {
|
||||
conv := &message.Conversation{
|
||||
ID: utils.NewUUID(),
|
||||
Title: "新对话",
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
ID: utils.NewUUID(),
|
||||
Title: "新对话",
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
PresetPrompt: strings.TrimSpace(preset),
|
||||
}
|
||||
if err := s.Save(conv); err != nil {
|
||||
return nil, err
|
||||
@@ -124,7 +129,7 @@ func SaveMessages(store *Store, id string, messages []message.ChatMessage, assis
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conv.Messages = append([]message.ChatMessage(nil), messages...)
|
||||
conv.Messages = filterPresetMessages(messages)
|
||||
conv.Messages = append(conv.Messages, message.ChatMessage{Role: "assistant", Content: assistantContent})
|
||||
if conv.Title == "" || conv.Title == "新对话" {
|
||||
conv.Title = GenTitle(conv.Messages)
|
||||
@@ -132,6 +137,17 @@ func SaveMessages(store *Store, id string, messages []message.ChatMessage, assis
|
||||
return store.Save(conv)
|
||||
}
|
||||
|
||||
func filterPresetMessages(messages []message.ChatMessage) []message.ChatMessage {
|
||||
filtered := make([]message.ChatMessage, 0, len(messages))
|
||||
for _, msg := range messages {
|
||||
if msg.Hidden && strings.EqualFold(msg.Role, "system") {
|
||||
continue
|
||||
}
|
||||
filtered = append(filtered, msg)
|
||||
}
|
||||
return filtered
|
||||
}
|
||||
|
||||
func GenTitle(messages []message.ChatMessage) string {
|
||||
for _, m := range messages {
|
||||
if m.Hidden {
|
||||
|
||||
Reference in New Issue
Block a user