Marco flexible y potente para administrar múltiples agentes de IA y manejar conversaciones complejas.
El orquestador de múltiples agentes es un marco flexible para administrar múltiples agentes de IA y manejar conversaciones complejas. Enruta de manera inteligente las consultas y mantienen el contexto a través de las interacciones.
El sistema ofrece componentes previos a la construcción para una implementación rápida, al tiempo que permite una fácil integración de agentes personalizados y soluciones de almacenamiento de mensajes de conversación.
Esta adaptabilidad lo hace adecuado para una amplia gama de aplicaciones, desde chatbots simples hasta sofisticados sistemas de IA, acomodando diversos requisitos y escala de manera eficiente.
Para tener una idea rápidamente del orquestador de múltiples agentes, hemos proporcionado una aplicación de demostración con algunos agentes básicos. Esta demostración interactiva muestra las capacidades del orquestador en una interfaz fácil de usar. Para obtener más información sobre cómo configurar y ejecutar la aplicación de demostración, consulte nuestra sección de aplicaciones de demostración.
En la grabación de pantalla a continuación, demostramos una versión extendida de la aplicación de demostración que utiliza 6 agentes especializados:
Observe cómo el sistema cambia a la perfección el contexto entre diversos temas, desde reservar vuelos hasta verificar el clima, resolver problemas matemáticos y proporcionar información de salud. Observe cómo se selecciona el agente apropiado para cada consulta, manteniendo la coherencia incluso con breves entradas de seguimiento.
La demostración destaca la capacidad del sistema para manejar conversaciones complejas y de múltiples vueltas al tiempo que preserva el contexto y aprovecha a los agentes especializados en varios dominios.
Para tener una idea rápidamente del orquestador de múltiples agentes, consulte nuestra aplicación de demostración. Hay ejemplos de código adicionales disponibles tanto en la documentación como en la carpeta examples
.
Obtenga experiencia práctica con el orquestador de múltiples agentes a través de nuestro conjunto diverso de ejemplos:
examples
:chat-demo-app
: interfaz de chat basada en la web con múltiples agentes especializadosecommerce-support-simulator
: sistema de atención al cliente con IAchat-chainlit-app
: Aplicación de chat construida con fraillitfast-api-streaming
: Implementación de FastAPI con soporte de transmisióntext-2-structured-output
: lenguaje natural a datos estructuradosbedrock-inline-agents
: Muestra de agentes en línea de roca madreTodos los ejemplos están disponibles en implementaciones de Python y TypeScript. ¡Consulte nuestra documentación para obtener guías integrales sobre la configuración y el uso del orquestador de múltiples agentes!
Descubra implementaciones creativas y diversas aplicaciones del orquestador de múltiples agentes:
Desde 'Bonjour' hasta 'Pase de embarque': chatbot de IA multilingüe para reservas de vuelo
Este artículo demuestra cómo construir un chatbot multilingüe utilizando el marco de orquestadores de múltiples agentes. El artículo explica cómo usar un BOT LEX de Amazon como agente, junto con otros 2 agentes nuevos para que funcione en muchos idiomas con solo unas pocas líneas de código.
Más allá de las reemplazos automáticos: construir un sistema de soporte de comercio electrónico con IA
Este artículo demuestra cómo construir un sistema múltiple de agente múltiple impulsado por AI para el soporte de correo electrónico automatizado de los clientes de comercio electrónico. Cubre la arquitectura y la configuración de agentes de IA especializados que utilizan el marco de orquestadores de múltiples agentes, integrando el procesamiento automatizado con supervisión humana en el bucle. La guía explora la ingestión de correo electrónico, el enrutamiento inteligente, la generación de respuesta automatizada y la verificación humana, proporcionando un enfoque integral para equilibrar la eficiencia de la IA con la experiencia humana en atención al cliente.
Hable Up, AI: expresando a sus agentes con Amazon Connect, Lex y Bedrock
Este artículo demuestra cómo construir un centro de llamadas de clientes de IA. Cubre la arquitectura y la configuración de agentes de IA especializados que utilizan el marco de orquestadores de múltiples agentes que interactúa con la voz a través de Amazon Connect y Amazon Lex .
npm install multi-agent-orchestrator
El siguiente ejemplo demuestra cómo usar el orquestador de múltiples agentes con dos tipos diferentes de agentes: un agente LLM con soporte de API Converse y un agente LEX Bot. Esto muestra la flexibilidad del sistema en la integración de varios servicios 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
Aquí hay un ejemplo de Python equivalente que demuestra el uso del orquestador de múltiples agentes con un agente LLM de base y un agente 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 ())
Estos ejemplos muestran:
Si desea usar antrópico o OpenAI para clasificadores y/o agentes, asegúrese de instalar el orquestador de múltiples agentes con la función adicional relevante.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "
Para una instalación completa (incluyendo antrópico y OpenAI):
pip install " multi-agent-orchestrator[all] "
¡Agradecemos las contribuciones! Consulte nuestra guía de contribución para obtener más detalles.
¡Gran grito a nuestros increíbles contribuyentes! ¡Gracias por mejorar este proyecto! ?
Consulte nuestra Guía de contribución para obtener pautas sobre cómo proponer las correcciones de errores y las mejoras.
Este proyecto tiene licencia bajo la licencia Apache 2.0; consulte el archivo de licencia para obtener más detalles.
Este proyecto utiliza la fuente JetBrainsMono NF, con licencia bajo la Licencia SIL Open Font 1.1. Para obtener detalles completos de la licencia, consulte Font-License.md.