# OpenAI Agent SDKの便利で実践的な使い方
🌍 LLM の出力を「文字列のまま祈る」のではなく、型安全な構造化データとして受け取りましょう。output_type を使えば、壊れた JSON に悩まされる日々とはお別れです。
output_type に Pydantic モデル・dataclass・TypedDict を指定するだけで、エージェントの出力が自動的にバリデーション済みの構造化データになります。
📌 タイトル:Agents -- Output types
🔗 URL:
🧩 概要
Agent の `output_type` パラメータを設定すると、LLM の出力が Structured Outputs として強制されます。Pydantic BaseModel、dataclass、TypedDict のいずれかを指定でき、出力は自動的にパースされバリデーションされます。これにより、下流のコードが安全に構造化データを扱えるようになります。`output_type` を設定すると、エージェントのファイナル出力はテキストではなく指定した型のオブジェクトになります。
🛠 使い方
`BaseModel` を継承した `CalendarEvent` クラスに `name: str`, `date: str`, `participants: list[str]` フィールドを定義し、`Agent` の `output_type=CalendarEvent` に指定します。` ...)` の ` が `CalendarEvent` 型として返され、` や `event.participants` で型安全にアクセスできます。
🏗 実践的な使い方
**メールからカレンダーイベントを抽出して API 登録**
構造化出力をそのまま外部 API に渡すパイプラインです。
` email_body)` で抽出した ` を `CalendarEvent` 型として受け取り、`calendar_api.create_event(title= date= attendees=event.participants)` でそのまま外部 API に渡します。
**Enum 出力による分岐オーケストレーション**
分類結果を enum で返し、コードで確実に分岐させるパターンです。
`TicketCategory(str, Enum)` で `billing`, `technical`, `general` を定義し、`Classification(BaseModel)` に `category: TicketCategory` と `confidence: float` を持たせます。`Agent` の `output_type=Classification` を設定して分類を実行し、` を `match` 文で分岐して `handoff_to_billing`, `handoff_to_engineering`, `handoff_to_general` にルーティングします。
**ビジネスクリティカルな処理での型保証**
「壊れた JSON は絶対に許容できない」業務で、Structured Outputs が安全弁として機能します。
`InvoiceData(BaseModel)` に `invoice_number: str`, `amount: float`, `currency: str`, `due_date: str`, `line_items: list[dict[str, str | float]]` を定義し、`Agent` の `output_type=InvoiceData` に指定することで、請求書データの構造化抽出を型安全に保証します。
💡 ユースケース
📧 メールから CalendarEvent(name, date, participants) を抽出し、カレンダー API に自動登録
🏷 サポートチケットを Enum 分類し、category に応じてコードで確実にルーティング
💰 請求書・契約書の構造化抽出で「壊れた JSON が許されない」業務処理を型安全に
📊 アンケート自由記述を構造化データに変換し、集計パイプラインに直接投入
⚠️ 注意点
- output_type を指定すると、エージェントの最終出力は必ずその型になります。通常のテキスト応答は返せなくなるため、テキスト応答が必要な場合は output_type を設定しないでください。
- 複雑すぎるネスト構造は LLM の出力精度を下げる可能性があります。できるだけフラットな構造を心がけましょう。
- Optional フィールドを適切に使い、LLM が情報を見つけられなかった場合の None を許容する設計にしましょう。
✨ output_type を活用すれば、LLM の出力をそのままビジネスロジックに組み込めます。「パースして祈る」から「型で保証する」へ、一歩進んだエージェント開発を始めましょう!
#
OpenAIAgentSDK# #
AIAgent#