精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘

發布于 2025-3-26 00:42
瀏覽
0收藏

目錄

一、引言

二、以「對話為中心」的ChatBot

三、以「交付為中心」的多智能體Agent

三、什么是智能體Agent

    1. 從Prompt到思維鏈

    2. ReAct架構

    3. Agent

    4. Manus:一個Agent典型案例

    5.大模型上下文協議(MCP)

四、智能體Agent實現的源碼剖析(OpenManus項目)

    1. 準備

    2. 代碼

五、總結

一、引言

從2022年12月份OpenAI發布ChatGPT產品至今已有2年多的時間,當大家已經習慣于在對話框中與AI交互,習慣于通過各種Prompt技巧讓AI更好的理解并回答我們的問題,似乎默認這就是一種比較好與AI的交互方式了。

然而,這就是我們期盼的與AI交互的形式嘛?這是一種高效的方式嘛?

顯然,這是不夠的。

我們期望的是:告訴AI我們想要的目標或者任務,AI能夠理解深度理解并分析我們的意圖、自動的進行任務的拆解、自動的尋找可以使用的工具、自動的進行結果數據的匯總過濾、自動的呈現符合任務的展示形式。同時在任務處理過程中,可以自己完成異常的檢測和修改。就如同一位優秀的同學,我們告訴他任務的目標,他可以自己尋找飛書文檔、搜索網絡知識、使用內部系統、自己編碼驗證方案可行性,并最終給一份好的解決方案。

二、以「對話為中心」的ChatBot

我們發送一條指令,AI被動的響應指令。即完成一輪人與AI的交互。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區


三、以「交付為中心」的多智能體Agent

我們發送一個任務,AI自動分析任務、調用可用的工具、分析結果、過濾數據并自動處理異常,最終呈現解決方案。

完成這樣的一個任務,需要多智能體Agent間的協作以及對常用工具的調用。那什么是智能體Agent呢?

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

四、什么是智能體Agent

從Prompt到思維鏈

隨著大模型的發展,Prompt工程已成為撬動大模型潛能的核心技術。即使我們普通用戶在與大模型的交互中,也通過角色定義(如"資深工程師")或示例引導來優化輸出效果,但這類簡單提示往往難以突破模型固有的邏輯天花板——就像給賽車裝自行車輪胎,再怎么調整也難以突破速度極限。

但偶然間,人們發現了一個神奇的咒語:只需要告訴大模型,你的 think 要 step by step。研究者發現只要加了這個prompt,就能極為顯著地改善大模型做數學題的正確率。

大模型的數學與邏輯能力短板,是所有體驗過其對話功能的用戶都能直觀感受到的痛點。這一缺陷嚴重制約了大模型的商業化落地進程,畢竟沒有人敢輕易信任一個邏輯混亂的智能系統能輸出可靠的決策結果。于是,提升大模型數學能力,被所有做基礎模型的公司當作了第一目標。

研究者試圖通過強化思維鏈來突破這一瓶頸。一個直觀的思路是:讓模型像人類解題時在草稿紙上推演那樣,通過 "step by step" 的方式展開邏輯鏈條 —— 在這個過程中,包含假設、演繹、反思、糾錯等一系列思維活動。既然人類通過這種結構化的思考方式能夠有效解決數學問題,那么大模型是否也能通過類似機制實現能力躍遷?這一猜想推動著研究向縱深發展,最終形成了思維鏈技術的核心框架。這樣的觀念經過繼續鉆研,最終就構成了思維鏈,思維鏈是一個能以最小的代價,而非常顯著提升模型智力水平(邏輯能力、解題能力、代碼能力)的技術。

值得注意的是,2025 年春節期間引發廣泛關注的 DeepSeek 大模型,正是思維鏈技術的成功實踐典范。盡管 DeepSeek 并非首創者,但其通過創新性地融合混合專家(MoE)架構與強化學習技術,顯著提升了思維鏈推理的計算效率與性能表現。這種技術優化使得 DeepSeek 在保持高精度推理的同時,大幅降低了計算成本,最終實現了屠榜級表現。

ReAct架構

如果說思維鏈(COT)是給 AI 裝上了人類的 "草稿紙",那么 ReAct 框架就是為它配備了 "雙手"—— 讓 AI 不僅能在腦子里推演,還能主動采取行動獲取信息。這種 "思考 + 行動" 的組合,正在把大模型從 "紙上談兵" 的理論家,變成能解決現實問題的實干家。

ReAct 的核心在于將推理(Reasoning)與行動(Action)緊密結合。當模型面對復雜問題時,會先像人類一樣拆解思考步驟,然后根據中間結果調用外部工具(如搜索引擎、數據庫、計算器)獲取實時數據,再把這些信息整合到后續推理中。

其實,實現一個ReAct很簡單,只需要構建Prompt+提供工具+循環執行即可,筆者在這里不進行詳細的介紹,只需要給一個Prompt例子,讀者就能理解:

