これは、OpenAIのGPT言語モデルを使用する電報チャットボット(AIアシスタント)です。
注目すべき機能:
詳細な機能の説明を読むか、セットアップにジャンプしてください。
ボットはあなたのパーソナルアシスタントとして機能します:
? Apache Kafkaを3歳に説明してください
? Apache Kafkaは、さまざまなおもちゃ(コンピューター)が互いにメッセージを送信するのに役立つ大きなメールボックスのようなものです。 1つのおもちゃに何か言うとき、それはメールボックスにメッセージを入れ、他のおもちゃはそのメッセージを取り出して読むことができます。このようにして、彼らは話をしてすぐに物事を共有することができます!
他のユーザーがボットを使用できるようにするには、 telegram.usernames Configプロパティにそれらをリストします。
ボットにはひどいメモリがあるので、デフォルトでチャットのコンテキストを覚えておくことを期待しないでください。ただし、フォローアップの質問( Ctrl/Cmd + ↑ )で返信できます。または、プラスサインを使用してフォローアップします。
?昨日、私のトラブルはすべて遠く離れているように見えました
?ビートルズの「昨日」を引用しているように聞こえます。憧れと懐かしさについての古典的な歌です。
? +誰がそれを書いたの?
? 「昨日」はビートルズのポール・マッカートニーによって書かれました。
利用可能なコマンド:
/retry最後の質問に答える再試行/help - ヘルプを表示します/version - ボット情報を表示します最後の質問に言い換えるか、追加するには、編集するだけです。その後、ボットは更新された質問に答えます。
グループのボットから答えを得るには、質問への返信でそれを言及してください。
?ゲームオブスローンズでRamsyをプレイしたのは誰ですか?
? @@pokitokibotヘルプ? Game of ThronesのRamsay BoltonはIwan Rheonが演じました。
または、直接質問する:
? @pokitokibotゲームオブスローンズでラミーをプレイしたのは誰ですか?
? Iwan RheonはGame of ThronesでRamsay Boltonを演じました。
グループメンバーへのボット返信を行うには、 telegram.chat_ids configプロパティにグループIDをリストします。それ以外の場合、BOTは、 telegram.usernames Configプロパティにリストされていない限り、グループメンバーからの質問を無視します。
グループIDがわからない場合は、グループ内で/versionボットコマンドを実行して実行します。
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
外部リソースについて「バニラ」ChatGptに尋ねると、リモートコンテンツにアクセスできないことを認めます。
? https://sqlime.org/employees.sqlの内容は何ですか?仮定しないでください。
? AI言語モデルとして、インターネット上の外部URLにアクセスすることはできません。
ボットは、リモートコンテンツを取得してモデルに供給することで問題を解決します。
?名前1 GOの主要な機能1.23リリースhttps://tip.golang.org/doc/go1.23
? GO 1.23の主な特徴は、標準言語機能として「レンジオーバーファン」実験を含めることであり、「範囲向け」ループの「範囲」節がイテレータ関数を受け入れることを可能にします。
現在、PDF、画像、オーディオではなく、テキストコンテンツ(記事、コード、データ)のみをサポートしています。
ボットにURLにアクセスしたくない場合は、引用してください。
? 「https://antonz.org/robots.txt」の正確な内容
?外部Webサイトに直接アクセスすることはできません。ブラウザのURLにアクセスして、robots.txtファイルのコンテンツを確認できます。
短いコマンドを使用して時間を節約し、ボットに質問に具体的なことをするように依頼します。たとえば、 !proofreadコマンドであなたの文章を校正するように依頼してください:
? !校正javaプログラムを書くことができます
?改訂されたテキスト:「Javaプログラムを書くことができます。」
変更された変更:
- 文法的正しさのために「持っている」削除。 「缶」は「持っていません」。
- 適切な名詞であるため、適切な資本化のために「Java」を「Java」に修正しました。
- 「プログラム」を「プログラム」に変更して、正しいスペルと明確さを示しました。
いくつかの組み込みショートカットがあります:
bugfixコードを修正します。proofreadあなたの文章を修正します。translateテキストを英語に翻訳します。summarize 、テキストの2つの段落の概要を示します。独自のショートカットを追加できます。詳細については、 config.example.yml参照してください。
現在のチャットのカスタムプロンプトを設定するには、 /promptコマンドを使用します。
? /あなたが邪悪な天才であるとプロンプト。邪悪な笑いで返信。
デフォルトのプロンプトに戻るには、使用/prompt reset使用します。
グループチャットの/promptコマンドは、管理者( telegram.adminsプロパティにリストされているユーザー)のみが利用できます。
/imagineコマンドを使用して、OpenAIのDall-E 3モデルを使用して画像を生成します。
? /新しい時代の夜明けを想像してください
? (美しい写真)
新しい時代の夜明け
デフォルトの画像サイズは1024×1024 pxです。その他のサポートされているサイズは、1792×1024および1024×1792です。
/晴れた日1792×1024の怠zyな猫を想像してください
画像生成は非常に高価です。デフォルトでは、Groupメンバーではなく、 telegram.usernamesにリストされているユーザーに対してのみ有効になります。これは、 imagine.enabled Configプロパティで変更できます。
ボットを使用することの利便性は、小さな詳細で構成されています。時間と労力を節約できる状況がいくつかあります。
同僚からメッセージを受け取ったか、チャンネルの投稿を読んで質問したいとします。メッセージをボットに転送し、それが尋ねる明確な質問に答えるだけです。
ドキュメントについて質問するには、ファイルとして送信し、キャプションに質問を書きます。ボットはファイルの内容と回答を読み取ります。現在、PDF、画像、オーディオではなく、テキストコンテンツ(プレーンテキスト、コード、データ)のみをサポートしています。複数のファイルの送信もサポートされていません。
AIの返信がTelegramによって設定された最大メッセージ長を超える場合があります。この場合、ボットはメッセージで失敗したりスパムしたりしません。代わりに、添付のマークダウンファイルとして回答を送信します。
最後の質問に言い換えるか、追加するには、編集します( ↑ショートカット)。ボットはこれに気づき、明確な質問に応答します。
/versionコマンドを使用して、現在のチャット、ボット、およびAIモデルに関する詳細情報を印刷します。
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 129
- usernames: 6 users
- admins: 1 users
- chat IDs: []
- access to messages: True
AI information:
- model: gpt-3.5-turbo
- history depth: 3
- imagine: True
- shortcuts: bugfix, proofread, summarize, translate
/configコマンドを使用して、ボットを再起動せずに、その場でほぼすべての設定を変更します。
telegram.usernames and telegram.chat_ids )と対話することができるユーザーとチャットを追加または削除します。openai.model )、Prompt( openai.prompt )、およびParams( openai.params )を調整します。imagine.enabled )。shortcuts )を追加または変更します。特定の構成プロパティを表示するには、その名前を/configのように配置します。
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
特定の構成プロパティを変更するには、その名前と価値を/config :
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
telegram.usernamesなどのリストプロパティを操作する場合、リスト全体を再定義する代わりに、個々のアイテムを追加または削除できます。
/config telegram.usernames +cindy
/config telegram.usernames -bob
/configコマンドは、Admins telegram.admins Propertyにリストされているユーザーのみが利用できます。
大規模なグループのボットとの加熱された議論は、Openai APIの高い使用につながる可能性があります。予算全体を支出しないようにするには、 conversation.message_limitを使用してグループのメッセージ制限を設定します。message_limitconfigプロパティ。
一定期間にわたってユーザーからのメッセージの数を制限できます。例えば:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day Openai APIキーを取得します
@botfatherから電報ボットトークンを入手してください
レポをサーバーにクローンします。
git clone https://github.com/nalgeon/pokitoki.git config.example.ymlをconfig.ymlにコピーし、そこにトークンを指定します。 telegram.usernamesプロパティに自分自身を追加します。そうしないと、ボットは誰でも利用できます。
ボットを開始します:
docker compose up --build --detachボットを止めるには:
docker compose stopボットを新しいバージョンに更新するには:
docker compose stop
git pull
docker compose up --build --detach古いDocker分布の場合、 docker composeの代わりにdocker-composeを使用します。
環境を準備してください:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
構成ディレクトリとデータディレクトリを準備します。
cp config.example.yml config.yml
mkdir ./data
config.ymlでトークンとその他の設定を設定します。
テストの実行:
python -m unittest discover
ボットを開始します:
python -m bot.bot
新機能と改善については、まず問題を開いて、何を変えたいかを議論してください。
必要に応じて、必ずテストを追加または更新してください。
コードのフォーマットにBlackを使用し、メッセージメッセージには従来のコミットを使用します。
機能履歴については、リリースを参照してください。
もともとchatgpt_telegram_botに基づいていますが、プロジェクトはかなり分岐しています。