Skip to content

提供商 ​

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 密钥,或通过环境变量设置凭据:

bash
export ANTHROPIC_API_KEY=sk-ant-...
pi
提供商环境变量auth.json 键
AnthropicANTHROPIC_API_KEYanthropic
Azure OpenAI ResponsesAZURE_OPENAI_API_KEYazure-openai-responses
OpenAIOPENAI_API_KEYopenai
DeepSeekDEEPSEEK_API_KEYdeepseek
Google GeminiGEMINI_API_KEYgoogle
MistralMISTRAL_API_KEYmistral
GroqGROQ_API_KEYgroq
CerebrasCEREBRAS_API_KEYcerebras
Cloudflare AI GatewayCLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID)cloudflare-ai-gateway
Cloudflare Workers AICLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID)cloudflare-workers-ai
xAIXAI_API_KEYxai
OpenRouterOPENROUTER_API_KEYopenrouter
Vercel AI GatewayAI_GATEWAY_API_KEYvercel-ai-gateway
ZAIZAI_API_KEYzai
OpenCode ZenOPENCODE_API_KEYopencode
OpenCode GoOPENCODE_API_KEYopencode-go
Hugging FaceHF_TOKENhuggingface
FireworksFIREWORKS_API_KEYfireworks
Together AITOGETHER_API_KEYtogether
Kimi For CodingKIMI_API_KEYkimi-coding
MiniMaxMINIMAX_API_KEYminimax
MiniMax (China)MINIMAX_CN_API_KEYminimax-cn
Xiaomi MiMoXIAOMI_API_KEYxiaomi
Xiaomi MiMo Token 计划 (China)XIAOMI_TOKEN_PLAN_CN_API_KEYxiaomi-token-plan-cn
Xiaomi MiMo Token 计划 (Amsterdam)XIAOMI_TOKEN_PLAN_AMS_API_KEYxiaomi-token-plan-ams
Xiaomi MiMo Token 计划 (Singapore)XIAOMI_TOKEN_PLAN_SGP_API_KEYxiaomi-token-plan-sgp

环境变量和 auth.json 键的参考:const envMap 在 packages/ai/src/env-api-keys.ts。

Auth 文件 ​

将凭据存储在 ~/.pi/agent/auth.json 中:

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 ​

bash
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-gpt4o

Amazon Bedrock ​

bash
# 选项 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)。

bash
pi --provider amazon-bedrock --model us.anthropic.claude-sonnet-4-20250514-v1:0

对于 ID 包含可识别模型名称的 Claude 模型(基础模型和系统定义推理配置文件),提示缓存自动启用。对于应用程序推理配置文件(其 ARN 不包含模型名称),设置 AWS_BEDROCK_FORCE_CACHE=1 以启用缓存点:

bash
export AWS_BEDROCK_FORCE_CACHE=1
pi --provider amazon-bedrock --model arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123

如果你连接到 Bedrock API 代理,可以使用以下环境变量:

bash
# 设置 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=1

Cloudflare AI Gateway ​

CLOUDFLARE_API_KEY 可通过 /login 设置。账户 ID 和网关 slug 必须作为环境变量设置。

bash
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 tokenCloudflare 原生
统一计费仅 Cloudflare tokenCloudflare 处理上游认证并扣除信用
存储 BYOK仅 Cloudflare tokenCloudflare 注入存储在 AI Gateway 仪表板中的提供商密钥
内联 BYOKCloudflare token 加上上游 Authorization 头请求提供上游提供商密钥

对于正常 pi 使用,首选统一计费或存储 BYOK。内联 BYOK 需要为 Cloudflare AI Gateway 提供商配置额外的上游 Authorization 头,例如通过 models.json 提供商/模型覆盖。

Cloudflare Workers AI ​

CLOUDFLARE_API_KEY 可通过 /login 设置。CLOUDFLARE_ACCOUNT_ID 必须作为环境变量设置。

bash
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:

bash
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。

解析顺序 ​

解析提供商凭据时:

  1. CLI --api-key 标志
  2. auth.json 条目(API 密钥或 OAuth token)
  3. 环境变量
  4. models.json 中的自定义提供商密钥

Pi 编码助手中文文档