中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于大模型(LLM)的Agent 應(yīng)用開發(fā)

目前,業(yè)界一般認(rèn)為基于大模型的應(yīng)用集中在兩個方向上:RAG 和 Agent,無論哪一種應(yīng)用,設(shè)計(jì)、實(shí)現(xiàn)和優(yōu)化能夠充分利用大模型(LLM)潛力的應(yīng)用都需要大量的努力和專業(yè)知識。隨著開發(fā)人員開始創(chuàng)建日益復(fù)雜的LLM應(yīng)用程序,開發(fā)流程不可避免地變得更加復(fù)雜。這種流程的潛在設(shè)計(jì)空間可能是巨大而復(fù)雜的,《如何構(gòu)建基于大模型的App》一文給出了一種探索中的大模型應(yīng)用開發(fā)基礎(chǔ)框架,基本可以適用于RAG 和Agent。但是,對于面向Agent的大模型應(yīng)用開發(fā),有沒有其獨(dú)特之處呢?有沒有聚焦于Agent的大模型應(yīng)用開發(fā)框架呢? 

那么,什么又是Agent 呢?

1. 什么是Agent

這里的Agent 指的是智能體,可以追溯到明斯基的《society of mind》一書。在那本書中,明斯基對Agent的定義有點(diǎn)抽象——“社會中某個個體經(jīng)過協(xié)商后可求得問題的解,這個個體就是agent”。在計(jì)算機(jī)領(lǐng)域,agent是一種通過傳感器感知其環(huán)境,并通過執(zhí)行器作用于該環(huán)境的實(shí)體,因此,可以把實(shí)體定義為一種從感知序列到實(shí)體動作的映射。一般認(rèn)為,Agent是指駐留在某一環(huán)境下,能持續(xù)自主地發(fā)揮作用,具備自主性、反應(yīng)性、社會性、主動性等特征的計(jì)算實(shí)體。

智能,是Agent 與環(huán)境相互作用的涌現(xiàn)屬性。

1.1 Agent 的結(jié)構(gòu)與特性

Agent 的一般結(jié)構(gòu)如下圖所示:

Agent 的主要特性有:

● 自主性(Autonomy) :運(yùn)行無需人類或其它 Agent 的直接干預(yù),對其自身行為及內(nèi)部狀態(tài)進(jìn)行某種控制。

● 社會性(Social Ability) 能通過某種 通信與其它 Agent(或人類)進(jìn)行交互。交互主要有 三種類型:協(xié)作(Cooperation)、協(xié)調(diào)(Coordination)和協(xié)商 (Negotiation)。

● 反應(yīng)性(Reactivity):能感知環(huán)境(可以是物理世界、一個經(jīng)圖形用戶接口連接的用戶、一系列其 它Agent、Internet 或所有這些的組合),并能對環(huán)境的變化及時作出反應(yīng)。

● 主動性(Pro-activeness):不但能對環(huán)境作出反應(yīng),能夠積極主動地做出使其目標(biāo)得以實(shí)現(xiàn)的行為。

如果嘗試對Agent做一點(diǎn)兒形式化表達(dá),可能是這樣的:

Agent = platform+ agent program
platform = computing device + sensor+ action
agent program 是 agent function 的真子集

1.2 大模型領(lǐng)域中的Agent

在大模型領(lǐng)域,大模型替代了傳統(tǒng)agent 中的規(guī)則引擎以及知識庫,Agent提供了并尋求推理、觀察、批評和驗(yàn)證的對話通道。特別是當(dāng)配置了正確的提示和推理設(shè)置時,單個LLM就可以顯示出廣泛的功能 ,不同配置的Agent之間的對話可以幫助以模塊化并以互補(bǔ)的方式將這些廣泛的LLM功能結(jié)合起來。

開發(fā)人員可以輕松、快速地創(chuàng)建具有不同角色的Agent,例如,使用Agent來編寫代碼、執(zhí)行代碼、連接人工反饋、驗(yàn)證輸出等。通過選擇和配置內(nèi)置功能的子集,Agent的后端也可以很容易地進(jìn)行擴(kuò)展,以允許更多的自定義行為。

2. 什么是Multi-Agent

Multi-Agent(多智能體系統(tǒng)) 是指由多個自主個體組成的群體系統(tǒng),其目標(biāo)是通過個體間的相互信息通信和交互作用。

