智能-BI项目分享

加入星球快三个月了,确实学到了挺多新东西,做完了智能-BI项目和oj-在线判题系统项目,都做了一些扩展和自己的实现,今天先跟大家分享一下智能-BI项目。

在学习之前,就觉得这个项目很有趣,结合了当下热门的AI智能问答;我学习这个项目的时候,鱼聪明已经没有免费的会员赠送了,所以当时每天的额度不够用,我就想着另辟蹊径,调研了一下国内的AI大模型,最后选择了科大讯飞的星火大模型,不但免费赠送一年的使用额度还有很多的扩展。

但是当我使用星火大模型的api时又遇到一个问题,因为它是继承WebSocketListener来实现的,没有封装好能够直接调用的api,获取信息都是在重写onMessage()方法中拿到的,当时我就想到了在之前项目使用过的Redis分布式锁;我在调用类中创建一个阻塞获取最终结果的方法,当ai将所有结果都返回后,就向Redis中写入一条信息,获取结果的方法就不断轮询查Redis,拿到信息就返回。

// 等待服务端返回完毕后关闭
while (true) {
Thread.sleep(200);
if (wsCloseFlag) {
break;
}
}
//ai数据生成完毕哦,向redis写入键
RBucket<String> bucket = redissonClient.getBucket("complete" + questionId);
bucket.set("true");

轮询等待

public String getReturn() {
// 创建一个新的线程
sleepThread = new Thread(() -> {
try {
//循环等待ai生成完毕
int times = 0;//现在循环次数
while (true) {
if (times > 90)
break;
Thread.sleep(2000);
RBucket<String> bucket = redissonClient.getBucket("complete" + questionId);
String res = bucket.get();
if (Objects.equals(res, "true")) {
bucket.delete();//取完就删除
break;
}
times++;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.err.println("Sleep thread finished");
});


我对这个项目增加了扩展:用户上传一张图片和分析要求,给出图片的分析结果;上传一张图片分析出图片中的文字信息。

项目图片展示:

源码地址:https://github.com/lxiaonan

喜欢可以点个star,谢谢

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP