Agent基本原理和LangChain实现Agent应用

Agent 应用适用场景

Agent 是大语言模型(LLM)的主要应用形态,通过大语言模型的推理能力和使用工具的能力完成复杂的任务:

Agent 智能体=大模型推理能力 +工具使用能力

如果你有以下的业务场景,Agent 应用架构是非常适合的:

第一、需要多步执行、流程编排的复杂问题。
第二、该问题可以被拆分成多个子模块,每个子模块都能清晰地定义输入、输出和功能,并能判断是否达成目标。
第三、可能感觉有解决的方法,但不能确定具体的每一步方法。
第四、可能存在多种落地方式,而不仅限于单一的方法,并且我们不太确定最优的解决方案。
第五、对于单个模块而言,只需将接口描述清楚,无需过多考虑它与其他模块之间的调用关系。

Agent 架构原理

Agent 构建在大语言模型的推理能力基础上,对大语言模型的 Planning 规划的方案使用工具执行(Action) ,并对执行的过程进行观测(Observation),保证任务的落地执行。

Planning->Action->Observation (Repeated many times)。
Agent 根据用户输入及当前状态选择一个动作,执行该动作并观察结果,然后继续下一个动作。

有了 Agent,就不需要手动编写 if/else 逻辑了(即不要静态的业务流程编排了),只需将 Prompt 提示词提供给大语言模型,让其进行判断决策即可。

LangChain Agent 开发框架

LangChain 本身提供一些实用的工具,比如:Google 搜索、GitHub 和 Python 等。如果需要自己实现工具,则需要继承 BaseTool 类,并实现 run 方法。模型根据工具的描述调用相应的方法,并观察其返回结果。

Agent 类别

计划 Agent:通过 LLM 制定计划
执行 Agent:通过 LLM 和 tools 实现计划

Chain 与 Agent 区别

Chain 和 Agent 都用于解决多步问题。Chain 是静态的面向过程架构设计,过程是事先设计好的静态流程。而 Agent 则是动态的面向目标架构设计,由大语言模型来决策整个过程。

使用 LangChain 实现 Agent

from langchain.llms import ChatGLM
from langchain.experimental.plan_and_execute import PlanAndExecute, load_agent_executor, load_chat_planner
from tools import LlmModelTool, VectorSearchTool

endpoint_url = "http://url:port"
llm = ChatGLM(
    endpoint_url=endpoint_url,
    max_token=4096,
    history=[],
    model_kwargs={"sample_model_args": False},
    temperature=0.95
)

tools = [LlmModelTool(), VectorSearchTool()]

planner = load_chat_planner(llm)
executor = load_agent_executor(llm, tools, verbose=True)

agent = PlanAndExecute(planner=planner, executor=executor, verbose=True)
agent.run(input="预算5000元,请帮我制定一个在杭州的5天旅行计划")
原创文章。转载请注明: 作者:meixi 网址: https://www.icnma.com
Like (0)
meixi管理
Previous 02/05/2024
Next 12/06/2024

猜你想看

Leave a Reply

Please Login to Comment