AI Agent 智能體開發工作手冊詳細指南 原創
AI Agent 智能體,目前更具體地指的是 LLM Agent。這是一種程序,其執行邏輯受其底層大模型(LLM)的操控。
與少樣本提示(Few-shot)或固定工作流(Workflow)等手段相比,LLM Agent 的獨特之處在于它能定義并調整執行用戶查詢所需的步驟。若能訪問一系列工具(例如:代碼執行或網絡搜索),AI Agent 智能體能夠決定采用何種工具、如何運用它,并根據輸出結果進行迭代優化。這種靈活性使得系統能以最低限度的配置應對多樣化的應用場景。
AI Agent 智能體架構涵蓋了從固定工作流的可靠性到自主 AI Agent 智能體的廣泛領域。例如,像檢索增強生成(RAG)這樣的固定流程可以通過自我反思循環進行優化,使得程序在初始響應不足時能夠進行改進。而ReAct 智能體則可以配備固定流程作為工具,提供一種既靈活又結構化的處理方式。架構的選擇最終依賴于具體的應用場景以及可靠性與靈活性之間的最佳平衡。
接下來,我將向大家展示 AI Agent 智能體開發工作手冊詳細指南,一共有8個步驟,下面詳細介紹。
1、步驟一:選擇正確的大模型(LLM)
挑選合適的大模型對于 AI Agent 智能體達到預期的性能表現至關重要。在決策過程中,需要考慮多個因素,如許可協議、成本和語言兼容性。在構建 AI Agent 智能體時,最關鍵的考量是模型在編碼、工具調用和推理等核心任務上的表現。以下是一些用于評估的基準:
- 大規模多任務語言理解(MMLU)(用于推理能力);
- 伯克利函數調用排行榜(用于工具選擇和調用);
- HumanEval 和 BigCodeBench(用于編碼能力);
另一個重要的考量因素是大模型的上下文窗口大小。AI Agent 智能體的工作流程可能會消耗大量 token——有時甚至達到10萬或更多——因此,更大的上下文窗口將非常有益。
以下是一些你可能需要考慮的大模型:
- 閉源模型:GPT4-o、Claude 3.5
- 開源模型:Llama 3.2、Qwen 2.5
通常情況下,大模型越大,性能表現越佳,但能夠在本地運行的較小模型也是一個不錯的選擇。對于較小的模型,你可能只能處理更簡單的用例,并且可能只能將你的 AI Agent 智能體與一兩個基礎工具相連接。
2、步驟二:定義 AI Agent 智能體的控制邏輯
簡單大模型與 AI Agent 智能體之間的核心差異體現在系統提示詞(System Prompt)上。
在大模型的情境中,系統提示詞是在模型開始處理用戶查詢之前,提供給模型的一系列指令和背景信息。
可以在系統提示詞中明確大模型所應展現的 AI Agent 智能體行為。
以下是一些常見的 AI Agent 智能體模式,它們可以根據您的具體需求進行調整:
- 工具使用:AI Agent 智能體判斷何時應將查詢導向適當的工具,或者何時依賴自身的知識庫。
- 反思:AI Agent 智能體在向用戶回復之前,會審視并修正其答案。大多數 LLM 系統也可以加入反思步驟。
- 推理后行動(ReAct):AI Agent 智能體會不斷推理如何解決查詢,執行操作,觀察結果,并決定是否需要采取進一步行動或給出回應。
- 計劃后執行:AI Agent 智能體會預先規劃任務,如有必要,將任務分解為子步驟,然后逐一執行這些步驟。
最后兩種模式(ReAct 和計劃后執行)通常是構建多功能單一 AI Agent 智能體的良好起點。
為了有效地實現這些行為,需要進行一定的提示詞工程(Prompt Engineering)。你可能還需要利用結構化生成技術。這實質上是指引大模型的輸出,使其符合特定的格式或模式,以確保 AI Agent 智能體的響應與您期望的溝通風格保持一致。
3、步驟三:定義 AI Agent 智能體的核心指令
我們常常默認大模型擁有一系列即時的功能。雖然某些功能可能非常出色,但也有一些可能不完全符合我們的期望。為了實現我們所追求的性能,在系統提示詞中詳盡地闡述我們希望包含和排除的功能至關重要。
這可能涉及以下指導:
- AI Agent 智能體的名稱和角色:指定 AI Agent 智能體的名稱及其用途。
- 語氣和簡潔度:確定 AI Agent 智能體的回應應該是正式還是非正式,以及回應的簡潔程度。
- 使用工具的時機:明確何時應依賴外部工具而非模型自身的知識庫。
- 錯誤處理:指導 AI Agent 智能體在遇到工具或流程問題時應采取的行動。
4、步驟四:定義并優化你的核心工具
工具為你的 AI Agent 智能體提供了超乎尋常的能力。通過使用一組精心定義的工具,你可以實現多樣化的功能。其中不可或缺的工具包括代碼執行、網絡搜索、文件讀取和數據分析。
對于每一項工具,你需要定義以下內容,并將其納入系統提示詞的一部分:
- 工具名稱:為功能提供一個唯一且具有描述性的名稱。
- 工具描述:清晰地闡述工具的作用及其適用場景。這有助于 AI Agent 智能體判斷何時應該選用該工具。
- 工具輸入格式:描述必需和可選參數、它們的類型以及任何相關限制的格式。AI Agent 智能體將根據用戶的查詢使用這些信息來填充所需的輸入。
- 關于工具運行位置或方法的指示詞。
在某些情況下,你可能需要優化工具以達到預期的性能。這可能包括對工具名稱或描述進行快速工程調整、設置高級配置以處理常見問題,或者對工具的輸出進行篩選。
5、步驟五:制定可靠的記憶處理策略
大模型受限于其上下文窗口,即它們一次能夠“記住”的令牌數量。這種記憶空間很快就會被多輪對話中的歷史交流、冗長的工具輸出或 AI Agent 智能體依賴的額外上下文所充滿。因此,確立一個有效的記憶管理策略至關重要。
在 AI Agent 智能體的框架內,記憶涉及系統存儲、檢索和利用過往互動信息的能力。這允許 AI Agent 智能體隨時間維持上下文,基于先前的交流優化其響應,并交付更加定制化的體驗。
常見的記憶管理策略包括:
- 滑動記憶:保留最近 k 輪對話回合的記憶,并移除較早的對話回合。
- 令牌記憶:保持最后n個令牌,遺忘其他令牌。
- 總結記憶:利用大模型對每個對話回合進行總結,并移除單獨的消息。
此外,可以訓練大模型識別關鍵信息以存儲在長期記憶中。這樣,AI Agent 智能體就能“記住”關于用戶的重要細節,從而提供更加個性化的體驗。
至此,我們概述的五個步驟為構建 AI Agent 智能體奠定了基礎。但是,如果在當前階段通過大模型處理用戶查詢,結果會怎樣呢?
此時,AI Agent 智能體會生成原始的文本輸出。那么,我們如何使其執行后續操作呢?這就需要解析和編排的功能了。
6、步驟六:解析 AI Agent 智能體的原始輸出
解析器是一種功能,它負責將原始數據轉換成應用程序能夠理解和操作的格式,例如帶有屬性的對象。
在構建我們的 AI Agent 智能體時,解析器需要辨識在第二步中設定的通信結構,并且輸出結構化數據,例如 JSON 格式。這樣做可以讓應用程序更輕松地處理和執行 AI Agent 智能體的后續動作。
注意:某些模型供應商(例如 OpenAI)可能默認提供可以直接解析的輸出。而對于其他模型,尤其是開源模型,可能需要額外的配置來生成可解析的輸出。
7、步驟七:安排 AI Agent 智能體下一步行動
最終步驟是確立編排邏輯。這一邏輯決定了在大模型產生輸出之后將發生什么。基于輸出內容,你可以執行以下操作:
- 調用工具,或者
- 返回答案— 這可以是針對用戶查詢的直接回應,或者是請求更多信息的后續動作。
當觸發工具調用時,工具的輸出會被送回給大模型(作為其工作內存的一部分)。隨后,大模型將決定如何處理這些新數據:是進行另一個工具調用還是向用戶給出答案。
以下是在代碼中實現這種編排邏輯的一個示例:
8、步驟八:多 AI Agent 智能體的設計
盡管當前的大模型非常強大,但它們面臨一個主要的挑戰:處理信息過載的能力有限。過多的上下文或工具使用可能會導致模型負擔過重,進而影響性能。單一的通用 AI Agent 智
能體最終可能會觸及這個極限,尤其是考慮到 AI Agent 智能體對 token 的巨大需求。
在某些情況下,采用多 AI Agent 智能體架構可能更為合適。通過將任務分配給多個 AI Agent 智能體,可以避免單個 LLM Agent 的上下文過載,并提升整體的運作效率。
盡管如此,單一的通用 AI Agent 智能體架構是原型設計的極佳起點。它允許你快速驗證用例并識別系統開始出現問題的點。通過這個過程,你可以:
- 了解哪些任務部分真正從 AI Agent 智能體方法中受益。
- 確定可以在更復雜的工作流程中作為獨立模塊分離的組件。
從單一 AI Agent 智能體出發可以提供寶貴的洞見,這些洞見在擴展到更復雜的系統時有助于優化你的方法。
準備好深入探索并開始構建了嗎?使用框架是快速測試和迭代 AI Agent 智能體配置的有效途徑:
如果計劃使用 Llama 3 等開源模型,可以嘗試 Bee Agent Framework。
如果計劃使用 OpenAI 等前沿模型,可以嘗試 LangGraph。
本文轉載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/6BvQ2fBKjgokPUZNgoeA8g??
