Обработка причин остановки
Узнайте, как правильно обрабатывать различные значения stop_reason в ответах Claude для создания надежных приложений.
Когда вы делаете запрос к Messages API, ответ Claude включает поле stop_reason
, которое указывает, почему модель прекратила генерацию своего ответа. Понимание этих значений имеет решающее значение для создания надежных приложений, которые правильно обрабатывают различные типы ответов.
Подробности о stop_reason
в ответе API см. в справочнике Messages API.
Что такое stop_reason?
Поле stop_reason
является частью каждого успешного ответа Messages API. В отличие от ошибок, которые указывают на сбои в обработке вашего запроса, stop_reason
сообщает вам, почему Claude успешно завершил генерацию своего ответа.
Значения причин остановки
end_turn
Наиболее распространенная причина остановки. Указывает, что Claude естественным образом завершил свой ответ.
max_tokens
Claude остановился, потому что достиг лимита max_tokens
, указанного в вашем запросе.
stop_sequence
Claude встретил одну из ваших пользовательских последовательностей остановки.
tool_use
Claude вызывает инструмент и ожидает, что вы его выполните.
pause_turn
Используется с серверными инструментами, такими как веб-поиск, когда Claude нужно приостановить длительную операцию.
refusal
Claude отказался генерировать ответ из соображений безопасности.
Лучшие практики для обработки причин остановки
1. Всегда проверяйте stop_reason
Возьмите за привычку проверять stop_reason
в логике обработки ответов:
2. Изящно обрабатывайте max_tokens
Когда ответ обрезан из-за лимитов токенов:
3. Реализуйте логику повтора для pause_turn
Для серверных инструментов, которые могут приостанавливаться:
Причины остановки против ошибок
Важно различать значения stop_reason
и фактические ошибки:
Причины остановки (успешные ответы)
- Часть тела ответа
- Указывают, почему генерация остановилась нормально
- Ответ содержит действительный контент
Ошибки (неудачные запросы)
- HTTP коды состояния 4xx или 5xx
- Указывают на сбои обработки запроса
- Ответ содержит детали ошибки
Соображения по потоковой передаче
При использовании потоковой передачи stop_reason
:
null
в начальном событииmessage_start
- Предоставляется в событии
message_delta
- Не предоставляется в любых других событиях
Общие паттерны
Обработка рабочих процессов использования инструментов
Обеспечение полных ответов
Правильно обрабатывая значения stop_reason
, вы можете создавать более надежные приложения, которые изящно обрабатывают различные сценарии ответов и обеспечивают лучший пользовательский опыт.