在 langchain 中 initialize_agent 被禁用后,應該如何進行替代操作?

在 langchain 中 initialize_agent 被禁用后,應該如何進行替代操作?

LangChain 已棄用 initialize_agent 函數后的替代方案

LangChain 的 initialize_agent 函數已被棄用。本文將介紹幾種替代方法,幫助您在項目中繼續使用 langchain 的 Agent 功能。

LangChain 之前的 initialize_agent 函數用于初始化 Agent。由于其設計上的局限性,該函數已被棄用,開發者需要采用更靈活和強大的方法來構建和運行 Agent。

推薦的替代方法

以下列出了三種推薦的替代方案,各有優缺點,選擇哪種方法取決于您的具體需求和項目復雜度。

  1. 使用 AgentExecutor: 這是 LangChain 官方推薦的替代方法。AgentExecutor 提供了更精細的控制,允許您更靈活地管理 Agent 的行為和執行流程。

    from langchain.agents import AgentExecutor, Tool from langchain import LLMChain  @Tool def my_tool(input: str) -> str:     # 工具的具體實現     return "工具的返回結果"  llm = LLMChain(...)  # 初始化您的語言模型鏈 tools = [my_tool]  agent_executor = AgentExecutor.from_agent_and_tools(     agent=llm,  # 使用您的語言模型鏈作為 Agent     tools=tools,  # 傳遞工具列表     verbose=True  # 開啟詳細輸出,方便調試 )  # 使用 AgentExecutor 運行 result = agent_executor.run("您的任務描述")
  2. 直接使用 Agent 類: 您可以直接實例化 Agent 類,并手動配置其各個組件。這種方法需要更多代碼,但提供了最大的靈活性和定制化能力。

    from langchain.agents import Agent, Tool from langchain import LLMChain  @Tool def my_tool(input: str) -> str:     # 工具的具體實現     return "工具的返回結果"  llm = LLMChain(...)  # 初始化您的語言模型鏈 tools = [my_tool]  agent = Agent(llm=llm, tools=tools, verbose=True)  # 運行 Agent result = agent.run("您的任務描述")
  3. 自定義 Agent 實現: 如果您需要高度定制化的 Agent 行為,可以考慮創建一個自定義的 Agent 類,繼承自 Agent 類并重寫其方法。這需要更深入的理解 LangChain 的內部機制。

    from langchain.agents import Agent, Tool from langchain import LLMChain  class MyCustomAgent(Agent):     def __init__(self, llm, tools):         super().__init__(llm=llm, tools=tools)      def plan(self, intermediate_steps, **kwargs):         # 自定義規劃邏輯         pass      def run(self, input):         # 自定義運行邏輯         pass  @Tool def my_tool(input: str) -> str:     # 工具的具體實現     return "工具的返回結果"  llm = LLMChain(...)  # 初始化您的語言模型鏈 tools = [my_tool]  custom_agent = MyCustomAgent(llm=llm, tools=tools)  # 使用自定義 Agent result = custom_agent.run("您的任務描述")

選擇哪種方法取決于您的需求。對于大多數情況,AgentExecutor 提供了足夠的靈活性和易用性。 如果需要更精細的控制或高度定制化的行為,則可以選擇直接使用 Agent 類或自定義 Agent 實現。 記住替換代碼中的 LLMChain(…) 和 “您的任務描述” 為您的實際 LLM 和任務。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享