提供商
Pi 支持通过 OAuth 使用订阅制提供商,并通过环境变量或 auth 文件使用 API 密钥提供商。对于每个提供商,pi 知道所有可用模型。列表随每个 pi 发布更新。
目录
订阅
在交互式模式下使用 /login,然后选择提供商:
- ChatGPT Plus/Pro (Codex)
- Claude Pro/Max
- GitHub Copilot
使用 /logout 清除凭据。Token 存储在 ~/.pi/agent/auth.json 中,过期时自动刷新。
OpenAI Codex
- 需要 ChatGPT Plus 或 Pro 订阅
- 由 OpenAI 官方背书:Codex for OSS
Claude Pro/Max
Anthropic 订阅认证对 Claude Pro/Max 账户有效。第三方 harness 使用从 额外用量 中扣除,按 token 计费,不消耗 Claude 计划限额。
GitHub Copilot
- 按 Enter 选择 github.com,或输入你的 GitHub Enterprise Server 域名
- 如果收到 "model not supported",在 VS Code 中启用它:Copilot Chat → 模型选择器 → 选择模型 → "Enable"
API 密钥
环境变量或 Auth 文件
在交互式模式下使用 /login 并选择提供商以在 auth.json 中存储 API 密钥,或通过环境变量设置凭据:
export ANTHROPIC_API_KEY=sk-ant-...
pi| 提供商 | 环境变量 | auth.json 键 |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY | anthropic |
| Azure OpenAI Responses | AZURE_OPENAI_API_KEY | azure-openai-responses |
| OpenAI | OPENAI_API_KEY | openai |
| DeepSeek | DEEPSEEK_API_KEY | deepseek |
| Google Gemini | GEMINI_API_KEY | google |
| 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 | ZAI_API_KEY | zai |
| OpenCode Zen | OPENCODE_API_KEY | opencode |
| OpenCode Go | OPENCODE_API_KEY | opencode-go |
| 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 (China) | MINIMAX_CN_API_KEY | minimax-cn |
| Xiaomi MiMo | XIAOMI_API_KEY | xiaomi |
| Xiaomi MiMo Token 计划 (China) | XIAOMI_TOKEN_PLAN_CN_API_KEY | xiaomi-token-plan-cn |
| Xiaomi MiMo Token 计划 (Amsterdam) | XIAOMI_TOKEN_PLAN_AMS_API_KEY | xiaomi-token-plan-ams |
| Xiaomi MiMo Token 计划 (Singapore) | XIAOMI_TOKEN_PLAN_SGP_API_KEY | xiaomi-token-plan-sgp |
环境变量和 auth.json 键的参考:const envMap 在 packages/ai/src/env-api-keys.ts。
Auth 文件
将凭据存储在 ~/.pi/agent/auth.json 中:
{
"anthropic": { "type": "api_key", "key": "sk-ant-..." },
"openai": { "type": "api_key", "key": "sk-..." },
"deepseek": { "type": "api_key", "key": "sk-..." },
"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 权限创建(仅用户可读/写)。Auth 文件凭据优先于环境变量。
密钥解析
key 字段支持命令执行、环境变量插值和字面量:
- Shell 命令: 开头的
"!command"将整个值作为命令执行并使用 stdout(缓存进程生命周期)json{ "type": "api_key", "key": "!security find-generic-password -ws 'anthropic'" } { "type": "api_key", "key": "!op read 'op://vault/item/credential'" } - 环境变量插值:
"$ENV_VAR"或"${ENV_VAR}"使用命名变量的值。插值在更大的字面量中工作。json{ "type": "api_key", "key": "$MY_ANTHROPIC_KEY" } { "type": "api_key", "key": "${KEY_PREFIX}_${KEY_SUFFIX}" }$FOO_BAR是变量FOO_BAR;当BAR是字面文本时,使用${FOO}_BAR。缺少的环境变量使值未解析。 - 转义:
"$$"输出字面"$";"$!"输出字面"!"而不触发命令执行。json{ "type": "api_key", "key": "$$literal-dollar-prefix" } { "type": "api_key", "key": "$!literal-bang-prefix" } - 字面值: 直接使用json
{ "type": "api_key", "key": "sk-ant-..." } { "type": "api_key", "key": "public" }
遗留的大写环境变量样式的值(如 MY_API_KEY)在启动时迁移到 $MY_API_KEY。OAuth 凭据也在 /login 后存储于此并自动管理。
云提供商
Azure OpenAI
export AZURE_OPENAI_API_KEY=...
export AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
# 也支持:https://your-resource.cognitiveservices.azure.com
# 根端点自动归一化为 /openai/v1
# 或使用资源名称代替基本 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
# 选项 1:AWS Profile
export AWS_PROFILE=your-profile
# 选项 2:IAM 密钥
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 必须作为环境变量设置。
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 使用统一 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。上游认证可以是以下之一:
| 模式 | 请求认证 | 上游认证 |
|---|---|---|
| Workers AI | 仅 Cloudflare token | Cloudflare 原生 |
| 统一计费 | 仅 Cloudflare token | Cloudflare 处理上游认证并扣除信用 |
| 存储 BYOK | 仅 Cloudflare token | Cloudflare 注入存储在 AI Gateway 仪表板中的提供商密钥 |
| 内联 BYOK | Cloudflare token 加上上游 Authorization 头 | 请求提供上游提供商密钥 |
对于正常 pi 使用,首选统一计费或存储 BYOK。内联 BYOK 需要为 Cloudflare AI Gateway 提供商配置额外的上游 Authorization 头,例如通过 models.json 提供商/模型覆盖。
Cloudflare Workers AI
CLOUDFLARE_API_KEY 可通过 /login 设置。CLOUDFLARE_ACCOUNT_ID 必须作为环境变量设置。
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 设置为服务账户密钥文件。
自定义提供商
**通过 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。
解析顺序
解析提供商凭据时:
- CLI
--api-key标志 auth.json条目(API 密钥或 OAuth token)- 环境变量
models.json中的自定义提供商密钥