OneProvider

Python SDK

Das Python-Paket anthropic oder openai mit OneProvider nutzen, nur mit geänderter base_url. Sync- und Async-Clients, Streaming, Tool-Nutzung, Retries.

Zwei Python-Wege – anthropic für native Claude-Anwendungen, openai für Migrationen. Beide funktionieren mit einer einzigen Änderung von base_url.

Alle Modelle, Funktionen und Preise Dokumentationsindex für KI-Agenten: https://oneprovider.dev/docs/llms.txt Betriebssystem Vorab: ein Schlüssel aus Ihrem Konto Öffnen Sie Ihr Konto: im Telegram-Bot @oneprovider_robot (Konto) oder auf app.oneprovider.dev . Tippen Sie auf „Schlüssel ausstellen“, vergeben Sie einen Namen (zum Beispiel diesen Client) und ein Ausgabenlimit und kopieren Sie den Schlüssel. Das Guthaben laden Sie am selben Ort auf. Mehr zu Konto und Schlüsseln .

Installation

bash
pip3 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

python
import 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)

OpenAI-kompatibel

python
import 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)

Async-Client

python
import 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

python
with 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)

Tool-Nutzung

python
tools = [{
"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.

Wiederholungen & Fehlerbehandlung

python
from 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."}],
)
Schreiben Sie den Schlüssel nicht fest in den Code Lesen Sie den Schlüssel immer aus einer Umgebungsvariable oder einem Secret-Manager. Fest eingetragene Schlüssel landen früher oder später in der Versionsverwaltung.

Welches Modell wählen

Übergeben Sie die ID in model. claude-sonnet-5-5 ist der Standard für die meisten Anwendungen, claude-haiku-5-5 für schnelle Aufrufe mit hohem Volumen und claude-opus-5-5 für anspruchsvolles Schlussfolgern. Die OpenAI-kompatible Form akzeptiert auch GPT-IDs wie gpt-6.1-terra. Nutzen Sie die Anthropic-Form mit https://api.oneprovider.dev und die OpenAI-Form mit https://api.oneprovider.dev/v1. IDs stehen auf der Modellseite .

Häufige Fehler und Lösungen

404 NotFoundError

Anthropic-SDK: base_url="https://api.oneprovider.dev" ohne /v1. OpenAI-SDK: base_url="https://api.oneprovider.dev/v1" mit /v1.

401 AuthenticationError

Die Umgebungsvariable ist leer oder hat einen angehängten Zeilenumbruch. Geben Sie vor dem Aufruf len(os.environ["ONEPROVIDER_KEY"]) aus.

429 RateLimitError

Lesen Sie die Meldung: „Insufficient balance“ bedeutet: Guthaben aufladen (nicht erneut versuchen), jedes andere 429 ist ein Rate-Limit – warten Sie ab und beachten Sie Retry-After.

APIConnectionError oder Lese-Timeout

Deaktivieren Sie VPN oder Proxy-Variablen (HTTPS_PROXY) und nutzen Sie bei langen Antworten Streaming: Eine Anfrage ohne Streaming muss innerhalb von 6 Minuten beginnen.

400 zu max_tokens

Das Anthropic-SDK verlangt max_tokens in jeder Anfrage.

FAQ

Kann ich die offiziellen SDKs behalten?

Ja. Nur Schlüssel und base_url ändern sich, siehe Von Anthropic migrieren und Von OpenAI migrieren .

Funktioniert Streaming?

Ja, mit beiden SDKs; siehe Streaming .

Wo bewahre ich den Schlüssel auf?

In einer Umgebungsvariable, nie im Repository.

Kurze Antworten

Welche base URL verwende ich?

Claude Code und die Anthropic-SDKs verwenden https://api.oneprovider.dev. OpenAI-SDKs und OpenAI-kompatible Clients verwenden https://api.oneprovider.dev/v1. Ein Schlüssel funktioniert an beiden Adressen; die Modellliste finden Sie auf der Modellseite , die Preise auf der Preisseite .

Wie authentifiziere ich mich?

Senden Sie den unveränderten sk-…-Schlüssel in x-api-key oder Authorization: Bearer: nur eines von beiden, nie beide. Bewahren Sie den Schlüssel in einer Umgebungsvariable auf, nicht in einer Datei, die ins Repository committet wird. Mehr zur Authentifizierung .

Wo bekomme ich einen Schlüssel?

Öffnen Sie Ihr Konto im Telegram-Bot @oneprovider_robot oder auf app.oneprovider.dev, laden Sie das Guthaben auf und tippen Sie auf „Schlüssel ausstellen“. Jeder Schlüssel kann ein eigenes Ausgabenlimit haben. Konto & API-Schlüssel .

Was bedeuten 401, 404 und 429?

401: Der Schlüssel fehlt, ist falsch geschrieben oder steht im falschen Header; fügen Sie den ganzen Schlüssel ohne Anführungszeichen und Leerzeichen ein. 404: meist eine falsche base URL, zum Beispiel ein fehlendes oder doppeltes /v1. 429 mit „Insufficient balance“: Das Guthaben des Kontos oder das Ausgabenlimit des Schlüssels ist aufgebraucht – laden Sie auf, statt es erneut zu versuchen; jedes andere 429 ist ein Rate-Limit, warten Sie dann die Zeit aus Retry-After ab. Details: Fehlercodes und Fehlerbehebung .

Warum brechen Streams ab oder werden zurückgesetzt?

VPN- und VLESS-Proxys puffern SSE oft oder stören die HTTP/2-Aushandlung. OneProvider hat keine regionalen Beschränkungen und puffert keine Streams – schalten Sie den Proxy aus und versuchen Sie es erneut.

Wohin wende ich mich, wenn das nicht reicht?

Schreiben Sie @Oneproviderhelpbot auf Telegram oder öffnen Sie „Support“ im Web-Konto – mit HTTP-Statuscode und genauer Fehlermeldung. So arbeitet der Support .

Zuletzt aktualisiert: 2026-11-08 Fehler gefunden? @Oneproviderhelpbot