For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /docs/latest/models-configuration.md.

模型配置

本页面是 Pi 官方文档 的中文翻译。仅供学习参考。

本参考列出 models.json 的字段。示例见配置兼容端点,文件位置见配置。

在 models.json 中加入 "$schema": "https://pi.dev/schemas/models.schema.json",以便编辑器校验和补全。

Provider

providers 下的每个键是 Provider ID。内置 Provider ID 会修改该 Provider。其他 ID 会新增 Provider,并需要在 Provider 或模型级别提供 baseUrl 和 api。

字段类型默认值说明
namestring显示名称。
baseUrlstringAPI 基础 URL。也作用于该 Provider 的内置模型。
apiKeystring字面 Key、"$NAME" 环境变量插值,或 "!command" 的输出。
apistring该 Provider 模型使用的 API,例如 "openai-completions"、"openai-responses"、"anthropic-messages" 或 "google-generative-ai"。
oauth"radius"OAuth 登录流程。需要 baseUrl。
headersobject请求头。值的解析方式与 apiKey 相同。
compatobjectProvider 和模型的兼容性覆盖。
authHeaderbooleanfalse是否把解析后的 API Key 作为 Authorization: Bearer 发送。
modelsobject[]
modelOverridesobject

模型

每个 models 条目向该 Provider 添加一个模型。id 与已有模型相同的条目会替换它。

字段类型默认值说明
idstring必填。发给 API 的模型 ID。
namestring显示名称,也会被 --model 模式匹配。
apistring覆盖 Provider 的 api。
baseUrlstring覆盖 Provider 的 baseUrl。
reasoningbooleanfalse模型是否支持 thinking。
thinkingLevelMapobject每个 thinking 级别发给 Provider 的值。null 表示该级别不受支持。模型未映射的级别使用 Provider 的默认值,直到 high;xhigh 和 max 不受支持。
input("text" | "image")[]["text"]
inputLimitsobject
costobject
cost.inputnumber必填。输入费用,美元 / 百万 Token。
cost.outputnumber必填。输出费用,美元 / 百万 Token。
cost.cacheReadnumber必填。缓存读取费用,美元 / 百万 Token。
cost.cacheWritenumber必填。缓存写入费用,美元 / 百万 Token。
cost.tiersobject[]作用于整次请求的定价档。匹配的最高输入阈值应用于整次请求。
cost.tiers[].inputTokensAbovenumber必填。请求总输入超过该 Token 数时使用这一档。
cost.tiers[].inputnumber必填。输入费用,美元 / 百万 Token。
cost.tiers[].outputnumber必填。输出费用,美元 / 百万 Token。
cost.tiers[].cacheReadnumber必填。缓存读取费用,美元 / 百万 Token。
cost.tiers[].cacheWritenumber必填。缓存写入费用,美元 / 百万 Token。
promptCacheobjectshort 和 long 保留层级尽力而为的 Prompt 缓存时长(秒)。Pi 只预热已知时长的层级。
contextWindownumber128000上下文窗口,单位 Token。
maxTokensnumber16384最大输出 Token。
samplingParamsobject合并进每次请求体的字段。只适用于 OpenAI 兼容 API。
samplingParamsByThinkingLevelobject按 thinking 级别的 samplingParams,合并在 samplingParams 之上。
headersobject请求头。值的解析方式与 apiKey 相同。
compatobjectProvider 和模型的兼容性覆盖。

模型覆盖

每个 modelOverrides 键是内置或扩展模型的 ID。未知 ID 会被忽略。cost 等对象字段与模型的对应值按字段合并;其他字段则替换它。

