compression.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """
  2. 压缩相关 Prompt
  3. 包含 Level 2 消息压缩(LLM 总结)使用的 prompt。
  4. """
  5. # ===== 压缩总结 =====
  6. COMPRESSION_PROMPT_TEMPLATE = """请对以上对话历史进行压缩总结。
  7. ### 摘要要求
  8. 1. 保留关键决策、结论和产出(如创建的文件、修改的代码、得出的分析结论)
  9. 2. 保留重要的上下文(如用户的要求、约束条件、之前的讨论结果)
  10. 3. 省略中间探索过程、重复的工具调用细节
  11. 4. 使用结构化格式(标题 + 要点 + 相关资源引用,若有)
  12. 5. 控制在 2000 字以内
  13. 当前 GoalTree 状态:
  14. {goal_tree_prompt}
  15. 格式要求:
  16. [[SUMMARY]]
  17. (此处填写结构化的摘要内容)
  18. **生成摘要后立即停止,不要继续执行原有任务。**
  19. """
  20. # 保留旧名以兼容 compaction.py 的调用
  21. COMPRESSION_EVAL_PROMPT_TEMPLATE = COMPRESSION_PROMPT_TEMPLATE
  22. SINGLE_TURN_PROMPT = """请对以上对话历史进行压缩总结。
  23. ### 摘要要求
  24. 1. 保留关键决策、结论和产出(如创建的文件、修改的代码、得出的分析结论)
  25. 2. 保留重要的上下文(如用户的要求、约束条件、之前的讨论结果)
  26. 3. 省略中间探索过程、重复的工具调用细节
  27. 4. 使用结构化格式(标题 + 要点 + 相关资源引用,若有)
  28. 5. 控制在 2000 字以内
  29. 当前 GoalTree 状态:
  30. {goal_tree_prompt}
  31. 格式要求:
  32. [[SUMMARY]]
  33. (此处填写结构化的摘要内容)
  34. """
  35. SUMMARY_HEADER_TEMPLATE = """## 对话历史摘要(自动压缩)
  36. {summary_text}
  37. ---
  38. *以上为压缩摘要,原始对话历史已归档。*
  39. """
  40. # ===== 辅助函数 =====
  41. def build_compression_eval_prompt(
  42. goal_tree_prompt: str,
  43. ex_reference_list: str = "",
  44. ) -> str:
  45. return COMPRESSION_EVAL_PROMPT_TEMPLATE.format(
  46. goal_tree_prompt=goal_tree_prompt,
  47. ex_reference_list=ex_reference_list,
  48. )
  49. def build_single_turn_prompt(goal_tree_prompt: str) -> str:
  50. return SINGLE_TURN_PROMPT.format(goal_tree_prompt=goal_tree_prompt)
  51. def build_summary_header(summary_text: str) -> str:
  52. return SUMMARY_HEADER_TEMPLATE.format(summary_text=summary_text)