@@ -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 ] 関数を使ってハンドオフを作成できます。この関数では、ハンドオフ先のエージェントに加えて、任意のオーバーライドや input filter を指定できます 。
1818
19- ### 基本的な使用方法
19+ ### 基本的な使い方
2020
21- シンプルなハンドオフの作成方法は次のとおりです 。
21+ シンプルなハンドオフは次のように作成できます 。
2222
2323``` python
2424from agents import Agent, handoff
@@ -30,20 +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 ` パラメーターで制御されます。
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 ` パラメーターで制御されます。
4343- ` input_type ` : ハンドオフが期待する入力の型です(任意)。
44- - ` input_filter ` : 次のエージェントが受け取る入力をフィルタリングできます。詳細は以下をご覧ください 。
45- - ` is_enabled ` : ハンドオフを有効にするかどうかです。これは真偽値、または真偽値を返す関数を指定でき、実行時に動的にハンドオフを有効化または無効化できます 。
46- - ` nest_handoff_history ` : RunConfig レベルの ` nest_handoff_history ` 設定に対する、呼び出しごとの任意オーバーライドです。 ` None ` の場合は、アクティブな実行設定で定義された値が代わりに使われます 。
44+ - ` input_filter ` : 次のエージェントが受け取る入力をフィルタリングできます。詳細は以下を参照してください 。
45+ - ` is_enabled ` : ハンドオフを有効にするかどうかです。これは boolean または boolean を返す関数にでき、実行時にハンドオフを動的に有効化または無効化できます 。
46+ - ` nest_handoff_history ` : RunConfig レベルの ` nest_handoff_history ` 設定に対する、呼び出しごとの任意の上書きです。 ` None ` の場合は、アクティブな実行設定で定義された値が代わりに使用されます 。
4747
4848``` python
4949from agents import Agent, handoff, RunContextWrapper
@@ -63,7 +63,7 @@ handoff_obj = handoff(
6363
6464## ハンドオフ入力
6565
66- 特定の状況では、ハンドオフ呼び出し時に LLM からデータを提供させたい場合があります 。たとえば「Escalation agent」へのハンドオフを想像してください。ログ記録のために理由を提供してほしい場合があります 。
66+ 状況によっては、ハンドオフを呼び出すときに LLM に何らかのデータを提供させたい場合があります 。たとえば「 Escalation agent 」へのハンドオフを考えてみてください。ログ記録のために、理由を提供してほしい場合があります 。
6767
6868``` python
6969from pydantic import BaseModel
@@ -85,13 +85,13 @@ handoff_obj = handoff(
8585)
8686```
8787
88- ## 入力フィルター
88+ ## Input filters
8989
90- ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ、それまでの会話履歴全体を参照できる状態になります。これを変更したい場合は、[ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。入力フィルターは 、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
90+ ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ、それまでの会話履歴全体を参照できる状態になります。これを変更したい場合は、 [ ` input_filter ` ] [ agents.handoffs.Handoff.input_filter ] を設定できます。 input filter は 、既存の入力を [ ` HandoffInputData ` ] [ agents.handoffs.HandoffInputData ] 経由で受け取り、新しい ` HandoffInputData ` を返す関数です。
9191
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] も )を呼び出してください。
92+ ネストされたハンドオフはオプトインの beta として利用可能で 、安定化のためデフォルトでは無効です。[`RunConfig.nest_handoff_history`][agents.run.RunConfig.nest_handoff_history] を有効にすると、 runner はそれ以前の transcript を 1 つの assistant 要約メッセージにまとめ、同一 run 中に複数のハンドオフが発生した場合に新しいターンを追加し続ける `<CONVERSATION HISTORY>` ブロックでラップします。完全な `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])を呼び出してください。
9393
94- いくつかの一般的なパターン(たとえば履歴からすべてのツール呼び出しを削除するなど)は、[ ` agents.extensions.handoff_filters ` ] [ ] に実装されています 。
94+ いくつかの一般的なパターン(たとえば履歴からすべてのツール呼び出しを削除するなど)は、 [ ` agents.extensions.handoff_filters ` ] [ ] に実装済みです 。
9595
9696``` python
9797from agents import Agent, handoff
@@ -105,11 +105,11 @@ handoff_obj = handoff(
105105)
106106```
107107
108- 1 . これにより、` FAQ agent ` が呼び出されたときに履歴からすべてのツールが自動的に削除されます。
108+ 1 . これにより、 ` FAQ agent ` が呼び出されたときに履歴からすべてのツールが自動的に削除されます。
109109
110110## 推奨プロンプト
111111
112- 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 ` ] [ ] を呼び出して、推奨データをプロンプトに自動追加することもできます 。
113113
114114``` python
115115from agents import Agent
0 commit comments