字段类型默认值说明
namestring显示名称,也会被 --model 模式匹配。
reasoningboolean模型是否支持 thinking。
thinkingLevelMapobject每个 thinking 级别发给 Provider 的值。null 表示该级别不受支持。模型未映射的级别使用 Provider 的默认值,直到 high;xhigh 和 max 不受支持。
input("text" | "image")[]
inputLimitsobject
costobject
cost.inputnumber输入费用,美元 / 百万 Token。
cost.outputnumber输出费用,美元 / 百万 Token。
cost.cacheReadnumber缓存读取费用,美元 / 百万 Token。
cost.cacheWritenumber缓存写入费用,美元 / 百万 Token。
cost.tiersobject[]作用于整次请求的定价档。匹配的最高输入阈值应用于整次请求。
cost.tiers[].inputTokensAbovenumber必填。请求总输入超过该 Token 数时使用这一档。
cost.tiers[].inputnumber必填。输入费用,美元 / 百万 Token。
cost.tiers[].outputnumber必填。输出费用,美元 / 百万 Token。
cost.tiers[].cacheReadnumber必填。缓存读取费用,美元 / 百万 Token。
cost.tiers[].cacheWritenumber必填。缓存写入费用,美元 / 百万 Token。
promptCacheobjectshort 和 long 保留层级尽力而为的 Prompt 缓存时长(秒)。Pi 只预热已知时长的层级。
contextWindownumber上下文窗口,单位 Token。
maxTokensnumber最大输出 Token。
samplingParamsobject合并进每次请求体的字段。只适用于 OpenAI 兼容 API。
samplingParamsByThinkingLevelobject按 thinking 级别的 samplingParams,合并在 samplingParams 之上。
headersobject请求头。值的解析方式与 apiKey 相同。
compatobjectProvider 和模型的兼容性覆盖。

输入限制

见描述模型输入和缓存。

字段类型默认值说明
maxRequestBytesinteger序列化后的 Provider 请求的最大字节数。
imagesobject
images.resizeobject新图片进入对话历史之前应用的、对缓存安全的缩放配置。
images.resize.maxWidthinteger
images.resize.maxHeightinteger
images.resize.maxBytesintegerbase64 编码后载荷的最大字节数。
images.resize.jpegQualityinteger
images.maxPerMessageinteger一条 Provider 消息中接受的最大图片数。
images.maxPerRequestinteger一次 Provider 请求中接受的最大图片数。

兼容性

compat 描述与某个 API 标准请求和响应行为之间已验证的差异。模型值按字段覆盖 Provider 值。哪些字段生效取决于模型的 api。

openai-completions

