大模型结果约束

一、最常用、成本最低的约束方式(Prompt 层面)

1. 格式强约束(JSON / 列表 / 固定结构)

直接告诉模型必须输出什么格式,不给自由发挥空间。

示例:

只输出 JSON,不要解释,不要多余文字,格式如下:

{

“result”: “答案”,

“reason”: “步骤”

}

实现效果:

  • 输出可直接被代码解析
  • 不会乱说话
  • 适合对接系统(RAG、函数调用、OOAD 建模等)

2. 内容边界约束(禁止做什么)

禁止编造信息

禁止回答无关问题

禁止生成违法、暴力、色情内容

不知道就说 “无法回答”

这是最基础的安全约束

3. 风格 / 长度约束

回答控制在 3 句话内

只使用专业术语

不要口语化

只输出代码,不输出解释


二、中等成本:样本约束(Few-shot / 示例约束)

给模型看几个正确例子,它就会跟着学。

示例:

Q1: 1+1=?

A1: 2

Q2: 2+3=?

A2: 5

Q3: 4+5=?

A3:

模型会严格模仿格式与行为。

适用场景:

  • OOAD 建模输出固定 UML 格式
  • 代码生成固定风格
  • 表单填写、信息抽取

三、工程级约束:结构化输出(最稳)

1. JSON Schema / Pydantic 约束

现在主流框架都支持:

  • LangChain
  • LlamaIndex
  • OpenAI API
  • Qwen、GLM 等国产大模型

告诉模型:

必须严格按照这个 JSON 结构输出,字段不能少,类型不能错

例如 Pydantic 模型:

python

运行

1
2
3
4
class Student(BaseModel):
name: str
id: str
age: int

模型输出会被强制校验,不合法就重生成。

2. 函数调用约束(Function Calling)

让模型只能从你定义的工具里选行为,不能自己瞎编。

例如:

  • 查询数据库
  • 调用接口
  • 计算
  • 搜索

模型不能自己创造函数,行为被严格限制。


四、高级约束:RAG + 事实约束(防止胡说)

核心思想:

不让模型凭空生成,只让它从给定文档里回答

实现步骤:

  1. 准备知识库(文档、规则、代码库、需求文档)
  2. 检索相关片段
  3. 拼接进 Prompt
  4. 强制模型:

只根据提供的材料回答,不允许编造内容

这是企业级应用最核心的事实约束


五、训练层面约束(成本高,但效果最强)

1. SFT 监督微调

用大量符合约束的优质数据训练模型,让它天生就守规矩。

例如:

  • 只输出专业内容
  • 格式固定
  • 不违规
  • 逻辑严谨

2. RLHF / RLAIF 人类 / AI 反馈强化学习

让模型学会:

  • 什么能说
  • 什么不能说
  • 什么格式是对的
  • 什么行为是安全的

适合做产品级约束。

3. 对齐(Alignment)

让模型行为与人类价值观、规则、法律对齐。

本质也是一种强约束。


六、最底层约束:解码阶段控制(Inference Time)

在生成 token 时直接限制:

  1. 温度 temperature → 0

    越低越 deterministic,越稳定,越不创新。

  2. top_p /top_k 限制

    减少随机性,强制模型选最可靠的词。

  3. 禁止词表(blacklist)

    直接禁止模型生成某些词。

  4. 长度限制 max_new_tokens

  5. 停止词 stop_sequences

    遇到特定符号自动停止,防止输出失控。


七、企业级完整约束方案(真实落地架构)

  1. 输入过滤(检查是否违规)
  2. RAG 检索(提供事实依据)
  3. Prompt 约束(格式 + 边界)
  4. Function Call(行为限制)
  5. JSON Schema(结构化输出)
  6. 输出校验(格式 / 合规 / 事实校验)
  7. 不通过则重新生成

这是目前最稳、工业界通用的约束链路。


八、一句话总结

  • 快速实现约束 → 用 Prompt + 格式限制
  • 稳定对接系统 → JSON Schema + Function Call
  • 不胡说 → RAG + 事实约束
  • 产品级稳定 → SFT + RLHF + 解码参数控制