大模型参数不会调?Agent开发7大参数实战指南

大模型 API 核心参数与输出影响示意图
参数控制的是「随机性 / 创造性」,不是正确性 - 参数决定天花板,Prompt 决定地板

很多开发者第一次调大模型 API,面对 temperature、top_p、max_tokens、frequency_penalty 一堆参数,要么全用默认值不敢动,要么随手一调结果完全不可控。更常见的情况是:Agent 项目在测试环境跑得好好的,一上生产就开始胡说八道、JSON 解析报错、工具调用乱编参数。

问题的根源不是模型不够聪明,而是参数和 Prompt 没有协同。大模型 API 的参数控制的是输出的「随机性 / 创造性」,不是控制正确性。想要严谨输出,不是调大模型智商,而是压低随机参数 + 写好 Prompt。本文系统拆解 7 大核心参数的语义、取值范围、场景搭配,并结合 Agent 开发的真实需求,给出参数 × Prompt 协同的实战方法论。

一、核心认知:参数控制什么,不控制什么

在深入每个参数之前,必须先建立一个正确的心智模型。这是所有后续配置决策的基础。

第一原则:参数控制的是「随机性 / 创造性」,不是「正确性」。temperature=0 不代表无幻觉,只是幻觉概率降低。模型的知识边界由训练数据决定,参数只能影响它在知识边界内如何表达。

打个比方:大模型像一个读过万卷书的人。参数决定这个人回答你时是「严谨复述」还是「自由发挥」,但它脑子里有没有这个知识,是训练阶段就定了的。Prompt 决定你问的问题够不够清晰、给的上下文够不够充分,参数决定它回答时有多大的「自由度」。

因此,生产环境的核心策略是:参数决定输出的天花板(多样性上限),Prompt 决定输出的地板(质量下限)。两者必须匹配 - 低 temperature 配精准 Prompt 可以做到极高一致性;高 temperature 配松散 Prompt 只会得到不可控的垃圾输出。

二、7 大核心参数逐一拆解

2.1 temperature 温度 - 最常用也是最危险的参数

temperature 是开发者接触最多、也最容易误用的参数。取值范围 0 ~ 2.0,大部分 API 默认 0.7。

本质:对 token 概率分布做缩放。temperature = 0 时,模型优先选概率最高的词,输出几乎确定;temperature 升高,模型愿意选择概率更低的 token,多样性和想象力提升,但幻觉和胡说概率同步上升。

场景temperature 推荐说明
工具调用、函数调用、结构化输出(JSON)、代码生成、数据抽取、企业RAG问答0.0 ~ 0.2尽量稳定、少幻觉,不要自由发挥
业务文案摘要、需求分析、技术文档、翻译0.3 ~ 0.5兼顾通顺,适度灵活,拒绝乱编
通用对话、头脑风暴、普通客服聊天0.6 ~ 0.8API 常见默认值,平衡稳定与自然
小说创作、故事、创意文案、写诗、脑洞生成0.9 ~ 1.2鼓励多样性,接受部分不合理内容
关键认知:temperature=0 不代表完全无幻觉,只是幻觉概率降低。RAG 场景下 Prompt 写得差,temperature=0 照样胡说。temperature > 1 非常天马行空,容易逻辑崩坏,生产环境慎用。

2.2 top_p 核采样 - temperature 的搭档而非替代

取值范围 0 ~ 1.0,默认一般 0.7~0.9。top_p 按累计概率阈值选取候选词集合,只从概率累加达到 top_p 的 token 池子里采样。

  • top_p=0.1:只选概率最高的一小部分 token,输出保守,变化很小
  • top_p=0.9:取累计概率 90% 的候选,允许更多备选词
  • top_p=1.0:启用全部词表,完全由 temperature 控制
业界最佳实践:不要同时大幅度调 temperature 和 top_p,二选一为主。官方建议优先改 temperature,top_p 固定 0.9 不动;或者固定 temperature=1,调 top_p。两个都乱调,行为不可控。很多企业生产配置:temperature=0.1,top_p=0.9 - 只控温度,top_p 不动。

2.3 max_tokens 最大输出长度

max_tokens 控制最大输出 token 数量,不是总上下文。输入 prompt 不算在内。1 token ≈ 0.75 中文汉字,2000 token ≈ 1500 汉字。

最大风险:输出达到 max_tokens 会强制截断,返回半截文本。业务上必须检测 finish_reason="length" 做判断,否则下游解析 JSON 会直接报错。

场景max_tokens 推荐说明
短回答、JSON 工具调用512 ~ 1024够用即可,避免浪费
文档摘要、分析2048 ~ 4096中等长度输出
长文本生成、报告模型上限注意计费,token 越多越贵