盡可能最好地為用戶回答接下來的問題,你可以使用以下工具來輔助你:{tools} 使用以下格式:

- 問題:你需要回答的輸入問題

- 思考:你需要持續思考下一步采取什么行動 

- 行動:要采取的行動,應該是 [{tool_names}] 中的一個,以及該行動的輸入內容 

- 觀察:行動并觀測結果,并判斷結果是否合理 ...(這個思考 / 行動  / 觀察可以重復 N 次,直到你認為知道了最終答案 

- 最終答案:原始輸入問題的最終答案 

開始! 

- 問題:{input}

Tools支持開發者自定義,比如給予LLM一個查詢天氣的接口、計算器接口等。

ReAct架構實現了一種"問題拆解-工具調用-結果整合"的閉環機制,使得開發者僅需通過定義工具集(如天氣API、計算器、知識圖譜接口)和設計任務引導詞,就能將大模型轉化為可執行多步驟決策的智能體。最終可以使大模型突破純文本推理的局限,真正具備了在動態場景中解決開放性問題的工程化能力。

Agent

Agent作為大模型技術的集大成者,通過整合思維鏈(CoT)的推理能力和ReAct框架的行動機制,構建了具備自主決策與執行能力的智能系統。其核心突破在于將“大腦”與“四肢”有機統一,標志著大模型從被動應答邁向主動干預現實的質變。

在架構上,Agent與ReAct差別不大,ReAct是Agent的核心實現范式之一,Agent進一步整合記憶存儲、多智能體協作等模塊,形成更完整的自主決策系統。下圖是一個簡單的Agent架構圖:

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

Agent處理流程

1-4步會循環進行,直到LLM認為問題已被回答。

1.規劃(Planning):

  • 定義:規劃是Agent的思維模型,負責拆解復雜任務為可執行的子任務,并評估執行策略。
  • 實現方式:通過大模型提示工程(如ReAct、CoT推理模式)實現,使Agent能夠精準拆解任務,分步解決。

2.記憶(Memory):

  • 定義:記憶即信息存儲與回憶,包括短期記憶和長期記憶。
  • 實現方式:短期記憶用于存儲會話上下文,支持多輪對話;長期記憶則存儲用戶特征、業務數據等,通常通過向量數據庫等技術實現快速存取。

3.工具(Tools):

  • 定義:工具是Agent感知環境、執行決策的輔助手段,如API調用、插件擴展等。
  • 實現方式:通過接入外部工具(如API、插件)擴展Agent的能力,如ChatPDF解析文檔、Midjourney文生圖等。

4.行動(Action):

  • 定義:行動是Agent將規劃與記憶轉化為具體輸出的過程,包括與外部環境的互動或工具調用。
  • 實現方式:Agent根據規劃與記憶執行具體行動,如智能客服回復、查詢天氣預報、AI機器人抓起物體等。

Manus:一個Agent典型案例

在讀完前一節關于智能體(Agent)的技術解析后,讀者也許會認為這類系統的工程實現并非難事,實際上也確實是這樣。近期爆火的 Agent 產品 Manus 便是典型案例。當用戶提出 "定制 7 天日本旅行計劃" 的需求時,Manus 能夠基于目標,自主進行網絡搜索并將信息整合,展現出高度擬人化的任務執行邏輯。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

盡管 Manus 目前尚未向普通用戶開放,且采用邀請制注冊的封閉運營模式,但其通過官方演示視頻呈現的強大智能化表現,已在技術圈引發廣泛關注。值得關注的是,隨著Agent技術的熱度攀升,開源社區已迅速涌現出 OpenManus、OWL 等多個復刻項目。

因為Manus并非開源,我們很難了解其技術細節。但好在:

  1. "Manus 的部分技術細節,包括其提示詞設計、運行機制等內容被網友通過非官方渠道披露,感興趣的讀者可自行查閱相關公開資料。
  2. 我們可以了解一下大模型上下文協議(Model Context Protocol,MCP),這是 Anthropic (Claude) 主導發布的一個開放的、通用的、有共識的協議標準,雖然Manus不一定用了這個協議,但目前一些相關開源項目也是基于MCP的,本文會在下面介紹MCP。
  3. 目前已有復刻的開源項目Openmanus,筆者會在接下來的章節剖析其源碼。

大模型上下文協議(MCP)

MCP是做什么的?

MCP(Model Context Protocol)作為一項開放協議,旨在為應用程序與大型語言模型(LLMs)之間的上下文交互提供標準化框架。其設計理念可類比為數字時代的 "USB-C 接口"—— 正如 USB-C 統一了設備與外設的連接標準,MCP 通過標準化的上下文交互接口,實現了 AI 模型與多樣化數據源、工具之間的無縫對接。

如下圖所示,圖中的MCP server都可以看成一個個工具(如搜索引擎、天氣查詢),通過“接口”連接到MCP clients(大模型)上,大模型可以使用各種MCP server來更好地處理用戶的問題。

此外,下游工具的開發者也可以更好的開發其工具,目前在MCP官網即可了解其各種編程語言的SDK和相關概念。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

MCP架構

MCP 的核心采用客戶端-服務器架構,其中 host 可以連接到多個服務器,讀者簡單看看即可:

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • MCP 主機(MCP Hosts):指需要通過 MCP 協議獲取數據的應用程序,涵蓋 AI 開發工具(如 Claude Desktop)、集成開發環境(IDEs)等智能應用場景。
  • MCP 客戶端(MCP Clients):作為協議的執行者,每個客戶端與對應的 MCP 服務器建立一對一的專屬連接,負責協議層面的通信交互。
  • MCP 服務器(MCP Servers):輕量化的功能載體,通過標準化的 Model Context Protocol 對外開放特定能力,可視為連接模型與工具的智能橋梁。
  • 本地化數據源(Local Data Sources):包括服務器可安全訪問的本地文件系統、數據庫及專有服務,構成數據交互的近端生態。
  • 遠程服務(Remote Services):通過互聯網連接的外部系統,例如各類 API 接口服務,拓展了模型的能力邊界。

為什么要用MCP?

從技術演進視角看,MCP 的誕生是提示工程(Prompt Engineering)發展的必然產物。研究表明,結構化的上下文信息能顯著提升大模型的任務表現。在傳統提示工程中,我們往往需要人工從數據庫篩選信息或通過工具檢索相關內容,再手動將這些信息注入提示詞。然而,隨著復雜任務場景的增多,這種手工注入信息的操作變得愈發繁瑣且低效。

為解決這一痛點,主流大模型平臺(如 OpenAI、Google)先后引入了函數調用(Function Call)機制。該機制允許模型在推理過程中主動調用預定義函數獲取數據或執行操作,極大提升了自動化水平。然而,函數調用機制存在顯著局限性:其一,不同平臺的函數調用 API 存在較大差異,例如 OpenAI 與 Google 的實現方式互不兼容,開發者在切換模型時需重新編寫代碼,徒增適配成本;其二,該機制在安全性、交互性及復雜場景的擴展性方面仍存在優化空間。

在此背景下,MCP 協議通過標準化的上下文交互接口,為大模型構建了更具普適性的工具調用框架。它不僅解耦了模型與工具的依賴關系,還通過統一的協議規范解決了跨平臺兼容性問題。更重要的是,MCP 將上下文管理提升到系統架構層面,為大模型在復雜業務場景中的深度應用提供了可擴展的技術底座。這種從碎片化的提示工程到體系化的上下文協議的演進,標志著大模型應用正在向更高效、更規范的方向邁進。

四、智能體Agent實現的源碼剖析(OpenManus項目)

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

OpenManus 是一個基于 MCP 協議的開源智能體實現項目,旨在通過標準化的上下文協議實現大模型與工具的高效協同。當前項目仍處于快速迭代階段,本文以其 2025 年 3 月 12 日的版本為分析對象。選擇該項目的原因如下:

  • 團隊背景與代碼質量:項目作者來自MetaGPT,具備深厚的工程經驗,代碼結構清晰且注釋完善,兼顧了技術實現與可讀性。
  • 部署便捷性:只需通過虛擬環境安裝依賴并配置大模型 API Key(如 OpenAI 的 API 密鑰),即可快速啟動,降低了技術門檻。
  • 技術前沿性:項目緊跟大模型技術發展,且目前仍在不斷迭代的過程中。

在經過前面對相關概念的討論,我們可以得知實現Agent有幾個關鍵的點,讀者可以帶著問題在項目中尋找答案:

  • Prompt:其結構化的Prompt是什么樣的?通過Prompt可以對其架構有一個初步認識。
  • OpenManus:怎么通過大模型思考和處理問題?
  • 工具相關:怎么進行工具注冊、工具管理的?工具執行邏輯是什么的?

準備

項目地址:https://github.com/mannaandpoem/OpenManus/tree/main

構建環境

創建一個pythnotallow=3.12的虛擬環境

  • 筆者測試了一下,非3.12版本會有一個package不兼容。
  • 可以用conda或python內置的uv,項目文檔提供了詳細的指令。

安裝playwright

  • 如果第一次使用,需要安裝playwright。

playwright install
## 或者
python -m playwright install
## 以上命令會安裝所有瀏覽器,如果只需要安裝一個瀏覽器比如firefox
python -m playwright install firefox

配置大模型API Key

  • 可以用DeepSeek或通義千問的API Key,其中通義有免費額度,DeepSeek雖然收費但價格便宜,測試一次使用約1000token,成本不到0.01元。
  • 根據項目文檔配置cofig.yaml即可,但項目調用大模型是使用基礎的OpenAI API,如果使用其他大模型,可能需要基于對應的官方文檔小改一下。

代碼

OpenManus客戶端

Python OpenManus/main.py即可在終端運行OpenManus,讀者也可以嘗試其Web版本。

  • 具體會調用20行代碼,執行Manus類的方法run()。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

進入OpenManus/app/agent/manus.py查看Manus類,可以發現它繼承了ToolCallAgent類,再進入會發現又是繼承,有點復雜,這里我畫一張關系圖。

  • act()執行時使用execute_tools()進行具體的工具執行。
  • 總體來說,Manus類定義了Prompt和可使用的工具。
  • Base類定義了run(),在run()中會循環執行ReAct類的方法step(),直到Finish或達到max_step。
  • step()類會順序執行ToolCallAgent類的think()和act()。

當然,這里只羅列了重要的組件和方法,一些方法沒有畫在圖中。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

Prompt

一般來說,輸入給LLM的prompt分為兩種:1)系統 prompt,用于定義模型的角色定位和行為規則;2)用戶 prompt(OpenManus稱為Next Step Prompt),用于傳達具體的任務指令或信息需求。

