<p align="center">
<h1 align="center">📦 ChatGPT</h1>
<div align="center">实现可连续对话ChatGPT插件</div>
</p>
[![English badge](https://img.shields.io/badge/%E8%8B%B1%E6%96%87-English-blue)](./README_en.md)
[![简体中文 badge](https://img.shields.io/badge/%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87-Simplified%20Chinese-blue)](./README.md)
> 本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:[https://github.com/asleepyfish/chatgpt-demo](https://github.com/asleepyfish/chatgpt-demo)
> 流式输出结合Vue前端的Demo的Git地址:[https://github.com/asleepyfish/chatgpt-vue](https://github.com/asleepyfish/chatgpt-vue)
==2023-05-28更新==
> 制作了一个基于本文sdk包的对话网站,可前往[http://chatgpt.alpacos.cn/](http://chatgpt.alpacos.cn/)体验。
> **[注]:** 由于本人的服务器的带宽较低,首次加载页面可能会略有些慢,请耐心等待,详细使用说明请查看另一篇博客~ 👇
> [ChatGPT网页版(基于SpringBoot和Vue)](https://blog.csdn.net/qq_41821963/article/details/130918024?spm=1001.2014.3001.5502)
==2023-07-17更新==
> 所有的测试Demo均包括结合Spring框架的(`ChatGPTController`类中)和`main`方法使用(`MainTest`类中)
>
> Demo地址:https://github.com/asleepyfish/chatgpt-demo
**注意:** 流式输出在2.4节,请仔细阅读到最后。
# 版本更新说明
- 1.1.5 增加查询账单功能`billingUsage`(单位:美元),可以选择传入开始和结束日期查询(最多100天),或者不传入参,此时表示查询所有日期账单。
- 1.1.6 增加自定义`OpenAiProxyService`功能,支持单个SpringBoot中添加多个`OpenAiProxyService`实例,每个实例可以拥有个性化的参数;查询账单功能优化。
- 1.2.0 增加`subscription`方法(查询订阅信息,包括订阅到期日和账号额度等信息,但是没有使用量情况,使用通过`billingUsage`方法查询使用量),增加`billing`方法,整合了`subscription`和`billingUsage`方法,出参包括订阅到期日、额度、使用量、余量等信息。增加对内部cache的多种操作,包括获取,赋值等操作。
- 1.2.1 `billing`方法中出参`dueDate`取值逻辑修改,`ChatGPTProperties`类支持build链式创建对象。
- 1.3.0 新增以下方法,每种方法均包含多种重载方法,具体使用请参考:[https://github.com/asleepyfish/chatgpt-demo](https://github.com/asleepyfish/chatgpt-demo)
- `listModels`、`getModel`
- `edit`
- `embeddings`
- `transcription`、`translation`
- `createImageEdit`、`createImageVariation`
- `listFiles`、`uploadFile`、`deleteFile`、`retrieveFile`、`retrieveFileContent`
- `createFineTune`、`createFineTuneCompletion`、`listFineTunes`、`retrieveFineTune`、`cancelFineTune`、`listFineTuneEvents`、`deleteFineTune`
- `createModeration`
- 1.3.1 支持自定义baseUrl,默认为 `https://api.openai.com/` ,配置参数在`ChatGPTProperties`类中,可通过`application.yml`配置。
- 1.3.2 修复自定义`baseUrl`后无法访问bug,自定义`baseUrl`必须以`/`结尾。新增自定义属于自己的`baseUrl`示例。
- 1.3.3 支持自定义`OkHttpClient`,解决`OkHttpClient`默认并发数无法指定问题,解决部分Proxy登录需要账号密码问题,详细介绍见2.12节。
- 1.3.4 修复指定`baseUrl`后未切换`baseUrl`bug,`1.3.3`版本不建议使用。
- 1.3.5 支持SpringBoot3引用(SpringBoot3所需JDK最低是17),代码Demo见[https://github.com/asleepyfish/chatgpt-demo](https://github.com/asleepyfish/chatgpt-demo),分支为**dev-springboot3**
# 1. 配置阶段
## 1.1 依赖引入
`pom.xml`中引入依赖
- Latest Version: ![Maven Central](https://img.shields.io/maven-central/v/io.github.asleepyfish/chatgpt?color=blue)
- Maven:
```xml
<dependency>
<groupId>io.github.asleepyfish</groupId>
<artifactId>chatgpt</artifactId>
<version>Latest Version</version>
</dependency>
```
## 1.2 配置application.yml文件
**注意:** 如果需要和`SpringBoot`集成则需要配置`application.yml`,如果只需要Main方法调用,可参考第3节扩展部分。
在`application.yml`文件中配置chatgpt相关参数(Optional为可选参数)
**注:大陆用户需要配置proxy-host和proxy-port来进行代理才能访问OpenAI服务**
| 参数 | 解释 |
| ---------------------------------- | ------------------------------------------------------------ |
| token | 申请的API KEYS |
| proxy-host (Optional) | 代理的ip |
| proxy-port (Optional) | 代理的端口 |
| model (Optional) | model可填可不填,默认即text-davinci-003 |
| chat-model (Optional) | 可填可不填,默认即gpt-3.5-turbo (ChatGPT当前最强模型,生成回答使用的就是这个模型) |
| retries (Optional) | 指的是当chatgpt第一次请求回答失败时,重新请求的次数(增加该参数的原因是因为大量访问的原因,在某一个时刻,chatgpt服务将处于无法访问的情况,不填的默认值为5) |
| session-expiration-time (Optional) | (单位(min))为这个会话在多久不访问后被销毁,这个值不填的时候,即表示所有问答处于同一个会话之下,相同user的会话永不销毁(增加请求消耗) |
| base-url (Optional) | 默认为 `https://api.openai.com/ `,可不填 |
例:
```yml
chatgpt:
token: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #必填
# proxy-host: 127.0.0.1 #需要代理时必填
# proxy-port: 7890 #需要代理时必填
# model: text-davinci-003 #可选
# chat-model: gpt-3.5-turbo #可选
# retries: 10 #可选,默认为5
# session-expiration-time: 30 #可选,不填则会话永不过期
# base-url: https://apps.ichati.cn/1d6f32f8-b59d-46f8-85e9-7d434bxxxxxx/ #可选,默认为https://api.openai.com/,请记住务必以/结尾
```
**_其中token必填、大陆用户proxy-host、proxy-port也是必填的(某些你懂的原因)_**
上面的session-expiration-time参数很重要,是用来表示这个会话在多久不访问后被销毁,从而实现联系上下文的连续对话。
实现方式是通过ChatCompletionRequest中的user来区分某个会话,而session-expiration-time表示这个会话在多久不访问后被销毁。
**如果这里看不懂请看2.1节示例**
## 1.3 @EnableChatGPT注解
启动类上加入`@EnableChatGPT`注解则将ChatGPT服务注入到Spring中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2723c69669244b5da07c0752b0585945.png)
# 2 使用
**注意:**下面的使用`OpenAiUtils`调用的方法均需要和`SpringBoot`集成,才可使用。使用第四节自定义`OpenAiProxyService`的方式调用方法,不需要和`SpringBoot`集成,在Main方法中就可以使用!!!
## 2.1 生成回答
提供了工具类`OpenAiUtils`,里面提供了相关方法进行调用。
其中最简单的使用方法是:
```java
OpenAiUtils.createChatCompletion(content);// 不建议使用
```
入参`content`即输入的问题的字符串。但是不建议使用。
这里建议使用下面的方式,通过传入user的值,再结合`session-expiration-time`参数,可以实现指定某次会话,或者某个用户的连续对话。
```java
OpenAiUtils.createChatCompletion(content, user);// 建议使用
```
还提供一个通用的静态方法是
```java
public static List<String> createChatCompletion(ChatCompletionRequest chatCompletionRequest) {...}
```
入参`ChatCompletionRequest `里包含模型的一些可调参数。
`OpenAiUtils`类中还提供了多个�
没有合适的资源?快使用搜索试试~ 我知道了~
实现可连续对话和流式输出的ChatGPT API(基于SpringBoot和Vue实现流式输出)+源代码+文档说明
共41个文件
java:36个
md:2个
xml:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 12 浏览量
2023-11-28
16:24:14
上传
评论
收藏 54KB ZIP 举报
温馨提示
- ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
实现可连续对话和流式输出的ChatGPT API(基于SpringBoot和Vue实现流式输出).zip (41个子文件)
code
pom.xml 8KB
src
main
java
io
github
asleepyfish
annotation
EnableChatGPT.java 427B
client
OpenAiApi.java 5KB
service
openai
ChatFunctionParametersSerializer.java 1KB
FunctionExecutor.java 4KB
ChatFunctionCallMixIn.java 510B
ChatFunctionCallArgumentsSerializerAndDeserializer.java 2KB
ChatFunctionMixIn.java 269B
ChatCompletionRequestMixIn.java 609B
AuthenticationInterceptor.java 906B
ResponseBodyCallback.java 3KB
SSE.java 526B
ChatMessageAccumulator.java 3KB
SSEFormatException.java 207B
ChatCompletionRequestSerializerAndDeserializer.java 2KB
OpenAiService.java 20KB
OpenAiProxyService.java 58KB
enums
embedding
EmbeddingModelEnum.java 434B
image
ImageResponseFormatEnum.java 379B
ImageSizeEnum.java 391B
chat
RoleEnum.java 433B
FinishReasonEnum.java 358B
audio
AudioResponseFormatEnum.java 556B
AudioModelEnum.java 410B
model
ModelEnum.java 2KB
exception
ChatGPTErrorEnum.java 4KB
edit
EditModelEnum.java 512B
entity
billing
Subscription.java 1KB
Billing.java 294B
BillingUsage.java 682B
Plan.java 227B
audio
TranscriptionRequest.java 2KB
TranslationRequest.java 1KB
exception
ChatGPTException.java 1KB
util
OpenAiUtils.java 22KB
config
ChatGPTProperties.java 1KB
ChatGPTAutoConfigure.java 1KB
LICENSE 1KB
README_en.md 2KB
.gitignore 163B
README.md 41KB
共 41 条
- 1
资源评论
- lixuelove_20052024-04-23资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
奋斗奋斗再奋斗的ajie
- 粉丝: 232
- 资源: 2166
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ModStartCMS v8.4.0 框架稳定性持续迭代,修复部分已知问题
- bleder 教室学校学生教育室办公室考试
- 人脸检测-使用OpenCV实现的动漫+漫画人脸检测算法-附项目源码-优质项目实战.zip
- 道路贴图,材质材料免费
- 人脸检测-基于OpenCV+Node.js+WebSockets实现的实时人脸检测应用-附项目源码-优质项目实战.zip
- 一些常见的MySQL死锁案例-mysql-deadlocks-master(源代码+案例+图解说明)
- UE4动画烘焙器-ue4.27
- 新建文件夹.zip
- 1103a2a791bbd96ea98021062e327495b1c422e32fb27e0c2d6404b1bd74b692.gif
- 同城相亲交友php小程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功