网站备案怎么换,wordpress上传主题超时,wordpress阅读式主题,怎么制作网站开发设计单纯的大模型是一个只会聊天的“学霸”#xff0c;而配上Agent的大模型将是“万能助手”。你让它“关掉客厅的灯”#xff0c;它不再只是礼貌地回答你“好的#xff0c;已为您关闭客厅的灯”#xff0c;而是真的动手把灯关了。
在这场关于智能体#xff08;AI Agent…单纯的大模型是一个只会聊天的“学霸”而配上Agent的大模型将是“万能助手”。你让它“关掉客厅的灯”它不再只是礼貌地回答你“好的已为您关闭客厅的灯”而是真的动手把灯关了。在这场关于智能体AI Agent的进化革命中背后隐藏着三个关键“武器”MCPModel Context Protocol、Function Calling和A2AAgent to Agent protocol。简单来说MCP、Function Calling和A2A分别代表三种AI Agent和外界不同的协作方式MCPAI Agent 与 AI Tools 之间的工具发现、注册和调用协议。注意MCP并不会和LLM直接交互不要被名字中的Model误导了看完文章你就明白了。Function CallingAI Agent 与 AI Model 之间的工具调用协议A2AAI Agent 与 AI Agent 之间的发现与任务分配协议本文会深入解析MCP、Function Calling和A2A的协议细节揭示其背后的本质以便我们在工作中可以更好地开发、使用Agent技术。1. AI Agent首先让我们了解一下什么是AI Agent人工智能体AI Agent 是一种能自主感知环境、自主规划并执行动作以完成特定任务的智能系统。关于LLM和Agent的关系有个形象的比喻——LLM是AI Agent的“大脑”而AI Agent是LLM的“身体”。没有Agent的LLM能力被禁锢在对话和文本生成中是“思想的巨人行动的矮子”。没有LLM的Agent会退化为一个僵硬的、按固定流程行事的自动化脚本缺乏应对不确定性的智慧和灵活性。AI Agent区别于传统的SOPStandard Operation Procedureworkflow在于传统的方式是基于规则的自动化有明确的、预设的“如果-那么”规则。而AI Agent是基于目标的自主性能自主规划、执行、调整。能感知环境变化动态调整策略。能处理模糊、不确定的任务。其本质在于大模型本身所具备的强大语言理解推理和泛化能力。一个完整的Agent除了大脑LLM外还需要感知模块“眼睛和耳朵”通过API、搜索引擎、文件系统等获取外部信息。工具集“手和脚”可以调用各种函数、API、软件等来影响现实。这就是Function Calling、MCP等技术的用武之地。记忆模块“工作日志和经历”通过向量数据库或记忆流记录过去的历史用于长期规划和参考。接下来让我们一起看看AI Agent是如何用MCP、Function Calling和A2A技术让大模型从“思想的巨人行动的矮子”变成“万能助手”的。2. MCP协议为了更好的理解MCPModel Context Protocol模型上下文协议我们需要先实现一个特殊的Agent它能自动记录MCP client和server之间的通信内容。通过解析通信内容无需多言你就能明了MCP的真谛。2.1 实现一个Agent1准备工作安装Cline Agent目前只有VS Code的插件安装Python以及uv工具Python包安装器和解析器设置repository源在环境变量中设置UV_INDEX_URLhttps://repo.huaweicloud.com/repository/pypi/simple/可用的大模型服务比如openAI, deepseekopenrouter等2创建python项目mkdir mcpserver cd mcpserver# 初始化项目 uv init# 创建虚环境uv sync# 安装mcpuv add mcp# 激活虚拟环境Windows.venv\Scripts\activate3创建MCP Server这个MCP Server很简单模拟一个获取天气信息的工具。其代码如下from mcp.server.fastmcp import FastMCP# 一、创建FastMCP类mcp FastMCP(获取天气信息)# 二、自定义工具Stdio 模式mcp.tool(获取天气信息)defget_forecast(city) - str: 获取天气信息 参数: city (str): 城市名称 返回: city_forecast : 当前城市的天气信息 # 这里只是简单的返回一个Mock真实场景会调用天气APIreturn city 明天有大暴雨# 三、初始化MCP Serverif __name__ __main__:# printprint(MCP Server is running...) mcp.run(transportstdio)print(MCP exist)除了上面这个MCP Server之外我们还需要一个日志记录工具mcp_logger.py (https://github.com/MarkTechStation/VideoCode/) 用来截获mcp client和mcp server之间的通信仅限于stdio方式这个工具可以把通信内容写入到当前目录下的mcp_io.log日志文件4在Cline中配置MCP Server1在VSCode的Cline插件上点击“Configure MCP Servers”2在配置文件中写入启动mcp server的信息这条配置的意思是通过“python mcp_logger.py uv run mcp_weather_server.py”命令来运行MCP Server3当看到配置界面的get_forcast工具为绿色时表示MCP Server已经配置并启动成功了5验证Agent使用工具当我们在任务窗口输入“杭州明天的天气如何”会发现Cline Agent在大模型的帮助下会主动调用get_forecast工具然后成功完成任务。此时查看mcp_io.log会发现它记录了完整的MCP Client 和 MCP Server之间的通信内容。 1. 初始化阶段 MCP Client发送:{method:initialize,params:{protocolVersion:2025-06-18,capabilities:{},clientInfo:{name:CodeMate,version:25.2.200}},jsonrpc:2.0,id:0}MCP Server发送:{jsonrpc:2.0,id:0,result:{protocolVersion:2025-06-18,capabilities:{experimental:{},prompts:{listChanged:false},resources:{subscribe:false,listChanged:false},tools:{listChanged:false}},serverInfo:{name:获取天气信息,version:1.16.0}}}MCP Client发送:{method:notifications/initialized,jsonrpc:2.0} 2. 工具注册阶段 MCP Client发送:{method:tools/list,jsonrpc:2.0,id:1}MCP Server发送:{jsonrpc:2.0,id:1,result:{tools:[{name:获取天气信息,description:\n 获取天气信息\n\n 参数:\n city (str): 城市名称\n\n 返回:\n city_forecast : 当前城市的天气信息\n ,inputSchema:{properties:{city:{title:city,type:string}},required:[city],title:get_forecastArguments,type:object},outputSchema:{properties:{result:{title:Result,type:string}},required:[result],title:get_forecastOutput,type:object}}]}}MCP Client发送:{method:resources/list,jsonrpc:2.0,id:2}MCP Server发送:{jsonrpc:2.0,id:2,result:{resources:[]}}MCP Client发送:{method:resources/templates/list,jsonrpc:2.0,id:3}MCP Server发送:{jsonrpc:2.0,id:3,result:{resourceTemplates:[]}} 3. 工具调用阶段 MCP Client发送:{method:tools/call,params:{name:获取天气信息,arguments:{city:杭州}},jsonrpc:2.0,id:4}MCP Server发送:{jsonrpc:2.0,id:4,result:{content:[{type:text,text:杭州明天有大暴雨}],structuredContent:{result:杭州明天有大暴雨},isError:false}}2.2 解析MCP协议通过日志我们可以看到MCP通信内容是基于JSON-RPC协议的JSON-RPC是我见过最简洁的协议就像其口号说的simple is better。我们把日志转换成时序图不难发现整个通信过程分为3个阶段初始化阶段也就是MCP Client和 MCP Server的握手过程。通常MCP Client是以内置组件的形式存在于Agent内部。工具注册阶段MCP Client会询问MCP Server你有哪些可用的tools工具resources资源、templates模板。MCP Server会按照规定的格式返回对应的能力描述。工具调用阶段当大模型需要调用工具时会告诉Agent你需要用{city:杭州}这个参数去调用下get_forecast这个工具。MCP Client知道这个工具是“获取天气信息”这个MCP Server提供的调用即可。这就是MCP其本质就是支持AI Agent用一种通用的方式发现、注册、调用外部的工具从而协助LLM完成用户任务。wait大模型怎么知道要在什么时候调用工具以及用什么方式调用工具呢3. Function Calling 大模型为什么知道要调用哪个工具当我问“杭州明天的天气如何”的时候大模型为什么知道要调用get_forecast这个工具呢实际上这就是大模型的Function Calling而这个能力需要我们通过prompt的方式来教大模型。这个能力正是大模型区别传统SOP的关键用非结构化的“柔性”完美克服了传统规则的“刚性”。我们可以通过查看Cline的源码来理解Agent是如何“指导”大模型进行Function Calling的。你可以在此查看Cline的完整system prompthttps://github.com/cline/cline整个prompt有600行将近50K大小总共13000个字符会消耗5000个tokens。这就是为什么很多人吐槽Cline Agent烧Token的原因。内容比较多我们截取里面部分内容分析一下你就明白为什么大模型有能力调用工具了。3.1 身份声明首先给模型带个高帽子你是个软件高手因为Cline是coding agent当然要如此声明。可能还有个附加好处直接激活MoE帮服务端省点电费。You are Cline, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.3.2 能力声明亮明身份之后还要声明所具备的能力capabilities即告诉大模型1你能推理任务并且step-by-step的使用工具完成任务。这是客户端能变成Agent的关键即让模型follow ReActReasoningActing模式处理用户任务。2你能使用工具且会用XML的格式与我沟通。不同的Agent会选择不同的格式Cline是用XML也可以是JSON。TOOL USEYou have access to a set of tools that are executed upon the users approval. You can use one tool per message, and will receive the result of that tool use in the users response. You use tools step-by-step to accomplish a given task, with each tool use informed by the result of the previous tool use.# Tool Use FormattingTool use is formatted using XML-style tags. The tool name is enclosed in opening and closing tags, and each parameter is similarly enclosed within its own set of tags. Heres the structure:tool_nameparameter1_namevalue1/parameter1_nameparameter2_namevalue2/parameter2_name.../tool_name3.3 系统工具能力Cline作为coding agent已经内置了一些工具主要是和写代码相关的。包括execute_command执行命令read_file读文件write_to_file写文件等。这里有一个工作目录working directory的概念为了安全性考虑文件操作只被允许在working directory下面。因此在实际使用Cline之前我们需要搞清楚当前的working directory是在哪里。## execute_command## read_file## list_files## write_to_fileDescription: Request to write content to a file at the specified path. If the file exists, it will be overwritten with the provided content. If the file doesnt exist, it will be created. This tool will automatically create any directories needed to write the file.Parameters:- path: (required) The path of the file to write to (relative to the current working directory ${cwd.toPosix()})- content: (required) The content to write to the file. ALWAYS provide the COMPLETE intended content of the file, without any truncation or omissions. You MUST include ALL parts of the file, even if they havent been modified.Usage:write_to_filepathFile path here/pathcontentYour file content here/content/write_to_file3.4 MCP扩展工具能力除了Cline的内建工具之外当然少不了用户自定义的扩展工具比如我们案例中的get_forecast工具之所以我们的Agent会调用MCP Server的get_forecast工具“获取天气信息”。正是因为我们在2.1章节中注册了get_forecast MCP工具。对于Cline Agent而言所谓的工具注册就是在Cline发送给大模型的prompt中加入了如下的功能描述信息。这些提示词和内建工具的提示词类似都是在“指导”大模型教它有这些工具的能力capabilities从而实现Function Calling。# Connected MCP ServersWhen a server is connected, you can use the servers tools via the use_mcp_tool tool, and access the servers resources via the access_mcp_resource tool.## weather (python mcp_logger.py uv run mcp_weather_server.py)### Available Tools- get_forecast: 获取天气信息Args: city: 城市名称Input Schema:{ type: object, properties: { city: { title: city, type: string } }, required: [ city ], title: get_forecastArguments}3.5 完成任务当完成所有的subtask迭代执行完tools达成任务目标。大模型需要通过attempt_completion通知Agent任务完成并在result中呈现最终任务执行结果如果需要demonstrate演示的话也可以有演示的CLI但这是可选的。## attempt_completionDescription: After each tool use, the user will respond with the result of that tool use, i.e. if it succeeded or failed, along with any reasons for failure. Once youve received the results of tool uses and can confirm that the task is complete, use this tool to present the result of your work to the user. Optionally you may provide a CLI command to showcase the result of your work. The user may respond with feedback if they are not satisfied with the result, which you can use to make improvements and try again.IMPORTANT NOTE: This tool CANNOT be used until youve confirmed from the user that any previous tool uses were successful. Failure to do so will result in code corruption and system failure. Before using this tool, you must ask yourself in thinking/thinking tags if youve confirmed from the user that any previous tool uses were successful. If not, then DO NOT use this tool.Parameters:- result: (required) The result of the task. Formulate this result in a way that is final and does not require further input from the user. Dont end your result with questions or offers for further assistance.- command: (optional) A CLI command to execute to show a live demo of the result to the user. For example, use \open index.html\ to display a created html website, or \open localhost:3000\ to display a locally running development server. But DO NOT use commands like \echo\ or \cat\ that merely print text. This command should be valid for the current operating system. Ensure the command is properly formatted and does not contain any harmful instructions.Usage:attempt_completionresultYour final result description here/resultcommandCommand to demonstrate result (optional)/command/attempt_completion4. Context Engieering通过上文对Cline System Prompt的解读你会发现Agent的本质就是一个精心设计的Prompt。因为大模型本质上是“上下文学习者”它们没有长期的记忆每次交互都是独立的。你提供的上下文就是它此次交互的全部世界。因此要想实现完整的Agent功能在传递给LLM的信息中除了System promptuser message之外还要包括Docs领域知识工作对象等工作记忆Message history等。把这些内容都汇总起来就是LLM需要的Context上下文而这个汇总精炼、压缩的工作就叫Context Engineering (https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)。这也是Context Engineering和Prompt Engineering的主要区别。回过头来你应该就能理解我在开篇说的MCP是和模型无关的协议。MCP只是一个为了Model的Context而服务的Protocol。它既不和Model交互也和Model无关。它只是给Context Engineering服务的一环。5. A2A协议Agent的本质是Context像Cline这样的Agent通过MCP扩展的工具能力使用说明都是放在prompt里工具不多还好如果很多可能会撑爆Context Window即使不会撑爆过长的Context也会引发Context Rot (https://research.trychroma.com/context-rot) 问题。这和我们人类的认知类似信息越多越难focus越难抓住重点。关于如何提供有效的长度适中的Context是Contex Engineering的关键。在Context Engineering一文中有详细阐述。常用的技术有Compaction压缩Structured Note-taking结构化笔记以及Multi-Agent architectures多Agent架构。所谓的Multi-Agent就是从Agent层面做分而治之从而控制单个Agent的Context长度。而多agent之间的协作就涉及到A2A协议即Agent to Agent协议。A2A是google开源的开放协议。其包含如下核心概念概念描述Agent Card卡片位于/.well-known/agent.json描述能力、技能、端点 URL 和认证要求用于发现A2A Server服务器实现协议方法管理任务执行A2A Client客户端发送请求如tasks/send或tasks/sendSubscribe消费 A2A 服务Task(任务)核心工作单位有唯一 ID状态包括submitted、working等Message(消息)通信单位角色为user或agent包含 PartsParts(部分)内容单位包括TextPart、FilePart、DataPartArtifacts(工件)任务输出包含 Parts流式传输使用 SSE 事件更新长期任务状态推送通知通过 webhook 发送更新和MCP一样A2A采用的也是JSON-RPC协议其工作机制也很类似主要包括Agent的发现、注册和使用通信细节不再赘述大致流程如下发现客户端从 /.well-known/agent.json 获取 Agent Card了解智能体的能力。启动客户端发送任务请求处理服务器处理任务可能涉及流式更新或直接返回结果。交互可选若任务状态为 input-required客户端可发送更多消息使用相同 Task ID 提供输入。完成任务达到终端状态如 completed、failed 或 canceled。总结单纯的大模型只能对话和生成文本是“思想的巨人行动的矮子”。配上Agent的大模型能感知环境、使用工具、执行任务成为“万能助手”。AI Agent的核心在于Context Engineering背后需要依赖三大关键技术MCP、Function Calling 和 A2A。这三项技术并不是有你无我的排斥关系而是可以通力协作的互补关系。大模型通过 Prompt 学习工具使用实现非结构化任务处理克服传统规则的“刚性”使得AGIArtificial General Intelligence通用人工智能成为可能。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】