在OpenManus/app/prompt/manus.py中即可看到Manus的Prompt,這里展示一下中文版,讀者基于此可對OpenManus架構有一個初步認識:

  • 系統Prompt(SYSTEM_PROMPT):“你是 OpenManus,一個全能的人工智能助手,旨在解決用戶提出的任何任務。你擁有各種可使用的工具,能調用這些工具高效地完成復雜的請求。無論是編程、信息檢索、文件處理還是網頁瀏覽,你都能應對自如。”
  • 下一步Prompt(NEXT_STEP_PROMPT):“你可以使用 PythonExecute 與計算機進行交互,通過 FileSaver 保存重要的內容和信息文件,使用 BrowserUseTool 打開瀏覽器,并使用 GoogleSearch 檢索信息。根據用戶的需求,主動選擇最合適的工具或工具組合。對于復雜的任務,你可以將問題分解,逐步使用不同的工具來解決它。在使用完每個工具后,清晰地解釋執行結果并給出下一步的建議。

當然,在實際執行時會對prompt有進一步優化,不過核心的系統定位與任務指導原則是不會改變的。

Manus類

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

我們先看一下OpenManus擁有的工具,工具也支持自定義,會在后文進行介紹。

  • PythonExecute:執行 Python 代碼以與計算機系統交互、進行數據處理、自動化任務等等。
  • FileSaver:在本地保存文件,例如 txt、py、html 等文件。
  • BrowserUseTool:打開、瀏覽并使用網絡瀏覽器。如果你打開一個本地 HTML 文件,必須提供該文件的絕對路徑。
  • GoogleSearch:執行網絡信息檢索。
  • Terminate:如果LLM認為回答完畢,會調用這個工具終止循環。

