テレグラムで自分自身のChatGPTボットを所有してください

テレグラムでChatGPTボットを作成してください

最近、ChatGPTへのアクセスを提供するミラーサイトが現れ始めました。しかし、それらを使用することは安全ではありません。なぜなら、そのようなサイトはあなたのすべてのやり取りを収集し分析する可能性があるからです。特に、完全に無料でそのようなアクセスを提供するサイトは危険です。いくつかの国ではChatGPTへのアクセスがブロックされており、OpenAIも一部の国へのアクセスを制限しています。また、一部のユーザーにとってはChatGPTの月額料金20ドルは高額です。

そこで今日は、Telegramメッセンジャー上でChatGPTに基づいた独自のチャットボットを作成します。

これは非常に簡単に行うことができ、公式ウェブサイトchat.openai.comよりも便利な場面もあります。

Pythonでボットを作成し、OpenAI APIを介してリクエストを送信します。

登録時には、OpenAIから5-18ドルの助成金が提供されることもあります。ただし、現在助成金が発行されていない場合でも、5ドルはChatGPT v3.5のトークン約650,000個に十分です。これはチャットにとっては多いです。

比較のために、マーガレット・ミッチェルの「風と共に去りぬ」には約420,000単語、レオ・トルストイの「戦争と平和」には590,000単語が含まれています。

さらに、APIは無料のchat.openai.comのバージョンよりも高速に動作し、月額20ドルの有料サブスクリプションのchat.openai.comとは異なり、APIを使用する場合は使用した分だけ支払うため、リクエストが少ない場合にはよりお得です。

この記事が公開される時点では、ChatGPT-4 APIがまだ一般に公開されていないかもしれませんが、GPT-3.5のバージョンでも多くのタスクをうまく解決できます。

それでは、始めましょう。

まず、Telegram BOTを作成する必要があります。そのためには、Telegramの主要なボットであるBotFatherにボットの作成を依頼する必要があります。Telegramの検索バーで@botfatherと入力し、それを開き、/startを押します。

新しいボットを作成するためには、/newbotと入力し、その後、ボットの名前を入力し、一意の名前を考える必要があります。ただし、名前は必ず「bot」で終わるようにしてください。

私はボットをsinenko_gpt4_botと名付けます。なぜなら、興味深い名前はすでに使われているからです。

次に、ボットを代表するユーザー名を指定する必要があります。これも「bot」で終わるようにしてください。

私も同じ名前、sinenko_gpt4_botとします。その後、BotFatherからアクセスするために使用するトークンが与えられます。

OpenAIからChatGPTのAPIキーを取得するには、リンクに従って登録する必要があります。

登録後、新しいAPIキーを作成し、保存してください。

それでは、プロジェクト用のディレクトリを作成しましょう。私はそれをTelegramBotと呼びます。このディレクトリ内にPythonスクリプトを作成します。私はそれをbot.pyと呼びます。Pythonのライブラリtelebot、requests、JSONが必要です。ただし、まずはプロジェクトディレクトリに新しいPython環境を作成しましょう(これは必須ではありませんが、私は各プロジェクトごとに独自の環境を作成することに慣れています)。

ターミナルを開き、プロジェクトディレクトリに移動し、以下のコマンドを実行します

ここで、tbotは環境の任意の名前です。新しい環境が正常に作成されたら、プロジェクトディレクトリに環境名のフォルダが表示されます。私の場合はtbot_envです。次に、アクティベーションスクリプトを実行して環境をアクティベートする必要があります。

注意!Windows 8以降では、環境をアクティベートする際に実行ファイルの実行が禁止されるエラーが表示されることがあります。この問題を解決するには、以下のコマンドを実行してください。

次に、pipを更新し、作業に必要なライブラリをインストールしましょう。

これで、以下のコマンドでスクリプトを実行しましょう。

それでは、Telegramを開いて、FatherBotからもらったリンクを使ってボットとのチャットに移動しましょう。私の場合はt.me/sinenko_gpt4_botです。

そして、Startボタンをクリックするか/startコマンドを入力します。その後、私たちは挨拶のメッセージ「Hi, I’m the Telegram bot ChatGPT!」を受け取るはずです。これは、私たちのボットが動作してユーザーのメッセージを正常に処理していることを意味します。このコードはポーリング機能を通じて動作し、スクリプト自体が1秒ごとにTelegramサーバーにアクセスし、新しいメッセージがあるかどうかを確認します。これは、スクリプトがローカルコンピュータ上で実行されている場合や、サーバーが白いIPアドレスとインターネット上のドメインを持っていない場合に非常に便利です。

さて、ユーザーが入力したテキストに対する処理を追加しましょう。そのために、start 関数の後に以下のコードを追加します。これにより、ユーザーが入力したメッセージに対して「OK」と応答します。

さあ、ボットをテストしてテキストを書いてみましょう。

今、ユーザーからの受信メッセージを受け入れて応答する方法を学びました。

受信したメッセージを GPT チャットにリダイレクトし、その回答をユーザーに返す必要があります。

API にリクエストを行うためには、JSON 形式で URL にリクエストを送信する必要があります。

リクエストは次のようになります:

GPT チャットにユーザーリクエストを送信するには、メッセージ配列内に{“role”: “user,” “content”: ‘some user message’}を渡す必要があります。

ただし、ChatGPT に対話の役割を理解させるために、{‘role’: ‘system’,’content’: ‘You are my assistant.’}を渡すこともできます。

ChatGPT に対話全体を記憶させたい場合は、すべての過去の対話を各リクエストに渡す必要があります:

{“role”: “user,” “content”: ‘first user message’},

{“role”: “assistant,” “content”: ‘first answer of ChatGPT’},

{“role”: “user,” “content”: ‘second user message’},

{“role”: “assistant,” “content”: ‘second answer of ChatGPT’},

{“role”: “user,” “content”: ‘some user message’}

ただし、過去の対話全体を送信する際にもトークンが消費されることに注意してください。

さあ、ユーザーメッセージを GPT チャットに転送するコードをボットのコードに追加しましょう。

さあ、スクリプトを実行してメッセージを書いてみましょう。

これで使用可能な完全な機能を備えたチャットボットを持つことができました。

API には対話全体が送信されます。対話が大きくなるとトークンを消費するのは無駄ですので、メッセージを送信した後には、メッセージ配列から最初のメッセージを削除することができます。たとえば、最後の40件のメッセージを残すことができます。これで十分です。古いメッセージをクリアするには、以下のコードを送信後に追加します:

40件以上のメッセージがある場合は、最初のメッセージを除く最も古いメッセージを削除します(最初のメッセージにはボットの役割が格納されていますので、削除しません)。

また、ボットの役割を誰にでも変更することもできます。文章から詩を作ったり、ホラーストーリーを考えたり、数学の問題を解いたりすることもできます。そのためには、システムメッセージの content フィールドを変更するだけです。以下のように変更しましょう:

実行して動作を確認しましょう:

ちなみに、’messages’ 変数の翻訳者の役割では、システム以外のすべてのメッセージを削除することができます。これにより、トークンを非常に節約することができ、5ドルで30万語以上を翻訳するのに十分です。

この記事では、最も簡単なボットの例を示しましたが、このボットは無限に改善することができます。また、各個別のテレグラムユーザーごとにチャット分割を作成し、データベースに保存し、広告や購読を追加することもできます。API リクエストが失敗した場合のエラーハンドラも不足しています。

しかし、これらは他の記事のトピックです:)

GitHub 上のボットへのリンク。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more