语言不是文字,而是信息到表达的映射。
hb.Prompt 如何将提示持久化为 Capsule 支持的工作区行并内置一等翻译。
1. 为何需要提示工具
没有提示系统时,每个 LLM 调用点都用原始 f-string 自行拼装提示文本。结果是提示漂移:一个端点用一种格式写指令,另一个端点换种措辞,且没有关于「提示应说什么」的单一事实来源。2. 提示作为编码器
将hb.Prompt 视为具名编码器——可注册、可版本化、可重新加载的可调用对象。格式字符串提示是一种编码策略;Python 函数是另一种。二者均编译为 Capsule 支持的可调用对象,并共享同一条运行时路径。
Prompt 是 Capsule 的特例。提示定义——源代码或编译后的格式字符串——被捕获为 manifest,并可存为 sys-prompt 工作区行。调用时,提示 + 载荷 产出 LLM 所见的序列化文本:
构造不会写入工作区。显式调用
prompt.register(...),或在有意于装饰时注册时传入 register=True。提示属于任务工作区时,在 register 与 load 时传入 ws=...。3. Markdown 辅助函数
在使用hb.Prompt 之前,你常需要稳定的 Markdown 块:标题、列表、代码围栏、结构化示例。HeavenBase 将这些放在 heavenbase.utils 中,使生成的提示文本在运行、报告与测试中保持确定性。
在函数提示内部使用这些辅助函数以完全控制版式。它们是可组合的构建块,不绑定于某一种任务形状。
4. 单次提示布局
对于常见情形——带 system 上下文、若干示例与待求解新实例的单轮任务——HeavenBase 提供fast_prompt_section(...)。它是便捷封装,用上述 Markdown 辅助函数将常规段落布局转为 OpenAI 风格消息。
布局遵循一个原则:
system + descriptions + examples + instructions + instance
每条示例包含 inputs、hints、output、expected 与 notes。新实例复用相同形状,但将 output 标为 TODO,提示模型应产出什么。
separate_system=True。
5. 函数提示
编码器逻辑应留在代码中并持久化为 Capsule 支持的可调用对象时,装饰 Python 函数。函数体即编码器;调用参数即载荷。*, tr=str。HeavenBase 在调用时注入绑定的翻译函数,使本地化文本经同一条编码器路径流出,无需分叉函数。
5.1. 组合编码器
函数提示可在同一编码器内调用其他提示、布局辅助函数与 LLM。玩具式元提示器 (meta-prompter) 模式:一行格式字符串提示起草 system 段落;fast_prompt_section(...) 从示例与新实例组装单次正文。
6. 格式字符串提示
向hb.Prompt(...) 传入字符串会创建最简单的编码器:带占位符替换的编译格式字符串。它与函数提示使用相同的 Capsule 支持可调用路径,但函数体不能执行任意逻辑。短而稳定的模式用格式字符串;编码器需要分支、组合或元生成时用函数提示。
tr_keys 的短格式字符串:
7. 加载、列出与版本化提示
提示按点分名称、紧凑版本引用或行 id 加载:sys-prompt 行时,在工作区中注册:
8. 翻译作为一等公民
本地化不应要求维护并行的提示文件。HeavenBase 通过tr 参数与 prompt.tr 将翻译作为提示表面的一等部分。
每次提示调用按此顺序解析语言:显式 lang=...、提示对象绑定的 lang、当前 CM_HVNB 配置作用域中的 heavenbase.prompt.lang,然后 main_lang。绑定的 tr 函数将语言应用于编码器内的源短语:
tr=... 传给 fast_prompt_section(...) 以同样方式翻译段落标题与列表项。签名声明 tr 时,函数提示会自动接收 tr。
翻译行以可查询的 sys-translation 实体存在于同一工作区。通过 prompt.tr 访问:
{placeholder} 捕获的源模式。找不到翻译时,HeavenBase 对 elicit="none" 返回源文本。elicit="llm" 为预留项,本版本会抛出 NotImplementedError。
Translation 可从 heavenbase.extensions.prompt 供底层代码使用,但根 import heavenbase as hb 表面将翻译放在 Prompt.tr 下。
9. 持久化智能体指令
智能体指令应与任务工作区一起持久化时,将fast_prompt_section(...) 与 hb.Prompt 结合使用。函数编码器封装单次布局;注册将可调用对象存为可版本化行。
10. CLI
create 命令创建格式字符串提示。
Summary
- 将提示建模为编码器——将输入数据映射为 LLM 所见文本的可调用函数,而非静态字符串。
hb.Prompt是 Capsule 特例:提示 + 载荷产出最终序列化输出,编码器本身可持久化。- 编码器需要逻辑、组合或元生成时优先用函数提示;简单替换用格式字符串提示。
- 用 Markdown 辅助函数构建稳定文本块;适用时用
fast_prompt_section(...)的标准单次布局。 - 经编码器与
fast_prompt_section(...)传递tr,使本地化与渲染处于同一代码路径。

