配置驱动的 Prompt 工程
Configurable Prompt Engineering
将 LLM prompt 模板化并支持用户覆盖,通过分块组合与排序实现灵活的 prompt 定制
子问题
1.Prompt 分块与排序(PromptBlock)
2.默认 prompt 与用户覆盖合并
3.记忆类型特定 prompt 配置
4.Prompt 值转义防注入
5.分类级 prompt 覆盖(单个 category 独立 prompt 配置)
6.prompt 块禁用机制(负 ordinal 跳过)
7.Legacy prompt 到分块 prompt 的渐进迁移
各项目的解法1 solutions
Signals
横向对比
| 维度 | memU |
|---|---|
| 模板结构 | 7 块 PromptBlock(objective/workflow/rules/category/output/examples/input)ordinal 排序拼接 |
| 覆盖机制 | 三层优先级:用户 str 直接替换 > CustomPrompt 块级覆盖 > 默认模板回退 |
| 类型特化 | 6 种记忆类型(profile/event/knowledge/behavior/skill/tool)各有独立完整模板 |
| 防注入 | _escape_prompt_value 统一转义 { → {{ 防止 format string 注入 |
| 自动补全 | Pydantic AfterValidator + complete_prompt_blocks 自动填充缺失块的默认 ordinal |
| 分类级定制 | CategoryConfig.summary_prompt 支持单分类级别 prompt 覆盖,优先于全局默认 |
最佳实践
1.提供合理默认值同时允许完全覆盖
2.用 ordinal 字段控制 prompt 块排序
3.ordinal 间隔设为 10 留出插入空间
4.AfterValidator 在配置加载时自动补全缺失块
5.所有 .format() 调用前统一经过转义函数