에이전트 전환

정의된 조건에 따라 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, 필수): 전환할 에이전트의 0부터 시작하는 번호(구성된 전환 규칙 기준)

함수 호출 형식:

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

구현: 조건을 특정 에이전트 ID에 매핑하는 전환 규칙을 정의하세요. 현재 에이전트가 전환할 수 있는 에이전트를 구성하세요. 에이전트는 전환 구성에서 0부터 시작하는 번호로 참조됩니다.

에이전트 전환 활성화

에이전트 전환은 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)입니다.

또한 상위 에이전트의 현재 언어도 전달됩니다. 하위 에이전트가 해당 언어를 지원하지 않으면 자체 기본 언어로 대체됩니다. 통화 후 웹훅 및 분석 구성(평가 기준과 데이터 수집 항목 포함)도 전체 대화에 적용됩니다.

상속되지 않는 항목

다른 모든 구성은 하위 에이전트가 설정하며, 다음을 포함하되 이에 국한되지 않습니다.

  • 프롬프트, 첫 메시지, LLM, 워크플로, 음성, 도구 및 지식 기반
  • TTS 음성, 모델, 안정성 및 기타 음성 설정(agent_output_audio_format 제외)
  • ASR 모델, 품질 및 키워드(user_input_audio_format 제외)
  • 턴/타임아웃, 언어 프리셋, 최대 기간 등

동작 불일치를 방지하려면 워크플로의 각 에이전트에서 이러한 설정을 일관되게 구성하세요.

트랜스크립트 및 채팅 기록

전체 트랜스크립트는 전체 대화에 걸쳐 유지됩니다. 이전의 모든 에이전트가 주고받은 사용자 및 에이전트 메시지는 채팅 기록에 남아 있습니다.

전환 중에는 하위 에이전트의 LLM에 표시되는 기록에서 transfer_to_agent 도구 호출이 제거되므로, 에이전트는 인계 사실을 언급하지 않고 대화를 이어갑니다.

통화 후 평가

통화 후 평가자 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)