一文讀懂用于構建多代理的 CrewAI 開源框架
Hello folks,我是 Luga,今天我們繼續來聊一下人工智能(AI)生態領域相關的技術 - AI Agents ,本文將繼續聚焦在針對新型開源 AI Agents CrewAI 的技術進行解析,使得大家能夠了解 CrewAI 的基本概念以及基于 CrewAI 對其進行應用及市場開發。
LLM (大型語言模型) 已經滲透到我們生活的方方面面,從日常聊天到文檔解析,發揮著重要作用。隨著 LLM 在全球范圍內的熱潮席卷而來,開發者們開始將重點放在人類推理和問題解決上,創造了更加專注和目標導向的 LLL(Language and Logic Learning)應用程序,以應對當今面臨的各種復雜問題。
這些創新的 LLL 應用程序通過優化、擴展和提升 LLM 的能力,為我們提供了更加高效、智能化的解決方案。不論是在商業、科學還是社會領域,這些應用程序都成為了我們理解和應對復雜問題的有力工具,同時也開辟了全新的可能性。
一、傳統 AI Agents 的出路在哪里 ?
隨著技術的蓬勃發展,AI Agents 正在成為改變游戲規則的力量,迅速成為解決問題、創造力和創新的合作伙伴,而這正是 CrewAI 的獨特之處。
能想象一下?僅僅幾分鐘內,可以將一個想法轉化為一個完整的登錄頁面,這正是我們利用 CrewAI 一起實現的場景。
最近的一個案例展示了 CrewAI 與 LangChain 和 OpenHermes2.5(由 Ollama 提供支持)合作的成果,將一行簡單的文字轉變為一個完整的登錄頁面。這個案例揭示了 AI Agents 協作中尚未開發的巨大潛力,以及更快速進行市場測試想法的能力,而這只是 CrewAI 在 Replit 中使用代碼的一個應用場景。
如下為將 Ollama 與 CrewAI 集成 Demo 示例:
from langchain.llms import Ollama
ollama_openhermes = Ollama(model="agent")
# Pass Ollama Model to Agents: When creating your agents within the CrewAI framework, you can pass the Ollama model as an argument to the Agent constructor. For instance:
local_expert = Agent(
role='Local Expert at this city',
goal='Provide the BEST insights about the selected city',
backstory="""A knowledgeable local guide with extensive information
about the city, it's attractions and customs""",
tools=[
SearchTools.search_internet,
BrowserTools.scrape_and_summarize_website,
],
llm=ollama_openhermes, # Ollama model passed here
verbose=True
)
實例化 Ollama 模型
CrewAI 的愿景非常明確,即讓工程師們能夠借助 AI Agents 的集體力量,超越傳統的自動化方法。CrewAI 將各種代理聚集在一起,簡化決策過程,增強創造力,并迎接解決復雜挑戰的挑戰。
這種新型協作方式不僅提供了高效的工具和技術支持,而且還鼓勵創新和實驗。CrewAI 的出現為工程師們創造了一個全新的機遇,使他們能夠更快速地推動想法的實現,并在競爭激烈的市場中保持領先地位。
二、什么是 CrewAI 庫 ?
由 OpenAI 開發,于 2023 年 8 月發布。CrewAI 提供了一組通用的工具和庫,可用于處理多代理系統的常見任務,如代理通信、協調和決策。CrewAI 的潛在應用包括機器人協作、自動駕駛、虛擬現實以及增強現實等多種不同領域。
作為一個專為構建和編排 AI Agents 組而設計的庫。CrewAI 基于簡單化理念以及模塊化策略的模式,使得我們可以將 CrewAI 集成到我們的項目中變得輕而易舉。我們可以這樣理解:將 CrewAI 想象成一組構建塊,每個構建塊都是獨一無二的,但它們都經過精心設計,可以無縫組合在一起。
從技術實現角度而言,CrewAI 建立在 LangChain 之上,這使得它能夠與多種不同的現有工具兼容,包括通過 Ollama 等平臺的本地開源模型。
通過借助 CrewAI,我們可以輕松構建一個強大的 AI Agents 組,以解決各種復雜任務和挑戰。無論是自然語言處理、問題解答還是智能決策,CrewAI 提供了豐富的功能和靈活性。我們可以根據具體需求自由選擇和組合各種模塊,以創建一個符合我們預期目標的獨特系統。
借助 CrewAI 的模塊化設計,我們可以將現有的工具和技術與其無縫集成,實現更高效的開發和部署。基于所提供的簡單易用接口和開發人員友好的文檔,使得我們能夠快速上手并快速實現我們的創意。
不僅如此,CrewAI 同時也是一個持續發展和更新的庫,積極采納并融合最新的研究成果和技術進展。這意味著我們可以始終與前沿的人工智能能力和最佳實踐保持同步。
三、CrewAI 架構設計及實現原理
類似于 LangChain 的設計理念,CrewAI 的設計思想是讓工程師們能夠以簡單的方式構建復雜的 AI 應用。通過模塊化的方法,將功能劃分為獨立的構建塊,每個構建塊都具有特定的功能和任務。這種模塊化的設計思維使得工程師們可以根據需要自由選擇、組合和定制這些構建塊,從而快速搭建出符合自己需求的系統。
通常來說,CrewAI 的核心組件主要涉及如下:
1、Agent - 代理
Agent 通常為我們忠誠而值得信賴的伙伴,每個 Agent 都有自己獨特的個性、背景故事和技能。他們能夠隨時準備被協調支配,無論是去實現某一特定的功能場景、解決棘手的難題,還是探索未知的世界。
2、Task - 任務
CrewAI 任務是為了解決特定問題或完成特定目標而設計的。每個任務都具有明確的目標和要求,并且被分解成小而專注的子任務。這種任務的細分使得 Agent 能夠更加集中精力,并以更高效的方式完成任務。
每個 CrewAI 任務都具有獨特的特征和要求,Agent 需要根據任務的性質和目標來選擇合適的方法和策略。這使得任務的執行更加靈活和自適應,Agent 可以根據具體情況做出相應的決策和調整。
3、Tools - 工具
在 CrewAI 中,Agent 被用作高效執行任務的工具。我們可以利用 LangChain 中的各種現有工具,也可以快速開發自己的工具。同時,CrewAI 也鼓勵我們根據具體任務的需求,快速編寫自定義工具。這種靈活性使得我們能夠根據特定情況和任務的要求,定制化代理工具,以更好地滿足我們的需求。
通過結合使用 LangChain 中的現有工具和自定義工具,我們能夠最大程度地發揮代理的潛力,提高任務執行的效率和質量。
4、Process - 流程
Process 是根據任務的性質和復雜程度進行定制的。不同的任務可能需要不同的 Process 來達到最佳效果。Process 可以包括任務的分解、資源的分配、溝通協調等環節,旨在最大限度地提高團隊的工作效率和任務完成質量。
Process 的設計也可以根據經驗和實踐進行不斷優化和改進。通過對 Process 的不斷迭代和優化,團隊可以提高工作效率、減少錯誤和風險,并提供更好的團隊協作和成果交付。
5、Crew - 執行者
Crew 在 CrewAI 中是代理人、任務和過程相結合的容器層,是任務執行的實際場所。作為一個協同合作的環境,Crew 提供了代理人之間的交流、合作和按照規定過程執行任務的平臺。通過 Crew 的設計,代理人能夠更好地協作并以高效的方式完成任務。
從架構設計角度而言,經過 ReActSingleInputOutputParser 增強,每個 CrewAI Agent 本質上都是一個 LangChain Agent。該解析器經過專門修改,以便更好地進行功能支持,包含用于上下文焦點的綁定停用詞,并集成了內存機制(使用 LangChain 的 ConversationSummaryMemory)以實現任務的連續性。
Agent 是建立在 LangChain 之上的,這一事實創造了飛輪效應,主要的一個是我們可以立即使用所有 LangChain 工具和工具包,從而使得 CrewAI 具有很強的可擴展性和靈活性,可用于各種任務。
在當前的迭代中,Agent 自主運行,通過自我對話來確定工具的使用。這使得其能夠適應不斷變化的環境和任務要求。然而,CrewAI 的未來版本計劃引入不同的流程類型。這些將允許代理在更復雜的場景中協同工作,例如在團隊合作任務或需要多個代理來解決單個問題的情況下。
在最新版本的 CrewAI 平臺中,每個 Task 在創建時都將明確分配至指定的代理單元來執行。這有助于更清晰識別每個代理當前負責的任務類型與量,以及任務運行進度。
同時,系統還能針對每個 Task 限定其使用的工具范圍,例如僅允許調用某類算法庫等,從而可以有效避免由于工具限制導致的任務失敗,也防止單個代理長期占用特定資源阻塞其他工作。
Crew 作為封裝代理和任務的框架,促進它們順序執行工作,從而使得更容易管理代理之間的依賴關系,并確保任務以正確的順序執行。在業務實踐中,我們可能會發現部署多個獨立的 Crew(每個 Crew 配備幾個特工)更為有效。這種模塊化方法允許每個工作人員產生不同的結果,而不是由單個大型工作人員處理許多任務和代理處理單一輸出。
四、CrewAI 與 Autogen 以及 ChatDev Agents 的對比分析
Autogen 擅長創建能夠協同工作的會話代理,但其缺點是缺乏固有的流程概念。這意味著在 Autogen 中,編排代理的交互需要額外的編程。隨著任務規模的增長,這可能會變得復雜和繁瑣。
相對于 CrewAI, 具體來說,Autogen 在以下方面存在缺陷:
- 缺乏流程概念:這意味著 Autogen 代理只能按照它們被編程的方式進行交互。如果需要代理以不同的方式交互,則需要進行額外的編程。
- 編程復雜:編程 Autogen 代理的交互可能非常復雜,尤其是對于復雜的任務及邏輯。
- 可擴展性差:Autogen 代理的編程方式不利于可擴展性。隨著任務規模的增長,編程代理的交互變得更加困難。
ChatDev 將流程的概念引入了 AI 代理領域,但其實現相當僵化。ChatDev 中的自定義是有限的,并且不適合生產環境。這意味著 ChatDev 可能難以滿足復雜應用程序的需求,并且可能導致可擴展性和靈活性問題。
同樣,相對于 CrewAI,ChatDev 的不足主要體在以下幾個方面,具體:
- 自定義有限:ChatDev 中的自定義是有限的。這意味著 ChatDev 可能難以滿足復雜應用程序的需求。
- 不適合生產環境:ChatDev 不適合生產環境。這意味著 ChatDev 可能難以滿足實際應用程序的要求。
- 可擴展性差:ChatDev 的實現不利于可擴展性。隨著任務規模的增長,ChatDev 可能難以滿足應用程序的需求。
總的來說,相對于 Autogen 和 ChatDev 創建會話代理的工具,CrewAI 的構建以生產為中心,既提供了Autogen 對話代理的靈活性,又采用了 ChatDev 的結構化流程方法,但又不失靈活性。
CrewAI 基于動態的流程設計理念,具有很強的適應性,可以無縫地融入開發和生產工作流程,以使得工作流程可以根據需求進行調整和優化,以適應不同的工作場景和業務需求。
未來,CrewAI 將繼續豐富其工作流程能力,支持涵蓋更多領域的流程定義。同時,CrewAI 平臺將進一步優化不同助手間的協作體系,提高工作效率和質量。
與此同時,CrewAI 在用戶體驗和定制性方面也在不斷改進。基于簡單直觀的集成接口,可以有效地幫助企業快速定義和執行定制化的工作流,用戶無需關注底層技術細節,便可安全有效地利用 AI 助手團隊。
因此,從某種意義上來講,CrewAI 不僅是一個解決人工智能協同問題的有效工具,同時,也在重新塑造人類與 AI 之間的關系模式。它將 AI 助手的能力發揮到極致,助推 AI 在各行各業的廣泛應用。隨著 CrewAI 技術的不斷成熟,AI 將成為企業協同工作的重要力量。
Reference :[1] https://github.com/joaomdmoura/crewai