最近、ChatGPTは非常に人気があり、このプロジェクトはGPTボットをDingTalkグループチャットに統合することができます。
感谢:このプロジェクトは、個人のWeChatに統合し、必要に応じて体験できるGPTボットであるwechatbotから借用しています。
ステップ バイ ステップ ドキュメントを作成する: ボットを内部で開発するか、以下の手順に従って構成します。
手順は比較的簡単なので、ここでは繰り返しません。
作成後、[ロボット開発管理] をクリックし、サービスをデプロイするサーバーの出力 IP アドレスと構成するサービスのドメイン名を構成します。
バージョン管理と公開をクリックし、オンラインをクリックすると、この時点でこのロボットをDingTalkのグループに追加できます。
グループチャットにボットを追加します。
Docker を使用すると、このプロジェクトをすばやく実行できます。
第一种:基于环境变量运行
# 运行项目
$ docker run -itd --name chatgpt -p 8090:8090 -e APIKEY=换成你的key -e SESSIONTIMEOUT=60s -e MODEL=text-davinci-003 -e MAX_TOKENS=512 -e TEMPREATURE=0.9 -e SESSION_CLEAR_TOKEN=清空会话 --restart=always docker.mirrors.sjtug.sjtu.edu.cn/eryajf/chatgpt-dingtalk:latest
コマンドでマップされた構成ファイルを実行し、以下の構成ファイルの説明を参照してください。
第二种:基于配置文件挂载运行
# 复制配置文件,根据自己实际情况,调整配置里的内容
$ cp config.dev.json config.json # 其中 config.dev.json 从项目的根目录获取
# 运行项目
$ docker run -itd --name chatgpt -p 8090:8090 -v `pwd`/config.json:/app/config.json --restart=always docker.mirrors.sjtug.sjtu.edu.cn/eryajf/chatgpt-dingtalk:latest
設定ファイルについては、以下の設定ファイルの説明を参照してください。
上記のどのDockerメソッドがデプロイされていても、Nginxプロキシを構成する必要があり、もちろん、サーバーのパブリックIPアドレスを直接使用できることに注意してください。
デプロイが完了したら、Nginxを使用してサービスをプロキシします。
server {
listen 80;
server_name chat.eryajf.net;
client_header_timeout 120s;
client_body_timeout 120s;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8090;
}
}
デプロイが完了したら、グループAiteロボットで体験できます。
Nginxを構成したら、手動で要求して、サービスログ出力からサービスが正常に利用可能かどうかを判断できます。
$ curl --location --request POST 'http://chat.eryajf.net/' \
--header 'Content-type: application/json' \
--data-raw '{
"conversationId": "xxx",
"atUsers": [
{
"dingtalkId": "xxx",
"staffId":"xxx"
}
],
"chatbotCorpId": "dinge8a565xxxx",
"chatbotUserId": "$:LWCP_v1:$Cxxxxx",
"msgId": "msg0xxxxx",
"senderNick": "eryajf",
"isAdmin": true,
"senderStaffId": "user123",
"sessionWebhookExpiredTime": 1613635652738,
"createAt": 1613630252678,
"senderCorpId": "dinge8a565xxxx",
"conversationType": "2",
"senderId": "$:LWCP_v1:$Ff09GIxxxxx",
"conversationTitle": "机器人测试-TEST",
"isInAtList": true,
"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session=xxxxx",
"text": {
"content": " 你好"
},
"msgtype": "text"
}'
手動リクエストに問題がなければ、DingTalkグループのボットと話すことができます。
効果は次のとおりです。
コマンドラインから直接デプロイする場合は、リリース時に圧縮パッケージを直接ダウンロードし、システムとアーキテクチャに応じて適切な圧縮パッケージを選択し、ダウンロード後に直接解凍して実行してください。
ダウンロード後、ローカルに解凍すると、実行可能プログラムと構成ファイルが表示されます。
$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz $ cd chatgpt-dingtalk-v0.0.4-darwin-arm64 $ cp config.dev.json # 根据情况调整配置文件内容 $ ./chatgpt-dingtalk # 直接运行 # 如果要守护在后台运行 $ nohup ./chatgpt-dingtalk &> run.log & $ tail -f run.log
# 获取项目
$ git clone https://github.com/eryajf/chatgpt-dingtalk.git
# 进入项目目录
$ cd chatgpt-dingtalk
# 复制配置文件,根据个人实际情况进行配置
$ cp config.dev.json config.json
# 启动项目
$ go run main.go
{
"api_key": "xxxxxxxxx", // openai api_key
"session_timeout": 60, // 会话超时时间,默认60秒,在会话时间内所有发送给机器人的信息会作为上下文
"max_tokens": 1024, // GPT响应字符数,最大2048,默认值512。值大小会影响接口响应速度,越大响应越慢。
"model": "text-davinci-003", // GPT选用模型,默认text-davinci-003,具体选项参考官网训练场
"temperature": 0.9, // GPT热度,0到1,默认0.9。数字越大创造力越强,但更偏离训练事实,越低越接近训练事实
"session_clear_token": "清空会话" // 会话清空口令,默认`清空会话`
}