@@ -4,21 +4,21 @@ search:
44---
55# ハンドオフ
66
7- ハンドオフは、ある エージェント が別の エージェント にタスクを委譲できるようにする機能です 。これは、異なる エージェント がそれぞれ異なる領域を専門にしているシナリオで特に有用です 。たとえば、カスタマーサポートアプリでは 、注文状況、返金、FAQ などのタスクを個別に担当する エージェント を用意できます 。
7+ ハンドオフにより、エージェントはタスクを別のエージェントに委任できます 。これは、異なるエージェントがそれぞれ異なる領域に特化しているシナリオで特に有用です 。たとえば、カスタマーサポートのアプリでは 、注文状況、返金、FAQ などのタスクをそれぞれ専用に扱うエージェントがいる場合があります 。
88
9- ハンドオフは LLM に対してツールとして表現されます。たとえば ` Refund Agent ` という エージェント へのハンドオフがある場合、ツール名は ` transfer_to_refund_agent ` になります 。
9+ ハンドオフは、 LLM に対してツールとして表現されます。そのため、 ` Refund Agent ` という名前のエージェントへのハンドオフがある場合、ツールは ` transfer_to_refund_agent ` と呼ばれます 。
1010
1111## ハンドオフの作成
1212
13- すべての エージェント には [ ` handoffs ` ] [ agents.agent.Agent.handoffs ] パラメーターがあり、これは直接 ` Agent ` を受け取ることも 、ハンドオフをカスタマイズする ` Handoff ` オブジェクトを受け取ることもできます 。
13+ すべてのエージェントには [ ` handoffs ` ] [ agents.agent.Agent.handoffs ] パラメーターがあり、` Agent ` を直接受け取るか 、ハンドオフをカスタマイズする ` Handoff ` オブジェクトを受け取れます 。
1414
15- プレーンな ` Agent ` インスタンスを渡す場合、(設定されていれば)その [ ` handoff_description ` ] [ agents.agent.Agent.handoff_description ] がデフォルトのツール説明に追加されます。完全な ` handoff() ` オブジェクトを書かずに、そのハンドオフをモデルが選ぶべきタイミングを示す助けとして使えます 。
15+ プレーンな ` Agent ` インスタンスを渡すと、それらの [ ` handoff_description ` ] [ agents.agent.Agent.handoff_description ] (設定されている場合) がデフォルトのツール説明に追加されます。完全な ` handoff() ` オブジェクトを書かずに、モデルがそのハンドオフを選ぶべきタイミングを示すヒントとして使ってください 。
1616
17- Agents SDK が提供する [ ` handoff() ` ] [ agents.handoffs.handoff ] 関数を使ってハンドオフを作成できます 。この関数では、引き渡し先の エージェント に加えて 、任意のオーバーライドや入力フィルターを指定できます。
17+ Agents SDK が提供する [ ` handoff() ` ] [ agents.handoffs.handoff ] 関数を使って、ハンドオフを作成できます 。この関数では、ハンドオフ先のエージェントに加えて 、任意のオーバーライドや入力フィルターを指定できます。
1818
1919### 基本的な使い方
2020
21- シンプルなハンドオフの作成方法は次のとおりです 。
21+ シンプルなハンドオフを作成する方法は次のとおりです 。
2222
2323``` python
2424from agents import Agent, handoff
@@ -30,19 +30,19 @@ refund_agent = Agent(name="Refund agent")
3030triage_agent = Agent(name = " Triage agent" , handoffs = [billing_agent, handoff(refund_agent)])
3131```
3232
33- 1 . ` billing_agent ` のように エージェント を直接使うことも 、` handoff() ` 関数を使うこともできます。
33+ 1 . エージェントを直接使う( ` billing_agent ` のように)ことも 、` handoff() ` 関数を使うこともできます。
3434
3535### ` handoff() ` 関数によるハンドオフのカスタマイズ
3636
37- [ ` handoff() ` ] [ agents.handoffs.handoff ] 関数では、以下をカスタマイズできます 。
37+ [ ` handoff() ` ] [ agents.handoffs.handoff ] 関数を使うと、各種項目をカスタマイズできます 。
3838
39- - ` agent ` : 引き渡し先の エージェント です 。
40- - ` tool_name_override ` : 既定では ` Handoff.default_tool_name() ` が使われ 、` transfer_to_<agent_name> ` になります 。これを上書きできます。
41- - ` tool_description_override ` : ` Handoff.default_tool_description() ` によるデフォルトのツール説明を上書きします 。
42- - ` on_handoff ` : ハンドオフが呼び出されたときに実行されるコールバック関数です。ハンドオフが起こることが分かった時点でデータ取得を開始するなどに便利です。この関数は エージェント のコンテキストを受け取り、オプションで LLM が生成した入力も受け取れます。入力データは ` input_type ` パラメーターで制御します 。
43- - ` input_type ` : ハンドオフが想定する入力の型 (任意)。
44- - ` input_filter ` : 次の エージェント が受け取る入力をフィルタリングできます。詳細は下記参照 。
45- - ` is_enabled ` : ハンドオフが有効かどうか。真偽値または真偽値を返す関数を指定でき、実行時に動的に有効/無効を切り替えられます 。
39+ - ` agent ` : ハンドオフ先のエージェントです 。
40+ - ` tool_name_override ` : デフォルトでは ` Handoff.default_tool_name() ` 関数が使われ 、` transfer_to_<agent_name> ` に解決されます 。これを上書きできます。
41+ - ` tool_description_override ` : ` Handoff.default_tool_description() ` のデフォルトのツール説明を上書きします 。
42+ - ` on_handoff ` : ハンドオフが呼び出されたときに実行されるコールバック関数です。ハンドオフが呼び出されることが分かった時点でデータ取得を開始する、といった用途に便利です。この関数はエージェントコンテキストを受け取り、任意で LLM が生成した入力も受け取れます。入力データは ` input_type ` パラメーターによって制御されます 。
43+ - ` input_type ` : ハンドオフが期待する入力の型 (任意)です 。
44+ - ` input_filter ` : 次のエージェントが受け取る入力をフィルタリングできます。詳細は後述します 。
45+ - ` is_enabled ` : ハンドオフが有効かどうかです。boolean、または boolean を返す関数を指定でき、実行時に動的にハンドオフを有効/無効にできます 。
4646
4747``` python
4848from agents import Agent, handoff, RunContextWrapper
@@ -60,9 +60,9 @@ handoff_obj = handoff(
6060)
6161```
6262
63- ## ハンドオフの入力
63+ ## ハンドオフ入力
6464
65- 状況によっては、ハンドオフを呼び出す際に LLM からいくつかのデータを提供してほしい場合があります。例えば「エスカレーション エージェント」へのハンドオフを想定すると、ログのために理由を渡したいことがあります 。
65+ 状況によっては、LLM がハンドオフを呼び出す際に、何らかのデータを提供してほしい場合があります。たとえば、「Escalation agent」へのハンドオフを想像してください。ログに残せるように、理由を提供してほしいかもしれません 。
6666
6767``` python
6868from pydantic import BaseModel
@@ -86,11 +86,11 @@ handoff_obj = handoff(
8686
8787## 入力フィルター
8888
89- ハンドオフが起きると、新しい エージェント が会話を引き継ぎ 、これまでの会話履歴全体を参照できるようになります。これを変更したい場合は、 [ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。入力フィルターは、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
89+ ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ 、これまでの会話履歴全体を参照できるようになります。これを変更したい場合は [ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。入力フィルターは、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
9090
91- 既定では、Runner は直前の会話記録を 1 つのアシスタント要約メッセージに折りたたみます( [`RunConfig.nest_handoff_history`][agents.run.RunConfig.nest_handoff_history] を参照)。この要約は、同一の実行中に複数のハンドオフが起きた場合に新しいターンを追加し続ける `<CONVERSATION HISTORY>` ブロック内に表示されます。 完全な `input_filter` を書かずに生成メッセージを置き換えたい場合は 、[`RunConfig.handoff_history_mapper`][agents.run.RunConfig.handoff_history_mapper] で独自のマッピング関数を指定できます。なお、このデフォルトは、ハンドオフ側と実行側のいずれも明示的な `input_filter` を提供しない場合にのみ適用されます。そのため、既にペイロードをカスタマイズしている既存コード(このリポジトリ内の code examples を含む )は、変更なしで現在の挙動を維持します。単一のハンドオフについて入れ子の有無を上書きしたい場合は 、[`handoff(...)`][agents.handoffs.handoff] に `nest_handoff_history=True` または `False` を渡して、 [`Handoff.nest_handoff_history`][agents.handoffs.Handoff.nest_handoff_history] を設定してください。生成要約のラッパーテキストだけを変更したい場合は 、エージェントを実行する前に [`set_conversation_history_wrappers`][agents.handoffs.set_conversation_history_wrappers](必要に応じて [`reset_conversation_history_wrappers`][agents.handoffs.reset_conversation_history_wrappers])を呼び出してください。
91+ ネストされたハンドオフはオプトインのベータとして利用可能で、安定化のためデフォルトでは無効になっています。 [`RunConfig.nest_handoff_history`][agents.run.RunConfig.nest_handoff_history] を有効にすると、runner はそれまでのトランスクリプトを 1 つの assistant サマリーメッセージに折りたたみ、 `<CONVERSATION HISTORY>` ブロックでラップします。これにより、同一の run 中に複数回のハンドオフが発生した場合に、新しいターンが追記され続けます。 完全な `input_filter` を書かずに生成メッセージを置き換えるために 、[`RunConfig.handoff_history_mapper`][agents.run.RunConfig.handoff_history_mapper] で独自のマッピング関数を指定できます。このオプトインは、ハンドオフ側にも run 側にも明示的な `input_filter` が指定されていない場合にのみ適用されるため、すでにペイロードをカスタマイズしている既存コード(このリポジトリの例を含む )は、変更なしで現在の挙動を維持します。単一のハンドオフに対してネスト挙動を上書きするには 、[`handoff(...)`][agents.handoffs.handoff] に `nest_handoff_history=True` または `False` を渡してください。これにより [`Handoff.nest_handoff_history`][agents.handoffs.Handoff.nest_handoff_history] が設定されます。生成されたサマリーのラッパー文言だけを変更する必要がある場合は 、エージェントを実行する前に [`set_conversation_history_wrappers`][agents.handoffs.set_conversation_history_wrappers](必要に応じて [`reset_conversation_history_wrappers`][agents.handoffs.reset_conversation_history_wrappers] も )を呼び出してください。
9292
93- 一般的なパターン(たとえば履歴からすべてのツール呼び出しを削除するなど)は、 [ ` agents.extensions.handoff_filters ` ] [ ] に実装済みです 。
93+ 一般的なパターン(たとえば履歴からすべてのツール呼び出しを削除するなど)がいくつかあり、これらは [ ` agents.extensions.handoff_filters ` ] [ ] に実装されています 。
9494
9595``` python
9696from agents import Agent, handoff
@@ -104,11 +104,11 @@ handoff_obj = handoff(
104104)
105105```
106106
107- 1 . これは 、` FAQ agent ` が呼び出された際に履歴からすべてのツールを自動的に削除します 。
107+ 1 . これにより 、` FAQ agent ` が呼び出されたときに履歴からすべてのツールが自動的に削除されます 。
108108
109109## 推奨プロンプト
110110
111- LLM がハンドオフを正しく理解できるようにするため、エージェント にハンドオフに関する情報を含めることを推奨します 。[ ` agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX ` ] [ ] に推奨のプレフィックスがあり、あるいは [ ` agents.extensions.handoff_prompt.prompt_with_handoff_instructions ` ] [ ] を呼び出して、推奨情報を自動的にプロンプトへ追加できます 。
111+ LLM がハンドオフを適切に理解できるようにするため、エージェントにはハンドオフに関する情報を含めることを推奨します 。[ ` agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX ` ] [ ] に推奨のプレフィックスが用意されています。または、 [ ` agents.extensions.handoff_prompt.prompt_with_handoff_instructions ` ] [ ] を呼び出して、推奨データをプロンプトに自動追加することもできます 。
112112
113113``` python
114114from agents import Agent
0 commit comments