元数据为何重要
ChatGPT 和 Codex 根据您提供的元数据决定何时调用您的工具。精心编写的名称、描述和参数文档可以提高相关提示的召回率,减少误触发。请像打磨产品文案一样打磨元数据,对其进行迭代、测试和分析。
收集一组标准提示
在调整元数据之前,请先整理一个带标注的数据集:
- 直接提示: 用户明确提及您的产品或数据源。
- 间接提示: 用户描述期望的结果,但不提及您的工具。
- 负例提示: 应由内置工具或其他工具处理请求的情况。
记录每条提示的预期行为(调用您的工具、不执行任何操作或使用替代方案)。您将在回归测试中重复使用这组提示。
编写能引导模型的元数据
对于每个工具:
- 名称: 将业务领域与操作结合起来(
calendar.create_event)。 - 描述: 以“在……时使用此工具”开头,并明确指出不允许使用的情况(“不要用于设置提醒”)。
- 参数文档: 描述每个参数,提供示例,并为受约束的输入使用允许的值。
- 只读提示: 对于仅检索或计算信息的工具,
如果它们从不在对话之外创建、更新、删除或发送数据,
请标注
readOnlyHint: true。 - 破坏性提示: 对于不会删除或覆盖用户数据的工具,
请标注
destructiveHint: false。 - 开放世界提示: 当工具访问公共互联网或范围不受限定的外部实体时,
请标注
openWorldHint: true,这也包括网页搜索等只读工具。 对于仅限于特定私有账户或工作空间的工具,请使用false, 即使该服务托管在外部也不例外。
在开发者模式中进行评估
- 在 ChatGPT 中,从 设置 → 安全与登录开启开发者模式, 然后前往ChatGPT 插件 注册您的 MCP 服务器。
- 逐一运行标准提示集中的提示,并记录结果:选择了哪个工具、传入了哪些参数,以及组件是否成功渲染。
- 针对每条提示,跟踪精确率(是否运行了正确的工具?)和召回率(工具是否在应当运行时运行了?)。
如果模型选错了工具,请修改描述,突出预期使用场景,或缩小工具的适用范围。
有条理地迭代
- 每次只修改一个元数据字段,以便确定是哪项修改带来了改进。
- 保留修订日志,记录时间戳和测试结果。
- 将差异分享给审查者,以便在部署前发现含义不清的文案。
每次修订后都要重新评估。先争取在负例提示上达到较高的精确率,再追求召回率的小幅提升。
生产环境监控
您的 MCP 服务器上线后:
- 每周查看工具调用分析数据。确认为“工具选择错误”的次数激增,通常意味着元数据发生了漂移。
- 收集用户反馈,并更新描述以澄清常见误解。
- 安排定期重放提示,尤其是在添加新工具或更改结构化字段之后。
将元数据视为需要持续维护的资产。措辞和评估越用心,工具就越容易被发现和调用。