Base類

run()

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 首先,輸入的request就是用戶輸入的提問。

狀態管理

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 執行時首先檢查代理的當前狀態是否為 IDLE?(空閑狀態)。如果不是空閑狀態,會拋出 RuntimeError 異常,因為只有在空閑狀態下才能啟動代理的執行。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 當進入循環時前,使用 state_context?上下文管理器將代理的狀態臨時切換到 RUNNING?(運行狀態)。在上下文管理器中執行的代碼塊會在進入時將狀態切換為指定狀態,在退出時恢復到之前的狀態。如果在執行過程中發生異常,會將狀態切換為 ERROR。

Memory管理

我們調用大模型的API,本質是向大模型提供方發http請求,http請求是無狀態的。

  • 也就是說,服務端不會保留任何會話信息。對于每次都完成一個獨立的任務,無狀態是沒有任何問題的。但對持續聊天來說,就會出現對之前會話一無所知的情況。

所以為了讓大模型持續與用戶的對話,一種常見的解決方案就是把聊天歷史告訴大模型。

  • 因此,在OpenManus中會進行Memory的管理。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 用戶提供的 request? 參數,調用 update_memory 方法將該請求作為用戶消息添加到代理的Memory中。
  • 除了這個函數,Manus也在進行think()、act()時也會更新Memory,同時Memory容量也不是無限大的,容量滿時需要刪除老的Message。

主循環

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

agent本質就是循環執行。

  • step實現參考react step。
  • 循環結束條件:max_steps或者FINISHED狀態。
  • 每次執行一個step并獲得result——step_result = await self.step()。
  • is_stuck? 方法用于檢查代理是否陷入了循環(即是否出現了重復的響應)。如果是,則調用 handle_stuck_state 方法處理這種情況,例如添加一個提示來改變策略。

ReAct

step()

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 這里的邏輯很簡單。

ToolcallAgent

Think()

  • 輸入:不需要輸入,因為用戶的question是被存放在Memory中。
  • 輸出:一個bool類型,當內部LLM判斷需要act()時,為True,否則為Fasle。

詢問LLM

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 55行的代碼用于調用LLM的API接口,獲取回復。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

