# OpenAI Agent SDKの便利で実践的な使い方
🌍 個人情報を含む会話にはセキュリティが必要です!
EncryptedSessionとAdvancedSQLiteSessionで、PIIの保護と会話のブランチ分岐を実現しましょう。
📌 タイトル:Sessions – Encrypted / Advanced SQLite
🔗 URL:
🧩 概要
EncryptedSessionは会話履歴を暗号化して保存し、TTL(有効期限)で自動削除する機能を提供します。個人情報を含むチャットに最適です。AdvancedSQLiteSessionは会話のブランチ分岐(`create_branch_from_turn`)やトークン使用量の記録(`store_run_usage`)を提供し、実験的な会話管理や分析に活用できます。
🛠 使い方
`EncryptedSession` は他のセッションをラップする実装なので、`underlying_session` に実体となるセッション(例:`SQLAlchemySession.from_url("user_12345", url="sqlite+aiosqlite:///conversations.db", create_tables=True)`)を渡します。`EncryptedSession(session_id="user_12345", underlying_session=underlying_session, encryption_key="your-secret-key", ttl=600)` で暗号化セッションを作成します。`ttl=600` は10分で自動削除される設定です。`Agent(name="medical_assistant", instructions="医療相談に丁寧に回答してください")` でエージェントを作り、`await "田中太郎、生年月日1990年1月1日、症状は頭痛です", session=session)` のように個人情報を含む会話を安全に処理できます。
`AdvancedSQLiteSession(session_id="experiment_001", db_path="./advanced_sessions.db", create_tables=True)` でセッションを作成し(`create_tables` の既定値は `False` です)、`await "AIの未来について議論しましょう", session=session)` と `await "楽観的な視点を教えて", session=session)` で会話を進めます。`branch_id = await session.create_branch_from_turn(2, branch_name="pessimistic")` で2ターン目から会話を分岐し(戻り値はブランチIDです)、`await session.switch_to_branch(branch_id)` で切り替えてから `await "悲観的な視点を教えて", session=session)` で別の方向に展開できます。`await でトークン使用量を記録し、`await session.get_session_usage()` で `requests`・`input_tokens`・`output_tokens`・`total_tokens`・`total_turns` を確認できます(ターン単位は `await session.get_turn_usage(user_turn_number)`)。
🏗 実践的な使い方
EncryptedSessionは、医療相談、法律相談、金融サービスなど、個人情報(PII)を含む会話で必須です。暗号化キーは環境変数やSecret Managerで管理し、コードにハードコードしないでください。
TTLの設定は規制要件に合わせます。例えば、医療相談では10分、カスタマーサポートでは24時間、法律相談では7日間など、業務に応じた有効期限を設定できます。TTL経過後はデータが自動削除されるため、データ保持規制への準拠が容易になります。
AdvancedSQLiteSessionの`create_branch_from_turn`は、「もしこう聞いたら?」という実験的な会話分岐に最適です。プロンプトエンジニアリングの検証や、A/Bテスト的な会話比較に使えます。元のセッションは変更されないため、安全に実験できます。
`store_run_usage`によるトークン使用量の記録は、コスト分析や利用傾向の把握に役立ちます。ユーザーごと、機能ごとのトークン消費を可視化し、最適化の判断材料にできます。
💡 ユースケース
🏥 医療相談チャットのPII保護(TTL: 10分)
⚖️ 法律相談の機密会話暗号化(TTL: 7日)
🔬 プロンプトエンジニアリングの会話ブランチ比較
📊 ユーザーごとのトークン使用量分析とコスト最適化
⚠️ 注意点
- 暗号化キーを紛失するとセッションデータは復元できません。キー管理を厳格に行ってください
- TTLは厳密なタイミングでの削除を保証するものではありません。クリティカルな要件では追加のデータ削除ジョブを検討してください
- AdvancedSQLiteSessionはSQLiteベースのため、大規模な本番環境には向きません。開発・分析用途で使用してください
- ブランチを大量に作成するとストレージが肥大化します。不要なブランチは定期的に削除してください
✨ セキュリティと実験性を兼ね備えたセッション管理で、規制準拠と開発効率の両立が可能です!
#
OpenAIAgentSDK# #
AIAgent#