字段类型默认值说明
supportsStorebooleanProvider 是否支持 store 字段。默认:根据 URL 自动检测。
supportsDeveloperRolebooleanProvider 是否支持用 developer 角色代替 system。默认:根据 URL 自动检测。
supportsReasoningEffortbooleanProvider 是否支持 reasoning_effort。默认:根据 URL 自动检测。
supportsUsageInStreamingbooleantrueProvider 是否支持 stream_options.include_usage,以便在流式响应中获得 Token 用量。
supportsFinishReasonbooleantrue流式响应是否包含 finish_reason。为 false 时,流结束时 Pi 推断为 stop 或 toolUse。
maxTokensField"max_completion_tokens" | "max_tokens"用哪个字段表示最大 Token。默认:根据 URL 自动检测。
requiresToolResultNameboolean工具结果是否需要 name 字段。默认:根据 URL 自动检测。
requiresAssistantAfterToolResultboolean工具结果之后的用户消息是否必须先有一条 assistant 消息。默认:根据 URL 自动检测。
requiresNonNullAssistantContentboolean重放的、没有文本的 assistant 消息(例如只有 tool call 的消息)是否必须发送 "" 而不是 null content。默认:false。
requiresToolsWithToolHistoryboolean没有工具的请求在对话包含 tool call 或工具结果时,是否必须发送 "tools": []。某些放在 Anthropic 前面的代理需要它,例如旧版 LiteLLM。默认:false,该字段会被省略。
requiresThinkingAsTextbooleanthinking 块是否必须转换成带 <thinking> 分隔符的文本块。默认:根据 URL 自动检测。
requiresReasoningContentOnAssistantMessagesboolean启用推理时,所有重放的 assistant 消息是否必须包含空的 reasoning_content 字段。默认:根据 URL 自动检测。
thinkingFormat"openai" | "openrouter" | "deepseek" | "together" | "baseten" | "zai" | "qwen" | "chat-template" | "qwen-chat-template" | "string-thinking" | "ant-ling"推理或 thinking 参数的格式。省略时,Pi 根据 Provider URL 自动检测。"openai" 使用 reasoning_effort;"openrouter" 使用 reasoning.effort;"deepseek" 使用 thinking.type,并在受支持时加上 reasoning_effort;"together" 使用 reasoning.enabled,并在受支持时加上 reasoning_effort;"baseten" 使用可配置的 chat_template_args,并在受支持时加上 reasoning_effort;"zai" 使用 thinking.type;"qwen" 使用顶层 enable_thinking;"qwen-chat-template" 使用 chat_template_kwargs.enable_thinking 和 preserve_thinking;"chat-template" 使用可配置的 chat_template_kwargs;"string-thinking" 使用顶层 thinking;"ant-ling" 只在映射后的 effort 非 null 时使用 reasoning.effort。
chatTemplateKwargsobjectthinkingFormat 为 "chat-template" 时,作为 chat_template_kwargs 发送的参数。用 $var 配合 "thinking.enabled"、"thinking.effort" 或 "thinking.budget" 表示由 Pi 控制的值。
chatTemplateArgsobjectthinkingFormat 为 "baseten" 时,作为 chat_template_args 发送的参数。用 $var 配合 "thinking.enabled"、"thinking.effort" 或 "thinking.budget" 表示由 Pi 控制的值。
openRouterRoutingobjectOpenRouter 的 Provider 路由偏好。控制 OpenRouter 把请求路由到哪些上游 Provider。作为 OpenRouter API 请求体中的 provider 字段发送。见 https://openrouter.ai/docs/guides/routing/provider-selection。
vercelGatewayRoutingobjectVercel AI Gateway 的路由偏好。控制网关把请求路由到哪些上游 Provider。见 https://vercel.com/docs/ai-gateway/models-and-providers/provider-options。
zaiToolStreambooleanfalsez.ai 是否支持顶层 tool_stream,用于流式传输 tool call 增量。
thinkingTokenBudgetField"thinking_token_budget" | "thinking_budget" | "thinking_budget_tokens"用来根据 thinkingBudgets 限制推理 Token 的顶层请求字段。在这些端点上,推理和答案共享 max_tokens。"thinking_token_budget" 是 vLLM,"thinking_budget" 是 Qwen、DashScope 或 SGLang,"thinking_budget_tokens" 是 llama.cpp。默认关闭,生成的目录不会设置它。
supportsThinkingTokenBudgetbooleanfalsethinkingTokenBudgetField: "thinking_token_budget"(vLLM)的别名。优先使用 thinkingTokenBudgetField。
supportsOpenAIGrammarToolsbooleanfalseProvider 是否支持带 Lark 或正则语法格式的 OpenAI 自定义工具。为 false 时,受语法约束的工具回退为普通函数工具。生成的目录会为有能力的模型开启它。
supportsMidConvoSystemMessagesbooleanfalse该具体模型是否接受对话开始后的 system 或 developer 消息。为 false 时,后续系统消息会折进开头的系统消息。生成的目录会为已验证的模型开启它。
supportsMidConvoToolAdditionsbooleanfalse系统消息是否可以在对话中途引入额外工具。需要 supportsMidConvoSystemMessages。生成的目录会为有能力的模型开启它。
supportsStrictModebooleanfalseProvider 是否支持工具定义中的 strict 字段。生成的有能力模型会显式开启它。
cacheControlFormat"anthropic"Prompt 缓存的 cache control 约定。Anthropic 把 cache_control 标记应用到系统 Prompt、最后一个工具定义,以及最后一条 user、assistant 或 tool-result 文本内容。
sendSessionAffinityHeadersboolean是否发送来自 options.sessionId 的会话亲和数据。默认:OpenRouter 端点为 true,其他为 false。
sessionAffinityFormat"openai" | "openai-nosession" | "openrouter"会话亲和请求头格式。openai 发送 session_id、x-client-request-id 和 x-session-affinity;openai-nosession 发送 x-client-request-id 和 x-session-affinity;openrouter 发送 x-session-id。不影响 prompt_cache_key。默认:自动检测。
promptCacheKeyMode"auto" | "enabled" | "disabled"控制 prompt_cache_key 请求字段。auto 在发往 api.openai.com 时发送,或在 supportsLongCacheRetention 为 true 时随长缓存保留一起发送;enabled 在缓存激活时始终发送,供兼容代理使用;disabled 从不发送。默认:auto。
supportsLongCacheRetentionbooleanProvider 是否支持长 Prompt 缓存保留(prompt_cache_retention: "24h",或按格式使用 Anthropic 风格的 cache_control.ttl: "1h")。默认:根据 Provider 和 URL 自动检测。
vllmPrioritynumber作为顶层 priority 请求字段发送的 vLLM 调度优先级。值越低越早处理,服务器默认为 0。只在 --scheduling-policy priority 时有意义。默认关闭,生成的目录不会设置它。

