Kerangka kerja yang fleksibel dan kuat untuk mengelola beberapa agen AI dan menangani percakapan yang kompleks.
Orchestrator multi-agen adalah kerangka kerja yang fleksibel untuk mengelola beberapa agen AI dan menangani percakapan yang kompleks. Ini dengan cerdas merutekan kueri dan mempertahankan konteks di seluruh interaksi.
Sistem ini menawarkan komponen pra-dibangun untuk penyebaran cepat, sementara juga memungkinkan integrasi mudah dari agen kustom dan solusi penyimpanan pesan percakapan.
Kemampuan beradaptasi ini membuatnya cocok untuk berbagai aplikasi, dari chatbots sederhana hingga sistem AI yang canggih, mengakomodasi beragam persyaratan dan penskalaan secara efisien.
Untuk mendapatkan perasaan untuk orkestra multi-agen dengan cepat, kami telah menyediakan aplikasi demo dengan beberapa agen dasar. Demo interaktif ini menampilkan kemampuan orkestra dalam antarmuka yang ramah pengguna. Untuk mempelajari lebih lanjut tentang mengatur dan menjalankan aplikasi demo, silakan merujuk ke bagian aplikasi demo kami.
Dalam perekaman layar di bawah ini, kami mendemonstrasikan versi panjang aplikasi demo yang menggunakan 6 agen khusus:
Saksikan sistem dengan mulus beralih konteks antara beragam topik, dari pemesanan penerbangan hingga memeriksa cuaca, memecahkan masalah matematika, dan memberikan informasi kesehatan. Perhatikan bagaimana agen yang sesuai dipilih untuk setiap kueri, mempertahankan koherensi bahkan dengan input tindak lanjut singkat.
Demo ini menyoroti kemampuan sistem untuk menangani percakapan yang kompleks dan multi-turn sambil mempertahankan konteks dan memanfaatkan agen khusus di berbagai domain.
Untuk dengan cepat merasakan orkestra multi-agen, lihat aplikasi demo kami. Contoh kode tambahan tersedia dalam dokumentasi dan folder examples .
Dapatkan pengalaman langsung dengan orkestra multi-agen melalui beragam contoh kami:
examples :chat-demo-app : Antarmuka obrolan berbasis web dengan beberapa agen khususecommerce-support-simulator : Sistem Dukungan Pelanggan bertenaga AIchat-chainlit-app : Aplikasi obrolan yang dibangun dengan rantaifast-api-streaming : Implementasi FASTAPI dengan Dukungan Streamingtext-2-structured-output : Bahasa alami untuk data terstrukturbedrock-inline-agents : Bedrock Inline Agents SampelSemua contoh tersedia dalam implementasi Python dan TypeScript. Lihat dokumentasi kami untuk panduan komprehensif tentang pengaturan dan menggunakan orkestra multi-agen!
Temukan implementasi kreatif dan beragam aplikasi orkestra multi-agen:
Dari 'Bonjour' ke 'Boarding Pass': Multilingual AI Chatbot untuk Pemesanan Penerbangan
Artikel ini menunjukkan cara membangun chatbot multibahasa menggunakan kerangka kerja orkestra multi-agen. Artikel ini menjelaskan cara menggunakan bot Amazon Lex sebagai agen, bersama dengan 2 agen baru lainnya untuk membuatnya bekerja dalam banyak bahasa hanya dengan beberapa baris kode.
Beyond Auto-Replies: Membangun sistem pendukung e-commerce bertenaga AI
Artikel ini menunjukkan cara membangun sistem multi-agen yang digerakkan AI untuk dukungan email pelanggan e-commerce otomatis. Ini mencakup arsitektur dan pengaturan agen AI khusus yang menggunakan kerangka kerja orkestra multi-agen, mengintegrasikan pemrosesan otomatis dengan pengawasan manusia-in-loop. Panduan ini mengeksplorasi konsumsi email, perutean cerdas, generasi respons otomatis, dan verifikasi manusia, memberikan pendekatan komprehensif untuk menyeimbangkan efisiensi AI dengan keahlian manusia dalam dukungan pelanggan.
Bicaralah, AI: Menyuarakan agen Anda dengan Amazon Connect, Lex, dan Bedrock
Artikel ini menunjukkan cara membangun pusat panggilan pelanggan AI. Ini mencakup arsitektur dan pengaturan agen AI khusus menggunakan kerangka kerja orkestra multi-agen yang berinteraksi dengan suara melalui Amazon Connect dan Amazon Lex .
npm install multi-agent-orchestratorContoh berikut menunjukkan cara menggunakan orkestra multi-agen dengan dua jenis agen yang berbeda: agen LLM batuan dasar dengan dukungan API Converse dan agen Lex bot. Ini menampilkan fleksibilitas sistem dalam mengintegrasikan berbagai layanan 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-orchestratorBerikut contoh Python yang setara yang menunjukkan penggunaan orkestra multi-agen dengan agen LLM Bedrock dan agen 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 ())Contoh -contoh ini menampilkan:
Jika Anda ingin menggunakan antropik atau openai untuk classifier dan/atau agen, pastikan untuk menginstal multi-agen-orkestrator dengan fitur tambahan yang relevan.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "Untuk instalasi lengkap (termasuk antropik dan openai):
pip install " multi-agent-orchestrator[all] " Kami menyambut kontribusi! Silakan lihat panduan berkontribusi kami untuk detail lebih lanjut.
Teriakan besar untuk kontributor kami yang luar biasa! Terima kasih telah membuat proyek ini lebih baik! ?
Silakan lihat panduan berkontribusi kami untuk pedoman tentang cara mengusulkan perbaikan bug dan perbaikan.
Proyek ini dilisensikan di bawah lisensi Apache 2.0 - lihat file lisensi untuk detailnya.
Proyek ini menggunakan font JetBrainsMono NF, dilisensikan di bawah SIL Open Font License 1.1. Untuk detail lisensi lengkap, lihat font-license.md.