AI应用技术-名词篇2
接上文,这篇开始发展阶段,主要包括 FunctionCalling、MCP、RAG、Agent(初步形态)
发展阶段
如果 LLM 比作超级大脑,那么有一个硬伤,就是无法做任何操作,无法实现你给它一个指令,它框框把活给你干完,也就是说它无法自主感应到环境和对环境产生影响。
一个最简单的例子,你直接问 LLM 今天的天气、日期、新闻,它都是乱扯,也就是它不具备搜索的能力,想要 LLM 具有搜索能力,实现上你肯定不能在 LLM 核心本身打算盘,它就是单纯的一个词语接龙;
那如果当需要搜索的时候,我们替他搜索,然后把整个搜到的结果当作上下文传给 LLM,之后让它总结不久行了?
但是这样我们也太麻烦了,那么把固定的搜索动作用程序实现,对话的时候自动执行,是不是就可以回归到对话本身了? 通过这个自动化的程序实现搜索,相当于让 LLM 拥有了“动手能力”,能够操纵工具的能力。
接下来就以这个示例,来解释涉及的相关名词。
1.1
FunctionCalling
在具体的 AI 应用程序实现上,还会有一个问题,以上文的搜索来说,这个程序如何知道需不需要搜索,应该搜索什么?
所以就需要加入一段 Prompt,规定 LLM 返回是什么格式,比如用 Json,什么字段表示什么含义,这样程序才能精准的理解 LLM 的意图,这个概念再起个名字,就叫 FunctionCalling 吧,类似开发过程中前端和后端约定的接口定义。
OpenAI 开发文档中有一篇详细介绍了 FunctionCalling ( https://developers.openai.com/api/docs/guides/function-calling )

最后对 FunctionCalling 做个总结:
它处于 AI 应用客户端和 LLM 之间,客户端把一组函数定义直接塞给模型,模型自己从里面选择合适的时机执行(其实是输出意图,例如调用哪一个函数传什么参数,实际执行的还是 AI 应用程序,因为 LLM 没有执行动作的能力),避免了 LLM 瞎编;
它通常是单个平台的内部机制,每个 AI 应用程序都可能有自己独特的 FunctionCalling 定义。
简单说就是客户端和模型之间约定的一种工具调用表达方式;
1.2
MCP
在具体到实际的业务中,都会有一些通用工具,例如你 A、B 两个项目都需要查数据库,没必要在 A 和 B 都维护一套 FunctionCalling 逻辑,如果把这些通用的功能封装到一起那确实不错,并且可以对外进行开放,这个其实就是 MCP ( https://modelcontextprotocol.info/docs/introduction/ ),最开始由 Anthropic 提出来的。
简单理解就是把一些通用或者个性化的功能提取出来,就是一个 MCP 服务器,提供给 AI 应用程序(或者说任何“会调工具的模型客户端”)调用。
MCP (Model Context Protocol)说白了就是一个工具调用协议,规定如何交流,至于这个客户端和 MCP 之间如何交流,可以是 HTTP、WebSocket、进程之间的消息传递、本地脚本等等。

MCP 处于 AI 应用客户端与外部工具之间,把“工具/资源怎么以标准的形式暴露给 AI 应用客户端”这件事做成统一协议,例如通过指定消息约定获取 MCP 有哪些可以执行的工具、怎么执行、怎么返回。
1.3
MCP 和 FunctionCalling 区别
其实可以看出,MCP 和 FunctionCalling 不是在一个层级上的,
Function Calling 中的工具可以拿到 MCP 中,那么流程就是 LLM 使用 Function Calling 来传递需要由客户端调用某个 MCP 里的工具,客户端再按照 MCP 定义调用 LLM 决定调用的工具,最后把结果给 LLM;
从 LLM 的视角看,这就是一个 Function Calling,MCP 对 LLM 来说通常是“不可见的”,LLM 看到的只是“有一组工具可用,我现在要调用其中一个”
1.4
Agent 智能体
最开始所说的那个 AI 应用程序看着挺智能的,可以主动执行/调用一些脚本工具,就叫智能体 Agent 吧;
而这种可以联网搜索的对话是非常普遍的一个需求,所以再起个名字叫 Web Search 吧(后面干脆就叫 Search,不光能搜索网页,看着更厉害)。
最开始的智能体 Agent 可能只是在你发送的消息上加了一些 Prompt 而已,有点噱头的感觉;但现在的一些 Agent 才是真正的有点智能的感觉了,除了搜索,一些比较确定性的操作都是非常适合集成到智能体中,例如查找本地文件、查找数据库中的内容等。
OK,到现在,通过注入的特定 Prompt(FunctionCalling / MCP)解决了 LLM 大脑和 Agent 之间的交流不规范的问题,并且还让 LLM 间接具备了调用工具的能力,例如文件读取、执行命令、搜索等等。
1.5
RAG
对于搜索能力,如果展开来说说,在将用户输入的提示词发送给 LLM 之前,先进行切分然后去向量数据库查询,也就是可以把语义相近的片段查出来的数据库;
然后把查询的结果加入到上下文,以达到增强生成内容的可靠性(减少幻觉)和相关性,这种模式又被人称为:检索增强生成 Retrieval-Augmented-Generation(RAG),当时还火过一阵子,有的中转站还用这种技术来偷懒省 Token。
原理看着简单,就是字面意思的检索相关语料-增强上下文-再生成,但是实际想把它用好就不是那么容易的一件事了,每一个步骤都有对应的难题,尤其是对于多模态的数据来说。
夜雨聆风