一般地,Multi-Agent由一系列相互作用的Agent及其相應(yīng)的組織規(guī)則和信息交互協(xié)議構(gòu)成,內(nèi)部的各個Agent之間通過相互通信、合作、競爭等方式,完成單個Agent不能完成的,大量而又復(fù)雜的工作,是“系統(tǒng)的系統(tǒng)”。

2.1 Multi-Agent 的系統(tǒng)分類和特點(diǎn)

Multi-Agent 系統(tǒng)(MAS) 主要可以分成以下類別:

Multi-Agent系統(tǒng)的主要具有以下的特點(diǎn):

  1. ?自主性。在Multi-Agent系統(tǒng)中,每個Agent都能管理自身的行為并做到自主合作或者競爭。

  2. 容錯性。Agent可以共同形成合作的系統(tǒng)用以完成獨(dú)立或者共同的目標(biāo),如果某幾個智能體出現(xiàn)了故障,其他智能體將自主地適應(yīng)新的環(huán)境并繼續(xù)工作,不會使整個系統(tǒng)陷入故障狀態(tài)。

  3. 靈活性和可擴(kuò)展性。Multi-Agent系統(tǒng)本身采用分布式設(shè)計(jì),Agent具有高內(nèi)聚低耦合的特性,使得系統(tǒng)表現(xiàn)出極強(qiáng)的可擴(kuò)展性。

  4. 協(xié)作能力。Multi-Agent系統(tǒng)是分布式系統(tǒng),Agent之間可以通過合適的策略相互協(xié)作完成全局目標(biāo)。

2.2 大模型領(lǐng)域中的Multi-Agent

具體而言, 在基于大模型的應(yīng)用領(lǐng)域中,當(dāng)復(fù)雜任務(wù)被分解成更簡單的子任務(wù)時,LLM已經(jīng)被證明了擁有解決復(fù)雜任務(wù)的能力。Multi-Agent 的通信與協(xié)作可以通過“對話”這一直觀的方式實(shí)現(xiàn)這種子任務(wù)的分拆和集成。

為了使基于大模型的Agent適合于Multi-Agent的對話,每個Agent都可以進(jìn)行對話,它們可以接收、響應(yīng)和響應(yīng)消息。當(dāng)配置正確時 ,Agent可以自動與其他代理進(jìn)行多次對話,或者在某些對話輪次中請求人工輸入,從而通過人工反饋形成RLHF??蓪υ挼腁gent設(shè)計(jì)利用了LLM通過聊天獲取反饋并取得進(jìn)展的強(qiáng)大能力,還允許以模塊化的方式組合LLM的功能。

3. 基于大模型的常見Agent 和 Multi-Agent 系統(tǒng)

3.1 單Agent 系統(tǒng)

基于大模型的常見單Agent 系統(tǒng)包括:

  • AutoGPT:AutoGPT是一個AI代理的開源實(shí)現(xiàn),它試圖自動實(shí)現(xiàn)一個給定的目標(biāo)。它遵循單Agent范式,使用了許多有用的工具來增強(qiáng)AI模型,并且不支持Multi-Agent協(xié)作。

  • ChatGPT+ (code interpreter or plugin) :ChatGPT是一種會話AI Agent,現(xiàn)在可以與code interpreter或插件一起使用。code interpreter使ChatGPT能夠執(zhí)行代碼,而插件通過管理工具增強(qiáng)了ChatGPT。

  • LangChain Agent:LangChain是開發(fā)基于LLM應(yīng)用的通用框架。LangChain有各種類型的代理,ReAct Agent是其中一個著名的示例。LangChain所有代理都遵循單Agent范式,并不是天生為交流和協(xié)作模式而設(shè)計(jì)的。

  • Transformers Agent:Transformers Agent 是一個建立在Transformer存儲庫上的實(shí)驗(yàn)性自然語言API。它包括一組經(jīng)過策劃的工具和一個用來解釋自然語言和使用這些工具的Agent。與 AutoGPT類似,它遵循單Agent范式,不支持Agent間的協(xié)作。

3.2 Multi-Agent 系統(tǒng)

