Documentation

Configuration de Pi

Pi est un agent de codage en terminal publié sous le nom @earendil-works/pi-coding-agent. Il embarque des transports pour plusieurs dialectes d'API et peut donc utiliser CodeByAI avec le point de terminaison compatible OpenAI ou compatible Anthropic — la seule chose que vous écrivez à la main est un fichier JSON.

1. Installer Pi

macOS ou Linux :

1
curl -fsSL https://pi.dev/install.sh | sh

Avec npm (Node.js 22.19 ou plus récent) :

1
npm install -g --ignore-scripts @earendil-works/pi-coding-agent

Sous Windows, utilisez powershell -c "irm https://pi.dev/install.ps1 | iex".

2. Créer la configuration des modèles

Pi conserve sa configuration dans ~/.pi/agent/ et lit les points de terminaison personnalisés dans models.json :

  • macOS / Linux : ~/.pi/agent/models.json
  • Windows : C:\Users\YourUserName\.pi\agent\models.json

Le dossier peut ne pas encore exister ; créez-le, puis créez models.json :

1
{
2
  "$schema": "https://pi.dev/schemas/models.schema.json",
3
  "providers": {
4
    "codebyai": {
5
      "name": "CodeByAI",
6
      "baseUrl": "https://www.codebyai.net/api/agent",
7
      "api": "openai-completions",
8
      "apiKey": "$CODEBYAI_API_KEY",
9
      "models": [
10
        {
11
          "id": "gpt-5.6-terra",
12
          "name": "GPT-5.6 Terra",
13
          "contextWindow": 200000,
14
          "maxTokens": 32768
15
        }
16
      ]
17
    },
18
    "codebyai-claude": {
19
      "name": "CodeByAI (Claude)",
20
      "baseUrl": "https://www.codebyai.net/api/agent",
21
      "api": "anthropic-messages",
22
      "apiKey": "$CODEBYAI_API_KEY",
23
      "models": [
24
        {
25
          "id": "claude-sonnet-5",
26
          "name": "Claude Sonnet 5",
27
          "contextWindow": 200000,
28
          "maxTokens": 32768
29
        }
30
      ]
31
    }
32
  }
33
}

Ce qui compte ici :

  • api est le protocole de communication. openai-completions appelle /chat/completions et transporte la famille GPT ; anthropic-messages appelle /v1/messages et transporte la famille Claude. Une entrée de fournisseur par protocole est l'arrangement le plus simple.
  • baseUrl s'arrête à /api/agent. N'ajoutez pas /v1 : la passerelle transmet le reste du chemin en amont, donc /api/agent/v1/chat/completions répond 404 page not found.
  • apiKey prend en charge l'interpolation $VARIABLE et ${VARIABLE}, aucun secret n'est donc stocké dans le fichier.
  • Les entrées de models doivent appartenir au protocole de ce fournisseur : la famille GPT (par exemple gpt-5.6-terra) sous openai-completions, la famille Claude sous anthropic-messages. L'endpoint de chat répond 400 pour un modèle qu'il ne sert pas. contextWindow dimensionne le budget de contexte de Pi, tandis que maxTokens devient la limite de sortie de la requête — Pi l'envoie en amont sous max_completion_tokens sur la route OpenAI-compatible et sous max_tokens sur la route Anthropic.

3. Fournir la clé API

1
export CODEBYAI_API_KEY="sk-proj-xxxx"

Ajoutez-la à ~/.zshrc ou ~/.bashrc pour la conserver d'une session à l'autre. Créez la clé elle-même sur la page API Keys. Pi accepte aussi --api-key en ligne de commande pour une exécution unique.

4. Démarrer Pi

1
cd your-project
2
pi --model codebyai/gpt-5.6-terra

Pour utiliser un modèle Claude via la route compatible Anthropic :

1
pi --model codebyai-claude/claude-sonnet-5

Pour vérifier ce que Pi voit avant de démarrer une session :

1
pi --list-models codebyai

5. Dépannage

  • 404 page not found : baseUrl se termine par /v1. Supprimez-le.
  • No models available, ou le fournisseur absent de pi --list-models : CODEBYAI_API_KEY est vide dans le shell qui a lancé Pi, donc Pi ignore l'entrée. Un id inconnu reste listé : un modèle manquant vient presque toujours d'une clé manquante.
  • HTTP 403 avec le message Invalid key! Your api-key is invalid or expired sur le fournisseur openai-completions : la clé a été supprimée, mal saisie ou a expiré. Avec le fournisseur anthropic-messages, la passerelle ne renvoie pas de statut d'erreur mais 200 avec la même phrase en texte brut, si bien que Pi n'affiche que Anthropic stream ended without a stop reason — considérez ce message comme un problème de clé.
  • Solde insuffisant : rechargez sur la page Portefeuille.