OpenAI-Compatible 相关参数

介绍 OpenAI-Compatible API 的参数与技术含义

大模型调用参数技术表(OpenAI-Compatible)

参数名类型默认值功能分类技术含义(专业解释)
modelstring必填路由 / 模型选择指定使用的模型名称不同模型具有不同上下文长度、模态能力与定价
temperaturefloat1.0采样控制使用温度缩放调整概率分布:pT(x)∝exp⁡(log⁡p(x)/T)p_T (x) \propto \exp (\log p (x)/T) 升高 T → 输出更随机
top_pfloat1.0采样控制Nucleus Sampling 仅从累计概率达到 pp 的 token 子集中采样,控制长尾噪声
top_kint无(不限)采样控制从概率最高的前 k 个 token 中采样 k=1k=1 为贪心解码
frequency_penaltyfloat0采样控制按 token 出现频率惩罚重复:logit′=logit−βf(x)\text{logit}^{\prime} = \text{logit} - \beta f (x) 减少啰嗦
presence_penaltyfloat0采样控制对已出现 token 添加惩罚,鼓励话题多样性
max_tokensint由模型决定输出控制限制输出 token 的最大值总 token = 输入 + 输出
stop /stop_sequencesstring/string []None输出控制当生成序列命中指定字符串时立即终止推理
nint1输出控制一次生成 n 个独立候选输出,用于 rerank 或多样化
streamboolfalse输出控制启用流式输出,逐 token 返回,降低延迟
logprobsbool 或 intNone调试 / 可解释性若为 true 或整数,返回 token 对数概率及 top-k 候选概率
top_logprobsintNone调试 / 可解释性返回每个位置 top-k token 概率用于分析不确定性
logit_biasobject生成约束对特定 token 的 logit 加偏置(如 -100 禁止该 token)
response_formatobjectNone结构化输出强制 JSON 等结构化格式输出,如 {type:"json_object"}
toolsarrayNoneFunction Calling声明可调用的函数 / 工具模型可返回 {tool_name, arguments}
tool_choicestring/object"auto"Function Calling指定必须调用哪一个工具或允许自动选择
messagesarray必填(聊天接口)输入聊天协议输入,包含系统、用户、助手角色消息
inputstring/object/array取决接口输入非 ChatCompletions 新接口(如 /v1/responses)的输入字段
media_resolutionstring 或 int模型特定多模态控制视觉编码分辨率,高分辨率增加视觉 token,提升 OCR / 细节能力
image_detail /vision_detailstring"auto"多模态控制视觉特征粒度:"low" 为粗特征,"high" 为细粒度
max_output_tokensintNone输出控制(新接口)等同于 max_tokens,部分 API 新名称
seedintNone可复现性指定随机种子,使模型输出可复现(若模型支持)
function_call(旧接口)string/object"auto"Function CallingOpenAI 旧版函数调用参数,新接口已合并为 tools

1. 采样控制(Sampling Controls)

1.1 temperature

  • 控制生成分布的 “平滑度”

  • 当对 token 分布 p(x)p (x) 使用 softmax 温度缩放:

    pT(x)=exp⁡(log⁡p(x)/T)∑jexp⁡(log⁡p(j)/T)p_T (x) = \frac {\exp (\log p (x)/T)}{\sum_j \exp (\log p (j)/T)}
  • T>1T > 1:让分布更均匀 → 输出更多样但更随机

  • T<1T < 1:让分布更尖锐 → 输出更确定,创造性降低

  • 常用范围:[0,1.5][0, 1.5]

1.2 top_p(Nucleus Sampling)

  • 限制采样在累计概率前 pp 的 token 子集内:

    ∑_x∈Sp(x)≥p,S为最小的 token 集\sum\_{x \in S} p (x) \ge p,\quad S \text{为最小的 token 集}
  • 用于防止尾部 token 噪声,提高稳定性

  • 常用范围:0.8∼1.00.8 \sim 1.0

  • 与 temperature 互相影响,通常二选一调节即可

1.3 top_k

  • 从概率最高的 kk 个 token 中采样
  • kk 越大 → 多样性越高;k=1k=1 → 贪心解码

1.4 presence_penalty

  • 惩罚已出现过的 token,促进话题扩散
  • 典型实现:对已出现 token 的概率加偏置 −α- \alpha

1.5 frequency_penalty

  • 按出现频次惩罚 token,维持重复度抑制:

    logit′(x)=logit(x)−β⋅f(x)\text{logit}^{\prime}(x) = \text{logit}(x) - \beta \cdot f (x)
  • 用于减少模型 “啰嗦” 与重复句式问题

2. 输出长度、结构与停止条件

2.1 max_tokens

  • 限制模型生成的最大 token 数
  • 注意:总 token = 输入 token + 输出 token

2.2 stop /stop_sequences

  • 当生成序列命中指定字符串时立刻停止推理
  • 常用于多轮对话协议、代码生成的结构约束

