Skip to main content
Learn how to use Guardrails with OpenAI models including GPT-4, GPT-3.5-turbo, and more.

Prerequisites

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

Basic usage

from guardrails import Guard

guard = Guard()

result = guard(
    messages=[{"role": "user", "content": "How many moons does Jupiter have?"}],
    model="gpt-4o",
)

print(result.validated_output)

Streaming

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

guard = Guard()

stream_chunk_generator = guard(
    messages=[{"role": "user", "content": "How many moons does Jupiter have?"}],
    model="gpt-4o",
    stream=True,
)

for chunk in stream_chunk_generator:
    print(chunk.validated_output)

Tools/Function calling

Use OpenAI’s function calling with Guardrails for structured data:
from pydantic import BaseModel
from typing import List
from guardrails import Guard

class Fruit(BaseModel):
    name: str
    color: str

class Basket(BaseModel):
    fruits: List[Fruit]

guard = Guard.for_pydantic(Basket)

result = guard(
    messages=[{"role": "user", "content": "Generate a basket of 5 fruits"}],
    model="gpt-4o",
    tools=guard.json_function_calling_tool([]),
    tool_choice="required",
)

print(result.validated_output)

Using validators

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

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

result = guard(
    messages=[{"role": "user", "content": "Tell me a story"}],
    model="gpt-3.5-turbo",
)

print(result.validated_output)

Supported models

Guardrails supports all OpenAI models including:
  • gpt-4o
  • gpt-4-turbo
  • gpt-4
  • gpt-3.5-turbo
  • gpt-3.5-turbo-instruct

Error handling

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

guard = Guard()

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