随着大模型和 AI 应用的爆火,AI 技术圈、产品圈天天都在蹦出新名词。
我的 Agent 安装了几个 Skill?
你这个助手小工具支持 MCP 协议?
有了 MCP 为什么还要用 Function Call?
很多人听得云里雾里的。别慌!今天我用这篇文章,用最通俗易懂的语言、以及一目了然的图解,彻底讲解 Prompt、Function Call、Agent、Skill、MCP 核心概念!
核心概念全景图
在深入细节前,先通过一张图,从整体上理解核心概念是如何分层递进的:

Prompt:就是你跟 AI 说的普通话
Function Call:让 AI 具有了动手干活的能力
Agent:让 AI 进化出思考和规划的大脑
Skill:是 AI 针对特定领域的职业技能证书
MCP:是统一 AI 世界工具调用的USB接口
一、Prompt(提示词)
1. 什么是 Prompt?
Prompt(提示词) 就是用户输入给 AI 的文本指令。
就像去餐厅点餐时说的“给我来一份麻婆豆腐”。AI 就是那个厨师,听懂你的话,然后给你上菜。在应用开发中,Prompt 是人类意图与 AI 能力之间的桥梁。Prompt 写得越精准,AI 出来的效果就越好。
2. 开发中的 Prompt
通常把 Prompt 分为不同的角色来管理:
System Prompt(系统提示词):定义 AI 的人设。例如:你是一个 Java 架构师。
User Prompt(用户提示词):用户具体的提问。例如:什么是微服务?
在Spring AI中的使用:
package com.yl.aiagent.app;import com.yl.aiagent.advisor.MyLoggerAdvisor;import jakarta.annotation.Resource;import lombok.extern.slf4j.Slf4j;import org.springframework.ai.chat.client.ChatClient;import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;import org.springframework.ai.chat.client.advisor.QuestionAnswerAdvisor;import org.springframework.ai.chat.memory.ChatMemory;import org.springframework.ai.chat.memory.InMemoryChatMemory;import org.springframework.ai.chat.model.ChatModel;import org.springframework.ai.chat.model.ChatResponse;import org.springframework.ai.tool.ToolCallback;import org.springframework.ai.vectorstore.VectorStore;import org.springframework.stereotype.Component;import reactor.core.publisher.Flux;import java.util.List;import static org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor.CHAT_MEMORY_CONVERSATION_ID_KEY;import static org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor.CHAT_MEMORY_RETRIEVE_SIZE_KEY;@Component@Slf4jpublic class LoveApp {@Resourceprivate VectorStore loveAppVectorStore;private final ChatClient chatClient;private static final String SYSTEM_PROMPT = "扮演深耕恋爱心理领域的专家。开场向用户表明身份,告知用户可倾诉恋爱难题。" + "围绕单身、恋爱、已婚三种状态提问:单身状态询问社交圈拓展及追求心仪对象的困扰;" + "恋爱状态询问沟通、习惯差异引发的矛盾;已婚状态询问家庭责任与亲属关系处理的问题。" + "引导用户详述事情经过、对方反应及自身想法,以便给出专属解决方案。";public LoveReport doChatWithReport(String message, String chatId) {LoveReport loveReport = chatClient.prompt().system(SYSTEM_PROMPT) // 系统提示词.user(message) // 用户提示词.advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10)).entity(LoveReport.class);log.info("context: {}", loveReport);return loveReport;}}
二、Function Calling(函数调用)
Prompt 只能让 AI 动嘴说话,但如果让 AI 干点实事,比如:查一下成都今天最新的天气、调用第三方API,它就无能为力,因为大模型的训练数据是静态的。
Function Calling(函数调用)就是为了让 AI 能动手而生的。函数调用过程:

1. 什么是 Function Calling?
它允许开发者在调用大模型时,注册一系列外部工具(函数)。大模型在理解用户意图后,如果发现需要查外部信息,它不会胡编乱造,而是返回一个结构化的请求(JSON),告诉开发者:“我需要调用这个函数,参数是XX”。
开发者在后台执行真实的函数(比如调用天气 API)并拿到结果,再把结果喂回给模型,最终由模型整合成自然语言回复给用户。
2. 核心价值
让 AI 从静态知识变成了动态能力。有了 Function Call,AI 就能获取外部数据、调用企业 API。自定义工具:
/*** 网页内容抓取工具*/public class WebScrapingTool {@Tool(description = "Scrape the content of a web page")public String scrapeWebPage(@ToolParam(description = "URL of the web page to scrape") String url) {try {Document document = Jsoup.connect(url).get();return document.html();} catch (IOException e) {e.printStackTrace();return "Error scraping web page: " + e.getMessage();}}}
Spring AI中使用工具调用:
/*** 工具调用** @param message* @param chatId* @return*/public String doChatWithTools(String message, String chatId) {ChatResponse chatResponse = chatClient.prompt().user(message).advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))// 开启日志,便于观察效果.advisors(new MyLoggerAdvisor()).tools(allTools) //工具调用.call().chatResponse();String content = chatResponse.getResult().getOutput().getText();log.info("content: {}", content);return content;}
三、Agent(智能体)
Function Call 赋予了 AI 动手的技能,但它依旧是被动的一问一答。如果遇到一个复杂任务,比如:“帮我规划一次重庆一周游,包含天气、景点和预算”,需要调用多次工具,怎么办?这时候就需要智能体了。
1. 什么是 Agent?
Agent 是一个能够感知环境、做出决策并自主执行动作的完整系统。
Function Call 是会用手。
Agent 是长了大脑。
目前主流的 Agent 都采用 ReAct(Reasoning + Acting,推理+行动) 框架。它自己会形成一个闭环工作流:

思考:分析当前状态,决定下一步做什么。
行动:通过 Function Call 调用某个工具。
观察:看一眼工具返回的结果,继续思考。
循环:直到把复杂任务拆解并执行完毕,给出最终答案。
四、Skill(技能)
当我们的 Agent 越来越强大,需要处理各行各业的复杂任务时,如果把所有的工具和提示词都堆给同一个 Agent,它的大脑会变得臃肿,极易产生幻觉和混乱。于是,我们引入了 Skill(技能包) 的概念。
1. 什么是 Skill?
Skill 是把指令、脚本、模板一体化打包打包成可复用能力包的机制,也就是一套封装了特定领域知识。就像人类的职业资格证书:一个医生有“看病技能”,一个程序员有“写代码技能”。
2. Function Call 和 Skill 的区别
很多人在这里最容易绕晕。一句话点透本质:
Function Call 是一种原子能力(相当于单把的螺丝刀)。
Skill 是一个业务功能模块(相当于一整套电工工具箱,里面不仅有螺丝刀、电笔,还附带一本《电工安全操作手册》)。
| 维度 | Function Call (函数调用) | Skill (技能) |
| 本质 | 单一的底层能力 | 能力集合 + 领域知识 + 最佳实践 |
| 粒度 | 原子操作(如:查天气、发邮件) | 业务模块(如:前端开发、财务审计) |
| 是否包含知识 | 不包含,只负责执行 | 包含特有的角色提示词(System Prompt) |
| 代码表现 | 单个标注了 @Tool 的具体方法 | 多个工具方法 + 领域提示词模板的组合封装 |
3. Skill 与 Agent 的关系

在企业级大模型应用里,一个复杂的 Agent 会根据场景动态挂载不同的 Skill。比如一个“全栈开发智能体”,可以同时加载 前端开发 Skill 和 数据库管理 Skill,实现能力解耦和权限隔离。
五、MCP(模型上下文协议)
随着 Agent 和工具的爆发式增长,开发者遇到了极其痛苦的瓶颈OpenAI 的 Function Call、Anthropic Claude、文心一言和通义千问的格式不一样。每换一个模型,或者每加一个新工具,你都要重写一遍适配代码。为了终结这个乱象,Anthropic 提出了 MCP(Model Context Protocol 模型上下文协议)。

1. 什么是 MCP?
MCP 是 AI 世界的 USB 接口协议。过去,鼠标、键盘、打印机都有各自的接口,电脑连接非常麻烦;有了 USB 协议后,所有设备拔插即用。MCP 也是这个逻辑:
MCP Server(工具提供方):把所有的工具(如 GitHub API、数据库查询、天气服务)统一按照 MCP 标准暴露出来。
MCP Client(AI 应用):无论是哪个大模型,只要实现了 MCP 客户端,就能直接动态发现并调用这些工具。
2. MCP 与 Skill 的关系
MCP 解决的是怎么连的问题 —— 它是标准化的管道、通信协议。
Skill 解决的是连什么的问题 —— 它是业务内涵、专业知识的集合。
一个标准架构中,Agent 往往正是通过 MCP 管道动态去调用各种 Skill 里的工具。
3. Function Calling与MCP的区别
Funcation Calling需要写在应用代码里面的,工具定义和调用逻辑在你的项目代码中,换了应用就得重新写一边。
MCP是独立的,做成单独运行的进程,只要支持MCP的客户端都能直接使用,对外提供标准统一的接口,独立部署、维护、一次实现到处复用。
总结
如果上面内容看的有点懵懂,那就收藏好下面这张对比表,面试或开发时随时翻看。
| 概念 | 一句话定义 | 核心核心作用 | 比喻 |
| Prompt | 给 AI 的指令 | 告诉 AI 要做什么、以什么身份说话 | 餐厅点菜的订单 |
| Function Call | 让 AI 调用外部工具的能力 | 赋予 AI 跨越文本、动手干活的桥梁 | 干活用的单把工具(如锤子) |
| Agent | 能自主决策的智能体系统 | 独立完成复杂任务的闭环大脑 | 能够独立搞定项目的项目经理 |
| Skill | 封装了专业知识的技能包 | 固化特定领域的高级组合能力与最佳实践 | 专业打包好的职业工具箱 |
| MCP | 统一工具调用的标准协议 | 消除不同模型、工具之间的接入壁垒 | 电子设备通用的 USB 接口 |
夜雨聆风