chatgpt-on-wechat - ChatGPTを使用して、OpenAI APIとitchatに基づいてWeChatチャットボットを構築します。 OpenAI APIとitchatライブラリを使用するChatGPTに基づくWechatロボット。

(使用ChatGPT搭建微信聊天机器人,基于OpenAI API和itchat实现。Wechat robot based on ChatGPT, which using OpenAI api and itchat library.)

Created at: 2022-08-07 16:33:41
Language: Python
License: MIT

簡単な紹介

ChatGPTは最近、強力な対話機能と情報統合機能でインターネットを席巻し、コードを書いたり、論文を変更したり、ストーリーを語ったり、ほとんど何でもできるため、人々は大胆なアイデアを持たざるを得ず、対話モデルを使用してWeChatをインテリジェントロボットに構築し、友人との会話で予期しない応答を出すことができ、ガールフレンドがゲーム作業に影響を与えることを心配する必要がなくなりました。

ChatGPTに基づくWeChatチャットボットは、OpenAIインターフェイスを介して会話コンテンツを生成し、それを使用してWeChatメッセージの受信と自動返信を実現します。 次の機能が実装されました。

  • [x]テキスト会話:プライベートチャットやグループでWeChatメッセージを受信し、ChatGPTを使用して返信コンテンツを生成し、自動返信を完了します
  • [x]ルールのカスタマイズ:プライベートチャットで指定されたルールに従って自動返信をトリガーし、グループの自動返信ホワイトリストの設定をサポートします
  • [x]複数のアカウント:複数のWeChatアカウントを同時に実行することをサポートします
  • [x]画像生成:説明に基づく画像生成と、個人またはグループのチャットへの自動送信をサポートします
  • [x]コンテキストメモリ:マルチラウンドの会話メモリをサポートし、友人ごとに個別のアップセッションとダウンセッションを維持します

変更履歴

2023.02.09:コードをスキャンしてログインすることで禁止するリスクがありますので、注意して使用してください、#58を参照してください

2023.02.05: openai公式インターフェーススキーム(GPT-3モデル)にコンテキストダイアログを実装しました。

2022.12.19: itchatに代わるitchat-uosを導入し、ウェブページWeChatにログインできないために使用できない問題を解決し、Python 3.9の互換性問題を解決しました

2022.12.18: 説明に基づいて画像を生成および送信するためのサポート、OpenAIバージョンは0.25.0以上である必要があります

2022.12.17: 当初の解決策は、ChatGPTページからsession_tokenを取得し、revChatGPTを使用してWebインターフェイスに直接アクセスするというものでしたが、ChatGPTがCloudflareの人間の一人当たりにアクセスするため、このソリューションをサーバー上でスムーズに実行することは困難です。 そのため、現在使用しているソリューションはOpenAIが提供するAPIを呼び出すことであり、返信品質は基本的にChatGPTの内容に近い、コンテキストメモリとの会話をサポートしていないことが欠点であり、安定性と応答速度が優れているという利点があります。

効果を使用する

個人チャット

シングルチャットサンプル.jpg

グループチャット

グループチャットサンプル.jpg

画像生成

グループチャットサンプル.jpg

すぐに始める

準備をして

1. オープンAIアカウント登録

OpenAI登録ページに移動してアカウントを作成し、このチュートリアルを参照してください仮想携帯電話番号を介して確認コードを受け取ることができます。 アカウントを作成したら、[API 管理] ページに移動して API キーを作成して保存し、プロジェクトでこのキーを構成する必要があります。

プロジェクトで使用されている対話モデルはdavinci、請求方法は750語あたり約0.02ドル(リクエストと返信を含む)、画像生成はシートあたり0.016ドル、アカウント作成には無料の18ドルのクレジットがあり、メールアドレスを変更して使用後に再登録できます。

2. 動作環境

Linux、MacOS、Windowsシステム(Linuxサーバーで長時間実行可能)をサポートし、インストールが必要です。

Python

Python のバージョンは 3.7.1~3.9.X の間で、バージョン 3.10 以降は Mac OS で利用可能にすることをお勧めします。

1. プロジェクトコードを複製します。

git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/

2. 必要なコア依存関係をインストールします。

pip3 install itchat-uos==1.5.0.dev0
pip3 install --upgrade openai

注: 指定されたバージョン 1.5.0.dev0 を使用し、0.25.0 より高くなければならない最新バージョンを使用します。

itchat-uos
openai

意気

構成ファイルのテンプレートはルートディレクトリにあり、テンプレートをコピーして最終的な有効なファイルを作成する必要があります。

config-template.json
config.json

cp config-template.json config.json

次に、構成を入力し、必要に応じてカスタマイズできる既定の構成の説明を次に示します。

config.json

