Providers
Pi prend en charge les fournisseurs par abonnement via les fournisseurs OAuth et API key via des variables d'environnement ou un fichier d'authentification. Les catalogues intégrés sont livrés avec pi; les fournisseurs configurés peuvent actualiser les catalogues les plus récents et les mettre en cache dans ~/.pi/agent/models-store.json pour une utilisation hors ligne.
Table des matières
Abonnements
Utilisez /login en mode interactif, puis sélectionnez un fournisseur:
- ChatGPT Plus/Pro (Codex)
- Claude Pro/Max
- GitHub Copilote
- xAI (abonnement Grok/X)
- OpenRouter (OAuth-minted API key facturé à partir des crédits OpenRouter)
- Rayon
Utilisez /logout pour effacer les informations d'identification. Les jetons sont stockés dans ~/.pi/agent/auth.json et s'actualisent automatiquement une fois expirés. OpenRouter crée à la place un API key contrôlé par l'utilisateur qui n'expire pas automatiquement.
Codex OpenAI
- Nécessite un abonnement ChatGPT Plus ou Pro
- Officiellement approuvé par OpenAI: Codex for OSS
Claude Pro/Max
L'authentification d'abonnement Anthropic est active pour les comptes Claude Pro/Max. L'utilisation du harnais tiers provient de extra usage et est facturée par jeton, et non par rapport aux limites du plan Claude.
GitHub Copilote
- Appuyez sur Entrée pour github.com ou entrez votre domaine Enterprise Server GitHub
- Si vous obtenez « modèle non pris en charge », activez-le dans VS Code: Copilot Chat → sélecteur de modèle → sélectionnez le modèle → « Activer »
xAI (abonnement Grok/X)
- Exécutez
/login xai, puis sélectionnez Utiliser un abonnement XAI_API_KEYreste disponible via Utilisez un API key
OuvrirRouter
- Exécutez
/login openrouter, puis sélectionnez Connectez-vous avec OpenRouter pour ouvrir le flux d'autorisation OpenRouter PKCE. - L'autorisation crée un OpenRouter contrôlé par l'utilisateur API key facturé à partir de vos crédits OpenRouter
- Sur les machines distantes/sans tête (par exemple au-dessus de SSH), le navigateur ne peut pas atteindre le rappel de bouclage; collez plutôt l'URL de redirection finale (ou le code d'autorisation) dans l'invite de connexion
OPENROUTER_API_KEYreste disponible via Utilisez un API key
Rayon
Radius est une passerelle pi-messages dynamique. /login radius stocke OAuth jetons dans auth.json; le catalogue de la passerelle est actualisé indépendamment et mis en cache dans models-store.json. Les passerelles Custom Radius peuvent être déclarées en models.json avec "oauth": "radius" et une passerelle baseUrl.
API Touches
Variables d'environnement ou fichier d'authentification
Utilisez /login en mode interactif et sélectionnez un fournisseur pour stocker un API key dans auth.json, ou définissez les informations d'identification via une variable d'environnement:
export ANTHROPIC_API_KEY=sk-ant-...
pi| Fournisseur | Variable d'environnement | Touche auth.json |
|---|---|---|
| Anthropique | ANTHROPIC_API_KEY |
anthropic |
| Fourmi Ling | ANT_LING_API_KEY |
ant-ling |
| Réponses Azure OpenAI | AZURE_OPENAI_API_KEY |
azure-openai-responses |
| OpenAI | OPENAI_API_KEY |
openai |
| Recherche profonde | DEEPSEEK_API_KEY |
deepseek |
| NIM NVIDIA | NVIDIA_API_KEY |
nvidia |
| Google Gémeaux | GEMINI_API_KEY |
google |
| Socle amazonien | AWS_BEARER_TOKEN_BEDROCK |
amazon-bedrock |
| Mistral | MISTRAL_API_KEY |
mistral |
| Groq | GROQ_API_KEY |
groq |
| Cérébraux | CEREBRAS_API_KEY |
cerebras |
| Passerelle IA Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID) |
cloudflare-ai-gateway |
| IA des travailleurs Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID) |
cloudflare-workers-ai |
| xAI | XAI_API_KEY |
xai |
| OuvrirRouter | OPENROUTER_API_KEY |
openrouter |
| Passerelle IA Vercel | AI_GATEWAY_API_KEY |
vercel-ai-gateway |
| Plan de codage ZAI (mondial) | ZAI_API_KEY |
zai |
| Plan de codage ZAI (Chine) | ZAI_CODING_CN_API_KEY |
zai-coding-cn |
| OpenCode Zen | OPENCODE_API_KEY |
opencode |
| OpenCode Aller | OPENCODE_API_KEY |
opencode-go |
| Rayon | RADIUS_API_KEY |
radius |
| Hugging Face | HF_TOKEN |
huggingface |
| Feux d'artifice | FIREWORKS_API_KEY |
fireworks |
| Ensemble IA | TOGETHER_API_KEY |
together |
| Baseten | BASETEN_API_KEY |
baseten |
| Kimi pour le codage | KIMI_API_KEY |
kimi-coding |
| MiniMax | MINIMAX_API_KEY |
minimax |
| MiniMax (Chine) | MINIMAX_CN_API_KEY |
minimax-cn |
| Plan de jetons Qwen (catalogue existant) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan |
| Plan de jetons Qwen (individuel) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan-individual |
| Plan de jetons Qwen (Chine) | QWEN_TOKEN_PLAN_CN_API_KEY |
qwen-token-plan-cn |
| Xiaomi MiMo | XIAOMI_API_KEY |
xiaomi |
| Plan de jetons Xiaomi MiMo (Chine) | XIAOMI_TOKEN_PLAN_CN_API_KEY |
xiaomi-token-plan-cn |
| Plan de jetons Xiaomi MiMo (Amsterdam) | XIAOMI_TOKEN_PLAN_AMS_API_KEY |
xiaomi-token-plan-ams |
| Plan de jetons Xiaomi MiMo (Singapour) | XIAOMI_TOKEN_PLAN_SGP_API_KEY |
xiaomi-token-plan-sgp |
Référence pour les variables d'environnement et les clés auth.json: const envMap dans packages/ai/src/env-api-keys.ts.
Fichier d'authentification
Stockez les informations d'identification dans ~/.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 utilise le même point de terminaison international et QWEN_TOKEN_PLAN_API_KEY que
qwen-token-plan, mais limite le sélecteur aux modèles documentés pour les abonnements individuels. L'existant
Le fournisseur conserve son catalogue plus large pour des raisons de compatibilité ascendante. Lorsque vous utilisez auth.json, stockez le
informations d'identification auprès du fournisseur que vous sélectionnez; une variable d'environnement est partagée par les deux fournisseurs internationaux.
Le fichier est créé avec les autorisations 0600 (lecture/écriture utilisateur uniquement). Les informations d'identification du fichier d'authentification ont la priorité sur les variables d'environnement.
API key les informations d'identification peuvent également inclure des valeurs d'environnement définies par le fournisseur. Ces valeurs sont utilisées avant les variables d'environnement de processus lors de la résolution de la clé d'identification, des en-têtes de fournisseur/modèle et de la configuration du fournisseur, telles que les ID de compte Cloudflare, les paramètres Azure OpenAI, le projet/emplacement Vertex, les paramètres Bedrock, PI_CACHE_RETENTION et 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"
}
}
}Utilisez-le lorsque pi doit utiliser des paramètres de fournisseur différents de ceux de l'environnement shell du projet.
Résolution clé
Le champ key prend en charge l'exécution de commandes, l'interpolation d'environnement et les littéraux:
- Commande Shell:
"!command"au début exécute la valeur entière en tant que commande et utilise stdout (mis en cache pour la durée de vie du processus){ "type": "api_key", "key": "!security find-generic-password -ws 'anthropic'" } { "type": "api_key", "key": "!op read 'op://vault/item/credential'" } - Interpolation d'environnement:
"$ENV_VAR"ou"${ENV_VAR}"utilise la valeur de la variable nommée. L'interpolation fonctionne à l'intérieur de littéraux plus grands.{ "type": "api_key", "key": "$MY_ANTHROPIC_KEY" } { "type": "api_key", "key": "${KEY_PREFIX}_${KEY_SUFFIX}" }$FOO_BARest la variableFOO_BAR; utilisez${FOO}_BARlorsqueBARest un texte littéral. Les variables d'environnement manquantes rendent la valeur non résolue. - Échappe:
"quot;émet un"quot;littéral;"$!"émet un"!"littéral sans déclencher l'exécution de la commande.{ "type": "api_key", "key": "$literal-dollar-prefix" } { "type": "api_key", "key": "$!literal-bang-prefix" } - Valeur littérale: Utilisé directement. Les chaînes majuscules simples telles que
MY_API_KEYsont des littéraux; utilisez$MY_API_KEYpour les variables d'environnement.{ "type": "api_key", "key": "sk-ant-..." } { "type": "api_key", "key": "public" }
Les informations d'identification OAuth sont également stockées ici après /login et gérées automatiquement.
Nuage 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-gpt4oSocle amazonien
Utilisez /login amazon-bedrock pour stocker un Bedrock API key ou configurez l'une des sources d'informations d'identification AWS ambiantes ci-dessous:
# 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-2Prend également en charge les rôles de tâche ECS (AWS_CONTAINER_CREDENTIALS_*) et IRSA (AWS_WEB_IDENTITY_TOKEN_FILE).
pi --provider amazon-bedrock --model us.anthropic.claude-sonnet-4-20250514-v1:0La mise en cache des invites est activée automatiquement pour les modèles Claude dont l'ID contient un nom de modèle reconnaissable (modèles de base et profils d'inférence définis par le système). Pour les profils d'inférence d'application (dont les ARN ne contiennent pas le nom du modèle), définissez AWS_BEDROCK_FORCE_CACHE=1 pour activer les points de cache:
export AWS_BEDROCK_FORCE_CACHE=1
pi --provider amazon-bedrock --model arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123Si vous vous connectez à un proxy Bedrock API, les variables d'environnement suivantes peuvent être utilisées:
# 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=1Passerelle IA Cloudflare
CLOUDFLARE_API_KEY peut être réglé via /login. L'ID de compte et le slug de passerelle peuvent être définis en tant que variables d'environnement ou dans l'objet env des informations d'identification API key dans 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"Routes vers OpenAI, Anthropic et Workers AI via Cloudflare AI Gateway. Workers AI utilise les identifiants de modèle unifiés API (/compat) et préfixés (workers-ai/@cf/...). OpenAI utilise la route passthrough OpenAI (/openai) avec des ID de modèle OpenAI natifs tels que gpt-5.1. Anthropic utilise la route passthrough Anthropic (/anthropic) avec des ID de modèle Anthropic natifs tels que claude-sonnet-4-5.
L'authentification AI Gateway utilise CLOUDFLARE_API_KEY comme cf-aig-authorization. L'authentification en amont peut être l'une des suivantes:
| Mode | Demander l'authentification | Authentification en amont |
|---|---|---|
| IA des travailleurs | Jeton Cloudflare uniquement | Natif de Cloudflare |
| Facturation unifiée | Jeton Cloudflare uniquement | Cloudflare gère l'authentification en amont et déduit les crédits |
| BYOK stocké | Jeton Cloudflare uniquement | Cloudflare injecte les clés du fournisseur stockées dans le tableau de bord AI Gateway |
| BYOK en ligne | Jeton Cloudflare plus en-tête Authorization en amont |
La requête fournit la clé du fournisseur en amont |
Pour une utilisation normale de Pi, préférez la facturation unifiée ou le BYOK stocké. Le BYOK en ligne nécessite la configuration d'un en-tête Authorization en amont supplémentaire pour le fournisseur Cloudflare AI Gateway, par exemple via un remplacement de fournisseur/modèle models.json.
IA des travailleurs Cloudflare
CLOUDFLARE_API_KEY peut être réglé via /login. CLOUDFLARE_ACCOUNT_ID peut être défini comme variable d'environnement ou dans l'objet env de l'identifiant API key dans 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 définit automatiquement x-session-affinity pour prefix caching remises.
Google Vertex AI
Utilise les informations d'identification par défaut de l'application:
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT=your-project
export GOOGLE_CLOUD_LOCATION=us-central1Ou définissez GOOGLE_APPLICATION_CREDENTIALS sur un fichier de clé de compte de service.
llama.cpp
Pi prend en charge le serveur de routeur llama.cpp. Configurez-le avec /login llama.cpp, gérez les modèles chargés avec /llama et sélectionnez un modèle chargé avec /model.
Voir llama.cpp pour la configuration du serveur, la disposition du répertoire modèle, les variables d'environnement et l'utilisation des commandes.
Personnalisé Providers
Via models.json: Ajoutez Ollama, LM Studio, vLLM ou tout fournisseur parlant un API pris en charge (achèvements OpenAI, réponses OpenAI, messages anthropiques, IA générative de Google). Voir models.md.
Via des extensions: Pour les fournisseurs qui ont besoin d'implémentations API personnalisées ou de flux OAuth personnalisés, créez une extension. Voir custom-provider.md et examples/extensions/custom-provider-gitlab-duo.
Ordonnance de résolution
Lors de la résolution des informations d'identification d'un fournisseur:
- CLI
--api-keydrapeau - Entrée
auth.json(jeton API key ou OAuth) - Variable d'environnement
- Clés de fournisseur personnalisées à partir de
models.json