openai-responses

也适用于 azure-openai-responses 和 openai-codex-responses。

字段类型默认值说明
supportsDeveloperRolebooleantrueProvider 是否支持用 developer 角色代替 system。
supportsMidConvoSystemMessagesbooleanfalse该具体模型是否接受对话开始后的 developer 或 system 消息。为 false 时,后续系统消息会折进开头的系统消息。生成的目录会为已验证的模型开启它。
sessionAffinityFormat"openai" | "openai-nosession" | "openrouter"会话亲和请求头格式。openai 发送 session-id 和 x-client-request-id;openai-nosession 发送 x-client-request-id;openrouter 发送 x-session-id。不影响 prompt_cache_key。默认:自动检测。
promptCacheKeyMode"auto" | "enabled" | "disabled"控制 prompt_cache_key 请求字段。auto 和 enabled 在缓存激活时发送;disabled 从不发送,供会拒绝该字段的兼容代理使用。默认:auto。
supportsLongCacheRetentionbooleantrueProvider 是否支持长 Prompt 缓存保留。GPT-5.6+ 使用 prompt_cache_options.ttl: "30m",更早的模型使用 prompt_cache_retention: "24h"。
supportsStrictModebooleanProvider 是否支持严格 JSON schema 函数工具。默认值因 API 而异;生成的 OpenAI 模型会显式开启它。
supportsOpenAIGrammarToolsbooleanfalse是否发出带 Lark 或正则语法格式的 OpenAI 自定义工具。为 false 时,受语法约束的工具回退为普通函数工具。生成的目录会为有能力的模型开启它。
supportsAdditionalToolsbooleanfalse模型是否支持锚定在消息上的 additional_tools 输入项。
supportsToolSearchbooleanfalse模型是否支持由客户端执行的工具搜索,用于锚定在转录上的添加工具。
supportsExplicitPromptCacheModebooleanfalse模型是否接受 prompt_cache_options。较旧的 OpenAI 模型会拒绝该参数。
supportsMidConvoEffortbooleanfalsethinking 级别变化是否作为 configuration_update 输入项发送,而不是改变 reasoning.effort,从而使变化保留 Prompt 缓存。只用于 openai-responses API,在 openai Provider 上使用 Sign in with ChatGPT 时会被忽略。
supportsMaxOutputTokensbooleantrueProvider 是否接受 max_output_tokens。有些 Codex 协议网关会拒绝它。

anthropic-messages

