概述
近期ChatGPT火爆全球,在其官方网站上也列举了非常全面的应用案例,仅仅上线两个月活跃用户数已经达到1亿,成为历史上用户数增长最快的面向消费者的应用
快速体验
OpenAI官网对外提供了标准的 API 接口,可以通过HTTP请求进行交互
curl https://api.openai.com/v1/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"model": "text-davinci-003",
"prompt": "今天星期几?",
"max_tokens": 7,
"temperature": 0
}'
由于在使用过程中必须要登录授权账户且在网页中进行ChatGPT对话,为了简化体验过程,我们采用机器人(QQ、微信) + token 的方式对 ChatGPT底层调用 进行封装,只需要添加 机器人 为好友后进行对话就可以完成ChatGPT的对接体验了!
GitHub地址:https://github.com/flyfhj/showcase-chatgpt-robot.git
准备工作
基于ChatGPT实现的QQ/WeChat机器人,目前只支持QQ
项目依赖三方组件库
-
mirai 高效率 QQ 机器人支持库
-
openai-java 基于 OpenAI 的 GPT-3 api 的 Java 库
注册ChatGPT账号(略)
参考:https://www.bilibili.com/read/cv20802226/
项目中配置ChatGPT相关属性
application.properties
# chatgpt secret
chatgpt.apikey=sk-xxxxxxxxxxxxxxxxxxxxxxxx
#completion properties
chatgpt.completion.model=text-davinci-003
chatgpt.completion.max-tokens=2048
# mirai bot
chatgpt.mirai.protocol=IPAD
chatgpt.mirai.heartbeat-strategy=STAT_HB
chatgpt.mirai.device-file-name=derives.json
chatgpt.mirai.working-dir=D:/dist
# qq
chatgpt.qq.number=3234327546
chatgpt.qq.password=123456
1、chatgpt.apikey配置ChatGPT账号对应的secretKey
2、若应用部署在Linux系统,注意修改chatgpt.mirai.working-dir
的目录位置
3、如果启动过程中提示QQ版本过低,请升级至最新版本后再登录,则可以尝试修改chatgpt.mirai.protocol
为其它协议 <ANDROID_PHONE、ANDROID_PAD、ANDROID_WATCH、IPAD、MACOS>
4、通过修改chatgpt.completion.max-tokens
来控制交互数据的字符数(问题和答案的总和)
Maven dependency
<properties>
<!-- 重定义kotlinx-coroutines-bom中的依赖的版本 -->
<kotlin-coroutines.version>1.6.4</kotlin-coroutines.version>
</properties>
<dependencies>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>client</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>net.mamoe</groupId>
<artifactId>mirai-core-jvm</artifactId>
<version>2.13.3</version>
</dependency>
...
</dependencies>
注意
:mirai的版本必须是2.13.3+,以前的版本是通过QQ扫码授权,但是启动过程中一直显示net.mamoe.mirai.internal.utils.crypto.DecryptionFailedException
异常,从2.13.3+版本开始QQ授权调整为短信认证的方式
IDEA应用启动成功
2023-02-08 15:53:57 I/Net 3234327546: Successfully loaded friendGroup list: 4 in total
2023-02-08 15:53:57 I/Net 3234327546: Successfully loaded group list: 0 in total.
2023-02-08 15:53:57 I/Net 3234327546: Scheduled refresh login session in 19d 23h 55min 0.0s.
2023-02-08 15:53:57 I/Net 3234327546: Scheduled key refresh in 23h 55min 0.0s.
2023-02-08 15:53:57 V/Bot 3234327546: Event: BotOnlineEvent(bot=Bot(3234327546))
2023-02-08 15:53:57 I/Bot 3234327546: Bot login successful.
2023-02-08 15:53:58.570 INFO 28376 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-02-08 15:53:58.586 INFO 28376 --- [ main] c.s.chatgpt.ChatGPTMainApplication : Started ChatGPTMainApplication in 11.933 seconds (JVM running for 15.679)
2023-02-08 15:54:00 V/Net 3234327546: Saving bdh session to cache
2023-02-08 15:54:00 V/Net 3234327546: Send: ConfigPushSvc.PushResp(ConfigPushSvc.PushResp)
2023-02-08 15:54:00 V/Net 3234327546: Recv: ConfigPushSvc.PushReq
效果图
添加QQ机器人为好友,然后就可以对话了!
(ChatGPT集成微信待续)