Agent 的能力体系

news2026/4/7 1:09:42
提示词及其能力边界在将 Agent 具体应用到实际的生产环境中之前人们首先需要弄清楚的是提示词在这类应用中的作用到底是什么它的能力边界在哪里如果我们在这两个问题上的理解出现了偏差那么后续所有针对 Agent 应用的能力扩展都会被错误地理解为是一种更高级的提示词技巧。考虑到 LLM 的核心训练机制是在高维参数空间中寻找一个在给定数据分布上表现足够好的函数近似它的具体推理过程永远都是在根据某一概率分布来输出下一个文本单元在专业术语中我们称之为“Token”关于这个单位的具体计算方法读者可参考我稍后在“参考资料”一节中所提供的视频教程《关于 Token 的科普》。换言之LLM 并不是一个基于显式规则或程序控制流的命令执行系统因此当我们向 LLM 提供一个提示词时需要记得自己并非是在对它下“命令”而是在为其提供符合当前环境需求的上下文信息以便影响它输出的概率分布。这就意味着提示词调整的是 LLM 输出的概率倾向它无法改变 LLM 的能力边界。举个例子当我们在 Agent 应用中输入并提交如下语句作为提示词时它们的功能分别是“你是一名专业的法律顾问”用于角色塑造Persona目的是影响语气、知识调用倾向与表达方式。“请以 JSON 格式输出”用于输出约束Format Constraints目的是规范结果结构提高可读性与可解析性。“请分步骤推理”用于任务定义Task Framing目的是明确问题范围限制 LLM 的推理方向。由此可见提示词的作用本质上都是在向 LLM 注入用于影响其行为模式的额外上下文信息。尽管学习提示词的使用技巧可以在一定程度上提高任务完成质量。但它们终归只是一种“软控制”手段并非系统层面的强约束。换言之无论我们如何编写提示词它们都免不了会具有以下三个典型特征。不确定性相同的提示词在不同时间、不同上下文长度、甚至不同模型版本下都可能产生差异结果。提示词并不能保证稳定行为。非隔离性多轮对话中的历史信息可能影响当前输出规则之间也可能互相干扰。提示词并不具备真正的“作用域隔离”。不可验证性提示词很难像代码一样做单元测试。一次微小改动可能影响多个场景而这种影响往往难以预判。因此当问题涉及到针对 Agent 应用的“能力扩展”时我们需要做的就不再仅仅是“写好提示词”那么简单了。因为提示词虽然可以很好地引导 LLM 的推理路径、规范其输出格式并优化文本的表达质量从而在一定程度上提升任务的成功率但对于面向生产环境的具体应用以下能力是提示词无法提供的调用外部的服务/工具因为这需要独立于 LLM 之外的代码执行环境以及相关的程序逻辑支持管理应用的执行状态因为这需要执行面向数据库管理系统、文件管理系统的增删改查操作保证行为逻辑的可复用因为即使是相同的提示词它在不同时空条件下会产生不同的结果除了能力层面的限制之外提示词还存在着工程与经济层面的约束它给 LLM 带来的计算成本在一定程度上也会成为 Agent 应用的另一种能力边界。毕竟如今的主流 LLM 服务提供商例如 OpenAI、Google、Anthropic 等公司都是以 Token 为单位来进行计费的。众所周知用户与 LLM 的每次对话都会产生一定数量的 Token 消耗越复杂的对话消耗的 Token 数量就越多。因此当我们在对话中叠加越来越多的提示词时免不了会导致系统成本的大幅上升。在个人使用场景中这个成本或许还尚可承受一旦进入到具体的生产环境中问题就会迅速被放大它主要体现在以下四个方面。版本管理困难提示词通常以自然语言形式存在缺乏清晰的版本结构很难精确追踪到具体的变更行为回归问题一次看似微小的改动可能导致多个下游场景输出变化而这些变化难以预估可读性下降当规则不断叠加时提示词会逐渐演变成“规则堆砌文本”。新成员难以理解设计意图知识隐性化大量设计经验隐藏在自然语言中无法结构化复用也无法模块化组合。这意味着如果我们在实际生产环境中不可避免地需要高频调用 LLM那么其“臃肿的系统提示词”无疑就会成为长期的成本负担这将大大限制 Agent 应用的能力扩展空间。也正是在这样的背景下业界才会一直持续不断地寻求在更高层次上对 Agent 应用的能力体系展开进一步的探索这探索的结果中就包括了由 Anthropic 公司提出的 MCP 服务与 Skills 机制它们也正是我们接下来要讨论的重点。如果读者想更详细地了解提示词与上下文工程在 Agent 应用中的工作原理也可以参考本文在“参考资料”一节中提供的视频教程《关于提示词与上下文工程的科普》。MCP 服务MCP即 Model Context Protocol中文可翻译为“模型上下文协议”是由 Anthropic 公司提出并推广的一种用于连接 LLM 与外部服务/工具的通信协议它的设计目标是寻求在 Agent 应用的底层架构上解决以下三个问题工具接入的标准化问题在 MCP 出现之前每一个 LLM 平台都需要自行定义工具调用方式例如 OpenAI 所推出的 function calling 机制Agent 应用的开发者们往往需要针对不同 LLM 重复编写适配逻辑。现在MCP 让这些工具能以统一协议的形式被 LLM 调用了这显然有助于 Agent 应用与 LLM 的耦合度。跨平台复用问题如果工具能以统一协议的形式被 LLM 调用而非绑定在某一个 API 上那么理论上它就可以被不同的 LLM 实例调用这有助于提高 Agent 应用的可移植性。安全边界与能力隔离问题LLM 本身并不直接拥有执行权限想要发挥其执行功能往往需要通过操作系统进行精确地授权这类授权通常都存在着一定的误操作风险。有了 MCP 协议之后我们就可以轻松地让它在被授权的范围内调用外部服务/工具。这种“能力显式声明”的方式有助于建立清晰的安全边界。总而言之该协议的最大作用是为 LLM 与其要调用的外部工具建立通信桥梁Agent 应用通常会基于该协议接入用于连接特定工具的中间件来构建这样的桥梁从而实现“能力扩展”。在专业术语中这样的中间件被称为“MCP 服务MCP Server”。那么在实际生产环境中我们该如何使用 MCP 服务呢MCP 服务的接入与使用为了让读者对 MCP 服务能有一个更直观的认识我接下来将继续以 OpenCode 这个 Agent 应用为例里具体演示一下 MCP 服务在 Agent 应用中的接入与使用方法。一般来说当我们决定在 Agent 应用中接入一个 MCP 服务时需要完成以下三个配置步骤。根据要调用的外部服务/工具找到要接入的 MCP 服务这一步骤可以通过搜索 MCP 服务列表来完成。例如如果我们想在 Agent 应用中调用网页浏览器那么就可以到以下几个目前比较常用的 MCP 服务列表网站中搜索“浏览器自动化”这样的关键字这些网站通常都会返回chrome-devtools-mcp、playwright这些 MCP 服务。Anthropic MCP DirectoryAnthropic 官方提供的 MCP 服务列表。Awesome MCP Servers这是一个按照经典的Awesome系列风格来组织的 MCP 服务列表目前在 Github 上很受欢迎。MCP.so这是目前全球最大的 MCP 资源聚合平台现已收录超过 8000 个 MCP 服务并且还在不断更新中。魔塔社区的 MCP 广场由魔塔社区维护的中文 MCP 服务列表收录了 1000 个 MCP 服务。选择要接入 MCP 服务并查阅其说明文档目前主要的 MCP 服务都会提供详尽的说明文档其中会包含它们的各种接入参数以及面向各种 Agent 应用的配置方法。例如playwright这个 MCP 服务的说明文档如图 1 所示。图 1playwright 的说明文档根据 MCP 服务的说明文档来完成接入配置这一步骤需要我们根据 Agent 应用的官方文档将 MCP 服务的接入参数填写到相应的配置文件中。例如在 OpenCode 中我们可以通过在其配置文件即opencode.json文件中添加如下内容来接入playwright这个 MCP 服务。{mcp: {playwright: {type: local,command: [npx,-y,playwright/mcplatest]}}}根据 OpenCode 的官方文档MCP 服务的配置信息需要被放置在mcp字段下每一个 MCP 服务都需要以一个唯一的名称例如playwright来进行配置其配置方式主要分为本地接入与远程接入两种类型具体如下远程接入在这种配置类型下MCP 服务的配置参数主要包含type、url、enabled等字段。其中type字段的值应固定为remote而url字段用于指定该 MCP 服务所在的地址enabled字段用于指定是否启用该服务。例如以下是远程接入jira这个 MCP 服务的官方示例{$schema: https://opencode.ai/config.json,mcp: {jira: {type: remote,url: https://jira.example.com/mcp,enabled: true}}}本地接入在这种配置类型下MCP 服务的配置参数主要包含type、command、environment、enabled等字段。其中type字段的值应固定为local而command字段用于指定该 MCP 服务的启动命令及其参数environment字段用于指定启动该服务所需设置的环境变量enabled字段用于指定是否启用该服务。例如以下是本地接入github这个 MCP 服务的示例{$schema: https://opencode.ai/config.json,mcp: {github: {type: local,command: [npx,-y,modelcontextprotocol/server-github],environment: {// 此处的 token 需要用户自行前往 GitHub 获取GITHUB_PERSONAL_ACCESS_TOKEN: your github personal access token},enabled: true}}}目前的 MCP 服务主要有 NPM 和 UV 两种打包方式所以它们的启动命令通常是npx或uvx。例如之前配置的playwright这个 MCP 服务的启动命令是npx -y playwright/mcplatest而fetch这个用于抓取网页信息的 MCP 服务的启动命令就是uvx mcp-server-fetch了。在完成了上述配置之后我们只需在 OpenCode TUI 中执行/mcps命令就可以看到所有已配置的 MCP 服务并管理它们的接入状态了如图 2 所示。图 2在 OpenCode TUI 中确认 MCP 服务的接入状态在确认playwright这个 MCP 服务已成功接入之后我们就可以试着在 OpenCode TUI 中使用提示词让它去调用网页浏览器打开 Twitter/X并发一个测试推文来检查这个 MCP 服务的功能是否可用了如图 3 所示。图 3试用 playwright 服务接入 MCP 服务的成本与风险在计算机的世界中任何针对应用程序的能力扩展都会引入新的复杂度。MCP 服务也不例外。在实际生产环境中它至少带来三类新的成本部署复杂度提升接入 MCP 服务意味着我们所使用的 Agent 应用已从简单的“LLM 提示词”结构变成了“LLM MCP 外部服务/工具”的复杂结构这无疑会增加应用的部署与维护难度。安全风险扩大一旦 LLM 具备了调用外部能力的通道我们就必须开始考虑系统权限的管理、输入校验与调用审计。否则 LLM 输出的错误判断很可能会被转化为真实的程序执行风险。依赖管理问题外部服务/工具的可用性、版本变更以及接口兼容性等因素都会直接影响到 Agent 应用的稳定性。能力扩展的同时也意味着更多外部依赖。因此对于 Agent 应用来说MCP 服务从来都不是“多多益善”的能力增强工具它们只应被用于那些确实有必要使用外部工具的应用场景。如果仅仅是文本生成与结构化输出过早在 Agent 应用中引入 MCP 服务反而会造成不必要的资源浪费用户应根据自己的实际需求来决定启用哪些 MCP 服务。为了解决这个问题我们通常会分以下两个作用域的配置文件来管理 MCP 服务。系统级配置文件该文件的存储路径通常为~/.config/opencode/opencode.json我们在其中配置的 MCP 服务往往是所有应用场景都会用到的通用服务例如playwright、fetch等项目级配置文件该文件的存储路径通常为项目根目录/.opencode/opencode.json我们在其中配置的 MCP 服务往往是针对特定项目或应用场景的专用工具例如用于操作数据库的MongoDB或者用于 WebUI 设计的figma等。如果从能力体系的层次来看MCP 服务属于“能力接入层”。它解决的是 LLM 的外部调用能力而提示词则是用于控制 LLM 的单次推理行为与输出表现的。二者并不冲突但也不在同一层级。理解这一点才能避免将 MCP 误解为一种“高级提示词技巧”从而在架构设计上做出错误决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2483957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…