2.4 stop 停止符

自定义字符串列表,模型输出遇到该字符串立刻终止,不返回 stop 字符串本身。例如 stop:["\\n\\n---","###"]

三个典型使用场景:

  • 多轮 Prompt 模板:防止模型模拟用户说话,到用户轮次标记就停
  • 结构化输出:到结束标记就截断,避免模型继续编内容
  • Agent 循环调用:防止模型无限续写,在特定边界自动停止

2.5 presence_penalty 与 frequency_penalty - 两个惩罚参数

这两个参数容易混淆,但语义不同:

参数范围语义正数效果负数效果
presence_penalty-2 ~ +2惩罚已经出现过的 token鼓励新话题,减少重复鼓励复刻固定格式
frequency_penalty-2 ~ +2惩罚高频重复的 token降低词句重复鼓励重复关键词

简单记:presence_penalty 看有没有出现过,frequency_penalty 看出现了多少次

生产建议:绝大多数业务系统这两个参数保持 0,不要乱加。加错会破坏 JSON 格式、代码语法。只有长文本写作容易车轱辘话时,frequency_penalty 设 0.1~0.3 才有意义。

2.6 response_format 返回格式

现代 API 支持两种模式:

  • { "type":"text" }:普通文本输出
  • { "type":"json_object" }:强制输出合法 JSON
关键坑点:开启 JSON 模式后,Prompt 必须明确要求输出 JSON,否则 API 会报错。企业 Agent、数据抽取场景强烈建议开启 JSON 模式 + 低 temperature,但 Prompt 里一定要写明「请输出 JSON 格式」并给出 Schema。

2.7 stream 流式开关 与 tool_choice 工具调用

stream 控制返回方式:

  • stream=true:SSE 流式返回,边生成边返回,前端打字机效果,适合聊天界面
  • stream=false:等待全部生成完一次性返回。后端业务处理、解析 JSON、API 调用优先用非流式,代码处理简单

tool_choice 控制工具调用行为:

  • auto:模型自己决定要不要调用工具
  • required:强制必须调用工具
  • none:禁止调用任何工具

Agent 场景常用策略:查询外部数据时用 auto 让模型自主判断;需要必须查数据库时设 required 确保不跳过。

三、参数影响全景示意图

下图将 7 大核心参数的取值范围、场景分布、以及参数 × Prompt 的协同配置浓缩在一张图中。上半部分是参数卡片和输出行为光谱,下半部分是 5 个 Agent 典型场景的推荐参数 + Prompt 要点 + 风险提示,底部是工程实战六条铁律。

大模型 API 核心参数对输出影响示意图 - 参数取值范围、场景分布、Agent 协同配置与工程铁律
大模型 API 核心参数对输出影响示意图:从参数卡片到输出光谱,再到 5 大 Agent 场景的参数 × Prompt 协同配置

图中光谱条从左到右依次为「确定性 → 稳定 → 平衡 → 发散 → 失控」,对应 temperature 从 0.0 到 2.0 的变化。每个场景卡片标注了推荐参数值、Prompt 编写要点和踩坑风险,可以直接作为配置参考。

四、Agent 开发中参数 × Prompt 的协同实战

理解了单个参数的语义还不够。Agent 开发的核心挑战是:参数和 Prompt 必须协同,否则参数调得再好,Prompt 写得烂照样翻车。下面通过 5 个真实场景,拆解参数 × Prompt 的协同策略。

4.1 场景一:RAG 知识库问答

RAG 是企业 Agent 最常见的场景。核心诉求是:基于检索到的上下文回答,不要胡编。

用户提问
自然语言 query
向量检索
召回 top-k 文档
Prompt 组装
context + query + 指令
低温度生成
temp=0.1 忠于上下文
结果校验
finish_reason 检测

参数策略:temperature=0.1, top_p=0.9, max_tokens=2048, stream=false。低温度确保忠于检索内容,不开 JSON 模式(RAG 答案通常是自然语言)。

Prompt 协同要点:

  • Prompt 必须包含 retrieved context,且明确标注「以下是参考资料」
  • 明确指令:「请仅基于以下参考资料回答,如果资料中没有相关信息,请回答"我不知道"」
  • 给出输出格式要求,避免模型自由发挥长度
// RAG 场景 Prompt 模板 system: 你是一个严谨的知识库问答助手。请仅基于以下参考资料回答问题。 如果参考资料中没有相关信息,请回答"我不知道"。不要编造信息。 user: 参考资料: {retrieved_context} 问题:{user_query} 请回答:
风险:幻觉风险最低,但 Prompt 差照样胡说。常见错误是 Prompt 没写「不要编造」,模型会基于自己的知识补充检索结果中缺失的部分,产生「半真半假」的幻觉。

