إطار عمل مرن وقوي لإدارة وكلاء الذكاء الاصطناعي المتعددة والتعامل مع المحادثات المعقدة.
يعد Orchestrator متعدد الوكلاء إطارًا مرنًا لإدارة وكلاء الذكاء الاصطناعي المتعددة والتعامل مع المحادثات المعقدة. إنه يوجه بذكاء الاستعلامات ويحافظ على السياق عبر التفاعلات.
يوفر النظام مكونات تم إنشاؤها مسبقًا للنشر السريع ، مع السماح أيضًا بالتكامل السهل للوكلاء المخصصين وحلول تخزين رسائل المحادثة.
هذه القدرة على التكيف تجعلها مناسبة لمجموعة واسعة من التطبيقات ، بدءًا من برامج chatbots البسيطة إلى أنظمة الذكاء الاصطناعى المتطورة ، واستيعاب المتطلبات المتنوعة والتوسيع بكفاءة.
للحصول على إحساس سريع بالنسبة إلى Orchestrator متعدد الوكلاء ، قمنا بتزويد تطبيق تجريبي ببعض الوكلاء الأساسيين. يعرض هذا العرض التوضيحي التفاعلي إمكانيات Orchestrator في واجهة سهلة الاستخدام. لمعرفة المزيد حول إعداد التطبيق التجريبي وتشغيله ، يرجى الرجوع إلى قسم التطبيق التجريبي الخاص بنا.
في تسجيل الشاشة أدناه ، نقدم نسخة ممتدة من التطبيق التجريبي الذي يستخدم 6 وكلاء متخصصين:
شاهد النظام بسلاسة السياق بين المواضيع المتنوعة ، من حجز الرحلات الجوية إلى التحقق من الطقس ، وحل مشاكل الرياضيات ، وتوفير المعلومات الصحية. لاحظ كيفية تحديد الوكيل المناسب لكل استعلام ، والحفاظ على التماسك حتى مع مدخلات متابعة موجزة.
يسلط العرض التوضيحي الضوء على قدرة النظام على التعامل مع المحادثات المعقدة متعددة المنعطفات مع الحفاظ على السياق والاستفادة من الوكلاء المتخصصين عبر مختلف المجالات.
للحصول على إحساس بسرعة على أوركستور متعدد الوكلاء ، تحقق من تطبيقنا التجريبي. تتوفر أمثلة رمز إضافية في كل من الوثائق ومجلد examples
.
احصل على تجربة عملية مع أوركستور متعدد الوكلاء من خلال مجموعة متنوعة من الأمثلة:
examples
:chat-demo-app
: واجهة الدردشة المستندة إلى الويب مع العديد من الوكلاء المتخصصينecommerce-support-simulator
: نظام دعم العملاء الذي يعمل بذات AIchat-chainlit-app
: تطبيق الدردشة مصنوع من سلسلةfast-api-streaming
: تطبيق Fastapi مع دعم البثtext-2-structured-output
: لغة طبيعية للبيانات المنظمةbedrock-inline-agents
: عينة من عوامل الوكلاء المضمّنةجميع الأمثلة متوفرة في كل من Python و TypeScript. تحقق من وثائقنا للحصول على أدلة شاملة على إعداد واستخدام أوركستور متعدد الوكلاء!
اكتشف التطبيقات الإبداعية والتطبيقات المتنوعة من أوركستور متعدد الوكلاء:
من "Bonjour" إلى "Boarding Pass": chatbot متعددة اللغات من أجل تحفظات الطيران
توضح هذه المقالة كيفية بناء chatbot متعددة اللغات باستخدام إطار أوركستور متعدد الوكلاء. تشرح المقالة كيفية استخدام Amazon Lex Bot كوكيل ، إلى جانب اثنين من الوكلاء الجدد الآخرين لجعله يعمل في العديد من اللغات مع بضعة أسطر من التعليمات البرمجية.
ما وراء عمليات الرابع التلقائية: بناء نظام دعم للتجارة الإلكترونية يعمل الذكاء الاصطناعي
توضح هذه المقالة كيفية إنشاء نظام متعدد الوكلاء يحركهم AI لدعم البريد الإلكتروني الآلي للتجارة الإلكترونية. ويغطي بنية وإعداد وكلاء الذكاء الاصطناعى المتخصصين باستخدام إطار أوركستور متعدد الوكلاء ، ودمج المعالجة الآلية مع الإشراف على الإنسان في الحلقة. يستكشف الدليل ابتلاع البريد الإلكتروني والتوجيه الذكي وتوليد الاستجابة الآلية والتحقق البشري ، مما يوفر نهجًا شاملاً لموازنة كفاءة الذكاء الاصطناعي مع الخبرة البشرية في دعم العملاء.
تحدث ، منظمة العفو الدولية: التعبير عن وكلائكم مع Amazon Connect و Lex و Bedrock
توضح هذه المقالة كيفية إنشاء مركز اتصال عميل منظمة العفو الدولية. ويغطي الهندسة المعمارية وإعداد وكلاء الذكاء الاصطناعى المتخصصين باستخدام إطار أوركستور متعدد الوكلاء يتفاعل مع الصوت عبر Amazon Connect و Amazon Lex .
npm install multi-agent-orchestrator
يوضح المثال التالي كيفية استخدام أوركستور متعدد الوكلاء مع نوعين مختلفين من الوكلاء: عامل Bedrock LLM مع دعم API Converse وعامل BOT LEX. هذا يعرض مرونة النظام في دمج خدمات الذكاء الاصطناعي المختلفة.
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
فيما يلي مثال Python مكافئ يوضح استخدام أوركستور متعدد الوكلاء مع وكيل LLM Bedrock و 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 ())
هذه الأمثلة تظهر:
إذا كنت ترغب في استخدام الأنثروبور أو Openai للتصنيف و/أو الوكلاء ، فتأكد من تثبيت Archestrator متعدد الوكلاء مع الميزة الإضافية ذات الصلة.
pip install " multi-agent-orchestrator[anthropic] "
pip install " multi-agent-orchestrator[openai] "
للتثبيت الكامل (بما في ذلك الإنسان و Openai):
pip install " multi-agent-orchestrator[all] "
نرحب بالمساهمات! يرجى الاطلاع على دليل المساهمة لدينا لمزيد من التفاصيل.
صيحة كبيرة للمساهمين لدينا رائع! شكرا لك لجعل هذا المشروع أفضل! ؟
يرجى الاطلاع على دليلنا المساهمة للحصول على إرشادات حول كيفية اقتراح بوجات بوتس والتحسينات.
تم ترخيص هذا المشروع بموجب ترخيص Apache 2.0 - راجع ملف الترخيص للحصول على التفاصيل.
يستخدم هذا المشروع خط JetBrainsmono NF ، المرخص له بموجب ترخيص SIL Open Font 1.1. للحصول على تفاصيل الترخيص الكاملة ، راجع Font-linense.md.