以下代码基于JBolt AI库实现
1. 引入JBoltAI库
2. 将可用的大模型作为资源,引入
//一站式开通chatgpt账号并充值:https://wildcard.com.cn/i/CHATGPT
ResourceCenter.registerAI("id-chatgpt1", AIModel.CHATGPT_4, "ak-******")
//设置资源的代理服务
.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 19181)));
这里我们用chatgpt作为演示用。
JBolt AI支持引入多个大模型资源,并可设置频率限制,几乎所有商用大模型都有频率限制,比如每分钟请求数120,JBolt AI可以为资源同步频率限制,当资源使用达到上限,就会将资源暂时下线,切换到其他可用资源,等待限制时间达到后。开发者只需要将所有大模型资源注册即可,不需要操心什么时候可以用哪个。
3. 首先我们先提供几个意图选项,供大模型匹配。
@Test
public void testIntention() {
AIIntention[] AIAPP_INTENTIONS = new AIIntention[]{
AIIntention.of("user_search", "用户信息查询", "张三的手机号", "编号1001用户信息", "年龄小于18的用户有哪些"),
AIIntention.of("order_search", "订单信息查询", "202010018923订单成交金额","张三成交了哪些单"),
AIIntention.of("goods_search", "商品信息查询", "夏款男鞋有哪些", "200快以下的T恤", "A100这款鞋多少钱"),
};
}
4. 然后我们模拟用户提问,并由大模型进行用户意图识别,如果匹配到会返回我们设置的意图的key。
@Test
public void testIntention() {
AIIntention[] AIAPP_INTENTIONS = new AIIntention[]{
AIIntention.of("user_search", "用户账号相关信息查询", "张三的手机号", "编号1001账号信息", "年龄小于18的用户有哪些"),
AIIntention.of("order_search", "订单相关信息查询", "202010018923订单成交金额","张三成交了哪些单"),
AIIntention.of("goods_search", "商品相关信息查询", "夏款男鞋有哪些", "200快以下的T恤", "A100这款鞋多少钱"),
};
//提问1 你好
JBoltAI.recognizeIntention("你好", AIAPP_INTENTIONS)
.onSuccess((e, result) -> {
System.out.println("问题:你好, 意图识别结果:" + (result == AIIntention.NO_MATCH ? "未匹配到" : result.getKey()));
}).onFail((e, error) -> {
System.out.println(error.getFullMsg());
}).publish().await();
//提问2
JBoltAI.recognizeIntention("昵称周杰伦的号什么时候注册的?", AIAPP_INTENTIONS)
.onSuccess((e, result) -> {
System.out.println("问题:昵称周杰伦的号什么时候注册的?, 意图识别结果:" + (result == AIIntention.NO_MATCH ? "未匹配到" : result.getKey()));
}).onFail((e, error) -> {
System.out.println(error.getFullMsg());
}).publish().await();
//提问3
JBoltAI.recognizeIntention("20201001810523单子成交了吗", AIAPP_INTENTIONS)
.onSuccess((e, result) -> {
System.out.println("问题:20201001810523单子成交了吗, 意图识别结果:" + (result == AIIntention.NO_MATCH ? "未匹配到" : result.getKey()));
}).onFail((e, error) -> {
System.out.println(error.getFullMsg());
}).publish().await();
//提问4
JBoltAI.recognizeIntention("D4524这个外套现在优惠多少钱", AIAPP_INTENTIONS)
.onSuccess((e, result) -> {
System.out.println("问题:D4524这个外套现在优惠多少钱, 意图识别结果:" + (result == AIIntention.NO_MATCH ? "未匹配到" : result.getKey()));
}).onFail((e, error) -> {
System.out.println(error.getFullMsg());
}).publish().await();
}
5. 执行结果: