Lmstudio Structured Output
Request a MovieScript with JSON Schema and validate the model response locally.
Structured output support depends on the model loaded in LM Studio. The request schema and local Pydantic validation do not guarantee a valid model response.
"""
Lmstudio Structured Output
==========================
Cookbook example for `lmstudio/structured_output.py`.
"""
from typing import List
from agno.agent import Agent
from agno.models.lmstudio import LMStudio
from agno.run.agent import RunOutput
from pydantic import BaseModel, Field
from rich.pretty import pprint # noqa
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
class MovieScript(BaseModel):
name: str = Field(..., description="Give a name to this movie")
setting: str = Field(
..., description="Provide a nice setting for a blockbuster movie."
)
ending: str = Field(
...,
description="Ending of the movie. If not available, provide a happy ending.",
)
genre: str = Field(
...,
description="Genre of the movie. If not available, select action, thriller or romantic comedy.",
)
characters: List[str] = Field(..., description="Name of characters for this movie.")
storyline: str = Field(
..., description="3 sentence storyline for the movie. Make it exciting!"
)
# Agent that returns a structured output
structured_output_agent = Agent(
model=LMStudio(id="qwen2.5-7b-instruct-1m"),
description="You write movie scripts.",
output_schema=MovieScript,
)
# Run the agent synchronously
structured_output_response: RunOutput = structured_output_agent.run("New York")
pprint(structured_output_response.content)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
passoutput_schema describes the expected type. If parsing or validation fails, result.content can remain a string. Before accessing schema fields in a run result, use isinstance(result.content, YourSchema), replacing YourSchema with the class you passed as output_schema.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openaiPrepare LM Studio
Load qwen2.5-7b-instruct-1m in LM Studio and start its local server at http://127.0.0.1:1234/v1.
Run the example
Save the code above as structured_output.py, then run:
python structured_output.pyFull source: cookbook/90_models/lmstudio/structured_output.py