智能體AI Agents

智能體

智能體AI Agents指能夠感知環(huán)境扒俯、做出決策并采取行動以實現(xiàn)特定目標(biāo)的智能系統(tǒng)防症。自動駕駛汽車就是一種典型的智能體。
大模型LLM是智能體的“大腦”捞蛋,能夠處理復(fù)雜的任務(wù)吠撮,生成文本/故事/程序等尊惰。智能體包括規(guī)劃(Planning)、工具(Tools)泥兰、記憶(Memory)等關(guān)鍵組件弄屡。


Overview of a LLM-powered autonomous agent system

任務(wù)規(guī)劃通過思維鏈能力實現(xiàn)任務(wù)分解,包括復(fù)雜任務(wù)的子問題拆解鞋诗,推理行動和自我反思能力膀捷。

  1. 任務(wù)的子問題拆解:復(fù)雜任務(wù)不是一次性就能解決的,需要拆分成多個并行或串行的子任務(wù)來進(jìn)行求解削彬,任務(wù)規(guī)劃的目標(biāo)是找到一條最優(yōu)的全庸、能夠解決問題的路線。
    • 思維鏈(Chain of Thought, CoT):通過逐步思考將復(fù)雜任務(wù)分解為更小吃警、更簡單的步驟糕篇。
    • 思維樹(Tree of Thoughts):在每一步探索多種推理可能性啄育,生成多個思考路徑酌心。
  2. 自我反思與批判:執(zhí)行某一個子任務(wù)的時候,不一定總是能夠返回想要的結(jié)果挑豌,因此模型需要有一定反思能力判斷是否通過當(dāng)前方式能夠得到正確結(jié)果安券,如果不能則要動態(tài)地調(diào)整任務(wù)的序列。
    • ReAct:推理+行動氓英,讓Agents執(zhí)行下一步action的時候侯勉,加上LLM自己的思考過程,并將思考過程铝阐、執(zhí)行的工具及參數(shù)址貌、執(zhí)行的結(jié)果放到prompt模版中,就能使得模型對當(dāng)前和先前的任務(wù)完成度有更好的反思能力,從而提升模型的問題解決能力练对。
Thought: ...
Action: ...
Observation: ...
... (Repeated many times)
  • Reflexion:為智能體提供動態(tài)記憶和自我反思能力遍蟋,以改進(jìn)推理技能。
  • Chain of Hindsight(CoH):通過呈現(xiàn)過去輸出序列及其反饋螟凭,鼓勵模型自我改進(jìn)虚青。

記憶:,記憶可以被定義為用于獲取螺男、存儲棒厘、保留以及檢索信息的過程。類比人腦記憶有幾種類型:

  • 感覺記憶:短暫保留感官信息下隧。
  • 短期記憶/工作記憶:存儲當(dāng)前意識到的信息奢人,用于執(zhí)行復(fù)雜的認(rèn)知任務(wù)。
  • 長期記憶:存儲長期信息汪拥,分為顯性記憶(事實和事件)和隱性記憶(技能和習(xí)慣)达传。

有一些熱門的項目,例如AutoGPT, GPT-Engineer, BabyAGI
HuggingGPT在這個方向做了示范性的嘗試迫筑。

智能體框架

列幾個知名的智能體框架宪赶,包括LangChain,CrewAI脯燃,OpenAgents和Autogen:

LangChain

LangChain 是一個用于開發(fā)由語言模型驅(qū)動的應(yīng)用程序的框架搂妻。它的核心設(shè)計目標(biāo)是實現(xiàn)數(shù)據(jù)感知和主動性,即讓語言模型不僅通過 API 調(diào)用辕棚,還能與其他數(shù)據(jù)源連接欲主,并與其環(huán)境進(jìn)行交互。

主要概念包括:
  1. 組件:LangChain 提供了模塊化的抽象逝嚎,用于處理語言模型所需的組件扁瓢,并為這些抽象提供了實現(xiàn)的集合。這些組件易于使用补君,無論是單獨使用還是與 LangChain 框架的其他部分一起使用引几。
  2. 用例特定鏈:鏈可以被看作是以特定方式組裝這些組件,以便最好地完成特定用例挽铁。這些鏈旨在提供一個更高級別的接口伟桅,使人們可以輕松地開始特定的用例,并且可以定制化叽掘。
