01 - OpenAI 标准字段
LiteLLM 的 OPENAI_CHAT_COMPLETION_PARAMS 定义了「完全按 OpenAI 协议接受」的字段白名单。下游传入这些字段不需要做任何特殊配置,LiteLLM 会按 provider 能力做转译。
源码:litellm/constants.py:561、completion() 签名 litellm/main.py:1055。
必填
| 字段 |
类型 |
说明 |
model |
string |
模型名。可填 LiteLLM 侧配置的 model_name(虚拟模型名),或 provider/model 形式(如 openai/gpt-4o、anthropic/claude-3-5-sonnet、bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0)。启用 model_alias_map 后也可以走别名。 |
messages |
array |
对话消息列表,至少 1 条。结构详见 02-messages-and-content-blocks。 |
采样 / 生成控制
| 字段 |
类型 |
含义 |
备注 |
temperature |
float 0-2 |
采样温度,值越高越随机 |
绝大多数 provider 支持 |
top_p |
float 0-1 |
nucleus sampling |
与 temperature 二选一即可 |
n |
int |
为同一 prompt 返回几个 completion |
多数 provider 只支持 1,Anthropic/Bedrock 不支持;注意 n=1 是默认值,不会触发校验 |
max_tokens |
int |
单次响应的最大输出 token 数(含可见输出)。部分厂商已逐步用 max_completion_tokens 替代 |
开启全局 modify_params=true 时会被自动裁剪 |
max_completion_tokens |
int |
max_tokens 的新别名,OpenAI o1/o3/gpt-5 系列推荐用这个(含推理 token 在内的上限) |
|
stop |
string / array[string] |
遇到这些子串就停止生成,最多 4 个 |
传空 list/dict 会被过滤掉 |
seed |
int |
固定随机种子,提升可复现性 |
OpenAI / Gemini 支持;多数 provider 忽略 |
presence_penalty |
float -2~2 |
对已出现过 token 做惩罚,鼓励新话题 |
Anthropic/Bedrock 不支持 |
frequency_penalty |
float -2~2 |
对高频 token 做惩罚 |
Anthropic/Bedrock 不支持 |
logit_bias |
dict[int,int] |
token_id → bias(-100~100)的映射,精确控制某些 token 的概率 |
主要 OpenAI、Azure 支持 |
logprobs |
bool |
返回输出 token 的 logprob |
|
top_logprobs |
int 0-5 |
每个 token 位置返回多少个候选 logprob;需要 logprobs=true |
|
流式
| 字段 |
类型 |
含义 |
stream |
bool |
开启 SSE 流式输出。LiteLLM 会把 provider 的流包装成 OpenAI 风格的 data: {...}\n\n 事件 |
stream_options |
dict |
目前主要是 {"include_usage": true},在流最后一条事件里返回 usage。 代理开启 general_settings.always_include_stream_usage: true 后,没传这个字段也会自动补上 |
工具 / 函数调用
详见 03-tools-and-structured-output。这里只列字段名:
| 字段 |
替代关系 |
tools |
✅ 推荐 |
tool_choice |
配合 tools |
parallel_tool_calls |
OpenAI 并行工具调用开关 |
functions |
⚠️ 已弃用,用 tools |
function_call |
⚠️ 已弃用,用 tool_choice |
结构化输出
| 字段 |
类型 |
含义 |
response_format |
dict |
{"type": "json_object"} 或 {"type": "json_schema", "json_schema": {...}};可用 Pydantic class 传 SDK 层,代理侧必须是序列化后的 dict |
多模态 / 新模态
| 字段 |
类型 |
含义 |
支持面 |
modalities |
array[string] |
期望输出的模态。如 ["text", "audio"] |
只 OpenAI gpt-audio / Gemini audio 支持 |
audio |
object |
音频输出参数,modalities 含 "audio" 时必填;字段如 {"voice": "...", "format": "..."} |
OpenAI gpt-audio / Gemini |
prediction |
object |
Predicted outputs,大段可预知内容时可显著降延迟;{"type": "content", "content": "..."} |
OpenAI 专有 |
web_search_options |
object |
开启网页检索。字段:search_context_size(low/medium/high)、user_location(近似位置) |
OpenAI gpt-4o-search / Gemini / Anthropic(部分)/ Bedrock(部分) |
推理模型(o1 / o3 / gpt-5 / claude sonnet 3.7+ / gemini thinking)
| 字段 |
类型 |
含义 |
reasoning_effort |
"none" / "minimal" / "low" / "medium" / "high" / "xhigh" / "default" |
通用的「推理深度」开关,LiteLLM 会按 provider 映射(如 Anthropic 的 thinking.budget_tokens) |
thinking |
dict |
Anthropic 原生风格:{"type": "enabled", "budget_tokens": 1024}。传给 Anthropic/Bedrock 会原样透传;传给其它 provider 会按 drop_params 处理 |
verbosity |
"low" / "medium" / "high" |
gpt-5 系列控制输出冗长度 |
OpenAI 新增治理字段
| 字段 |
类型 |
含义 |
user |
string |
端用户标识,OpenAI 用来做滥用检测。LiteLLM 还会把它回写到 end_user_id 做限流 / 预算 |
safety_identifier |
string |
新增的 user 替代品,做 abuse tracking |
service_tier |
"auto" / "default" / "flex" / "priority" |
计算资源层级 |
prompt_cache_key |
string |
OpenAI 提示缓存 key |
prompt_cache_retention |
string |
缓存保留策略 |
store |
bool |
是否在 OpenAI 侧持久化该请求,用于之后走 Evals / 回放 |
路由级覆盖(请求级动态连接 provider)
这些字段严格来说不是 OpenAI 协议的一部分,但 completion() 的显式参数里接受,放在 body 里也会被识别:
| 字段 |
类型 |
含义 |
api_base / base_url |
string |
临时覆盖模型的上游 endpoint |
api_key |
string |
临时覆盖上游 key(慎用,暴露凭证给下游) |
api_version |
string |
Azure OpenAI 的 api-version |
deployment_id |
string |
Azure deployment 名(可选,一般走 model 就够了) |
extra_headers |
dict |
追加到 provider HTTP 请求的自定义头;在 OpenAI SDK 场景下也会被原样带出 |
timeout |
float |
请求级超时(秒) |
max_retries |
int |
请求级重试次数 |
⚠️ 生产环境的代理一般不应该允许下游覆盖 api_base / api_key。建议在网关层过滤掉这些字段,或者在 key 级别通过 configurable_clientside_auth_params 收敛。
OpenAI 字段在 provider 间的支持矩阵(摘录)
下表只列若干常用 provider 的 get_supported_openai_params() 差异,完整列表请看各 provider 的 transformation.py。
| 字段 |
openai |
anthropic |
bedrock(converse) |
vertex_ai / gemini |
temperature / top_p / max_tokens / stop / stream |
✅ |
✅ |
✅ |
✅ |
n |
✅ |
❌ |
❌ |
✅ |
presence_penalty / frequency_penalty / logit_bias |
✅ |
❌ |
❌ |
✅(仅非 preview) |
seed |
✅ |
❌ |
❌ |
✅ |
logprobs / top_logprobs |
✅ |
❌ |
❌ |
✅ |
tools / tool_choice / parallel_tool_calls |
✅ |
✅ |
✅(非 ARN) |
✅ |
response_format |
✅ |
✅ |
✅ |
✅ |
reasoning_effort / thinking |
gpt-5/o1 |
claude 3.7+/4.x |
claude ARN |
gemini thinking |
web_search_options |
gpt-4o-search |
✅(部分) |
nova(部分) |
✅ |
user |
✅ |
✅(metadata.user_id) |
✅(requestMetadata) |
❌(被 drop) |
modalities / audio |
gpt-audio |
❌ |
❌ |
gemini audio |
❌ 表示当前 provider 不在 get_supported_openai_params() 里。不开 drop_params 会抛 UnsupportedParamsError;开了就静默丢。