Hey,亲爱的小伙伴们!在上一篇关于用Java开始AI大模型应用开发的文章中,我们初步了解了JBoltAI框架的优势和开发流程。今天,我将为大家带来更详细的代码示例,帮助大家更直观地感受如何使用JBoltAI框架进行开发。
- 引入JBoltAI依赖
在使用JBoltAI框架之前,我们需要在项目的pom.xml文件中引入其依赖。以下是一个示例:
<dependency>
<groupId>com.jbolt</groupId>
<artifactId>jbolt-ai-core</artifactId>
<version>1.0.0</version>
</dependency>
- 注册大模型资源
JBoltAI支持多种大模型的接入,我们可以通过ResourceCenter类来注册大模型资源。以下是一个注册ChatGPT模型的示例:
import com.jbolt.ai.core.resource.ResourceCenter;
import com.jbolt.ai.core.model.AIModel;
public class Main {
public static void main(String[] args) {
// 注册ChatGPT模型资源
ResourceCenter.registerAI("chatgpt", AIModel.CHATGPT_35, "your_api_key")
.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 19181)));
}
}
- 调用聊天接口
JBoltAI提供了简单易用的聊天接口,我们可以使用JBoltAI.chat()方法来调用大模型进行聊天。以下是一个示例:
import com.jbolt.ai.core.event.AIChatEvent;
import com.jbolt.ai.core.model.AIModel;
public class ChatExample {
public static void main(String[] args) {
// 调用ChatGPT模型进行聊天
AIChatEvent chatEvent = JBoltAI.chat()
.setModelName("chatgpt") // 设置使用的模型
.prompt("你好,你能帮我介绍一下JBoltAI框架吗?") // 设置聊天内容
.setStream(false) // 设置是否流式响应
.onSuccess((event, msg) -> {
System.out.println("大模型返回了:" + msg.getContent());
}) // 设置成功回调
.onFail((event, error) -> {
System.out.println("发生异常:" + error.getMsg());
}); // 设置失败回调
// 发布事件
chatEvent.publish().await();
}
}
- 实现复杂的业务流程
JBoltAI还支持通过事件链来实现复杂的业务流程。以下是一个示例,模拟用户提问并根据提问内容生成数据库查询语句:
import com.jbolt.ai.core.chain.EventChainNode;
import com.jbolt.ai.core.chain.BooleanChainNode;
import com.jbolt.ai.core.event.AIChatEvent;
import com.jbolt.ai.core.model.AIModel;
public class BusinessProcessExample {
public static void main(String[] args) {
// 模拟用户提问
String userQuestion = "张三下了几个单?";
// 创建一个提问的节点
EventChainNode askNode = new EventChainNode(chain -> {
AIChatEvent askEvent = JBoltAI.chat()
.setModelName("chatgpt")
.prompt("请判断用户的提问是否和订单查询有关,如果有关,请直接返回true,无关直接返回false。\n" +
"以下是用户的提问:`{}`", userQuestion)
.onSuccess((e, msg) -> {
System.out.println("大模型返回了:" + msg.getContent());
chain.setData("isOrderSearch", msg.getContent());
})
.onFail((e, error) -> {
System.out.println(error.getMsg());
});
return askEvent;
});
// 创建一个判断节点
BooleanChainNode judgeNode = new BooleanChainNode(chain -> {
String isOrderSearch = chain.getData("isOrderSearch");
boolean result = StrUtil.contains(isOrderSearch, "true");
System.out.println("判断是否是和订单查询有关:" + result);
return result;
});
// 创建一个提取关键词的节点
EventChainNode sqlNode = new EventChainNode(chain -> {
AIChatEvent sqlEvent = JBoltAI.chat()
.setModelName("chatgpt")
.prompt("请根据用户的提问,生成一个mysql数据库的订单查询语句,然后请直接输出语句,不要输出其他说明性文字。订单表的结构为:\n" +
"CREATE TABLE `order` (\n" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\n" +
" `userName` varchar(40) COMMENT '用户名',\n" +
" `sn` varchar(40) COMMENT '订单号',\n" +
" PRIMARY KEY (`id`)\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n" +
"以下是用户的提问:`{}`", userQuestion)
.onSuccess((e, msg) -> {
System.out.println("大模型生成的查询语句:" + msg.getContent());
chain.setData("searchSql", msg.getContent());
})
.onFail((e, error) -> {
System.out.println(error.getMsg());
});
return sqlEvent;
}).addPrevWhenTrue(judgeNode);
// 构建并运行链条
EventChainNode root = new EventChainNode();
root.addNext(askNode).addNext(judgeNode).addNext(sqlNode);
root.run();
}
}
- 总结
通过以上代码示例,我们可以看到通过java语言使用JBoltAI框架在AI大模型应用开发中的强大功能和便捷性。从简单的聊天接口调用到复杂的业务流程实现,JBoltAI都提供了丰富的工具和组件,帮助我们快速构建高质量的AI应用。如果你对JBoltAI感兴趣,不妨动手尝试一下,相信你会爱上这个框架的!