@@ -4,47 +4,47 @@ search:
44---
55# コンテキスト管理
66
7- コンテキストは多義的な用語です。主に、関心を持つ可能性があるコンテキストには 2 つのクラスがあります 。
7+ コンテキストは多義的な用語です。主に重要になるコンテキストは 2 つあります 。
88
9- 1 . コードでローカルに利用可能なコンテキスト : これは、関数ツールの実行時 、` on_handoff ` のようなコールバック時、ライフサイクルフック時などに必要になる可能性があるデータや依存関係です 。
10- 2 . LLM から利用可能なコンテキスト : これは、LLM がレスポンス生成時に参照するデータです 。
9+ 1 . コード内でローカルに利用可能なコンテキスト : これは、ツール関数の実行時 、` on_handoff ` のようなコールバック時、ライフサイクルフック内などで必要になる可能性があるデータや依存関係です 。
10+ 2 . LLM で利用可能なコンテキスト : これは、レスポンス生成時に LLM が参照するデータです 。
1111
1212## ローカルコンテキスト
1313
14- これは [ ` RunContextWrapper ` ] [ agents.run_context.RunContextWrapper ] クラスと、その内部の [ ` context ` ] [ agents.run_context.RunContextWrapper.context ] プロパティで表現されます。仕組みは次のとおりです。
14+ これは [ ` RunContextWrapper ` ] [ agents.run_context.RunContextWrapper ] クラスと、その中の [ ` context ` ] [ agents.run_context.RunContextWrapper.context ] プロパティで表現されます。仕組みは次のとおりです。
1515
16161 . 任意の Python オブジェクトを作成します。一般的なパターンは dataclass または Pydantic オブジェクトを使うことです。
17- 2 . そのオブジェクトを各種 run メソッドに渡します( 例: ` Runner.run(..., context=whatever) ` ) 。
18- 3 . すべてのツール呼び出し、ライフサイクルフックなどには ` RunContextWrapper[T] ` というラッパーオブジェクトが渡されます。ここで ` T ` はコンテキストオブジェクトの型を表し 、` wrapper.context ` でアクセスできます。
17+ 2 . そのオブジェクトを各種 run メソッドに渡します ( 例: ` Runner.run(..., context=whatever) ` ) 。
18+ 3 . すべてのツール呼び出し、ライフサイクルフックなどに、 ` RunContextWrapper[T] ` というラッパーオブジェクトが渡されます。ここで ` T ` はコンテキストオブジェクトの型であり 、` wrapper.context ` でアクセスできます。
1919
20- 認識しておくべき ** 最も重要 ** な点: あるエージェント実行に対するすべてのエージェント、関数ツール 、ライフサイクルなどは、同じコンテキストの _ 型_ を使う必要があります 。
20+ 注意すべき ** 最も重要な ** 点: 特定のエージェント実行におけるすべてのエージェント、ツール関数 、ライフサイクルなどは、同じコンテキストの _ 型_ を使用する必要があります 。
2121
22- コンテキストは次のような用途に使えます 。
22+ コンテキストは次のような用途で使えます 。
2323
24- - 実行のためのコンテキストデータ( 例: username / uid やユーザーに関するその他情報)
25- - 依存関係( 例: logger オブジェクト、データフェッチャーなど)
24+ - 実行時の文脈データ ( 例: ユーザー名 / uid やその他のユーザー情報)
25+ - 依存関係 ( 例: logger オブジェクト、データフェッチャーなど)
2626- ヘルパー関数
2727
28- !!! danger "注意 "
28+ !!! danger "注記 "
2929
30- コンテキストオブジェクトは LLM に **送信されません **。これは純粋にローカルオブジェクトであり、読み取り、書き込み、メソッド呼び出しを行えます。
30+ コンテキストオブジェクトは LLM に送信され **ません **。これは純粋にローカルオブジェクトであり、読み取り、書き込み、メソッド呼び出しを行えます。
3131
32- 単一の実行内では、派生ラッパーは同じ基盤の app context 、承認状態、使用量トラッキングを共有します。ネストされた [ ` Agent.as_tool() ` ] [ agents.agent.Agent.as_tool ] 実行では別の ` tool_input ` が付与される場合がありますが、デフォルトでは app 状態の分離コピーは取得しません。
32+ 単一の実行内では、派生ラッパーは同じ基盤の app コンテキスト 、承認状態、使用量トラッキングを共有します。ネストされた [ ` Agent.as_tool() ` ] [ agents.agent.Agent.as_tool ] 実行では別の ` tool_input ` が付与される場合がありますが、既定では app 状態の分離コピーは取得しません。
3333
3434### ` RunContextWrapper ` の公開内容
3535
36- [ ` RunContextWrapper ` ] [ agents.run_context.RunContextWrapper ] は、アプリで定義したコンテキストオブジェクトのラッパーです 。実際には、最もよく使うのは次です 。
36+ [ ` RunContextWrapper ` ] [ agents.run_context.RunContextWrapper ] は、app で定義したコンテキストオブジェクトのラッパーです 。実際には、主に次を使用します 。
3737
38- - 独自の可変 app 状態と依存関係のための [ ` wrapper.context ` ] [ agents.run_context.RunContextWrapper.context ] 。
39- - 現在の実行全体で集計されたリクエストとトークン使用量のための [ ` wrapper.usage ` ] [ agents.run_context.RunContextWrapper.usage ] 。
40- - 現在の実行が [ ` Agent.as_tool() ` ] [ agents.agent.Agent.as_tool ] 内で動いているときの構造化入力のための [ ` wrapper.tool_input ` ] [ agents.run_context.RunContextWrapper.tool_input ] 。
41- - 承認状態をプログラムで更新する必要があるときの [ ` wrapper.approve_tool(...) ` ] [ agents.run_context.RunContextWrapper.approve_tool ] / [ ` wrapper.reject_tool(...) ` ] [ agents.run_context.RunContextWrapper.reject_tool ] 。
38+ - 独自の可変 app 状態および依存関係には [ ` wrapper.context ` ] [ agents.run_context.RunContextWrapper.context ] 。
39+ - 現在の実行全体で集計されたリクエストおよびトークン使用量には [ ` wrapper.usage ` ] [ agents.run_context.RunContextWrapper.usage ] 。
40+ - 現在の実行が [ ` Agent.as_tool() ` ] [ agents.agent.Agent.as_tool ] 内で動作している場合の構造化入力には [ ` wrapper.tool_input ` ] [ agents.run_context.RunContextWrapper.tool_input ] 。
41+ - 承認状態をプログラムから更新する必要がある場合は [ ` wrapper.approve_tool(...) ` ] [ agents.run_context.RunContextWrapper.approve_tool ] / [ ` wrapper.reject_tool(...) ` ] [ agents.run_context.RunContextWrapper.reject_tool ] 。
4242
43- ` wrapper.context ` だけがアプリ定義のオブジェクトです。他のフィールドは SDK が管理するランタイムメタデータです 。
43+ ` wrapper.context ` のみが app で定義したオブジェクトです。その他のフィールドは SDK が管理する実行時メタデータです 。
4444
45- 後で human-in-the-loop や耐久ジョブワークフロー向けに [ ` RunState ` ] [ agents.run_state.RunState ] をシリアライズする場合、そのランタイムメタデータは状態とともに保存されます。シリアライズ状態を永続化または送信する予定がある場合は 、[ ` RunContextWrapper.context ` ] [ agents.run_context.RunContextWrapper.context ] に秘密情報を入れないでください 。
45+ 後で human-in-the-loop や永続ジョブワークフローのために [ ` RunState ` ] [ agents.run_state.RunState ] をシリアライズする場合、その実行時メタデータは状態とともに保存されます。シリアライズした状態を永続化または送信する予定がある場合 、[ ` RunContextWrapper.context ` ] [ agents.run_context.RunContextWrapper.context ] に秘密情報を入れるのは避けてください 。
4646
47- 会話状態は別の関心事項です。ターンをどう引き継ぐかに応じて 、` result.to_input_list() ` 、` session ` 、` conversation_id ` 、` previous_response_id ` を使い分けてください 。この判断については [ results] ( results.md ) 、[ running agents] ( running_agents.md ) 、[ sessions] ( sessions/index.md ) を参照してください。
47+ 会話状態は別の関心事項です。ターンをどのように引き継ぐかに応じて 、` result.to_input_list() ` 、` session ` 、` conversation_id ` 、または ` previous_response_id ` を使用してください 。この判断については [ results] ( results.md ) 、[ running agents] ( running_agents.md ) 、[ sessions] ( sessions/index.md ) を参照してください。
4848
4949``` python
5050import asyncio
@@ -83,18 +83,18 @@ if __name__ == "__main__":
8383 asyncio.run(main())
8484```
8585
86- 1 . これはコンテキストオブジェクトです 。ここでは dataclass を使用していますが 、任意の型を使用できます。
87- 2 . これはツールです 。` RunContextWrapper[UserInfo] ` を受け取ることがわかります。ツール実装はコンテキストを読み取ります。
88- 3 . 型チェッカーがエラーを検出できるように、 エージェントにジェネリック ` UserInfo ` を付けます( たとえば、異なるコンテキスト型を受け取るツールを渡そうとした場合) 。
86+ 1 . これがコンテキストオブジェクトです 。ここでは dataclass を使っていますが 、任意の型を使用できます。
87+ 2 . これがツールです 。` RunContextWrapper[UserInfo] ` を受け取ることがわかります。ツール実装はコンテキストを読み取ります。
88+ 3 . エージェントにジェネリック ` UserInfo ` を指定しているため、型チェッカーがエラーを検出できます ( たとえば、異なるコンテキスト型を受け取るツールを渡そうとした場合) 。
89894 . コンテキストは ` run ` 関数に渡されます。
90905 . エージェントは正しくツールを呼び出し、年齢を取得します。
9191
9292---
9393
94- ### 発展 : ` ToolContext `
94+ ### 高度な利用 : ` ToolContext `
9595
96- 場合によっては、実行中のツールに関する追加メタデータ( 名前、call ID、raw 引数文字列など) にアクセスしたいことがあります。
97- そのために 、` RunContextWrapper ` を拡張した [ ` ToolContext ` ] [ agents.tool_context.ToolContext ] クラスを使用できます。
96+ 場合によっては、実行中のツールに関する追加メタデータ ( 名前、呼び出し ID、raw 引数文字列など) にアクセスしたいことがあります。
97+ このために 、` RunContextWrapper ` を拡張した [ ` ToolContext ` ] [ agents.tool_context.ToolContext ] クラスを使用できます。
9898
9999``` python
100100from typing import Annotated
@@ -122,23 +122,25 @@ agent = Agent(
122122)
123123```
124124
125- ` ToolContext ` は ` RunContextWrapper ` と同じ ` .context ` プロパティに加えて 、
126- 現在のツール呼び出しに固有の追加フィールドを提供します 。
125+ ` ToolContext ` は ` RunContextWrapper ` と同じ ` .context ` プロパティを提供し 、
126+ さらに現在のツール呼び出しに固有の追加フィールドを提供します 。
127127
128- - ` tool_name ` – 呼び出されるツールの名前
128+ - ` tool_name ` – 呼び出されるツール名
129129- ` tool_call_id ` – このツール呼び出しの一意識別子
130- - ` tool_arguments ` – ツールに渡された raw 引数字符串
130+ - ` tool_arguments ` – ツールに渡される raw 引数字符串
131+ - ` tool_namespace ` – ツールが ` tool_namespace() ` または他の名前空間付きサーフェス経由で読み込まれた場合の、ツール呼び出し用 Responses 名前空間
132+ - ` qualified_tool_name ` – 名前空間が利用可能な場合の、名前空間付きツール名
131133
132134実行中にツールレベルのメタデータが必要な場合は ` ToolContext ` を使用してください。
133- エージェントとツール間の一般的なコンテキスト共有には 、` RunContextWrapper ` で十分です。` ToolContext ` は ` RunContextWrapper ` を拡張しているため、ネストされた ` Agent.as_tool() ` 実行で構造化入力が渡された場合は ` .tool_input ` も公開できます。
135+ エージェントとツール間での一般的なコンテキスト共有では 、` RunContextWrapper ` で十分です。` ToolContext ` は ` RunContextWrapper ` を拡張しているため、ネストされた ` Agent.as_tool() ` 実行で構造化入力が渡された場合は ` .tool_input ` も公開できます。
134136
135137---
136138
137- ## Agent/ LLM コンテキスト
139+ ## エージェント / LLM コンテキスト
138140
139- LLM が呼び出されるとき、参照できるデータは会話履歴にあるもの ** のみ** です。つまり、新しいデータを LLM で利用可能にしたい場合は、その履歴で利用可能になる形で渡す必要があります 。方法はいくつかあります。
141+ LLM が呼び出されるとき、参照できるデータは会話履歴内のもの ** のみ** です。これは、 LLM に新しいデータを利用可能にしたい場合、それを会話履歴内で利用可能にする方法で渡す必要があることを意味します 。方法はいくつかあります。
140142
141- 1 . Agent の ` instructions ` に追加します 。これは " システムプロンプト" または "developer message" とも呼ばれます。システムプロンプトは静的な文字列にも、コンテキストを受け取って文字列を出力する動的関数にもできます 。これは、常に有用な情報( たとえばユーザー名や現在日付)でよく使われる手法です 。
142- 2 . ` Runner.run ` 関数を呼ぶ際に ` input ` に追加します。これは ` instructions ` の手法に近いですが 、[ chain of command] ( https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command ) の中でより下位のメッセージを持てます 。
143- 3 . 関数ツール経由で公開します 。これは _ オンデマンド_ なコンテキストに有用です。 LLM がデータを必要とするタイミングを判断し、そのデータ取得のためにツールを呼び出せます。
144- 4 . retrieval または Web 検索を使用します。これらは、ファイルやデータベース( retrieval) または Web(web search) から関連データを取得できる特別なツールです。これは、関連するコンテキストデータでレスポンスを 「グラウンディング」するのに有用です。
143+ 1 . Agent の ` instructions ` に追加できます 。これは「 システムプロンプト」 または「開発者メッセージ」 とも呼ばれます。システムプロンプトは静的文字列にも、コンテキストを受け取って文字列を返す動的関数にもできます 。これは、常に有用な情報 ( たとえばユーザー名や現在日付) に対する一般的な手法です 。
144+ 2 . ` Runner.run ` 関数を呼び出すときの ` input ` に追加します。これは ` instructions ` の手法に似ていますが 、[ chain of command] ( https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command ) でより下位のメッセージを持てます 。
145+ 3 . 関数ツールを通じて公開します 。これは _ オンデマンド_ のコンテキストに有用です。つまり、 LLM がデータを必要とするタイミングを判断し、そのデータ取得のためにツールを呼び出せます。
146+ 4 . retrieval または Web 検索を使用します。これらは、ファイルやデータベース ( retrieval)、 または Web (Web 検索) から関連データを取得できる特別なツールです。これは、関連する文脈データに基づいてレスポンスを 「グラウンディング」するのに有用です。
0 commit comments