Skip to content

PydanticAI

PydanticAI treats LLMs as typed functions. It works against ai& through its OpenAI-compatible provider.

Terminal window
pip install pydantic-ai
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider
model = OpenAIChatModel(
"google/gemma-4-31b-it",
provider=OpenAIProvider(
base_url="https://api.aiand.com/v1",
api_key="sk-your-api-key",
),
)
agent = Agent(model, system_prompt="Be concise.")
result = await agent.run("What is the capital of France?")
print(result.output)
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 sent to ai& as the parameters of a strict final_result tool, and the tool call’s arguments are parsed back into the Pydantic model.

agent = Agent(model)
@agent.tool_plain
def 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)