AI・機械学習
上級
PydanticAI(パイダンティックエーアイ)
Pydanticチームが開発した型安全なAIエージェントフレームワーク。Pythonの型システムとPydanticバリデーションを活かし、構造化出力・依存性注入・FastAPIライクなDIコンテナでプロダクション品質のエージェントを構築できる。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
LLM
エージェント
Pydantic
型安全
依存性注入
Python
PydanticAI とは
PydanticAIはPydantic(Pythonの最も広く使われるデータバリデーションライブラリ)の開発チームが2024年12月に公開したAIエージェントフレームワークです。「FastAPIがWeb APIにしたことをAIエージェントにする」というビジョンのもと設計されています。
3つの設計柱
- 型安全性: Python型アノテーションとPydanticモデルで入出力を厳密に検証
- 依存性注入: FastAPIライクなDIコンテナでテスタビリティを確保
- 構造化出力: Pydanticモデルで定義した型安全な構造化レスポンス
基本エージェント
from pydantic_ai import Agent
from pydantic import BaseModel
class CityInfo(BaseModel):
city: str
country: str
population: int
description: str
agent = Agent(
"openai:gpt-4o-mini",
result_type=CityInfo,
system_prompt="都市情報を構造化して返す専門家です。"
)
result = agent.run_sync("東京について教えて")
print(result.data.city) # 型安全にアクセス
print(result.data.population) # IntとしてValidation済
依存性注入
PydanticAIの最大の特徴が 依存性注入(DI) です。外部サービスをコンテキスト経由で注入できます。
from pydantic_ai import Agent, RunContext
from dataclasses import dataclass
@dataclass
class Deps:
db_connection: DatabaseConnection
api_key: str
agent = Agent("anthropic:claude-3-5-sonnet-latest", deps_type=Deps)
@agent.tool
async def search_database(ctx: RunContext[Deps], query: str) -> list:
"""データベースを検索する"""
return await ctx.deps.db_connection.search(query)
@agent.system_prompt
async def dynamic_prompt(ctx: RunContext[Deps]) -> str:
count = await ctx.deps.db_connection.count()
return f"DBには{count}件のレコードがあります。"
# テスト時はモックDepsを注入
result = await agent.run("最新情報を検索して", deps=Deps(db=mock_db, api_key="test"))
マルチモデル対応
agent = Agent("openai:gpt-4o") # OpenAI
agent = Agent("anthropic:claude-3-5-sonnet-latest") # Anthropic
agent = Agent("google-gla:gemini-1.5-flash") # Google
agent = Agent("ollama:llama3.2") # ローカル
ツール定義
@agent.tool_plain # ctx不要の簡易ツール
def get_current_time() -> str:
"""現在時刻を返す"""
from datetime import datetime
return datetime.now().isoformat()
@agent.tool # ctx付き(DIアクセス可)
async def fetch_price(ctx: RunContext[Deps], product_id: str) -> float:
"""商品価格を取得する"""
return await ctx.deps.api.get_price(product_id)
FastAPIとの統合
from fastapi import FastAPI
from pydantic_ai import Agent
app = FastAPI()
agent = Agent("openai:gpt-4o-mini")
@app.post("/chat")
async def chat(message: str):
result = await agent.run(message)
return {"response": result.data}
Logfire統合
PydanticAI公式のObservabilityツール Logfire と統合することで、エージェントのトレース・モニタリングが設定できます。
import logfire
logfire.configure()
logfire.instrument_pydantic_ai()
まとめ
PydanticAIは型安全性・テスタビリティ・依存性注入という本番品質の要件を最初から設計に組み込んだエージェントフレームワークです。FastAPIになじみのあるPython開発者にとって直感的であり、プロダクション利用を見据えたエージェント実装の有力選択肢です。