buildSummaryPrompt 构建总结提示词
(messages []agentext.Message)
| 159 | |
| 160 | // buildSummaryPrompt 构建总结提示词 |
| 161 | func (s *LLMSummarizer) buildSummaryPrompt(messages []agentext.Message) string { |
| 162 | var sb strings.Builder |
| 163 | |
| 164 | // 添加总结指示 |
| 165 | levelInstructions := map[CompressionLevel]string{ |
| 166 | CompressionLevelLight: "请详细总结以下会话内容,保留大部分细节和具体信息。", |
| 167 | CompressionLevelModerate: "请总结以下会话内容,保留关键信息和重要细节。", |
| 168 | CompressionLevelAggressive: "请简要总结以下会话内容,只保留核心要点和结论。", |
| 169 | } |
| 170 | |
| 171 | instruction := levelInstructions[s.config.Level] |
| 172 | if instruction == "" { |
| 173 | instruction = levelInstructions[CompressionLevelModerate] |
| 174 | } |
| 175 | |
| 176 | sb.WriteString(instruction) |
| 177 | sb.WriteString("\n\n") |
| 178 | |
| 179 | // 添加字数限制 |
| 180 | if s.config.MaxSummaryWords > 0 { |
| 181 | sb.WriteString(fmt.Sprintf("请将总结控制在 %d 字以内。\n\n", s.config.MaxSummaryWords)) |
| 182 | } |
| 183 | |
| 184 | // 添加上下文保留要求 |
| 185 | if s.config.PreserveContext { |
| 186 | sb.WriteString("总结时请保留以下信息:\n") |
| 187 | sb.WriteString("- 用户的关键问题和需求\n") |
| 188 | sb.WriteString("- 重要的决策和结论\n") |
| 189 | sb.WriteString("- 关键的数据和事实\n") |
| 190 | sb.WriteString("- 未解决的问题或待办事项\n\n") |
| 191 | } |
| 192 | |
| 193 | // 添加会话内容 |
| 194 | sb.WriteString("会话内容:\n\n") |
| 195 | for i, msg := range messages { |
| 196 | sb.WriteString(fmt.Sprintf("[消息 %d - %s]\n%s\n\n", i+1, msg.Role, msg.Content)) |
| 197 | } |
| 198 | |
| 199 | return sb.String() |
| 200 | } |
| 201 | |
| 202 | // callLLM 调用 LLM API 生成总结 |
| 203 | // 注意:这是一个简化实现,实际应该使用真实的 LLM API |
no test coverage detected