OneProvider

Tool-Nutzung

Function Calling für Ihre App: Tools definieren, tool_use-Blöcke lesen, tool_choice steuern, parallele Aufrufe. Im Anthropic- und im OpenAI-Stil.

Function Calling am Anthropic-nativen Endpoint. Die API normalisiert tool_choice, sodass ältere SDKs, die {type:any} oder {type:tool} senden, weiter funktionieren.

Alle Modelle, Funktionen und Preise Dokumentationsindex für KI-Agenten: https://oneprovider.dev/docs/llms.txt

Form der Anfrage

Deklarieren Sie Tools als Array. Jedes Tool hat einen name, eine description und ein JSON-Schema input_schema. Das Modell gibt einen Inhaltsblock tool_use aus, sobald es sich für den Aufruf eines Tools entscheidet.

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?" }
]
}

Antwort mit einem Tool-Aufruf

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" }
}
]
}

Die Schleife fortsetzen

Nachdem Ihr Code das Tool ausgeführt hat, senden Sie das Ergebnis als user-Nachricht mit einem tool_result-Block zurück. Das Modell gibt dann entweder einen weiteren Tool-Aufruf oder eine finale Textantwort aus.

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

tool_choice – so normalisieren wir

Anthropic kennt vier Formen von tool_choice. Die OneProvider-API akzeptiert alle vier von Ihrem Client, gibt zwei davon aber in anderer Form an das Modell weiter:

Referenzdaten
Client sendetModell erhältWarum
{"type":"auto"} (oder nicht angegeben)unverändertDas Modell entscheidet – der Normalfall.
{"type":"none"}unverändertErzwingt eine reine Textantwort.
{"type":"any"}{"type":"auto"} + System-HinweisNicht jedes Modell unterstützt erzwungene Tool-Aufrufe; der Hinweis sagt dem Modell „you MUST call a tool“.
{"type":"tool","name":"X"}{"type":"auto"} + System-HinweisGenauso; der Hinweis nennt das Tool.
Warum das wichtig ist Ohne diese Umschreibung würden tool_choice:any und tool_choice:tool bei manchen Modellen fehlschlagen. Mit auto und einem deutlichen System-Hinweis gelingen in unseren Tests etwa 95 % dieser Anfragen. Wird ein erwarteter Tool-Aufruf durch Fließtext ersetzt, hat der Hinweis das Modell nicht überzeugt – formulieren Sie Ihren User-Prompt klarer oder wechseln Sie zu einem leistungsfähigeren Modell.

Parallele Tool-Aufrufe

Eine einzelne Antwort kann mehrere tool_use-Blöcke enthalten – das Modell entscheidet, ob es mehrere Tools parallel aufruft. Führen Sie alle aus und senden Sie dann eine user-Nachricht mit mehreren tool_result-Blöcken zurück (einer pro tool_use_id). Die Reihenfolge spielt keine Rolle.

Tool-Namen

  • Namen unterscheiden Groß- und Kleinschreibung und werden unverändert durchgereicht – das Modell gibt zurück, was Sie registriert haben.
  • Sowohl snake_case als auch PascalCase funktionieren. Die CLI von Claude Code nutzt PascalCase (Read, Bash, Edit); generische SDKs verwenden meist snake_case.
  • Halten Sie Namen kürzer als 64 Zeichen und im ASCII-Format [a-zA-Z0-9_].

Tool Calling im OpenAI-Stil

Am Endpoint /v1/chat/completions nutzen Sie die übliche OpenAI-Form tools / tool_calls – wir übersetzen sie im Hintergrund in Anthropic-tool_use-Blöcke.

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