SDK Python
Utilisez le paquet Python anthropic ou openai avec OneProvider en ne changeant que base_url. Clients sync/async, streaming, outils, nouvelles tentatives.
Deux voies en Python — anthropic pour le code natif Claude, openai pour les migrations. Les deux fonctionnent en changeant uniquement base_url.
Tous les modèles, leurs capacités et leurs tarifs Index de la documentation pour les agents IA :https://oneprovider.dev/docs/llms.txt Système d’exploitation Avant de commencer : une clé de votre espace client Ouvrez votre espace client : le bot Telegram @oneprovider_robot (« Mon espace ») ou app.oneprovider.dev . Appuyez sur « Créer une clé », donnez-lui un nom (par exemple, ce client) et une limite de dépense, puis copiez la clé. Vous rechargez le solde au même endroit. En savoir plus sur l’espace client et les clés . Installation
bashpip3 install anthropic
# or, for OpenAI-style code:
pip3 install openai
# In a venv (recommended):
# python3 -m venv .venv && source .venv/bin/activate
# pip install anthropic openai Anthropic SDK
pythonimport os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev",
)
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.content[0].text) Compatible OpenAI
pythonimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.choices[0].message.content) Client asynchrone
pythonimport asyncio
from anthropic import AsyncAnthropic
async def main():
client = AsyncAnthropic(base_url="https://api.oneprovider.dev")
resp = await client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi async."}],
)
print(resp.content[0].text)
asyncio.run(main()) Streaming
pythonwith client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Tell me a haiku."}],
) as stream:
for chunk in stream.text_stream:
print(chunk, end="", flush=True) Utilisation d’outils
pythontools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Frankfurt?"}],
)
# resp.stop_reason == "tool_use"
# Inspect resp.content for tool_use blocks. Nouvelles tentatives et gestion des erreurs
pythonfrom anthropic import APIStatusError
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=0.5, min=0.5, max=4),
retry_error_cls=APIStatusError,
)
def call():
return client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi."}],
) N’écrivez pas la clé en dur Lisez toujours la clé depuis une variable d’environnement ou un gestionnaire de secrets. Une clé écrite en dur finit tôt ou tard dans le contrôle de version. Quel modèle choisir
Passez l’ID dans model. claude-sonnet-5-5 est le choix par défaut pour la plupart du code, claude-haiku-5-5 pour les appels rapides à gros volume et claude-opus-5-5 pour le raisonnement difficile. La forme compatible OpenAI accepte aussi des ID GPT comme gpt-6.1-terra. Utilisez la forme Anthropic avec https://api.oneprovider.dev et la forme OpenAI avec https://api.oneprovider.dev/v1. Les ID sont sur la page des modèles .
Erreurs courantes et solutions
404 NotFoundError
SDK Anthropic : base_url="https://api.oneprovider.dev" sans /v1. SDK OpenAI : base_url="https://api.oneprovider.dev/v1" avec /v1.
401 AuthenticationError
La variable d’environnement est vide ou se termine par un retour à la ligne. Affichez len(os.environ["ONEPROVIDER_KEY"]) avant l’appel.
429 RateLimitError
Lisez le message : « Insufficient balance » signifie qu’il faut recharger le solde (ne réessayez pas), tout autre 429 est une limite de débit ; patientez donc en augmentant les délais et respectez Retry-After.
APIConnectionError ou délai de lecture dépassé
Désactivez les variables de VPN ou de proxy (HTTPS_PROXY) et utilisez le streaming pour les longues réponses : une requête sans streaming doit commencer en moins de 6 minutes.
400 à propos de max_tokens
Le SDK Anthropic exige max_tokens dans chaque requête.
FAQ
Puis-je garder les SDK officiels ?
Oui. Seuls la clé et base_url changent, voir migrer depuis Anthropic et migrer depuis OpenAI .
Le streaming fonctionne-t-il ?
Oui, avec les deux SDK ; voir Streaming .
Où garder la clé ?
Dans une variable d’environnement, jamais dans le dépôt.
Réponses rapides
Quelle base URL utiliser ?
Claude Code et les SDK Anthropic utilisent https://api.oneprovider.dev. Les SDK OpenAI et les clients compatibles OpenAI utilisent https://api.oneprovider.dev/v1. Une seule clé fonctionne avec les deux ; la liste des modèles est sur la page des modèles , les tarifs sur la page des tarifs .
Comment s’authentifier ?
Envoyez la clé sk-… telle quelle dans x-api-key ou Authorization: Bearer : l’un des deux, jamais les deux. Conservez la clé dans une variable d’environnement, pas dans un fichier qui sera commité. En savoir plus sur l’authentification .
Où obtenir une clé ?
Ouvrez votre espace client dans le bot Telegram @oneprovider_robot ou sur app.oneprovider.dev, rechargez le solde et appuyez sur « Créer une clé ». Chaque clé peut avoir sa propre limite de dépense. Espace client et clés API .
Que signifient 401, 404 et 429 ?
401 : la clé est absente, mal saisie ou envoyée dans le mauvais en-tête ; collez la clé entière, sans guillemets ni espaces. 404 : le plus souvent une base URL incorrecte, par exemple un /v1 manquant ou en double. 429 avec « Insufficient balance » : le solde de l’espace client est à zéro ou la clé a atteint sa limite de dépense, donc rechargez au lieu de réessayer ; tout autre 429 est une limite de débit, donc attendez le délai indiqué par Retry-After. Détails : codes d’erreur et dépannage .
Pourquoi les flux se coupent-ils ou se réinitialisent-ils ?
Les VPN et les proxys VLESS mettent souvent le SSE en mémoire tampon ou perturbent la négociation HTTP/2. OneProvider n’a aucune restriction régionale et ne met pas les flux en mémoire tampon : désactivez le proxy et réessayez.
Où demander de l’aide si cela ne suffit pas ?
Écrivez à @Oneproviderhelpbot sur Telegram ou ouvrez « Support » dans l’espace client web, en indiquant le code de statut HTTP et le message d’erreur exact. Comment fonctionne le support .
Dernière mise à jour: 2026-11-08 Vous avez trouvé un bug ? @Oneproviderhelpbot