生成参数决定什么
知识库问答优先稳定而不是创意:温度取低值(0 到 0.3)能明显减少自由发挥,输出长度按业务上限限制,需要要点罗列时用结构化输出(JSON)约束字段,避免格式漂移。这些参数直接影响忠实度与引用合规率,所以调整前要先固化基线,改完跑同一套评测对比,而不是凭感觉换一个数。
基本信息
| 温度 | 0 到 0.3 区间,越低输出越稳定 |
|---|---|
| top_p | 核采样阈值,通常 0.8 到 1.0,不要与温度同时大改 |
| max_tokens | 按业务输出上限设置,过长会拖慢响应并增加费用 |
| 结构化输出 | 用 schema 约束字段,解析失败要有兜底路径 |
典型使用场景
- 客服问答:同一问题重复提问要给出稳定一致的答案
- 合规与法务:措辞不能自由发挥,必须严格贴着给定材料
- 要点式回答:用结构化输出约束成固定字段,便于前端渲染
- 多轮对话:低温度减少前后回答自相矛盾
- 批处理生成:需要可复现结果时用低温甚至零温度
常见参数组合
常见参数组合
resp = client.chat.completions.create(
model="...",
temperature=0.2, # 问答场景起点,越低越稳定
top_p=0.9,
max_tokens=800, # 控制单次输出上限,避免长尾延迟
messages=[{"role": "system", "content": prompt},
{"role": "user", "content": question}],
)
# 要求返回 JSON:{"answer": str, "citations": [int], "confidence": "high|medium|low"}
# 服务端用 schema 校验,失败时重试一次或降级为纯文本
参数与影响方向
| 参数 | 调高 | 调低 |
|---|---|---|
| temperature | 表达多样,容易偏离原文 | 输出稳定,适合问答 |
| top_p | 候选词范围变宽 | 输出更集中保守 |
| max_tokens | 成本与延迟上升 | 长答案可能被截断 |
| 结构化约束 | 字段更全但格式要求更严 | 解析更稳,内容可能变薄 |
温度与提示词改动都会影响忠实度评测:批量调整前先固化基线,否则指标变化无法归因到具体某一项改动。
结构化输出的约束强度和模型能力相关:能力弱的模型在强 schema 下更容易漏字段,需要配合重试与降级策略。
参数配置要落进版本管理:把温度、输出上限与提示词一起写进配置文件并标注版本号,回答异常时才能确认当时用的是哪一组参数。