Skip to content

LLM - Structured Output

Install packages

1
2
3
4
!uv pip install -q \
    litellm==1.78.5 \
    python-dotenv==1.1.1 \
    pydantic==2.12.3

Import packages

1
2
3
4
5
import litellm
from dotenv import load_dotenv
from pydantic import BaseModel

load_dotenv()
True

Define output structure

1
2
3
4
class CalendarEvent(BaseModel):
    name: str
    date: str
    participants: list[str]

Define messages

  • System message, defined once
  • User messages
1
2
3
4
5
6
7
messages = [
    {"role": "system", "content": "Extract the event information."},
    {
        "role": "user",
        "content": "Alice and Bob are going to a science fair on friday.",
    },
]

Get chat completion

1
2
3
4
5
6
7
8
completion = litellm.completion(
    model="gemini/gemini-2.0-flash",
    messages=messages,
    response_format=CalendarEvent,
)

response = completion.choices[0].message.content
print(response)
{

  "name": "science fair",

  "date": "friday",

  "participants": ["Alice", "Bob"]

}