Używanie narzędzi
Dodaj wywoływanie funkcji do aplikacji: zdefiniuj narzędzia, czytaj bloki tool_use, steruj tool_choice i wywołuj równolegle. W stylu Anthropic i OpenAI.
Wywoływanie funkcji na natywnym endpoincie Anthropic. API normalizuje tool_choice, więc starsze SDK, które wysyłają {type:any} lub {type:tool}, nadal działają.
Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI:https://oneprovider.dev/docs/llms.txt Kształt żądania
Zadeklaruj narzędzia jako tablicę. Każde narzędzie ma name, description i input_schema w JSON Schema. Gdy model zdecyduje się wywołać narzędzie, zwraca blok treści tool_use.
{
"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?" }
]
} Odpowiedź z wywołaniem narzędzia
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" }
}
]
} Kontynuacja pętli
Gdy twój kod wykona narzędzie, odeślij wynik jako wiadomość user z blokiem tool_result. Model zwróci wtedy kolejne wywołanie narzędzia albo końcową odpowiedź tekstową.
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_bdrk_01...",
"content": "{\"city\":\"Berlin\",\"temp_c\":18,\"sky\":\"clear\"}"
}
]
} tool_choice — jak go normalizujemy
Anthropic przyjmuje cztery formy tool_choice. API OneProvider przyjmuje od twojego klienta wszystkie cztery, ale dwie z nich przekazuje modelowi w innej postaci:
| Klient wysyła | Model otrzymuje | Dlaczego |
|---|---|---|
{"type":"auto"} (lub brak) | bez zmian | Model decyduje — standardowy scenariusz. |
{"type":"none"} | bez zmian | Wymuś odpowiedź wyłącznie tekstową. |
{"type":"any"} | {"type":"auto"} + wskazówka systemowa | Nie każdy model obsługuje wymuszone wywołania narzędzi; wskazówka mówi modelowi „MUSISZ wywołać narzędzie”. |
{"type":"tool","name":"X"} | {"type":"auto"} + wskazówka systemowa | Tak samo; wskazówka podaje nazwę narzędzia. |
tool_choice:any i tool_choice:tool kończyłyby się błędem w części modeli. Z auto i mocną wskazówką systemową w naszych testach udaje się około 95% takich żądań. Jeśli oczekiwane wywołanie narzędzia zostało zastąpione prozą, wskazówka nie skłoniła modelu — doprecyzuj prompt użytkownika albo przełącz się na bardziej zaawansowany model. Równoległe wywołania narzędzi
Pojedyncza odpowiedź może zawierać wiele bloków tool_use — model sam decyduje, czy je rozdzielić. Wykonaj wszystkie, a potem odeślij jedną wiadomość user z wieloma blokami tool_result (po jednym na każdy tool_use_id). Kolejność nie ma znaczenia.
Nazwy narzędzi
- Wielkość liter w nazwach ma znaczenie, a nazwy są przekazywane bez zmian — model powtarza dokładnie to, co zarejestrowano.
- Działają zarówno
snake_case, jak iPascalCase. Claude Code CLI używa PascalCase (Read,Bash,Edit); typowe SDK ogólnego przeznaczenia — snake_case. - Nazwy powinny mieć mniej niż 64 znaki i zawierać wyłącznie znaki ASCII
[a-zA-Z0-9_].
Wywoływanie narzędzi w stylu OpenAI
Na endpoincie /v1/chat/completions użyj standardowego kształtu OpenAI tools / tool_calls — pod spodem tłumaczymy go na bloki tool_use Anthropic.
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