基于大模型的常見Multi-Agent 系統(tǒng)包括:

  • BabyAGI:BabyAGI 是一個用Python腳本實(shí)現(xiàn)的人工智能任務(wù)管理系統(tǒng)的示例。在這個已實(shí)現(xiàn)的系統(tǒng)中,使用了多個基于LLM的代理。例如,有一個Agent用于基于上一個任務(wù)的目標(biāo)和結(jié)果創(chuàng)建新任務(wù),有一個Agent用于確定任務(wù)列表的優(yōu)先級,還有一個用于完成任務(wù)/子任務(wù)的Agent。BabyAGI作為一個Multi-Agent系統(tǒng),采用靜態(tài)Agent對話模式,一個預(yù)定義的Agent通信順序。

  • CAMEL:CAMEL 是一個agent 通信框架。它演示了如何使用角色扮演來讓聊天Agent相互通信以完成任務(wù)。它還記錄了Agent的對話, 以進(jìn)行行為分析和能力理解,并采用初始提 示技術(shù)來實(shí)現(xiàn)代理之間的自主合作。但是,CAMEL本身不支持工具的使用,比如代碼執(zhí)行。雖然它被提議作為多代理會話的基礎(chǔ)設(shè)施,但它只支持靜態(tài)會話模式。

  • Multi-Agent Debate:Multi-Agent Debate試圖構(gòu)建具有多代理對話的LLM應(yīng)用程序,是鼓勵LLM中發(fā)散思維的有效方式,并改善了LLM的事實(shí)性和推理。在這兩種工作中 ,多個LLM推理實(shí)例被構(gòu)建為多個Agent來解決與Agent爭論的問題。每個Agent都是一個LLM推理實(shí)例,而不涉及任何工具或人員,并且Agent間的對話需要遵循預(yù)定義的順序。

  • MetaGPT:MetaGPT 是一種基于Multi-Agent對話框架的LLM自動軟件開發(fā)應(yīng)用程序。他們?yōu)楦鞣Ngpt分配不同的角色來協(xié)作開發(fā)軟件,針對特定場景制定專門的解決方案。

在了解了Agent 和 Multi-Agent 的基本概念以及常見系統(tǒng)之后,如何開發(fā)一個基于大模型的Agent應(yīng)用呢?上個月(2023年9月),微軟提出了一個Autogen 的開源框架,為開發(fā)LLM的Agent 應(yīng)用提供了有價值的參考。

4. 基于Multi-Agent的LLM 應(yīng)用開發(fā)框架:Autogen

AutoGen 是一個用于簡化 LLM 工作流的編排、優(yōu)化和自動化的開發(fā)框架。它提供了可定制和可對話的Agent,利用 LLM 的最強(qiáng)功能,如 GPT-4,同時通過與人和工具集成以及通過自動聊天在多個Agent之間進(jìn)行對話來解決它們的局限性。

4.1 Autogen 的典型示例

Autogen 使用Multi-Agent會話啟用復(fù)雜的基于 LLM 的工作流,典型的示例如下:

左圖代表基于AutoGen生成的可定制Agent,可以基于LLM、工具、人,甚至它們的組合。右上代表了Agent可以通過對話來解決任務(wù),右下表示Autogen支持許多額外的復(fù)雜對話模式。

4.2 Autogen 的 一般用法

使用 AutoGen,構(gòu)建一個復(fù)雜的Multi-Agent會話系統(tǒng)可以歸結(jié)為:

  • 定義一組具有專門功能和角色的Agent。

  • 定義Agent之間的交互行為,例如,當(dāng)一個代理從另一個代理接收到消息時應(yīng)該回復(fù)什么。

這兩個步驟都是模塊化的,使這些Agent可重用和可組合。例如,要構(gòu)建一個基于代碼的問答系統(tǒng),可以設(shè)計(jì)Agent及其交互,這樣的系統(tǒng)可以減少應(yīng)用程序所需的手動交互次數(shù)。一個解決代碼中問題的工作流如下圖所示:

commander接收用戶提出的問題,并與writer和saftguard協(xié)調(diào)。writer編寫代碼并進(jìn)行解釋,tguard確保安全,commander執(zhí)行代碼。如果出現(xiàn)問題,該過程可以重復(fù),直到問題得到解決。

5. Autogen的核心特性:可定制的Agent

AutoGen 中的Agent具有由 LLM、人工、工具或這些元素混合啟用的功能。例如:

  • 可以通過高級推理特性輕松配置Agent中 LLM 的使用和角色(通過組聊天自動解決復(fù)雜任務(wù))。

  • 人工智能和監(jiān)督可以通過具有不同參與級別和模式的Agent來實(shí)現(xiàn),例如,使用 GPT-4 + 多個人工用戶的自動任務(wù)解決。

  • Agent具有對 LLM 驅(qū)動代碼/函數(shù)執(zhí)行的本機(jī)支持,例如,通過代碼生成、執(zhí)行和調(diào)試自動解決任務(wù),使用提供的工具作為函數(shù)。

