Implementing CAI in Applications
Adding critique-revise loops to production AI pipelines.
CAI as an Application-Level Pattern
Constitutional AI was originally a training-time technique, but the same critique-revise loop can be implemented at inference time in your applications. You don't need to train your own model — you use API calls to implement the loop.
Application-level CAI is useful for high-stakes output scenarios where you want a safety net beyond the model's built-in guardrails.
The Three Functions You Need
A CAI implementation needs three composable functions: generate(), critique(), and revise(). Each is a separate LLM call. You wire them together in your application logic.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
MODEL = 'claude-opus-4-5'
def generate(user_message):
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
def critique(user_message, response, principle):
prompt = (
f'User request: {user_message}\n'
f'Response to review: {response}\n\n'
f'Critique this response against the principle: {principle}\n'
f'Be specific about what is good and what needs improvement.'
)
r = client.messages.create(
model=MODEL, max_tokens=256,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
def revise(user_message, critique_text):
prompt = (
f'Original request: {user_message}\n'
f'Critique: {critique_text}\n\n'
f'Write an improved response that addresses the critique:'
)
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].textAll lessons in this course
- CAI Principles and Critique Prompts
- Self-Critique and Revision Patterns
- Harmlessness vs Helpfulness Tension
- Implementing CAI in Applications