本文正在参加 人工智能创作者扶持计划
什么是 ChatGPT
ChatGPT[1] 是美国人工智能研究实验室 OpenAI 开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列任务。
什么是 RSocket
RSocket 是一个新的、语言无关的第七层应用网络协议。它是一个双向、多路复用、基于消息、基于反应流背压的二进制协议。
和传统网络编程模型 HTTP 的 Request/Response 方式不同。RSocket 除了 Request/Response 方式之外,还支持 Fire And Forget(发送不回)、Stream(单向流)、Channel(双向流)。
“
关于 RSocket 使用可参考笔者此文章: RSocket | 替代 REST 的不二选择
搭建项目
1. 引入依赖
chatgpt-spring-boot-starter 是一个基于 openai-api 的启动器,与 Springboot 集成轻松调用 ChatGPT。它集成了官方 api,而非其他开源项目劫取 auth-session 的做法,所以非常稳定。
<!-- chatgpt 调用封装: https://github.com/flashvayne/chatgpt-spring-boot-starter -->
<dependency>
<groupId>com.pig4cloud.plugin</groupId>
<artifactId>chatgpt-spring-boot-starter</artifactId>
<version>0.0.1</version>
</dependency>
<!-- rsocket 依赖,可选-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-rsocket</artifactId>
</dependency>
2. 申请 ChatGpt Api Keys
访问: platform.openai.com/account/api…]
3. 配置调用参数
- application.properties
chatgpt.api-key=XXX
# 需要rscoket 交互就配置端口
spring.rsocket.server.port=18090
调用测试
- 通过 rsc 客户端[3],我们可以非常方便的调试 RSocket (可以理解成 http postman 工具)
./rsc tcp://localhost:18090 -r chat -d - --channel
高级用法
- 在任何你想用的地方注入 Bean ChatgptService[4],然后调用它的方法给 ChatGPT 发消息并获得回复
@Autowired
private ChatgptService chatgptService;
public void test(){
String responseMessage = chatgptService.sendMessage("how are you");
System.out.print(responseMessage);
}
- ChatgptService 的两个方法:
String sendMessage(String message); //方法直接返回chatgpt的消息。
ChatResponse sendChatRequest(ChatRequest request); //方法可自定义完整的请求参数和接收完整的api返回信息。
这个 Bean 是@ConditionalOnMissingBean(ChatgptService.class)条件注入的,如有需要可自定义 ChatgptService,重写接口的相关方法覆盖掉默认的实现 DefaultChatgptService。
特别说明
“
以上工具包使用,请在网络允许范围内使用!
参考资料
[1]
ChatGPT: ai.com
[2]
platform.openai.com/account/api…: platform.openai.com/account/api…
[3]
rsc 客户端: github.com/making/rsc/…
[4]
Bean ChatgptService: github.com/flashvayne/…