對應到OpenManus/app/llm.py 233行附近,這里就是基于OpenAI提供的API接口進行對話,具體的參數可參考相應官方文檔。

  • 這里會將之前定義的下一步Prompt發給LLM,LLM會根據提供的工具列表,判斷是否需要且調用的是哪個工具,當然也可能是:1)不需要工具只進行回復 2)調用Terminate工具結束會話。

下圖是一次返回response結果。

  • 輸入的question是“計算Kobe Bryant的BMI?”,LLM先分析出了要通過瀏覽器查詢資料,因此要use the BrowserUseTool。
  • 根據傳入的工具類型等信息,LLM自動構建了執行工具需要用的tool_name、action等參數。

ChatCompletionMessage(
    cnotallow="It seems there was an issue with retrieving the information about Kobe Bryant's height and weight through a Google search. To calculate Kobe Bryant's BMI, we need his height and weight. Let's try to find this information by opening a browser and visiting a reliable source. I will use the BrowserUseTool to navigate to a website that provides details about Kobe Bryant's height and weight. Let's proceed with this approach.", 
    refusal=None, 
    role='assistant', 
    annotatinotallow=None, 
    audio=None, 
    function_call=None, 
    tool_calls=[
        ChatCompletionMessageToolCall(
            id='call_aez57ImfIEZrqjZdcW9sFNEJ',
            functinotallow=Function(
            arguments='{
                "action":"navigate",
                "url":"https://www.biography.com/athlete/kobe-bryant"
                }', 
            name='browser_use'), 
            type='function')]
)

think后續邏輯

  • think()后續的邏輯比較簡單,主要是更新memory(memory存儲單位是message),最后在100行附近的邏輯,基于self.tool_choices等參數的設置和LLM返回的工具列表,輸出bool類型結果。
  • 同時,需要被調用的工具會被記錄到self.tool_calls這個列表中,后續的act()會執行對應的工具。

Act()

  • 輸入:同think(),不需要輸入。
  • 輸出:results,根據工具結果構建的一個字符串。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

  • 這個函數比較簡單,主要是調用execute_tool()函數。

Execute_tool()

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

該函數會調用Tool類提供的接口execute()。

  • Tool類接口會在后面介紹。

同時,對于預設定的special tool,會self._handle_special_tool(name=name, result=result)進行特殊處理。

  • 當前的special tool只有一個Terminate工具,特殊處理就是設置Agent的狀態為AgentState.FINISHED,結束對話。

工具相關

我們在之前介紹了MCP相關的概念,如下圖所示:

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

事實上,OpenManus也是基于MCP的,OpenManus的tool相當于MCP server,根據MCP協議,我們只需要定義tool類支持的方法和參數等,每次注冊一個新工具,根據父類override一個子類即可。

那我們首先要了解父類都定義了什么參數和方法,也就是OpenManus/app/tool/base.py定義的Basetool類。

Base Tool

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

可以看出,代碼很簡單,每個tool包含的參數為:name、description(提供給LLM看的,對工具的介紹)、parameters(執行工具時要用的參數)。

同時,一個tool支持的方法有execute()和to_param()。

  • execute()用于執行具體的邏輯,每個子類需要override這個方法。
  • to_param()將工具調用的結果結構化輸出。

當然,這里還有一個python關鍵字__call__,這個關鍵字很簡單,定義了__call__,該類的實例對象可以像函數一樣被調用。

工具JSON

可以根據OpenManus預定義的工具json簡單了解一下,每個工具執行時需要的參數。

[
  {
    "type": "function",
    "function": {
      "name": "python_execute",
      "description": "Executes Python code string. Note: Only print outputs are visible, function return values are not captured. Use print statements to see results.",
      "parameters": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "The Python code to execute."
          }
        },
        "required": ["code"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "google_search",
      "description": "Perform a Google search and return a list of relevant links.\nUse this tool when you need to find information on the web, get up-to-date data, or research specific topics.\nThe tool returns a list of URLs that match the search query.\n",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "(required) The search query to submit to Google."
          },
          "num_results": {
            "type": "integer",
            "description": "(optional) The number of search results to return. Default is 10.",
            "default": 10
          }
        },
        "required": ["query"]
      }
    }
]

工具示例——google_search

OpenManus項目在OpenManus/app/tool中定義了bash工具、瀏覽器工具、谷歌搜索工具等,這里簡單看一下谷歌搜索工具。

當然,國內可能比較難使用谷歌搜索,OpenManus社區也有大佬提供了baidu、bing等搜索引擎工具。

從對話到自主行動:AI應用如何從 Chat 進化為 Agent?開源項目源碼深度揭秘-AI.x社區

可以看出,代碼很簡單,主要做了兩件事。

  • 定義工具參數:name、description、parameters。
  • 定義execute:基于googlesearch庫提供的函數進行搜索并返回。

五、總結

OpenManus的代碼介紹到這里,主要是介紹一下核心代碼,同時,原作者寫了planning部分的代碼但暫時沒有應用到項目中,筆者也沒有介紹。如果想對該項目有更進一步的了解,請大家查看github上提供的源碼。而且,作者還是非常積極的,每天會有十幾個commit。

