許多人認為智慧代理是 AI 的終極目標。Stuart Russell 和 Peter Norvig 的經典著作《人工智慧:現代方法》(Prentice Hall,1995 年)將 AI 研究領域定義為「_理性代理的研究與設計_」。基礎模型前所未有的能力,開啟了過去難以想像的代理應用之門。

這些新能力最終使開發自主智慧代理成為可能,它們可以擔任我們的助理、同事和教練。它們能協助我們建立網站、收集資料、規劃旅行、進行市場研究、管理客戶帳戶、自動化資料輸入、為面試做準備、面試我們的候選人、協商交易等。可能性似乎無窮無盡,這些代理的潛在經濟價值巨大。

本節將從代理的概述開始,接著探討決定代理能力的兩個面向:工具和規劃。代理以其新的運作模式,也伴隨著新的失敗模式。本節最後將討論如何評估代理以捕捉這些失敗。

_本文改編自《AI 工程》(2025 年)一書中關於「代理」的章節,並略作修改使其成為一篇獨立文章。_

備註

1. AI 驅動的代理是一個新興領域,目前尚未有定義、開發和評估它們的既定理論框架。本節是盡力嘗試從現有文獻中建立一個框架,但它將隨著該領域的發展而演進。與本書其他部分相比,本節更具實驗性質。我收到了早期審閱者的寶貴意見,也希望從這篇部落格文章的讀者那裡獲得回饋。

2. 就在本書出版前,Anthropic 發表了一篇關於 建立有效代理 的部落格文章(2024 年 12 月)。

我很高興看到 Anthropic 的部落格文章和我的代理章節在 概念上是一致的,儘管術語略有不同。然而,Anthropic 的文章側重於獨立模式,而我的文章則涵蓋了事物運作的原因和方式。我也更著重於規劃、工具選擇和失敗模式。

3. 這篇文章包含許多背景資訊。如果覺得內容有點過於深入細節,請隨意跳過!

代理概述

「代理」一詞已在許多不同的工程情境中使用,包括但不限於軟體代理、智慧代理、使用者代理、對話代理和強化學習代理。那麼,代理究竟是什麼?代理是指任何能夠感知其環境並對該環境採取行動的事物。《人工智慧:現代方法》(1995 年)將代理定義為任何可以被視為透過感測器感知其環境並透過致動器對該環境採取行動的事物。

這意味著代理的特徵在於其運作的_環境_以及它能執行的_行動集合_。代理可以運作的_環境_由其使用情境定義。如果一個代理是為玩遊戲(例如《Minecraft》、《圍棋》、《Dota》)而開發的,那麼該遊戲就是它的環境。如果你希望代理從網際網路抓取文件,那麼環境就是網際網路。

自動駕駛汽車代理的環境是道路系統及其周邊區域。AI 代理可以執行的_行動集合_透過其可存取的_工具_而增強。許多你日常互動的生成式 AI 驅動應用程式都是代理,儘管它們存取的工具可能很簡單。ChatGPT 就是一個代理。它可以搜尋網路、執行 Python 程式碼並生成圖像。

RAG 系統也是代理,文字檢索器、圖像檢索器和 SQL 執行器都是它們的工具。代理的環境與其工具集合之間存在強烈依賴關係。環境決定了代理可能使用的工具。例如,如果環境是西洋棋遊戲,代理唯一可能的行動就是有效的西洋棋走法。然而,代理的工具清單會限制其可以運作的環境。例如,如果機器人唯一的行動是游泳,它將被限制在水域環境中。

圖 6-8 展示了 SWE-agent(Yang 等人,2024 年)的可視化,這是一個建構在 GPT-4 之上的代理。它的環境是帶有終端機和檔案系統的電腦。它的行動集合包括導覽儲存庫、搜尋檔案、檢視檔案和編輯行。

!圖片 1:一個程式碼代理 圖 6-8。SWE-agent 是一個程式碼代理,其環境是電腦,其行動包括導覽、搜尋、檢視檔案和編輯。

AI 代理旨在完成通常由使用者提供的任務。在 AI 代理中,AI 是處理任務、規劃一系列行動以實現此任務,並判斷任務是否已完成的大腦。讓我們回到上面 Kitty Vogue 範例中帶有表格資料的 RAG 系統。這是一個具有三個行動的簡單代理:

  • 回應生成,
  • SQL 查詢生成,以及
  • SQL 查詢執行。

給定查詢「預測 Fruity Fedora 在未來三個月的銷售收入」,代理可能會執行以下一系列行動:

1. 推理如何完成此任務。它可能會決定,為了預測未來銷售,它首先需要過去五年的銷售數字。代理的推理可以顯示為中間回應。

2. 調用 SQL 查詢生成以生成獲取過去五年銷售數字的查詢。

3. 調用 SQL 查詢執行以執行此查詢。

