文章目录[隐藏]
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天旅行计划")