
[英語] | [中文]
Bot on Anythingは、チャットボットをすばやく構築してどこでも実行できる強力なAIチャットボットビルダーです。
開発者は、さまざまなAIの大規模モデルと軽量構成を備えたアプリケーションチャネルとの間の接続を選択することにより、インテリジェントダイアログロボットを構築および実行できます。単一のプロジェクト内の複数のパス間の簡単な切り替えをサポートします。このアーキテクチャには強いスケーラビリティがあります。各アプリケーションは既存のモデル機能を再利用でき、各新しいモデルはすべてのアプリケーションチャネルで実行できます。
モデル:
アプリケーション:
Linux、MacOS、およびWindows Systemsをサポートし、Pythonをインストールする必要があります。 3.7.1〜3.10の間のPythonバージョンを使用することをお勧めします。
プロジェクトコードをクローンし、依存関係をインストールします。
git clone https://github.com/zhayujie/bot-on-anything
cd bot-on-anything/
pip3 install -r requirements.txtコア構成ファイルはconfig.jsonであり、テンプレートファイルconfig-template.jsonプロジェクトに提供されています。これをコピーして、最終的な効果的なconfig.jsonファイルを生成することができます。
cp config-template.json config.json各モデルとチャネルには独自の構成ブロックがあり、それらが一緒に完全な構成ファイルを形成します。全体の構造は次のとおりです。
{
" model " : {
" type " : " openai " , # Selected AI model
" openai " : {
# openAI configuration
}
},
" channel " : {
" type " : " slack " , # Channel to be integrated
" slack " : {
# slack configuration
},
" telegram " : {
# telegram configuration
}
}
}構成ファイルは、最も外側のレベルのmodelとchannelセクションに分割されます。モデルセクションはモデル構成用で、このtype使用するモデルを指定します。チャネルセクションには、アプリケーションチャネルの構成が含まれており、 typeフィールドは統合するアプリケーションを指定します。
使用する場合、モデルの下のtypeフィールドとチャネル構成ブロックを変更して、異なるパスを接続してモデルとアプリケーションを切り替える必要があります。以下では、各モデルとアプリケーションの構成と実行プロセスを順番に導入します。
プロジェクトルートディレクトリで次のコマンドを実行します。デフォルトチャネルは端末です。
python3 app.pyデフォルトモデルはgpt-3.5-turboです。詳細については、公式ドキュメントを参照してください。また、 gpt-4.0をサポートし、モデルタイプパラメーターを変更するだけです。
pip3 install --upgrade openai注:OpenAIバージョンは
0.27.0を超える必要があります。インストールが失敗した場合は、pip3 install --upgrade pipを使用してPIPを最初にアップグレードできます。
{
" model " : {
" type " : " chatgpt " ,
" openai " : {
" api_key " : " YOUR API KEY " ,
" model " : " gpt-3.5-turbo " , # Model name
" proxy " : " http://127.0.0.1:7890 " , # Proxy address
" character_desc " : " You are ChatGPT, a large language model trained by OpenAI, aimed at answering and solving any questions people have, and can communicate in multiple languages. When asked who you are, you should also tell the questioner that entering #clear_memory can start a new topic exploration. Entering draw xx can create a picture for you. " ,
" conversation_max_tokens " : 1000, # Maximum number of characters in the reply, total for input and output
" temperature " :0.75, # Entropy, between [0,1], the larger the value, the more random the selected candidate words, the more uncertain the reply, it is recommended to use either this or the top_p parameter, the greater the creativity task, the better, the smaller the precision task
" top_p " :0.7, # Candidate word list. 0.7 means only considering the top 70% of candidate words, it is recommended to use either this or the temperature parameter
" frequency_penalty " :0.0, # Between [-2,2], the larger this value, the more it reduces the repetition of words in the model's output, leaning towards producing different content
" presence_penalty " :1.0, # Between [-2,2], the larger this value, the less restricted by the input, encouraging the model to generate new words not present in the input, leaning towards producing different content
}
}api_key :アカウントを登録するときに作成されたOpenAI API KEYを入力します。model :モデル名は、現在gpt-3.5-turbo 、 gpt-4 、 gpt-4-32kをサポートしています(GPT-4 APIはまだ開いていません)。proxy :プロキシクライアントのアドレスは、詳細については#56を参照してください。character_desc :この構成は、chatgptに言うテキストを保存すると、このテキストをその設定として覚えています。あらゆる性格をカスタマイズできます。max_history_num [オプション]:会話の最大メモリ長さ、この長さを超えると、前のメモリがクリアされます。{
" model " : {
" type " : " linkai " ,
" linkai " : {
" api_key " : " " ,
" api_base " : " https://api.link-ai.tech " ,
" app_code " : " " ,
" model " : " " ,
" conversation_max_tokens " : 1000,
" temperature " :0.75,
" top_p " :0.7,
" frequency_penalty " :0.0,
" presence_penalty " :1.0,
" character_desc " : " You are an intelligent assistant. "
},
}api_key :コンソールで作成できるLinkaiサービスを呼び出すためのキー。app_code :Linkaiアプリケーションまたはワークフローのコード、オプション、アプリケーションの作成を参照してください。model :国内および国際的な情報源の両方から共通モデルをサポートし、モデルリストを参照してください。空白のままにすることができ、アプリケーションのデフォルトモデルはLinkaiプラットフォームで変更できます。設定テンプレートでデフォルトで開始されるアプリケーションは端子であり、追加の構成は必要ありません。 python3 app.pyプロジェクトディレクトリで直接実行して、プログラムを開始できます。ユーザーはコマンドライン入力を介してダイアログモデルと対話し、ストリーミング応答効果をサポートします。

貢献者:レジメン症
依存関係
pip3 install PyJWT flask flask_socketio構成
" channel " : {
" type " : " http " ,
" http " : {
" http_auth_secret_key " : " 6d25a684-9558-11e9-aa94-efccd7a0659b " , // JWT authentication secret key
" http_auth_password " : " 6.67428e-11 " , // Authentication password, just for personal use, a preliminary defense against others scanning ports and DDOS wasting tokens
" port " : " 80 " // Port
}
}ローカルで実行: python3 app.py実行した後、アクセスhttp://127.0.0.1:80 。
サーバーで実行:展開後、 http://public domain or IP:portアクセスします。
要件:サーバーおよびサブスクリプションアカウント。
Werobot依存関係をインストールします:
pip3 install werobot " channel " : {
" type " : " wechat_mp " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " # Port the program listens on
}
}プロジェクトディレクトリでpython3 app.pyを実行します。端子が次のものを表示した場合、操作が成功したことを示します。
[INFO][2023-02-16 01:39:53][app.py:12] - [INIT] load config: ...
[INFO][2023-02-16 01:39:53][wechat_mp_channel.py:25] - [WX_Public] Wechat Public account service start!
Bottle v0.12.23 server starting up (using AutoServer())...
Listening on http://127.0.0.1:8088/
Hit Ctrl-C to quit.
WECHAT公式プラットフォームの個人サブスクリプションアカウントに移動し、サーバーの構成を有効にします。

