Strona główna → Pomoc
400 przy wywołaniu narzędzia – każde tool_use potrzebuje pasującego tool_result
Każdy blok tool_use w wiadomości asystenta musi dostać odpowiedź w postaci bloku tool_result z tym samym id – w bezpośrednio następnej wiadomości użytkownika, przed jakąkolwiek inną treścią. Pomiń jeden z kilku, zmień kolejność albo wstaw najpierw tekst, a następne żądanie zostanie odrzucone.
Co widzisz
messages.N: tool_use ids were found without tool_result blocks immediately afterEach tool_result block must have a corresponding tool_use block in the previous messageThe first tool call succeeds and the next request failsWorks with one tool, breaks when the model calls two in a single turn
Dlaczego tak się dzieje
Rozmowa jest odtwarzana w całości przy każdym wywołaniu, więc API za każdym razem waliduje całą strukturę – łącznie z turami, które wcześniej przeszły. Dlatego błąd wskazuje na starszą wiadomość niż ta, którą właśnie wysłałeś.
Zwykłym wyzwalaczem są równoległe wywołania narzędzi. Model może wygenerować kilka bloków tool_use w jednej turze, a kod obsługi napisany pod jedno wywołanie odpowiada na pierwszy i gubi resztę.
Nieudane narzędzie to też wynik. Pominięcie bloku, bo twoja funkcja rzuciła wyjątek, to dokładnie ten kształt, który API odrzuca – zamiast tego zwróć tool_result z treścią błędu.
Jak to naprawić
- Odpowiadaj na każde id, po koleiZbierz id tool_use z tury asystenta, uruchom je i na początku następnej wiadomości użytkownika wyślij po jednym tool_result na każde id, w tej samej kolejności.
- Zwracaj błędy jako wynikiGdy narzędzie rzuci wyjątek, wyślij tool_result z komunikatem błędu jako treścią. Model dobrze sobie z tym radzi; z brakującym blokiem – nie.
- Tekst umieszczaj po wynikachJeśli chcesz dodać notatkę użytkownika w tej samej turze, umieść ją po wszystkich blokach tool_result, nigdy przed nimi.
Ruch związany z wywołaniami narzędzi jest w APICLAN naliczany jak zwykłe tokeny wejściowe i wyjściowe. Odrzucone żądanie nigdy się nie wykonuje, więc nie jest naliczane – ale ponowienie już tak, dlatego naprawa parowania jest lepsza niż obchodzenie go ponowieniami.
Powiązane
Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej
bramce zgodnej z OpenAI, a nie zebrane z innych stron.