# OpenAI Agent SDKの便利で実践的な使い方
🌍 会話履歴の管理を手動でやるのはもう終わりです!
Sessionを使えば、履歴の自動管理、ユーザーごとの分離、エージェント間の共有が簡単に実現できます。
📌 タイトル:Sessions – Overview
🔗 URL:
🧩 概要
OpenAI Agent SDKのSession機能は、会話履歴の自動管理を提供します。これまで手動で`to_input_list()`を呼んで履歴を構築していた作業が不要になります。セッションIDによる整理されたユーザー/スレッド別履歴管理、異なるエージェント間でのセッション共有、`pop_item()`による直前の質問のやり直しなど、実践的な機能が揃っています。
🛠 使い方
まず `Agent`, `Runner`, `SQLiteSession` をインポートし、`Agent(name="assistant", instructions="丁寧に回答してください")` でエージェントを作成します。`SQLiteSession("conversation_123")` でセッションを生成し(`db_path` を省略するとインメモリになります)、`await "Pythonについて教えて", session=session)` で最初の質問を実行、続けて `await "もっと詳しく", session=session)` で追加質問すると、履歴が自動的に引き継がれます。`await session.pop_item()` で最後のやり取りを削除し、`await "別の角度から説明して", session=session)` でやり直しができます。
`db_path` を指定すれば永続化も簡単です。`SQLiteSession(session_id="user_12345/thread_abc", db_path="sessions.db")` でユーザー/スレッド別セッション、`SQLiteSession(session_id="ticket_456", db_path="sessions.db")` でチケット別セッションを作成できます。異なるエージェント間での共有も可能で、`shared_session = SQLiteSession(session_id="user_12345/current")` を作り、`await "請求について質問があります", session=shared_session)` の後に `await "詳細を教えてください", session=shared_session)` を呼べば、サポートから請求エージェントへ履歴を引き継いだエスカレーションが実現できます。
🏗 実践的な使い方
セッションIDの命名規則を統一することで、履歴の検索と管理が容易になります。`user_{id}/thread_{id}`のように階層的なIDを使えば、あるユーザーの全スレッドや特定のスレッドの履歴を効率的に取得できます。
`pop_item()`は「やり直し」機能の実装に最適です。ユーザーが質問を修正したい場合、直前のやり取りを削除して新しい質問で再実行できます。
異なるエージェント間でセッションを共有するパターンは、サポート→請求→技術のようなエスカレーションフローで強力です。ユーザーが同じ説明を繰り返す必要がなくなり、引き継ぎがスムーズになります。
`session`パラメータを使うことで、従来の`to_input_list()`による手動履歴管理が不要になります。これだけでもコードが大幅にシンプルになります。
💡 ユースケース
💬 チャットボットでのユーザーごとの会話履歴管理
🔄 「やり直し」ボタンによる直前の質問の修正
🤝 サポート→請求→技術のエスカレーション時の履歴共有
📋 チケットIDごとの対応履歴の記録と参照
⚠️ 注意点
- セッションIDは一意になるよう設計してください。衝突すると異なるユーザーの履歴が混ざります
- 長期間のセッションではコンテキストが肥大化します。後述のhistory制御と組み合わせてください
- セッションを共有する場合、全てのエージェントが相手の出力を理解できる前提が必要です
✨ Session機能により、会話の継続性が自動化され、マルチターン・マルチエージェントの会話がシンプルに実装できます!
#
OpenAIAgentSDK# #
AIAgent#