4.2 场景二:结构化 JSON 输出

Agent 做数据抽取、意图分类、信息结构化时,需要模型输出严格合法的 JSON。这是翻车重灾区。

参数策略:temperature=0.1, top_p=0.9, max_tokens=1024, response_format={"type":"json_object"}, stream=false。

Prompt 协同要点:

  • Prompt 必须明确要求输出 JSON(否则 API 报错)
  • 给出 JSON Schema 或示例,明确字段名和类型
  • 后端关闭 stream,一次性拿到完整 JSON 再解析
// JSON 抽取场景 Prompt 模板 system: 你是一个数据抽取助手。请从用户输入中提取信息, 输出 JSON 格式。Schema 如下: { "name": "string - 姓名", "age": "number - 年龄", "intent": "string - 意图分类" } 只输出 JSON,不要输出其他内容。 user: {raw_text}
关键坑:不开 json 模式,或 Prompt 不提 JSON,模型可能输出 ```json ... ``` 包裹的文本,后端 JSON.parse 直接报错。开了 json 模式但 Prompt 不提 JSON,API 直接返回 400 错误。

4.3 场景三:工具调用 / 函数调用

Agent 调用外部工具(查询数据库、调 API、执行代码)时,参数稳定性直接决定工具名和参数值是否正确。

参数策略:temperature=0.0, top_p=0.3, max_tokens=512, tool_choice=auto, stream=false。温度压到最低,确保工具名和参数值不乱编。

Prompt 协同要点:

  • 工具描述要精确:函数名、参数名、参数类型、返回值格式全部写清
  • 参数 Schema 清晰:用 JSON Schema 描述每个参数的类型和约束
  • 给 few-shot 示例:展示几个正确的工具调用案例
风险:temperature > 0.3 时,模型可能编造不存在的工具名,或给正确的工具传错误的参数类型(比如把 string 传成 number)。工具调用场景温度宁低不高。

4.4 场景四:多轮对话 Agent

客服聊天、个人助手等场景需要自然流畅的多轮对话。温度太低显得机械,太高容易跑题。

参数策略:temperature=0.7, top_p=0.9, max_tokens=1024, frequency_penalty=0, stream=true。中等温度兼顾自然和稳定,开流式提升用户体验。

Prompt 协同要点:

  • System Prompt 定义角色、能力边界和行为规范
  • 历史消息管理:超出上下文窗口时要做摘要压缩,不能直接截断
  • 明确「不知道就说不知道」的兜底指令

4.5 场景五:创意生成 / 文案写作

营销文案、故事创作、头脑风暴等场景需要发散思维,参数配置与严谨场景完全相反。

参数策略:temperature=1.0, top_p=0.95, max_tokens=4096, frequency_penalty=0.2, presence_penalty=0.2。高温度鼓励多样性,penalty 轻微正值避免车轱辘话。

Prompt 协同要点:

  • 给风格参考和创作约束,而不是放任自由
  • 放宽格式要求,允许模型发挥
  • 设置 stop 序列防止无限续写
风险:temperature > 1.2 时逻辑容易崩坏,内容不可控。创意场景也要有边界,不是越放飞越好。

五、5 套可直接复制的生产配置模板

以下 5 套参数模板覆盖了 Agent 开发的主流场景,可以直接复制使用。每套模板都经过生产验证,配合对应的 Prompt 策略可以快速落地。

模板 1:企业 RAG / 知识库问答 / 数据抽取 / JSON 输出 / 函数调用
目标:稳定、低幻觉、输出合法 JSON。最常用的生产配置。
{ "temperature": 0.1, "top_p": 0.9, "max_tokens": 2048, "frequency_penalty": 0, "presence_penalty": 0, "response_format": {"type":"json_object"}, "stream": false }
模板 2:翻译 / 技术文档 / 摘要(需一定灵活,不能乱编)
目标:兼顾通顺和准确,适度灵活但拒绝编造。
{ "temperature": 0.4, "top_p": 0.9, "max_tokens": 4096, "frequency_penalty": 0.1, "presence_penalty": 0, "stream": false }
模板 3:聊天助手 / 业务客服 / 普通对话
目标:自然流畅的对话体验,平衡稳定与灵活。
{ "temperature": 0.7, "top_p": 0.9, "max_tokens": 1024, "frequency_penalty": 0, "presence_penalty": 0 }
模板 4:创意生成 / 小说 / 文案 / 头脑风暴
目标:鼓励多样性,接受部分不合理内容。
{ "temperature": 1.0, "top_p": 0.95, "max_tokens": 4096, "frequency_penalty": 0.2, "presence_penalty": 0.2 }
模板 5:确定性极强 / 可复现输出 / 测试 / 单元测试
目标:每次输入相同 Prompt,输出几乎完全一样。
{ "temperature": 0.0, "top_p": 0.1, "max_tokens": 2048 }