5.1 助理Agent

使用 AutoGen 助理Agent的一種簡單方法是調(diào)用助理Agent和用戶Agent之間的自動聊天,可以很容易地構(gòu)建一個增強(qiáng)版的 ChatGPT + Code Interpreter + 插件(如下圖所示),該插件具有可定制的自動化能力,可以在定制環(huán)境中使用,還可嵌入到更大的系統(tǒng)中。

在上圖中,助理Agent扮演人工智能助理的角色,比如必應(yīng)聊天。用戶代理Agent扮演用戶的角色,并模擬用戶的行為,例如代碼執(zhí)行。AutoGen 將兩個Agent之間的聊天進(jìn)行自動化處理,同時允許人工反饋或干預(yù)。用戶Agent無縫地與人類互動,并在適當(dāng)?shù)臅r候使用工具。

5.2 Multi-Agent 會話

以Agent會話為中心的設(shè)計(jì)有許多好處,包括:

  • 自然地處理模糊性、反饋、進(jìn)展和協(xié)作。

  • 啟用與編碼相關(guān)的有效任務(wù),如通過來回故障排除來使用工具。

  • 允許用戶通過聊天Agent無縫地選擇加入或退出。

  • 通過多位專家的合作實(shí)現(xiàn)集體目標(biāo)。

AutoGen 支持自動聊天和多樣化的通信模式,使其易于編排復(fù)雜、動態(tài)的工作流程和實(shí)驗(yàn)的多功能性,在下圖中,使用了一個稱為“ GroupChatManager”的特殊Agent來支持多個Agent之間的群組聊天。

GroupChatManager是一個 特殊代理,它重復(fù)以下三個步驟: 選擇一個演講者(在本例中為 Bob) ,請演講者做出回應(yīng),并將選定演講者的信息廣播給所有其他代理。

總而言之,AutoGen被設(shè)計(jì)為構(gòu)建 LLM應(yīng)用程序的通用基礎(chǔ)設(shè)施。其對話模式幾乎支持現(xiàn)有LLM系統(tǒng)的所有模式類型,在“靜態(tài)”模式下 ,無論輸入如何,Agent的拓?fù)浣Y(jié)構(gòu)都保持不變。AutoGen允許靈活的對話模式,包括可以根據(jù)不同的應(yīng)用程序需求進(jìn)行定制的靜態(tài)和動態(tài)模式。其Multi-Agent系統(tǒng)可以執(zhí)行LLM生成的代碼,允許在系統(tǒng)執(zhí)行過程中的人員參與。

6. Autogen 使用示例

Autogen 在github上提供了很多有意思的示例,這里以https://github.com/microsoft/autogen/blob/main/notebook/agentchathumanfeedback.ipynb 為例,簡單介紹一下如何使用Autogen 生成基于Multi-Agent會話的應(yīng)用實(shí)例——代碼生成、執(zhí)行、調(diào)試和人工反饋的任務(wù)解決。

6.1 環(huán)境設(shè)置

AutoGen要求Python 版本大于3.8,安裝如下:

pip install pyautogen

只需幾行代碼,您就可以快速實(shí)現(xiàn)強(qiáng)大的體驗(yàn):

import autogen
config_list = autogen.config_list_from_json("OAI_CONFIG_LIST")

config_list 的參考文件如下:

config_list = [
{
'model': 'gpt-4',
'api_key': '<your OpenAI API key here>',
}, # OpenAI API endpoint for gpt-4
{
'model': 'gpt-4',
'api_key': '<your first Azure OpenAI API key here>',
'api_base': '<your first Azure OpenAI API base here>',
'api_type': 'azure',
'api_version': '2023-06-01-preview',
}, # Azure OpenAI API endpoint for gpt-4
{
'model': 'gpt-4',
'api_key': '<your second Azure OpenAI API key here>',
'api_base': '<your second Azure OpenAI API base here>',
'api_type': 'azure',
'api_version': '2023-06-01-preview',
}, # another Azure OpenAI API endpoint for gpt-4
{
'model': 'gpt-3.5-turbo',
'api_key': '<your OpenAI API key here>',
}, # OpenAI API endpoint for gpt-3.5-turbo
{
'model': 'gpt-3.5-turbo',
'api_key': '<your first Azure OpenAI API key here>',
'api_base': '<your first Azure OpenAI API base here>',
'api_type': 'azure',
'api_version': '2023-06-01-preview',
}, # Azure OpenAI API endpoint for gpt-3.5-turbo
{
'model': 'gpt-3.5-turbo',
'api_key': '<your second Azure OpenAI API key here>',
'api_base': '<your second Azure OpenAI API base here>',
'api_type': 'azure',
'api_version': '2023-06-01-preview',
}, # another Azure OpenAI API endpoint for gpt-3.5-turbo
]

