博主原文鏈接:https://www.yourmetaverse.cn/nlp/514/
Langchain的Agents介紹
一、核心概念:
Langchain的Agents核心理念是使用語言模型來選擇一系列的動作。與硬編碼的動作鏈不同,Agents利用語言模型作為推理引擎,確定采取哪些動作以及順序。
二、主要組成部分:
- Agent: 負責決定下一步采取的動作,由語言模型和提示驅動。輸入包括:可用工具的描述、用戶高層目標和為達到用戶目標而執行的任何動作和工具輸出對。
- Tools: Agents可以調用的函數。關鍵在于提供適當的工具并以對Agent有幫助的方式描述這些工具。LangChain提供了一系列內置工具,并簡化了自定義工具的定義。
- Toolkits: 針對常見任務,Agent可能需要一組相關工具。LangChain提供了諸如GitHub toolkit之類的工具集,以實現特定目標。
- AgentExecutor: Agent的運行時,負責調用Agent,執行它選擇的動作,并將動作輸出反饋給Agent。此過程涵蓋處理Agent選擇不存在的工具、工具錯誤以及無法解析為工具調用的輸出等復雜情況。
三、構建Agent:
- 使用LangChain表達式語言(LCEL)從頭開始構建Agent,定義自定義工具,并在自定義循環中運行Agent和工具。
- 設置LangSmith,以便在構建時自動跟蹤內置或自定義Agent的所有步驟和工具輸入輸出。
- 定義Agent:例如,使用OpenAI Function Calling創建能夠計算單詞長度的自定義工具。這是創建Agent的可靠方式。
- 使用Agent:通過傳遞簡單的問題和空白的中間步驟,來測試Agent的反應。
- 使用AgentExecutor類簡化過程,它整合了錯誤處理、提前停止、跟蹤等質量提升措施。
- 添加記憶:為了使Agent能夠記住之前的交互并輕松處理后續問題,需要向Agent中添加記憶功能。
以上是Langchain的Agents模塊的概覽,涵蓋了其核心概念、組成部分、以及如何構建和使用Agent。這些功能為開發者提供了強大且靈活的工具,以實現更復雜的自動化任務和流程。
四、Agent類型介紹:
Langchain提供多種類型的Agents,每種都有其獨特的應用和特點:
-
Zero-shot ReAct: 使用ReAct框架根據工具的描述來決定使用哪個工具。需要為每個工具提供描述。這是最通用的動作代理。
-
Structured input ReAct: 能夠使用多輸入工具的代理。與舊代理不同,它可以使用工具的參數模式創建結構化的動作輸入。這對于復雜工具的使用(如精確導航瀏覽器)非常有用。
-
OpenAI Functions: 專為與特定OpenAI模型(如gpt-3.5-turbo-0613和gpt-4-0613)協作而設計。這些模型已被明確地微調,以便在需要調用函數時檢測并響應應傳遞給函數的輸入。
-
Conversational: 用于對話設置的代理。其提示旨在使代理有助于對話。它使用ReAct框架來決定使用哪個工具,并使用記憶功能來記住之前的對話互動。
-
Self-ask with search: 使用名為
Intermediate Answer
的單一工具來查找問題的事實答案。這種代理類似于原始的自問自答搜索論文,其中提供了Google搜索API作為工具。 -
ReAct document store: 使用ReAct框架與文檔存儲進行互動。必須提供兩種工具:
Search
和Lookup
。Search
工具用于搜索文檔,而Lookup
工具用于在最近找到的文檔中查找術語。此代理與原始ReAct論文中的Wikipedia示例相當。
這些Agents類型展示了Langchain在實現復雜自動化任務和流程方面的靈活性和強大功能。