同時,讀者可以簡單本地部署玩一下OpenManus,通過幾個prompt,就可以知道該項目還是停留在“玩具階段”,比如筆者測試了一下,當詢問“計算一下科比的BMI?”,OpenManus可以很準確的實現谷歌搜索——瀏覽器訪問——python計算這個過程。但如果詢問“計算科比、梅西的BMI并排序?”,無論我改寫了幾次prompt,OpenManus都沒有給我滿意的回答。

此外,無論是在工具參數信息、還是prompt、memory管理中,都可以看到agent應用大模型token消耗量巨大,即使我們不考慮token成本,但大模型的上下文仍然是有限的,這種資源消耗也會直接導致模型在處理多步驟任務時面臨信息截斷的風險 —— 早期的關鍵信息可能因上下文溢出而被丟棄,進而引發推理鏈條的斷裂。更值得警惕的是,當模型試圖在有限的上下文中 “腦補” 缺失的信息時,往往會產生與事實不符的幻覺。

鑒于此,盡管 OpenManus 展示出了利用工具鏈解決復雜問題的潛力,不過距離成為一個實用、高效且穩定的生產級人工智能助手仍有很長的路要走。未來,開發者們或許需要在優化工具使用邏輯、提升多任務處理能力、降低大模型 token 消耗以及增強上下文管理等方面進行深入探索與改進。同時,對于普通用戶而言,在體驗這類項目時,也應該保持理性和客觀的態度,既看到其創新性和趣味性,也認識到其當前存在的局限性。希望在技術的不斷迭代和完善下,OpenManus 以及類似的項目能夠早日突破現有的瓶頸,真正為人們的工作和生活帶來實質性的幫助。

本文轉載自??得物技術??,作者:漢堡

