Structured Output (Interactions)

Parse GeminiInteractions responses into a Pydantic model with output_schema.

Code

from agno.agent import Agent
from agno.models.google import GeminiInteractions
from pydantic import BaseModel, Field


class MovieReview(BaseModel):
    title: str = Field(description="The movie title")
    year: int = Field(description="Release year")
    genre: str = Field(description="Primary genre")
    rating: float = Field(description="Rating out of 10")
    summary: str = Field(description="Brief review summary")


agent = Agent(
    model=GeminiInteractions(id="gemini-3.5-flash"),
    output_schema=MovieReview,
    markdown=True,
)

if __name__ == "__main__":
    response = agent.run("Write a review of The Matrix (1999)")

    if response.content:
        review = response.content
        if isinstance(review, MovieReview):
            print(f"Title: {review.title}")
            print(f"Year: {review.year}")
            print(f"Genre: {review.genre}")
            print(f"Rating: {review.rating}/10")
            print(f"Summary: {review.summary}")
        else:
            print(f"Raw response: {review}")

Usage

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Set your API key

export GOOGLE_API_KEY=xxx

Install dependencies

uv pip install -U "google-genai>=2.3" agno

Run Agent

Save the code above as structured_output.py, then run:

python structured_output.py