Structured Output (Interactions)

Code

1from kern.agent import Agent
2from kern.models.google import GeminiInteractions
3from pydantic import BaseModel, Field
4
5
6class MovieReview(BaseModel):
7 title: str = Field(description="The movie title")
8 year: int = Field(description="Release year")
9 genre: str = Field(description="Primary genre")
10 rating: float = Field(description="Rating out of 10")
11 summary: str = Field(description="Brief review summary")
12
13
14agent = Agent(
15 model=GeminiInteractions(id="gemini-3-flash-preview"),
16 output_schema=MovieReview,
17 markdown=True,
18)
19
20if __name__ == "__main__":
21 response = agent.run("Write a review of The Matrix (1999)")
22
23 if response.content:
24 review = response.content
25 if isinstance(review, MovieReview):
26 print(f"Title: {review.title}")
27 print(f"Year: {review.year}")
28 print(f"Genre: {review.genre}")
29 print(f"Rating: {review.rating}/10")
30 print(f"Summary: {review.summary}")
31 else:
32 print(f"Raw response: {review}")

Usage

Set up your virtual environment

1uv venv --python 3.12
2source .venv/bin/activate
1uv venv --python 3.12
2.venv\Scripts\activate

Set your API key

1export GOOGLE_API_KEY=xxx

Install dependencies

1uv pip install -U "google-genai>=2.0" kern-ai

Run Agent

1python cookbook/90_models/google/gemini_interactions/structured_output.py