ナビゲーションにスキップ

エージェント転送

定義した条件に基づいて、ユーザーをElevenLabsエージェント間でスムーズに転送します。

概要

エージェント間転送により、特定の条件が満たされたときに、ElevenLabsエージェントは進行中の会話を別の指定エージェントへ引き継げます。これにより、異なるエージェントが特定のタスクや複雑さのレベルを担当する、多層的な会話ワークフローを実現できます。

たとえば、最初のエージェント(オーケストレーター)が一般的な問い合わせを処理し、会話のコンテキストに応じて専門エージェントに通話を転送できます。転送はネストすることも可能です。

Orchestrator Agent (Initial Qualification)
│
├───> Agent 1 (e.g., Availability Inquiries)
│
├───> Agent 2 (e.g., Technical Support)
│ │
│ └───> Agent 2a (e.g., Hardware Support)
│
└───> Agent 3 (e.g., Billing Issues)
エージェント転送の階層例

目的:ユーザーのニーズに応じて、専門的なAIエージェント間で会話を転送します。

トリガー条件:LLMは、次の場合にこのツールを呼び出す必要があります。

  • ユーザーのリクエストに専門知識または別のエージェント機能が必要な場合
  • 現在のエージェントではクエリに十分対応できない場合
  • 会話の流れから別のエージェントタイプが必要であることが示される場合

パラメータ:

  • reason(string、任意):エージェント転送の理由
  • agent_number(integer、必須):転送先エージェントのゼロ始まりの番号(設定済みの転送ルールに基づく)

関数呼び出し形式:

{
"type": "function",
"function": {
"name": "transfer_to_agent",
"arguments": "{\"reason\": \"User needs billing support\", \"agent_number\": 0}"
}
}

実装:条件を特定のエージェントIDにマッピングする転送ルールを定義します。現在のエージェントが転送できるエージェントを設定します。エージェントは、転送設定内でゼロ始まりの番号で参照されます。

エージェント転送を有効にする

エージェント転送は、transfer_to_agentシステムツールで設定します。

1

転送ツールを追加

エージェント設定のAgentタブで、transfer_to_agentシステムツールを選択してエージェント転送を有効にします。ツールを追加する際は「Transfer to AI Agent」を選択してください。

転送ツールを追加
2

ツールの説明を設定(任意)

転送をトリガーするタイミングをLLMに示すカスタム説明を指定できます。空欄の場合は、定義済みの転送ルールを含むデフォルトの説明が使用されます。

転送ツールの説明
3

転送ルールを定義

他のエージェントに転送するための具体的なルールを設定します。ルールごとに、以下を指定します。

  • エージェント:会話の転送先となるエージェント。
  • 条件:転送を行う状況を自然言語で説明します(例:「ユーザーが請求の詳細について質問する」「ユーザーが製品Xのテクニカルサポートを依頼する」)。
  • 転送前の遅延(ミリ秒):転送が実行されるまでの最短遅延時間(ミリ秒)。デフォルトは0で、即時に転送されます。
  • 転送メッセージ:転送中に再生する任意のカスタムメッセージです。空欄の場合、転送は無音で実行されます。
  • 最初のメッセージを有効化:転送後に、転送先エージェントが最初のメッセージを再生するかどうかです。デフォルトではオフです。

LLMはこれらの条件とツールの説明を使用して、いつ、どのエージェント(番号)に転送するかを判断します。

転送ルールの設定

エージェントを作成するユーザーアカウントには、転送ルールで指定するすべての転送先エージェントに対する閲覧者以上の権限が必要です。

転送時の動作

転送が行われると、親エージェント(転送を開始するエージェント)は一部の設定値を子エージェント(会話を受け取るエージェント)に引き継ぎ、その他の設定は完全にリセットされます。

設定の継承

親エージェントは、子エージェント自身の設定にかかわらず、すべての子エージェントで以下の値を上書きします。

設定説明
クライアントイベントクライアントが送信するイベント(例:audio、interruption、user_transcript)。
TTS出力オーディオ形式エージェントの音声を送信する形式(例:pcm_16000、ulaw_8000)。
ASR入力オーディオ形式エージェントが想定するユーザーオーディオの形式(例:pcm_16000、ulaw_8000)。

さらに、親エージェントの現在の言語も引き継がれます。子エージェントがその言語をサポートしていない場合は、子エージェント自身のデフォルト言語にフォールバックします。通話後のWebhookと分析設定(評価基準やデータ収集項目を含む)も、会話全体に適用されます。

継承されない設定

その他すべての設定は子エージェントが設定します。以下を含みますが、これらに限りません。

  • プロンプト、最初のメッセージ、LLM、ワークフロー、音声、ツール、ナレッジベース
  • TTS音声、モデル、安定性、その他の音声設定(agent_output_audio_formatを除く)
  • ASRモデル、品質、キーワード(user_input_audio_formatを除く)
  • ターン/タイムアウト、言語プリセット、最大時間など

動作の不一致を避けるため、ワークフロー内の各エージェントでこれらの設定を一貫して設定してください。

Realtimeモデルを使用するエージェントは、Realtimeモデルを使用する他のエージェントとの間でのみ転送できます。

トランスクリプトとチャット履歴

完全なトランスクリプトは、会話全体を通じて保持されます。先行するすべてのエージェントのユーザーメッセージとエージェントメッセージは、チャット履歴に残ります。

転送中、transfer_to_agentツール呼び出しは子エージェントのLLMに表示される履歴から除去されるため、引き継ぎに言及せずに会話を続けられます。

通話後の評価

通話後の評価LLMは、フィルタリングされていない完全なトランスクリプト、つまりすべてのユーザーおよびエージェントメッセージと、転送を含むすべてのツール呼び出しを受け取ります。

個々のメッセージにはagent_idフィールドは含まれません。どのエージェントがどのメッセージを生成したかを判断するため、評価機能はトランスクリプト内の境界マーカーとしてtransfer_to_agentツール呼び出しを使用します。

API実装

API経由でエージェントを作成または更新する際に、transfer_to_agentシステムツールを設定できます。

from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs
elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")
# Define transfer rules with new options
transfer_rules = [
{
"agent_id": "AGENT_ID_1",
"condition": "When the user asks for billing support.",
"delay_ms": 1000, # 1 second delay
"transfer_message": "I'm connecting you to our billing specialist.",
"enable_transferred_agent_first_message": True,
},
{
"agent_id": "AGENT_ID_2",
"condition": "When the user requests advanced technical help.",
"delay_ms": 0, # Immediate transfer
"transfer_message": None, # Silent transfer
"enable_transferred_agent_first_message": False,
},
]
response = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
first_message="Hi, how can I help you today?",
prompt={
"prompt": "You are a helpful assistant.",
"built_in_tools": {
"transfer_to_agent": {
"type": "system",
"name": "transfer_to_agent",
# Optional custom description
"description": "Transfer the user to a specialized agent based on their request.",
"params": {
"system_tool_type": "transfer_to_agent",
"transfers": transfer_rules,
},
}
},
},
),
),
)
print(response)