微信扫码
添加专属顾问
我要投稿
用智能体测试智能体,DIFY实战案例展示AI自我进化的可能性!核心内容: 1. 智能体互测的创新理念与实现原理 2. DIFY平台构建双智能体测试环境的技术细节 3. Java Vert.x框架在高效交互中的关键作用
就像讲述“计算机科学之父”、“人工智能之父”图灵一生的《模仿游戏》的故事一样,打败机器的一定是另一个机器!
破解德军恩尼格玛密码机的是图灵设计的计算机的雏形-'炸弹'破译机
打败AlphaGo的是AlphaGo Zero,它不依赖人类棋谱就击败了前代AI,完美诠释了“机器打败机器
大胆的想法
我有一个大胆的想法,设计出来的智能体再投产之前,免不了要进行测试,按照过去的软件测试方式,确定的“输入”得到确定的“输出”!但是,当所有的逻辑和交互都在一个聊天框后,对于用户的输入就不在特定!
那么为什么不用智能体来测试智能体呢!让两个智能体左右互搏!
测试大哥!浑身一颤!
付诸实践
以dify为例,我做了两个个查询用户账户余额和发起转账的的chatflow,那么,我就建立两个,模拟查询和模拟转账的用户的智能体,让他们左右互搏,直到到达多少轮或者达到特定的节点就停止即可!
实现上并不复杂!在两个智能体之间,做一个撮合即可!我使用Java完成!
找到apikey,通过HTTP接口访问智能体
$.ajax({url: 'http://localhost:8888/api/v1/agent2agent',type: 'POST',contentType: 'application/json',data: JSON.stringify({querys: "开始扮演",action: action,loop:10 //对话上限10轮}),timeout: 5000, // 5秒超时success: function(response) {if (response.data) {localStorage.setItem('pingId', response.data.pingId);console.log(this);slef.loadHistory();}},});
后端使用Java的Vert.x框架,是Java中,性能最爆炸的框架!
(如果想了解请移步我的另一篇文章:
Java高性能开发工具/框架-Vert.x与Spring
)
public CompositeFuture chatToAgent(RoutingContext rc) {final QueryParam param = rc.body().asJsonObject().mapTo(QueryParam.class);Future<JsonObject> sourceFuture = service.selectByType("0",param.getAction()).map(m -> buildJson(m,param));Future<JsonObject> targetFuture = service.selectByType("1",param.getAction()).map(m -> buildJson(m,param));return CompositeFuture.all(sourceFuture, targetFuture).onComplete(ar -> {if (ar.succeeded()) {// 所有的Future都成功完成JsonObject result1 = ar.result().resultAt(0);JsonObject result2 = ar.result().resultAt(1);EvevtParam build = EvevtParam.builder().source(result1).target(result2).loop(param.getLoop()).pingId(IdUtil.fastSimpleUUID()).build();sendEventBusMessage( JsonObject.mapFrom(build));//异步发给seventBusResponseUtils.buildOkResponse(rc,new Result<EvevtParam>().ok(build));} else {// 至少有一个Future失败了Throwable cause = ar.cause();ResponseUtils.buildErrorResponse(rc, cause);} }).onFailure(cause -> {// 错误统一处理ResponseUtils.buildErrorResponse(rc, cause);});
测试机的智能体收到指令后,按提示词开始角色扮演!
测试智能体的answer就是目标机的query
目标机的answer也是测试机的query
vertx.eventBus().consumer("chat_to_dify").handler(message ->{eventBusHandler.handlerStart(message);});//模拟方都为 0vertx.eventBus().consumer("chat_to_0").handler(eventBusHandler::handler0);//业务方都为 1vertx.eventBus().consumer("chat_to_1").handler(eventBusHandler::handler1);
测试智能体的提示词结构如下:
我们正在XXXXXX场景,由你(AI)扮演用户,你是用户,请牢记你是用户,我负责扮演XXXXX。工作人员(我)每次都回复了查询选项。但根据系统设定,当用户发送"开始扮演"时,你应该以用户身份提出具体查询请求。回顾规则:你扮演用户,每次对话只返回一句话的查询查询范围限于:1.xxxxxx2.xxxxxx3.xxxxxxx4.xxxxxxxxxxx某某:是yyy,nnn(业务需要的参数)使用自然口语,对以上范围进行润色上次你作为用户说了"查询我的余额",现在我回复了余额查询的进展或数据。根据角色设定,你仍需以用户身份继续提出查询请求。用自然口语表达,不要用引号,一句话进行表达,不需要额外的场景,不需要额外的解释!
然后通过AI简单的生成一个html页面,再通过SSE,同步去还原会话,就能查看测试结果了!
这是一个不太成熟的DEMO,验证了一下自己的想法!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-30
Dify流程暂停与人工干预:3种实现方案+避坑指南
2025-10-16
告别升级噩梦:Dify 二次开发的无缝适配策略与实战案例(基于 v1.9.1)
2025-10-13
用Dify搭建企业知识库:5个实战技巧提升检索准确率90%
2025-10-13
Dify接口调用实战指南:从入门到精通的避坑手册,收藏了!
2025-10-12
Dify1.6.0升级1.9.1步骤及踩坑记
2025-10-10
用 Dify 零代码搭建 AI 用研助理,5分钟完成100个虚拟用户调研
2025-09-30
重大消息,刚刚Dify 1.9.1发布了!我们聊聊带来了哪些吸引人的功能特性?
2025-09-26
内网环境下Dify1.9.0版本镜像构建过程记录
2025-10-13
2025-09-03
2025-09-16
2025-09-06
2025-08-19
2025-09-23
2025-09-02
2025-08-18
2025-09-04
2025-10-12
2025-09-30
2025-09-23
2025-09-06
2025-09-05
2025-08-29
2025-08-18
2025-08-02
2025-07-30