网页设计网站题目,怎么查询网站是什么时候做的,品牌网站建设毛尖c,wordpress验证本文深入解析了 ReAct Agent 的核心原理#xff0c;详细介绍了 Function Calling、MCP 和 Skills 的本质差异与最佳实践。Function Calling 是 AI Agent 调用工具的基础#xff0c;MCP 提供标准化接口连接外部数据源#xff0c;而 Skills 允许用户用文字定义指令、脚本和资源…本文深入解析了 ReAct Agent 的核心原理详细介绍了 Function Calling、MCP 和 Skills 的本质差异与最佳实践。Function Calling 是 AI Agent 调用工具的基础MCP 提供标准化接口连接外部数据源而 Skills 允许用户用文字定义指令、脚本和资源。文章还探讨了三者之间的竞合关系并介绍了 Lynxe 框架如何在 Func-Agent 思路下实现更高效的 AI Agent 应用。阿里妹导读本系列文章基于 Lynxe 作者沈询的实战经验深入浅出解析 ReAct Agent 的核心原理与工程价值帮助开发者快速掌握从“写流程”到“造智能体”的关键跃迁。关于这个系列作为 Lynxe(原JManus的作者我花费了很多课余时间来完善这个Func-Agent框架也因此对于什么是ReAct Based Agent 有了更深一些的理解。所以想把这些内容总结出来是因为这个项目本身核心目的就是探索Agent的前沿最佳实践目前已经有所小成Lynxe能解决我自己面对的80%以上的问题了所以我觉得值得把我实验下来有效的东西写出来方便大家快速入门。你可以访问 Lynxe(菱科斯)阅读详细源码来学习agent的一些最佳实践。这是一个非常完善的产品级的 Func-Agent框架。https://github.com/spring-ai-alibaba/Lynxe上下文管理的一些实践并行执行的最佳实践与我走过的弯路在前面的文章中我们介绍了什么是 ReAct Agent以及 Agent 与传统编程、Workflow 的本质区别。现在我们来聊聊一个大家广为谈论的话题AI Agent 的工具能力是什么Function Calling、MCP 和 Skills 这三者有什么区别它们背后的核心原理是什么一句话总结Function CallingAI Agent 调用工具的基础能力也是后面两个能够存在的基础。MCP (Model Context Protocol)由 Anthropic 推动的开放标准为 LLM 应用提供标准化接口以连接和交互外部数据源和工具现已捐赠给linux基金会。SkillsAnthropic Claude的一个新的尝试可以允许用户更细致的用文字定义指令、脚本和资源跟MCP有竞合关系我们后面会从不同角度来阐述这个竞合关系虽然很多人认为是互补但实际上这两个是竞争关系更大一些。为什么需要这些技术理解工具调用的基础要讲明白为什么这几个概念是竞合关系我们需要先简单了解一下AI Agent工具调用的基本原理。AI Agent工具调用的基本流程一个典型的AI Agent工具调用流程是这样的1、LLM接收用户请求和工具描述用户提出需求比如帮我查一下北京今天的天气系统向LLM提供可用工具的列表和描述比如天气查询工具可以查询指定城市的天气信息2、LLM决定是否需要调用工具LLM根据用户需求和工具描述判断是否需要调用工具如果需要LLM会生成结构化的工具调用请求这里的关键是LLM返回的是结构化的JSON格式而不是自然语言。比如用户说帮我查一下北京今天的天气LLM可能会返回{ id: chatcmpl-abc123, object: chat.completion, choices: [ { index: 0, message: { role: assistant, content: null, tool_calls: [ { id: call_abc123, type: function, function: { name: get_weather, arguments: {\city\: \北京\, \date\: \today\} } } ] }, finish_reason: tool_calls } ] }这种结构化的输出格式就是Function Calling的核心机制。它让系统能够稳定地解析LLM的意图而不需要复杂的文本解析逻辑。注意关键字段tool_calls当需要调用工具时这里包含工具调用的信息function.name要调用的工具名称function.arguments工具的参数JSON字符串格式3、系统解析并执行工具调用系统解析LLM生成的工具调用请求执行对应的工具函数比如调用天气API获取工具执行结果 还是以上面的llm返回为例上面的JSON格式会被系统解析并转换为真正的函数调用。以JavaScript为例// 1. 从LLM响应中提取工具调用信息 const toolCall response.choices[0].message.tool_calls[0]; const functionName toolCall.function.name; // get_weather const functionArgs JSON.parse(toolCall.function.arguments); // {city: 北京, date: today} // 2. 根据工具名称找到对应的函数 const tools { get_weather: (city, date) { // 执行天气查询逻辑 return 北京今天天气25°C晴天; }, // ... 其他工具 }; // 3. 执行工具调用 const result tools[functionName](functionArgs.city, functionArgs.date); // 实际调用tools[get_weather](北京, today)这个过程是自动的系统根据function.name找到对应的函数解析function.arguments获取参数然后执行调用。这就是Function Calling让工具调用变得可预测和可靠的核心机制。4、将结果返回给LLM工具执行结果被返回给LLMLLM根据结果决定下一步行动继续调用工具或者生成最终回答。小结工具调用的本质这个流程的核心在于LLM需要把用户的非结构化需求一段自然语言文本转换为结构化的函数调用函数名和参数然后与其他应用程序交互再将结构化结果返回给模型让模型能够基于这些结果进行下一步决策。问题的本质在于历史上其他系统数据库、API、文件系统等只能处理结构化信息而LLM擅长处理非结构化信息文本。因此LLM必须想办法在两种信息形式之间架起桥梁将非结构化的用户需求转换为结构化的函数调用这样才能与外部系统交互。这就是Function Calling的本质也是后面MCP和Skills能够存在的前置条件。既然有了工具调用为什么又会有MCP和Skills呢Function Calling确实解决了核心问题让LLM能够稳定地输出结构化的工具调用请求实现了非结构化→结构化的转换。这是AI Agent工具能力的基础。但在实际应用中开发者很快发现了一个新的问题工具集成成本太高。Function calling会有工具集成成本高的问题现实世界中有大量的既有系统和数据数据库里存储着业务数据文件系统里有各种文档和代码GitHub上有项目仓库和Issuedingding里有团队沟通记录还有各种API服务提供实时数据。这些既有系统里有着丰富的信息如果能让LLM直接使用这些系统和数据AI Agent的能力会大大增强。但问题是如何让LLM能够使用这些既有系统在Function Calling的框架下每个既有系统都需要单独集成到应用中。每个组织或公司都有自己的API、认证方式、数据格式开发者需要为每个组织或公司编写对应的函数实现。这就是MCP产生的原因提供一个服务可以让既有系统快速集成到LLM中。MCP的核心其实还是基于Function Calling的。它做的事情很简单把Function Calling的调用在客户端转换成一套JSONHTTP的请求。然后提供一套Server来响应这个JSONHTTP请求这样就能实现各类应用都可以被LLM使用的效果。LLM - Function Calling - MCP Client - JSONHTTP请求 - MCP Server - 既有系统GitHub/Slack/数据库等 ↓ LLM - Function Calling结果 - MCP Client - JSON响应 - MCP Server - 既有系统返回结果但MCP解决了工具集成的问题后又出现了另一个问题。Function Calling和MCP都会有任务流程定义困难的问题在实际使用中用户经常需要让AI Agent按照特定的方式执行任务。比如格式化Excel表格要按照公司的品牌指南法律审查要遵循特定的合规性要求数据分析要按照组织的工作流程。这些任务往往需要复杂的提示词和多个步骤的组合。但在Function Calling和MCP的框架下用户面临一个两难的问题当前的大模型很难仅仅依托自己的模型能力就做出最优的工具调用步骤。很多任务需要特定的执行顺序、规则和约束但把这些步骤全部写成代码又不太现实。就像我们在第一篇文章里讲的模型的核心优势是面对不确定性时可以走一步看一步动态调整策略。如果全部落成程序就会丧失模型的核心优势。举个例子我们以Lynxe实际在跑的一个new_branch流程定义为例我这个流程用文字写到一个markdown里面每次都让模型遵照执行1) 确认本地的 VERSION 与 pom.xml 与 本地branch 中的版本一致不一致的话以pom.xml为准 2) mvn package 3) 进入 ui-vue3 运行pnpm lint 4) 退回项目目录 git merge upstream/main 5) 项目目录运行 make ui-deploy 6) git 提交 branch到origin 7) git 打包 tag名字与pom的版本号一致先删除远程tag如果存在git push upstream :refs/tags/v{版本号}然后上传tag到 upstream (上传之前请先用git remote 看一下upstream是哪里确认是spring-ai-alibaba/JManus)这个流程有7个步骤每个步骤都有特定的顺序、条件和规则。如果完全写成代码每一步都要处理各种异常情况比如版本不一致、tag已存在、upstream地址不对等代码会变得非常复杂。但如果只给模型一个简单的提示词帮我创建新分支模型可能无法按照这个精确的流程执行或者执行顺序不对。 而用文字表达非常直接简单而且实际跑的过程中只有很小的概率会出错非常爽。而这就是这个问题的本质如何在尽可能的准确的前提下能让用户能用文字而非代码指导模型按照特定的流程和规则执行任务这就是Skills产生的原因其实也是Lynxe的Func-Agent产生的核心原因提供一个方式让用户可以用文字定义指令、脚本和资源形成可复用的任务流程。Skills的核心其实也是基于Function Calling的。它做的事情很巧妙通过一个固化的函数和参数让模型去查找和加载固定的skills文档。这里的关键是Skills完全依赖于Function Calling这个基础能力。 如果没有Function CallingSkills就无法工作。Skills只是在Function Calling之上的一个巧妙应用把加载文档这个操作封装成一个函数然后让Claude在需要时自动调用。具体工作流程是这样的初始化阶段用户用文字定义指令、脚本和资源打包成Skills包含SKILL.md和可选的脚本、参考资料等。Claude在启动时会读取所有Skills的元数据名称和描述这些元数据被加载到模型的上下文中每个约100 token。发现阶段当用户发起请求时Claude会根据请求内容对比已加载的Skills元数据判断是否需要使用某个Skill。这个判断过程本质上就是LLM根据上下文做决策跟Function Calling中判断是否需要调用工具是一样的。加载阶段Function Calling如果Claude判断需要某个Skill它会通过Function Calling机制调用一个专门的加载函数类似load_skill(skill_name)将对应的SKILL.md文档内容读取并加载到当前上下文中。这一步完全依赖Function Calling的能力。执行阶段继续使用Function CallingSKILL.md的内容包含指令、流程、示例等被加入到上下文后Claude按照文档中定义的指令执行任务。如果SKILL.md中定义了需要执行脚本比如scripts/rotate_pdf.pyClaude还是会通过Function Calling调用执行脚本的函数。如果需要加载参考资料同样是通过Function Calling调用读取文件的函数。可以看到整个Skills的运行过程从加载文档、执行脚本到读取资源每一步都离不开Function Calling。Skills并没有创造新的能力它只是把Function Calling这个基础能力组织成了一个更易用的形式让用户可以用文字定义流程让Claude自动发现和加载相关知识。 从本质来说他替代的是mcp 调用的函数里面过去可能会用代码写的一套串接各种API的逻辑流程用这种方式可以增强流程的适应性其实也是呼应了我们第二篇文章的核心观点Agent将决策权完全下放给了 Agent 和 Prompt能够解决原有写程序不能解决的问题——比如处理不确定性、动态调整策略、理解自然语言意图等。Claude 判断是否需调用某 Skill基于请求内容匹配已加载的 skill_name 与 description ↓ 若需要则通过 Function Calling 调用 load_skill(skill_name) ↓ 将对应 SKILL.md 的内容注入当前上下文作为执行指令依据 ↓ Claude 依照 SKILL.md 中定义的流程执行任务 ↓ 在执行过程中按需通过 Function Calling • 调用 bash 执行附带脚本 • 调用 read_file 读取所需资源文件 ↓ 整合执行结果Function Calling、MCP、Skills的核心定位通过前面的分析我们可以看到Function Calling、MCP和Skills三者之间的本质关系MCP和Skills都是基于Function Calling的它们只是在Function Calling这个基础能力之上的不同应用方式。MCP的核心是解决与既有系统的接驳问题 实际上与外部系统接驳的方法并不只有MCP这一种——我们完全可以用curl、bash等传统方式来与程序接驳。MCP的价值在于它提供了一套标准化的接驳协议让不同的工具和数据源能够以统一的方式被LLM使用。通过JSON-RPC协议和标准化的工具描述格式MCP降低了工具集成的成本让开发者不需要为每个系统单独编写集成代码。但本质上MCP更偏重是一套接驳标准而不是唯一的接驳方式。Skills则实际上是一个sub-agent的包装 它让用户可以用文字来写流程替代了过去在MCP调用的函数里用代码写的一套串接各种API的逻辑流程。这种方式可以增强流程的环境适应性——因为模型可以根据实际情况动态调整策略处理不确定性理解自然语言意图。这正是我们第二篇文章提到的核心观点Agent将决策权完全下放给了模型和Prompt能够解决原有写程序不能解决的问题。但代价就是不可能100%准确因为模型的行为存在不确定性无法像传统代码那样保证完全可预测的执行结果。MCP与Skills的竞争关系虽然很多人认为MCP和Skills是互补关系但实际上这两者更多是竞争关系。这种竞争主要体现在它们解决的是同一个问题如何整合多个既有系统实现复杂的多步骤任务。要理解它们的竞争关系我们需要回到Function Calling的本质LLM要实现工具调用实际上最需要的内容只有函数名、参数要求以及一个description。基于这个前提我们来看看MCP和Skills的不同解决思路MCP的解决思路通过标准化的协议和Server架构引入了一个新的协议转换Server这个Server可以用Node.js、Python或其他语言来实现。但这个协议转换层往往也只是先做了函数调用的协议转换然后再增加一个description打包发布。这个流程是非常薄的——它本质上只是在Function Calling的基础上增加了一层JSON-RPC协议转换。Skills的解决思路选择了更简单的办法可以不需要这层协议转发Server直接用bash以参数形式调用结果其实是一样的还更省事。换句话说MCP的JSON-RPC可以被直接替换为命令行脚本或curl远程调用在本地直接调用。这样甚至都不需要额外做MCP封装了。而且在这个基础上Skills还能支持更复杂的流程定义——通过SKILL.md文档告知LLM如何组合多个接口调用所以长流程任务的成功率会更高。这就是为什么说它们是竞争关系当用户选择使用Skills时他们就不需要在MCP Server的函数中编写复杂的串接代码了反之如果选择在MCP Server中实现完整逻辑Skills的价值就会降低。它们解决的是同一个问题如何整合多个既有系统但采用了不同的方法协议转换Server代码型流程定义 vs 直接命令行调用文字化流程定义。三者的总结性对比表Lynxe的实践与总结首先我们也认为Agent这种将决策委托给LLM的方式是一种更有潜力的、能够提供完全不同体验的、面向未来的方案。通过Function Calling、MCP和Skills这些技术我们看到了AI Agent工具能力的完整体系正在形成。但我们也并不认为Skills就是终局。在Lynxe的开发实践中我们发现Skills仍然有两个核心问题没有解决Skills的需求描述部分不够结构化Skills仅仅通过description字段来描述sub-agent的要求这会导致模型生成的信息非常容易不准确从而导致sub-agent也就是Skill无法获得充分的信息最终导致sub-agent无法达成用户期望。当任务复杂度增加时纯文本描述的不确定性会放大模型可能误解需求或者遗漏关键信息。Agent无法与既有的系统接驳Agent仅仅只能通过聊天的方式与既有系统接驳这种方式最后无论怎么做都只能是个对话框。但真实的系统远远不止有对话框这一种输入的方式。我们的大量表单都不是只有一个textarea的。现有的Agent方案很难集成到复杂的业务系统中比如需要多步骤表单、需要实时数据展示、需要与现有UI组件交互的场景。这就是Lynxe这套Func-Agent思路的原因。如果一句话来表达就是一切都是函数函数才是第一公民。在Lynxe的设计中我们让每个Agent能力都通过函数的方式暴露这样就能更好地把Agent集成到既有的系统中让他不再仅仅是一个对话框。通过函数化的接口Lynxe的Func-Agent可以接受结构化的参数输入而不是依赖纯文本描述返回结构化的结果方便与现有系统集成支持多种调用方式不仅仅是聊天界面与现有的业务逻辑、表单、API无缝对接这种方式既保留了Agent处理不确定性的核心优势又解决了结构化输入输出和系统集成的问题为Agent在实际业务场景中的应用提供了更可行的路径。AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】