一文搞懂 Spring AI 中的 Function Call、Tool、MCP 与 Skills:概念解析与核心联系
目录
4. MCP (Model Context Protocol):颠覆行业的连接新标准
💡 前言
随着大模型(LLM)从“只会聊天的工具”进化为“能自主做事的 Agent(智能体)”,如何让 AI 具备“手和脚”成为了当前 AI 应用开发的核心。在 Spring AI 框架中,我们经常会遇到四个容易混淆的概念:Function Call、Tool、MCP 和 Skills。
很多开发者在刚接触大模型应用开发时,经常会把这几个词混为一谈:“它们不都是让 AI 调代码的吗?”
今天这篇文章,我们就来把这四个概念掰开揉碎,从底层原理、框架抽象、业务逻辑到行业新标准,彻底讲透它们的区别、联系以及在 Spring AI 中的实际作用!干货满满,建议收藏!📌
一、 核心概念逐个击破
1. Function Call(函数调用):底层基石
定义:Function Call 是大模型(如 GPT-4, Claude 3, Qwen 等)原生具备的一种能力。
作用:过去,大模型只能输出纯文本;有了 Function Call,当你向模型提供了一组“函数签名(描述函数长什么样、需要什么参数)”后,模型在推理时如果发现需要外部信息,它不会直接返回文本,而是返回一段结构化的 JSON 数据,告诉你:“请帮我执行 A 函数,并且传入参数 B 和 C”。
-
注意:大模型本身不执行代码,它只是“下达执行指令”,真正的执行动作是由你的后端程序(Java 代码)完成的。
2. Tool(工具):框架层的封装
定义:Tool 是开发框架(如 Spring AI, LangChain)对 Function Call 的高层面向对象封装。
作用:为了让 Java 开发者不用每次都去拼装复杂的 JSON Schema,Spring AI 提供了 Tool 的概念。你可以把一段 Java 方法封装成一个 Tool,告诉大模型“我这里有一把锤子”。
在最新的 Spring AI 版本中,你可以直接使用 @Tool 注解(或 FunctionCallback),极其优雅地将 Java 方法暴露给大模型。
代码示例:
Java
// 在 Spring AI 中定义一个 Tool
@Component
public class WeatherTools {
@Tool(description = "获取指定城市的当前天气")
public String getWeather(@ToolParam(description = "城市名称,如:北京") String city) {
// 实际的业务逻辑,调用气象局 API
return "晴天,25度";
}
}
3. Skills(技能):业务层的能力聚合
定义:Skills 更多是一个业务架构和 Agent 设计层面的概念(在 Semantic Kernel 框架中非常核心,Spring AI 中也在逐渐引入类似理念)。
作用:如果说 Tool 是一把“螺丝刀”,那么 Skill 就是“组装电脑的技能”。一个 Skill 通常由多个 Tool 以及特定的 Prompt(系统提示词)组合而成,代表了智能体在某个特定领域的专业能力。
比如:DataAnalysisSkill(数据分析技能)可能包含了 查询数据库Tool、生成图表Tool 和 数据清洗Tool。
4. MCP (Model Context Protocol):颠覆行业的连接新标准
定义:MCP(模型上下文协议)是由 Anthropic(Claude的母公司)最新推出的一个开源标准协议。
作用:过去,如果你想让 AI 读取 Github 的代码、查阅本地文件、或者查询 Notion 的数据,你需要为每个数据源写一堆专属的 Tool API。
MCP 的出现就像是给 AI 统一了“USB 接口”! 它定义了标准的客户端-服务端架构。Spring AI 已经火速跟进支持了 MCP 客户端。这意味着,你只需在 Spring AI 中配置好 MCP 连接,你的 AI 就能瞬间具备访问海量现成 MCP 服务(如 Github MCP, 数据库 MCP 等)的能力,而不需要你再手动去写一个个 Tool!
二、 它们的区别与联系(一张图看懂)
为了让大家更直观地理解,我们打个通俗的比方——假设我们在玩一个动作类角色扮演游戏:
| 概念 | 角色扮演比喻 | 在 Spring AI / 大模型中的定位 | 侧重点 |
| Function Call | 大脑发出的神经信号。大脑决定要“挥拳”,并给出“目标是前方怪物,力度是10”的指令。 | LLM 提供的底层机制(大模型原生 API 层面)。 | 机器与机器之间交互的协议(JSON 数据)。 |
| Tool | 实际的武器/手脚。比如一把“大剑”或一瓶“血药”。 | 框架级别的代码抽象(@Tool,Java 方法)。 |
开发者的代码实现,解决具体的单一问题。 |
| Skills | 学会的武功秘籍。比如“独孤九剑”,里面包含了多种 Tool 的组合使用规则。 | 业务架构层面,Agent 具备的某一类综合能力。 | 业务能力的封装和场景化编排。 |
| MCP | 通用的武器插槽/接口标准。只要符合这个接口的武器,都能直接插上使用。 | 架构层的标准化通信协议。 | 解决 AI 工具生态碎片化问题,实现即插即用。 |
核心流转过程:
-
Spring AI 应用通过 MCP 协议连接了大量的外部数据源。
-
我们在业务代码中定义了高级的 Skills,其中包含了一些自定义的 Tool(Java 方法)。
-
Spring AI 将这些工具的信息提取出来,发给大模型。
-
大模型通过 Function Call 机制,返回需要调用的工具名称和参数。
-
Spring AI 自动执行对应的 Java 方法,并将结果返回给大模型继续思考。
三、 总结
在 AI 时代,得工具者得天下。梳理清楚这四个概念,对于我们设计健壮的 Agent 架构至关重要:
-
Function Call 是你必须理解的底层原理。
-
Tool 是你每天写代码接触最多的实际接口。
-
Skills 是你设计 Agent 时需要构思的业务模块。
-
MCP 则是你未来必须要拥抱的行业生态新标准!
随着 Spring AI 的快速迭代,Java 开发者整合大模型能力的门槛正在不断降低。建议大家赶快动手实践一下最新的 @Tool 注解和 MCP 整合,感受一下“让 AI 跑 Java 代码”的魅力!
作者语:
如果这篇文章对你有帮助,欢迎 点赞、收藏、关注!你在用 Spring AI 开发 Agent 时遇到过什么坑吗?欢迎在评论区留言交流,我们一起探讨!👇
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)