ChatGPT-Stream项目简介
ChatGPT-Stream是一个基于Java实现的ChatGPT流式接口项目,旨在提供最简洁的OpenAI API流式返回接入方式。该项目具有以下特点:
- 无第三方依赖,仅需Spring Boot环境
- 支持聊天记忆功能
- 支持画图功能
- 支持代码块高亮
- 支持Markdown语法
通过ChatGPT-Stream,开发者可以轻松地将ChatGPT的流式对话能力集成到自己的应用中。
快速开始
- 克隆项目代码:
git clone https://github.com/NiuXiangQian/chatgpt-stream.git
- 配置OpenAI API密钥:
在application.properties中设置你的API密钥:
openai.api.key=YOUR_API_KEY
- 运行项目,访问http://localhost:8080即可使用。
API文档
项目提供了简单的RESTful API:
- POST /chat - 发送聊天消息
- GET /chat/stream - 获取流式聊天响应
详细API说明请参考项目文档。
实现原理
ChatGPT-Stream主要通过以下步骤实现流式对话:
- 使用WebClient发送请求到OpenAI API
- 配置响应为流式(text/event-stream)
- 使用SseEmitter实时推送数据到前端
- 前端通过EventSource接收服务端推送的数据
核心代码如下:
@GetMapping(value = "/chat/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter chatStream() {
SseEmitter emitter = new SseEmitter();
webClient.post()
.uri("/v1/chat/completions")
.body(BodyInserters.fromValue(request))
.retrieve()
.bodyToFlux(String.class)
.subscribe(
data -> {
try {
emitter.send(data);
} catch (IOException e) {
emitter.completeWithError(e);
}
},
error -> emitter.completeWithError(error),
() -> emitter.complete()
);
return emitter;
}
更多资源
通过以上资源,相信开发者可以快速上手使用ChatGPT-Stream项目,实现流畅的AI对话体验。如有任何问题,欢迎在GitHub上提issue讨论。