2.3 n

  • 一次生成 nn 个独立候选输出
  • 用于 reranking、批量生成

3. 模态与输入控制(Images / Audio / Multimodal)

3.1 media_resolution(Gemini / 部分多模态模型特有)

  • 决定图像在内部编码器中的处理分辨率
  • 分辨率越高 → 视觉 token 更多、识别细节更好 → 成本与延迟上升

3.2 image_detail /vision_detail(不同 API 名称略有差异)

  • 控制图像编码粒度:
    • "low":粗略视觉特征,性能更快
    • "high":细粒度视觉特征,适合 OCR

4. 系统行为控制(Behavior / Safety)

4.1 logit_bias

  • 对特定 token 的 logit 直接加偏置,如:

    "logit_bias": { "198": -100 }   // 禁止某 token
  • 可用于强制特定格式,如 JSON

4.2 response_format /response_schema

  • 要求模型按 JSON 或其他结构化格式输出

  • OpenAI 新接口常用:

    "response_format": { "type": "json_object" }

4.3 tools(函数调用)

  • 用于 Function Calling / Tool Calling

  • 允许模型输出结构化的调用参数,例如:

    {
      "tool_name": "search",
      "arguments": { "q": "LLM evaluation" }
    }

5. 调试与概率输出

5.1 logprobs

  • 要求返回每个生成 token 的对数概率
  • 常用于可解释性、训练数据逆推、策略调试

5.2 top_logprobs

  • 返回 top-kk token 及其概率,用于分析模型不确定性

6. 流式输出

6.1 stream

  • true:以 chunk 流式推送 token
  • 支持更低延迟和前端实时渲染

7. 采样控制与解码策略

采样控制与解码策略常被混用,但在严格的生成式模型文献中,它们属于两个层级的概念:

7.1 定义上的层级差异

解码策略(Decoding Strategy)

解码策略是 “如何从模型的条件分布 p(xt∣x<t)p (x_t \mid x_{<t}) 中生成序列” 的整体方法 它规定了完整的序列生成机制,包括:

  • 是否贪心
  • 是否随机采样
  • 是否使用束搜索(Beam Search)
  • 是否使用逐 token 的过滤策略(如 top-p、top-k、typical)

是一个宏观决策层级

典型解码策略:

  • Greedy decoding
  • Beam search
  • Random sampling (stochastic decoding)
  • Nucleus sampling
  • Top-k sampling
  • Typical decoding
  • Contrastive decoding
  • Speculative decoding
  • Mixture-of-strategies(如 ChatGPT 的内部策略)

采样控制(Sampling Controls)

采样控制是对具体解码策略内部概率分布的参数化调制,例如:

  • TT(temperature)
  • top-p
  • top-k
  • repetition penalty /frequency penalty
  • presence penalty

它们是局部调节工具,作用在某个解码策略的概率分布上

7.2 二者关系:解码策略是 “方法”,采样控制是 “参数”

理解方式:

层级含义示例
解码策略(Decoding Strategy)决定采样方式的宏观方法Greedy / Beam / Top-p Sampling / Typical Decoding
采样控制(Sampling Controls)控制概率分布形状的具体参数Temperature /top_p/top_k / Penalties

换句话说,解码策略 = 算法,采样控制 = 算法的参数

举例:

  • “Top-p sampling” 是策略
  • “top_p = 0.9” 是控制参数
  • “temperature = 1.3” 是进一步控制其随机性的缩放系数

7.3 具体例子:top-p sampling 中的参数与策略分离

解码策略:Top-p Sampling

流程:

  1. 对所有 token xx 排序
  2. 找到最小集合 SS,使得 ∑x∈Sp(x)≥p\sum_{x \in S} p (x) \ge p
  3. 从 SS 中归一化后随机采样

采样控制:top_p /temperature/penalties

  • top_p 控制 SS 的大小
  • temperature 控制概率分布的平滑度
  • penalty 控制重复度抑制

策略不变,只是调整其内部概率

7.4 解码策略通常决定生成质量的 “风格”,采样控制决定 “随机性”

属性解码策略决定采样控制决定
生成结构强(如 beam search 更保守)弱
输出确定性强(greedy = 完全确定)可控(通过 T、top_p)
多样性中(策略范围)强(温度 / 概率调节)
可控性方法级别参数级别

7.5 常见混淆点澄清

混淆点 1:认为 top-p 是 “采样控制”

实际上,它属于:

  • 作为 “策略”:Top-p sampling
  • 作为 “参数”:top_p

两者不同语义层级

混淆点 2:认为 temperature 是 “解码策略”

否,temperature 不是策略,它不决定如何采样,只决定采样时的概率分布形状

解码策略决定 “如何从语言模型中取 token”,采样控制决定 “取 token 时的概率分布长什么样”

这篇文档有帮助吗?

On this page

页面信息