# config.json文件内容示例
{ 
  "open_ai_api_key": "YOUR API KEY"                           # 填入上面创建的 OpenAI API KEY
  "single_chat_prefix": ["bot", "@bot"],                      # 私聊时文本需要包含该前缀才能触发机器人回复
  "single_chat_reply_prefix": "[bot] ",                       # 私聊时自动回复的前缀,用于区分真人
  "group_chat_prefix": ["@bot"],                              # 群聊时包含该前缀则会触发机器人回复
  "group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], # 开启自动回复的群名称列表
  "image_create_prefix": ["", "", ""],                   # 开启图片回复的前缀
  "conversation_max_tokens": 1000,                            # 支持上下文记忆的最多字符数
  "character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"  # 人格描述
}

構成手順:

1.パーソナルチャット

  • 個人用チャットでは、構成項目に対応する "bot" または "@bot" で始まるコンテンツでボットをトリガーする必要があります (プレフィックスでトリガーする必要がない場合は、入力できます)。
    single_chat_prefix
    "single_chat_prefix": [""]
    )
  • ボットの返信の内容には、実在の人物を区別するために「[bot]」という接頭辞が付き、対応する構成項目は(接頭辞が不要な場合は、入力できます)。
    single_chat_reply_prefix
    "single_chat_reply_prefix": ""
    )

2.グループチャット

  • グループチャットでは、グループチャットで自動返信を有効にするには、グループ名を設定する必要があります。 すべてのグループチャットを有効にする場合は、直接入力できます
    group_name_white_list 
    "group_name_white_list": "ALL_GROUP"
  • デフォルトでは、誰か@がボットの自動返信をトリガーする限り。 また、グループチャットで「@bot」で始まるコンテンツが検出されている限り、設定項目に対応する自動返信(自分でトリガーするのに便利)も行われます。
    group_chat_prefix
  • オプションの構成: 構成項目はあいまい一致のグループ名をサポートし、構成項目は前の 2 つの構成項目と同じあいまい一致のグループ メッセージ コンテンツをサポートします。 (投稿者: evolay
    group_name_keyword_white_list
    group_chat_keyword
    )

3. その他の構成

  • 画像生成の場合、個別またはグループのトリガー条件を満たすことに加えて、設定に対応してトリガーするために追加のキーワードプレフィックスが必要です。
    image_create_prefix 
  • OpenAIダイアログと画像インターフェイスのパラメーター構成(コンテンツの自由、返信ワードの制限、画像サイズなど)については、ダイアログインターフェイスと画像インターフェイスのドキュメントを参照して、コードで直接調整できます。
    bot/openai/open_ai_bot.py
  • conversation_max_tokens
    :記憶できるコンテキスト内の単語の最大数を示します(質問と回答は会話のセットであり、累積単語数が制限を超えると、最も古い会話のセットが最初に削除されます)
  • character_desc
    構成には、ボットに話すパッセージが含まれており、ボットはそれを記憶して設定として使用し、ボットの任意のパーソナリティをカスタマイズできます(会話コンテキストの詳細については、この問題を参照してください)。)

走る

1. 開発マシンがローカルで実行されている場合は、プロジェクトのルートディレクトリで直接実行します。

python3 app.py

端末がQRコードを出力した後、WeChatを使用してコードをスキャンし、「自動返信の開始」という出力が出力されたら、自動返信プログラムが正常に実行されたことを意味します(注:ログインに使用するWeChatは、決済オフィスで実名認証を完了している必要があります)。 コードをスキャンしてログインすると、アカウントがロボットになり、WeChat携帯電話で構成されたキーワードを介して自動返信をトリガーできます(友人がメッセージを送信するか、自分で友人にメッセージを送信します)、#142を参照してください。

2. サーバー展開の場合は、nohup コマンドを使用してバックグラウンドで実行します。

touch nohup.out                                   # 首次运行需要新建日志文件                     
nohup python3 app.py & tail -f nohup.out          # 在后台运行程序并通过日志输出二维码

コードをスキャンしてログインした後、プログラムはサーバーのバックグラウンドで実行できますが、この時点で、バックグラウンドプログラムの実行に影響を与えることなくログをオフにすることができます。 コマンドを使用して view バックグラウンドで実行されているプロセス、およびプログラムを再起動する場合は、最初に対応するプロセスを削除できます。 ログを閉じた後、もう一度開く場合は、次のように入力します。

ctrl+c
ps -ef | grep app.py | grep -v grep
kill
tail -f nohup.out

注意: コードをスキャンした後、ログイン確認を5秒待つ必要があるというメッセージが表示され、端末のQRコードが更新されて再度プロンプトが表示される場合は、この問題を参照してコード行を変更して解決する必要があります。

Log in time out, reloading QR code

よくある質問

よくある質問: https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs

接触

PR、問題、スターサポートの送信を歓迎します。 プログラムの実行で問題が発生した場合は、最初に一般的な問題のリストを表示してから、 問題 同様の問題がない場合は、問題を作成するか、WeChat eijuyahzを追加して通信できます。