OneProvider

Uso degli strumenti

Aggiungi il function calling alla tua app: definisci gli strumenti, leggi i blocchi tool_use, gestisci tool_choice e chiamate parallele. Anthropic/OpenAI.

Function calling sull'endpoint nativo Anthropic. L'API normalizza tool_choice, così gli SDK più vecchi che emettono {type:any} o {type:tool} continuano a funzionare.

Tutti i modelli, le funzionalità e i prezzi Indice della documentazione per agenti AI: https://oneprovider.dev/docs/llms.txt

Forma della richiesta

Dichiara gli strumenti come array. Ogni strumento ha un name, una description e un input_schema in JSON Schema. Il modello emette un blocco di contenuto tool_use ogni volta che decide di chiamarne uno.

json
{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Return current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string" },
"units": { "type": "string", "enum": ["c", "f"] }
},
"required": ["city"]
}
}
],
"messages": [
{ "role": "user", "content": "What's the weather in Berlin in celsius?" }
]
}

Risposta con una chiamata a uno strumento

json
{
"id": "msg_01...",
"stop_reason": "tool_use",
"content": [
{ "type": "text", "text": "Let me check that for you." },
{
"type": "tool_use",
"id": "toolu_bdrk_01...",
"name": "get_weather",
"input": { "city": "Berlin", "units": "c" }
}
]
}

Proseguire il ciclo

Dopo che il tuo codice ha eseguito lo strumento, rimanda il risultato come messaggio user contenente un blocco tool_result. Il modello emette allora un'altra chiamata a uno strumento oppure una risposta finale in testo.

json
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_bdrk_01...",
"content": "{\"city\":\"Berlin\",\"temp_c\":18,\"sky\":\"clear\"}"
}
]
}

tool_choice: come lo normalizziamo

Anthropic accetta quattro forme di tool_choice. L'API di OneProvider le accetta tutte e quattro dal tuo client, ma ne passa due al modello in una forma diversa:

Dati di riferimento
Il client inviaIl modello ricevePerché
{"type":"auto"} (oppure assente)invariatoDecide il modello: il caso normale.
{"type":"none"}invariatoForza una risposta di solo testo.
{"type":"any"}{"type":"auto"} + suggerimento di sistemaNon tutti i modelli supportano le chiamate forzate agli strumenti; il suggerimento dice al modello «devi chiamare uno strumento».
{"type":"tool","name":"X"}{"type":"auto"} + suggerimento di sistemaUguale; il suggerimento indica lo strumento per nome.
Perché è importante Senza questa riscrittura, tool_choice:any e tool_choice:tool fallirebbero su alcuni modelli. Con auto più un suggerimento di sistema deciso, nei nostri test circa il 95% di queste richieste riesce. Se una chiamata a uno strumento che ti aspettavi viene sostituita da testo, il suggerimento non è riuscito a orientare il modello: rendi più preciso il prompt dell'utente oppure passa a un modello più capace.

Chiamate parallele agli strumenti

Una singola risposta può contenere più blocchi tool_use: è il modello a decidere se chiamare più strumenti in parallelo. Eseguili tutti, poi rimanda un solo messaggio user con più blocchi tool_result (uno per ogni tool_use_id). L'ordine non conta.

Nomi degli strumenti

  • I nomi distinguono maiuscole e minuscole e passano così come sono: il modello restituisce esattamente ciò che hai registrato.
  • Funzionano sia snake_case sia PascalCase. La CLI di Claude Code usa PascalCase (Read, Bash, Edit); gli SDK generici di solito usano snake_case.
  • Tieni i nomi sotto i 64 caratteri e in ASCII [a-zA-Z0-9_].

Chiamate agli strumenti in stile OpenAI

Sull'endpoint /v1/chat/completions usa la forma standard di OpenAI con tools / tool_calls: la traduciamo in blocchi tool_use di Anthropic dietro le quinte.

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