基于Spring RSocket体验ChatGPT大模型

434 阅读2分钟

本文正在参加 人工智能创作者扶持计划

什么是 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/…