LangChain Express Language (LCEL)

LCEL 是 LangChain 提供的一種簡潔的楣铁、用于組裝鏈的聲明性方式。通過 LCEL更扁,可以將自然語言輸入盖腕、關(guān)聯(lián)知識檢索赫冬、Prompt 組裝、可用工具信息溃列、大模型調(diào)用面殖、輸出格式化等常見動作組裝成一個可以運行的“鏈”式過程。例如:

chain = setup_and_retrieval | prompt | model | output_parser

這清晰地展示了一個簡單的 RAG(檢索增強生成)應(yīng)用處理過程:檢索關(guān)聯(lián)文檔哭廉、組裝 Prompt脊僚、調(diào)用大模型、輸出處理遵绰。

AgentExecutor

AgentExecutor 是 LangChain 中用于調(diào)度 Agent 運行的工具辽幌。它通過大模型決定采取什么行動,使用什么工具椿访,或者向用戶輸出響應(yīng)乌企,然后執(zhí)行這些行動,并將結(jié)果繼續(xù)交給大模型來決定下一步成玫。然而加酵,AgentExecutor 的調(diào)度過程過于黑盒,缺乏精細(xì)的控制能力哭当,這在構(gòu)建復(fù)雜 Agent 時可能會受限猪腕。

LangGraph

為了解決 LangChain 簡單鏈不具備“循環(huán)”能力的問題,以及 AgentExecutor 調(diào)度過程過于黑盒的問題钦勘,LangGraph 被設(shè)計為基于 LangChain 之上構(gòu)建的一個擴(kuò)展庫陋葡。LangGraph 能夠協(xié)調(diào)多個 Chain、Agent彻采、Tool 等共同協(xié)作來完成輸入任務(wù)腐缤,支持 LLM 調(diào)用“循環(huán)”以及 Agent 過程的更精細(xì)化的控制。

LangGraph 的實現(xiàn)方式是把基于 AgentExecutor 的黑盒調(diào)用過程用一種新的形式來構(gòu)建:狀態(tài)圖(StateGraph)肛响。通過定義圖的節(jié)點與邊岭粤,將基于 LLM 的任務(wù)細(xì)節(jié)用 Graph 進(jìn)行精確的定義,并基于這個圖來編譯生成應(yīng)用特笋。

總的來說剃浇,LangChain 提供了一個強大的框架,通過模塊化組件和用例特定鏈雹有,使得開發(fā)由語言模型驅(qū)動的應(yīng)用程序變得更加容易和靈活偿渡。而 LangGraph 則進(jìn)一步擴(kuò)展了這一框架臼寄,支持更復(fù)雜的場景和更精細(xì)的控制霸奕。

LangChain 框架最近對agent 部分做了詳細(xì)的文檔整理,參考鏈接:Agents | ? LangChain

CrewAI

這是一個基于LangChain 的框架吉拳,CrewAI 是一個用于編排角色扮演的 AI 智能體框架质帅,通過促進(jìn)協(xié)作智能,使代理能夠無縫協(xié)作,處理復(fù)雜任務(wù)煤惩。

主要特性包括:

  1. 基于角色的代理設(shè)計:為代理定制具有特定角色嫉嘀、目標(biāo)和工具的代理。
  2. 自主代理間任務(wù)委托:代理能夠自主地委托任務(wù)并在彼此之間詢問魄揉,提高問題解決的效率剪侮。
  3. 靈活的任務(wù)管理:使用可定制的工具定義任務(wù),并動態(tài)分配給代理洛退。
  4. 流程驅(qū)動:目前僅支持順序任務(wù)執(zhí)行(Process.sequential)瓣俯,但正在開發(fā)更復(fù)雜的流程,如共識和層級流程兵怯。
  5. 與開源模型兼容:可以使用 Open AI 或開源模型或本地模型運行團(tuán)隊彩匕。

使用起來非常簡潔,下面是一段代碼示例:

import os
from crewai import Agent, Task, Crew, Process

os.environ["OPENAI_API_KEY"] = "您的密鑰"

# 定義具有角色和目標(biāo)的代理
researcher = Agent(
    role='高級研究分析師',
    goal='揭示AI和數(shù)據(jù)科學(xué)的最前沿發(fā)展',
    backstory="你在一個領(lǐng)先的科技智庫工作媒区。你擅長識別新興趨勢驼仪。",
    verbose=True,
    allow_delegation=False
)
writer = Agent(
    role='技術(shù)內(nèi)容策略師',
    goal='撰寫關(guān)于技術(shù)進(jìn)步的引人入勝的內(nèi)容',
    backstory="你是一名著名的內(nèi)容策略師,以你富有洞察力和引人入勝的文章而聞名袜漩。",
    verbose=True,
    allow_delegation=True
)

# 為您的代理創(chuàng)建任務(wù)
task1 = Task(description="進(jìn)行2024年AI最新進(jìn)展的全面分析绪爸。", agent=researcher)
task2 = Task(description="使用所提供的洞見,開發(fā)一篇引人入勝的博客文章宙攻。", agent=writer)

# 實例化您的團(tuán)隊并采用順序處理
crew = Crew(agents=[researcher, writer], tasks=[task1, task2], verbose=2)
result = crew.kickoff()
print("######################")
print(result)

CrewAI 可以應(yīng)用于生成環(huán)境中毡泻,犧牲了一點靈活性和隨機(jī)性,但在代理人的能力粘优、任務(wù)和發(fā)言轉(zhuǎn)向上獲得了更多的確定性仇味。 例如:

  • 旅行規(guī)劃器:根據(jù)天氣條件和保險項目列表生成旅行計劃。
  • 股票分析:分析市場趨勢并提供投資建議雹顺。
  • 登錄頁面生成器:生成引人入勝的登錄頁面內(nèi)容丹墨。

CrewAI 支持與本地模型集成,通過工具如 Ollama 等嬉愧,增強靈活性和自定義能力贩挣。這允許使用自己的模型,這對于專門的任務(wù)或數(shù)據(jù)隱私問題特別有用没酣。

通過這些特性和應(yīng)用場景王财,CrewAI 提供了一個強大的框架,使得 AI 代理能夠以團(tuán)隊的形式協(xié)作裕便,處理復(fù)雜的任務(wù)和問題绒净。

OpenAgents

港大的研究團(tuán)隊最近發(fā)布了一個新的開源 Agent 框架,名為 OpenAgents. 它可以用于實際用戶場景偿衰,特別是在使用自然語言執(zhí)行復(fù)雜任務(wù)的情況下挂疆。先前的語言智能體框架主要關(guān)注概念驗證或者供開發(fā)人員使用改览,而 OpenAgents 則更注重非專家用戶的使用體驗和應(yīng)用設(shè)計。它提供了一個開放的平臺缤言,讓更多人可以在日常生活中使用和部署語言智能體宝当。

Autogen

Autogen是多Agent交互協(xié)助的LLM應(yīng)用。AutoGen agent是可定制的胆萧、可對話的庆揩,并能以各種模式運行,這些模式采用 LLM跌穗、人類輸入和工具的組合盾鳞。使用 AutoGen,開發(fā)人員還可以靈活定義agent交互行為瞻离。自然語言和計算機(jī)代碼都可用于為不同的應(yīng)用編程靈活的對話模式腾仅。