字段类型默认值说明
supportsEagerToolInputStreamingbooleantrueProvider 是否接受按工具设置的 eager_input_streaming。为 false 时,Anthropic Provider 省略 tools[].eager_input_streaming,并为启用工具的请求发送旧的 fine-grained-tool-streaming-2025-05-14 beta 头。
supportsLongCacheRetentionbooleantrueProvider 是否通过 cache_control.ttl 支持 Anthropic 长缓存保留。
sendSessionAffinityHeadersboolean启用缓存时,是否根据 options.sessionId 发送 x-session-affinity。Fireworks 等用会话亲和做 Prompt 缓存路由的 Provider 需要它;打到同一副本的请求能最大化缓存命中。默认:OpenRouter 端点为 true,其他为 false。
sessionAffinityFormat"openrouter"会话亲和格式。openrouter 发送 x-session-id;未设置时发送 x-session-affinity。
supportsCacheControlOnToolsbooleantrueProvider 是否支持在工具定义上使用 Anthropic 风格的 cache_control 标记。为 false 时,工具参数中会省略 cache_control。有些 Anthropic 兼容 Provider(例如 Fireworks)不支持工具上的该字段,可能拒绝或忽略它。
supportsTemperaturebooleantrue模型是否接受 Anthropic 的 temperature 请求字段。Claude Opus 4.7+ 会拒绝非默认值。
forceAdaptiveThinkingbooleanfalse是否强制自适应 thinking(thinking.type: adaptive 加上 output_config.effort),与模型 ID 无关。需要自适应 thinking 的内置模型会在生成的元数据中设置它。自定义 Anthropic 兼容 Provider 可以对任何上游要求自适应格式的模型把它设为 true。对被覆盖的内置模型设为 false 可以退出。
allowEmptySignaturebooleanfalse是否重放空的 thinking 签名,而不是把 thinking 转换成文本。
supportsStrictToolsbooleanfalseProvider 是否支持 Anthropic 严格工具 schema。生成的 Anthropic 模型会显式开启它。
supportsMidConvoEffortbooleanfalse该具体模型的传输是否支持只含 effort 的系统消息和 thinking 绑定控制。
supportsMidConvoSystemMessagesbooleanfalse该具体模型是否接受对话内部的 system 角色消息。为 false 时,后续系统消息会折进顶层系统 Prompt。
supportsMidConvoToolChangesbooleanfalse该具体模型是否接受对话中途的 tool_addition 和 tool_removal 块。需要 supportsMidConvoSystemMessages。
supportsMessageThreadsboolean端点是否支持 Anthropic message threads:带 session id 的请求只发送新消息,并从上次回复继续。默认:baseUrl 在 api.anthropic.com 上时为 true,否则为 false。对会转发 thread 请求字段的网关设为 true。
allowedFallbackModelsobject[]Anthropic 接受用于服务端拒绝回退的模型,以及返回的回退响应所用的本地定价元数据。缺省或为空时,调用方必须省略回退;对没有允许回退目标的模型,Anthropic 会拒绝该字段。

bedrock-converse-stream

字段类型默认值说明
supportsStrictModebooleanfalse模型是否支持 Bedrock 严格工具 schema。

mistral-conversations

字段类型默认值说明
supportsMidConvoSystemMessagesbooleanfalse该具体模型是否接受对话开始后的系统消息。为 false 时,后续系统消息会折进开头的系统消息。

typesafe-system-one

也适用于 cloudflare-workers-ai-system-one。

字段类型默认值说明
imageInput"assets" | "images" | "state-image-urls"服务如何接收分类器图片。"assets" 发送 TypeSafe 的 assets 映射(PNG 和 JPEG),并从 state 引用这些图片,这是 TypeSafe 以及 Workers AI 上的 Jev 所期望的。"images" 发送 Clef 的 images 列表,内容是 data URL(PNG、JPEG 和 WebP,最多四张),这是 Workers AI 上的 Clef 所期望的。"state-image-urls" 把 image_url 部分放在 state 之前,这是 OpenRouter 所期望的;OpenRouter 会丢掉 assets 且不报错。根据 Provider、baseUrl 和模型 ID 自动检测。分类器模型从 Provider 级 compat 读取它;models 和 modelOverrides 条目只作用于聊天模型。
sendImageOptInHeaderboolean带图片的请求是否发送 TypeSafe-Danger-Zone-Images: true 头。TypeSafe 自己的 API 对其实验性图片输入要求这个头。对 typesafe-system-one API 默认为 true,除非模型被检测为 OpenRouter。

法律声明:本页面是 pi.dev 官方文档的中文翻译版本,仅供学习参考。本网站与 pi.dev 及 Earendil Inc. 无任何法律关系。