Providers
Pi oferece suporte a provedores baseados em assinatura por meio de provedores OAuth e API key por meio de variáveis de ambiente ou arquivo de autenticação. Catálogos integrados são fornecidos com pi; provedores configurados podem atualizar catálogos mais recentes e armazená-los em cache em ~/.pi/agent/models-store.json para uso offline.
Índice
Assinaturas
Use /login no modo interativo e selecione um provedor:
- ChatGPT Plus/Pro (Codex)
- Cláudio Pro/Max
- GitHub Copiloto
- xAI (assinatura Grok/X)
- OpenRouter (OAuth cunhado API key cobrado de créditos OpenRouter)
- Raio
Use /logout para limpar credenciais. Os tokens são armazenados em ~/.pi/agent/auth.json e atualizados automaticamente quando expiram. Em vez disso, o OpenRouter cria um API key controlado pelo usuário que não expira automaticamente.
Códice OpenAI
- Requer assinatura ChatGPT Plus ou Pro
- Aprovado oficialmente pela OpenAI: Codex for OSS
Cláudio Pro/Max
A autenticação de assinatura Antrópica está ativa para contas Claude Pro/Max. O uso de chicotes de terceiros depende de extra usage e é cobrado por token, não de acordo com os limites do plano Claude.
GitHub Copiloto
- Pressione Enter para github.com ou insira seu domínio GitHub Enterprise Server
- Se você obtiver "modelo não suportado", habilite-o no VS Code: Copilot Chat → seletor de modelo → selecione modelo → "Ativar"
xAI (assinatura Grok/X)
- Execute
/login xaie selecione Usar uma assinatura XAI_API_KEYpermanece disponível através de Use um API key
OpenRouter
- Execute
/login openroutere selecione Entrar com OpenRouter para abrir o fluxo de autorização OpenRouter PKCE - A autorização cria um OpenRouter API key controlado pelo usuário, cobrado de seus créditos OpenRouter
- Em máquinas remotas/sem cabeça (por exemplo, acima de SSH) o navegador não pode alcançar o retorno de chamada de loopback; cole o URL de redirecionamento final (ou o código de autorização) no prompt de login
OPENROUTER_API_KEYpermanece disponível através de Use um API key
Raio
Radius é um gateway pi-messages dinâmico. /login radius armazena OAuth tokens em auth.json; o catálogo do gateway é atualizado de forma independente e armazenado em cache em models-store.json. Gateways Radius personalizados podem ser declarados em models.json com "oauth": "radius" e um gateway baseUrl.
API Chaves
Variáveis de ambiente ou arquivo de autenticação
Use /login no modo interativo e selecione um provedor para armazenar um API key em auth.json ou defina credenciais por meio de variável de ambiente:
export ANTHROPIC_API_KEY=sk-ant-...
pi| Provedor | Variável de ambiente | tecla auth.json |
|---|---|---|
| Antrópico | ANTHROPIC_API_KEY |
anthropic |
| Formiga Ling | ANT_LING_API_KEY |
ant-ling |
| Respostas OpenAI do Azure | AZURE_OPENAI_API_KEY |
azure-openai-responses |
| OpenAI | OPENAI_API_KEY |
openai |
| DeepSeek | DEEPSEEK_API_KEY |
deepseek |
| NVIDIA NIM | NVIDIA_API_KEY |
nvidia |
| Google Gêmeos | GEMINI_API_KEY |
google |
| Base Amazônica | AWS_BEARER_TOKEN_BEDROCK |
amazon-bedrock |
| Mistral | MISTRAL_API_KEY |
mistral |
| Groq | GROQ_API_KEY |
groq |
| Cérebros | CEREBRAS_API_KEY |
cerebras |
| Gateway de IA da Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID) |
cloudflare-ai-gateway |
| IA de trabalhadores da Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID) |
cloudflare-workers-ai |
| xAI | XAI_API_KEY |
xai |
| OpenRouter | OPENROUTER_API_KEY |
openrouter |
| Gateway Vercel AI | AI_GATEWAY_API_KEY |
vercel-ai-gateway |
| Plano de Codificação ZAI (Global) | ZAI_API_KEY |
zai |
| Plano de Codificação ZAI (China) | ZAI_CODING_CN_API_KEY |
zai-coding-cn |
| OpenCodeZen | OPENCODE_API_KEY |
opencode |
| OpenCode Go | OPENCODE_API_KEY |
opencode-go |
| Raio | RADIUS_API_KEY |
radius |
| Hugging Face | HF_TOKEN |
huggingface |
| Fogos de artifício | FIREWORKS_API_KEY |
fireworks |
| Juntos IA | TOGETHER_API_KEY |
together |
| Baseten | BASETEN_API_KEY |
baseten |
| Kimi para codificação | KIMI_API_KEY |
kimi-coding |
| MiniMax | MINIMAX_API_KEY |
minimax |
| MiniMax (China) | MINIMAX_CN_API_KEY |
minimax-cn |
| Plano Qwen Token (catálogo existente) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan |
| Plano de token Qwen (individual) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan-individual |
| Plano de Token Qwen (China) | QWEN_TOKEN_PLAN_CN_API_KEY |
qwen-token-plan-cn |
| Xiaomi MiMo | XIAOMI_API_KEY |
xiaomi |
| Plano de token Xiaomi MiMo (China) | XIAOMI_TOKEN_PLAN_CN_API_KEY |
xiaomi-token-plan-cn |
| Plano de token Xiaomi MiMo (Amsterdã) | XIAOMI_TOKEN_PLAN_AMS_API_KEY |
xiaomi-token-plan-ams |
| Plano de token Xiaomi MiMo (Singapura) | XIAOMI_TOKEN_PLAN_SGP_API_KEY |
xiaomi-token-plan-sgp |
Referência para variáveis de ambiente e chaves auth.json: const envMap em packages/ai/src/env-api-keys.ts.
Arquivo de autenticação
Armazene credenciais em ~/.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-individual": { "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": "..." }
}qwen-token-plan-individual usa o mesmo endpoint internacional e QWEN_TOKEN_PLAN_API_KEY que
qwen-token-plan, mas limita o seletor aos modelos documentados para assinaturas individuais. O existente
provedor mantém seu catálogo mais amplo para compatibilidade com versões anteriores. Ao usar auth.json, armazene o
credencial no provedor que você selecionar; uma variável de ambiente é compartilhada por ambos os provedores internacionais.
O arquivo é criado com permissões 0600 (somente leitura/gravação do usuário). As credenciais do arquivo de autenticação têm prioridade sobre as variáveis de ambiente.
API key as credenciais também podem incluir valores de ambiente no escopo do provedor. Esses valores são usados antes das variáveis de ambiente do processo ao resolver a chave de credencial, os cabeçalhos do provedor/modelo e a configuração do provedor, como IDs de conta Cloudflare, configurações do Azure OpenAI, projeto/localização do Vertex, configurações do Bedrock, PI_CACHE_RETENTION e 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"
}
}
}Use isto quando pi precisar usar configurações de provedor diferentes das do ambiente shell do projeto.
Resolução chave
O campo key suporta execução de comandos, interpolação de ambiente e literais:
- Comando Shell:
"!command"no início executa todo o valor como um comando e usa stdout (armazenado em cache durante a vida útil do processo){ "type": "api_key", "key": "!security find-generic-password -ws 'anthropic'" } { "type": "api_key", "key": "!op read 'op://vault/item/credential'" } - Interpolação de ambiente:
"$ENV_VAR"ou"${ENV_VAR}"usa o valor da variável nomeada. A interpolação funciona dentro de literais maiores.{ "type": "api_key", "key": "$MY_ANTHROPIC_KEY" } { "type": "api_key", "key": "${KEY_PREFIX}_${KEY_SUFFIX}" }$FOO_BARé a variávelFOO_BAR; use${FOO}_BARquandoBARfor texto literal. Variáveis de ambiente ausentes tornam o valor não resolvido. - Escapes:
"quot;emite um literal"quot;;"$!"emite um literal"!"sem acionar a execução do comando.{ "type": "api_key", "key": "$literal-dollar-prefix" } { "type": "api_key", "key": "$!literal-bang-prefix" } - Valor literal: Usado diretamente. Strings simples em maiúsculas como
MY_API_KEYsão literais; use$MY_API_KEYpara variáveis de ambiente.{ "type": "api_key", "key": "sk-ant-..." } { "type": "api_key", "key": "public" }
As credenciais OAuth também são armazenadas aqui após /login e gerenciadas automaticamente.
Nuvem Providers
Azure OpenAI
export AZURE_OPENAI_API_KEY=...
export AZURE_OPENAI_BASE_URL=https://your-resource.ai.azure.com
# also supported: https://your-resource.cognitiveservices.azure.com
# also supported: https://your-resource.openai.azure.com
# root endpoints are auto-normalized to /openai/v1
# or use resource name instead of base URL
export AZURE_OPENAI_RESOURCE_NAME=your-resource
# Optional
export AZURE_OPENAI_API_VERSION=2024-02-01
export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-4=my-gpt4,gpt-4o=my-gpt4oBase Amazônica
Use /login amazon-bedrock para armazenar um Bedrock API key ou configure uma das fontes de credenciais ambientais da AWS abaixo:
# Option 1: AWS Profile
export AWS_PROFILE=your-profile
# Option 2: IAM Keys
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
# Option 3: Bearer Token
export AWS_BEARER_TOKEN_BEDROCK=...
# Optional region (defaults to us-east-1)
export AWS_REGION=us-west-2Também suporta funções de tarefa ECS (AWS_CONTAINER_CREDENTIALS_*) e IRSA (AWS_WEB_IDENTITY_TOKEN_FILE).
pi --provider amazon-bedrock --model us.anthropic.claude-sonnet-4-20250514-v1:0O cache de prompt é habilitado automaticamente para modelos Claude cujo ID contém um nome de modelo reconhecível (modelos básicos e perfis de inferência definidos pelo sistema). Para perfis de inferência de aplicativos (cujos ARNs não contêm o nome do modelo), defina AWS_BEDROCK_FORCE_CACHE=1 para ativar pontos de cache:
export AWS_BEDROCK_FORCE_CACHE=1
pi --provider amazon-bedrock --model arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123Se você estiver se conectando a um proxy Bedrock API, as seguintes variáveis de ambiente poderão ser usadas:
# Set the URL for the Bedrock proxy (standard AWS SDK env var)
export AWS_ENDPOINT_URL_BEDROCK_RUNTIME=https://my.corp.proxy/bedrock
# Set if your proxy does not require authentication
export AWS_BEDROCK_SKIP_AUTH=1
# Set if your proxy only supports HTTP/1.1
export AWS_BEDROCK_FORCE_HTTP1=1Gateway de IA da Cloudflare
CLOUDFLARE_API_KEY pode ser definido via /login. O ID da conta e o slug do gateway podem ser definidos como variáveis de ambiente ou no objeto env da credencial API key em auth.json.
export CLOUDFLARE_API_KEY=... # or use /login
export CLOUDFLARE_ACCOUNT_ID=...
export CLOUDFLARE_GATEWAY_ID=... # create at dash.cloudflare.com → AI → AI Gateway
pi --provider cloudflare-ai-gateway --model "claude-sonnet-4-5"Rotas para OpenAI, Anthropic e Workers AI por meio do Cloudflare AI Gateway. Workers AI usa o Unified API (/compat) e IDs de modelo prefixados (workers-ai/@cf/...). OpenAI usa a rota de passagem OpenAI (/openai) com IDs de modelo OpenAI nativos, como gpt-5.1. Anthropic usa a rota de passagem Anthropic (/anthropic) com IDs de modelo antrópicos nativos, como claude-sonnet-4-5.
A autenticação do AI Gateway usa CLOUDFLARE_API_KEY como cf-aig-authorization. A autenticação upstream pode ser uma das seguintes:
| Modo | Solicitar autorização | Autenticação upstream |
|---|---|---|
| IA dos trabalhadores | Somente token Cloudflare | Nativo da Cloudflare |
| Faturamento unificado | Somente token Cloudflare | Cloudflare lida com autenticação upstream e deduz créditos |
| BYOK armazenado | Somente token Cloudflare | Cloudflare injeta chaves de provedor armazenadas no painel do AI Gateway |
| BYOK embutido | Token Cloudflare mais cabeçalho upstream Authorization |
A solicitação fornece a chave do provedor upstream |
Para uso normal do pi, prefira faturamento unificado ou BYOK armazenado. O BYOK inline requer a configuração de um cabeçalho upstream Authorization adicional para o provedor Cloudflare AI Gateway, por exemplo, por meio de uma substituição de provedor/modelo models.json.
IA de trabalhadores da Cloudflare
CLOUDFLARE_API_KEY pode ser definido via /login. CLOUDFLARE_ACCOUNT_ID pode ser definido como uma variável de ambiente ou no objeto env da credencial API key em auth.json.
export CLOUDFLARE_API_KEY=... # or use /login
export CLOUDFLARE_ACCOUNT_ID=...
pi --provider cloudflare-workers-ai --model "@cf/moonshotai/kimi-k2.6"Pi define automaticamente x-session-affinity para descontos de prefix caching.
Google Vertex AI
Usa credenciais padrão do aplicativo:
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT=your-project
export GOOGLE_CLOUD_LOCATION=us-central1Ou defina GOOGLE_APPLICATION_CREDENTIALS para um arquivo de chave de conta de serviço.
llama.cpp
Pi suporta o servidor roteador llama.cpp. Configure-o com /login llama.cpp, gerencie modelos carregados com /llama e selecione um modelo carregado com /model.
Consulte llama.cpp para configuração do servidor, layout do diretório do modelo, variáveis de ambiente e uso de comandos.
Personalizado Providers
Via models.json: Adicione Ollama, LM Studio, vLLM ou qualquer provedor que fale um API compatível (conclusões OpenAI, respostas OpenAI, mensagens antrópicas, IA generativa do Google). Consulte models.md.
Através de extensões: Para provedores que precisam de implementações API personalizadas ou fluxos OAuth, crie uma extensão. Consulte custom-provider.md e examples/extensions/custom-provider-gitlab-duo.
Ordem de Resolução
Ao resolver credenciais para um provedor:
- CLI
--api-keybandeira - Entrada
auth.json(token API key ou OAuth) - Variável de ambiente
- Chaves de provedor personalizadas de
models.json