开源一款使用Java+Spring对接ChatGPT接口的网站项目
in 技术 with 0 comment

开源一款使用Java+Spring对接ChatGPT接口的网站项目

in 技术 with 0 comment
最近看到五花八门的基于ChatGPT的项目,自己也蹭蹭热度,使用 Java + Spring Boot 技术栈对接 OpenAI API接口实现的 AI 聊天对话网站项目,现已开源到 Github。

使用 Java + Spring Boot 技术栈基于 Chanzhaoyu/chatgpt-web 静态界面实现的 Java 版 ChatGPT 聊天网站项目,开源用于个人参考学习。

项目地址:Github | Gitee

chat

快速使用

docker run \
  -it -d \
  --name chatgpt-web-java \
  -p 8080:8080 \
  hubsuimz/chatgpt-web-java:0.0.1-full \
  --app.openai-api-key=你的ApiKey

访问: http://你的域名orIP:8080

版本号-full TAG 的镜像整合了 Chanzhaoyu/chatgpt-web 的前端页面,可直接访问使用。

介绍

以下描述内容摘自于 [ChatGPT-Web] ,本项目基于该项目API接口的交互流程进行实现,感谢 @Chanzhaoyu 提供的优质UI界面项目。

支持双模型,提供了两种非官方 ChatGPT API 方法

方式免费?可靠性质量
ChatGPTAPI(gpt-3.5-turbo-0301)可靠相对较笨
ChatGPTUnofficialProxyAPI(网页 accessToken)相对不可靠聪明

对比:

  1. ChatGPTAPI 使用 gpt-3.5-turbo 通过 OpenAI 官方 API 调用 ChatGPT
  2. ChatGPTUnofficialProxyAPI 使用非官方代理服务器访问 ChatGPT 的后端API,绕过Cloudflare(依赖于第三方服务器,并且有速率限制)。

警告:

  1. 你应该首先使用 API 方式。
  2. 使用 API 时,如果网络不通,那是国内被墙了,你需要自建代理,绝对不要使用别人的公开代理,那是危险的。
  3. 使用 accessToken 方式时反向代理将向第三方暴露您的访问令牌,这样做应该不会产生任何不良影响,但在使用这种方法之前请考虑风险。
  4. 使用 accessToken 时,不管你是国内还是国外的机器,都会使用代理。默认代理为 @acheong08 大佬的 https://bypass.churchless.tech/api/conversation,这不是后门也不是监听,除非你有能力自己翻过 CF 验证,用前请知悉。
  5. 把项目发布到公共网络时,你应该设置 app.auth-secret-key 参数添加你的密码访问权限。

项目技术栈

部署独立后端

使用 Docker

方式一

docker run \
  -it -d \
  --name chatgpt-web-java \
  -p 8081:8080 \
  hubsuimz/chatgpt-web-java \
  --app.openai-api-key=你的ApiKey

方式二

docker run \
  -it -d \
  --name chatgpt-web-java \
  -p 8080:8080 \
  -v ~/chatgpt-web-java:/app/config \
  hubsuimz/chatgpt-web-java

方式二首次运行会启动失败,你需要修改上面映射出来的配置文件 ~/chatgpt-web-java/application-app.properties 中的 app.openai-api-key 等参数,然后重启 container:

docker restart chatgpt-web-java

手动打包

这是一个标准的 Spring Boot 工程,想必聪明的你一定非常熟悉这个框架了!

你可以使用自己熟悉的 IDEA 进行 build,也可以在源代码根路径执行编译脚本:

./gradlew bootJar

编译出来的 Jar 所在位置:项目根路径/build/libs/app.jar

接下来怎么运行我就用不说了吧, 我才不会告诉你使用 java -jar 命令。

其他:

如果你希望将 [ChatGPT-Web] 打包到项目中,可进行如下操作:

  1. 打包 [ChatGPT-Web] 前端项目,如何打包请查阅:这里
  2. dist 目录中的所有文件拷贝到 src/main/resources/static 目录下。

参数列表

参数名必填备注
app.auth-secret-key可选[ChatGPT-Web] 访问密钥,当你部署到公网时,建议配置
app.max-request-per-hour可选每个IP每小时最大聊天请求次数,可选,默认无限
app.api-timeout-ms可选, 默认:120000API请求超时时间,单位毫秒
app.openai-api-keyaccess-token 二选一使用 OpenAI API 所需的 apiKey (获取 apiKey)
app.openai-access-tokenapi-key 二选一使用 Web API 所需的 accessToken (获取 accessToken)
app.openai-sensitive-id可选用于查询账号余额 (获取 sensitiveId) ,从控制台中的login 接口请求结果中获取
app.openai-api-base-url可选,api-key 时可用API 接口地址
app.openai-api-mode可选,api-key 时可用,默认:gpt-3.5-turboAPI 模型
app.openai-reverse-api-proxy-url可选,access-token 时可用Web API 反向代理地址 详情
app.socks-proxy.host可选,http-proxy 二选一Socks 代理地址
app.socks-proxy.port可选Socks 代理端口
app.socks-proxy.username可选Socks 代理账号
app.socks-proxy.password可选Socks 代理密码
app.http-proxy.host可选,socks-proxy 二选一HTTP 代理地址
app.http-proxy.port可选HTTP 代理端口

详细可查看:src/main/resources/application-app.properties

License

Apache License 2.0


开源一款使用Java+Spring对接ChatGPT接口的网站项目

https://suimz.com/post/19.html

作者

穗苗子

发布时间

2023-04-19

许可协议

CC BY 4.0

Responses