OneProvider

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.

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

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ą.

json
{
"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:

Dane referencyjne
Klient wysyłaModel otrzymujeDlaczego
{"type":"auto"} (lub brak)bez zmianModel decyduje — standardowy scenariusz.
{"type":"none"}bez zmianWymuś odpowiedź wyłącznie tekstową.
{"type":"any"}{"type":"auto"} + wskazówka systemowaNie 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 systemowaTak samo; wskazówka podaje nazwę narzędzia.
Dlaczego to ważne Bez tego przepisania 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 i PascalCase. 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