@@ -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
19- ### 基本的な使い方
19+ ### 基本的な使用方法
2020
21- シンプルなハンドオフを作成する方法は次のとおりです 。
21+ シンプルなハンドオフの作成方法は次のとおりです 。
2222
2323``` python
2424from agents import Agent, handoff
@@ -30,19 +30,20 @@ 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 ` : ハンドオフが有効かどうかです。boolean、または boolean を返す関数を指定でき、実行時に動的にハンドオフを有効/無効にできます。
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 ` : ハンドオフを有効にするかどうかです。これは真偽値、または真偽値を返す関数を指定でき、実行時に動的にハンドオフを有効化または無効化できます。
46+ - ` nest_handoff_history ` : RunConfig レベルの ` nest_handoff_history ` 設定に対する、呼び出しごとの任意オーバーライドです。` None ` の場合は、アクティブな実行設定で定義された値が代わりに使われます。
4647
4748``` python
4849from agents import Agent, handoff, RunContextWrapper
@@ -62,7 +63,7 @@ handoff_obj = handoff(
6263
6364## ハンドオフ入力
6465
65- 状況によっては、 LLM がハンドオフを呼び出す際に、何らかのデータを提供してほしい場合があります 。たとえば、 「Escalation agent」へのハンドオフを想像してください。ログに残せるように、理由を提供してほしいかもしれません 。
66+ 特定の状況では、ハンドオフ呼び出し時に LLM からデータを提供させたい場合があります 。たとえば「Escalation agent」へのハンドオフを想像してください。ログ記録のために理由を提供してほしい場合があります 。
6667
6768``` python
6869from pydantic import BaseModel
@@ -86,11 +87,11 @@ handoff_obj = handoff(
8687
8788## 入力フィルター
8889
89- ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ、これまでの会話履歴全体を参照できるようになります 。これを変更したい場合は [ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。入力フィルターは、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
90+ ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ、それまでの会話履歴全体を参照できる状態になります 。これを変更したい場合は、 [ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。入力フィルターは、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
9091
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] も)を呼び出してください。
92+ ネストされたハンドオフはオプトインの beta として提供されており、安定化のためデフォルトでは無効です 。[`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` が指定されていない場合にのみ適用されるため、すでにペイロードをカスタマイズしている既存コード(このリポジトリのコード例を含む)は変更なしで現在の動作を維持します。単一のハンドオフについてネスト動作を上書きするには 、[`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] も)を呼び出してください。
9293
93- 一般的なパターン (たとえば履歴からすべてのツール呼び出しを削除するなど)がいくつかあり、これらは [ ` agents.extensions.handoff_filters ` ] [ ] に実装されています。
94+ いくつかの一般的なパターン (たとえば履歴からすべてのツール呼び出しを削除するなど)は、 [ ` agents.extensions.handoff_filters ` ] [ ] に実装されています。
9495
9596``` python
9697from agents import Agent, handoff
@@ -108,7 +109,7 @@ handoff_obj = handoff(
108109
109110## 推奨プロンプト
110111
111- LLM がハンドオフを適切に理解できるようにするため、エージェントにはハンドオフに関する情報を含めることを推奨します 。[ ` agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX ` ] [ ] に推奨のプレフィックスが用意されています。または 、[ ` agents.extensions.handoff_prompt.prompt_with_handoff_instructions ` ] [ ] を呼び出して、推奨データをプロンプトに自動追加することもできます 。
112+ LLM がハンドオフを適切に理解できるようにするため、エージェントにハンドオフに関する情報を含めることを推奨します 。[ ` agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX ` ] [ ] に推奨プレフィックスが用意されており 、[ ` agents.extensions.handoff_prompt.prompt_with_handoff_instructions ` ] [ ] を呼び出して推奨データをプロンプトに自動追加することもできます 。
112113
113114``` python
114115from agents import Agent
0 commit comments