chatgpt-dingtalk - ChatGPTロボットは、ペググループチャットで対話します

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

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

ChatGPT Dingtalk

Auth Go Version GitHub Pull Requests GitHub Pull Requests HitCount Docker Image Size (latest by date) Docker Pulls GitHub license

🌉 ネイルグループチャットにChatGPTロボット🌉を追加します


序文

最近、ChatGPTは異常に暑く、このプロジェクトはGPTロボットをネイルグループチャットに統合することができます。

感谢:
このプロジェクトは、パーソナルWeChatbotに統合できるGPTロボットであるwechatbotから学び、必要に応じて体験することができます。

機能の概要

  • ネイルグループチャットにボットを追加し、@ボットを介してチャット操作をサポートします。
  • 質問は、コンテキストを増加させ(おそらくあまり理想的ではない)、公式ウェブサイトの効果に近いです。

前提を使用します

  • openai アカウントがあり、api_keyが作成され、登録に関する事項については、この記事を参照してください。 ここを訪問し、個人的な秘密鍵を申請します。
  • ネイル開発者のバックグラウンドでボットを作成し、アプリケーション コールバックを構成します。

チュートリアルを使用します

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

ステップリファレンスドキュメントの作成: 社内でロボットを開発するか、次の手順に従って構成します。

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

    手順は比較的単純ですが、ここでは説明しません。

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

    作成したら、[ボット開発管理] をクリックし、展開するサービスが存在するサーバーの出力 IP と、サービスに構成するドメイン名を構成します。

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

    バージョン管理とリリースをクリックし、[オンライン] をクリックすると、このロボットを爪のグループに追加できます。

  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

ここで、プロファイルは、次のプロファイルの説明を参照します。

Nginx プロキシは、サーバー エクストラネット IP 経由で直接設定できる場合でも、上部に展開する docker 方法に関係なく構成する必要があることに注意してください。

展開が完了したら、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;
    }
}

展開が完了したら、グループでアイト ロボットを体験できます。

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"
}'

手動要求に問題がない場合は、ペググループ内でロボットと会話できます。

効果は次のとおりです。

image_20221209_163739


コマンド ラインから直接展開する場合は、release の圧縮パッケージを直接ダウンロードし、システムおよびアーキテクチャに基づいて適切な圧縮パッケージを選択し、ダウンロード後に直接解凍して実行します。

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

$ 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: ネイルグループがエトロボットについて話した後、応答がなく、アプリには出力がありません
    • A: アイト グループ チャットに釘付けすると、上記のコールバック IP とドメイン名を使用して要求が送信され、このリンクに問題がある場合は要求を受信できないため、構成が完了したら、curl 検証を使用してサービスを検証することをお勧めします。
  • Q: すべてが構成されると、グループチャットアイトボットは応答せず、アプリケーション出力が「コールバックパラメータが空なので、正しく解決できない」と表示されます
    • A: 作成したロボットに問題がある可能性があるため、ロボットを作成するプロセスを再検討し、新しいロボットを作成して再試行することをお勧めします。