“一个Agent运行不是一个回答字符串,而是一个包含多个边界的小型应用流。”微软Agent框架系列文章的作者在最新一篇博客中写道。他提出,测试这类应用时,最常见的方式——直接向真实模型发送端到端提示——其实是把用户输入、提示词、模型请求、工具选择、执行和最终答案这些边界全部混在了一起。等到测试失败,你根本分不清问题出在提示词、模型本身、工具模式还是背后的依赖服务上。
作者给出的解法,不是假设大语言模型是确定性的,而是在每一层边界上进行确定性测试,再补充少量评估式的检查,来覆盖那些真正依赖模型的行为。他为此构建了一个“测试金字塔”:底层是确定性组件测试,使用假模型客户端、工具和路由,不用连接Azure OpenAI或其他提供商;中间层是集成测试,验证智能体、工具、存储和工作流之间的配合;顶层才是评估式测试,例如判断回答是否可用、路线是否合适、摘要是否保留关键事实等。
其中最关键的测试切入点,就是将模型调用隐藏在IChatClient接口后面。微软Agent框架基于Microsoft.Extensions.AI抽象构建,支持在生产环境中注入真正的模型客户端,在测试中则注入一个脚本化的假客户端。这个假客户端不需要模拟概率分布或语义行为,只需返回预先设定的响应,就能隔离外部依赖,让路由、工具调用和结构化输出这些逻辑接受常规单元测试的检验。
按照这套方法,作者用xUnit风格的断言演示了假模型客户端测试、工具契约测试、结构化输出测试、路由测试和工作流测试的写法。他强调,虽然真实模型测试仍有价值,但它昂贵、缓慢、偶尔不稳定且难以诊断,不应该成为单元测试和集成测试的替代品。把大部分常规错误拦截在无需联网的确定性测试层,再让少量评估式测试去应对那些模糊的需求和对话策略,这才是更稳健的策略。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.