Autogen 是一個用于構(gòu)建和訓(xùn)練即智能體的框架。它允許開發(fā)者通過自然語言指令來訓(xùn)練和控制智能體套利,使其能夠執(zhí)行復(fù)雜的任務(wù)和與用戶進(jìn)行交互推励。以下是 Autogen 的一些關(guān)鍵特點和功能:

  1. 自然語言交互

    • Autogen 允許通過自然語言與智能體進(jìn)行交互,使得用戶可以以對話的形式與智能體溝通肉迫。
  2. 任務(wù)驅(qū)動

    • 智能體可以根據(jù)用戶指定的任務(wù)進(jìn)行操作验辞。這些任務(wù)可以是簡單的查詢,也可以是復(fù)雜的多步驟任務(wù)喊衫。
  3. 自主學(xué)習(xí)

    • Autogen 的智能體可以通過與環(huán)境的交互自主學(xué)習(xí)跌造,不斷改進(jìn)其行為和決策。
  4. 多智能體協(xié)作

    • Autogen 支持多智能體系統(tǒng)族购,允許多個智能體協(xié)同工作壳贪,共同完成復(fù)雜的任務(wù)。
  5. 工具使用

    • 智能體可以調(diào)用外部工具和 API寝杖,擴(kuò)展其功能违施。例如,智能體可以使用搜索引擎瑟幕、文件系統(tǒng)操作磕蒲、代碼執(zhí)行等工具。
  6. 任務(wù)分解

    • 智能體可以將復(fù)雜任務(wù)分解為更小的子任務(wù)只盹,并逐步執(zhí)行這些子任務(wù)以完成整個任務(wù)辣往。
  7. 自我反思和改進(jìn)

    • 智能體可以通過自我反思和自我批評來改進(jìn)其行為。例如殖卑,通過回顧過去的決策和行動站削,智能體可以學(xué)習(xí)如何在未來做出更好的選擇。
  8. 可擴(kuò)展性

    • Autogen 的架構(gòu)設(shè)計使其易于擴(kuò)展和定制懦鼠。開發(fā)者可以添加新的功能和工具钻哩,以適應(yīng)不同的應(yīng)用場景。
  9. 安全性和倫理

    • Autogen 考慮了智能體的安全性和倫理問題肛冶,確保智能體的行為符合道德和法律標(biāo)準(zhǔn)街氢。
  10. 社區(qū)和開源

    • Autogen 是一個開源項目,擁有活躍的社區(qū)睦袖。開發(fā)者和研究人員可以共同貢獻(xiàn)代碼珊肃,改進(jìn)框架,并分享他們的經(jīng)驗和成果馅笙。

Autogen 的目標(biāo)是創(chuàng)建能夠理解和響應(yīng)用戶需求的智能體伦乔,同時具備學(xué)習(xí)和適應(yīng)環(huán)境的能力。通過不斷的交互和學(xué)習(xí)董习,Autogen 的智能體可以變得更加智能和有用烈和。

參考資料:

LLM Powered Autonomous Agents | Lil'Log (lilianweng.github.io)
字節(jié):AutoGPT與LLM Agent解析
解鎖大模型智能體核心技術(shù),10行代碼輕松構(gòu)建專屬AI助手皿淋!
潘浩杰:AI智能體Roadmap

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末招刹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窝趣,更是在濱河造成了極大的恐慌疯暑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哑舒,死亡現(xiàn)場離奇詭異妇拯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)洗鸵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門越锈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膘滨,你說我怎么就攤上這事瞪浸。” “怎么了吏祸?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵对蒲,是天一觀的道長。 經(jīng)常有香客問我贡翘,道長蹈矮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任鸣驱,我火速辦了婚禮泛鸟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踊东。我一直安慰自己北滥,他們只是感情好刚操,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著再芋,像睡著了一般菊霜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上济赎,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天鉴逞,我揣著相機(jī)與錄音,去河邊找鬼司训。 笑死构捡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壳猜。 我是一名探鬼主播勾徽,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼统扳!你這毒婦竟也來了捂蕴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤闪幽,失蹤者是張志新(化名)和其女友劉穎啥辨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盯腌,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡溉知,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腕够。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片级乍。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖帚湘,靈堂內(nèi)的尸體忽然破棺而出玫荣,到底是詐尸還是另有隱情,我是刑警寧澤大诸,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布捅厂,位于F島的核電站,受9級特大地震影響资柔,放射性物質(zhì)發(fā)生泄漏焙贷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一贿堰、第九天 我趴在偏房一處隱蔽的房頂上張望辙芍。 院中可真熱鬧,春花似錦、人聲如沸故硅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吃衅。三九已至往踢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捐晶,已是汗流浹背菲语。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工妄辩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惑灵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓眼耀,卻偏偏與公主長得像英支,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哮伟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容