Files
2025-11-29 18:16:46 +08:00

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.