您构建了一个配方。提示看起来没问题。您用一个手工制作的输入运行了一次,输出看起来不错。是时候部署了?
别急。一个输入不是一个测试套件。配方可能完美处理您精心编写的示例,但在真实用户发送的混乱、不完整、矛盾的输入面前崩溃。不经过系统测试就部署是一种赌博——大多数团队直到生产环境出问题才意识到概率有多大。
测试我的配方消除了猜测。生成真实的输入,对每个输入执行配方,在您做任何承诺之前观看结果流入。
手动测试的问题
大多数团队以同样的方式测试配方:输入一个内容,点击运行,阅读输出,重复。这种方法有三个问题。
**速度慢。**手动输入内容、等待每个结果、在脑中评估质量,每次测试需要几分钟。测试 20 个变体需要一个小时——您没有那么多时间。
**有偏见。**您基于自己认为用户会发送什么来编写输入。您对输入分布的心理模型是错误的——总是如此。真实输入包括拼写错误、缺失字段、矛盾的指令,以及您从未想象过的边缘情况。
**不可重复。**没有记录您测试了什么、结果是什么,或者配方在上次提示编辑后是否有所改善。每个测试周期从零开始。
生成真实的输入
在任何配方的详细页面上点击测试配方按钮,JieGou 会为您生成合成测试输入。生成过程使用配方的输入模式——字段名称、类型、描述以及您提供的任何示例——来产生 N 个真实的变体(可配置,从 5 到 50)。
生成的输入不是随机噪声。它们覆盖了真实的频谱:格式良好的输入、信息最少的边缘情况、有冲突要求的输入,以及推动配方设计边界的输入。可以将其想象成一个自动化的 QA 工程师,阅读您配方的规格并编写测试用例。
您可以在执行开始前审查生成的输入。删除任何不相关的,编辑其他以针对特定场景,或将您自己的自定义输入添加到集合中。目标是一个反映现实的测试套件,而不是一个合成练习。
使用 NDJSON 的实时流式传输
一旦您启动测试运行,JieGou 对每个输入依次执行配方。结果通过 NDJSON(换行符分隔的 JSON)实时流回您的浏览器——每行是一个完整的 JSON 对象,代表一个事件。
TestMyRecipeModal 经历四个阶段:
- 空闲 —— 准备配置和启动
- 生成中 —— 正在创建合成输入
- 运行中 —— 正在对每个输入执行配方,结果流入中
- 完成 —— 所有测试完成,摘要可用
在运行阶段,您会看到结果一个接一个地到达。无需等待整个批次完成。没有旋转图标将所有进度隐藏在单一的加载状态后面。每个结果在其执行完成后立即出现,因此您可以在后续测试仍在运行时开始阅读输出。
这对于运行时间较长的配方很重要。如果您的配方调用外部 API 或处理冗长的文档,单个执行可能需要 10-30 秒。没有流式传输,测试 20 个输入意味着盯着旋转图标看几分钟。有了 NDJSON 流式传输,您在几秒内就能审查第一个结果。
阅读结果
当测试运行完成时,结果视图提供两个层次的细节。
摘要统计一目了然地展示全局:总测试数、成功数、失败数、平均执行时间和平均 token 使用量。如果 20 个测试中有 18 个成功但 2 个失败,您立即知道配方有需要解决的缺口。
逐测试折叠面板让您深入每个单独的执行。展开任何测试可以看到发送的输入、返回的完整输出、执行时间、token 数量和任何错误消息。输入和输出的并排比较使判断配方是否理解了请求并产生了有用结果变得容易。
这种组合的工作方式与代码测试套件相同:摘要告诉您是否有问题,细节告诉您问题是什么以及在哪里。
审计追踪集成
每次测试运行都作为 recipe.tested 审计操作记录。审计记录捕获谁运行了测试、何时、测试了哪个配方、生成了多少输入,以及成功/失败的分布。
这有两个目的。首先,它为有合规要求的团队创建了问责追踪——您可以证明配方在部署前经过了测试。其次,它为您提供了测试活动的历史记录。当配方开始在生产环境中出现异常行为时,您可以检查审计日志,查看它上次测试的时间和结果。
审计记录与其他系统活动一起显示在运营中心,因此测试与执行、审批和配置更改具有相同的运营可见性。
为什么这对生产信心很重要
“我试了它有效”和”它在大规模下可靠运行”之间的差距是大多数 AI 自动化失败发生的地方。配方可能完美处理 90% 的输入,但对其余 10% 产生无意义的输出。如果没有系统测试,那 10% 的失败率只有在真实用户遇到后才变得可见。
测试我的配方通过使在每次部署前运行有意义的测试套件变得快速而简单来弥合这一差距。生成输入、观看结果流入、审查摘要、修复问题,然后再次测试。整个周期只需几分钟,而不是几个小时。
结合用于持续监控的 Quality Guard 和用于提示比较的 bakeoffs,测试我的配方完善了质量生命周期:部署前测试、实验时比较、发布后监控。
测试我的配方在所有计划中可用。立即试用。