微信扫码
添加专属顾问
我要投稿
用智能体测试智能体,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));//异步发给seventBus
ResponseUtils.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);
});
//模拟方都为 0
vertx.eventBus().consumer("chat_to_0").handler(eventBusHandler::handler0);
//业务方都为 1
vertx.eventBus().consumer("chat_to_1").handler(eventBusHandler::handler1);
测试智能体的提示词结构如下:
我们正在XXXXXX场景,由你(AI)扮演用户,你是用户,请牢记你是用户,我负责扮演XXXXX。工作人员(我)每次都回复了查询选项。但根据系统设定,当用户发送"开始扮演"时,你应该以用户身份提出具体查询请求。
回顾规则:
你扮演用户,每次对话只返回一句话的查询
查询范围限于:
1.xxxxxx
2.xxxxxx
3.xxxxxxx
4.xxxxxxxxxxx
某某:是yyy,nnn(业务需要的参数)
使用自然口语,对以上范围进行润色
上次你作为用户说了"查询我的余额",现在我回复了余额查询的进展或数据。根据角色设定,你仍需以用户身份继续提出查询请求。
用自然口语表达,不要用引号,一句话进行表达,不需要额外的场景,不需要额外的解释!
然后通过AI简单的生成一个html页面,再通过SSE,同步去还原会话,就能查看测试结果了!
这是一个不太成熟的DEMO,验证了一下自己的想法!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-17
万字演讲:Dify 插件如何助力 AI Agent 应用开发?
2025-06-17
dify 1.4.3版本深度解析:全面优化与功能增强指南
2025-06-17
不止聊天!打造你的专属AI工作流,群晖Dify最新部署攻略
2025-06-15
dify自定义插件
2025-06-13
如何利用Dify实现问答系统的高效内容审查?含源码解析与实战优化指南
2025-06-13
dify 1.4.2 版本深度解析:性能飞跃、功能革新与稳定性全面升级,打造企业级AI开发新标杆
2025-06-11
就在刚刚,Dify发布了V1.4.2版本,包含了安全更新,让我们一起来看看吧!
2025-06-10
深入调研Dify,本地搭建实战案例
2025-03-25
2025-04-05
2025-04-02
2025-04-04
2025-03-31
2025-03-29
2025-04-01
2025-03-28
2025-03-26
2025-04-03
2025-06-17
2025-05-29
2025-05-28
2025-05-22
2025-04-27
2025-04-15
2025-03-20
2024-12-19