Integrating a frontier model is easy to start and easy to do badly. This is the checklist we follow when wiring Claude into a client's product.
Design the contract first
Decide the exact JSON your application needs, express it as a schema, and instruct the model to fill it. Validate every response against that schema and retry once with the validation error included - this single loop eliminates most malformed-output incidents.
Use tools for anything factual
Anything the model could get wrong from memory - prices, inventory, user data - should come from a tool call into your own APIs, not from the model's head. The model orchestrates; your systems stay the source of truth.
- System prompt: role, rules, refusal behaviour - versioned in git like code
- Temperature low for extraction, higher only for creative drafting
- Stream responses in the UI; perceived latency matters more than actual
Build the safety rails
Log prompts and responses (redact PII), cap tokens per request and per user, time out at the point where users would rather see a fallback, and keep a feature flag that can disable the AI path instantly. When a provider hiccups, your product should degrade to its non-AI behaviour, not to an error page.
Evaluate like you test
Keep a versioned set of real inputs with expected outputs and score every prompt change against it before deploying. Prompt edits are deploys - treat them with the same respect.