一篇文章讲懂Agent
本文系统介绍了大模型调用外部工具的三种核心机制:1.FunctionCall机制:详细阐述了LLM如何根据用户查询自主选择调用工具的工作流程、实时性优势及代码实现;2.MCP协议:解析了实现LLM与外部工具安全双向连接的标准化协议,包括调用流程和三种通讯传输方式;3.Agentic模式:深入分析了智能代理的五种进阶模式(工具使用、ReAct、反思、规划、多代理),展示了从基础工具调用到复杂协作的演
第一章function call
function call是llm决定调用工具,不是agent决定调用工具
1.1概念
llm根据用户的query和返回的工具列表决定使用哪些工具,agent在这里只是体现了只会使用顺序的作用
1.2工作原理
chatsever把工具返回给llm,用户输入的query通过chatsever传给llm,llm根据prompt返回工具调用的json信息(function call),chatsever处理信息并调用工具,返回结果给llm,llm处理返回结果后,把最终生成的答案返回给chatsever,chatsever把答案返回给用户

如果没有function call:

1.3优势
数据实时性:rag可能也无法做到数据库实时更新,可以通过function call 联网搜索实时检索
数据局限性:可以把rag封装成包,使用api实现对rag的调用检索
功能拓展性
1.4代码实现
from langchain.agents import initialize_agent,AgentType
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from agent_learn.config import Config
conf=Config()
@tool
def add(a:int,b:int):
"""
将数字a与数字b相加
Args:
a: 第一个数字
b: 第二个数字
"""
return a+b
@tool
def multiply(a:int,b:int):
"""
将数字a与数字b相乘
Args:
a: 第一个数字
b: 第二个数字
"""
return a*b
tool = [add,multiply]
llm=ChatOpenAI(
base_url=conf.base_url,
api_key=conf.api_key,
model = conf.model_name,
temperature = 0.1
)
agent = initialize_agent(tool,llm,AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,verbose=True)
query = '1+2等于多少'
result = agent.invoke(query)
print(f'result{result}')
llm能够实现function call功能是训练的结果,输入query和函数功能描述,输出调用结果
第二章MCP协议
2.1概念
实现llm和外部工具以数据源直接建立安全的双向连接,通俗的讲,是把这些外部数据源和工具进行统一管理,方便大模型的调用.
2.2MCP调用流程
MCP调用流程和function call流程很像,多了客户端和服务端,主机指的就是Chatsever
启动客户端,客户端连接MCP sever,,MCPsever把工具列表返回给MCPClient,MCPClient把列表返回给llm

2.3MCP通讯传输方式
- stdio:本地进程通信,延迟低,不能跨网络使用
- SSE:基于HTTP协议,单向传输,只能服务端传输信息到客户端,传输格式必须是json格式,
- streamable:基于HTTP协议,支持双向传输和流式传输,支持任意格式数据传输
2.4协议介绍
- MCP:大模型调用外部工具的统一的标准化协议
- A2A:agent直接沟通协作的规范化协议
- nlp2sql:自然语言转sql,直接在数据库检索
第三章Agentic
3.1概念
agent基于大模型 拥有记忆并自主决定调用那些工具,规划使用工具的顺序
agentic rag:agent只能程度,agentic程度越高,agent自主决定能力越强
3.2Agentic的五种模式
3.2.1工具使用模式
react(思考行动观察循环)的前身
作用:支持Agent调用外部模型
缺陷:缺乏推理能力,只适合单步调用的任务.

3.2.2ReAct模式
思考(行动规划)+行动(调用工具并执行)+观察结果(是否达到目标,多个任务逐个执行,第一个执行完以后思考第二个问题,或者只有一个任务但是第一次的答案在思考后发现不完善,再次调用工具完善)+思考+行动...循环
3.2.3反思模式
在完成一步或者整个任务后,agent对结果进行反思或者评估
反思模式相较于react模式,在思考上做了优化
反思模式在思考上主要有两种评估方式来完成优化:
- 用户反馈
- 系统反馈(训练评估模型答案是否合规)

或者使用一个大模型生成不同答案,最后在交给大模型反思为什么会错误,最后生成最终结果
3.2.4规划模式
拆解问题,逐个完成.每个任务的完成可能就是一个react的循环
3.2.5多代理模式(能力最强)(A2A协议)
使用一个agent作为主管,把不同的任务分配给不同的agent处理,不同的agent返回响应
多代理模式和规划模式有些像,但是多代理模式更复杂,规划模式类似于顺序执行,多代理模式是agent之间的反复交互

3.3模式演变流程


更多推荐



所有评论(0)