Framework flexible et puissant pour gérer plusieurs agents d'IA et gérer des conversations complexes.
L'orchestrateur multi-agents est un cadre flexible pour gérer plusieurs agents d'IA et gérer des conversations complexes. Il achemine intelligemment les requêtes et maintient le contexte entre les interactions.
Le système propose des composants prédéfinis pour un déploiement rapide, tout en permettant une intégration facile des agents personnalisés et des solutions de stockage de messages de conversation.
Cette adaptabilité le rend adapté à un large éventail d'applications, des chatbots simples aux systèmes d'IA sophistiqués, pour s'adapter efficacement aux exigences et à la mise à l'échelle.
Pour avoir rapidement une idée de l'orchestrateur multi-agents, nous avons fourni une application de démonstration avec quelques agents de base. Cette démo interactive présente les capacités de l'orchestrateur dans une interface conviviale. Pour en savoir plus sur la configuration et l'exécution de l'application de démonstration, veuillez vous référer à notre section d'application de démonstration.
Dans l'enregistrement d'écran ci-dessous, nous montrons une version étendue de l'application de démonstration qui utilise 6 agents spécialisés:
Regardez le système change de contexte de manière transparente entre divers sujets, de la réservation de vols à la vérification des conditions météorologiques, de la résolution des problèmes mathématiques et de la fourniture d'informations sur la santé. Remarquez comment l'agent approprié est sélectionné pour chaque requête, en maintenant la cohérence même avec de brèves entrées de suivi.
La démonstration met en évidence la capacité du système à gérer les conversations complexes et multiples tout en préservant le contexte et en tirant parti des agents spécialisés dans divers domaines.
Pour avoir rapidement une idée de l'orchestrateur multi-agents, consultez notre application de démonstration. Des exemples de code supplémentaires sont disponibles à la fois dans la documentation et dans le dossier examples .
Obtenez une expérience pratique avec l'orchestrateur multi-agents grâce à notre ensemble d'exemples divers:
examples :chat-demo-app : Interface de chat Web avec plusieurs agents spécialisésecommerce-support-simulator : Système de support client alimenté en AIchat-chainlit-app : Application de chat construite avec Chainlitfast-api-streaming : mise en œuvre de Fastapi avec support de streamingtext-2-structured-output : langage naturel aux données structuréesbedrock-inline-agents : échantillon d'agents en ligne du substratum rocheuxTous les exemples sont disponibles dans les implémentations Python et TypeScript. Consultez notre documentation pour des guides complets sur la configuration et l'utilisation de l'orchestrateur multi-agents!
Découvrez des implémentations créatives et des applications diverses de l'orchestrateur multi-agents:
De «Bonjour» à «Boarding Pass»: chatbot AI multilingue pour les réservations de vol
Cet article montre comment construire un chatbot multilingue à l'aide du cadre d'orchestrateur multi-agents. L'article explique comment utiliser un Amazon Lex Bot en tant qu'agent, ainsi que 2 autres nouveaux agents pour le faire fonctionner dans de nombreuses langues avec seulement quelques lignes de code.
Au-delà des répliques automobiles: la construction d'un système de soutien au commerce électronique alimenté par AI
Cet article montre comment créer un système multi-agents axé sur l'IA pour une prise en charge automatisée de messagerie électronique du commerce électronique. Il couvre l'architecture et la configuration d'agents d'IA spécialisés à l'aide du cadre d'orchestrateur multi-agents, intégrant le traitement automatisé avec une surveillance humaine dans la boucle. Le guide explore l'ingestion par e-mail, le routage intelligent, la génération de réponse automatisée et la vérification humaine, offrant une approche complète pour équilibrer l'efficacité de l'IA avec l'expertise humaine dans le support client.
Parlez, AI: exprimant vos agents avec Amazon Connect, Lex et Bouetter
Cet article montre comment construire un centre d'appels client d'IA. Il couvre l'architecture et la configuration d'agents d'IA spécialisés en utilisant le cadre d'orchestrateur multi-agents interagissant avec la voix via Amazon Connect et Amazon Lex .
npm install multi-agent-orchestratorL'exemple suivant montre comment utiliser l'orchestrateur multi-agents avec deux types d'agents différents: un agent LLM du fondement avec une prise en charge de l'API Converse et un agent Lex Bot. Cela présente la flexibilité du système dans l'intégration de divers services d'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-orchestratorVoici un exemple de Python équivalent démontrant l'utilisation de l'orchestrateur multi-agent avec un agent LLM du fondement et un agent 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 ())Ces exemples présentent:
Si vous souhaitez utiliser Anthropic ou OpenAI pour le classificateur et / ou les agents, assurez-vous d'installer le multi-agent-orchestrator avec la fonctionnalité supplémentaire pertinente.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "Pour une installation complète (y compris anthropic et openai):
pip install " multi-agent-orchestrator[all] " Nous accueillons les contributions! Veuillez consulter notre guide de contribution pour plus de détails.
Grand cri à nos super contributeurs! Merci d'avoir amélioré ce projet! ?
Veuillez consulter notre guide de contribution pour les lignes directrices sur la façon de proposer des bugfix et des améliorations.
Ce projet est concédé sous licence Apache 2.0 - voir le fichier de licence pour plus de détails.
Ce projet utilise la police JetBrainsmono NF, sous licence SIL Open Font Licence 1.1. Pour les détails complets de la licence, voir Font-license.md.