理财公司网站建设方案wordpress首页静态化生成
理财公司网站建设方案,wordpress首页静态化生成,推广公司怎么找,城乡建设部网站广州市直接调用工具时#xff0c;每次工具定义和执行结果都会占用上下文资源。而让智能体通过编写代码来调用工具#xff0c;能实现更好的扩展性#xff0c;以下是借助 MCP 实现这一方案的具体原理。
模型上下文协议#xff08;Model Context Protocol#xff0c;简称 MCP#…直接调用工具时每次工具定义和执行结果都会占用上下文资源。而让智能体通过编写代码来调用工具能实现更好的扩展性以下是借助 MCP 实现这一方案的具体原理。模型上下文协议Model Context Protocol简称 MCP是一套用于连接 AI 智能体与外部系统的开放标准。传统方式中智能体与工具、数据的对接需要为每一组配对开发定制化集成方案这会造成系统碎片化和重复开发难以构建真正可扩展的连接系统。MCP 提供了统一的协议开发者只需在智能体中实现一次 MCP 集成就能解锁整个生态的各类工具对接能力。自 2024 年 11 月 MCP 发布以来其普及速度迅猛社区已搭建数千台 MCP 服务器所有主流编程语言均已推出对应的 SDKMCP 也已成为行业内智能体对接工具与数据的事实标准。如今开发者构建的智能体通常能访问数十台 MCP 服务器上的数百甚至数千个工具。但随着对接工具数量的增加预先加载所有工具定义以及通过上下文窗口传递中间结果的方式会导致智能体运行变慢、成本上升。本文将探讨如何通过代码执行让智能体更高效地与 MCP 服务器交互在支持更多工具的同时减少 Token 消耗。1、工具引发的 Token 消耗过量问题降低了智能体效率随着 MCP 使用规模扩大两种常见模式会增加智能体的成本和延迟第一、工具定义占用过多上下文窗口第二、中间工具结果消耗额外 Token。1.1 工具定义占用过多上下文窗口大多数 MCP 客户端会预先将所有工具定义直接加载到上下文并通过直接工具调用语法暴露给模型。这些工具定义可能如下所示gdrive.getDocument 描述从 Google 云端硬盘获取文档 参数 documentId必填字符串类型待获取文档的 ID fields可选字符串类型需返回的特定字段 返回值包含标题、正文内容、元数据、权限等信息的文档对象salesforce.updateRecord 描述更新 Salesforce 中的记录 参数 objectType必填字符串类型Salesforce 对象类型潜在客户、联系人、客户等 recordId必填字符串类型待更新记录的 ID data必填对象类型需更新的字段及对应新值 返回值包含确认信息的更新后记录对象工具描述会占用大量上下文窗口空间导致响应时间延长、成本增加。当智能体对接数千个工具时模型在处理用户请求前需要先处理数十万个 Token。1.2 中间工具结果消耗额外 Token大多数 MCP 客户端允许模型直接调用 MCP 工具。例如你可能会向智能体发起请求“从 Google 云端硬盘下载我的会议记录并将其附加到 Salesforce 潜在客户信息中”。模型会执行如下调用工具调用gdrive.getDocument(documentId: abc123) → 返回结果讨论了第四季度目标...\n[完整会议记录文本] 该结果会加载到模型上下文 工具调用salesforce.updateRecord( objectType: SalesMeeting, recordId: 00Q5f000001abcXYZ, data: { 备注: 讨论了第四季度目标...\n[完整会议记录文本] } ) 模型需再次将完整会议记录写入上下文每一个中间结果都必须经过模型传递。在上述示例中完整的会议记录会两次流经上下文。对于一场 2 小时的销售会议这可能意味着额外处理 5 万个 Token。而对于更大的文档甚至可能超出上下文窗口限制导致工作流程中断。当处理大型文档或复杂数据结构时模型在工具调用之间复制数据时更容易出错。模型Claude 3.5 Sonnet新版Claude 3.5 HaikuClaude 3.5 SonnetGPT-4o*GPT-4o mini*Gemini 1.5 ProGemini 1.5 Flash研究生水平推理GPQA 钻石级65.0%零样本思维链41.6%零样本思维链59.4%零样本思维链53.6%零样本思维链40.2%零样本思维链59.1%零样本思维链51.0%零样本思维链本科水平知识MMLU Pro78.0%零样本思维链65.0%零样本思维链75.1%零样本思维链--75.8%零样本思维链67.3%零样本思维链代码能力HumanEval93.7%零样本88.1%零样本92.0%零样本90.2%零样本87.2%零样本--数学解题MATH78.3%零样本思维链69.2%零样本思维链71.1%零样本思维链76.6%零样本思维链70.2%零样本思维链86.5%四样本思维链77.9%四样本思维链高中数学竞赛AIME202416.0%零样本思维链5.3%零样本思维链9.6%零样本思维链9.3%零样本思维链---视觉问答MMMU70.4%零样本思维链-68.3%零样本思维链69.1%零样本思维链59.4%零样本思维链65.9%零样本思维链62.3%零样本思维链智能体编码SWE-bench 验证集49.0%40.6%33.4%----智能体工具使用TAU-bench零售行业 69.2% / 航空行业 46.0%零售行业 51.0% / 航空行业 22.8%零售行业 62.6% / 航空行业 36.0%----注我们的评估表格未纳入 OpenAI 的 o1 模型系列因其依赖大量响应前计算时间与常规模型存在本质差异难以进行公平的性能对比。MCP 客户端会将工具定义加载到模型的上下文窗口并编排一个消息循环使得每次工具调用和结果都需在操作之间经过模型传递。2、借助 MCP 实现代码执行提升上下文效率随着代码执行环境在智能体中的普及一种解决方案是将 MCP 服务器呈现为代码 API而非直接的工具调用。智能体可通过编写代码与 MCP 服务器交互这种方式能同时解决上述两个问题智能体仅加载所需工具并在执行环境中处理数据后再将结果返回给模型。实现方式有多种。其中一种是为所有已连接的 MCP 服务器生成工具文件目录以下是 TypeScript 实现示例servers├── google-drive │ ├── getDocument.ts │ ├── ...其他工具 │ └── index.ts ├── salesforce │ ├── updateRecord.ts │ ├── ...其他工具 │ └── index.ts └── ...其他服务器每个工具对应一个文件示例如下// ./servers/google-drive/getDocument.ts import { callMCPTool } from ../../../client.js; interface GetDocumentInput { documentId: string; } interface GetDocumentResponse { content: string; } /* 从 Google 云端硬盘读取文档 */ export async function getDocument(input: GetDocumentInput): PromiseGetDocumentResponse { return callMCPToolGetDocumentResponse(google_drive__get_document, input); }前文提到的 “从 Google 云端硬盘到 Salesforce” 的示例可转化为如下代码// 从 Google 文档读取会议记录并添加到 Salesforce 潜在客户信息中 import * as gdrive from ./servers/google-drive; import * as salesforce from ./servers/salesforce; const transcript (await gdrive.getDocument({ documentId: abc123 })).content; await salesforce.updateRecord({ objectType: SalesMeeting, recordId: 00Q5f000001abcXYZ, data: { Notes: transcript } });智能体通过浏览文件系统发现工具列出./servers/目录找到可用服务器如google-drive和salesforce再读取所需的特定工具文件如getDocument.ts和updateRecord.ts以理解每个工具的接口。这种方式让智能体仅加载当前任务所需的工具定义将 Token 消耗量从 15 万个降至 2000 个时间和成本节省达 98.7%。Cloudflare 也发布了类似研究结果并将这种 MCP 代码执行方式称为 “代码模式Code Mode”。核心思路一致大语言模型擅长编写代码开发者应利用这一优势构建更高效与 MCP 服务器交互的智能体。3、借助 MCP 实现代码执行的优势通过 MCP 代码执行智能体可按需加载工具、在数据到达模型前进行过滤、一步执行复杂逻辑从而更高效地利用上下文。此外这种方式还具备安全和状态管理方面的优势。3.1 渐进式暴露工具模型擅长导航文件系统。将工具以代码形式呈现于文件系统允许模型按需读取工具定义而非一次性加载全部。此外还可在服务器中添加search_tools工具以查找相关定义。例如在使用前文假设的 Salesforce 服务器时智能体搜索 “salesforce” 并仅加载当前任务所需的工具。在search_tools工具中加入细节级别参数允许智能体选择所需的信息详细程度例如仅名称、名称和描述、或包含模式的完整定义也有助于智能体节省上下文并高效查找工具。3.2 上下文高效的工具结果处理大型数据集时智能体可在代码中对结果进行过滤和转换后再返回。例如获取包含 1 万行数据的电子表格// 无代码执行场景 - 所有行均流经上下文 工具调用gdrive.getSheet(sheetId: abc123) → 1 万行数据加载到上下文需手动过滤 // 代码执行场景 - 在执行环境中过滤 const allRows await gdrive.getSheet({ sheetId: abc123 }); const pendingOrders allRows.filter(row row[状态] 待处理 ); console.log(找到 ${pendingOrders.length} 个待处理订单); console.log(pendingOrders.slice(0, 5)); // 仅输出前 5 条供查看智能体仅需查看 5 行数据而非 1 万行。类似模式适用于数据聚合、多数据源关联查询或特定字段提取 —— 所有操作均不会占用过多上下文窗口。3.3 更强大且上下文高效的控制流循环、条件判断和错误处理可通过熟悉的代码模式实现而非串联多个独立工具调用。例如若需在 Slack 中接收部署通知智能体可编写如下代码let found false; while (!found) { const messages await slack.getChannelHistory({ channel: C123456 }); found messages.some(m m.text.includes(部署完成)); if (!found) await new Promise(r setTimeout(r, 5000)); } console.log(已收到部署通知);这种方式比在智能体循环中交替执行 MCP 工具调用和睡眠命令更高效。此外编写可执行的条件分支树还能减少 “首 Token 响应时间” 延迟无需等待模型评估条件语句可直接让代码执行环境处理。3.4 隐私保护操作当智能体通过代码执行使用 MCP 时中间结果默认保留在执行环境中。这样一来智能体仅能看到明确日志或返回的数据意味着不希望与模型共享的数据可在工作流程中传递而无需进入模型上下文。对于更敏感的工作负载智能体框架可自动对敏感数据进行令牌化处理。例如需将电子表格中的客户联系信息导入 Salesforce 时智能体编写如下代码const sheet await gdrive.getSheet({ sheetId: abc123 }); for (const row of sheet.rows) { await salesforce.updateRecord({ objectType: Lead, recordId: row.salesforceId, data: { Email: row.email, Phone: row.phone, Name: row.name } }); } console.log(已更新 ${sheet.rows.length} 条潜在客户记录);MCP 客户端会拦截数据并在其到达模型前对个人身份信息PII进行令牌化处理// 若智能体日志输出 sheet.rows将看到以下内容 [ { salesforceId: 00Q..., email: [邮箱_1], phone: [电话_1], name: [姓名_1] }, { salesforceId: 00Q..., email: [邮箱_2], phone: [电话_2], name: [姓名_2] }, ... ]之后当该数据在另一个 MCP 工具调用中共享时MCP 客户端会通过查找表还原令牌化数据。真实的邮箱地址、电话号码和姓名会从 Google 表格流转至 Salesforce但全程不会经过模型。这能防止智能体意外记录或处理敏感数据也可通过这种方式定义确定性安全规则指定数据的流转范围。3.5 状态持久化与技能沉淀支持文件系统访问的代码执行允许智能体在多个操作间维持状态。智能体可将中间结果写入文件以便恢复工作和跟踪进度const leads await salesforce.query({ query: SELECT Id, Email FROM Lead LIMIT 1000 }); const csvData leads.map(l ${l.Id},${l.Email}).join(\n); await fs.writeFile(./workspace/leads.csv, csvData); // 后续执行可从断点继续 const saved await fs.readFile(./workspace/leads.csv, utf-8);智能体还可将自身代码保存为可复用函数。当智能体开发出某一任务的可用代码后可将其保存供未来使用// ./skills/save-sheet-as-csv.ts import * as gdrive from ./servers/google-drive; export async function saveSheetAsCsv(sheetId: string) { const data await gdrive.getSheet({ sheetId }); const csv data.map(row row.join(,)).join(\n); await fs.writeFile(./workspace/sheet-${sheetId}.csv, csv); return ./workspace/sheet-${sheetId}.csv; } // 后续任何智能体执行过程中均可调用 import { saveSheetAsCsv } from ./skills/save-sheet-as-csv; const csvPath await saveSheetAsCsv(abc123);这与 “技能Skills” 概念密切相关 ——“技能” 是包含可复用指令、脚本和资源的文件夹帮助模型提升特定任务的执行性能。在这些保存的函数中添加 SKILL.md 文件可创建结构化技能供模型参考和使用。久而久之智能体将构建起一套高阶能力工具箱不断优化自身工作所需的支撑架构。需注意的是代码执行也会带来额外复杂性。运行智能体生成的代码需要安全的执行环境包括适当的沙箱隔离、资源限制和监控机制。这些基础设施要求会增加运营开销和安全考量而直接工具调用则可避免这些问题。因此在采用代码执行方式时需权衡其带来的优势降低 Token 成本、减少延迟、提升工具组合能力与实现成本。4、总结MCP 为智能体连接各类工具和系统提供了基础协议。但当连接的服务器过多时工具定义和结果会消耗过量 Token降低智能体效率。尽管文中提到的许多问题上下文管理、工具组合、状态持久化看似新颖但在软件工程领域已有成熟解决方案。代码执行将这些既定模式应用于智能体让智能体能够通过熟悉的编程结构更高效地与 MCP 服务器交互。若你采用了这种方案欢迎与 MCP 社区分享你的实践成果。好了这就是我今天想分享的内容。如果你对构建企业级 AI 原生应用新架构设计和落地实践感兴趣别忘了点赞、关注噢~那么如何系统的去学习大模型LLM作为一名深耕行业的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课