ChatGPT (Chat Generative-Pre-Trained Transformer) を取り巻く熱狂的な興奮を見逃すことはありません。 画像を作成し、コード、歌、詩を書き、大小を問わず私たちの問題を解決しようとします。 Star Trek の Kobayashi Maru シミュレーションには勝てないかもしれませんが、Python と Bash のコードを簡単に書くことができます。 ワンプッシュで書き込みも可能 Gコード のために 最高の 3D プリンター 私たちはまだそれを試していませんが クレアリティ エンダー 2 プロ.
通常、私たちはブラウザ経由で ChatGPT と対話しますが、このハウツーでは、謙虚な接続を行う特別な Python ライブラリを使用します。 ラズベリーパイ 強力な AI に接続し、ほぼすべての質問に答えるツールを提供してくれます。 このプロジェクトは Raspberry Pi 専用ではありません。 Windows、macOS、Linux PC でも使用できます。 その上で Python を実行できる場合、このプロジェクトも機能する可能性があります。
Raspberry Pi を使用している場合、このプロジェクトではほとんどすべてのモデルを使用できます。これは、インターネット接続を介して単純に要求を行っているためです。 ただし、全体的に最もスムーズなパフォーマンスを得るには、 ラズベリーパイ4 またはラズベリーパイ 3B+。
Raspberry Pi の ChatGPT API キーの設定
Raspberry Pi と Python で ChatGPT を使用する前に、まず API キーを設定する必要があります。 このキーにより、コードを OpenAI アカウントに接続し、AI を使用してクエリに答えたり、コードを書いたり、詩を書いたり、次のヒット曲を作成したりできます。
1. OpenAI アカウントにログインします。
2. メニューをクリックして、 API キーを表示します。
3. [Create new secret key]をクリックして API キーを生成します。 このキーをコピーして安全な場所に貼り付けてください。再度表示されることはありません。 API キーは決して共有しないでください。それらはアカウントに固有のものであり、発生した費用はアカウントから発生します。
Raspberry Pi に ChatGPT Python API をインストールする
API キーが手元にあるので、Raspberry Pi と具体的には Python を構成して、openAI Python ライブラリ経由で API を使用できます。
1. ターミナルを開き、Raspberry Pi のソフトウェアを更新します。 このコマンドは 2 つあります。 最初に更新を実行し、Pi のソフトウェア リポジトリのリストが最新であることを確認します。 そうでない場合は、最新の詳細をダウンロードします。 「&&」は、最初のコマンド (更新) が正常に実行された場合、ソフトウェアをアップグレードする 2 番目のコマンドが開始されることを意味します。 「-y」フラグは、ユーザー入力なしでインストールを受け入れるために使用されます。
sudo apt update && sudo apt upgrade -y
2. pip パッケージ マネージャーを使用して、openai Python ライブラリをインストールします。
pip3 install openai
3. ホームディレクトリに隠されている.bashrcファイルを開きます。 このファイルは、Raspberry Pi OS と Python が実行可能ファイルや構成ファイルを検索できるパスを設定する必要がある場所です。
nano ~/.bashrc
4. キーボードを使用してファイルの一番下までスクロールし、次の行を追加します。
export PATH="$HOME/.local/bin:$PATH"
5. CTRL + X、Y、Enter の順に押してファイルを保存します。
6. .bashrc 構成をリロードして、構成を完了します。 次に、ターミナルを閉じます。
source ~/.bashrc
Raspberry Pi 用の ChatGPT チャットボットの作成
チャットボットの目標は、ユーザーが設定した質問に応答することです。 応答がテキスト形式である限り、このプロジェクト コードは機能します。 ユーザーが終了したら、単語を入力して終了するか、CTRL + C を押してコードを停止できます。 事実とトリビアの質問でテストし、Python コード、Bash、および 3D プリンター用の小さな G コードを書くように依頼しました。
1. ソニーを起動、組み込みの Python エディター. これは、Raspberry Pi メニューの[プログラミング]>>[Thonny]にあります。
2. openai ライブラリをインポートします。 これにより、Python コードがオンラインになり、ChatGPT になります。
import openai
3. オブジェクト model_engine を作成し、そこに好みのモデルを保存します。 davinci-003 が最も有能ですが、(有能な順に) 「text-curie-001」、「text-babbage-001」、「text-ada-001」も使用できます。 ADA モデルのトークン コストは最も低くなります。
model_engine = "text-davinci-003"
4. オブジェクト open.api_key を作成し、API キーを保存します。 引用符の間に API キーを貼り付けます。
openai.api_key = "YOUR API KEY HERE”
5. ユーザーからのクエリ (質問) を引数として受け取る関数 GPT() を作成します。 これは、任意の質問に対して関数を再利用できることを意味します。
def GPT(query):
6. クエリの詳細を ChatGPT に渡す応答オブジェクトを作成します。 選択したモデルとクエリを使用して質問をします。 トークンの最大支出を 1024 に設定しましたが、実際には、これを微調整できるように、はるかに少ない支出にします。 「温度」は、応答がどれだけクリエイティブになるかを制御します。 値が高いほど (たとえば 0.9)、モデルはより創造的になります。 0.5 は、創造性と事実の適切な組み合わせです。
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
7。 ChatGPT からデータを返し、応答テキストと使用されたトークンの数を取り除きます。 返されるデータはディクショナリ/JSON 形式であるため、キーを使用して正しいデータを明確にターゲットにする必要があります。 これらのキーは関連する値を返します。
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
8. タプルを作成し、それを使用して、チャットを終了するために使用できる文字列のリストを保存します。 タプルは不変です。つまり、タプルは作成および破棄できますが、実行中のコードによって更新されることはありません。 それらは完璧な「設定して忘れる」構成を行います。
exit_words = ("q","Q","quit","QUIT","EXIT")
9. Python にコードを試行して実行するように指示するには、try の後に while True: を続けます。
try:
while True:
10. ユーザーへの指示を出力する、この場合はチャットを終了する方法。
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
11. カスタム プロンプトを使用してユーザー クエリをキャプチャし、query というオブジェクトに格納します。
query = input("What is your question?> ")
12. 条件付きテストを使用して、exit_words のいずれかがクエリに単独で存在するかどうかを確認します。 これらの単語をクエリで使用できますが、それらが唯一の単語である場合、チャットは終了します.
if query in exit_words:
13. 次のように設定します。 exit_words が存在する場合、 コードは「ENDING CHAT」を出力します と 次に、break を使用してコードを停止します。
print("ENDING CHAT")
break
14. 別の条件を作成します。 exit_words が見つからない場合、この条件は常に実行されます。
else:
15. ChatGPT クエリを実行する と 出力を res (応答) と usage (使用されたトークン) の 2 つのオブジェクトに保存します。
(res, usage) = GPT(query)
16. ChatGPT 応答を Python シェルに出力します。
print(res)
17. 20 = を続けて出力して、ChatGPT テキストの間にバリアを作成し、使用されたトークンの数を出力します。
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
18. ユーザーが CTRL+C を押した場合にアクティブになる例外ハンドラーを作成します。 コードが終了する前に、Python シェルに終了メッセージを出力します。
except KeyboardInterrupt:
print("nExiting ChatGPT")
19. コードを ChatGPT-Chatbot.py として保存します と [実行]をクリックして開始します。 チャットボットに質問し、終了したら exit_words の 1 つを入力するか、CTRL+C を押して終了します。
完全なコード リスト
import openai
model_engine = "text-davinci-003"
openai.api_key = "YOUR API KEY HERE"
def GPT(query):
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
exit_words = ("q","Q","quit","QUIT","EXIT")
try:
while True:
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
query = input("What is your question?> ")
if query in exit_words:
print("ENDING CHAT")
break
else:
(res, usage) = GPT(query)
print(res)
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
except KeyboardInterrupt:
print("nExiting ChatGPT")