여러 AI 에이전트를 관리하고 복잡한 대화를 처리하기위한 유연하고 강력한 프레임 워크.
다중 에이전트 오케스트레이터는 여러 AI 에이전트를 관리하고 복잡한 대화를 처리하기위한 유연한 프레임 워크입니다. 지능적으로 쿼리를 경로로 경주하고 상호 작용에서 컨텍스트를 유지합니다.
이 시스템은 빠른 배포를위한 사전 제작 된 구성 요소를 제공하며 사용자 정의 에이전트 및 대화 메시지 스토리지 솔루션을 쉽게 통합 할 수 있습니다.
이 적응성은 간단한 챗봇부터 정교한 AI 시스템에 이르기까지 다양한 응용 프로그램에 적합하며 다양한 요구 사항을 수용하고 효율적으로 확장합니다.
다중 에이전트 오케스트레이터를 신속하게 느끼기 위해 몇 가지 기본 에이전트와 데모 앱을 제공했습니다. 이 대화식 데모는 사용자 친화적 인 인터페이스에서 오케스트레이터의 기능을 보여줍니다. 데모 앱 설정 및 실행에 대한 자세한 내용은 데모 앱 섹션을 참조하십시오.
아래 화면 녹화에서 6 개의 특수 에이전트를 사용하는 확장 버전의 데모 앱을 보여줍니다.
시스템이 항공편 예약에서 날씨 확인, 수학 문제 해결 및 건강 정보 제공에 이르기까지 다양한 주제 간의 상황을 원활하게 전환하는 것을 지켜보십시오. 간단한 후속 입력으로도 일관성을 유지하는 각 쿼리에 대해 적절한 에이전트가 어떻게 선택되는지 확인하십시오.
데모는 복잡한 다중 회전 대화를 처리하는 시스템의 기능을 강조하면서 컨텍스트를 보존하고 다양한 도메인에서 특수 에이전트를 활용합니다.
다중 에이전트 오케스트레이터를 신속하게 느끼려면 데모 앱을 확인하십시오. 추가 코드 예제는 문서와 examples
폴더 모두에서 제공됩니다.
다양한 예제를 통해 다중 에이전트 오케스트레이터에 대한 실습 경험을 얻으십시오.
examples
폴더에서 예제 구현을 탐색하십시오.chat-demo-app
: 여러 전문 에이전트와 웹 기반 채팅 인터페이스ecommerce-support-simulator
: AI 기반 고객 지원 시스템chat-chainlit-app
: Chainlit으로 구축 된 채팅 응용 프로그램fast-api-streaming
: 스트리밍 지원을 통한 FastApi 구현text-2-structured-output
: 자연 언어에서 구조화 된 데이터bedrock-inline-agents
: 기반암 인라인 에이전트 샘플모든 예제는 Python 및 TypeScript 구현 모두에서 사용할 수 있습니다. 다중 에이전트 오케스트레이터 설정 및 사용에 대한 포괄적 인 가이드에 대한 문서를 확인하십시오!
Multi-Agent Orchestrator의 창의적 구현 및 다양한 응용 프로그램을 발견하십시오.
'Bonjour'에서 '탑승권'까지 : 비행 예약을위한 다국어 AI 챗봇
이 기사는 다중 에이전트 오케스트레이터 프레임 워크를 사용하여 다국어 챗봇을 구축하는 방법을 보여줍니다. 이 기사는 Amazon Lex Bot을 에이전트로 사용하는 방법과 다른 2 개의 새로운 에이전트와 함께 몇 줄의 코드로 많은 언어로 작동하도록합니다.
자동 참조 이상 : AI 기반 전자 상거래 지원 시스템 구축
이 기사에서는 자동화 된 전자 상거래 고객 이메일 지원을위한 AI 중심의 다중 에이전트 시스템을 구축하는 방법을 보여줍니다. 다중 에이전트 오케스트레이터 프레임 워크를 사용하여 전문화 된 AI 에이전트의 아키텍처 및 설정을 다루며 자동화 된 프로세싱을 인간의 루프 감독과 통합합니다. 이 안내서는 이메일 섭취, 지능형 라우팅, 자동 응답 생성 및 인간 검증을 탐구하여 AI 효율성의 인적 전문 지식과 고객 지원에 대한 전문 지식의 균형을 맞추는 포괄적 인 접근 방식을 제공합니다.
말하기
이 기사는 AI 고객 콜센터를 구축하는 방법을 보여줍니다. 여기에는 Amazon Connect 및 Amazon Lex를 통해 음성과 상호 작용하는 다중 에이전트 오케스트레이터 프레임 워크를 사용하여 전문 AI 에이전트의 아키텍처 및 설정을 다룹니다.
npm install multi-agent-orchestrator
다음 예제는 두 가지 유형의 에이전트와 함께 다중 에이전트 오케스트레이터를 사용하는 방법을 보여줍니다 : Converse API 지원이있는 기반암 LLM 에이전트 및 LEX BOT 에이전트. 이것은 다양한 AI 서비스를 통합 할 때 시스템의 유연성을 보여줍니다.
import { MultiAgentOrchestrator , BedrockLLMAgent , LexBotAgent } from "multi-agent-orchestrator" ;
const orchestrator = new MultiAgentOrchestrator ( ) ;
// Add a Bedrock LLM Agent with Converse API support
orchestrator . addAgent (
new BedrockLLMAgent ( {
name : "Tech Agent" ,
description :
"Specializes in technology areas including software development, hardware, AI, cybersecurity, blockchain, cloud computing, emerging tech innovations, and pricing/costs related to technology products and services." ,
streaming : true
} )
) ;
// Add a Lex Bot Agent for handling travel-related queries
orchestrator . addAgent (
new LexBotAgent ( {
name : "Travel Agent" ,
description : "Helps users book and manage their flight reservations" ,
botId : process . env . LEX_BOT_ID ,
botAliasId : process . env . LEX_BOT_ALIAS_ID ,
localeId : "en_US" ,
} )
) ;
// Example usage
const response = await orchestrator . routeRequest (
"I want to book a flight" ,
'user123' ,
'session456'
) ;
// Handle the response (streaming or non-streaming)
if ( response . streaming == true ) {
console . log ( "n** RESPONSE STREAMING ** n" ) ;
// Send metadata immediately
console . log ( `> Agent ID: ${ response . metadata . agentId } ` ) ;
console . log ( `> Agent Name: ${ response . metadata . agentName } ` ) ;
console . log ( `> User Input: ${ response . metadata . userInput } ` ) ;
console . log ( `> User ID: ${ response . metadata . userId } ` ) ;
console . log ( `> Session ID: ${ response . metadata . sessionId } ` ) ;
console . log (
`> Additional Parameters:` ,
response . metadata . additionalParams
) ;
console . log ( `n> Response: ` ) ;
// Stream the content
for await ( const chunk of response . output ) {
if ( typeof chunk === "string" ) {
process . stdout . write ( chunk ) ;
} else {
console . error ( "Received unexpected chunk type:" , typeof chunk ) ;
}
}
} else {
// Handle non-streaming response (AgentProcessingResult)
console . log ( "n** RESPONSE ** n" ) ;
console . log ( `> Agent ID: ${ response . metadata . agentId } ` ) ;
console . log ( `> Agent Name: ${ response . metadata . agentName } ` ) ;
console . log ( `> User Input: ${ response . metadata . userInput } ` ) ;
console . log ( `> User ID: ${ response . metadata . userId } ` ) ;
console . log ( `> Session ID: ${ response . metadata . sessionId } ` ) ;
console . log (
`> Additional Parameters:` ,
response . metadata . additionalParams
) ;
console . log ( `n> Response: ${ response . output } ` ) ;
}
# Optional: Set up a virtual environment
python -m venv venv
source venv/bin/activate # On Windows use `venvScriptsactivate`
pip install multi-agent-orchestrator
다음은 기반암 LLM 에이전트와 Lex BOT 에이전트가있는 다중 에이전트 오케스트레이터의 사용을 보여주는 동등한 파이썬 예입니다.
import os
import asyncio
from multi_agent_orchestrator . orchestrator import MultiAgentOrchestrator
from multi_agent_orchestrator . agents import BedrockLLMAgent , LexBotAgent , BedrockLLMAgentOptions , LexBotAgentOptions , AgentCallbacks
orchestrator = MultiAgentOrchestrator ()
class BedrockLLMAgentCallbacks ( AgentCallbacks ):
def on_llm_new_token ( self , token : str ) -> None :
# handle response streaming here
print ( token , end = '' , flush = True )
tech_agent = BedrockLLMAgent ( BedrockLLMAgentOptions (
name = "Tech Agent" ,
streaming = True ,
description = "Specializes in technology areas including software development, hardware, AI,
cybersecurity, blockchain, cloud computing, emerging tech innovations, and pricing/costs
related to technology products and services." ,
model_id = "anthropic.claude-3-sonnet-20240229-v1:0" ,
callbacks = BedrockLLMAgentCallbacks ()
))
orchestrator . add_agent ( tech_agent )
# Add a Lex Bot Agent for handling travel-related queries
orchestrator . add_agent (
LexBotAgent ( LexBotAgentOptions (
name = "Travel Agent" ,
description = "Helps users book and manage their flight reservations" ,
bot_id = os . environ . get ( 'LEX_BOT_ID' ),
bot_alias_id = os . environ . get ( 'LEX_BOT_ALIAS_ID' ),
locale_id = "en_US" ,
))
)
async def main ():
# Example usage
response = await orchestrator . route_request (
"I want to book a flight" ,
'user123' ,
'session456'
)
# Handle the response (streaming or non-streaming)
if response . streaming :
print ( " n ** RESPONSE STREAMING ** n " )
# Send metadata immediately
print ( f"> Agent ID: { response . metadata . agent_id } " )
print ( f"> Agent Name: { response . metadata . agent_name } " )
print ( f"> User Input: { response . metadata . user_input } " )
print ( f"> User ID: { response . metadata . user_id } " )
print ( f"> Session ID: { response . metadata . session_id } " )
print ( f"> Additional Parameters: { response . metadata . additional_params } " )
print ( " n > Response: " )
# Stream the content
async for chunk in response . output :
if isinstance ( chunk , str ):
print ( chunk , end = '' , flush = True )
else :
print ( f"Received unexpected chunk type: { type ( chunk ) } " , file = sys . stderr )
else :
# Handle non-streaming response (AgentProcessingResult)
print ( " n ** RESPONSE ** n " )
print ( f"> Agent ID: { response . metadata . agent_id } " )
print ( f"> Agent Name: { response . metadata . agent_name } " )
print ( f"> User Input: { response . metadata . user_input } " )
print ( f"> User ID: { response . metadata . user_id } " )
print ( f"> Session ID: { response . metadata . session_id } " )
print ( f"> Additional Parameters: { response . metadata . additional_params } " )
print ( f" n > Response: { response . output . content } " )
if __name__ == "__main__" :
asyncio . run ( main ())
이 예제는 다음과 같습니다.
분류기 및/또는 에이전트 에인형 또는 OpenAI를 사용하려면 관련 추가 기능을 사용하여 다중 에이전트-연장기를 설치하십시오.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "
완전한 설치 (인류 및 OpenAi 포함) :
pip install " multi-agent-orchestrator[all] "
우리는 기여를 환영합니다! 자세한 내용은 기고 안내서를 참조하십시오.
우리의 멋진 기고자들에게 큰 소리를 지르십시오! 이 프로젝트를 더 좋게 만들어 주셔서 감사합니다! ?
버그 픽스 및 개선을 제안하는 방법에 대한 지침은 기고 안내서를 참조하십시오.
이 프로젝트는 Apache 2.0 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.
이 프로젝트는 SIL Open Font 라이센스 1.1에 따라 라이센스가 부여 된 JetBrainsmono NF 글꼴을 사용합니다. 전체 라이센스 세부 정보는 Font-License.md를 참조하십시오.