Toutes les bibliothèques OpenAI officielles fonctionnent ; seul base_url change. Les exemples utilisent gpt-5.6-sol ; pour le forfait Astra, utilisez gpt-astra.
Chat Completions
base_url doit inclure /v1 et ne pas finir par /. La bibliothèque ajoute /chat/completions elle-même.
Les réponses suivent exactement le schéma OpenAI : id vaut chatcmpl-..., usage contient prompt_tokens, completion_tokens et completion_tokens_details.reasoning_tokens. Le quota est facturé exactement usage.total_tokens.
Responses API
Codex et les SDK récents utilisent ce protocole. Le réglage de raisonnement se trouve dans reasoning.effort.
Effort de raisonnement
Avec Chat Completions, utilisez reasoning_effort (low, medium, high). Non défini, la passerelle utilise high. Pour les tâches simples, mettez low pour économiser des tokens :
reasoning_effort ne vaut que pour Chat Completions. Avec la Responses API utilisez reasoning: {"effort": ...} ; envoyer reasoning_effort à /v1/responses est refusé avec « Unsupported parameter ».
Streaming
Sur les questions difficiles, le modèle peut réfléchir un moment avant le premier token. Utilisez stream: true pour que la connexion ne soit pas coupée. stream_options.include_usage fait porter usage par le dernier chunk pour rapprocher vous-même le quota.
Envoyer des images (vision)
Les images vont dans le tableau content, comme URL publique ou en base64 pour les fichiers locaux.
Les images coûtent des tokens selon leur taille. Recadrez la partie utile au lieu d’envoyer une capture 4K entière.
Modèles et quota via l’API
subscription renvoie le total dans hard_limit_usd ; usage renvoie la consommation dans total_usage, en cents (divisez par 100 avant de comparer). La page de vérification le fait pour vous.