把提示词当接口来设计:输入输出契约

人工智能 · 2026-10-07

提示词是接口,不是一段文本。本文给出输入契约(变量表)、输出契约(格式与必含字段)、版本与兼容性规则、接口化的三个好处与一份最小契约文档。


提示词其实是一个"接口"

提示词常被当成"一段文本" ✔,于是改起来随意、测起来困难 ✔。

**把它当接口看** ✔:有输入契约、输出契约、版本与兼容性 ✔ —— 很多混乱自然消失 ✔。

一、输入契约(模板的"参数表")

```

变量名 | 类型 | 是否必填 | 约束 | 缺失时的行为

doc string 必填 ≤ 20000 字 截断并标注

lang enum 可选 zh/en 默认 zh

```

**要点**:

  • **变量必须显式声明** ✗→✔(不要在模板里凭空引用 ✔);
  • **缺失时有明确行为**(报错 / 用默认值 ✔ —— 不要静默留空 ✗);
  • **约束写在模板里**(长度、枚举 ✔)并在**代码里也校验** ✔(见约束变校验 ✔)。
  • 二、输出契约(模板承诺产出什么)

  • **格式**(JSON schema / Markdown 结构 ✔);
  • **必含字段**(如"必须给出引用" ✔ —— 见结构化输出那篇 ✔);
  • **不确定性表达**(置信或状态字段 ✔ —— 见不确定性传递 ✔);
  • **内容约束**(不得出现某类表述 ✔ —— 见文案审校 ✔)。
  • **输出契约要与"校验"一致** ✗→✔:模板说"必须给引用",校验就得查引用 ✔ —— 两边不一致等于没有契约 ✔。

    三、版本与兼容性

  • **变量增删 = 破坏性变更** ✔(调用方要同步改 ✔);
  • **只加可选变量 = 向后兼容** ✔(推荐方式 ✔);
  • **改语义(同名字段含义变了)= 破坏性** ✗(最难发现 ✔ → 要写进变更说明 ✔)。
  • 四、接口化的三个好处

    1. **可测**(输入契约固定 → 可以构造用例 ✔ —— 见边界用例库 ✔);

    2. **可复用**(同一模板被多处调用 ✔ —— 见提示词库 ✔);

    3. **可替换**(换模型/换实现,只要契约不变,下游不受影响 ✔)。

    五、一份最小契约文档

    ```

    模板名 / 版本 / 负责人

    输入:变量表(类型、必填、约束、缺失行为)

    输出:格式、必含字段、内容约束

    变更历史:日期 / 变更类型(兼容 / 破坏)/ 影响面

    ```

    一条判据

    > 一个新同事能否**只读契约**就正确调用这个模板 ✔(不问作者 ✔),并知道输出该怎么校验 ✔?

    > 不能,说明提示词还只是一段文本,不是接口 ✗。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →