Orchestrator Logic(編排器邏輯)

Multi-Agent Orchestrator針對(duì)每個(gè)用戶請(qǐng)求遵循一個(gè)特定流程:

1. 請(qǐng)求發(fā)起:用戶向編排器發(fā)送請(qǐng)求。

2. 分類:分類器使用大型語言模型(LLM)分析用戶的請(qǐng)求、代理描述以及當(dāng)前用戶ID和會(huì)話ID下所有代理的對(duì)話歷史。這種全面的視角使分類器能夠理解所有代理之間正在進(jìn)行的對(duì)話和上下文。

分類器確定以下情況中最合適的代理:

3. 代理選擇:分類器返回所選代理的名稱。

4. 請(qǐng)求路由:用戶的輸入被發(fā)送到所選代理。

5. 代理處理:所選代理處理請(qǐng)求。它會(huì)自動(dòng)檢索當(dāng)前用戶ID和會(huì)話ID下的自己的對(duì)話歷史。這確保了每個(gè)代理在無法訪問其他代理對(duì)話的情況下保持自己的上下文。

6. 響應(yīng)生成:代理生成響應(yīng),該響應(yīng)可能會(huì)以標(biāo)準(zhǔn)響應(yīng)模式發(fā)送,也可能會(huì)通過流式傳輸發(fā)送,具體取決于代理的能力和初始化設(shè)置。

7. 對(duì)話存儲(chǔ):編排器自動(dòng)處理將用戶的輸入和代理的響應(yīng)保存到特定用戶ID和會(huì)話ID的存儲(chǔ)中。這一步驟對(duì)于保持上下文和啟用連貫的多輪對(duì)話至關(guān)重要。關(guān)于存儲(chǔ)的關(guān)鍵點(diǎn):

8. 響應(yīng)傳遞:編排器將代理的響應(yīng)傳遞回用戶。

此流程確保每個(gè)請(qǐng)求都由最合適的代理處理,同時(shí)在整個(gè)對(duì)話過程中保持上下文。分類器具有所有代理對(duì)話的全局視圖,而單個(gè)代理只能訪問自己的對(duì)話歷史。這種架構(gòu)允許進(jìn)行智能路由和上下文感知響應(yīng),同時(shí)保持代理功能之間的分離。

編排器對(duì)對(duì)話保存和檢索的自動(dòng)處理,以及靈活的存儲(chǔ)選項(xiàng),為管理多代理場(chǎng)景中的對(duì)話上下文提供了一個(gè)強(qiáng)大且可定制的系統(tǒng)。自定義或替換分類器和代理的能力為根據(jù)特定需求定制系統(tǒng)提供了進(jìn)一步的靈活性。

Multi-Agent Orchestrator框架使您能夠利用多個(gè)代理來處理各種任務(wù)。

框架上下文中,代理可以是以下任一項(xiàng)(或一項(xiàng)或多項(xiàng)的組合):

這種靈活的架構(gòu)允許您根據(jù)應(yīng)用程序的需求融入盡可能多的代理,并以最適合您需求的方式將它們組合在一起。

每個(gè)代理都需要一個(gè)名稱和描述(以及您使用的代理類型特有的其他屬性)。

代理描述在編排過程中起著至關(guān)重要的作用。

它應(yīng)該詳細(xì)且全面,因?yàn)榫幣牌饕蕾囉诖嗣枋觯约爱?dāng)前用戶輸入和所有代理的對(duì)話歷史,來確定每個(gè)請(qǐng)求的最合適路由。

雖然框架的靈活性是一個(gè)優(yōu)勢(shì),但重要的是要注意代理之間可能存在的潛在重疊,這可能會(huì)導(dǎo)致路由錯(cuò)誤。為了幫助您分析和防止此類重疊,我們建議您深入閱讀我們的代理重疊分析部分。

代理抽象:跨平臺(tái)的統(tǒng)一處理

多代理編排器(Multi-Agent Orchestrator)框架的關(guān)鍵優(yōu)勢(shì)之一在于其代理的標(biāo)準(zhǔn)實(shí)現(xiàn)。這種標(biāo)準(zhǔn)化為不同環(huán)境帶來了顯著的靈活性和一致性。無論您是與不同的云服務(wù)提供商合作,使用各種大型語言模型(LLM),還是混合使用基于云和本地的解決方案,代理都提供了一個(gè)統(tǒng)一的接口來執(zhí)行任務(wù)。

這意味著您可以無縫地在例如Amazon Lex Bot Agent和Amazon Bedrock Agent之間切換,或使用工具進(jìn)行過渡,也可以從云托管的大型語言模型切換到本地運(yùn)行的大型語言模型,同時(shí)保持相同的代碼結(jié)構(gòu)。

此外,如果您的應(yīng)用程序需要按順序或并行地使用Bedrock LLM Agent和/或Amazon Lex Bot Agent的不同模型,您也可以輕松實(shí)現(xiàn),因?yàn)榇a實(shí)現(xiàn)已經(jīng)就緒。這種標(biāo)準(zhǔn)化方法意味著您無需為每個(gè)模型編寫新代碼;相反,您可以直接使用現(xiàn)有的代理。

為了利用這種靈活性,您只需安裝框架并導(dǎo)入所需的代理。然后,無論底層技術(shù)如何,您都可以直接使用processRequest方法調(diào)用它們。這種標(biāo)準(zhǔn)化不僅簡(jiǎn)化了開發(fā)和維護(hù)工作,還促進(jìn)了在不同平臺(tái)和技術(shù)之間輕松進(jìn)行實(shí)驗(yàn)和優(yōu)化,而無需進(jìn)行大量的代碼重構(gòu)。

這種標(biāo)準(zhǔn)化使您能夠在保持核心應(yīng)用程序代碼完整性的同時(shí),嘗試各種代理類型和配置。

編排器的主要組件

編排器由以下主要組件構(gòu)成:

編排器的每個(gè)組件都可以使用自定義實(shí)現(xiàn)進(jìn)行自定義或更換,從而提供了無與倫比的靈活性,并使該框架能夠適應(yīng)各種場(chǎng)景和特定要求。 

快速入門

為了幫助您快速啟動(dòng)多代理編排器(Multi-Agent Orchestrator)框架,我們將引導(dǎo)您逐步完成設(shè)置和運(yùn)行您的第一個(gè)多代理對(duì)話的全過程。

??在繼續(xù)之前,請(qǐng)確保您的開發(fā)環(huán)境中已安裝Node.js和npm(用于TypeScript)或Python(用于Python)。

前提條件

1.創(chuàng)建一個(gè)新項(xiàng)目:

2.使用您的AWS賬戶進(jìn)行身份驗(yàn)證

本快速入門將展示如何使用Amazon Bedrock進(jìn)行分類和代理響應(yīng)。

要按照以下步驟使用您的AWS賬戶進(jìn)行身份驗(yàn)證:

a. 如果您尚未安裝AWS CLI,請(qǐng)從AWS CLI官方頁面下載并安裝。

b. 使用您的憑證配置AWS CLI。有關(guān)如何設(shè)置AWS CLI的詳細(xì)指南,請(qǐng)參閱AWS CLI配置快速入門指南。

c. 配置完AWS CLI后,通過運(yùn)行以下命令驗(yàn)證您的身份驗(yàn)證:

終端窗口

如果成功,此命令將返回您的AWS賬戶ID、用戶ID和ARN。

默認(rèn)情況下,該框架配置如下:

分類器

使用帶有anthropic.claude-3-5-sonnet-20240620-v1:0的Bedrock Classifier實(shí)現(xiàn)

代理:使用帶有anthropic.claude-3-haiku-20240307-v1:0的Bedrock LLM Agent

重要提示

這些只是默認(rèn)設(shè)置,您可以根據(jù)需求或偏好輕松更改。

您具有以下靈活性:

請(qǐng)確保您已通過AWS控制臺(tái)請(qǐng)求了您打算使用的模型的訪問權(quán)限。

要自定義模型選擇

?? 開始操作!

1.在您的項(xiàng)目中安裝多代理編排器框架:

2.為您的快速啟動(dòng)代碼創(chuàng)建一個(gè)新文件:

創(chuàng)建一個(gè)名為quickstart.py的文件。

3.創(chuàng)建編排器:

4.添加代理:

5.發(fā)送查詢:

現(xiàn)在,讓我們運(yùn)行快速啟動(dòng)腳本:

編排器

Multi-Agent Orchestrator是框架的核心組件,負(fù)責(zé)管理代理、路由請(qǐng)求和處理對(duì)話。本頁提供了如何初始化Orchestrator的概述,并詳細(xì)列出了所有可用的配置選項(xiàng)。

初始化Orchestrator

要?jiǎng)?chuàng)建一個(gè)新的Orchestrator實(shí)例,您可以使用MultiAgentOrchestrator類:

options參數(shù)是可選的,允許您自定義Orchestrator行為的各個(gè)方面。

配置選項(xiàng)

Orchestrator在初始化時(shí)接受一個(gè)OrchestratorConfig對(duì)象。所有選項(xiàng)都是可選的,如果未指定,將使用默認(rèn)值。以下是可用選項(xiàng)的完整列表:

包含所有選項(xiàng)的示例

以下示例展示了如何使用所有可用選項(xiàng)初始化Orchestrator:

請(qǐng)記住,所有這些選項(xiàng)都是可選的。如果不指定某個(gè)選項(xiàng),Orchestrator將使用其默認(rèn)值。

默認(rèn)值

默認(rèn)配置定義如下:

在兩種實(shí)現(xiàn)中,DEFAULT_CONFIG都是具有默認(rèn)值的OrchestratorConfig實(shí)例。

可用功能

MultiAgentOrchestrator?提供了多個(gè)關(guān)鍵功能來管理代理、處理請(qǐng)求以及配置協(xié)調(diào)器。以下是每個(gè)功能的詳細(xì)介紹,解釋了其作用以及您可能會(huì)使用它的原因:

讓我們分解每個(gè)功能:

1. addAgent (TypeScript) / add_agent (Python)

2. getDefaultAgent

3. setDefaultAgent

4. setClassifier

5. getAllAgents

6. routeRequest

這些功能在配置和操作 Multi-Agent Orchestrator 中發(fā)揮著至關(guān)重要的作用。通過有效地使用它們,您可以創(chuàng)建一個(gè)靈活且強(qiáng)大的系統(tǒng),能夠跨多個(gè)域處理廣泛的用戶請(qǐng)求。

這些功能允許您配置協(xié)調(diào)器、管理代理以及處理用戶請(qǐng)求。

功能示例

以下是如何使用每個(gè)功能的實(shí)際示例:

代理選擇與默認(rèn)行為

當(dāng)用戶向多代理協(xié)調(diào)器發(fā)送請(qǐng)求時(shí),系統(tǒng)會(huì)嘗試對(duì)意圖進(jìn)行分類并選擇一個(gè)合適的代理來處理該請(qǐng)求。然而,也存在未選擇任何特定代理的情況。

未選擇代理時(shí)

如果分類器無法確定哪個(gè)代理應(yīng)該處理請(qǐng)求,可能會(huì)導(dǎo)致沒有代理被選中。在這種情況下,協(xié)調(diào)器的行為取決于USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED配置選項(xiàng):

默認(rèn)代理

默認(rèn)代理是一個(gè)配置為通用型的BedrockLLMAgent,能夠處理廣泛的主題。它在以下情況下使用:

您可以使用set_default_agent方法自定義默認(rèn)代理或完全替換它:

自定義NO_SELECTED_AGENT_MESSAGE

您可以通過在協(xié)調(diào)器配置中設(shè)置NO_SELECTED_AGENT_MESSAGE來自定義在未選擇代理時(shí)返回的消息(且USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED為False):

最佳實(shí)踐

1. 默認(rèn)代理的使用:當(dāng)您希望確保所有用戶查詢都能收到回復(fù)(即使不是來自專業(yè)代理)時(shí),請(qǐng)使用默認(rèn)代理。

2. 提示澄清:當(dāng)您希望鼓勵(lì)用戶提供更具體或清晰的請(qǐng)求時(shí),將USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED設(shè)置為False并自定義NO_SELECTED_AGENT_MESSAGE。

3. 平衡具體性和覆蓋范圍:仔細(xì)考慮您的用例。使用默認(rèn)代理可以提供更廣泛的覆蓋范圍,但可能會(huì)犧牲具體性。提示澄清可能會(huì)導(dǎo)致更準(zhǔn)確的代理選擇,但需要額外的用戶交互。

4. 監(jiān)控和迭代:定期審查未選擇代理的情況。這有助于您識(shí)別代理覆蓋范圍的空白或改進(jìn)分類過程。

通過了解和自定義這些行為,您可以調(diào)整您的多代理協(xié)調(diào)器,以為您的特定用例提供最佳的用戶體驗(yàn)。

附加說明

存儲(chǔ)選項(xiàng)允許您指定自定義存儲(chǔ)機(jī)制。默認(rèn)情況下,它使用內(nèi)存存儲(chǔ)(InMemoryChatStorage),但您可以實(shí)現(xiàn)自己的存儲(chǔ)解決方案或使用內(nèi)置選項(xiàng),如DynamoDB存儲(chǔ)。有關(guān)更多信息,請(qǐng)參閱“存儲(chǔ)”部分。

日志記錄器選項(xiàng)允許您提供一個(gè)自定義日志記錄器。如果未指定,將使用默認(rèn)日志記錄器。要了解如何實(shí)現(xiàn)自定義日志記錄器,請(qǐng)查閱“日志記錄”部分。

分類器選項(xiàng)允許您使用自定義分類器進(jìn)行意圖分類。如果未提供,將默認(rèn)使用BedrockClassifier。有關(guān)實(shí)現(xiàn)自定義分類器的詳細(xì)信息,請(qǐng)參閱“自定義分類器”文檔。

通過自定義這些選項(xiàng),您可以調(diào)整Orchestrator的行為,以滿足您的特定用例和需求。 

分類器

分類器是多代理協(xié)調(diào)器(Multi-Agent Orchestrator)的關(guān)鍵組件,負(fù)責(zé)分析用戶輸入并識(shí)別最合適的代理。協(xié)調(diào)器支持多種分類器實(shí)現(xiàn),其中Bedrock分類器和Anthropic分類器是主要選項(xiàng)。

可用分類器

流程

無論使用哪種分類器,一般流程都保持不變:

1. 協(xié)調(diào)器收集用戶輸入。

2. 分類器執(zhí)行輸入分析,考慮以下因素:

3.確定最合適的代理。

默認(rèn)情況下,如果沒有選擇代理,協(xié)調(diào)器可以配置為:

可以使用協(xié)調(diào)器中的USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED和NO_SELECTED_AGENT_MESSAGE 配置選項(xiàng)來自定義此行為。

有關(guān)這些選項(xiàng)和其他協(xié)調(diào)器配置的詳細(xì)說明,請(qǐng)參閱協(xié)調(diào)器概述頁面。

分類器的決策過程對(duì)于有效地將用戶查詢路由到最合適的代理至關(guān)重要,從而確保無縫且高效的多代理交互體驗(yàn)。

初始化

當(dāng)您通過初始化MultiAgentOrchestrator創(chuàng)建一個(gè)新的協(xié)調(diào)器時(shí),將初始化默認(rèn)的Bedrock分類器。

要使用Anthropic分類器,可以將其作為選項(xiàng)傳遞:

這樣,您就可以根據(jù)您的需求選擇合適的分類器來初始化協(xié)調(diào)器了。

自定義分類器實(shí)現(xiàn)

您可以通過擴(kuò)展抽象Classifier類來提供自己的自定義分類器實(shí)現(xiàn)。有關(guān)如何執(zhí)行此操作的詳細(xì)信息,請(qǐng)參閱“自定義分類器”部分。

測(cè)試

您可以直接使用classify方法來測(cè)試任何分類器:

這允許您:

常見問題

選擇合適的分類器

在決定使用不同的分類器時(shí),請(qǐng)考慮:

1. API訪問權(quán)限:您可以訪問和偏好的服務(wù)。

2. 模型性能:使用您的特定用例測(cè)試分類器,以確定哪個(gè)更適合您的需求。

3.成本:比較您預(yù)期使用的定價(jià)結(jié)構(gòu)。

通過徹底測(cè)試和調(diào)試您選擇的分類器,您可以確保在多代理協(xié)調(diào)器中進(jìn)行準(zhǔn)確的意圖分類和高效的查詢路由。

直接分類器訪問

帶上下文管理

測(cè)試帶有完整對(duì)話歷史記錄處理的分類器:

此方法:

不帶上下文

測(cè)試沒有對(duì)話歷史的原始分類:

最適合:

智能體

在多智能體編排器(Multi-Agent Orchestrator)中,智能體(Agent)是一個(gè)基本構(gòu)建模塊,旨在處理用戶請(qǐng)求并生成響應(yīng)。智能體抽象類(Agent Abstract Class)是所有具體智能體實(shí)現(xiàn)的基礎(chǔ),提供了通用的結(jié)構(gòu)和接口。

智能體選擇過程

多智能體編排器使用一個(gè)分類器(Classifier),通常是一個(gè)大語言模型(LLM),來為每個(gè)用戶請(qǐng)求選擇最合適的智能體。

這一過程的核心是智能體描述。這些描述至關(guān)重要,應(yīng)盡可能詳細(xì)和全面。一個(gè)精心設(shè)計(jì)的智能體描述應(yīng):

這些描述越詳細(xì)和精確,分類器就能越準(zhǔn)確地將請(qǐng)求路由到正確的智能體。這在具有多個(gè)專用智能體的復(fù)雜系統(tǒng)中尤為重要。

有關(guān)智能體選擇過程的更詳細(xì)說明,請(qǐng)參閱我們文檔中的“工作原理”部分。

為了優(yōu)化智能體選擇:

通過優(yōu)先考慮詳細(xì)的智能體描述并微調(diào)選擇過程,您可以顯著提高多智能體編排器實(shí)現(xiàn)的效率和準(zhǔn)確性。

智能體抽象類

智能體類(Agent class)是一個(gè)抽象基類,定義了系統(tǒng)中所有智能體必須具備的基本屬性和方法。它設(shè)計(jì)靈活,允許從簡(jiǎn)單的API調(diào)用者到復(fù)雜的基于LLM的對(duì)話智能體等多種實(shí)現(xiàn)。

關(guān)鍵屬性

抽象方法:process_request

任何智能體的核心功能都封裝在process_request方法中。該方法必須由所有具體智能體類實(shí)現(xiàn):

該方法返回單個(gè)響應(yīng)的ConversationMessage或流式響應(yīng)的AsyncIterable。

示例用法:

智能體選項(xiàng)

在創(chuàng)建新智能體時(shí),您可以使用AgentOptions類指定各種選項(xiàng):

直接使用智能體

當(dāng)您有單一智能體用例時(shí),可以繞過編排器直接調(diào)用智能體。這種方法利用了多智能體編排器框架的強(qiáng)大功能,同時(shí)專注于單一智能體場(chǎng)景:

這種方法適用于不需要編排但希望利用多智能體編排器框架強(qiáng)大功能的單一智能體場(chǎng)景。

這些選項(xiàng)允許您自定義智能體行為的各個(gè)方面及其配置。 

對(duì)話存儲(chǔ)

多智能體編排系統(tǒng)(Multi-Agent Orchestrator System)提供了靈活的存儲(chǔ)選項(xiàng),用于維護(hù)對(duì)話歷史記錄。這使得系統(tǒng)能夠在多次交互中保留上下文,并使智能體能夠提供更加連貫且與上下文相關(guān)的響應(yīng)。

關(guān)鍵概念

可用的存儲(chǔ)選項(xiàng)

1.內(nèi)存存儲(chǔ)(In-Memory Storage):

2.DynamoDB存儲(chǔ):

3.SQL存儲(chǔ):

4.自定義存儲(chǔ)解決方案:

選擇合適的存儲(chǔ)選項(xiàng)

通過利用這些存儲(chǔ)選項(xiàng),您可以確保多智能體編排系統(tǒng)在各種用例和部署場(chǎng)景中保持必要的上下文,從而實(shí)現(xiàn)連貫且有效的對(duì)話。 

檢索器

檢索器(Retriever)是一種組件或機(jī)制,用于從大規(guī)模數(shù)據(jù)集或數(shù)據(jù)庫中提取與查詢相關(guān)的信息。這一過程對(duì)于提升大語言模型(LLMs)的性能和準(zhǔn)確性至關(guān)重要,尤其是在需要訪問和利用外部知識(shí)源的任務(wù)中。

檢索器的關(guān)鍵作用

1.提升上下文與相關(guān)性:
檢索器能夠?yàn)榇笳Z言模型提供相關(guān)的上下文或信息,這些信息可能未包含在其訓(xùn)練數(shù)據(jù)中,或者過于具體而無法僅從模型的內(nèi)部知識(shí)生成。

2.記憶增強(qiáng):
檢索器充當(dāng)大語言模型的擴(kuò)展記憶,使其能夠訪問最新信息或特定主題的詳細(xì)數(shù)據(jù),從而提高生成響應(yīng)的相關(guān)性和準(zhǔn)確性。

3.提高效率:
檢索器允許模型按需提取必要的信息,而不是在龐大且不斷增長(zhǎng)的數(shù)據(jù)集上進(jìn)行訓(xùn)練,從而使系統(tǒng)更加高效。

通過檢索器的使用,大語言模型能夠更智能地

整合外部知識(shí),生成更準(zhǔn)確、更符合上下文的響應(yīng),同時(shí)優(yōu)化資源利用。

本文章轉(zhuǎn)載微信公眾號(hào)@Paper易論

上一篇:

開源API網(wǎng)關(guān)APISIX分析與使用

下一篇:

好用的GPT:2025年最佳選擇與實(shí)用指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)