本篇目標
什麼是 LLM Agent?
LLM Agent(大型語言模型代理)是指結合了 LLM(如 ChatGPT)與其他模組(例如規劃、記憶與工具使用)的系統。這類代理可以完成複雜任務,因為它們不只是聊天機器人,而是具備「執行計劃、查找資料、記住上下文」等能力的智慧體。
LLM 在 Agent 中的角色是什麼?
LLM 就像是代理的「大腦」,負責:
- 理解任務或問題
- 規劃解題流程
- 呼叫外部工具(例如搜尋引擎、資料庫)
- 整合資訊並產出答案
簡單任務:只用 LLM 就能完成
範例問題:
2023 年美國的每日平均熱量攝取是多少?
這類問題,如果 LLM 本身就知道答案,就可以直接回答。如果不知道,也可以使用一種稱為 RAG(檢索增強生成) 的技術,讓 LLM 從資料庫中找資料來輔助回答。
複雜任務:需要 LLM Agent
範例問題:
過去十年美國成人每日平均熱量攝取的趨勢是什麼?這對肥胖率有什麼影響?請提供趨勢圖。
這類問題就太複雜,單靠 LLM 或 RAG 系統可能不夠,因為需要:
- 拆解問題為子任務
- 查詢多個資料來源(如健康報告、API、資料庫)
- 繪製圖表來呈現趨勢
- 記住前面執行過的步驟
建構 LLM Agent 的模組
要解決這類複雜任務,我們可以建構一個擁有下列模組的 LLM Agent:
| 模組 | 功能說明 |
|---|---|
| 搜尋工具 | 可查找健康相關資訊 |
| 資料庫存取 | 包含公開或私人的健康數據 |
| 程式碼工具(Code Interpreter) | 可根據資料繪製圖表或進行計算 |
| 規劃模組(Planning) | 幫助代理分階段執行任務 |
| 記憶模組(Memory) | 保留上下文與任務進度的狀態 |
LLM Agent 架構簡介(LLM Agent Framework)
組成模組
一個典型的 LLM Agent 框架,包含以下幾個核心組件:
| 組件 | 說明 |
|---|---|
| 使用者請求 | 使用者輸入的問題或任務 |
| 代理(Agent/大腦) | LLM 作為主控中樞,協調各模組運作 |
| 規劃模組(Planning) | 幫助代理規劃下一步的行動 |
| 記憶模組(Memory) | 記錄代理的歷史行為與上下文資料 |
Agent(代理 / 大腦)
LLM Agent 的核心是一個 大型語言模型(LLM),它扮演:
- 任務協調者:決定解題策略、執行順序
- 工具使用者:呼叫資料庫、API、繪圖工具等資源
- 語言回應者:最終與使用者溝通並回應
如何啟動一個 Agent?
建立一個 Agent,通常會使用「提示模板(Prompt Template)」來設定其啟動規則,包括:
- 能使用的工具與說明
- 操作流程指引
- 背景設定(可選)
Agent 的人格設定(Profile)
雖然不是必須,但你可以幫 Agent 設定一個人格(Profile),讓它在執行任務時有固定角色風格,例如:
- 角色設定(如:數據分析師、健康顧問)
- 語氣風格(如:溫柔、嚴謹)
- 背景資訊(如:年齡、教育、地區)
這些設定會寫進 Prompt 內,幫助模型更好地完成任務。
根據 [Wang et al., 2023],建立 Agent 人格的方式有三種:
- 手工設計(Handcrafted)
- LLM 自動生成(LLM-generated)
- 資料驅動(Data-driven)
LLM Agent 中的「規劃模組」(Planning)
無回饋規劃(Planning Without Feedback)
這種規劃方式會讓 LLM 在一開始就把整個任務「拆解成步驟」,依序解決。
- 一次性規劃所有步驟
- 透過 LLM 拆解任務
- 常見技術:
- Chain of Thought:單一路線推理
- Tree of Thoughts:多路分支推理
Wang et al., 2023
有回饋規劃(Planning With Feedback)
當任務變得複雜、流程變長或有不確定情況,LLM 就需要能夠根據「過去的行動」進行反思與調整。
- 能反思過去執行狀況
- 修正行動計劃
- 提升結果品質
常見策略:ReAct 與 Reflexion
ReAct 策略讓 LLM 在執行任務時交替進行:
- 思考(Thought)
- 行動(Action)
- 觀察(Observation)
這樣能根據「觀察結果」調整下一步。
下圖展示了 ReAct 的一個範例以及執行問答所涉及的不同步驟:
LLM Agent 的記憶模組(Memory Module)
在 LLM Agent 中,記憶模組的作用是:
- 儲存代理的思考歷程、動作與觀察結果
- 保留與使用者的互動內容
- 協助代理回顧過去、累積經驗並做出更好的推理與決策
1. 記憶類型(Memory Types)
記憶可以分為以下兩大類:
短期記憶(Short-Term Memory)
- 包含目前任務或對話上下文。
- 通常透過「in-context learning」實現,直接寫在 prompt 內。
- 有長度限制(context window),無法保留太久。
長期記憶(Long-Term Memory)
- 包含代理過去的行為紀錄與想法。
- 需要長時間保留與快速檢索。
- 通常透過外部向量資料庫(vector store)實現,例如 FAISS、Weaviate。
- 可以在需要時,將相關資料取回並注入 LLM。
2. 混合記憶(Hybrid Memory)
- 整合短期與長期記憶。
- 提升代理對於「長期推理」與「經驗累積」的能力。
- 例如:短期記憶負責目前上下文,長期記憶負責擷取歷史紀錄、已學知識。
3. 記憶資料格式(Memory Formats)
在構建記憶模組時,可以選擇以下常見格式:
| 格式類型 | 說明與範例 |
|---|---|
| 自然語言(Text) | 儲存為一般文字敘述,例如「昨天查過此資料」。 |
| 向量嵌入(Embedding) | 將文字轉為向量,儲存於向量資料庫中,方便檢索。 |
| 結構化清單 | 用 key-value、任務清單等形式儲存結構化資訊。 |
| 資料庫(Database) | 使用 SQLite、MongoDB 等資料庫來組織與查詢資訊。 |
組合格式範例
- Ghost in the Minecraft (GITM) 使用 key-value 結構:
- key:自然語言(如「任務:蓋房子」)
- value:對應的向量嵌入資訊
4. 記憶與規劃的互補關係
| 模組 | 功能說明 |
|---|---|
| 記憶 | 儲存與回憶過去的狀態與紀錄 |
| 規劃 | 制定下一步行動策略 |
這兩個模組的協同合作,讓代理能根據過去經驗調整行動計劃,並對未來進行合理推理與預測。
LLM Agent 的工具模組(Tools Module)
在 LLM Agent 中,工具模組是讓代理能夠「執行動作」與「連接外部世界」的關鍵元件。
1. 工具是什麼?
工具(Tools)是 LLM Agent 可使用的一組功能或模組,能幫助它:
- 查詢外部資訊(如搜尋 API、資料庫)
- 計算與繪圖(如程式碼解譯器)
- 執行特定任務(如翻譯、分類、計算)
2. 常見的工具類型
| 工具類型 | 範例與說明 |
|---|---|
| 搜尋引擎 | Wikipedia API、Google Search、PubMed 查詢等 |
| 計算模組 | Math Engine、Calculator、Symbolic Solver |
| 程式執行器 | Code Interpreter,可讓模型產生並執行 Python 程式碼 |
| 資料庫查詢 | SQL/NoSQL 資料庫,用於查詢結構化資料 |
| 向量檢索 | 向量資料庫(如 FAISS)用於相似知識檢索 |
| 外部 AI 模型 | 圖像辨識、語音轉文字、分類器等(如 HuggingFace 模型) |
3. 工具的作用與流程
當 Agent 使用工具時,會經過以下流程:
- LLM 判斷是否需要工具來完成某個子任務
- 發出 API 請求或執行工具(如程式碼執行)
- 接收觀察結果(Observation)
- 更新下一步推理與回應
4. 工具使用策略與代表方法
| 方法名稱 | 說明與特點 |
|---|---|
| MRKL | 模型結合專家模組(可為 LLM 或符號工具),如:計算機、天氣查詢 |
| Toolformer | 微調 LLM,使其能根據上下文自行插入合適的 API 呼叫 |
| Function Calling | 定義一組工具 API,並在回應流程中讓 LLM 主動選擇與使用 |
| HuggingGPT | 使用 LLM 作為任務規劃器,調度多個 AI 模型共同完成任務(如圖像分析 + NLP) |
5. 實例說明
左側:使用者與輸入任務
使用者輸入任務:
你能描述這張圖片並且數一數裡面有多少物體嗎?
中央:LLM 作為控制器(LLM as Controller)
大型語言模型(如 ChatGPT)負責指揮與協調任務,流程如下:
- 任務規劃(Task Planning)
分析使用者問題,拆解成以下子任務:
- 圖片描述(Image Captioning)
- 物件偵測(Object Detection)
- 模型選擇(Model Selection)
根據子任務,自動挑選合適的模型:
facebook/detr-resnet-101(物件偵測)nlpconnect/vit-gpt2-image-captioning(圖片描述)
-
任務執行(Task Execution)
將子任務交給 HuggingFace 模型來執行。 -
回應生成(Response Generation)
整合模型回傳結果,自然語言地回答使用者問題。
右側:HuggingFace 模型執行端
LLM 不直接執行任務,而是指揮以下 HuggingFace 上的模型:
facebook/detr-resnet-101:偵測圖中有幾個物體(如 zebra, giraffe)nlpconnect/vit-gpt2-image-captioning:產生圖像語意描述
最終回應
A herd of giraffes and zebras grazing in a field.
偵測到五個物件:三隻斑馬、兩隻長頸鹿,並附上可信度分數與模型來源。
LLM Agent 應用總覽(LLM Agent Applications)
Figure source: Bran et al., 2023
ChemCrow 系統示意圖:LLM 自動化化學任務代理人
中央邏輯:推理循環(Chain of Thought Reasoning Loop)
- Thought:思考與規劃任務
- Action:選擇合適的工具
- Action Input:提供輸入給工具
- Observation:分析回傳資訊並修正策略
a. 專家設計的化學工具(User-defined Tasks)
- 任務示例:規劃並執行一個驅蟲劑的合成任務
- 可搭配 RoboRXN 等平台進行物理世界互動與合成
b. 分子工具與安全評估(Molecule Tools)
- SMILES ↔ 分子量、價格、CAS
- 分子相似性、結構修改、官能基分析
- 專利查詢、名稱轉換
- 安全性評估、爆炸性檢查
化學知識驅動的合成流程(Chemistry-informed Actions)
- Google 搜尋
- 逆合成分析(Retrosynthesis)
- 程序預測
- 自動化執行(如 DEET 合成)
通用與反應工具(General + Reaction Tools)
- 文獻搜尋、網路搜尋、程式執行、專家問答
- 反應名稱轉換、反應預測、合成規劃與執行
ChemCrow 展示了 LLM 與科學工具整合後能實現真正的自主實驗與合成執行。
接下來整理了大型語言模型代理(LLM Agents)在不同領域的實際應用案例,展示其強大的推理與常識理解能力。
常見的 LLM 代理人系統
-
心理健康與社會行為模擬
- Ma et al. (2023):研究對話式代理在心理健康輔助上的成效,能幫助舒緩焦慮,但也可能生成有害內容。
- Horton (2023):設計具備偏好與個性化的代理人,模擬人類經濟行為。
-
虛擬生活模擬與判決預測
- Generative Agents / AgentSims:建構虛擬小鎮模擬多個類人代理的日常生活互動。
- Blind Judgement:使用多個語言模型模擬法官決策,預測美國最高法院判決,準確率高於隨機猜測。
-
學術與科學研究輔助
- Ziems et al. (2023):輔助研究者完成摘要撰寫、腳本設計與關鍵字提取等任務。
- ChemCrow:整合化學資料庫,自主規劃並執行合成(如驅蟲劑、有機催化劑等)。
- Boiko et al., 2023:結合多個 LLM 以實現科學實驗設計、規劃與執行自動化。
-
數學與教育應用
-
建築與空間設計
- Mehta et al. (2023):在人機互動框架下輔助建築師設計 3D 建築結構。
-
軟體工程與程式代理
-
資料庫與產業應用
- D-Bot:LLM 驅動的資料庫管理代理,提供診斷與效能優化建議。
- IELLM:應用於石油與天然氣產業挑戰的智慧代理。
- Dasgupta et al. 2023:統一的具體化代理框架,整合任務規劃與推理。
- OS-Copilot:建立泛用型代理,能操作作業系統中的網頁、終端機、檔案、多媒體與第三方工具等。
LLM Agent 工具與框架總覽
AutoGen capabilities; Figure Source: Redirecting...
Conversable Agent 圖解說明(AutoGen 系統能力總覽)
-
Conversable Agent(可對話代理人)
每個代理人具備自然語言對話能力,並可內建下列模組:- LLM(大型語言模型)
- 使用者偏好或角色資訊
- 工具與技能模組(如程式執行、資料查詢等)
-
Agent Customization(代理人客製化)
開發者可以根據不同需求,自訂代理人功能與能力。- 藍色代理人:具備 LLM 對話功能
- 綠色代理人:整合 Python 腳本與人類專家知識
-
Multi-Agent Conversations(多代理對話)
支援多個代理人彼此協作、對話的能力,形式包含:-
Joint Chat(平行式對話)
所有代理人彼此共享訊息,進行平等對話與協作。 -
Hierarchical Chat(階層式對話)
一個主代理人統籌指揮多個子代理人,形成任務分工與整合的層級架構。
-
-
Flexible Conversation Patterns(靈活對話模式)
自由組合上述對話方式,適用於多種協作任務情境。
以下是一些常見的工具與開源框架,可用來打造大型語言模型(LLM)代理人系統:
-
開發框架與平台
- LangChain:開發 LLM 應用與代理人的知名框架,支援記憶、工具鏈與流程設計。
- AutoGPT:協助建構具自動規劃與任務執行能力的 AI 代理人。
- Langroid:強調多代理人設計,讓不同代理人能透過訊息協作完成任務。
- AutoGen:支援多個代理人對話協作的 LLM 應用開發框架。
- OpenAgents:開源平台,方便部署與使用各類語言代理人。
- AgentVerse:協助部署多個 LLM 代理人的工具集,適用於多種應用情境。
-
工具整合與資料連接
- LlamaIndex:幫助 LLM 連接自定資料來源(例如資料庫、文件系統)。
- Agents:開源框架,支援短期/長期記憶、工具調用、網頁導航、多代理溝通、人機互動與符號控制等功能。
- BMTools:使用工具擴展語言模型,並作為社群建構和共享工具的平台。
-
任務導向應用工具
- GPT Engineer:透過自然語言指令自動完成程式開發任務。
- DemoGPT:自動化生成 Streamlit 應用的代理人。
- GPT Researcher:可用於執行深度網路資料收集與研究任務的自主代理人。
- crewAI:專為工程師設計的 AI 代理人框架,簡潔且功能強大。
- Phidata:利用 function calling 快速構建 AI 助理功能。
LLM Agent 評估方式(LLM Agent Evaluation)
AgentBench benchmark to evaluate LLM-as-Agent on real-world challenges and 8 different environments. Figure source: Liu et al. 2023
AgentBench 是一個用來評估「LLM 作為代理人(LLM-as-Agent)」的基準系統,強調其在實際場景中的行動能力與跨環境適應能力。
左側:真實世界挑戰(Real-world Challenges)
以下是 AgentBench 模擬的任務示例,涵蓋多種場景與需求:
-
作業系統(OS)操作:
- 在 Ubuntu Bash 中,將資料夾中所有檔案設為唯讀(除了我的)。
-
知識查詢任務:
- 使用 Freebase API 查詢明尼蘇達出生的諾貝爾獎得主會什麼樂器?
-
資料庫操作任務:
- 使用 MySQL API 與資料表,將分數超過 60 的學生標記為「通過」。
-
圖形介面遊戲任務:
- 在 Aquawar 的 GUI 中,你是有四張寵物卡牌的玩家,要進行對戰。
-
推理挑戰任務:
- 一個人點了龜湯,吃完自殺,為什麼?
-
模擬環境中的任務:
- 在模擬的廚房中,請把鍋子放到餐桌上。
-
網站預訂任務:
- 在航空公司官網上預定 7 月最後一週從北京飛往洛杉磯最便宜的機票。
右側:8 種環境類型(8 Distinct Environments)
AgentBench 涵蓋下列 8 種互動環境:
- Operating System(作業系統)
- Database(資料庫)
- Knowledge Graph(知識圖譜)
- Digital Card Game(數位卡牌遊戲)
- House Holding(家庭模擬任務)
- Lateral Thinking Puzzles(側向思考謎題)
- Web Shopping(網購任務)
- Web Browsing(網頁瀏覽與任務查找)
與評估 LLM 類似,評估 LLM 代理人也是一項具有挑戰性的工作。根據 Wang 等人(2023)的研究,常見的評估方法包括:
-
人工標註(Human Annotation)
由人工評估者從不同面向直接對代理人的回應進行評分,例如:- 誠實性(Honesty)
- 有幫助程度(Helpfulness)
- 互動性(Engagement)
- 公平性/無偏性(Unbiasedness)等
-
圖靈測試(Turing Test)
由人類判斷者比較代理人與真人的回應結果,若難以分辨出哪個是代理人生成的,則表示其表現接近人類。 -
評估指標(Metrics)
使用精心設計的評分標準來量化代理人的表現,例如:- 任務成功率(Task Success Metrics)
- 類人程度(Human Similarity Metrics)
- 執行效率(Efficiency Metrics)
-
評估協議(Protocols)
定義如何使用評分指標的一套規則或流程,例如:- 真實環境模擬(Real-world Simulation)
- 社交互動評估(Social Evaluation)
- 多任務評估(Multi-task Evaluation)
- 軟體測試流程(Software Testing)
-
評估基準(Benchmarks)
目前已開發出多個用於評估 LLM Agent 表現的標準測試平台,包括:
ALFWorld, IGLU, Tachikuma, AgentBench, SocKET, AgentSims
ToolBench, WebShop, Mobile-Env, WebArena, GentBench, RocoBench
EmotionBench, PEB, ClemBench, E2E 等
這些基準涵蓋多種任務與應用領域,例如虛擬環境互動、情緒理解、工具使用能力等。
LLM Agents 所面臨的挑戰與限制
儘管 LLM-based agents 展現出強大的潛力,但目前仍處於早期發展階段,尚有許多技術與實務挑戰需要克服,包括以下幾項核心問題:
1. 角色扮演能力(Role-playing capability)
LLM agents 通常需要「扮演某個角色」才能完成特定領域任務。
- 若模型對該角色認知不足,可能需對 LLM 進行微調(fine-tuning),使用非典型角色或心理特徵的資料集來強化對角色的理解。
2. 長期規劃與上下文限制(Long-term planning and context length)
- LLM 難以進行長時間任務規劃,容易因早期錯誤導致後續任務失敗。
- 多數 LLM 的上下文長度有限,限制了 agent 在短期記憶與推理過程中的能力。
3. 泛化的人類價值對齊(Generalized human alignment)
- 很難讓 agent 完全對齊於多元人類價值觀。
- 潛在解法:設計更進階的 prompting 策略來調整 LLM 行為(即 realignment)。
4. Prompt 穩定性與可靠性(Prompt robustness and reliability)
- LLM agents 涉及記憶、規劃等多個模組,每個模組可能需要不同 prompt。
- 稍微改動 prompt 就可能導致表現不穩。
- 常見解法包括:
- 手動試誤調整 prompt 元件。
- 使用自動優化技術(Auto Prompt Tuning)。
- 讓 GPT 自動產生更佳的 prompt。
- 另外,LLM 常見的「幻覺現象(hallucination)」也會出現在 agents 上,尤其當外部資料來源不一致時更易發生。
5. 知識邊界控制(Knowledge boundary)
- 很難控制 LLM 的知識使用範圍。
- 內部知識可能導致偏誤,或 agent 利用使用者未掌握的知識,降低互動透明度與可預測性。
6. 效率與成本問題(Efficiency)
- 多代理任務可能頻繁調用 LLM,導致:
- 效率下降(依賴模型推理速度)。
- 成本增加(高頻率 API 調用或多 agent 架構帶來的資源開銷)。
References
上一篇:LLM Research Findings - 簡介
下一篇:LLM Research Findings - RAG在大型語言模型中的應用






