Обработка причин остановки
Когда вы делаете запрос к 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 необходимо приостановить длительную операцию.
Лучшие практики обработки причин остановки
1. Всегда проверяйте stop_reason
Выработайте привычку проверять stop_reason
в логике обработки ответов:
2. Корректно обрабатывайте max_tokens
Когда ответ обрезан из-за ограничений токенов:
3. Реализуйте логику повторных попыток для pause_turn
Для серверных инструментов, которые могут приостанавливаться:
Причины остановки vs. ошибки
Важно различать значения stop_reason
и фактические ошибки:
Причины остановки (успешные ответы)
- Часть тела ответа
- Указывают, почему генерация остановилась нормально
- Ответ содержит действительный контент
Ошибки (неудачные запросы)
- HTTP-коды состояния 4xx или 5xx
- Указывают на сбои обработки запросов
- Ответ содержит сведения об ошибке
Особенности потоковой передачи
При использовании потоковой передачи stop_reason
:
null
в начальном событииmessage_start
- Предоставляется в событии
message_delta
- Не равен null во всех других событиях
Общие шаблоны
Обработка рабочих процессов с использованием инструментов
Обеспечение полных ответов
Правильно обрабатывая значения stop_reason
, вы можете создавать более надежные приложения, которые корректно обрабатывают различные сценарии ответов и обеспечивают лучший пользовательский опыт.