登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
参加 May 2026
284 フォロー中    432 ファン
# OpenAI Agent SDKの便利で実践的な使い方 🌍 無制限に膨らむ履歴はコストとレイテンシの敵です! 履歴の制御と圧縮機能を使って、コンテキストサイズを最適に保ちましょう。 📌 タイトル:Sessions – Control history / Compaction 🔗 URL: 🧩 概要 長期間のセッションでは会話履歴が肥大化し、トークンコストの増大やレイテンシの悪化を招きます。SessionSettingsの`limit`で直近N件に制限したり、`session_input_callback`でカスタムのトリミング・並び替えを行ったりできます。OpenAIResponsesCompactionSessionを使えば自動圧縮も可能で、手動の`run_compaction()`でアイドル時に最適化することもできます。 🛠 使い方 最もシンプルな方法は `SessionSettings(limit=50)` です。`Agent(name="assistant", instructions="丁寧に回答してください")` でエージェントを作り、`SQLiteSession("user_12345")` でセッションを生成したうえで、`await "最新の話題は?", session=session, run_config=RunConfig(session_settings=SessionSettings(limit=50)))` のように `RunConfig` の `session_settings` に渡せば、取得する履歴が直近50件に制限されます。 より高度な制御には `session_input_callback` を使います。例えば `custom_history_filter(history, new_input)` 関数を定義し、`h.role == "system"` のシステムメッセージは常に保持、通常のやり取りは `history[-20:]` で直近20件に絞り、`return filtered + new_input`(`new_input` はリストです)で新しい入力と合わせて返すロジックが書けます。`await "...", session=session, run_config=RunConfig(session_input_callback=custom_history_filter))` のように設定します。 自動圧縮には `OpenAIResponsesCompactionSession` を使います。`underlying = SQLiteSession("user_12345")` を用意し、`OpenAIResponsesCompactionSession(session_id="user_12345", underlying_session=underlying)` でセッションを作り、`await "これまでの議論をまとめて", session=session)` を実行すると、長い会話が自動的に要約・圧縮されます。 手動で圧縮を実行する場合は、`OpenAIResponsesCompactionSession(session_id="user_12345", underlying_session=underlying, should_trigger_compaction=lambda _: False)` で自動圧縮を無効化したセッションを作り、`await "force": True})` を呼び出します。ユーザーのアイドル時間に実行すれば、次回リクエスト時のレイテンシが改善されます。 🏗 実践的な使い方 `SessionSettings(limit=50)`は最もシンプルなコスト制御です。セッションから取得する履歴が直近50件に絞られ、それより古い履歴はモデルへの入力に含まれません(既定の`limit=None`では全件取得します)。カスタマーサポートのように直近のやり取りが重要なケースに適しています。 `session_input_callback`は、より高度な制御が必要な場合に使います。例えば、システムメッセージやVIP顧客のフラグは常に保持しつつ、通常のやり取りは直近20件に絞るといったロジックが書けます。ストレージ自体は変更せず、LLMに送る入力だけをフィルタリングする点がポイントです。 `OpenAIResponsesCompactionSession`は自動圧縮を行います。長い会話を要約して短い表現に置き換えることで、コンテキスト窓を効率的に使います。 Streaming重視のアプリケーションでは、ユーザーのアイドル時間に`run_compaction()`を手動実行するパターンが有効です。次のリクエスト時には圧縮済みの履歴から開始できるため、初回トークンまでのレイテンシが改善されます。 💡 ユースケース 💰 limit設定によるトークンコストの上限管理 🔧 カスタムコールバックで重要なコンテキストだけを選択的に保持 📦 自動圧縮による長時間セッションのコンテキスト最適化 ⚡ アイドル時のcompactionによるStreaming-firstレイテンシ改善 ⚠️ 注意点 - `limit`は取得件数の制限であり、セッションに保存された履歴自体は削除されません。ただしlimitを超えた情報はモデルに渡らないため、値は慎重に設定してください - `session_input_callback`はリクエストごとに呼ばれるため、重い処理は避けてください - 自動圧縮は要約精度に依存します。正確な数値や固有名詞が失われる可能性があります - `run_compaction()`はAPIコールを伴うため、頻繁に呼ぶとコストが増加します ✨ 適切な履歴制御により、長時間セッションでもコストとレイテンシを最適に保てます! #OpenAIAgentSDK# #AIAgent#
もっと見る