Agent with Structured Output
Get typed Pydantic responses instead of free-form text.
Use output_schema to get structured, typed responses you can trust. The agent returns a Pydantic model instead of free-form text.
Create a Python file
1from typing import List, Optional23from kern.agent import Agent4from kern.models.openai import OpenAIResponses5from kern.tools.yfinance import YFinanceTools6from pydantic import BaseModel, Field789class StockAnalysis(BaseModel):10 ticker: str = Field(..., description="Stock ticker symbol")11 company_name: str = Field(..., description="Full company name")12 current_price: float = Field(..., description="Current price in USD")13 pe_ratio: Optional[float] = Field(None, description="P/E ratio")14 summary: str = Field(..., description="One-line summary")15 key_drivers: List[str] = Field(..., description="2-3 key growth drivers")16 key_risks: List[str] = Field(..., description="2-3 key risks")171819agent = Agent(20 model=OpenAIResponses(id="gpt-5.2"),21 tools=[YFinanceTools()],22 output_schema=StockAnalysis,23)2425response = agent.run("Analyze NVIDIA stock")2627# Access typed data directly28analysis: StockAnalysis = response.content29print(f"{analysis.company_name} ({analysis.ticker})")30print(f"Price: ${analysis.current_price}")31print(f"P/E Ratio: {analysis.pe_ratio or 'N/A'}")32print(f"Summary: {analysis.summary}")33print("Key Drivers:")34for driver in analysis.key_drivers:35 print(f" - {driver}")36print("Key Risks:")37for risk in analysis.key_risks:38 print(f" - {risk}")Set up your virtual environment
1uv venv --python 3.122source .venv/bin/activate1uv venv --python 3.122.venv\Scripts\activateInstall dependencies
1uv pip install -U kern-ai openai yfinanceExport your OpenAI API key
1export OPENAI_API_KEY="your_openai_api_key_here"1$Env:OPENAI_API_KEY="your_openai_api_key_here"Run Agent
1python structured_output.py