Skip to main content
Return structured data from an agent by passing an output_schema.
1

Create the agent

agent_structured.py
import asyncio
from pydantic import BaseModel, Field
from definable.agent import Agent

class MovieReview(BaseModel):
    title: str = Field(description="Movie title")
    rating: float = Field(description="Rating out of 10")
    summary: str = Field(description="Brief summary")
    pros: list[str] = Field(description="Positive aspects")
    cons: list[str] = Field(description="Negative aspects")

agent = Agent(
    model="gpt-4o",
    instructions="You are a movie critic. Provide structured reviews.",
)

async def main():
    output = await agent.arun(
        "Review the movie Inception",
        output_schema=MovieReview,
    )
    review = output.parsed  # MovieReview instance
    print(f"{review.title}: {review.rating}/10")
    print(f"Summary: {review.summary}")
    for pro in review.pros:
        print(f"  + {pro}")
    for con in review.cons:
        print(f"  - {con}")

asyncio.run(main())
2

Install dependencies

pip install definable
3

Export your API key

export OPENAI_API_KEY=sk-***
4

Run

python agent_structured.py
The agent returns a validated MovieReview Pydantic model.
Use output_schema=, not response_model=. The response_model parameter does not exist.