Estrutura flexível e poderosa para gerenciar vários agentes de IA e lidar com conversas complexas.
O orquestrador multi-agente é uma estrutura flexível para gerenciar vários agentes de IA e lidar com conversas complexas. Ele direciona inteligentemente as consultas e mantém o contexto entre as interações.
O sistema oferece componentes pré-construídos para implantação rápida, além de permitir fácil integração de agentes personalizados e soluções de armazenamento de mensagens de conversa.
Essa adaptabilidade o torna adequado para uma ampla gama de aplicações, desde chatbots simples a sistemas de IA sofisticados, acomodando diversos requisitos e dimensionando com eficiência.
Para ter uma ideia rapidamente do orquestrador multi-agente, fornecemos a um aplicativo de demonstração alguns agentes básicos. Essa demonstração interativa mostra os recursos do orquestrador em uma interface amigável. Para saber mais sobre como configurar e executar o aplicativo de demonstração, consulte a seção de aplicativos de demonstração.
Na gravação da tela abaixo, demonstramos uma versão estendida do aplicativo de demonstração que usa 6 agentes especializados:
Observe como o sistema alterna perfeitamente o contexto entre diversos tópicos, desde a reserva de voos até a verificação do clima, resolvendo problemas de matemática e fornecimento de informações de saúde. Observe como o agente apropriado é selecionado para cada consulta, mantendo a coerência, mesmo com breves entradas de acompanhamento.
A demonstração destaca a capacidade do sistema de lidar com conversas complexas e de várias turnos, preservando o contexto e alavancando agentes especializados em vários domínios.
Para ter uma ideia rapidamente do orquestrador multi-agente, consulte nosso aplicativo de demonstração. Exemplos de código adicionais estão disponíveis na pasta Documentation e examples
.
Obtenha experiência prática com o orquestrador multi-agente através de nosso conjunto diversificado de exemplos:
examples
:chat-demo-app
: interface de bate-papo baseada na Web com vários agentes especializadosecommerce-support-simulator
: sistema de suporte ao cliente movido a IAchat-chainlit-app
: Aplicativo de bate-papo construído com o ChainLitfast-api-streaming
: implementação do FASTAPI com suporte de streamingtext-2-structured-output
: Linguagem natural para dados estruturadosbedrock-inline-agents
: Amostra de agentes em linha de rochaTodos os exemplos estão disponíveis nas implementações Python e TypeScript. Confira nossa documentação para obter guias abrangentes sobre a configuração e o uso do orquestrador multi-agente!
Descubra implementações criativas e diversas aplicações do orquestrador multi-agente:
De 'Bonjour' a 'Passo de embarque': Multilingual AI Chatbot para reservas de vôo
Este artigo demonstra como criar um chatbot multilíngue usando a estrutura de orquestrator multi-agente. O artigo explica como usar um bot da Amazon Lex como agente, juntamente com outros 2 novos agentes para fazê -lo funcionar em vários idiomas com apenas algumas linhas de código.
Além de replias automáticas: Construindo um sistema de suporte de comércio eletrônico movido a IA
Este artigo demonstra como criar um sistema multi-agente orientado a IA para suporte automatizado de email de comércio eletrônico. Ele abrange a arquitetura e a configuração de agentes de IA especializados usando a estrutura de orquestratores multi-agente, integrando o processamento automatizado com a supervisão humana no loop. O guia explora a ingestão de email, o roteamento inteligente, a geração automatizada de respostas e a verificação humana, fornecendo uma abordagem abrangente para equilibrar a eficiência da IA com a experiência humana no suporte ao cliente.
Fale, ai: expressando seus agentes com Amazon Connect, Lex e Bedrock
Este artigo demonstra como criar um call center do cliente de IA. Ele abrange a arquitetura e a configuração de agentes especializados de IA usando a estrutura de orquestrator multi-agente que interage com a voz via Amazon Connect e Amazon Lex .
npm install multi-agent-orchestrator
O exemplo a seguir demonstra como usar o orquestrador multi-agente com dois tipos diferentes de agentes: um agente Bedrock LLM com suporte API CONVERSE e um agente LEX Bot. Isso mostra a flexibilidade do sistema na integração de vários serviços de IA.
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
Aqui está um exemplo python equivalente demonstrando o uso do orquestrador multi-agente com um agente Bedrock LLM e um agente BOT LEX:
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 ())
Esses exemplos mostram:
Se você deseja usar antropia ou OpenAI para classificador e/ou agentes, instale o orquestrador multi-agente com o recurso extra relevante.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "
Para uma instalação completa (incluindo antropia e OpenAI):
pip install " multi-agent-orchestrator[all] "
Congratulamo -nos com contribuições! Consulte o nosso guia contribuinte para obter mais detalhes.
Grande grito para nossos incríveis colaboradores! Obrigado por melhorar este projeto! ?
Consulte nosso guia contribuinte para obter diretrizes sobre como propor bugs e melhorias.
Este projeto está licenciado sob a licença Apache 2.0 - consulte o arquivo de licença para obter detalhes.
Este projeto usa a fonte JetBrainsmono NF, licenciada sob a licença de fonte SIL Open 1.1. Para detalhes completos da licença, consulte Font-License.md.