AI Agentpi的提供商配置指南

badlogic 发布于 2026-07-28 阅读 29

本文详细介绍了 AI Agent工具 pi 的提供商配置方式,涵盖订阅型(如 ChatGPT Plus、Claude Pro、GitHub Copilot 等)和 API 密钥型(通过环境变量或 auth.json 文件),并深入说明了云服务商(Azure OpenAI、Amazon Bedrock、Cloudflare AI Gateway 等)以及 llama.cpp 和自定义提供商的配置方法,最后列出了凭据的解析优先级。

Pi 通过 OAuth 支持基于订阅的提供商,并通过环境变量或认证文件支持 API 密钥提供商。内置目录随 Pi 一起提供;配置的提供商可以刷新较新的目录,并将其缓存到 ~/.pi/agent/models-store.json 中以便离线使用。

订阅

在交互模式中使用 /login,然后选择一个提供商:

  • ChatGPT Plus/Pro (Codex)
  • Claude Pro/Max
  • GitHub Copilot
  • xAI (Grok/X 订阅)
  • OpenRouter (通过 OAuth 生成的 API 密钥,从 OpenRouter 余额扣费)
  • Radius

使用 /logout 清除凭据。Token 存储在 ~/.pi/agent/auth.json 中,过期时自动刷新。OpenRouter 则生成一个用户控制的 API 密钥,不会自动过期。

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 域名
  • 如果出现"模型不支持",请在 VS Code 中启用:Copilot Chat → 模型选择器 → 选择模型 → "启用"

xAI (Grok/X 订阅)

  • 运行 /login xai,然后选择 使用订阅
  • XAI_API_KEY 仍可通过 使用 API 密钥 使用

OpenRouter

  • 运行 /login openrouter,然后选择 通过 OpenRouter 登录,打开 OpenRouter PKCE 授权流程
  • 授权将创建一个用户控制的 OpenRouter API 密钥,从你的 OpenRouter 余额扣费
  • 在远程/无头机器(例如通过 SSH)上,浏览器无法访问回环回调;请将最终的重定向 URL(或授权码)粘贴到登录提示中
  • OPENROUTER_API_KEY 仍可通过 使用 API 密钥 使用

Radius

Radius 是一个动态的 pi-messages 网关。/login radius 将 OAuth Token 存储在 auth.json 中;网关目录独立刷新并缓存到 models-store.json 中。自定义 Radius 网关可以在 models.json 中声明,使用 "oauth": "radius" 和网关 baseUrl

API 密钥

环境变量或认证文件

在交互模式中使用 /login 并选择一个提供商,将 API 密钥存储到 auth.json 中,或通过环境变量设置凭据:

export ANTHROPIC_API_KEY=sk-ant-...
pi
提供商 环境变量 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 (Global) ZAI_API_KEY zai
ZAI Coding Plan (China) 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 (China) MINIMAX_CN_API_KEY minimax-cn
Qwen Token Plan QWEN_TOKEN_PLAN_API_KEY qwen-token-plan
Qwen Token Plan (China) QWEN_TOKEN_PLAN_CN_API_KEY qwen-token-plan-cn
Xiaomi MiMo XIAOMI_API_KEY xiaomi
Xiaomi MiMo Token Plan (China) XIAOMI_TOKEN_PLAN_CN_API_KEY xiaomi-token-plan-cn
Xiaomi MiMo Token Plan (Amsterdam) XIAOMI_TOKEN_PLAN_AMS_API_KEY xiaomi-token-plan-ams
Xiaomi MiMo Token Plan (Singapore) XIAOMI_TOKEN_PLAN_SGP_API_KEY xiaomi-token-plan-sgp

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

认证文件

将凭据存储到 ~/.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": "..." },
  "qwen-token-plan":  { "type": "api_key", "key": "sk-sp-..." },
  "qwen-token-plan-cn": { "type": "api_key", "key": "sk-sp-..." },
  "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 密钥凭据还可以包含提供商范围的环境值。在解析凭据键、提供商/模型标头以及提供商配置(如 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 字段支持命令执行、环境变量插值和字面量:

  • Shell 命令:"!command" 开头的值将整体作为命令执行,并使用 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 后也会存储在这里,并由系统自动管理。

云提供商

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 密钥,或配置以下 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

对于 Claude 模型,如果其 ID 包含可识别的模型名称(基础模型和系统定义的推理配置文件),提示缓存会自动启用。对于应用推理配置文件(其 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 密钥凭据的 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 使用统一 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 可设置为环境变量,或在 auth.json 的 API 密钥凭据的 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

使用应用程序默认凭据:

gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT=your-project
export GOOGLE_CLOUD_LOCATION=us-central1

或者将 GOOGLE_APPLICATION_CREDENTIALS 设置为服务账户密钥文件。

llama.cpp

Pi 支持 llama.cpp 路由器服务器。使用 /login llama.cpp 进行配置,使用 /llama 管理已加载的模型,使用 /model 选择已加载的模型。

有关服务器设置、模型目录布局、环境变量和命令用法的信息,请参阅 llama.cpp

自定义提供商

通过 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

解析顺序

解析提供商凭据时:

  1. CLI --api-key 标志
  2. auth.json 条目(API 密钥或 OAuth Token)
  3. 环境变量
  4. 来自 models.json 的自定义提供商密钥
  • 原文链接: github.com/badlogic/pi-m...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论