Gemini by Example
Text

Structured output

This example shows how to generate structured data using a pydantic model to represent Cats with name, colour, and special ability.

Import the Gemini API and pydantic
from google import genai
from pydantic import BaseModel
import os

Define a Pydantic model for a Cat
class Cat(BaseModel):
    name: str
    colour: str
    special_ability: str

Initialize the Gemini client with your API key
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))

Define the prompt. Note: It asks for 3 cats
prompt = "Generate data for 3 cats, including their name, colour and special ability."

Call the API to generate content, specifying the response schema. Note that it expects a `list` and not a `typing.List` object. For some reason Gemini models are finicky about that.
response = client.models.generate_content(
    model="gemini-2.0-flash-lite",
    contents=prompt,
    config={
        "response_mime_type": "application/json",
        "response_schema": list[Cat],
    },
)

Parse the json response to a list of Cat objects
my_cats: list[Cat] = response.parsed

Print the generated cat data
for cat in my_cats:
    print(
        f"Name: {cat.name}, Colour: {cat.colour}, Special Ability: {cat.special_ability}"
    )

Running the Example

First, install the Google Generative AI library and pydantic
$ pip install google-genai pydantic
Then run the program with Python
$ python structured_cats.py
Name: Aria, Colour: tortoiseshell, Special Ability: Can teleport short distances
Name: Blupus, Colour: ginger, Special Ability: Understands human speech
Name: Moonshine, Colour: black and white, Special Ability: Invisible at night

Further Information