项目介绍:chatgpt-stream
chatgpt-stream 是一个旨在通过最简单的Java流式返回接入方式,实现OpenAI功能的项目。只需使用Spring Boot即可,无需第三方依赖,使得将其集成到业务系统变得简单易行。通过这个项目,用户能够轻松构建一个带有聊天记忆、画图功能的ChatGPT应用,并支持代码块高亮和Markdown语法展示。支持的模型包括gpt-3.5-turbo和gpt-4。
GitHub仓库:点击访问
项目特点
- 无第三方依赖:只需Spring Boot环境即可运行。
- 流式返回:使用SSE技术,确保数据返回的流畅性。
- 聊天记忆:能够记住之前的聊天内容,提供上下文相关的回复。
- 画图功能:支持生成图像。
- 代码块高亮与Markdown支持:在聊天界面中高亮显示代码块和渲染Markdown格式内容。
运行效果展示
该项目并不专注于前端设计,因此视觉表现可能比较简单。以下为系统运行时的部分截图展示:
发展时间线
- 2023-06-16:优化系统健壮性和数据返回标准化,同时提升SSE接口异常处理,增加HTML方式的POST请求支持。
- 2023-04-02:更新为使用Vue渲染界面,增强代码块高亮以及Markdown表格展示功能。
- 2023-04-01:改善界面样式,修复聊天记忆的Bug。
- 2023-03-29:通过Netty提高系统并发处理能力。
- 2023-03-23(下午):增加聊天记忆和画图功能。
- 2023-03-23(上午):发布第一版简单的Demo版本,代码存于
original-simplicity
分支。
配置方法
项目需要OpenAI的API密钥来正常运行,可在application.yaml
中进行配置:
openai:
key-list:
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 你的key列表 默认是轮询使用
- xxxxx
申请API密钥:OpenAI申请地址
解决中国大陆访问问题
-
使用VPN代理:项目支持通过代理访问,请配置
OpenAiWebClient.java
中的代理IP和端口。HttpClient httpClient = HttpClient.create() .secure(sslContextSpec -> sslContextSpec.sslContext(finalSslContext)) .tcpConfiguration(tcpClient -> tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host("127.0.0.1").port(7890)));
-
部署至海外服务器:直接在海外服务器上部署,取消测试环境配置。
env: test
启动方法
启动项目后,通过访问 http://127.0.0.1:8080/
即可使用应用。
业务系统集成
项目提供了接口扩展的可能,用户可以实现以下接口以接入自身的业务系统:
public interface CompletedCallBack {
/**
* 成功完成回调用
*/
void completed(Message questions, String sessionId, String response);
/**
* 失败回调
*/
void fail(Message questions, String sessionId, String response);
}
后续功能计划
当前实现的功能包括流式返回、聊天记忆与图片接入。后续计划根据需求进行扩展和优化。
交流与反馈
用户可以通过提交Issue或PR的方式参与讨论和贡献代码。如果项目对您有所帮助,欢迎Star支持,谢谢!