Configuration, personnalisation, paramètres de plateforme et références API pour Pi.

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 Copilot
  • xAI (Grok/X subscription)
  • OpenRouter (OAuth-minted API key billed from OpenRouter credits)
  • Radius

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.

OpenAI Codex

  • Nécessite un abonnement ChatGPT Plus ou Pro
  • Officiellement approuvé par OpenAI: Codex for OSS

Claude Pro/Max

L’authentification par abonnement Anthropic est active pour les comptes Claude Pro/Max. L’utilisation via des outils tiers est déduite de extra usage et facturée par token, pas sur les limites du plan Claude.

GitHub Copilot

  • 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 (Grok/X subscription)

  • Exécutez /login xai, puis sélectionnez Utiliser un abonnement
  • XAI_API_KEY reste disponible via Utilisez un API key

OpenRouter

  • 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_KEY reste disponible via Utilisez un API key

Radius

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
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
Baseten BASETEN_API_KEY baseten
Kimi For Coding KIMI_API_KEY kimi-coding
MiniMax MINIMAX_API_KEY minimax
MiniMax (China) MINIMAX_CN_API_KEY minimax-cn
Qwen Token Plan (existing catalog) QWEN_TOKEN_PLAN_API_KEY qwen-token-plan
Qwen Token Plan (Individual) QWEN_TOKEN_PLAN_API_KEY qwen-token-plan-individual
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

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.

Les identifiants de clé API peuvent aussi inclure des valeurs d'environnement propres au fournisseur. Ces valeurs sont utilisées avant les variables d'environnement du processus lors de la résolution de la clé d'identifiant, des en-têtes fournisseur/modèle et de la configuration du fournisseur, comme les ID de compte Cloudflare, les paramètres Azure OpenAI, le projet/l'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_BAR est la variable FOO_BAR; utilisez ${FOO}_BAR lorsque BAR est un texte littéral. Les variables d'environnement manquantes rendent la valeur non résolue.
  • Échappements : "$" émet un "
    quot;
    littéral ; "$!" émet un "!" littéral sans déclencher l’exécution de 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_KEY sont des littéraux; utilisez $MY_API_KEY pour 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.

Fournisseurs cloud

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

Amazon Bedrock

Utilisez /login amazon-bedrock pour stocker une clé API Bedrock, ou configurez l'une des sources d'identifiants AWS disponibles dans l'environnement 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-2

Prend é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:0

La 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/abc123

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

Cloudflare AI Gateway

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.

Cloudflare Workers AI

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-central1

Ou 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.

Fournisseurs personnalisés

Via models.json : Ajoutez Ollama, LM Studio, vLLM ou tout fournisseur qui prend en charge une API compatible (OpenAI Completions, OpenAI Responses, Anthropic Messages, Google Generative AI). 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.

Ordre de résolution

Lors de la résolution des informations d'identification d'un fournisseur:

  1. CLI --api-key drapeau
  2. Entrée auth.json (jeton API key ou OAuth)
  3. Variable d'environnement
  4. Clés de fournisseur personnalisées à partir de models.json