output_schema.py
"""
Output Schema
=============================
Use `output_schema` to return structured data that matches a Pydantic model.
"""
from typing import List
from agno.agent import Agent, RunOutput # noqa
from agno.models.openai import OpenAIResponses
from pydantic import BaseModel, Field
from rich.pretty import pprint # noqa
class BreakingNewsSummary(BaseModel):
topic: str = Field(..., description="The topic or region being summarized")
summary: str = Field(
..., description="A concise summary of the latest developments"
)
key_updates: List[str] = Field(
..., description="Important updates or headlines related to the topic"
)
overall_sentiment: str = Field(
..., description="Overall tone of the news coverage, such as positive or mixed"
)
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
description="You summarize current events into clean structured outputs.",
output_schema=BreakingNewsSummary,
)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
run: RunOutput = agent.run("Latest news from France?")
pprint(run.content)
Run the Example
1
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activate
uv venv --python 3.12
.venv\Scripts\activate
2
Install dependencies
uv pip install -U agno openai
3
Export your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"
$Env:OPENAI_API_KEY="your_openai_api_key_here"
4
Run the example
Save the code above as
output_schema.py, then run:python output_schema.py