PydanticAI
PydanticAI treats LLMs as typed functions. It works against ai& through its OpenAI-compatible provider.
pip install pydantic-aifrom pydantic_ai import Agentfrom pydantic_ai.models.openai import OpenAIModelfrom pydantic_ai.providers.openai import OpenAIProvider
model = OpenAIModel( "openai/gpt-oss-120b", provider=OpenAIProvider( base_url="https://api.aiand.com/v1", api_key="sk-your-api-key", ),)A typed agent
Section titled “A typed agent”agent = Agent(model, system_prompt="Be concise.")result = await agent.run("What is the capital of France?")print(result.output)Structured outputs
Section titled “Structured outputs”from pydantic import BaseModel
class Contact(BaseModel): name: str email: str
agent = Agent(model, output_type=Contact)result = await agent.run("From: Jane Doe <jane@example.com>")print(result.output.name, result.output.email)The schema is shipped to ai& as a strict JSON Schema and the output is parsed back into the Pydantic model.
@agent.tool_plaindef get_weather(city: str) -> str: """Get current weather for a city.""" return f"Sunny in {city}, 22°C"
result = await agent.run("What's the weather in Tokyo?")print(result.output)