Prompt、Agent、Function Call、Skill、MCP,傻傻分不清楚? 📅 发布时间:2026/7/10 12:23:14 👁️ 浏览次数: 前言最近AI越来越火了。我发现里面有很多概念有些小伙伴有点分不清楚比如Prompt、Agent、Function Call、Skill、MCP等。今天这篇文章专门跟大家一起聊聊这个话题希望对你会有所帮助。更多项目实战在项目实战网Java突击队核心概念关系图先上干货这张图让你从整体上理解这五个概念是如何分层递进的一句话概括Prompt是你跟AI说的“人话”Function Call让AI能“动手干活”Agent让AI会“思考规划”Skill是AI的“职业技能证书”MCP是AI世界的“USB接口”下面我们一层一层拆开揉碎了讲每层都有Java代码示例。第一层Prompt——和AI对话的“普通话”1.1 什么是PromptPrompt提示词就是你输入给AI的文本指令。它就像你去餐厅点菜时说的“来一份宫保鸡丁”AI就是那个服务员听懂你的话然后给你上菜。在Java里调用AI模型的第一步就是构造Prompt。我用最简单的Spring AI示例来演示importorg.springframework.ai.chat.ChatClient;importorg.springframework.ai.chat.prompt.Prompt;importorg.springframework.ai.chat.prompt.SystemPrompt;importorg.springframework.ai.chat.prompt.UserPrompt;ServicepublicclassAIService{privatefinalChatClientchatClient;publicAIService(ChatClientchatClient){this.chatClientchatClient;}publicStringaskAI(Stringquestion){// 构造Prompt可以包含系统消息和用户消息PromptpromptnewPrompt(newSystemPrompt(你是一个Java架构师擅长用通俗的语言解释技术概念。),newUserPrompt(question));// 调用AI并返回结果returnchatClient.call(prompt).getResult().getOutput().getContent();}}这里的SystemPrompt和UserPrompt就是最基础的Prompt形式。它们决定了AI的身份和你要问的问题。1.2 Prompt的高级玩法光有基础Prompt还不够在实际应用中我们经常需要提示词工程来引导AI做出更好的回答。比如publicStringgenerateJavaCode(Stringrequirement){StringpromptTemplate 你是一个资深的Java开发工程师。 请根据以下需求生成Java代码代码要包含必要的注释并考虑异常处理 需求%s 请输出完整的Java类代码。 ;StringpromptString.format(promptTemplate,requirement);returnchatClient.call(newPrompt(prompt)).getResult().getOutput().getContent();}Prompt的本质它是人类意图与AI能力之间的“翻译官”。Prompt写得好AI才能干得好。第二层Function Calling——让AI从“说话”到“动手”Prompt只能让AI“说话”但AI想干点实事比如查数据库、发邮件、调用第三方API时就无能为力了。Function Calling函数调用就是来解决这个问题的。2.1 什么是Function CallingFunction Calling允许开发者在调用大模型时注册一系列函数工具模型在生成回复时如果判断需要调用外部工具就会返回一个结构化的请求由开发者执行真实的函数再把结果返回给模型生成最终答案。原理图如下2.2 Java实现Function Calling我用LangChain4j来演示因为它对Java开发者很友好。首先定义工具函数importdev.langchain4j.agent.tool.Tool;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassWeatherTool{Tool(获取指定城市的实时天气)publicStringgetWeather(Stringcity){// 这里应该是真实的API调用为了演示我们模拟数据if(北京.equals(city)){return北京当前天气晴温度25℃湿度40%;}elseif(上海.equals(city)){return上海当前天气小雨温度22℃湿度80%;}else{return抱歉暂不支持该城市天气查询;}}Tool(获取当前时间)publicStringgetCurrentTime(){returnLocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss));}}然后创建AI服务并绑定工具importdev.langchain4j.model.chat.ChatLanguageModel;importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;publicclassWeatherAssistant{interfaceAssistant{Stringchat(StringuserMessage);}publicstaticvoidmain(String[]args){ChatLanguageModelmodelOpenAiChatModel.builder().apiKey(System.getenv(OPENAI_API_KEY)).modelName(gpt-4).build();AssistantassistantAiServices.builder(Assistant.class).chatLanguageModel(model).tools(newWeatherTool())// 注册工具.build();// 用户提问Stringresponseassistant.chat(北京现在天气怎么样);System.out.println(response);responseassistant.chat(现在几点了);System.out.println(response);}}当用户问天气时模型会判断需要调用getWeather函数LangChain4j自动处理了函数调用的整个流程最后把结果整合成自然语言返回。2.3 Function Calling的核心价值让AI从“静态知识”变成“动态能力”。没有Function CallingAI只能回答训练数据里的内容有了它AI可以实时获取最新信息甚至可以操作你的系统。第三层Agent——会思考、会规划的“智能体”Function Calling让AI能调用工具但它还是被动的一问一答。如果遇到复杂任务比如“帮我规划一次杭州三日游”需要查天气、查景点、查酒店、算预算……这时候就需要Agent智能体出场了。3.1 什么是AgentAgent是一个能够感知环境、做出决策并执行动作的自主系统。它不像Function Calling那样只是“单次工具调用”而是具备完整的“思考-行动-观察”闭环能力。通俗说Function Calling是“会用手”Agent是“有大脑”。3.2 ReActAgent的核心决策模式目前主流Agent都采用ReActReasoning Acting框架。它的工作流程是思考Thought分析当前状态决定下一步要做什么行动Action调用某个工具观察Observation获取工具返回的结果循环直到任务完成3.3 Java实现一个简单的ReAct Agent我们用LangChain4j的AiServices结合工具来实现Agent。首先定义多个工具importdev.langchain4j.agent.tool.Tool;publicclassTravelTools{Tool(查询某城市未来一周的天气)publicStringqueryWeather(Stringcity){// 模拟天气查询returncity未来一周天气前三天晴后四天多云气温20-28℃;}Tool(查询某城市的知名景点)publicStringqueryAttractions(Stringcity){// 模拟景点查询if(杭州.equals(city)){return杭州知名景点西湖、灵隐寺、西溪湿地、宋城;}elseif(上海.equals(city)){return上海知名景点外滩、东方明珠、迪士尼乐园;}return暂无该城市景点信息;}Tool(计算预算)publicStringcalculateBudget(Stringcity,intdays){// 模拟预算计算intbase500;inttotalbase*days;returncitydays天游预算约为total元不含大交通;}}然后创建Agentimportdev.langchain4j.model.chat.ChatLanguageModel;importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;importdev.langchain4j.memory.chat.MessageWindowChatMemory;publicclassTravelAgent{interfaceTravelPlanner{StringplanTrip(Stringrequest);}publicstaticvoidmain(String[]args){ChatLanguageModelmodelOpenAiChatModel.builder().apiKey(System.getenv(OPENAI_API_KEY)).modelName(gpt-4).build();TravelPlanneragentAiServices.builder(TravelPlanner.class).chatLanguageModel(model).tools(newTravelTools()).chatMemory(MessageWindowChatMemory.withMaxMessages(20))// 记忆让Agent能记住上下文.build();Stringresultagent.planTrip(帮我规划一个3天的杭州游包括天气、景点和预算);System.out.println(result);}}这个Agent会自己决定先查天气、再查景点、再算预算然后把所有信息整合成一份完整的旅行计划。整个过程是自主的不需要我们写死流程。3.4 Agent与Function Calling的关系Function Calling是Agent的“手”Agent是拥有“大脑”的完整系统。Agent通过Function Calling调用工具但Agent多了“规划”和“记忆”能力能处理更复杂的任务。更多项目实战在项目实战网Java突击队第四层Skill——封装专业知识的“技能包”当Agent需要处理不同领域的任务时如果让一个Agent掌握所有知识和工具会变得臃肿且容易出错。这时候就需要Skill技能的概念。4.1 什么是SkillSkill是一套封装了特定领域知识、最佳实践和工具组合的“技能包”。它就像我们人类的职业资格证书——一个医生有“看病技能”一个程序员有“写代码技能”。Anthropic最早提出Skill概念一个Skill通常包含领域专用的提示词模板一组相关的工具函数特定的工作流逻辑4.2 Java中如何组织Skill我们可以把Skill定义为一个独立的模块包含自己的工具类和提示模板。例如一个“前端开发Skill”// 前端技能专属工具publicclassFrontendTools{Tool(生成React组件代码)publicStringgenerateReactComponent(StringcomponentName,Stringprops){return import React from react; const %s (%s) { return divHello, {props.name}/div; }; export default %s; .formatted(componentName,props,componentName);}Tool(检查CSS命名规范)publicStringcheckCssNaming(StringcssCode){// 模拟CSS检查逻辑returnCSS规范检查通过;}}// 前端技能的提示词模板publicclassFrontendPrompts{publicstaticfinalStringSYSTEM_PROMPT 你是一个资深前端开发工程师精通React、Vue、CSS等前端技术。 请严格按照前端最佳实践生成代码确保代码可维护。 ;}// 创建前端专家AgentpublicclassFrontendAgent{publicstaticvoidmain(String[]args){ChatLanguageModelmodelOpenAiChatModel.builder().apiKey(System.getenv(OPENAI_API_KEY)).modelName(gpt-4).build();DeveloperassistantAiServices.builder(Developer.class).chatLanguageModel(model).tools(newFrontendTools()).systemMessageProvider(ignored-FrontendPrompts.SYSTEM_PROMPT).build();Stringcodeassistant.generateCode(创建一个计数器组件有加一减一按钮);System.out.println(code);}}4.3 Skill与Agent的关系在大型系统中我们通常会有多个Agent每个Agent加载不同的Skill前端Agent加载ReactSkill、CSSSkill后端Agent加载SpringSkill、DatabaseSkill运维Agent加载K8sSkill、MonitoringSkill每个Agent只拥有完成自己领域任务所需的最小知识集既提高了精准度又保障了安全。4.4 Function Call和Skill有什么区别一句话说清本质Function Call 是一种能力让AI能够调用外部函数工具Skill 是一个模块封装了特定领域的知识、最佳实践和一组相关的Function Call用个比喻Function Call 像锤子、螺丝刀、扳手这些具体工具Skill 像木工工具箱里面有锤子、锯子、尺子还附带一本《木工操作手册》下面从代码看看它们的区别。Function Call单个工具publicclassWeatherTool{Tool(获取天气)publicStringgetWeather(Stringcity){// 调用天气APIreturncallWeatherAPI(city);}}这个工具只能干一件事查天气。Skill完整的专业能力包// 前端开发Skill - 包含多个工具 专业知识publicclassFrontendSkill{// 工具1生成React组件Tool(生成React组件)publicStringgenerateComponent(Stringname){returnReact组件代码...;}// 工具2检查CSS规范Tool(检查CSS规范)publicStringcheckCss(Stringcss){return检查结果...;}// 工具3优化性能建议Tool(提供前端性能优化建议)publicStringperformanceAdvice(Stringcode){return优化建议...;}// 还有领域知识不是工具而是提示词模板publicstaticfinalStringSYSTEM_PROMPT你是一个资深前端专家精通React、Vue、CSS优化...;}这个Skill包含了多个工具还带有领域知识。核心区别对比表维度Function CallSkill本质单一能力能力集合 知识粒度原子操作业务模块是否包含工具本身就是工具包含多个工具是否包含知识不包含包含领域知识和最佳实践类比单个螺丝刀电工工具箱 电工手册应用场景查天气、发邮件等单次操作前端开发、运维管理、财务分析等专业领域代码形式单个Tool方法多个Tool方法 系统提示词为什么需要区分这两个概念设计层面的解耦Function Call是底层能力Skill是业务封装。底层能力稳定上层业务可以灵活组合。复用性好的Skill可以跨项目复用就像代码库里的工具包。安全性可以给不同的Agent分配不同的Skill实现权限隔离前端Agent不能调用后端数据库。总结Function CallAI的“手”能干活SkillAI的“职业培训证书”让AI知道怎么干好某个领域的事Function Call 领域知识 最佳实践 Skill下次再有人问这个问题你可以直接甩给他这张表然后说“锤子是Function Call工具箱是Skill懂了吗”更多项目实战在项目实战网Java突击队第五层MCP——统一工具调用的“世界语”随着Agent越来越多每个Agent都要接入不同的工具每个AI模型OpenAI、Claude、文心一言的Function Calling格式还不一样。这就导致开发者要针对每个模型写一套工具适配代码非常痛苦。MCPModel Context Protocol模型上下文协议就是来解决这个问题的。5.1 什么是MCPMCP是Anthropic提出的一个标准化协议它定义了一套统一的接口让AI模型可以像USB设备一样动态发现和调用工具。核心思想工具以Server的形式暴露MCP ServerAI应用作为ClientMCP Client连接ServerServer提供工具清单和调用接口Client统一格式调用无需关心底层工具具体实现5.2 MCP的工作流程更多项目实战在项目实战网Java突击队5.3 Java中使用MCPSpring AI 2.0已经原生支持MCP可以非常方便地构建MCP客户端和服务器。定义MCP Server工具提供方importorg.springframework.ai.mcp.server.McpServer;importorg.springframework.ai.mcp.server.McpServerFeatures;importorg.springframework.ai.mcp.server.McpServerRegistrar;importorg.springframework.ai.mcp.spec.McpSchema;ComponentpublicclassWeatherMcpServer{BeanpublicMcpServerRegistrarweatherServer(){// 定义工具McpSchema.ToolweatherToolnewMcpSchema.Tool(getWeather,获取城市天气,newMcpSchema.JsonSchema(Map.of(type,object,properties,Map.of(city,Map.of(type,string,description,城市名称)),required,List.of(city))));// 创建ServerMcpServerFeatures.AsyncServerSpecserverSpecMcpServerFeatures.async().tool(weatherTool,(request)-{Stringcityrequest.arguments().get(city).asText();// 执行真实逻辑Stringweather北京当前天气晴25℃;returnCompletableFuture.completedFuture(newMcpSchema.CallToolResult(List.of(newMcpSchema.TextContent(weather)),false));});returnMcpServerRegistrar.builder().name(weather-server).server(serverSpec).build();}}MCP Client调用importorg.springframework.ai.mcp.client.McpClient;importorg.springframework.ai.mcp.client.McpClientFeatures;ServicepublicclassAIServiceWithMCP{privatefinalChatClientchatClient;privatefinalMcpClientmcpClient;publicAIServiceWithMCP(ChatClientchatClient){this.chatClientchatClient;// 连接到MCP Serverthis.mcpClientMcpClientFeatures.async().connect(weather-server,http://localhost:8080/mcp);}publicStringaskWeather(Stringcity){// 通过MCP调用工具McpSchema.CallToolResultresultmcpClient.callTool(getWeather,Map.of(city,city)).join();Stringweatherresult.content().get(0).text();// 也可以让AI自动决定是否调用工具PromptpromptnewPrompt(查询city天气);returnchatClient.call(prompt).getResult().getOutput().getContent();}}5.4 MCP与Skill的关系MCP和Skill是互补的MCP解决“怎么连”的问题——标准化工具调用协议Skill解决“连什么”的问题——封装专业知识和工具集合一个典型的架构是Agent通过MCP调用各种Skill暴露的工具。这样无论底层工具如何变化Agent都不需要修改代码只需要通过MCP动态发现即可。一张表彻底分清五个概念概念一句话定义核心作用Java生态代表Prompt给AI的指令告诉AI要做什么Spring AI的Prompt类Function Call让AI能调用外部工具赋予AI行动能力LangChain4j的Tool注解Agent能自主决策的智能系统完成复杂任务的闭环LangChain4j的AiServices 记忆Skill封装专业知识的技能包固化领域知识和最佳实践模块化的工具集合提示模板MCP统一工具调用的标准协议让所有AI用同一套接口Spring AI的MCP支持这五个概念构成了AI应用开发的完整分层Prompt是地基没有它AI听不懂人话Function Call是第一层楼让AI能动手Agent是第二层让AI会思考Skill是装修让AI更专业MCP是连接各层的管道让整个系统灵活可扩展总结有些小伙伴可能会问“我现在应该先学哪个”我的建议是从Prompt开始这是所有AI应用的基础。理解了Prompt再逐步接触Function Call然后尝试搭建简单的Agent。至于Skill和MCP可以先了解概念等你的应用复杂到需要多个Agent协作时再深入学习也不迟。Prompt、Function Call、Agent、Skill、MCP正是AI应用开发的“五层楼”每一层都让我们离业务更近离底层细节更远。开源地址Spring AIhttps://github.com/spring-projects/spring-aiLangChain4jhttps://github.com/langchain4j/langchain4jMCP规范https://github.com/modelcontextprotocol更多项目实战在项目实战网Java突击队
告别多线程开销:用 I/O 多路转接与 select 突破并发瓶颈 在传统的网络编程中,如果服务器想要同时服务 100 个客户端,通常的做法是“来一个客户端,就开一个线程或进程”。但线程的创建、销毁和上下文切换极其消耗系统资源,当并发量达到上万时,服务器就会崩溃(即著名的 C10K 问题)。 想要在单线程下同时处理成千上万个连接,我们… 2026/7/3 3:06:58
收藏!亚马逊又裁员了!程序员/小白必看:AI大模型才是破局关键 近日,亚马逊官方正式官宣一则重磅消息:将裁减1.6万名企业员工,这一数字再次引发科技圈和职场人的广泛关注,尤其是对于正在打拼的程序员、刚入门的技术小白来说,更值得警惕和深思。图片来源网络,侵删 说实话… 2026/7/9 16:41:53
OpenClaw(小龙虾)全方位详解 🦞 OpenClaw(小龙虾)全方位详解 一、什么是 OpenClaw? OpenClaw 是一款面向个人与轻量团队的低门槛 AI 自动化代理工具,2026 年统一以"OpenClaw"作为官方名称。其核心定位是通过自然语言指令,替代… 2026/7/10 16:21:55
Building and Environment 热点趋势分析:2023-2024年智能技术、低碳方案等5大主题发文统计 2023-2024年建筑环境领域五大前沿趋势:数据驱动的科研选题指南当全球建筑行业面临碳中和转型与数字化升级的双重挑战时,《Building and Environment》作为建筑科学领域的权威期刊,其发文趋势已成为把握学科风向的重要标尺。我们通过对2023-20… 2026/7/11 4:40:11
原来互联网上这些才是靠谱的谷歌SEO优化渠道? 引言在当今数字化时代,谷歌SEO优化对于企业拓展海外市场至关重要。然而,面对众多的优化渠道,如何选择靠谱的那一个成为了难题。凰启出海作为外贸整合营销资深服务商,有着诸多优势,能为企业提供可靠的谷歌SEO优化服务。… 2026/7/11 4:40:11
2026年小程序制作商排行榜,口碑、稳定性、服务实力排名 2026年小程序制作商排行榜,口碑、稳定性、服务实力排名市面上小程序制作商那么多,到底哪些综合实力强、口碑好?这个问题困扰着不少准备做小程序的老板。今天我就结合行业数据和用户反馈,梳理一份综合实力榜单。艾瑞咨询《2026年中… 2026/7/11 4:38:11
蓝牙BQB认证“十年最狠一刀”:2026新规落地,蓝牙5.4强制+LE Audio必选,模组选型怎么避坑? 蓝牙BQB认证“十年最狠一刀”:2026新规落地,欧飞信已完成蓝牙5.4LE Audio全系布局 上一篇刚贺喜全球首张蓝牙6.2模组认证落地,还没从高兴中缓过来,又有重磅信息炸开,蓝牙技术联盟(SIG)对BQB认证… 2026/7/11 4:36:11
AI自我改进机制:从理论到工程实践的全流程实现 最近在AI工程实践中,很多开发者都面临一个共同挑战:如何让AI系统不仅能够执行任务,还能持续自我改进和优化。这个问题在构建复杂的AI Agent系统时尤为突出,特别是当我们需要AI具备长期学习能力和适应性时。本文将深入探讨AI自我改… 2026/7/11 4:28:09
CesiumJS 1.107 昼夜交替进阶:3种光照方案对比与5000倍速动画性能实测 CesiumJS 1.107 昼夜交替进阶:3种光照方案对比与5000倍速动画性能实测当数字地球在浏览器中缓缓旋转时,最令人着迷的莫过于光影流转间展现的昼夜交替效果。这种动态视觉不仅关乎美学表现,更是地理信息系统(GIS)应用中时… 2026/7/11 4:28:09
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08