收藏
回復
舉報
回復
相關推薦
国产精品1区二区.| 亚洲中无吗在线| 欧美视频三区在线播放| 亚洲最新在线| 人成网站在线观看| 日韩专区在线视频| 欧美福利视频网站| 女女互磨互喷水高潮les呻吟| 91成人精品观看| 婷婷一区二区三区| 性欧美18一19内谢| 五月婷婷丁香网| 蜜臀av亚洲一区中文字幕| 久久久久久国产精品| 人妻一区二区视频| 凹凸av导航大全精品| 欧美日韩国产中文精品字幕自在自线| 中文字幕免费在线不卡| 无码精品黑人一区二区三区| 黄页网站大全一区二区| 人妖精品videosex性欧美| 波多野结衣家庭教师| 精品国产91| 欧美精品一区二区三区视频| 三区视频在线观看| 三上悠亚激情av一区二区三区| 亚洲精品一二三四区| 日韩欧美亚洲精品| 无码精品人妻一区二区三区影院| 国产麻豆午夜三级精品| 国产精品视频一区国模私拍| 国产黄色免费观看| 激情欧美亚洲| 欧美人在线视频| 久久人妻无码aⅴ毛片a片app| 性欧美xxxx免费岛国不卡电影| 日韩精品一区二区在线观看| 福利视频999| 成人精品国产亚洲| 色噜噜偷拍精品综合在线| 成年人网站国产| 亚洲性图自拍| 亚洲色图制服诱惑| 超碰在线免费观看97| 91露出在线| 中文字幕高清不卡| 五月婷婷一区| 女人天堂在线| 国产午夜亚洲精品午夜鲁丝片 | 国产精品久久久久影院老司| 五月婷婷综合色| 国产高清在线看| 欧美韩日一区二区三区四区| 午夜精品福利一区二区| av免费观看一区二区| 国产欧美日韩综合精品一区二区 | 一级黄色片毛片| 波多野结衣在线一区二区| 欧美成人免费网站| 大桥未久恸哭の女教师| 国产精品男女| 日韩高清a**址| 欧美做受xxxxxⅹ性视频| 国产区精品区| 色妞欧美日韩在线| 中文字幕在线有码| 伊人久久婷婷| 国产97在线|亚洲| 波多野结衣视频观看| 免费视频最近日韩| 91在线国产电影| 日批视频免费播放| 久久亚洲私人国产精品va媚药| 日韩av电影免费在线观看| 中文字幕在线观看日本| 亚洲精品成人少妇| 99精品在线免费视频| 日韩av首页| 欧美一区在线视频| 在线免费看黄色片| 日韩欧美自拍| 欧美日韩福利视频| 免费又黄又爽又猛大片午夜| 久久99国产精品久久| 国产乱码一区| 国产片在线观看| 亚洲综合999| 日韩一级免费在线观看| 精品国产不卡一区二区| 日韩经典中文字幕在线观看| 日本成人免费在线观看| 亚洲黑丝一区二区| 国产精品久久久久久久久久三级| 99国产精品久久久久99打野战| 成人晚上爱看视频| 亚洲精品免费在线看| 色婷婷av在线| 在线视频一区二区三| 亚洲免费观看在线| 日韩精品免费一区二区在线观看| 久久久久国产精品免费| 正在播放木下凛凛xv99| 成人视屏免费看| 午夜精品一区二区三区在线观看 | 好男人香蕉影院| 色综合蜜月久久综合网| 777国产偷窥盗摄精品视频| 88av在线视频| 91免费观看在线| 福利在线小视频| 性感美女一区二区在线观看| 欧美大片国产精品| 女人裸体性做爰全过| 一本不卡影院| 91黄在线观看| 免费人成在线观看播放视频| 亚洲一区二区三区精品在线| 五月激情五月婷婷| 欧美日韩一二三四| 亲子乱一区二区三区电影| 亚洲老妇色熟女老太| 国产精品美女久久久久av爽李琼 | 亚洲色在线视频| 久久精品国产亚洲av高清色欲| 激情小说亚洲一区| 色综合电影网| 欧美艳星kaydenkross| 亚洲精品99999| 久久精品国产亚洲AV无码男同 | 尤物yw193can在线观看| 欧美日韩aaa| 丁香花五月婷婷| 久久精品30| 久久精品一区二区三区不卡免费视频| 肉肉视频在线观看| 精品国产一区二区亚洲人成毛片| 91香蕉视频在线播放| 久久99国产精品久久| 影音先锋亚洲视频| 另类一区二区| 精品激情国产视频| 一级黄色a视频| 国产精品区一区二区三区| 久久久国产欧美| 国内精品视频在线观看| 国产ts人妖一区二区三区| 性xxxx视频播放免费| 高跟丝袜欧美一区| 少妇真人直播免费视频| 亚洲欧美激情诱惑| 黄网页免费在线观看| 国产精品小仙女| 精品嫩模一区二区三区| 国产精品亚洲一区二区在线观看 | 色屁屁www国产馆在线观看| 91精品国产高清一区二区三区蜜臀| 一本一本久久a久久| 蜜桃视频在线观看一区二区| 亚欧洲精品在线视频免费观看| av成人在线看| 久久精品99久久香蕉国产色戒| 一二三区在线播放| 亚洲女同女同女同女同女同69| 日本一本在线视频| 亚洲黄网站黄| 欧美三日本三级少妇三99| 亚洲精品一区三区三区在线观看| 国产亚洲a∨片在线观看| 中文字幕欧美人妻精品| 中文字幕一区免费在线观看| 波多野结衣网页| 一本色道久久综合| 青青影院一区二区三区四区| 欧美亚洲黄色| 欧美肥婆姓交大片| 先锋av资源站| 欧美日韩综合在线免费观看| 夫妻性生活毛片| 不卡的av网站| 国产精品天天av精麻传媒| 91中文字幕精品永久在线| 91大片在线观看| 久久人体大尺度| 久久精品2019中文字幕| 色呦呦免费观看| 欧美婷婷六月丁香综合色| 欧美黄色一区二区三区| 久久亚洲私人国产精品va媚药| 亚洲天堂av一区二区| 亚洲精品乱码| 日韩久久精品一区二区三区| 日韩精品中文字幕吗一区二区| 88xx成人精品| 黄色网页在线看| 精品亚洲国产视频| 国产喷水吹潮视频www| 欧美日韩一区二区在线播放| 欧美性猛交xxxx乱大交少妇| 成人免费的视频| 中文字幕永久视频| 亚洲国产一区二区三区高清| 中文字幕欧美人与畜| 亚洲欧洲免费| 国产不卡一区二区在线观看| 国产一区精品福利| 欧美在线观看网站| 日本孕妇大胆孕交无码| 中文字幕精品一区久久久久| 天天摸夜夜添狠狠添婷婷| 555夜色666亚洲国产免| 亚洲国产av一区二区三区| 亚洲午夜在线观看视频在线| 五月婷婷综合激情网| 久久噜噜亚洲综合| 日本不卡视频一区| 国产又粗又猛又爽又黄91精品| 苍井空浴缸大战猛男120分钟| 韩日精品在线| 一区二区三区四区国产| 精品久久不卡| 久久亚洲高清| 理论片一区二区在线| 97人人干人人| 精品999日本久久久影院| 国产精品视频26uuu| 国产免费拔擦拔擦8x高清在线人 | 亚洲另类欧美自拍| 男人天堂av网| 欧美成人一区二区三区片免费| 一本一道人人妻人人妻αv| 欧美在线观看18| 无码人妻丰满熟妇精品区| 五月婷婷欧美视频| 久久精品久久精品久久| 亚洲美女精品一区| 成人在线观看小视频| 国产精品日产欧美久久久久| 国产精品久久久视频| 久久久高清一区二区三区| 一本色道综合久久欧美日韩精品| 成人18精品视频| 久久久久亚洲av成人网人人软件| 国产99久久久国产精品潘金| 国产又粗又猛又爽又黄| 国产乱子轮精品视频| 91亚洲一区二区| 国产乱人伦精品一区二区在线观看| 久久久久久综合网| 国产一区 二区 三区一级| 特级西西444www| 国产精品自拍av| 亚洲美女精品视频| 成人国产一区二区三区精品| 人妻换人妻a片爽麻豆| www.欧美.com| 人人妻人人澡人人爽人人精品| 91香蕉视频黄| 一区二区伦理片| 亚洲欧洲av色图| 欧美日韩在线国产| 午夜一区二区三区视频| 成年人视频在线免费看| 在线免费不卡电影| 91女人18毛片水多国产| 欧美大片拔萝卜| av女名字大全列表| 国产亚洲精品高潮| 黄网页在线观看| 97在线视频免费播放| 成人免费网站视频| 91精品国产综合久久香蕉最新版 | 精品国产免费人成在线观看| 日本xxxxwww| 亚洲系列中文字幕| caoporm免费视频在线| 97香蕉久久超级碰碰高清版| 国产精品xxx| aaa级精品久久久国产片| 亚洲人成网亚洲欧洲无码| 一道精品一区二区三区| 激情六月综合| 色乱码一区二区三区在线| 国产成人免费视频网站| 国产成人av一区二区三区不卡| 国产精品高潮呻吟| 韩国av免费观看| 欧美日韩午夜影院| 日韩一级片免费看| 日韩亚洲第一页| 日韩伦理在线| 国产日韩欧美夫妻视频在线观看 | 欧美日韩精品免费观看视一区二区| 日韩欧美不卡| 性欧美大战久久久久久久| 美腿丝袜在线亚洲一区| 中文字幕天堂网| 中文字幕中文字幕一区| 日本免费观看视| 欧美男同性恋视频网站| 日本在线视频1区| 久久99视频精品| 男女啪啪999亚洲精品| 精品国产一区二区三区四区vr| 天天超碰亚洲| 国产在线青青草| 高清国产午夜精品久久久久久| 一级特黄曰皮片视频| 欧美日韩国产一区中文午夜| xxxwww在线观看| 日韩中文在线中文网三级| 波多野结衣亚洲| 国产一区在线免费| 一区二区三区午夜视频| 免费观看成人在线视频| 成人精品一区二区三区中文字幕| 91传媒免费观看| 欧美亚洲禁片免费| 欧美日韩视频精品二区| 性色av一区二区三区| 亚洲国产高清在线观看| 久久免费看毛片| 欧美aaaaaa午夜精品| 色婷婷在线影院| 欧美日韩国产影院| 亚洲av成人精品一区二区三区在线播放 | 日韩 中文字幕| 亚洲一区在线观看免费观看电影高清| 夜夜骚av一区二区三区| 伊人亚洲福利一区二区三区| 北岛玲heyzo一区二区| 久久av一区二区三区亚洲| 亚洲网站啪啪| 午夜福利三级理论电影| 亚洲一区在线观看免费观看电影高清| 国产男女猛烈无遮挡| 欧美超级免费视 在线| 24小时成人在线视频| 先锋影音男人资源| 精品一区二区三区在线视频| 日本成人免费在线观看| 欧美美女bb生活片| 国产一区久久精品| 91久热免费在线视频| 99久久.com| 亚洲天堂av一区二区三区| 亚洲欧美日韩国产手机在线| 国产伦精品一区二区三区免.费| 日韩亚洲成人av在线| 玖玖玖视频精品| 成人午夜免费在线视频| aa级大片欧美| av大片在线免费观看| 日韩精品日韩在线观看| 国产精品伦理| 亚洲免费在线精品一区| 国产综合色精品一区二区三区| 日韩女优一区二区| 精品国产乱码久久久久久图片 | 欧洲av在线精品| 91精彩在线视频| 91精品视频一区| 韩日精品在线| 深爱五月激情网| 欧美日韩精品一区二区三区| 国内外激情在线| 国产精品区一区二区三含羞草| 奶水喷射视频一区| 国产大屁股喷水视频在线观看| 日韩一区二区高清| 黄色在线免费观看网站| 日韩欧美一区二区视频在线播放| 蜜桃精品视频在线观看| 欧美成欧美va| 亚洲精品一二区| www一区二区三区| 日韩a级在线观看| 久久精品亚洲乱码伦伦中文| 91影院在线播放| 韩国三级日本三级少妇99| 精品免费在线| 一区二区在线免费观看视频| 色综合亚洲欧洲| 黄色小网站在线观看| 久久国产精品-国产精品| 久久er99精品| 国产在线精品观看| 深夜精品寂寞黄网站在线观看| 51精品国产| 性刺激的欧美三级视频| 亚洲午夜电影在线观看| wwwww在线观看免费视频| 国产精品国产精品| 美女视频网站久久| 日本少妇吞精囗交| www国产精品com| 人人精品亚洲| 国产又粗又猛大又黄又爽| 91国偷自产一区二区使用方法| 欧美性爽视频| 亚洲午夜精品一区二区三区|