发布时间:2026 年 5 月 18 日
WebMCP 工具声明应清晰明了,无需开发者或代理查看输出并重试。无论您使用的是命令式 API 还是声明式 API,都应遵循以下最佳实践:
- 在构建之前,请先制定工具策略。
- 使用清晰的语言和语义 HTML。
- 设计架构并处理输入。
- 构建可靠的工具。
- 测试和调试。
我们已另行撰写文章,介绍如何打造注重安全性的工具。
制定工具策略
与任何软件应用一样,您首先应规划工具策略:
- 每项工具都应包含一个函数。例如,一项工具可用于引导用户前往特定表单类型,另一项工具则应将输入字段与用户信息相匹配。请注意不要创建重叠的工具,以免代理不知道该使用哪项工具。请问问自己:我能否使用同一函数来完成多项任务?
- 管理工具注册。在工具在特定页面状态下有用时注册工具,然后在工具不再可用时取消注册。
- 降低复杂性:对于大多数应用,静态注册应该是默认方法。
- 信任智能体,让其完成任务。不要编写僵硬或负面的指令,而应假设智能体能够理解完成任务所需的内容,而不是期望智能体管理确切的步骤流程。
虽然没有允许的工具数量上限,但每个工具都会占用部分上下文窗口,并增加完成时间。您提供的工具越多,工具之间的重叠程度越高,智能体就越难正确选择工具。通过实验确定适合您应用的设置。
这有助于您构建用途不重叠的各个工具,并管理这些工具的可用时间。
使用清晰的语言和语义代码
使用清晰准确的语言来命名工具并描述其用途。这有助于智能体找到所需内容、了解找到的内容,并按照开发者的预期使用该信息。
在撰写工具名称时,请区分执行和启动,并使用准确描述所发生情况的动词。例如,create-event 是用于立即创建活动的工具,而 start-event-creation-process 是将用户重定向到表单以创建活动的工具。
清晰的说明应描述工具的功能以及何时使用它。请使用积极的语言和偏好设置,而不是消极的语言(例如限制)。
“请勿将此工具用于天气查询。”
精心编写的说明应能体现出限制。
“此工具可以创建安排在特定日期和时间的日历活动。”
这种语言不是告诉模型做什么,而是描述工具可以采取的操作。
尽量减少认知计算
正如您应尽量降低人类完成复杂任务时的认知负荷一样,您也应尽量降低模型的认知计算量:
- 接受原始用户输入。避免要求代理执行数学运算或转换输入字符串。例如,如果用户说“11:00 至 15:00”,工具应将其视为字符串。避免要求模型计算这两个时间之间的分钟数。
- 为参数声明特定类型,例如字符串、数字或枚举。
- 说明您做出特定选择的原因。您所做的选择应能自行解释。“原因”有助于客服人员做出更明智的选择。例如,如果您经营的是电子商务商店,请使用自然语言声明配送类型,而不是使用含义模糊的 ID:
shipping="Express"而不是shipping_id=1。
优先考虑可靠性
智能体和人类都可以从行为符合预期的工具中受益:
- 为速率限制设置优雅失败。工具应允许合理的重复,例如用于价格比较。如果工具受到速率限制,请返回有意义的错误或建议用户手动执行任务。
- 在函数完成后更新界面状态。代理可能依赖于界面来规划后续步骤,而函数可能需要比界面加载更长的时间才能完成。代理应在界面更新后确认函数是否已完成,或再次请求更新。
- 在代码中严格验证,在架构中宽松验证。对于具有二元逻辑的函数和代码,应使用限制和测试。虽然架构限制可能很有用,但它们并非万无一失。请向函数代码添加描述性错误,以便模型能够自我更正并使用新的有效参数重试。
评估测试和调试
创建评估测试,并提供工具以供调试。与确定性单元测试不同,评估无法硬编码,因为输出可能会采用意想不到的形式。
- 明确问题。您可以像定义 API 协定一样定义问题,包括输入类型、输出格式和任何其他限制条件。
- 确定基准和理想结果。尤其是使用文本输入时,务必要了解哪些类型的结果可以为您带来预期的输出。
- 确定如何评估输出。您可能会根据输入质量、实用性和完成后续任务的能力来识别和衡量主观的定性结果。您可以使用多种技术来评估输出,包括基于代码的检查(针对基于规则的输出,例如字符数限制)和 LLM-as-a-judge。
避免添加过于具体的规则来修补特定模型的问题。例如,如果您添加了用于选择敬称的选择字段,模型可能会做出错误的选择。与其添加过于具体的规则来修补此问题,不如抽象并调整您的工具。最好的做法可能是将此字段设置为可选。然后,让代理询问用户哪种选择有意义,以确保用户对结果感到满意。
互动和分享反馈
WebMCP 正在积极讨论中,未来可能会发生变化。如果您尝试使用这些 API 并有反馈,我们非常欢迎您提供宝贵的意见。
- 阅读 WebMCP 说明,提出问题并参与讨论。
- 在 Chrome 状态中查看 Chrome 的实现情况。
- 加入抢先预览计划,抢先了解新 API 并加入我们的邮寄名单。
- 如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug。