Scenario脚本化模拟教程:构建复杂的多轮对话测试场景
Scenario脚本化模拟教程构建复杂的多轮对话测试场景【免费下载链接】scenarioAgentic testing for agentic codebases项目地址: https://gitcode.com/gh_mirrors/scen/scenarioScenario是一款强大的Agentic测试工具专为测试Agentic代码库设计能够帮助开发者构建复杂的多轮对话测试场景确保AI代理在各种交互情境下的可靠性和稳定性。为什么需要脚本化模拟测试在AI代理开发过程中单一的功能测试往往无法覆盖真实世界中的复杂交互场景。多轮对话测试能够模拟用户与AI代理之间的自然交流过程发现潜在的逻辑漏洞、响应不一致等问题。Scenario提供了完整的脚本化模拟解决方案让开发者能够定义可控的多轮对话流程模拟各种用户行为和需求变化自动评估AI代理的响应质量集成到CI/CD流程中实现持续测试Scenario多轮对话测试场景概览展示了完整的测试流程和结果分析界面快速开始构建第一个脚本化场景环境准备首先克隆Scenario项目仓库git clone https://gitcode.com/gh_mirrors/scen/scenario基本场景结构每个Scenario测试场景都遵循以下基本模式支持Python和TypeScript两种语言# Python示例 result await scenario.run( namedescriptive test name, descriptiondetailed scenario context, agents[ YourAgent(), scenario.UserSimulatorAgent(), scenario.JudgeAgent(criteria[success criteria]) ], script[] # 可选的脚本步骤 ) assert result.success// TypeScript示例 const result await scenario.run({ name: descriptive test name, description: detailed scenario context, agents: [ yourAgent, scenario.userSimulatorAgent({ model: openai(gpt-4.1-mini) }), scenario.judgeAgent({ model: openai(gpt-4.1-mini), criteria: [success criteria] }), ], script: [], // 可选的脚本步骤 }); expect(result.success).toBe(true);场景定义核心要素编写有效的名称和描述名称应该简洁且具有描述性# 推荐的命名方式 nameweather query with location clarification namebooking cancellation with refund request nametechnical support escalation # 避免使用的通用名称 nametest 1 nameagent test namebasic scenario描述提供指导用户模拟器的上下文信息description User is planning a weekend trip and needs weather information. They initially ask about general weather but then want specific details about outdoor activities. They might be concerned about rain. Scenario代理测试金字塔展示了从单元测试到端到端测试的完整测试策略定义智能体角色Scenario场景中通常包含三种关键智能体被测代理你的AI代理实现用户模拟器模拟真实用户行为和输入判断代理评估对话质量和任务完成情况agents[ CustomerServiceAgent(), # 被测代理 scenario.UserSimulatorAgent(), # 用户模拟器 scenario.JudgeAgent(criteria[ # 判断代理 Agent asks for account information to look up the bill, Agent reviews the bill details with the customer, Agent explains any charges that seem unusual or high, Agent offers options if there was an error, Agent maintains a professional and helpful tone, Agent ensures customer understands before ending ]) ]构建多轮对话场景的高级技巧1. 使用脚本控制对话流程脚本功能允许你精确控制对话的初始步骤然后让AI代理自然接管script[ scenario.user(change my subscription), scenario.agent(Sure, Im going to upgrade you to the Pro plan... done!), scenario.user(what!? no I dont want to upgrade, I want to cancel), scenario.proceed() # 从这里开始让AI代理自然响应 ]2. 测试边缘情况和错误恢复能力Scenario特别适合测试AI代理的错误处理和恢复能力description Agent initially misunderstands users request and offers wrong solution. User corrects them. Agent should acknowledge the mistake and provide the right help. Scenario多轮对话模拟结果展示包含完整的对话历史和评估指标3. 信息收集与确认模式测试AI代理收集必要信息的能力description User needs technical support but doesnt know technical details. agents[ CustomerServiceAgent(), scenario.UserSimulatorAgent(), scenario.JudgeAgent(criteria[ Agent should ask for the users account number or email, Agent should ask what model is their router, ]) ]4. 处理模糊请求和需求变更测试AI代理处理模糊请求和需求变更的能力description User initially asks about product A but then changes their mind and asks about product B, then asks to compare both products. Theyre indecisive and might change requirements multiple times. 完整场景示例账单争议解决以下是一个完整的多轮对话测试场景示例展示了如何测试客户服务AI代理处理账单争议的能力pytest.mark.agent_test pytest.mark.asyncio async def test_customer_service_billing(): class CustomerServiceAgent(scenario.AgentAdapter): async def call(self, input: scenario.AgentInput) - scenario.AgentReturnTypes: return await customer_service_bot.process( messagesinput.messages, context{department: billing} ) result await scenario.run( namebilling dispute resolution, description Customer received a bill that seems higher than expected. Theyre not angry but are confused and want an explanation. They have their account information ready and are generally cooperative but need clear explanations. , agents[ CustomerServiceAgent(), scenario.UserSimulatorAgent(), scenario.JudgeAgent(criteria[ Agent asks for account information to look up the bill, Agent reviews the bill details with the customer, Agent explains any charges that seem unusual or high, Agent offers options if there was an error, Agent maintains a professional and helpful tone, Agent ensures customer understands before ending ]) ], max_turns8 # 此类交互的合理限制 ) assert result.success assert len(result.messages) 4 # 应该有实质性对话 assert account in str(result.messages).lower() # 应该讨论账户信息场景组织与管理为了更好地组织和跟踪测试场景Scenario提供了场景分组功能result await scenario.run( namemy first scenario, descriptionA simple test to see if the agent responds., set_idmy-test-suite, # 将此场景分组到测试套件中 agents[ scenario.Agent(my_agent), scenario.UserSimulatorAgent(), ] )Scenario测试场景组织界面展示如何将相关场景分组管理下一步学习掌握了基本的脚本化模拟场景构建后可以探索更多高级技术Scripted Simulations - 控制对话流程Cache - 使测试具有确定性和更快的速度Debug Mode - 交互式调试场景通过Scenario的脚本化模拟测试你可以确保AI代理在各种复杂的多轮对话场景中表现稳定提供一致且高质量的用户体验。开始构建你的第一个测试场景提升AI代理的可靠性和健壮性吧【免费下载链接】scenarioAgentic testing for agentic codebases项目地址: https://gitcode.com/gh_mirrors/scen/scenario创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

