llm-proxy Rust · AGPL · https://albert.api.etalab.gouv.fr/v1 • disponible

Tous vos outils de code, branchés sur Albert

llm-proxy est une passerelle HTTP locale entre un client CLI et l'API Albert d'Etalab. Elle répare les appels d'outils, adapte les requêtes, gère les quotas et traduit le format Anthropic vers OpenAI.

INFO proxy::http: requête reçue +0 ms

Votre agent est câblé ?

Le proxy écoute sur 127.0.0.1:8080 et lui expose les routes nécessaires vers Albert API.

INFO proxy::traduction: Anthropic vers OpenAI, 1 tour +2 ms

La requête doit changer de langue ?

Anthropic ou OpenAI, le proxy les traduit automatiquement. La réponse fera le chemin inverse.

WARN proxy::retry: 429 TPM, nouvelle tentative dans 6 s +0.3 s

Le quota est atteint ?

Retry-After <= 120 s      attendre, puis réessayer
Retry-After > 120 s       rendre la main
per minute, per second    6 s, 12 s, 24 s, 48 s
per hour, per day         rendre la main, délai de garde

Le proxy prend en charge la résilience aux quotas avec un backoff exponentiel et les délais de garde par modèle pour les dépassements de tokens par jour.

WARN proxy::pipeline: <tool_call> XML détecté dans content +7.5 s

La réponse arrive en balises ?

"content": "<tool_call><function=write_file>..."
"tool_calls": []          // vide
"finish_reason": "stop"   // devrait être tool_calls

Le proxy répare les tool_calls invalides.

INFO proxy::pipeline: 1 appel d'outil reconstruit +7.5 s

Et le JSON ?

Toutes les balises sont analysées, un identifiant est généré. La structure JSON est réparée et reconstruite.

"content": null
"tool_calls": [{ "id": "call_a3f9",
  "function": { "name": "write_file", ... } }]
"finish_reason": "tool_calls"
INFO proxy::http: 200 en 7.62 s, dont 6 s d'attente quota +7.62 s

Dans l'autre sens

Albert est plus strict que les spécifications, le proxy adapte chaque requête avant de la transmettre.

  proxy::routes: ce que le proxy expose

Sept routes

servi en permanence
/v1/chat/completionsclients compatibles OpenAI
/v1/messagesClaude Code, format Anthropic
/v1/messages/count_tokensestimation du nombre de jetons
/v1/modelsdécouverte des modèles Albert
servi si STATUS_ENABLED=true, interface locale seulement
/page d'état, rafraîchie toutes les 5 s
/statusle même état, en JSON
/chatbac à sable, pour vérifier l'installation

Deux minutes pour l'essayer

Chaque archive contient l'exécutable et la documentation de la version. Il reste à poser votre clé Albert dans un fichier .env.

$ ./llm-proxy
INFO  proxy::http: en écoute sur 127.0.0.1:8080
INFO  proxy::albert: 9 modèles découverts

Écrit par Jérôme Bousquié (Université Toulouse Capitole) et Olivier Booklage (académie de Bordeaux). Code sous AGPL, sur Codeberg.