以下代码基于JBolt AI库实现
1. 引入JBoltAI库
2. 将可用的大模型作为资源,引入
ResourceCenter.registerAI("id_123", AIModel.BAI_CHUAN,"ak_xxxxxx");
以上代码就是接入了一个百川大模型的资源。
JBoltAI 还支持 OpenAI、文心、通义千问、Ollama、DeepSeek、Moonshot等多个大模型的接入。
3. 调用聊天接口
JBoltAI.chat().prompt("李白是哪个朝代的诗人?")
.setStream(true)
.onSuccess((e,msg) -> {
System.out.println("接收到:" + msg.getContent());
}).onFail((event, error) -> {
System.out.println("发生异常:" + error.getMsg());
}).publish();
Thread.sleep(5000);
System.out.println("结束");
以上代码就是以异步的方式,向大模型发起一个提问,并要求大模型以流式进行响应。
控制台输入的结果如下图
在流式响应模式下,大模型每成功响应一次,onSuccess回调就会执行一次。
如果大模型的响应报错了,那么整个过程就会结束,触发onFail回调
4. 如果希望以同步阻塞的方式调用聊天,并要求大模型一次性返回所有内容,可以按以下代码实现
JBoltAI.chat().prompt("李白是哪个朝代的诗人?")
.setStream(false)
.onSuccess((e,msg) -> {
System.out.println("接收到:" + msg.getContent());
}).onFail((event, error) -> {
System.out.println("发生异常:" + error.getMsg());
}).publish().await();
System.out.println("同步调用完成-标识结束");
控制台输入如下:
异步模式下,chat是在一个单独的调度线程中执行的,所以如果想在当前线程中等待chat结束,可以调用await()阻塞当前线程。