44---
55# セッション
66
7- Agents SDK は、複数のエージェント実行にまたがって会話履歴を自動的に保持する組み込みのセッションメモリを提供し、 ターン間で ` .to_input_list() ` を手動で扱う必要をなくします 。
7+ Agents SDK は、複数回の エージェント 実行にまたがって会話履歴を自動的に維持する、組み込みの セッション メモリを提供します。これにより、 ターン間で ` .to_input_list() ` を手動で扱う必要がなくなります 。
88
9- セッションは特定のセッションの会話履歴を保存し、明示的な手動メモリ管理なしにエージェントがコンテキストを維持できるようにします 。これは、エージェントに以前のやり取りを覚えさせたいチャットアプリケーションやマルチターンの会話を構築する際に特に有用です 。
9+ Sessions は特定の セッション の会話履歴を保存し、明示的な手動のメモリ管理を必要とせずに、エージェント がコンテキストを維持できるようにします 。これは、エージェント に過去のやり取りを覚えさせたい チャット アプリケーションや複数ターンの会話を構築する際に特に役立ちます 。
1010
1111## クイックスタート
1212
@@ -49,19 +49,19 @@ print(result.final_output) # "Approximately 39 million"
4949
5050## 仕組み
5151
52- セッションメモリを有効にすると :
52+ セッション メモリが有効な場合 :
5353
54- 1 . ** 各実行の前** : Runner はセッションの会話履歴を自動的に取得し、入力アイテムの前に付加します 。
55- 2 . ** 各実行の後** : 実行中に生成されたすべての新しいアイテム(ユーザー入力、アシスタント応答、ツール呼び出しなど)が自動的にセッションに保存されます 。
56- 3 . ** コンテキスト維持 ** : 同じセッションでの後続の各実行には完全な会話履歴が含まれ、エージェントはコンテキストを維持できます 。
54+ 1 . ** 各実行の前** : runner が セッション の会話履歴を自動的に取得し、入力アイテムの先頭に付加します 。
55+ 2 . ** 各実行の後** : 実行中に生成されたすべての新しいアイテム (ユーザー 入力、アシスタント 応答、ツール 呼び出しなど) が、自動的に セッション に保存されます 。
56+ 3 . ** コンテキストの保持 ** : 同じ セッション での各後続の実行には会話履歴の全体が含まれ、エージェント がコンテキストを維持できます 。
5757
58- これにより、実行間で ` .to_input_list() ` を手動で呼び出したり、会話状態を管理したりする必要がなくなります 。
58+ これにより、` .to_input_list() ` を手動で呼び出して、実行間の会話状態を管理する必要がなくなります 。
5959
6060## メモリ操作
6161
6262### 基本操作
6363
64- セッションは会話履歴を管理するためのいくつかの操作をサポートします :
64+ Sessions は、会話履歴を管理するための複数の操作をサポートします :
6565
6666``` python
6767from agents import SQLiteSession
@@ -86,9 +86,9 @@ print(last_item) # {"role": "assistant", "content": "Hi there!"}
8686await session.clear_session()
8787```
8888
89- ### 修正のための pop_item の使用
89+ ### 修正で pop_item を使用する
9090
91- 会話で最後のアイテムを元に戻したり変更したりしたい場合 、` pop_item ` メソッドが特に有用です :
91+ 会話の最後のアイテムを取り消したり変更したりしたい場合 、` pop_item ` メソッドが特に便利です :
9292
9393``` python
9494from agents import Agent, Runner, SQLiteSession
@@ -117,9 +117,9 @@ result = await Runner.run(
117117print (f " Agent: { result.final_output} " )
118118```
119119
120- ## セッションタイプ
120+ ## セッション 種別
121121
122- SDK はユースケースに応じていくつかのセッション実装を提供します :
122+ SDK は、さまざまな ユースケース 向けに複数の セッション 実装を提供します :
123123
124124### OpenAI Conversations API セッション
125125
@@ -157,9 +157,57 @@ result = await Runner.run(
157157print (result.final_output) # "California"
158158```
159159
160+ ### OpenAI Responses 圧縮 セッション
161+
162+ ` OpenAIResponsesCompactionSession ` を使用して、Responses API (` responses.compact ` ) で セッション 履歴を圧縮します。基盤となる セッション をラップし、` should_trigger_compaction ` に基づいて各ターン後に自動で圧縮できます。
163+
164+ #### 代表的な使い方 (自動圧縮)
165+
166+ ``` python
167+ from agents import Agent, Runner, SQLiteSession
168+ from agents.memory import OpenAIResponsesCompactionSession
169+
170+ underlying = SQLiteSession(" conversation_123" )
171+ session = OpenAIResponsesCompactionSession(
172+ session_id = " conversation_123" ,
173+ underlying_session = underlying,
174+ )
175+
176+ agent = Agent(name = " Assistant" )
177+ result = await Runner.run(agent, " Hello" , session = session)
178+ print (result.final_output)
179+ ```
180+
181+ デフォルトでは、候補しきい値に到達すると、圧縮は各ターン後に実行されます。
182+
183+ #### 自動圧縮は ストリーミング をブロックする場合があります
184+
185+ 圧縮は セッション 履歴をクリアして書き直すため、SDK は圧縮が完了するまで実行完了とみなしません。ストリーミング モードでは、圧縮が重い場合、最後の出力トークンの後でも ` run.stream_events() ` が数秒間開いたままになることがあります。
186+
187+ 低遅延の ストリーミング や高速なターン切り替えを望む場合は、自動圧縮を無効にして、ターン間 (またはアイドル時間中) に自分で ` run_compaction() ` を呼び出してください。独自の基準に基づいて、いつ圧縮を強制するかを判断できます。
188+
189+ ``` python
190+ from agents import Agent, Runner, SQLiteSession
191+ from agents.memory import OpenAIResponsesCompactionSession
192+
193+ underlying = SQLiteSession(" conversation_123" )
194+ session = OpenAIResponsesCompactionSession(
195+ session_id = " conversation_123" ,
196+ underlying_session = underlying,
197+ # Disable triggering the auto compaction
198+ should_trigger_compaction = lambda _ : False ,
199+ )
200+
201+ agent = Agent(name = " Assistant" )
202+ result = await Runner.run(agent, " Hello" , session = session)
203+
204+ # Decide when to compact (e.g., on idle, every N turns, or size thresholds).
205+ await session.run_compaction({" force" : True })
206+ ```
207+
160208### SQLite セッション
161209
162- デフォルトの軽量な SQLite を使用したセッション実装です :
210+ SQLite を使用した、 デフォルトの軽量な セッション 実装です :
163211
164212``` python
165213from agents import SQLiteSession
@@ -180,7 +228,7 @@ result = await Runner.run(
180228
181229### SQLAlchemy セッション
182230
183- あらゆる SQLAlchemy 対応データベースを使用できる本番運用向けセッションです :
231+ SQLAlchemy がサポートする任意のデータベースを使用した、本番対応の セッション です :
184232
185233``` python
186234from agents.extensions.memory import SQLAlchemySession
@@ -198,13 +246,13 @@ engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/db")
198246session = SQLAlchemySession(" user_123" , engine = engine, create_tables = True )
199247```
200248
201- 詳しくは [ SQLAlchemy セッション ] ( sqlalchemy_session.md ) をご覧ください 。
249+ 詳細なドキュメントは [ SQLAlchemy Sessions ] ( sqlalchemy_session.md ) を参照してください 。
202250
203251
204252
205253### 高度な SQLite セッション
206254
207- 会話の分岐、利用分析、構造化クエリに対応した強化版 SQLite セッションです :
255+ 会話の分岐、使用状況分析、structured queries を備えた拡張 SQLite セッション です :
208256
209257``` python
210258from agents.extensions.memory import AdvancedSQLiteSession
@@ -224,11 +272,11 @@ await session.store_run_usage(result) # Track token usage
224272await session.create_branch_from_turn(2 ) # Branch from turn 2
225273```
226274
227- 詳しくは [ 高度な SQLite セッション ] ( advanced_sqlite_session.md ) をご覧ください 。
275+ 詳細なドキュメントは [ Advanced SQLite Sessions ] ( advanced_sqlite_session.md ) を参照してください 。
228276
229- ### 暗号化セッション
277+ ### 暗号化 セッション
230278
231- あらゆるセッション実装に対する透過的な暗号化ラッパーです :
279+ 任意の セッション 実装向けの透過的な暗号化ラッパーです :
232280
233281``` python
234282from agents.extensions.memory import EncryptedSession, SQLAlchemySession
@@ -251,33 +299,33 @@ session = EncryptedSession(
251299result = await Runner.run(agent, " Hello" , session = session)
252300```
253301
254- 詳しくは [ 暗号化セッション ] ( encrypted_session.md ) をご覧ください 。
302+ 詳細なドキュメントは [ Encrypted Sessions ] ( encrypted_session.md ) を参照してください 。
255303
256- ### その他のセッションタイプ
304+ ### その他の セッション 種別
257305
258- 他にもいくつかの組み込みオプションがあります。` examples/memory/ ` と ` extensions/memory/ ` 配下のソースコードをご参照ください 。
306+ 他にもいくつかの組み込みオプションがあります。` examples/memory/ ` と、 ` extensions/memory/ ` 配下のソースコードを参照してください 。
259307
260- ## セッション管理
308+ ## セッション 管理
261309
262310### セッション ID の命名
263311
264- 会話を整理しやすい意味のあるセッション ID を使用します :
312+ 会話を整理しやすい、意味のある セッション ID を使用してください :
265313
266- - ユーザー基準 : ` "user_12345" `
267- - スレッド基準 : ` "thread_abc123" `
268- - コンテキスト基準 : ` "support_ticket_456" `
314+ - ユーザー ベース : ` "user_12345" `
315+ - スレッド ベース : ` "thread_abc123" `
316+ - コンテキスト ベース : ` "support_ticket_456" `
269317
270- ### メモリ永続化
318+ ### メモリの永続化
271319
272- - 一時的な会話にはインメモリ SQLite( ` SQLiteSession("session_id") ` ) を使用します
273- - 永続的な会話にはファイルベースの SQLite( ` SQLiteSession("session_id", "path/to/db.sqlite") ` ) を使用します
274- - 既存の SQLAlchemy 対応データベースを用いる本番システムには SQLAlchemy ベースのセッション( ` SQLAlchemySession("session_id", engine=engine, create_tables=True) ` ) を使用します
275- - 監視、トレーシング、データ分離を内蔵し、30+ 個のデータベースバックエンドをサポートするクラウドネイティブな本番デプロイには Dapr ステートストアセッション( ` DaprSession.from_address("session_id", state_store_name="statestore", dapr_address="localhost:50001") ` ) を使用します
276- - 履歴を OpenAI Conversations API に保存したい場合は OpenAI がホストするストレージ( ` OpenAIConversationsSession() ` ) を使用します
277- - 透過的な暗号化と TTL ベースの有効期限を付与するには暗号化セッション( ` EncryptedSession(session_id, underlying_session, encryption_key) ` )で任意のセッションをラップします
278- - より高度なユースケースに向けて他の本番システム( Redis、Django など)向けのカスタムセッションバックエンドの実装も検討してください
320+ - 一時的な会話には、インメモリ SQLite ( ` SQLiteSession("session_id") ` ) を使用します
321+ - 永続的な会話には、ファイル ベースの SQLite ( ` SQLiteSession("session_id", "path/to/db.sqlite") ` ) を使用します
322+ - SQLAlchemy がサポートする既存データベースを用いる本番システムには、 SQLAlchemy 駆動の セッション ( ` SQLAlchemySession("session_id", engine=engine, create_tables=True) ` ) を使用します
323+ - 本番のクラウドネイティブ デプロイには、 Dapr state store セッション ( ` DaprSession.from_address("session_id", state_store_name="statestore", dapr_address="localhost:50001") ` ) を使用します。組み込みの telemetry、tracing、データ分離を備え、30+ のデータベース バックエンドをサポートします
324+ - OpenAI Conversations API に履歴を保存したい場合は、 OpenAI がホストするストレージ ( ` OpenAIConversationsSession() ` ) を使用します
325+ - 任意の セッション を透過的な暗号化と TTL ベースの有効期限でラップするには、暗号化 セッション ( ` EncryptedSession(session_id, underlying_session, encryption_key) ` ) を使用します
326+ - より高度な ユースケース のために、他の本番システム ( Redis、Django など) 向けのカスタム セッション バックエンドの実装も検討してください
279327
280- ### 複数セッション
328+ ### 複数 セッション
281329
282330``` python
283331from agents import Agent, Runner, SQLiteSession
@@ -300,7 +348,7 @@ result2 = await Runner.run(
300348)
301349```
302350
303- ### セッション共有
351+ ### セッション の共有
304352
305353``` python
306354# Different agents can share the same session
@@ -323,7 +371,7 @@ result2 = await Runner.run(
323371
324372## 完全な例
325373
326- セッションメモリの動作を示す完全な例です :
374+ 以下は、セッション メモリが動作している様子を示す完全な例です :
327375
328376``` python
329377import asyncio
@@ -385,9 +433,9 @@ if __name__ == "__main__":
385433 asyncio.run(main())
386434```
387435
388- ## カスタムセッション実装
436+ ## カスタム セッション 実装
389437
390- [ ` Session ` ] [ agents.memory.session.Session ] プロトコルに従うクラスを作成することで、独自のセッションメモリを実装できます :
438+ [ ` Session ` ] [ agents.memory.session.Session ] プロトコルに従うクラスを作成することで、独自の セッション メモリを実装できます :
391439
392440``` python
393441from agents.memory.session import SessionABC
@@ -430,24 +478,25 @@ result = await Runner.run(
430478)
431479```
432480
433- ## コミュニティのセッション実装
481+ ## コミュニティの セッション 実装
434482
435- コミュニティによって追加のセッション実装が開発されています :
483+ コミュニティが追加の セッション 実装を開発しています :
436484
437- | パッケージ | 説明 |
485+ | Package | 説明 |
438486| ---------| -------------|
439- | [ openai-django-sessions] ( https://pypi.org/project/openai-django-sessions/ ) | 任意の Django 対応データベース( PostgreSQL、MySQL、SQLite など) 向けの Django ORM ベースのセッション |
487+ | [ openai-django-sessions] ( https://pypi.org/project/openai-django-sessions/ ) | Django がサポートする任意のデータベース ( PostgreSQL、MySQL、SQLite、ほか) 向けの Django ORM ベースの セッション |
440488
441- セッション実装を構築された方は、ぜひドキュメントへの PR を送ってここに追加してください 。
489+ セッション 実装を構築した場合は、ぜひドキュメントの PR を提出して、ここに追加してください 。
442490
443491## API リファレンス
444492
445- 詳細な API ドキュメントは以下をご覧ください :
493+ 詳細な API ドキュメントは次を参照してください :
446494
447- - [ ` Session ` ] [ agents.memory.session.Session ] - プロトコルインターフェース
448- - [ ` OpenAIConversationsSession ` ] [ agents.memory.OpenAIConversationsSession ] - OpenAI Conversations API 実装
449- - [ ` SQLiteSession ` ] [ agents.memory.sqlite_session.SQLiteSession ] - 基本的な SQLite 実装
450- - [ ` SQLAlchemySession ` ] [ agents.extensions.memory.sqlalchemy_session.SQLAlchemySession ] - SQLAlchemy ベースの実装
451- - [ ` DaprSession ` ] [ agents.extensions.memory.dapr_session.DaprSession ] - Dapr ステートストア実装
452- - [ ` AdvancedSQLiteSession ` ] [ agents.extensions.memory.advanced_sqlite_session.AdvancedSQLiteSession ] - 分岐と分析を備えた強化版 SQLite
453- - [ ` EncryptedSession ` ] [ agents.extensions.memory.encrypt_session.EncryptedSession ] - 任意のセッション向け暗号化ラッパー
495+ - [ ` Session ` ] [ agents.memory.session.Session ] - プロトコル インターフェース
496+ - [ ` OpenAIConversationsSession ` ] [ agents.memory.OpenAIConversationsSession ] - OpenAI Conversations API 実装
497+ - [ ` OpenAIResponsesCompactionSession ` ] [ agents.memory.openai_responses_compaction_session.OpenAIResponsesCompactionSession ] - Responses API 圧縮ラッパー
498+ - [ ` SQLiteSession ` ] [ agents.memory.sqlite_session.SQLiteSession ] - 基本 SQLite 実装
499+ - [ ` SQLAlchemySession ` ] [ agents.extensions.memory.sqlalchemy_session.SQLAlchemySession ] - SQLAlchemy 駆動の実装
500+ - [ ` DaprSession ` ] [ agents.extensions.memory.dapr_session.DaprSession ] - Dapr state store 実装
501+ - [ ` AdvancedSQLiteSession ` ] [ agents.extensions.memory.advanced_sqlite_session.AdvancedSQLiteSession ] - 分岐と分析を備えた拡張 SQLite
502+ - [ ` EncryptedSession ` ] [ agents.extensions.memory.encrypt_session.EncryptedSession ] - 任意の セッション 向け暗号化ラッパー
0 commit comments