简介:Prompt、Function Call、Agent、Skill、MCP是大模型应用开发中最容易混淆的五个高频概念。本文从职责分工与协作关系出发,系统梳理五者的定义、相同点、抽象层级与实现成本等维度的差异,并配合通用Java示例代码与对比表格,帮助你快速建立完整认知框架,在技术方案设计与选型时做出正确的分层判断。
大模型(LLM)技术普及后,应用开发领域迅速形成了一套新的概念体系:Prompt、Function Call、Agent、Skill、MCP。难点在于,这五个概念经常同时出现在同一份技术方案里,职责却相互交织。很多团队在立项时都无法回答几个基本问题:我的需求究竟写好Prompt就够了,还是需要Function Call?是应该构建一个Agent,还是封装一个Skill就够?有没有必要引入MCP这类协议?
概念混淆会直接导致架构误判:把一个只需要提示词优化的简单需求,过度设计成Agent系统;或者把一个复杂的多步骤自动化需求,硬靠堆砌Prompt勉强支撑。因此,本文以“五大概念的职责与边界”为对比主题,逐层拆解它们的关系,帮助读者建立清晰的选型判断。
1. Prompt:人机对话的“普通话”
Prompt(提示词)是开发者或用户输入给模型的文本指令,是与大模型交互的最基本方式。它就像去餐厅点菜时说的“来一份宫保鸡丁”,模型是服务员,听懂后给你上菜。Prompt质量的高低,直接决定模型输出质量的上限。
2. Function Call:让AI能“动手干活”的手
Function Call(函数调用/工具调用)允许模型在对话过程中输出结构化的调用请求(函数名+参数),由应用层执行真实函数,再把结果回传给模型继续推理。注意:模型本身并不执行代码,它只负责“点名”该调用哪个函数。它解决的是模型与真实世界(数据库、业务系统、外部接口)脱节的问题。
3. Agent:会“思考规划”的大脑
Agent(智能体)是系统级能力:以模型为核心,具备任务分解、规划、调用工具、根据结果反思调整的自主能力,能够通过“思考→行动→观察”的多轮循环推进一个复杂目标。可以概括为:Agent = 模型 + 规划 + 工具集 + 记忆 + 循环控制。
4. Skill:可挂载的“职业技能证书”
Skill(技能)指把某一领域能力(如报表生成、数据分析、合规审查)所涉及的提示词模板、工具使用方法、流程知识,封装成可复用、可插拔的模块。它相当于给AI颁发一本“职业资格证书”,让它在特定场景下按需“持证上岗”,避免把所有能力塞进一个巨型Prompt。
5. MCP:AI世界的“USB接口”
MCP(Model Context Protocol)是一种通用的开放协议标准,用于统一规范AI应用与外部工具、数据、服务之间的连接方式。有了它,工具提供方按协议开发一次,任何兼容的AI应用都可以接入,就像USB设备不需要关心主机是什么品牌型号。
1. 抽象层级不同(最本质的差异)
五者其实位于同一条技术栈的不同层次:
2. 控制权与自主性不同
Prompt模式下,执行流程完全由应用侧编排,一次性执行;Function Call模式下,模型只提出调用建议,应用侧代理执行,控制权仍在人;Agent引入了自主性,模型参与“下一步做什么”的决策;Skill是静态挂载的能力包,调用决策仍由上层做;MCP不参与决策,只负责连接规范。
3. 实现与维护成本不同
4. 复用性与生态价值不同
Prompt通常与具体业务强绑定;函数与具体应用绑定;Skill可以在企业内部跨应用复用;MCP面向跨应用、跨组织的互联互通,生态价值最高。
| 对比维度 | Prompt | Function Call | Skill | Agent | MCP |
|---|---|---|---|---|---|
| 本质定位 | 文本指令 | 工具调用能力 | 能力封装模块 | 自主执行系统 | 连接协议标准 |
| 解决的层次 | 怎么说话 | 能做什么 | 能力如何管理 | 如何自主完成任务 | 能力如何接入 |
| 自主性 | 无,人工编排 | 低,应用代理执行 | 中,按需加载 | 高,自主规划循环 | 不涉及决策 |
| 实现成本 | 低 | 中 | 中高 | 高 | 中(服务端开发) |
| 复用范围 | 单场景 | 单应用 | 企业内复用 | 单系统内 | 跨应用互通 |
| 典型类比 | 点菜语言 | 双手 | 职业证书 | 大脑 | USB接口 |
1. Prompt层:构造基础对话(通用Java示例)
// 通用模型客户端接口(示意)public interface ChatModel {String call(SystemMessage sys, UserMessage user);}@Servicepublic class AiService {private final ChatModel chatModel;public AiService(ChatModel chatModel) {this.chatModel = chatModel;}public String ask(String question) {return chatModel.call(new SystemMessage("你是一名Java架构师,擅长用通俗语言解释技术概念。"),new UserMessage(question));}}
2. Function Call层:注册可被模型调用的工具(伪代码示意)
ToolDefinition weatherTool = ToolDefinition.builder().name("query_weather").description("根据城市名称查询实时天气").parameter("city", DataType.STRING, "城市名称").executor(args -> weatherService.query((String) args.get("city"))).build();// 请求时携带工具定义,模型返回结构化调用请求,// 应用侧执行真实函数后,将结果回传给模型生成最终回答
3. Agent层:思考-行动-观察循环(伪代码示意)
while (!task.isFinished() && steps < MAX_STEPS) {Plan plan = model.think(task, memory, toolSchemas); // 思考规划Action action = plan.nextAction(); // 决策下一步Result result = action.execute(); // 执行工具memory.record(action, result); // 记录观察}
4. Skill与MCP:封装与连接
Skill本质上是“提示词模板 + 工具绑定清单 + 领域流程说明”的打包单元,可按场景动态加载;MCP则是连接层的标准化:工具以协议服务的形式对外暴露,应用通过协议发现工具列表并动态挂载到Agent的工具集中,避免了逐个点对点集成。
选型建议(条件化判断):
实施注意事项:
Prompt、Function Call、Skill、Agent、MCP不是五个互相竞争的替代方案,而是同一条技术栈上的五个层次:Prompt解决怎么说话,Function Call解决能做什么,Skill解决能力如何组织,Agent解决如何自主完成任务,MCP解决能力如何标准化连接。理解这一定位差异后,选型思路就清晰了——按任务复杂度与团队能力逐层引入、按需组合,而不是追求“一步到位的全家桶”。分清层次、守住边界,才能设计出既高效又可维护的大模型应用架构。