6.2 助理Agent 和用戶代理Agent 的創(chuàng)建

# create an AssistantAgent instance named "assistant"
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={
"seed": 41,
"config_list": config_list,
}
)
# create a UserProxyAgent instance named "user_proxy"
user_proxy = autogen.UserProxyAgent(
name="user_proxy",
human_input_mode="ALWAYS",
is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
)

# the purpose of the following line is to log the conversation history
autogen.ChatCompletion.start_logging()

6.3 執(zhí)行一個任務(wù)

調(diào)用用戶Agent的initiate_chat()方法來啟動對話。運(yùn)行下面的代碼時,收到助理Agent的消息后,系統(tǒng)將提示用戶提供反饋。如果用戶沒有提供任何反饋(直接按Enter鍵),用戶Agent將嘗試代表用心執(zhí)行助理Agent建議的代碼,當(dāng)助理代理在消息末尾發(fā)送“terminate”信號時則終止。

math_problem_to_solve = """
Find $a + b + c$, given that $x+y \\neq -1$ and
\\begin{align}
ax + by + c & = x + 7,\\
a + bx + cy & = 2x + 6y,\\
ay + b + cx & = 4x + y.
\\end{align}.
"""

# the assistant receives a message from the user, which contains the task description
user_proxy.initiate_chat(assistant, message=math_problem_to_solve)

用戶可以在每個步驟提供反饋。執(zhí)行的結(jié)果和錯誤消息返回給助手,助理Agent能夠根據(jù)反饋修改代碼。最后,任務(wù)完成,助理Agent發(fā)出“TERMINATE”(終止)信號。用戶最終跳過了反饋,對話結(jié)束。

對話結(jié)束后,可以通過autogen.ChatCompletion.logged_history保存兩個Agent之間的對話日志。

json.dump(autogen.ChatCompletion.logged_history, open("conversations.json", "w"), indent=2)

這個示例演示了如何使用AssistantAgent和UserProxyAgent來解決一個具有挑戰(zhàn)性的數(shù)學(xué)問題。這里的AssistantAgent是一個基于LLM的Agent,它可以編寫Python代碼執(zhí)行用戶的給定任務(wù)。UserProxyAgent是另一個Agent,它充當(dāng)用戶執(zhí)行AssistantAgent編寫的代碼的代理。通過正確設(shè)置humaninputmode,UserProxyAgent還可以提示用戶向AssistantAgent提供反饋。例如,當(dāng)humaninputmode設(shè)置為“ALWAYS”時,UserProxyAgent將始終提示用戶進(jìn)行反饋。當(dāng)提供用戶反饋時,UserProxyAgent將直接將反饋傳遞給AssistantAgent。當(dāng)沒有提供用戶反饋時,UserProxyAgent將執(zhí)行AssistantAgent編寫的代碼,并將執(zhí)行結(jié)果(成功或失敗以及相應(yīng)的輸出)返回給AssistantAgent。

7. 小結(jié)

Agent 是與大模型主動交互的一種重要程序形式,而Multi-Agent則是多個Agent利用大模型完成復(fù)雜任務(wù)的系統(tǒng)機(jī)制。微軟的AutoGen 是一個開源的、社區(qū)驅(qū)動、面向Multi-Agent會話的項(xiàng)目,還在在積極發(fā)展中。AutoGen 旨在為開發(fā)者提供一個有效且易于使用的框架來構(gòu)建下一代應(yīng)用程序,并且已經(jīng)展示了構(gòu)建創(chuàng)造性應(yīng)用程序的良好機(jī)會,為創(chuàng)新提供了廣闊的空間。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
當(dāng)我想要構(gòu)建一款 LLM 應(yīng)用時:關(guān)于技術(shù)棧、省錢和游戲規(guī)則
GPT會是AI算法模型的終極答案嗎?
AI Agent發(fā)展簡史,從哲學(xué)思想啟蒙到人工智能實(shí)體落地
ChatGTP全景圖 | 背景 技術(shù)篇
ChatGPT為什么這么強(qiáng)
深入聊一聊chatGPT模型原理(無公式)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服