サーバーアドレス(URL)構成:ブラウザの構成されたURLを介してサーバー上のPythonプログラムにアクセスできる場合(ポート8088でデフォルトリスニング)、構成が有効であることを示します。サブスクリプションアカウントはポート80/443のみを構成できるため、ポート80で直接リッスンする構成を変更する(sudoアクセス許可が必要)、または逆プロキシ転送(nginxなど)を使用できます。公式のドキュメントによると、ここでパブリックIPまたはドメイン名のいずれかを記入できます。
トークン構成: config.json構成のトークンと一致する必要があります。
詳細な操作プロセスについては、公式ドキュメントを参照してください。
ユーザーがサブスクリプションアカウントに従った後、メッセージを送信できます。
注:ユーザーがメッセージを送信した後、WeChatバックエンドは構成されたURLアドレスにプッシュされますが、5秒以内に返信がない場合、接続が切断され、3回再試行されます。ただし、OpenaIインターフェイスへのリクエストには、5秒以上かかることがよくあります。このプロジェクトでは、非同期およびキャッシング方法により、5秒のタイムアウト制限が15秒に最適化されていますが、この時間を超えると、通常の返信は許可されません。同時に、5秒後に接続が切断されるたびに、Webフレームワークはエラーを報告し、後で最適化されます。
要件:サーバーと認定サービスアカウント。
Enterprise Serviceアカウントでは、個人サブスクリプションアカウントの15秒のタイムアウト問題は、最初にOpenAIインターフェイスに非同期にアクセスし、次にカスタマーサービスインターフェイスを介してユーザーに積極的にプッシュすることにより解決されます。サービスアカウントの開発モード構成は、サブスクリプションアカウントのモード構成に似ています。詳細については、公式ドキュメントを参照してください。
Enterprise Serviceアカウントのconfig.json構成は、タイプをwechat_mp_serviceに変更するだけですが、構成ブロックはまだwechat_mp再利用します。さらに、2つの構成項目を追加する必要があります: app_idとapp_secret 。
" channel " : {
" type " : " wechat_mp_service " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " # App secret
}
}注:サーバーIPアドレスは、「IPホワイトリスト」で構成する必要があります。それ以外の場合、ユーザーは積極的にプッシュされたメッセージを受信しません。
要件:PCまたはサーバー(国内ネットワーク)およびQQアカウント。
QQボットを実行するには、QQメッセージの受信と送信を担当するgo-cqhttpプログラムをさらに実行する必要があります。一方、 bot-on-anythingプログラムは、Dialogueコンテンツを生成するためにOpenAIにアクセスする責任があります。
GO-CQHTTPリリースから対応するマシンプログラムをダウンロードし、解凍し、 go-cqhttpバイナリファイルをbot-on-anything/channel/qqディレクトリに配置します。 config.yml configurationファイルはここで既に準備されています。 QQアカウントの構成(アカウント-Uin)に入力するだけです。
aiocqhttpを使用してgo-cqhttpと対話し、次のコマンドを実行して依存関係をインストールします。
pip3 install aiocqhttpconfig.json configurationファイルのチャネルブロックのtype qqに変更するだけです。
" channel " : {
" type " : " qq "
}まず、 bot-on-anythingプロジェクトのルートディレクトリに移動し、ターミナル1で実行されます。
python3 app.py # This will listen on port 8080 2番目のステップで、端子2を開き、 cqhttpが配置されているディレクトリに移動し、実行します。
cd channel/qq
./go-cqhttp注記:
device.jsonファイルのprotocolの値を5〜2のgo-cqhttpと同じディレクトリのJSONファイルを変更できます。この問題を参照してください。寄稿者:Brucelt1993
6.1トークンを取得します
電報ボットを申請することは、Googleで簡単に見つけることができます。重要なことは、ボットのトークンIDを取得することです。
6.2依存関係のインストール
pip install pyTelegramBotAPI6.3構成
" channel " : {
" type " : " telegram " ,
" telegram " :{
" bot_token " : " YOUR BOT TOKEN ID "
}
}要件:サーバーおよびGmailアカウント。
貢献者:サイモン
公式ドキュメントに従って、Googleアカウントのアプリパスワードを作成し、以下のように構成してから、歓声を上げてください!!!
" channel " : {
" type " : " gmail " ,
" gmail " : {
" subject_keyword " : [ " bot " , " @bot " ],
" host_email " : " [email protected] " ,
" host_password " : " GMAIL ACCESS KEY "
}
}serverサーバーまたはパブリックIPが必要ありません
寄稿者: Amaoo
依存関係
pip3 install slack_bolt構成
" channel " : {
" type " : " slack " ,
" slack " : {
" slack_bot_token " : " xoxb-xxxx " ,
" slack_app_token " : " xapp-xxxx "
}
}ボットトークンスコープを設定-Oauth&Permission
ボットユーザーOAuthトークンを構成ファイルslack_bot_tokenに書き込みます。
app_mentions:read
chat:write
ソケットモードを有効にする - ソケットモード
アプリケーションレベルのトークンを作成していない場合は、作成するように求められます。作成されたトークンを構成ファイルに書き込みましたslack_app_token 。
イベントサブスクリプション(イベントサブスクリプション) - ボットイベントを購読します
app_mention
参照ドキュメント
https://slack.dev/bolt-python/tutorial/getting-started
要件:
依存関係
pip3 install requests flask構成
" channel " : {
" type " : " dingtalk " ,
" dingtalk " : {
" image_create_prefix " : [ " draw " , " draw " , " Draw " ],
" port " : " 8081 " , # External port
" dingtalk_token " : " xx " , # Access token of the webhook address
" dingtalk_post_token " : " xx " , # Verification token carried in the header when DingTalk posts back messages
" dingtalk_secret " : " xx " # Security encryption signature string in the group robot
}
}参照ドキュメント:
ロボットを生成します
アドレス:https://open-dev.dingtalk.com/fe/app#/corp/robotロボットを追加し、開発管理にサーバーのアウトバウンドIPを設定し、メッセージ受信アドレス(https://xx.xx.com:8081などの構成の外部アドレス)。
依存関係
pip3 install requests flask構成
" channel " : {
" type " : " feishu " ,
" feishu " : {
" image_create_prefix " : [
" draw " ,
" draw " ,
" Draw "
],
" port " : " 8082 " , # External port
" app_id " : " xxx " , # Application app_id
" app_secret " : " xxx " , # Application Secret
" verification_token " : " xxx " # Event subscription Verification Token
}
}ロボットを生成します
アドレス:https://open.feishu.cn/app/
要件:サーバーと認定エンタープライズWechat。
Enterprise WeChatのconfig.json構成は、デフォルトのメッセージがサーバーのURLを受信している場合にのみタイプをwechat_comに変更する必要があります:http:// ip:8888/wechat。
" channel " : {
" type " : " wechat_com " ,
" wechat_com " : {
" wechat_token " : " YOUR TOKEN " , # Token value
" port " : " 8888 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " , # App secret
" wechat_corp_id " : " YOUR CORP ID " ,
" wechat_encoding_aes_key " : " YOUR AES KEY "
}
}注:サーバーIPアドレスは、「Enterprise Trusted IP」リストで構成する必要があります。それ以外の場合、ユーザーは積極的にプッシュされたメッセージを受信しません。
参照ドキュメント:
clear_memory_commands :対話内部コマンド以前のメモリを積極的にクリアするために、文字列配列はコマンドエイリアスをカスタマイズできます。