chatgpt-dingtalk - チャットGPTボットはDingTalkグループチャットで相互作用します

(ChatGPT机器人在钉钉群聊中交互)

Created at: 2022-12-09 08:15:23
Language: Go
License: MIT

ChatGPT Dingtalk

認証 囲碁バージョン GitHub プルリクエスト GitHub プルリクエスト ヒットカウント Docker イメージ サイズ (日付ごとの最新) ドッカープル GitHub ライセンス

🌉 ChatGPTボットをDingTalkグループチャット🌉に追加する


前書き

最近、ChatGPTは非常に人気があり、このプロジェクトはGPTボットをDingTalkグループチャットに統合することができます。

感谢:
このプロジェクトは、個人のWeChatに統合し、必要に応じて体験できるGPTボットであるwechatbotから借用しています。

機能の紹介

  • DingTalkグループチャットへのボットの追加や、会話中の@botsとのやり取りをサポートします。
  • 質問をするとコンテキストが追加され(理想的ではない場合があります)、公式Webサイトの効果に近づきます。

前提を使用する

  • OpenAIアカウントをお持ちでapi_keyを作成している場合は、登録に関する事項についてはこちらの記事を参照してください。 個人キーをリクエストするには、こちらにアクセスしてください。
  • DingTalk開発者バックグラウンドでボットを作成し、アプリケーションコールバックを設定します。

チュートリアルを使用する

最初のステップはボットを作成することです

ステップ バイ ステップ ドキュメントを作成する: ボットを内部で開発するか、以下の手順に従って構成します。

  1. ボットを作成します。 image_20221209_163616

    手順は比較的簡単なので、ここでは繰り返しません。

  2. ボットコールバックインターフェイスを設定します。 image_20221209_163652

    作成後、[ロボット開発管理] をクリックし、サービスをデプロイするサーバーの出力 IP アドレスと構成するサービスのドメイン名を構成します。

  3. ボットを公開します。 image_20221209_163709

    バージョン管理と公開をクリックし、オンラインをクリックすると、この時点でこのロボットをDingTalkのグループに追加できます。

  4. グループチャットにボットを追加します。

    image_20221209_163724

2 番目の手順では、アプリケーションをデプロイします。

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グループのボットと話すことができます。

効果は次のとおりです。

image_20221209_163739


コマンドラインから直接デプロイする場合は、リリース時に圧縮パッケージを直接ダウンロードし、システムとアーキテクチャに応じて適切な圧縮パッケージを選択し、ダウンロード後に直接解凍して実行してください。

ダウンロード後、ローカルに解凍すると、実行可能プログラムと構成ファイルが表示されます。

$ 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": "清空会话" // 会话清空口令,默认`清空会话`
}

よくある質問

  • Q: DingTalkグループチャットロボットが応答しない場合、アプリケーションに出力がありません
    • A: DingTalkグループチャットの後、リクエストは上記で設定したコールバックIPとドメイン名を介して送信され、このリンクに問題がある場合、リクエストを受信できないため、設定が完了したら、curlでサービスを確認することをお勧めします。
  • Q:すべてが構成された後、グループチャットボットが応答しない、アプリケーションの出力が次のとおりであることを確認してください:コールバックパラメータが空であるため、正常に解析できないため、理由を確認してください
    • A:作成したボットに問題がある可能性がありますので、ロボットを再度作成し、新しいロボットを作成して再試行することをお勧めします。