吳恩達:多智能體協作是新關鍵,軟體開發等任務將更有效率
前不久,史丹佛大學教授吳恩達在演講中提到了智能體的巨大潛力,也引起了許多討論。其中,吳恩達談到基於 GPT-3.5 建構的智能體工作流程在應用上表現比 GPT-4 更好。這表明,將目光局限於大模型不一定可取,智能體或許會比其所使用的基礎模型更加優秀。
在軟體開發領域,這些智能體展現了其獨特的能力,能夠高效協作,處理程式設計中的複雜問題,甚至進行程式碼自動產生。最新的技術動態顯示,AI 智能通在軟體開發中顯示出巨大的潛力。還記得 Devin 嗎?號稱世界第一個 AI 軟體工程師的它出場就驚艷到了我們,一個智能體就能帶給我們如此體驗,如果是多個智能體合作,是不是能夠直接把體驗值直接拉滿呢?
想像一下,一個由多個智能體組成的團隊,每個成員都擅長於特定的任務,如程式碼審查、錯誤偵測或新功能實作。這些智能體體可以互補彼此的能力,共同推動軟體專案的進度。這豈不是解放了碼農的雙手,再也不用擔心腱鞘炎了。
吳恩達撰寫一篇帶我們深入這一領域,探索智慧體系的最新動態。文章中提及的 AutoGen 和 LangGraph 等工具,正是在這一大背景下應運而生。這些工具旨在幫助開發者更容易部署和管理 AI 智能體,從而充分發揮其潛力。借助它們的力量,即使是沒有深厚程式設計背景的人也能夠利用 AI 智能體來優化和自動化軟體開發流程。以下是機器之心不改變原義的整理與翻譯。
原文連結:https://www.deeplearning.ai/the-batch/issue-245/
智能體協作是我最近幾封信中描述的四種關鍵AI 智能體設計模式中的最後一種。對於像編寫軟體這樣的複雜任務,多智能體方法會將任務分解成由不同角色(如軟體工程師、產品經理、設計師、QA 工程師等)執行的子任務,並讓不同的智能體完成不同的子任務。
不同的智能體可以透過提供一個LLM(或多個LLM)執行不同的任務來建構。例如,要建立一個軟體工程師智能體,我們可以提供LLM:「你是編寫清晰、高效程式碼的專家。請寫程式碼來執行任務…」。
我們多次呼叫相同的大型語言模型(LLM),但我們採用多智能體的程式設計抽象方法,這看似違反直覺,但卻有幾個理由支持:
- 它有效!許多團隊使用這種方法取得了良好的效果,沒有什麼比結果更有說服力的了。此外,消融研究(例如在 AutoGen 論文中)表明,多智能體的表現優於單一智能體。
- 雖然現今的一些LLM 能接受非常長的輸入上下文(例如,Gemini 1.5 Pro 可以接受100 萬個token),但它們真正理解長而複雜輸入的能力是參差不齊的。採用智能體工作流程,讓 LLM 一次專注於一件事,可以獲得更好的表現。
- 最重要的是,多智能體設計模式為開發者提供了一個框架,用以將複雜任務分解成子任務。當在單一 CPU 上執行程式碼時,我們經常將程式分解成不同的進程或執行緒。這種抽像有助於我們將任務分解成更易於編碼的子任務。使用多智能體角色進行思考同樣是一個有用的抽象。
在許多公司中,管理者通常會決定招募哪些角色,然後如何將複雜專案— 如寫一大塊軟體或準備研究報告- 分解為較小的任務分配給不同專長的員工。使用多個智能體的做法與此類似。每個智能體實施自己的工作流程,擁有自己的記憶(這本身是智能體技術中一個迅速發展的領域:一個智能體如何記住足夠多的過去互動以在未來的任務中表現得更好) ,並可能請求其他智能體的幫助。智能體還可以進行規劃和使用工具。這會產生了大量的 LLM 呼叫和智慧體間的訊息傳遞,可能形成非常複雜的工作流程。
雖然管理人員很困難,但這是我們非常熟悉的,它為我們如何「僱用」和分配任務給我們的 AI 智能體提供了一個心理框架。幸運的是,管理不善 AI 智能體的傷害遠低於管理不善人類!
像 AutoGen、Crew AI 和 LangGraph 這樣的新興框架為解決問題提供了豐富的多智能體解決方案。如果你對玩樂趣十足的多智能體系統感興趣,不妨看看 ChatDev,這是一個運行虛擬軟體公司的智能體集合的開源實作。你可以查看他們的 GitHub repo,也許複製 repo 並親自運行系統。雖然它可能不會總是產生你想要的結果,但你可能會對它的表現感到驚訝。
就像規劃這個設計模式一樣,我發現多智能體協作的輸出品質很難預測,特別是當允許智能體自由互動並為它們提供多種工具時。更成熟的反思和工具使用模式更為可靠。希望你能享受這些智能體設計模式的樂趣,並且它們能為你帶來驚人的結果!如果你有興趣了解更多,可以閱讀以下文章:
- #論文標題:Communicative Agents for Software Development
- 論文連結:https://arxiv.org/pdf/2307.07924.pdf
- 論文標題:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
- 論文連結:https://arxiv.org/pdf/2308.08155.pdf
- #論文標題:METAGPT: META PROGRAMMING FOR A MULTI-AGENT COLLABORATIVE FRAMEWORK
- 論文連結:https://arxiv.org/pdf/2308.00352.pdf
更多詳細內容,請閱讀原文。
看了本篇文章,網友們大受啟發,不過也有網友提出,多智能體系統在執行相同或類似任務時表現出的穩定性和可預測性還有待考慮。你覺得多智能體協作的益弊何在呢?
以上是吳恩達:多智能體協作是新關鍵,軟體開發等任務將更有效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

C 中使用字符串流的主要步驟和注意事項如下:1.創建輸出字符串流並轉換數據,如將整數轉換為字符串。 2.應用於復雜數據結構的序列化,如將vector轉換為字符串。 3.注意性能問題,避免在處理大量數據時頻繁使用字符串流,可考慮使用std::string的append方法。 4.注意內存管理,避免頻繁創建和銷毀字符串流對象,可以重用或使用std::stringstream。
