Skip to main content
Learn how to use Guardrails with Anthropic’s Claude models.

Prerequisites

Set your Anthropic API key:
export ANTHROPIC_API_KEY="your-api-key"
Or in Python:
import os
os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

Basic usage

from guardrails import Guard
import os

guard = Guard()

os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

result = guard(
    messages=[{"role": "user", "content": "How many moons does Jupiter have?"}],
    model="claude-3-opus-20240229"
)

print(result.validated_output)

Streaming

Stream responses from Claude with real-time validation:
from guardrails import Guard
import os

os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

guard = Guard()

stream_chunk_generator = guard(
    messages=[{"role": "user", "content": "How many moons does Jupiter have?"}],
    model="claude-3-opus-20240229",
    stream=True,
)

for chunk in stream_chunk_generator:
    print(chunk.validated_output)

Using validators

Add validators to ensure output quality:
from guardrails import Guard
from guardrails.hub import ProfanityFree
import os

os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

guard = Guard().use(ProfanityFree())

result = guard(
    messages=[{"role": "user", "content": "Tell me a story"}],
    model="claude-3-opus-20240229",
)

print(result.validated_output)

Supported models

Guardrails supports all Anthropic Claude models including:
  • claude-3-opus-20240229
  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307
  • claude-2.1
  • claude-2.0

Structured data with Claude

Generate structured data using Claude:
from pydantic import BaseModel
from typing import List
from guardrails import Guard
import os

os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

class Pet(BaseModel):
    name: str
    species: str
    age: int

guard = Guard.for_pydantic(Pet)

result = guard(
    messages=[{"role": "user", "content": "Generate information about a pet"}],
    model="claude-3-opus-20240229",
)

print(result.validated_output)

Error handling

Guardrails automatically handles common Anthropic errors with retries and exponential backoff:
from guardrails import Guard
import os

os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

guard = Guard()

try:
    result = guard(
        messages=[{"role": "user", "content": "Your prompt"}],
        model="claude-3-opus-20240229",
    )
except Exception as e:
    print(f"Error: {e}")