4. 推理工具輸出(來自 SQL 查詢執行的輸出)以及它們如何幫助銷售預測。它可能會決定這些數字不足以做出可靠的預測,可能是因為遺失值。然後它決定它還需要有關過去行銷活動的資訊。

5. 調用 SQL 查詢生成以生成過去行銷活動的查詢。

6. 調用 SQL 查詢執行。

7. 推理此新資訊足以幫助預測未來銷售。然後它生成一個預測。

8. 推理任務已成功完成。

與非代理使用情境相比,代理通常需要更強大的模型,原因有二:

  • 複合錯誤:代理通常需要執行多個步驟才能完成任務,隨著步驟數量的增加,整體準確度會下降。如果模型每一步的準確度為 95%,那麼經過 10 步,準確度將降至 60%,而經過 100 步,準確度將僅為 0.6%。
  • 更高的風險:由於可以存取工具,代理能夠執行影響力更大的任務,但任何失敗都可能導致更嚴重的後果。

需要多個步驟的任務可能需要時間和金錢來執行。常見的抱怨是代理只會消耗你的 API 點數。然而,如果代理能夠自主運作,它們可以節省人力時間,使其成本變得值得。考慮到一個環境,代理在該環境中的成功取決於它可存取的工具以及其 AI 規劃器的能力。讓我們先探討模型可以使用的不同類型工具。接下來我們將分析 AI 的規劃能力。

工具

一個系統不需要存取外部工具就能成為代理。然而,如果沒有外部工具,代理的能力將會受限。模型本身通常只能執行一個行動,大型語言模型 (LLM) 可以生成文字,圖像生成器可以生成圖像。外部工具使代理的能力大幅提升。工具幫助代理感知環境並對其採取行動。

允許代理感知環境的行動是_唯讀行動_,而允許代理對環境採取行動的行動是_寫入行動_。代理可存取的工具集合是其工具清單。由於代理的工具清單決定了代理能做什麼,因此仔細思考要給代理多少工具以及哪些工具至關重要。更多的工具賦予代理更多的能力。然而,工具越多,就越難以良好理解和利用它們。

正如稍後在「工具選擇」部分所討論的,實驗對於找到正確的工具集合是必要的。根據代理的環境,有許多可能的工具。以下是您可能希望考慮的三類工具:知識增強(即情境建構)、能力擴展,以及讓您的代理對其環境採取行動的工具。

知識增強

我希望到目前為止,本書已讓您相信擁有相關情境對於模型回應品質的重要性。一類重要的工具包括那些有助於增強代理知識的工具。其中一些已經討論過:文字檢索器、圖像檢索器和 SQL 執行器。其他潛在工具包括內部人員搜尋、返回不同產品狀態的庫存 API、Slack 檢索、電子郵件閱讀器等。

許多此類工具用您組織的私有流程和資訊來增強模型。然而,工具也可以讓模型存取公開資訊,特別是來自網際網路的資訊。網路瀏覽是整合到 ChatGPT 中最早且最受期待的功能之一。網路瀏覽可以防止模型過時。當模型訓練所用的資料過時時,模型就會過時。

如果模型的訓練資料截止於上週,它將無法回答需要本週資訊的問題,除非這些資訊在情境中提供。如果沒有網路瀏覽,模型將無法告訴你天氣、新聞、即將發生的事件、股價、航班狀態等。我使用「網路瀏覽」作為一個總稱,涵蓋所有存取網際網路的工具,包括網路瀏覽器和 API,例如搜尋 API、新聞 API、GitHub API 或社群媒體 API。

雖然網路瀏覽允許您的代理參考最新資訊以生成更好的回應並減少幻覺,但它也可能使您的代理暴露於網際網路的泥沼中。請謹慎選擇您的網際網路 API。

能力擴展

您可能還會考慮那些解決 AI 模型固有局限性的工具。它們是提升模型效能的簡單方法。例如,AI 模型以不擅長數學而聞名。如果你問模型 199,999 除以 292 是多少,模型很可能會失敗。然而,如果模型可以存取計算機,這個計算將是微不足道的。

與其試圖訓練模型擅長算術,不如直接讓模型存取一個工具,這樣更具資源效率。其他可以顯著提升模型能力的簡單工具包括日曆、時區轉換器、單位轉換器(例如磅轉換為公斤),以及可以翻譯模型不擅長語言的翻譯器。更複雜但功能強大的工具是程式碼解釋器。與其訓練模型理解程式碼,不如讓它存取程式碼解釋器來執行一段程式碼、返回結果或分析程式碼的失敗。

這項能力讓您的代理可以充當編碼助理、資料分析師,甚至是能夠編寫程式碼來執行實驗並報告結果的研究助理。然而,自動程式碼執行伴隨著程式碼注入攻擊的風險,如第 5 章「防禦性提示工程」部分所討論的。適當的安全措施對於確保您和您的使用者安全至關重要。工具可以將純文字或純圖像模型轉變為多模態模型。例如,一個只能生成文字的模型