1.2 KiB
1.2 KiB
Phase 3: Error Handling
Objective: Handle refusals, token limits, and validation errors
Key Error Scenarios
1. Safety Refusals (stop_reason: "refusal")
if response.stop_reason == "refusal":
logger.warning(f"Request refused: {input_text}")
# Don't retry - respect safety boundaries
return None # or raise exception
2. Token Limit Reached (stop_reason: "max_tokens")
if response.stop_reason == "max_tokens":
# Retry with higher limit
return extract_with_higher_limit(text, max_tokens * 1.5)
3. Schema Validation Errors (SDK raises exception)
from pydantic import ValidationError
try:
result = response.parsed_output
except ValidationError as e:
logger.error(f"Schema validation failed: {e}")
# Should be rare - indicates schema mismatch
raise
4. API Errors (400 - schema too complex)
from anthropic import BadRequestError
try:
response = client.beta.messages.parse(...)
except BadRequestError as e:
if "too complex" in str(e).lower():
# Simplify schema
logger.error("Schema too complex, simplifying...")
raise
Output
Robust error handling for production deployments.