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 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_KEY reste 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_KEY reste 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_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.
  • É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_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.

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

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

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

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:

  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