SDK Python
Usa il pacchetto Python anthropic o openai con OneProvider cambiando solo base_url. Client sincroni e asincroni, streaming, uso di strumenti e retry.
Due strade in Python: anthropic per il codice nativo Claude, openai per le migrazioni. Entrambe funzionano cambiando solo base_url.
Tutti i modelli, le funzionalità e i prezzi Indice della documentazione per agenti AI:https://oneprovider.dev/docs/llms.txt Sistema operativo Prima di iniziare: una chiave dalla tua area personale Apri la tua area personale: nel bot Telegram @oneprovider_robot («Area personale») oppure su app.oneprovider.dev . Premi «Emetti una chiave», dalle un nome (per esempio, questo client) e un limite di spesa, poi copia la chiave. Il saldo si ricarica nello stesso posto. Altro sull'area personale e sulle chiavi . Installazione
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) Compatibile con 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 asincrono
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) Uso degli strumenti
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. Nuovi tentativi e gestione degli errori
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."}],
) Non scrivere la chiave nel codice Leggi sempre la chiave da una variabile d'ambiente o da un gestore di segreti. Le chiavi scritte nel codice prima o poi finiscono nel controllo di versione. Quale modello scegliere
Passa l'ID in model. claude-sonnet-5-5 è la scelta predefinita per la maggior parte del codice, claude-haiku-5-5 per chiamate veloci ad alto volume e claude-opus-5-5 per ragionamenti difficili. La forma compatibile con OpenAI accetta anche ID GPT come gpt-6.1-terra. Usa la forma Anthropic con https://api.oneprovider.dev e la forma OpenAI con https://api.oneprovider.dev/v1. Gli ID sono nella pagina dei modelli .
Errori comuni e soluzioni
404 NotFoundError
SDK Anthropic: base_url="https://api.oneprovider.dev" senza /v1. SDK OpenAI: base_url="https://api.oneprovider.dev/v1" con /v1.
401 AuthenticationError
La variabile d'ambiente è vuota o ha un a capo finale. Stampa len(os.environ["ONEPROVIDER_KEY"]) prima della chiamata.
429 RateLimitError
Leggi il messaggio: «Insufficient balance» significa che devi ricaricare (non riprovare), qualsiasi altro 429 è un limite di frequenza, quindi rallenta e rispetta Retry-After.
APIConnectionError o timeout di lettura
Disattiva le variabili di VPN o proxy (HTTPS_PROXY) e usa lo streaming per le risposte lunghe: una richiesta senza streaming deve iniziare entro 6 minuti.
400 su max_tokens
L'SDK Anthropic richiede max_tokens in ogni richiesta.
FAQ
Posso mantenere gli SDK ufficiali?
Sì. Cambiano solo la chiave e base_url, vedi migrare da Anthropic e migrare da OpenAI .
Lo streaming funziona?
Sì, con entrambi gli SDK; vedi Streaming .
Dove tengo la chiave?
In una variabile d'ambiente, mai nel repository.
Risposte rapide
Quale base URL devo usare?
Claude Code e gli SDK Anthropic usano https://api.oneprovider.dev. Gli SDK OpenAI e i client compatibili con OpenAI usano https://api.oneprovider.dev/v1. Con una sola chiave funzionano entrambi; l'elenco dei modelli è nella pagina dei modelli , le tariffe nella pagina dei prezzi .
Come mi autentico?
Invia la chiave sk-… così com'è in x-api-key oppure in Authorization: Bearer: uno dei due, mai entrambi. Tieni la chiave in una variabile d'ambiente, non in un file che finisce nel commit. Altro sull'autenticazione .
Dove ottengo una chiave?
Apri la tua area personale nel bot Telegram @oneprovider_robot oppure su app.oneprovider.dev, ricarica il saldo e premi «Emetti una chiave». Ogni chiave può avere un proprio limite di spesa. Area personale e chiavi API .
Cosa significano 401, 404 e 429?
401: la chiave manca, è scritta male o è inviata nell'header sbagliato; incolla la chiave intera, senza virgolette né spazi. 404: di solito la base URL è sbagliata, per esempio manca /v1 o è doppio. 429 con “Insufficient balance”: il saldo dell'area personale o il limite di spesa della chiave è esaurito, quindi ricarica invece di riprovare; qualsiasi altro 429 è un limite di frequenza, quindi attendi il tempo indicato in Retry-After. Dettagli: codici di errore e risoluzione dei problemi .
Perché gli stream si interrompono o si resettano?
VPN e proxy VLESS spesso mettono in buffer gli SSE o rompono la negoziazione HTTP/2. OneProvider non ha restrizioni regionali e non mette in buffer gli stream: disattiva il proxy e riprova.
Dove chiedo se non basta?
Scrivi a @Oneproviderhelpbot su Telegram oppure apri «Assistenza» nell'area personale sul sito, indicando il codice di stato HTTP e il testo esatto dell'errore. Come funziona l'assistenza .
Ultimo aggiornamento: 2026-11-08 Hai trovato un errore? @Oneproviderhelpbot