跳至内容

提供商

创建于 2025-07-16·更新于 2026-07-16

Pi 支持基于 OAuth 订阅的提供商和通过环境变量或 auth 文件配置的 API Key 提供商。Pi 内置了提供商目录;配置的提供商可以刷新更新的目录并将其缓存在 ~/.pi/agent/models-store.json 中,以供离线使用。

目录 Table of Contents

订阅 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 Variableauth.json 键名
AnthropicANTHROPIC_API_KEYanthropic
Ant LingANT_LING_API_KEYant-ling
Azure OpenAI ResponsesAZURE_OPENAI_API_KEYazure-openai-responses
OpenAIOPENAI_API_KEYopenai
DeepSeekDEEPSEEK_API_KEYdeepseek
NVIDIA NIMNVIDIA_API_KEYnvidia
Google GeminiGEMINI_API_KEYgoogle
Amazon BedrockAWS_BEARER_TOKEN_BEDROCKamazon-bedrock
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
ZAI Coding Plan(全球)ZAI_API_KEYzai
ZAI Coding Plan(中国)ZAI_CODING_CN_API_KEYzai-coding-cn
OpenCode ZenOPENCODE_API_KEYopencode
OpenCode GoOPENCODE_API_KEYopencode-go
RadiusRADIUS_API_KEYradius
Hugging FaceHF_TOKENhuggingface
FireworksFIREWORKS_API_KEYfireworks
Together AITOGETHER_API_KEYtogether
Kimi For CodingKIMI_API_KEYkimi-coding
MiniMaxMINIMAX_API_KEYminimax
MiniMax(中国)MINIMAX_CN_API_KEYminimax-cn
小米 MiMoXIAOMI_API_KEYxiaomi
小米 MiMo Token 套餐(中国)XIAOMI_TOKEN_PLAN_CN_API_KEYxiaomi-token-plan-cn
小米 MiMo Token 套餐(阿姆斯特丹)XIAOMI_TOKEN_PLAN_AMS_API_KEYxiaomi-token-plan-ams
小米 MiMo Token 套餐(新加坡)XIAOMI_TOKEN_PLAN_SGP_API_KEYxiaomi-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_RETENTIONHTTP_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-gpt4o

Amazon 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=1

Cloudflare 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 控制面板中的提供商密钥
内联 BYOKCloudflare 令牌加上游 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.mdexamples/extensions/custom-provider-gitlab-duo

解析顺序 Resolution Order

解析提供商凭据时的优先级顺序:

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