提供商
Pi 支持基于 OAuth 订阅的提供商和通过环境变量或 auth 文件配置的 API Key 提供商。Pi 内置了提供商目录;配置的提供商可以刷新更新的目录并将其缓存在 ~/.pi/agent/models-store.json 中,以供离线使用。
目录 Table of Contents
- 订阅 Subscriptions
- API 密钥 API Keys
- 认证文件 Auth File
- 云提供商 Cloud Providers
- 自定义提供商 Custom Providers
- 解析顺序 Resolution Order
订阅 Subscriptions
在交互模式中使用 /login,然后选择一个提供商:
- ChatGPT Plus/Pro (Codex)
- Claude Pro/Max
- GitHub Copilot
- Radius
使用 /logout 清除凭据。令牌存储在 ~/.pi/agent/auth.json 中,过期时会自动刷新。
OpenAI Codex
- 需要 ChatGPT Plus 或 Pro 订阅
- 获得 OpenAI 官方认可:Codex for OSS
Claude Pro/Max
Anthropic 订阅认证适用于 Claude Pro/Max 账户。第三方工具的使用量来自额外用量,按 token 计费,不计入 Claude 套餐限额。
GitHub Copilot
- 按 Enter 使用 github.com,或输入你的 GitHub Enterprise Server 域名
- 如果出现"model not supported",请在 VS Code 中启用:Copilot Chat → 模型选择器 → 选择模型 → “Enable”
Radius
Radius 是一个动态的 pi-messages 网关。/login radius 将 OAuth 令牌存储在 auth.json 中;网关目录独立刷新并缓存在 models-store.json 中。可以通过在 models.json 中声明 "oauth": "radius" 和网关 baseUrl 来添加自定义 Radius 网关。
API 密钥 API Keys
环境变量或认证文件
在交互模式中使用 /login 并选择一个提供商,将 API Key 存储在 auth.json 中,或通过环境变量设置凭据:
export ANTHROPIC_API_KEY=sk-ant-...
pi| 提供商 Provider | 环境变量 Environment Variable | auth.json 键名 |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY | anthropic |
| Ant Ling | ANT_LING_API_KEY | ant-ling |
| Azure OpenAI Responses | AZURE_OPENAI_API_KEY | azure-openai-responses |
| OpenAI | OPENAI_API_KEY | openai |
| DeepSeek | DEEPSEEK_API_KEY | deepseek |
| NVIDIA NIM | NVIDIA_API_KEY | nvidia |
| Google Gemini | GEMINI_API_KEY | google |
| Amazon Bedrock | AWS_BEARER_TOKEN_BEDROCK | amazon-bedrock |
| Mistral | MISTRAL_API_KEY | mistral |
| Groq | GROQ_API_KEY | groq |
| Cerebras | CEREBRAS_API_KEY | cerebras |
| Cloudflare AI Gateway | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID) | cloudflare-ai-gateway |
| Cloudflare Workers AI | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID) | cloudflare-workers-ai |
| xAI | XAI_API_KEY | xai |
| OpenRouter | OPENROUTER_API_KEY | openrouter |
| Vercel AI Gateway | AI_GATEWAY_API_KEY | vercel-ai-gateway |
| ZAI Coding Plan(全球) | ZAI_API_KEY | zai |
| ZAI Coding Plan(中国) | ZAI_CODING_CN_API_KEY | zai-coding-cn |
| OpenCode Zen | OPENCODE_API_KEY | opencode |
| OpenCode Go | OPENCODE_API_KEY | opencode-go |
| Radius | RADIUS_API_KEY | radius |
| Hugging Face | HF_TOKEN | huggingface |
| Fireworks | FIREWORKS_API_KEY | fireworks |
| Together AI | TOGETHER_API_KEY | together |
| Kimi For Coding | KIMI_API_KEY | kimi-coding |
| MiniMax | MINIMAX_API_KEY | minimax |
| MiniMax(中国) | MINIMAX_CN_API_KEY | minimax-cn |
| 小米 MiMo | XIAOMI_API_KEY | xiaomi |
| 小米 MiMo Token 套餐(中国) | XIAOMI_TOKEN_PLAN_CN_API_KEY | xiaomi-token-plan-cn |
| 小米 MiMo Token 套餐(阿姆斯特丹) | XIAOMI_TOKEN_PLAN_AMS_API_KEY | xiaomi-token-plan-ams |
| 小米 MiMo Token 套餐(新加坡) | XIAOMI_TOKEN_PLAN_SGP_API_KEY | xiaomi-token-plan-sgp |
环境变量和 auth.json 键名参考来源:const envMap 位于 packages/ai/src/env-api-keys.ts。
认证文件 Auth File
将凭据存储在 ~/.pi/agent/auth.json 中:
{
"anthropic": { "type": "api_key", "key": "sk-ant-..." },
"ant-ling": { "type": "api_key", "key": "..." },
"openai": { "type": "api_key", "key": "sk-..." },
"deepseek": { "type": "api_key", "key": "sk-..." },
"nvidia": { "type": "api_key", "key": "nvapi-..." },
"google": { "type": "api_key", "key": "..." },
"opencode": { "type": "api_key", "key": "..." },
"opencode-go": { "type": "api_key", "key": "..." },
"together": { "type": "api_key", "key": "..." },
"xiaomi": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-cn": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-ams": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-sgp": { "type": "api_key", "key": "..." }
}该文件创建时权限为 0600(仅用户读写)。认证文件中的凭据优先级高于环境变量。
API Key 凭据还可以包含提供商作用域的环境变量值。在解析凭据键名、提供商/模型请求头以及提供商配置(例如 Cloudflare 账户 ID、Azure OpenAI 设置、Vertex 项目/区域、Bedrock 设置、PI_CACHE_RETENTION 和 HTTP_PROXY/HTTPS_PROXY)时,这些值会优先于进程环境变量被使用。
{
"cloudflare-ai-gateway": {
"type": "api_key",
"key": "$CLOUDFLARE_API_KEY",
"env": {
"CLOUDFLARE_API_KEY": "...",
"CLOUDFLARE_ACCOUNT_ID": "account-id",
"CLOUDFLARE_GATEWAY_ID": "gateway-id"
}
}
}当 pi 需要使用与项目 shell 环境不同的提供商设置时,可以使用此方式。
密钥解析 Key Resolution
key 字段支持命令执行、环境变量插值和直接字面量:
Shell 命令: 以
"!"开头时,整串值作为命令执行,并使用 stdout 输出(在进程生命周期内缓存){ "type": "api_key", "key": "!security find-generic-password -ws 'anthropic'" } { "type": "api_key", "key": "!op read 'op://vault/item/credential'" }环境变量插值:
"$ENV_VAR"或"${ENV_VAR}"使用命名变量的值。插值可在较长的字面量内部使用。{ "type": "api_key", "key": "$MY_ANTHROPIC_KEY" } { "type": "api_key", "key": "${KEY_PREFIX}_${KEY_SUFFIX}" }$FOO_BAR表示变量FOO_BAR;当BAR是字面文本时,使用${FOO}_BAR。缺失的环境变量会导致值无法解析。转义:
"$$"输出字面量"$";"$!"输出字面量"!",不会触发命令执行。{ "type": "api_key", "key": "$$literal-dollar-prefix" } { "type": "api_key", "key": "$!literal-bang-prefix" }字面量值: 直接使用。纯大写字符串如
MY_API_KEY是字面量;如需环境变量请使用$MY_API_KEY。{ "type": "api_key", "key": "sk-ant-..." } { "type": "api_key", "key": "public" }
OAuth 凭据在执行 /login 后也存储在此文件中,并自动管理。
云提供商 Cloud Providers
Azure OpenAI
export AZURE_OPENAI_API_KEY=...
export AZURE_OPENAI_BASE_URL=https://your-resource.ai.azure.com
# 也支持:https://your-resource.cognitiveservices.azure.com
# 也支持:https://your-resource.openai.azure.com
# 根端点会自动规范化为 /openai/v1
# 或使用资源名称代替 base URL
export AZURE_OPENAI_RESOURCE_NAME=your-resource
# 可选
export AZURE_OPENAI_API_VERSION=2024-02-01
export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-4=my-gpt4,gpt-4o=my-gpt4oAmazon Bedrock
使用 /login amazon-bedrock 存储 Bedrock API Key,或配置以下任一 AWS 凭据源:
# 选项 1:AWS Profile
export AWS_PROFILE=your-profile
# 选项 2:IAM Keys
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
# 选项 3:Bearer Token
export AWS_BEARER_TOKEN_BEDROCK=...
# 可选区域(默认为 us-east-1)
export AWS_REGION=us-west-2此外还支持 ECS 任务角色(AWS_CONTAINER_CREDENTIALS_*)和 IRSA(AWS_WEB_IDENTITY_TOKEN_FILE)。
pi --provider amazon-bedrock --model us.anthropic.claude-sonnet-4-20250514-v1:0对于 ID 中包含可识别模型名称的 Claude 模型(基础模型和系统定义的推理配置文件),提示缓存会自动启用。对于应用推理配置文件(其 ARN 不包含模型名称),设置 AWS_BEDROCK_FORCE_CACHE=1 以启用缓存点:
export AWS_BEDROCK_FORCE_CACHE=1
pi --provider amazon-bedrock --model arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123如果你要连接到 Bedrock API 代理,可以使用以下环境变量:
# 设置 Bedrock 代理的 URL(标准 AWS SDK 环境变量)
export AWS_ENDPOINT_URL_BEDROCK_RUNTIME=https://my.corp.proxy/bedrock
# 如果代理不需要认证,请设置此项
export AWS_BEDROCK_SKIP_AUTH=1
# 如果代理仅支持 HTTP/1.1,请设置此项
export AWS_BEDROCK_FORCE_HTTP1=1Cloudflare AI Gateway
CLOUDFLARE_API_KEY 可以通过 /login 设置。账户 ID 和网关 slug 可以作为环境变量或在 auth.json 中 API Key 凭据的 env 对象中设置。
export CLOUDFLARE_API_KEY=... # 或使用 /login
export CLOUDFLARE_ACCOUNT_ID=...
export CLOUDFLARE_GATEWAY_ID=... # 在 dash.cloudflare.com → AI → AI Gateway 创建
pi --provider cloudflare-ai-gateway --model "claude-sonnet-4-5"通过 Cloudflare AI Gateway 路由到 OpenAI、Anthropic 和 Workers AI。Workers AI 使用 Unified API(/compat)和带前缀的模型 ID(workers-ai/@cf/...)。OpenAI 使用 OpenAI 透传路由(/openai)和原生 OpenAI 模型 ID,如 gpt-5.1。Anthropic 使用 Anthropic 透传路由(/anthropic)和原生 Anthropic 模型 ID,如 claude-sonnet-4-5。
AI Gateway 认证使用 CLOUDFLARE_API_KEY 作为 cf-aig-authorization。上游认证可以是以下之一:
| 模式 Mode | 请求认证 | 上游认证 |
|---|---|---|
| Workers AI | 仅 Cloudflare 令牌 | Cloudflare 原生 |
| 统一计费 Unified billing | 仅 Cloudflare 令牌 | Cloudflare 处理上游认证并扣除额度 |
| 存储式 BYOK | 仅 Cloudflare 令牌 | Cloudflare 注入存储在 AI Gateway 控制面板中的提供商密钥 |
| 内联 BYOK | Cloudflare 令牌加上游 Authorization 请求头 | 请求提供上游提供商密钥 |
对于正常的 pi 使用,建议优先选择统一计费或存储式 BYOK。内联 BYOK 需要为 Cloudflare AI Gateway 提供商配置额外的上游 Authorization 请求头,例如通过 models.json 的提供商/模型覆盖设置。
Cloudflare Workers AI
CLOUDFLARE_API_KEY 可以通过 /login 设置。CLOUDFLARE_ACCOUNT_ID 可以作为环境变量或在 auth.json 中 API Key 凭据的 env 对象中设置。
export CLOUDFLARE_API_KEY=... # 或使用 /login
export CLOUDFLARE_ACCOUNT_ID=...
pi --provider cloudflare-workers-ai --model "@cf/moonshotai/kimi-k2.6"Pi 会自动设置 x-session-affinity 以享受前缀缓存折扣。
Google Vertex AI
使用应用默认凭据(Application Default Credentials):
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT=your-project
export GOOGLE_CLOUD_LOCATION=us-central1或者将 GOOGLE_APPLICATION_CREDENTIALS 设置为服务账号密钥文件路径。
自定义提供商 Custom Providers
通过 models.json: 添加 Ollama、LM Studio、vLLM 或任何支持标准 API(OpenAI Completions、OpenAI Responses、Anthropic Messages、Google Generative AI)的提供商。参见 models.md。
通过扩展: 对于需要自定义 API 实现或 OAuth 流程的提供商,可以创建扩展。参见 custom-provider.md 和 examples/extensions/custom-provider-gitlab-duo。
解析顺序 Resolution Order
解析提供商凭据时的优先级顺序:
- CLI
--api-key标志 auth.json条目(API Key 或 OAuth 令牌)- 环境变量
- 来自
models.json的自定义提供商密钥