六、工程踩坑总结:6 条生产铁律

以下是 Agent 上生产环境前必须知道的 6 条铁律,每一条都是用真实事故换来的教训。

铁律 01
temperature=0 ≠ 无幻觉
只是概率降低,不是消除。RAG 仍然要做结果校验。常见错误:以为温度调到 0 就万事大吉,结果模型基于训练知识补全了检索结果中没有的内容,产生「半真半假」的幻觉。
铁律 02
temperature 和 top_p 不要同时调高
行为不可预测,线上尽量一个为主,另一个固定。官方建议优先改 temperature,top_p 固定 0.9。两个都乱调,输出行为完全不可控,排查问题无从下手。
铁律 03
JSON 模式必须 Prompt 明确要求
开启 response_format=json_object 后,Prompt 必须包含"输出 JSON"的字样,否则 API 直接报错。更隐蔽的坑:Prompt 提了 JSON 但没给 Schema,模型输出格式不固定,后端解析照样崩。
铁律 04
后端解析 JSON 关闭 stream
流式返回的 JSON 是分片的,不能直接 JSON.parse。后端业务处理优先用非流式,一次性拿到完整 JSON。流式只适合前端打字机效果展示,不适合后端数据解析。
铁律 05
必须检测 finish_reason
三个值必须区分处理:stop=正常结束;length=被 max_tokens 截断(业务要做异常处理);tool_calls=工具调用结束。不检测 length,JSON 被截断成半截,下游全崩。
铁律 06
penalty 参数默认保持 0
frequency_penalty 和 presence_penalty 绝大多数业务系统保持 0。乱加会破坏 JSON 格式、代码语法。只有长文本写作出现车轱辘话时,frequency_penalty 设 0.1~0.3 才有意义。

七、Agent 上生产检查清单

以下清单覆盖了 Agent 项目上生产前必须验证的参数与 Prompt 相关关键项:

参数配置
  • temperature 和 top_p 没有同时调高,一个为主另一个固定
  • 工具调用 / JSON 输出场景 temperature ≤ 0.2
  • max_tokens 设置合理,够用即可,不盲目开大
  • frequency_penalty / presence_penalty 保持 0(除非长文本场景)
  • JSON 输出场景开启了 response_format=json_object
  • 后端业务处理场景 stream=false
Prompt 协同
  • RAG 场景 Prompt 包含 retrieved context 且标注「参考资料」
  • RAG 场景 Prompt 包含「不要编造」指令
  • JSON 输出场景 Prompt 明确要求输出 JSON 且给出 Schema
  • 工具调用场景工具描述精确、参数 Schema 清晰、有 few-shot 示例
  • 多轮对话场景 System Prompt 定义了角色和能力边界
  • 所有场景 Prompt 都包含「不知道就说不知道」的兜底指令
异常处理
  • 检测 finish_reason,length 截断有异常处理逻辑
  • JSON 解析有 try-catch,解析失败有重试或降级策略
  • 工具调用失败有重试机制,重试次数可配
  • 模型超时有熔断和降级策略
  • 流式输出有断线重连机制(如使用 stream=true)

结语

大模型 API 的参数不是玄学,是有明确语义的工程工具。temperature 控制随机性,top_p 控制候选词池,max_tokens 控制输出长度,penalty 控制重复度 - 每个参数都有明确的作用域和副作用。理解了这些,参数配置就从「试错」变成了「设计」。

但参数只是故事的一半。Agent 开发的真正难点在于参数 × Prompt 的协同:低 temperature 配精准 Prompt 可以做到极高一致性;高 temperature 配松散 Prompt 只会得到不可控的垃圾。参数决定输出的天花板,Prompt 决定输出的地板 - 两者必须匹配,缺一不可。

最后记住一条核心原则:参数控制的是「随机性 / 创造性」,不是正确性。想要严谨输出,不是调大模型智商,而是压低随机参数 + 写好 Prompt。这 12 个字,比任何参数调优技巧都重要。

参考资料

  1. OpenAI API 参数文档 https://platform.openai.com/docs/api-reference/chat
  2. DeepSeek API 文档 https://platform.deepseek.com/api-docs
  3. 智谱 GLM API 文档 https://open.bigmodel.cn/dev/api
  4. 通义千问 API 文档 https://help.aliyun.com/zh/dashscope/developer-reference/api-details
  5. 豆包 API 文档 https://www.volcengine.com/docs/82379
  6. Hugging Face - How to generate text https://huggingface.co/blog/how-to-generate