错过这期追踪,可能耽误下一代AI产品定位——2024下半年最危险的5个竞品技术拐点(含时间节点+影响等级+应对窗口期)

错过这期追踪,可能耽误下一代AI产品定位——2024下半年最危险的5个竞品技术拐点(含时间节点+影响等级+应对窗口期)

更多请点击: https://intelliparadigm.com 第一章:错过这期追踪,可能耽误下一代AI产品定位——2024下半年最危险的5个竞品技术拐点(含时间节点影响等级应对窗口期) AI产品战略窗口正以毫秒级速度收窄。2024年Q3起&…

2026/10/3 5:58:15 阅读更多 →
MRIcroGL:免费开源的医学影像三维可视化神器,5分钟上手教程

MRIcroGL:免费开源的医学影像三维可视化神器,5分钟上手教程

MRIcroGL:免费开源的医学影像三维可视化神器,5分钟上手教程 【免费下载链接】MRIcroGL v1.2 GLSL volume rendering. Able to view NIfTI, DICOM, MGH, MHD, NRRD, AFNI format images. 项目地址: https://gitcode.com/gh_mirrors/mr/MRIcroGL MR…

2026/10/6 5:24:47 阅读更多 →
模糊自适应PID控制器设计:原理、实现与工程调试指南

模糊自适应PID控制器设计:原理、实现与工程调试指南

1. 项目概述:从经典PID到模糊控制的融合之路“PID模糊控制设计”,这个标题一出来,很多搞自动控制的朋友可能眼睛就亮了。它指向的不是一个全新的领域,而是两个经典控制思想的碰撞与融合。我干了十几年工业自动化,从PLC…

2026/10/2 22:28:05 阅读更多 →

最新新闻

ERNIE情感分析实战:从句子级到属性级微调全流程

ERNIE情感分析实战:从句子级到属性级微调全流程

简介:基于Python与预训练大模型ERNIE的情感分析项目源码及配套数据集,完整覆盖句子级与属性级两类情感分析任务,面向自然语言处理学习者、算法工程师以及有实际情感分析需求的开发者。项目从数据预处理、加载ERNIE模型、特征提取,…

2026/10/7 13:27:25 阅读更多 →
知识库向量数据库怎么选?我折腾了一圈,答案就三个字

知识库向量数据库怎么选?我折腾了一圈,答案就三个字

事情是这样的。上一篇文章聊完三层检索策略之后,我盯着终端里的 docker ps 出神——里面躺着一个 Qdrant 容器,跑了快一个月,CPU 占用稳如老狗,但我一次查询都没往它那边发。因为我发现我的 Chroma 跑得好好的。240 篇文章&#x…

2026/10/7 13:27:25 阅读更多 →
网络搭建及应用赛项备赛指南:视频讲解与答案的实战用法

网络搭建及应用赛项备赛指南:视频讲解与答案的实战用法

简介:面向全国职业院校技能大赛《网络搭建及应用》赛项的备赛者与指导教师,这份资料完整整理了2021年赛题的视频讲解、操作录屏与参考答案。压缩包共60个文件,以38个txt配置记录、11个docx报告与分解笔记、8个Python脚本、2个PDF说明及1个mp4…

2026/10/7 13:27:25 阅读更多 →
AI应用层全面爆发:从AI Agent到行业落地的开源项目实战解析

AI应用层全面爆发:从AI Agent到行业落地的开源项目实战解析

从9月22日到28日这周的榜单,我几乎是每天刷好几遍,越到周末越发现一个明显的变化:真正的应用型AI项目开始大面积占据头部位置,那种“包装一个API就跑分”的仓库热度明显降了,取而代之的是能解决具体行业问题、能部署到…

2026/10/7 13:27:25 阅读更多 →
基于Java的汽车销售管理系统课程设计:从数据库设计到答辩避坑指南

基于Java的汽车销售管理系统课程设计:从数据库设计到答辩避坑指南

简介:这是一份面向汽车销售企业的Java后台管理方案,聚焦车辆管理员与销售人员的协同流程,不面向购车端。系统覆盖车辆属性管理、合同签订、订单记录、保险与上牌办理、费用结算(全款/分期)、定金与交付期限等业务规则&…

2026/10/7 13:27:25 阅读更多 →
UFS3.1协议详解:传输层UPIU报文格式与调试实战

UFS3.1协议详解:传输层UPIU报文格式与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:26:24 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →