提取用户输入内容(从 messages 中提取用户发送的消息) 修改为只提取最后一条用户消息,避免记录历史输入
(messages []dto.Message)
| 33 | // 提取用户输入内容(从 messages 中提取用户发送的消息) |
| 34 | // 修改为只提取最后一条用户消息,避免记录历史输入 |
| 35 | func extractUserInputFromMessages(messages []dto.Message) string { |
| 36 | if len(messages) == 0 { |
| 37 | return "" |
| 38 | } |
| 39 | |
| 40 | // 从后往前查找,只提取最后一条用户消息 |
| 41 | for i := len(messages) - 1; i >= 0; i-- { |
| 42 | message := messages[i] |
| 43 | if message.Role == "user" { |
| 44 | content := message.StringContent() |
| 45 | if content != "" { |
| 46 | // 过滤代码类内容 |
| 47 | if isCodeContent(content) { |
| 48 | continue |
| 49 | } |
| 50 | // 只保留汉字内容 |
| 51 | filteredContent := filterChineseContent(content) |
| 52 | if filteredContent != "" { |
| 53 | return filteredContent |
| 54 | } |
| 55 | } |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | // 如果没有找到合适的用户消息,返回最后一条消息的内容(作为备选) |
| 60 | lastContent := messages[len(messages)-1].StringContent() |
| 61 | // 过滤代码类内容 |
| 62 | if isCodeContent(lastContent) { |
| 63 | return "" |
| 64 | } |
| 65 | // 只保留汉字内容 |
| 66 | return filterChineseContent(lastContent) |
| 67 | } |
| 68 | |
| 69 | // 检查是否为代码类内容 |
| 70 | func isCodeContent(content string) bool { |
no test coverage detected