AI Agent技術的最新進展與改變世界的典型專案巡禮
1. AI Agent 技術發展以及典型專案
1.0 前 AI Agent 時代
在學術探索的浩瀚星空中,機器人技術領域的璀璨明珠莫過於Agent技術的深入研究,這一領域歷來是創新與突破的溫床。回溯至大模型浪潮興起之前,Agent技術的輝煌篇章便已悄然鋪展,諸如Alphago這樣的里程碑式案例,以其卓越的環境感知、精準決策與高效行動能力,生動詮釋了Agent技術的閉環魅力。同時,DeepMind的Agent57在強化學習領域的遊戲挑戰中嶄露頭角,而隨後問世的Gato則展現了更為廣泛的適用性,乃至OpenAI在“躲貓貓”遊戲中展現的多智慧體協作,無不預示著Agent技術的無限潛力。
展望未來,我們堅信Agent技術將成為驅動社會全面自動化的核心引擎。與以往側重於結構化環境下透過既定演算法實現的自動化不同,大模型的興起為Agent技術賦予了前所未有的通用性與靈活性。這一轉變,意味著Agent將能夠跨越傳統界限,深入人類腦力勞動的複雜長尾領域,從體力到腦力,全方位推進自動化的深度與廣度。
大模型與Agent技術的融合,正引領我們步入一個全面自動化的新紀元。大模型作為知識海洋中的自主學習者,為Agent提供了前所未有的智慧源泉,激發了其快速發展的新動能。當前,儘管我們仍處於這一變革的初期,Agent技術更多以實驗性、探索性的面貌呈現,但展望未來,其發展前景之廣闊,變化速度之迅猛,或將超乎所有人的預料。隨著技術的日新月異,我們或許會發現,所謂的“天花板”不過是通往更高境界的階梯,而Agent技術的極限,正等待著我們共同去探索與定義。
1.1 AI等級劃分
基於Agent(智慧體)能力的AI等級劃分,可以借鑑類似自動駕駛級別的劃分方式,將AI智慧體的能力從低到高進行分級。以下是一個簡化的AI Agent能力劃分描述:
AI Agent能力劃分:
-
L0 - 沒有人工智慧
在這一級別,Agent並不具備人工智慧特性,只能執行預定或固定的任務,沒有感知、決策或學習的能力。 -
L1 - 規則符號智慧
Agent開始具備基於規則的決策能力,能夠根據預設的規則和符號進行簡單的判斷和執行。這種智慧體通常只能處理特定情境下的任務,且缺乏靈活性和適應性。 -
L2 - 推理決策智慧
Agent能夠利用邏輯推理能力來解決問題,不再僅僅依賴於預設的規則。它能夠根據當前的環境資訊和目標,進行一定程度的推理和決策,以選擇最合適的行動方案。 -
L3 - 記憶反思智慧
在L3級別,Agent不僅具備推理決策能力,還開始擁有記憶和反思的能力。它能夠記住過去的經驗和教訓,並在未來的決策中加以利用。這種智慧體能夠自我最佳化和改進,以適應不斷變化的環境和任務。 -
L4 - 自主學習智慧
自主學習是L4級別Agent的主要特徵。它能夠自主地從資料中學習新知識和技能,無需人類的明確指導。這種智慧體能夠處理更復雜的問題,並在面對新情境時展現出更強的適應性和創造力。 -
L5 - 個性群體智慧
在最高階別,Agent不僅具備高度自主的學習和決策能力,還展現出個性化的特徵。它能夠根據自身的特點和偏好來執行任務,並與其他Agent進行協作和溝通。此外,L5級別的Agent還能夠理解和適應人類社會的複雜性和多樣性,與人類實現更加緊密和自然的互動。 -
AI 等級劃分
- AI apps building blocks
1.2 Prompt 工程
- 透過描述角色技能、任務關鍵詞、任務目標及任務背景,告知大模型需要輸出的格式,並呼叫大模型進行輸出
為了將 LLM 的能力發揮到極致,發展出了多種 prompt 工程
- 角色扮演
- 零樣本分析
- 少樣本分析
在大模型初露鋒芒之際,業界掀起了一股“Prompt工程”的熱潮,將這一先進技術視為一種創新的程式設計正規化加以探索。從業者們巧妙地將大模型轉化為高度可定製的“智慧工具”,透過精心構建的角色設定、技能描述、任務關鍵詞的精準提煉、目標導向的明確闡述,以及詳盡的任務背景鋪設,構建起與模型溝通的橋樑。這一系列精心設計的指令,不僅界定了大模型需完成的任務範疇,還細化了輸出結果的格式要求,隨後透過直接呼叫大模型,實現知識的生成與輸出的無縫銜接。
這一過程,被業界形象地稱為“工具模式”,它深刻體現了大模型作為高階認知工具的價值所在。在此模式下,大模型不再僅僅是靜態的資料處理器,而是轉變為能夠根據使用者意圖靈活應變、高效執行復雜任務的智慧助手。這種將大模型工具化的探索,不僅極大地拓寬了技術的應用邊界,也為人工智慧領域的研究與實踐開闢了新的思路與方向。
案例:15000 字元的 prompt 工程,扮演人類導師
https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor
剛興趣的同學可以用自己嘗試一下:https://chat.openai.com/share/53b38605-68e5-4922-81fe-e4588fb28d8a
prompt 強化了 LLM 的能力,但以下的問題依然無法解決:
- 不能及時更新知識
- 上下文有限等等為了解決以上的問題,人們又發展出了很多的方法
1.2.1 Prompt 外掛 - RAG(Retrieval Augmented Generation)
- 引入向量資料庫
- 資料索引進入向量資料庫
- 召回資料
- 在提交給 LLM 做提示詞工程
1.2.2 分而治之 - 古老的思想依然有效
- 解決 context 不夠的問題
- 拆分成小段,分別摘要
1.2.3 step-by-step
- 思維鏈(Chain of Thought,CoT):要求模型展示其思考過程,而非僅給出答案
- 思維樹(Tree of Thought,ToT):它會根據當前的問題分解出多個可能,然後每一個樹節點就是父節點的一個子問題,逐層擴散,遍佈整個解空間,一些節點就直接會發現不合適而終止掉,達到了有效剪枝的作用
- 思維圖(Graph of Tree,GoT):基於思維樹,既可以分解,也可以合併
......
- 思維鏈(Chain of Thought, CoT)的深化
思維鏈的引入,標誌著人工智慧模型解答問題方式的重大轉變。它強調模型需展現其內在的邏輯推理過程,而非僅僅呈現最終答案。這一過程可透過雙軌並行實現:一是詳盡闡述法,即模型被要求逐步、細緻地展示其思考軌跡,確保每一步推理的透明度與邏輯性;二是範例引導法,透過提供包含完整思考路徑的示例問題與答案,引導模型在面臨新問題時模仿此過程,循序漸進地推導答案。隨著實踐的深入,我們進一步探索了CoT的潛力,發現當單一思維鏈遭遇障礙時,透過發散性思考,即CoT-SC(Chain of Thought with Strategic Convergence),模型能嘗試多種解題路徑,並透過投票機制篩選出最優解,從而增強了解的魯棒性與多樣性。
- 思維樹(Tree of Thought, ToT)的萌芽
面對CoT-SC在某些複雜問題(如24點遊戲)上的侷限性,我們轉而探索思維樹的構建。ToT策略將問題視為一個根系龐大的樹木,其主幹代表核心問題,而每一分支則是對該問題的不同分解路徑。每個節點代表一個子問題,隨著樹的層層展開,解空間被細緻劃分,同時,不合適的分支被有效剪除,以最佳化搜尋效率。然而,ToT在處理需要高度整合子問題結果的任務(如排序演算法中的合併步驟)時仍顯不足。
- 思維圖(Graph of Tree, GoT)的革新
為解決ToT的整合難題,思維圖應運而生。GoT不僅繼承了ToT的分解能力,更增添了靈活的合併機制,使得模型能夠在複雜問題中自由穿梭於分解與整合之間,構建出既全面又精確的解決方案圖。這一創新,標誌著AI在複雜問題求解能力上的又一飛躍。
- 累計推理:邁向新高度的探索
清華姚期智團隊在思維推理領域取得了突破性進展,提出了累計推理方法。該方法在解決24點問題上已展現出高達98%的成功率,樹立了新的技術標杆。其核心理念與主流Agent的實現方式相契合,強調通用性與實用性。累計推理首先孕育一個初步假設,隨後透過不斷驗證與迭代,逐步構建並完善推理圖。每個新節點都建立在穩固的已有基礎上,透過發散、合併或修正,直至達成最終目標狀態。這一過程不僅增強了推理的完備性,還賦予了模型前所未有的靈活性,為人工智慧在更廣泛領域的應用開闢了新的可能性。
1.2.4 基於反饋的 ReACT-Synergizing Reasoning and Acting
上述的討論主要是任務分解和組合,他們儘管強大,卻不能與外界進行互動,這就不得不講到反饋機制了。
ReACT機制的核心在於將推理和行動緊密結合,使語言模型能夠交替地產生推理路徑(Thought)和文字動作(Action),以解決不同的語言推理和決策任務。具體來說,ReACT透過以下幾個步驟實現這一目標:
- 推理路徑生成:模型首先基於當前的環境或上下文生成推理路徑(Thought),這些推理路徑包含了對問題或任務的逐步分析和理解。
- 文字動作生成:在推理路徑的指導下,模型生成文字動作(Action),這些動作可以是查詢外部資料來源、執行特定操作或生成最終答案等。
- 環境互動與反饋:文字動作被髮送到外部環境或資料來源,以獲取新的觀測值(Observation)。這些觀測值用於更新模型的內部狀態,並作為後續推理和行動的基礎。
- 迴圈迭代:上述過程不斷迴圈迭代,直到達到任務目標或滿足某個終止條件
1.2.5 Reflexion
- 背景與動機
傳統的強化學習方法在訓練大型語言模型時面臨諸多挑戰,如需要大量的訓練樣本和昂貴的模型微調成本。此外,傳統的標量或向量獎勵訊號往往難以準確反映智慧體在執行任務過程中的具體表現。Reflexion方法透過引入語言反饋機制,旨在解決這些問題,使語言智慧體能夠快速有效地從錯誤經驗中學習。
- 核心原理
Reflexion方法的核心在於將傳統強化學習中的獎勵訊號轉化為語言反饋訊號(Verbal Reinforcement),並將其作為附加的上下文資訊嵌入到大型語言模型中。具體來說,Reflexion框架包含以下幾個關鍵元件:
-
Actor:由大型語言模型(LLM)擔任,主要負責基於當前環境生成下一步的動作。
-
Evaluator:用於評估Actor生成結果的質量,類似於強化學習中的獎勵函式。Evaluator將生成的軌跡作為輸入,計算在給定任務上下文中的獎勵分數。
-
Self-Reflexion:自我反思模組,也由LLM擔任。該模組負責分析Actor的執行結果和Evaluator的獎勵訊號,生成具體且詳細的語言反饋訊號。這些反饋訊號會儲存在Memory中,以便在未來的決策中提供參考。
-
Memory:提供短期記憶和長期記憶功能。短期記憶儲存當前實驗中的上下文資訊,而長期記憶則儲存Self-Reflexion模組生成的反思結果。
-
執行過程
Reflexion的執行過程是一個迭代過程,包括Actor生成動作、Evaluator評估動作、Self-Reflexion生成反思並儲存結果等步驟。透過不斷重複這個過程,智慧體能夠逐漸從錯誤經驗中學習,並在未來的任務中做出更好的決策。
2. AI Agent
- 定義
在 LLM 語境下,Agent 可以理解為某種能自主理解、規劃決策、執行復雜任務的智慧體。Agent 並非 ChatGPT 升級版,它不僅告訴你 “如何做”,更會幫你去做。如果 CoPilot 是副駕駛,那麼 Agent 就是主駕駛。
2.1 AI Agent 系統組成
-
Planning(規劃):
- 子目標和分解:AI Agents 能夠將大型任務分解為較小的、可管理的子目標,以便高效的處理複雜任務
- 反思和細化:Agents 可以對過去的行為進行自我批評和反省,從錯誤中吸取經驗教訓,併為接下來的行動進行分析、總結和提煉,這種反思和細化可以幫助 Agents 提高自身的智慧和適應性,從而提高最終結果的質量
-
Memory(記憶):
- 短期記憶:所有上下文學習都是依賴模型的短期記憶能力進行的
- 長期記憶:這種設計使得 AI Agents 能夠長期儲存和呼叫無限資訊的能力,一般透過外部載體儲存和快速檢索來實現
-
Tool use(工具使用):
- AI Agents 可以學習如何呼叫外部 API,以獲取模型權重中缺少的額外資訊,這些資訊通常在預訓練後很難更改,包括當前資訊、程式碼執行能力、對專有資訊源的訪問等
2.2 Agent 專案(單/多智慧體)
多智慧體系統相較於單智慧體系統(如AutoGPT)在多個方面展現出顯著的優勢,這些優勢使得多智慧體在處理複雜任務時更為高效、靈活和穩定。
-
資訊處理與記憶容量優勢
-
多智慧體優勢:每個Agent在多智慧體系統中僅需關注與自身角色或任務直接相關的資訊,這種模組化的資訊處理方式極大地減輕了單個智慧體需要記憶和處理的資料量。因此,在面對長曆史或複雜任務時,多智慧體系統無需像單智慧體那樣維護龐大的記憶容量,降低了對模型序列長度的依賴,提高了系統的可擴充套件性和實用性。
-
單智慧體侷限:單智慧體如AutoGPT需要記住並處理所有歷史資訊以做出決策,這對模型的記憶容量和計算能力提出了極高的要求。在長曆史任務中,這種需求可能導致效能瓶頸,限制了單智慧體系統的應用範圍。
-
-
穩定性與觀點排除
-
多智慧體優勢:透過角色扮演機制,多智慧體系統能夠模擬不同角色的視角和立場,從而有效排除某些偏見或錯誤觀點的影響。這種機制使得系統輸出更加客觀、穩定,提高了決策質量。此外,不同智慧體之間的互動還可以促進新想法的產生和驗證,進一步增強了系統的創新性和適應性。
-
單智慧體侷限:單智慧體在執行多工時,由於所有任務資訊都混合在一起處理,容易受到各種因素的干擾,導致輸出結果的不穩定。同時,單智慧體難以有效區分和排除不同任務之間的潛在衝突或錯誤觀點。
-
-
可擴充性與任務分解
-
多智慧體優勢:多智慧體系統透過分工協作的方式將複雜任務分解為多個相對簡單的子任務,每個智慧體專注於完成一個或幾個子任務。這種任務分解策略不僅降低了單個智慧體的處理難度,還提高了系統的整體效率和可擴充性。隨著任務複雜度的增加,只需增加相應的智慧體數量或調整智慧體之間的協作策略即可應對。
-
單智慧體侷限:單智慧體在處理複雜任務時,通常需要依賴記憶節省策略(如token壓縮、關鍵資訊提取等)來減少輸入給模型的context長度。然而,這些策略在極端情況下可能無法完全避免效能下降的風險,因為長序列處理仍然是大型語言模型面臨的一個挑戰。
-
-
並行探索與最優解選擇
-
多智慧體優勢:多智慧體系統能夠並行地探索多種解決方案,並透過比較和評估來選擇最優解。這種並行探索機制不僅提高了問題求解的效率,還有助於發現更多潛在的優秀解。此外,不同智慧體之間的探索結果可以相互借鑑和補充,形成更加全面的解決方案集合。
-
單智慧體侷限:單智慧體在探索解決方案時通常只能採用序列或有限的並行方式(如分支預測、多執行緒等),其效率受到模型處理能力和計算資源的限制。同時,由於單智慧體缺乏多視角的評估機制,其選擇的解決方案可能不是全域性最優的。即使透過增加計算資源來提高並行度,也可能面臨資源分配不均、協調困難等問題。
-
Auto-GPT
- 簡介:雖然內部設計為單個智慧體,但其自我批判的邏輯被視為多智慧體策略的簡化版本。AutoGPT能夠根據反饋調整其行為,體現了智慧體自我改進的能力。
- 應用:自動化任務執行、問題解決、基於指令的程式設計任務。
例子:https://twitter.com/SullyOmarr/status/1644750889432027136
- created login/sign up page
- styled it with bootstrap+ created flask api for login / logout
- created a local json database
Took ~10 minutes at a cost of $0.50
框架結構簡單,但其設計理念具有重要意義,後續框架設計的思路都有這個的影子
- 建立一個初始的計劃,然後進入主迴圈
- 系統會讓模型判斷在當前計劃下該進行何種行動,接著會執行行動
- 執行完畢後,結果會寫入下一次迴圈中
- 如此,每次決策都會基於之前的結果、記憶和計劃,從而制定出新的行動方案
-
優點:
- 記憶體和上下文管理:與 AutoGen 一樣,AutoGPT 在記憶體和上下文等領域也表現出色,為需要這些功能的 LLM 應用程式提供了優勢。
-
缺點:
- 視覺化構建器依賴性:應用程式設計依賴於視覺化構建器,這可能會限制那些寧願用程式碼定義設計的團隊的靈活性。
AutoGen
- 簡介:AutoGen是一個開源框架,它透過多智慧體對話來構建下一代大型語言模型應用。這個框架允許智慧體透過對話相互協作,完成複雜任務,體現了智慧體間的高度互動性和任務的靈活性。
- 應用專案:AutoGen被設計為一個通用平臺,可以應用於自動程式碼生成、複雜問題解決、自動化工作流程設計等領域。
論文連結:https://arxiv.org/abs/2308.08155
專案連結:https://github.com/microsoft/autogen
user_proxy (to assistant):
What date is today? Compare the year-to-date gain for META and TESLA.
--------------------------------------------------------------------------------
assistant (to user_proxy):
First, let's get the current date. We can do this using Python's built-in datetime module. Here is the Python code to get the current date:
import datetime
Get the current date
current_date = datetime.date.today()
print("Today's date is:", current_date)
Next, we need to get the year-to-date (YTD) gain for META (Facebook) and TESLA. We can do this by using a financial data API such as Yahoo Finance. We will need to get the stock price at the start of the year and the current stock price, then calculate the percentage change.
However, as an AI, I'm unable to execute real-time web requests or access external APIs. I recommend using the `yfinance` library in Python to download the stock data. Here is an example of how you can do it:
import yfinance as yf
#Download stock data
meta_data = yf.download('META', start='2022-01-01', end=current_date)
tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)
#Calculate YTD gain
meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100
tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100
print("META YTD gain: ", meta_ytd_gain)
print("TESLA YTD gain: ", tesla_ytd_gain)
Please note that you need to install the `yfinance` library before running the above code. You can install it using pip:
pip install yfinance
Please replace `current_date` in the above code with the actual date you got from the first code.
--------------------------------------------------------------------------------
>>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...
>>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...
user_proxy (to assistant):
exitcode: 1 (execution failed)
Code output:
Today's date is: 2023-10-17
Traceback (most recent call last):
File "", line 4, in <module>
meta_data = yf.download('META', start='2022-01-01', end=current_date)
NameError: name 'current_date' is not defined
--------------------------------------------------------------------------------
assistant (to user_proxy):
I apologize for the confusion. The `current_date` variable was defined in the first script and it's not available in the second script. Let's combine the two scripts into one so that the `current_date` variable can be used in the second part of the script. Here is the combined script:
import datetime
import yfinance as yf
#Get the current date
current_date = datetime.date.today()
print("Today's date is:", current_date)
#Download stock data
meta_data = yf.download('META', start='2022-01-01', end=current_date)
tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)
#Calculate YTD gain
meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100
tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100
print("META YTD gain: ", meta_ytd_gain)
print("TESLA YTD gain: ", tesla_ytd_gain)
Please run this script to get the current date and the year-to-date gain for META and TESLA.
--------------------------------------------------------------------------------
>>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...
user_proxy (to assistant):
exitcode: 0 (execution succeeded)
Code output:
Today's date is: 2023-10-17
[*********************100%%**********************] 1 of 1 completed
[*********************100%%**********************] 1 of 1 completed
META YTD gain: -5.136767947511282
TESLA YTD gain: -36.50836025922416
--------------------------------------------------------------------------------
assistant (to user_proxy):
The current date is October 17, 2023.
The year-to-date (YTD) gain for META (Facebook) is approximately -5.14%, indicating a decrease in value since the start of the year.
The YTD gain for TESLA is approximately -36.51%, indicating a significant decrease in value since the start of the year.
Please note that these values are based on the closing prices of the stocks and can vary slightly depending on the source of the data.
TERMINATE
--------------------------------------------------------------------------------
- 優點:
- 完善:AutoGen 擁有一個非常活躍的社群,非常適合尋求支援和協作的開發人員。
- 可定製的代理:它還提供可定製的代理,可以整合 LLM、工具和人工反饋,使任務執行高度靈活。
- 缺點:
- 複雜性:這是一個相當複雜的框架,對於新使用者來說可能是一個挑戰,需要陡峭的學習曲線才能有效利用其功能。
- 結構性較差:一些開發人員可能會發現 AutoGen 與其他框架相比結構性較差,這可能會影響實施的難易程度。
XAgent
專案連結:https://github.com/OpenBMB/XAgent
官方博文:https://blog.x-agent.net/blog/xagent/
- 雙迴圈機制
- 外迴圈負責宏觀規劃,而內迴圈則負責細節的執行
- 效果碾壓 AutoGPT
- 總結:
- 能力強大,但極耗 token,上述例子消耗了 10 刀 token
- 執行極慢,單次執行 30min
- 可擴充套件性比較強,可基於 ToolServer(基於智譜的另外一個專案 ToolBench)擴充套件自定義介面
OPENAI Assistants
- 參考資料
- Software 2.0 https://karpathy.medium.com/software-2-0-a64152b37c35
- LLM Powered Autonomous Agents https://lilianweng.github.io/posts/2023-06-23-agent/
- The Rise and Potential of Large Language Model Based Agents: A Survey https://arxiv.org/abs/2309.07864
- A Survey on Large Language Model based Autonomous Agents https://arxiv.org/abs/2308.11432
- awesome ai agents https://github.com/e2b-dev/awesome-ai-agents
- 從第一性原理看大模型 Agent 技術 https://mp.weixin.qq.com/s/PL-QjlvVugUfmRD4g0P-qQ
MetaGPT
MetaGPT是一種創新的多智慧體協作框架,其名字來源於“GPT-based Meta-Programming framework”,旨在透過分配不同的角色給生成式預訓練變換器(GPTs),形成一個協作的軟體實體以完成複雜任務。
- 多智慧體協作:MetaGPT的核心在於其多智慧體協作的框架設計,每個GPT模型都被賦予特定的角色和任務,透過協作解決複雜問題,從而提高整體效率和效能。
- 標準化操作程式(SOP):MetaGPT利用SOP來協調基於大語言模型(LLM)的多智慧體系統,實現超程式設計技術,增強問題解決能力。
- 高度可擴充套件性:隨著任務複雜度的增加,可以透過新增更多的GPT模型來擴充套件MetaGPT系統的能力,使其能夠適應不斷變化的需求和環境。
論文連結:https://arxiv.org/abs/2308.00352
GitHub地址:https://github.com/geekan/MetaGPT
-
優點:
- 複雜的代理互動:MetaGPT 在支援代理之間的複雜互動方面表現出色,使其適用於複雜的多代理任務。
- 豐富的庫:它還附帶一個豐富的預定義代理庫,無需進行大量自定義開發即可實現一系列功能。
-
缺點:
- Asyncio 依賴性:嚴重依賴 asyncio,這對於網路密集型 I/O 來說可能很好,但與其他 python 原生並行處理方法相比,它有一些相當嚴重的限制。
- 有限的通用性:MetaGPT 中的代理角色可能缺乏通用性,可能會限制其在需要高度可定製代理的場景中的使用。
適合人群:需要複雜的多代理互動和預定義複雜行為的專案。非常適合網路密集型非同步操作和需要高階協作功能而無需大量定製的專案
AutoAgents
專案連結:https://github.com/Link-AGI/AutoAgents
AutoAgents的過程是分為兩個關鍵階段:Drafting 階段和Execution階段。Drafting階段包括三個預定義agent(Planner、Agent Observer和Plan Observer)之間的協作討論來綜合定製的agent團隊和適合輸入問題的執行計劃或任務。Execution階段透過agent間協作和反饋完善計劃,以及產生最終結果。論文提出self-refinement ,透過個體agent和協作進行自我完善透過多個agent進行細化,以提高agent的熟練程度並促進各agent之間的知識共享agents。為了促進合成團隊中agents之間的具體分工,作者引入預定義的agent(Action Observer)以協助agents團隊共享資訊,協調行動,達成共識,適應環境。
crewAI
專案程式碼:https://github.com/joaomdmoura/crewAI
官網博文:https://docs.crewai.com/
- 基於角色的Agent設計:使用特定的角色、目標和工具來定製Agents。
- 自動化的Agents間委託:agents可以自主地委託任務並在彼此之間進行詢問,從而提高問題解決效率。
- 靈活的任務管理:使用可定製的工具定義任務,並將其動態分配給agents。
- 流程驅動:目前僅支援順序任務執行,但正在研究更復雜的流程,如協商一致和分層。
-
優點:
- 生產重點:CrewAI 的設計考慮到了生產用途,具有乾淨的程式碼和注重實際應用。
- 代理委派:強調代理委派,允許在代理之間採用結構化的方法分配任務。
-
缺點:
- 重新委派限制:重新委派和使用外部代理的限制可能會限制分配和執行任務的靈活性。
- 資料收集:收集匿名使用資料,這可能會引起某些團隊的隱私問題。
更多專案
BabyAGI、CAMEL、DSPy、OpenAgents、Agents、AgentVerse、ChatDev、LangGraph
更多優質內容請關注公號:汀丶人工智慧;會提供一些相關的資源和優質文章,免費獲取閱讀。