Source: https://aiprimetech.io/fr/learn/openai-compatible-claude-api/ [Accueil](/fr/) / [Apprendre](/fr/learn/) / Utiliser Claude avec le SDK OpenAI : point de terminaison compatible avec OpenAI, streaming, outils et limites # Utiliser Claude avec le SDK OpenAI : endpoint compatible OpenAI, streaming, outils et limites Le code écrit pour le SDK OpenAI peut appeler Claude sans réécriture : faites pointer base_url vers le /v1de la passerelle, utilisez une clé de passerelle et un identifiant de modèle Claude. Le point de terminaison accepte les requêtes Chat Completions, diffuse les réponses en streaming dans le même format et prend en charge l’appel de fonctions. Certaines fonctionnalités de Claude n’existent que dans le format natif d’Anthropic ; la dernière section explique quand changer de format. ## Informations sur le point de terminaison | Élément | Valeur | URL de base | https://aiprimetech.io/v1 | Point de terminaison de chat | POST https://aiprimetech.io/v1/chat/completions | Liste des modèles | GET https://aiprimetech.io/v1/models | Authentification | Authorization: Bearer ; x-api-key est également accepté | Modèles | Des identifiants Claude tels que claude-sonnet-5 ; des identifiants GPT avec une clé du groupe Codex ## Python terminalCopier ``` pip install openai ``` app.pyCopier ``` import os from openai import OpenAI client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"]) resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=1024, messages=[ {"role": "system", "content": "You are a concise assistant."}, {"role": "user", "content": "Explain idempotency keys in two sentences."}, ], ) print(resp.choices[0].message.content) print(resp.usage) ``` base_url doit se terminer par /v1 : le SDK y ajoute /chat/completions . Sans /v1 la requête arrive sur le site web et renvoie HTML ; avec /v1 deux fois, elle renvoie 404 page not found. ## Node.js app.mjsCopier ``` import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY }); const resp = await client.chat.completions.create({ model: "claude-sonnet-5", max_tokens: 1024, messages: [{ role: "user", content: "Write a haiku about retries." }], }); console.log(resp.choices[0].message.content); ``` ## Diffusion en continu stream.pyCopier ``` stream = client.chat.completions.create( model="claude-sonnet-5", max_tokens=2048, stream=True, stream_options={"include_usage": True}, messages=[{"role": "user", "content": "Outline a zero-downtime migration."}], ) for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True) if chunk.usage: print("\n", chunk.usage) ``` Utilisez le streaming pour les réponses longues : une requête sans streaming doit se terminer avant l’expiration du délai d’attente de votre client, contrairement à une requête en streaming. include_usage ajoute un dernier fragment contenant le nombre de tokens. Pour en savoir plus sur son importance, consultez [les réponses des LLM en streaming](/fr/blog/streaming-api-guide/). ## Appel de fonctions tools.pyCopier ``` tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Current weather for a city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=512, tools=tools, messages=[{"role": "user", "content": "What is the weather in Paris?"}], ) call = resp.choices[0].message.tool_calls[0] print(call.function.name, call.function.arguments) # get_weather {"city": "Paris"} ``` La réponse contient finish_reason: "tool_calls" et, au format OpenAI, tool_calls. Exécutez la fonction, ajoutez un tool message contenant le résultat et la valeur correspondante de tool_call_id, puis effectuez un nouvel appel, exactement comme avec les modèles OpenAI. ## Raisonnement et réflexion reasoning_effort correspond au paramètre d’effort de Claude et accepte low, medium, high, xhigh ou max. La valeur none est rejetée. Lorsque le modèle réfléchit, son raisonnement arrive dans un champ distinct reasoning_content à côté de content, de sorte que le code qui lit message.content continue de fonctionner sans modification. reasoning.pyCopier ``` resp = client.chat.completions.create( model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high", messages=[{"role": "user", "content": "Find the bug in this function: ..."}], ) ``` ## Modèles | Identifiant du modèle | À utiliser pour | claude-sonnet-5 | Choix par défaut pour le développement et les tâches d’agents : rapide, performant, à prix intermédiaire. | claude-opus-5-5 | Raisonnement plus difficile, refactorisations importantes, longues exécutions d’agents. | claude-fable-5-1 | Le plus performant et le plus cher ; réservez-le aux tâches les plus difficiles. | claude-haiku-4-5 | Économique et rapide : titres, résumés, classification, petites étapes. Utilisez ces identifiants tels quels. Les anciens identifiants datés, comme claude-3-5-sonnet-20241022 figurent encore dans certaines listes de modèles, mais ne sont pas disponibles et renvoient une erreur indiquant que le modèle n’est pas pris en charge. ## Quand utiliser plutôt l’API native d’Anthropic Le format OpenAI prend en charge le chat, le streaming, les outils et les images. Utilisez le format Messages d’Anthropic, sur la même passerelle, lorsque vous avez besoin de points de mise en cache explicites pour les prompts, de blocs de réflexion à renvoyer entre les tours, de documents PDF ou de citations. Le [guide du SDK Python Anthropic](/fr/learn/anthropic-python-sdk/) et le [guide du SDK Vercel AI](/fr/learn/use-claude-api-with-vercel-ai-sdk/) couvrent cette méthode. ## Dépannage | Ce que vous voyez | Cause | Solution | Une erreur d’analyse JSON, une réponse commençant par < | base_url sans /v1 | https://aiprimetech.io/v1 | 404 page not found | /v1 deux fois | Exactement un /v1 | 401 Invalid API key | Clé absente ou incorrecte dans le processus | Vérifiez la variable ; une clé appartient à une seule passerelle | Modèle non pris en charge | Identifiant de modèle ancien et daté, ou mal orthographié | Utilisez un identifiant du tableau ci-dessus | 'none' is not supported | reasoning_effort="none" | Utilisez low ou une valeur supérieure, ou omettez ce paramètre | 429 Concurrency limit exceeded for user | Trop de requêtes en cours | Limitez le parallélisme ; consultez [les limites de débit et les nouvelles tentatives](/fr/blog/rate-limits-and-retries/) | Délais d’attente dépassés pour les réponses longues | Requête longue sans streaming | Utilisez le streaming ou augmentez le délai d’attente du client ## Questions fréquentes Puis-je utiliser Claude avec le SDK OpenAI ? Oui, via un endpoint compatible avec OpenAI : définissez base_url sur l’URL de la passerelle se terminant par /v1, utilisez une clé API de la passerelle et un identifiant de modèle Claude tel que claude-sonnet-5. Le streaming et l’appel de fonctions fonctionnent au format OpenAI. Quelle URL de base utiliser pour Claude dans le SDK OpenAI ? L’URL de la passerelle se terminant par /v1, par exemple https://aiprimetech.io/v1. Le SDK y ajoute /chat/completions. L’appel de fonctions fonctionne-t-il avec Claude au format OpenAI ? Oui. Transmettez les outils au format OpenAI ; Claude renvoie tool_calls avec finish_reason défini sur tool_calls, et vous répondez avec des messages d’outil comme d’habitude. Quand dois-je utiliser plutôt l’API native d’Anthropic ? Lorsque vous avez besoin d’une mise en cache explicite des prompts, de blocs de réflexion entre les tours, de PDF en entrée ou de citations. Ces fonctionnalités font partie du format Messages d’Anthropic. Commencez à utiliser Claude en quelques minutes Obtenez une clé API — aucun compte Anthropic ni inscription sur liste d’attente requis.[Obtenir votre clé API](/register) AI Prime Tech est une passerelle API indépendante. Elle n’est ni affiliée à Anthropic, ni approuvée par Anthropic, ni revendeuse d’Anthropic. Claude et les noms de modèles associés sont des marques de leurs propriétaires respectifs. ## Autres guides sur l’API Claude [Comment obtenir une clé API Claude](/fr/learn/how-to-get-a-claude-api-key/)[Comprendre la tarification de l’API Claude](/fr/learn/claude-api-pricing-explained/)[La façon la moins chère d’utiliser l’API Claude](/fr/learn/cheapest-way-to-use-claude-api/)[Cursor illimité avec l’API Claude](/learn/use-claude-api-with-cursor/)[Accès illimité à Claude Code](/fr/learn/use-claude-api-with-claude-code/)[Passerelle API Claude ou accès direct à Anthropic](/fr/learn/claude-api-vs-anthropic-direct/)[Comprendre les modèles Claude : comparaison de Claude Opus, Sonnet, Haiku et Fable — tous les modèles de l’API Claude, noms des modèles Anthropic et prix (2026)](/fr/learn/claude-api-models-compared/)[Payer l’API Claude en cryptomonnaies](/fr/learn/claude-api-with-crypto-payment/)[Accéder à l’API Claude sans liste d’attente](/fr/learn/claude-api-without-waitlist/)[Comment réduire la consommation de tokens de Claude](/fr/learn/how-to-reduce-claude-token-usage/)[Cline illimité avec l’API Claude](/fr/learn/use-claude-api-with-cline/)[Roo Code illimité avec l’API Claude](/fr/learn/use-claude-api-with-roo-code/)[Claude illimité dans les IDE JetBrains](/fr/learn/use-claude-api-with-jetbrains/)[Aider avec Claude via une passerelle : ANTHROPIC_API_BASE, fichiers de configuration, mode architect et correctifs](/fr/learn/use-claude-api-with-aider/)[Claude illimité dans VS Code](/fr/learn/use-claude-api-with-vscode/)[Configuration d’OpenCode pour Claude : paramètres d’opencode.json, modèles et erreurs courantes](/fr/learn/use-claude-api-with-opencode/)[Hermes Agent avec Claude via une passerelle : configuration d’un fournisseur personnalisé, maîtrise des coûts et correctifs](/fr/learn/run-hermes-agent-with-claude-api/)[Utiliser OpenClaw sans limites avec Claude](/fr/learn/run-openclaw-with-claude-api/)[Ce que signifie une API compatible avec Anthropic](/fr/learn/anthropic-compatible-api/)[Clé API Claude Code — ANTHROPIC_API_KEY : comment l’obtenir, la configurer et quand utiliser claude setup-token à la place](/fr/learn/claude-code-api-key-setup/)[Coûts de l’API Claude Code — Tarifs et moyens de les réduire](/fr/learn/claude-code-api-costs/)[Les erreurs de l’API Claude expliquées : erreur serveur 500, surcharge 529, limite de débit 429, requête incorrecte 400 — et le correctif pour chacune](/fr/learn/claude-api-errors-troubleshooting/)[Comment acheter des crédits pour l’API Claude — et pourquoi un crédit Claude vaut mieux que toute offre d’« achat de compte Claude »](/fr/learn/buy-claude-api-credits/)[API Claude gratuite : existe-t-il une clé API Claude gratuite, et qu’est-ce qui est réellement gratuit en 2026 ?](/fr/learn/claude-api-free-trial/)[API Claude ou abonnement Claude Pro/Max — Que choisir](/fr/learn/claude-api-vs-subscription/)[Codex CLI avec un fournisseur personnalisé : config.toml, modèles GPT et Claude, extension IDE et correctifs](/fr/learn/use-claude-api-with-codex/)[Connecter Claude à n8n](/fr/learn/use-claude-api-with-n8n/)[Router LiteLLM vers Claude](/fr/learn/use-claude-api-with-litellm/)[Utiliser Claude dans Kilo Code](/fr/learn/use-claude-api-with-kilo-code/)[GitHub Copilot Chat avec Claude via une passerelle : configuration de Custom Endpoint, mode agent et correctifs](/fr/learn/use-claude-api-with-github-copilot/)[Connecter Zed à Claude via la passerelle](/fr/learn/use-claude-api-with-zed/)[Connecter Cherry Studio à Claude](/fr/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic dans LangChain : importation, base_url, streaming, outils et erreurs](/fr/learn/use-claude-api-with-langchain/)[SDK Python Anthropic : installation, configuration de base_url, streaming et gestion des erreurs](/fr/learn/anthropic-python-sdk/)[Claude avec Vercel AI SDK : baseURL de createAnthropic, streaming et corrections](/fr/learn/use-claude-api-with-vercel-ai-sdk/)[Utiliser Factory Droid avec Claude](/fr/learn/use-claude-api-with-factory-droid/)[L’API de Claude Code expliquée](/fr/learn/claude-code-api/)[Intégrer l’API Claude à votre application](/fr/learn/claude-api-integration/)[Comment utiliser Claude sans limites — et pourquoi il n’existe pas de « Claude Code piraté »](/fr/learn/get-unlimited-claude-usage/)