SDK dla Pythona
Używaj pakietu anthropic lub openai dla Pythona z OneProvider, zmieniając tylko base_url. Klienci sync i async, strumieniowanie, narzędzia i ponowienia.
Dwie ścieżki w Pythonie — anthropic dla natywnego kodu Claude, openai do migracji. Obie działają po zmianie samego base_url.
Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI:https://oneprovider.dev/docs/llms.txt System operacyjny Zanim zaczniesz: klucz z Panelu Otwórz swój Panel: bot Telegram @oneprovider_robot (Konto) albo app.oneprovider.dev . Naciśnij „Utwórz klucz”, nadaj mu nazwę (na przykład ten klient) i limit wydatków, a potem skopiuj klucz. Saldo doładowujesz w tym samym miejscu. Więcej o Panelu i kluczach . Instalacja
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) Zgodność z 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) Klient asynchroniczny
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()) Strumieniowanie
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) Użycie narzędzi
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. Ponowienia i obsługa błędów
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."}],
) Nie wpisuj klucza na stałe w kodzie Zawsze czytaj klucz ze zmiennej środowiskowej lub menedżera sekretów. Klucze wpisane na stałe prędzej czy później trafiają do systemu kontroli wersji. Jaki model wybrać
Przekaż ID w model. claude-sonnet-5-5 to wybór domyślny dla większości kodu, claude-haiku-5-5 do szybkich wywołań o dużym wolumenie, a claude-opus-5-5 do trudnego rozumowania. Forma zgodna z OpenAI przyjmuje też ID GPT, na przykład gpt-6.1-terra. Formy Anthropic używaj z https://api.oneprovider.dev, a formy OpenAI z https://api.oneprovider.dev/v1. ID są na stronie modeli .
Częste błędy i rozwiązania
404 NotFoundError
SDK Anthropic: base_url="https://api.oneprovider.dev" bez /v1. SDK OpenAI: base_url="https://api.oneprovider.dev/v1" z /v1.
401 AuthenticationError
Zmienna środowiskowa jest pusta albo ma znak nowej linii na końcu. Wypisz len(os.environ["ONEPROVIDER_KEY"]) przed wywołaniem.
429 RateLimitError
Sprawdź komunikat: „Insufficient balance” oznacza, że trzeba doładować saldo (nie ponawiaj), a każdy inny błąd 429 to limit szybkości, więc odczekaj i uwzględnij Retry-After.
APIConnectionError lub przekroczenie czasu odczytu
Wyłącz VPN lub zmienne proxy (HTTPS_PROXY) i używaj strumieniowania przy długich odpowiedziach: żądanie bez strumieniowania musi zacząć odpowiadać w ciągu 6 minut.
400 dotyczący max_tokens
SDK Anthropic wymaga max_tokens w każdym żądaniu.
FAQ
Czy mogę zostać przy oficjalnych SDK?
Tak. Zmieniają się tylko klucz i base_url, zobacz migrację z Anthropic i migrację z OpenAI .
Czy strumieniowanie działa?
Tak, w obu SDK; zobacz Streaming .
Gdzie trzymać klucz?
W zmiennej środowiskowej, nigdy w repozytorium.
Szybkie odpowiedzi
Jakiego base URL użyć?
Claude Code i SDK Anthropic używają https://api.oneprovider.dev. SDK OpenAI i klienty zgodne z OpenAI używają https://api.oneprovider.dev/v1. Jeden klucz działa przy obu; lista modeli jest na stronie modeli , a stawki na stronie cennika .
Jak się uwierzytelnić?
Wyślij surowy klucz sk-… w x-api-key albo Authorization: Bearer: w jednym z nich, nigdy w obu. Trzymaj klucz w zmiennej środowiskowej, a nie w pliku, który trafia do repozytorium. Więcej o uwierzytelnianiu .
Skąd wziąć klucz?
Otwórz swój Panel w bocie Telegram @oneprovider_robot lub na app.oneprovider.dev, doładuj saldo i naciśnij „Utwórz klucz”. Każdy klucz może mieć własny limit wydatków. Panel i klucze API .
Co oznaczają 401, 404 i 429?
401: klucza brakuje, jest błędnie wpisany albo wysłany w złym nagłówku; wklej cały klucz bez cudzysłowów i spacji. 404: zwykle zły base URL, na przykład brakujące lub podwojone /v1. 429 z komunikatem „Insufficient balance”: saldo Panelu lub limit wydatków klucza się wyczerpał, więc doładuj zamiast ponawiać; każde inne 429 to limit zapytań, więc poczekaj zgodnie z Retry-After. Szczegóły: kody błędów i rozwiązywanie problemów .
Dlaczego strumienie się urywają lub resetują?
VPN i proxy VLESS często buforują SSE albo zrywają negocjację HTTP/2. OneProvider nie ma ograniczeń regionalnych i nie buforuje strumieni, więc wyłącz proxy i spróbuj ponownie.
Gdzie pytać, jeśli to nie wystarcza?
Napisz do @Oneproviderhelpbot w Telegramie albo otwórz „Wsparcie” w Panelu w przeglądarce, podając kod statusu HTTP i dokładny komunikat błędu. Jak działa wsparcie .
Ostatnia aktualizacja: 2026-11-08 Widzisz błąd? @Oneproviderhelpbot