OneProvider

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

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)

Zgodność z OpenAI

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)

Klient asynchroniczny

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())

Strumieniowanie

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)

Użycie narzędzi

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.

Ponowienia i obsługa błędów

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."}],
)
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