Manejo de razones de detención
Cuando realizas una solicitud a la API de Messages, la respuesta de Claude incluye un campo stop_reason
que indica por qué el modelo dejó de generar su respuesta. Entender estos valores es crucial para construir aplicaciones robustas que manejen diferentes tipos de respuestas de manera apropiada.
Para detalles sobre stop_reason
en la respuesta de la API, consulta la referencia de la API de Messages.
¿Qué es stop_reason?
El campo stop_reason
es parte de cada respuesta exitosa de la API de Messages. A diferencia de los errores, que indican fallos en el procesamiento de tu solicitud, stop_reason
te dice por qué Claude completó exitosamente la generación de su respuesta.
Valores de stop reason
end_turn
La razón de detención más común. Indica que Claude terminó su respuesta de forma natural.
max_tokens
Claude se detuvo porque alcanzó el límite de max_tokens
especificado en tu solicitud.
stop_sequence
Claude encontró una de tus secuencias de detención personalizadas.
tool_use
Claude está llamando a una herramienta y espera que la ejecutes.
pause_turn
Se usa con herramientas de servidor como la búsqueda web cuando Claude necesita pausar una operación de larga duración.
Mejores prácticas para manejar razones de detención
1. Siempre verifica stop_reason
Haz un hábito de verificar el stop_reason
en tu lógica de manejo de respuestas:
2. Maneja max_tokens con elegancia
Cuando una respuesta se trunca debido a límites de tokens:
3. Implementa lógica de reintento para pause_turn
Para herramientas de servidor que pueden pausarse:
Razones de detención vs. errores
Es importante distinguir entre los valores de stop_reason
y los errores reales:
Razones de detención (respuestas exitosas)
- Parte del cuerpo de la respuesta
- Indican por qué la generación se detuvo normalmente
- La respuesta contiene contenido válido
Errores (solicitudes fallidas)
- Códigos de estado HTTP 4xx o 5xx
- Indican fallos en el procesamiento de la solicitud
- La respuesta contiene detalles del error
Consideraciones de streaming
Cuando se usa streaming, stop_reason
es:
null
en el evento inicialmessage_start
- Proporcionado en el evento
message_delta
- No nulo en todos los demás eventos
Patrones comunes
Manejo de flujos de trabajo de herramientas
Asegurar respuestas completas
Al manejar adecuadamente los valores de stop_reason
, puedes construir aplicaciones más robustas que manejen con elegancia diferentes escenarios de respuesta y proporcionen mejores experiencias de usuario.