シロッコの青空ぶろぐ

高卒シニアが低学歴コンプレックス脱出のため、放送大学の人間と文化コースで学んでいます。通信制大学で学ぼうとする人を応援したい。学んで成功する人が増えれば、私のやる気も燃えるはず。

Pythonが生成したデータでChatGPTと対話をする方法(1)

(写真提供:フリーイラスト素材集 ジャパクリップ

目次

ChatGPTはデータを記憶出来ない

ChatGPTはパターンを学習しますが、データを記憶出来ません。しかし、ChatGPTはPythonを出力することができます。Pythonなら、データを記憶できます。そこで、次のように聞いてみました。

ChatGPTでPythonをプログラムしてデータを作り、そのデータに反応することができますか?

はい、できます。Pythonは一般的に使用されるプログラミング言語の1つであり、多くの人々が様々な目的で使用しています。 ChatGPTはPythonでプログラムされているため、Pythonで生成されたデータに反応することができます。

できるらしい。

「 ChatGPTはPythonでプログラムされている」

これは、 Pythonを学ぶ価値の大発見です!

Pythonでデータを生成して、ChatGPT に回答して貰うテストに挑戦します。

Pythonが生成したデータをChatGPTに回答させる

ChatGPTが教えてくれたプログラムを実行してみます。

以下は先ほどの回答の続きです。

例えば、以下のようにPythonコードを使用して、ChatGPTにデータを生成し、そのデータに対する応答を得ることができます。

# 必要なライブラリをインポート
import openai
import json

# APIキーをセットアップ
openai.api_key = "INSERT_API_KEY_HERE"

# ChatGPTに送信するテキストをセットアップ
text = "こんにちは、ChatGPT。今日はどうですか?"

# ChatGPTにテキストを送信し、レスポンスを取得
response = openai.Completion.create(
    engine="davinci", prompt=text, max_tokens=60
)

# レスポンスからテキストを取得して表示
print(response.choices[0].text.strip())

上記のPythonコードでは、OpenAI APIキーをセットアップしています。そして、ChatGPTに送信するテキストをtext変数にセットアップしています。次に、OpenAI APIを使用してopenai.Completion.create()を呼び出し、engine引数に「davinci」、prompt引数にtext変数を指定して、ChatGPTにテキストを送信しています。レスポンスはresponse変数に保存され、その中から返されたテキストを取得して、最後に表示しています。

このように、Pythonを使用してChatGPTにデータを生成し、そのデータに反応することができます。

openai.api_key = "INSERT_API_KEY_HERE"

記事を書き終えて、今みると、api_key を取得しないとダメじゃん・・・Orz

失敗は再現率が高く、お役にたてる情報が提供できたかもしれません。

先頭に「# coding: utf-8」がない

このコードを見ると、エラーが出るのが予測できます。前回のPythonプログラミングで学びました。

# coding: utf-8
# ↑を追記しました
# 必要なライブラリをインポート
import openai
import json

「testopenai.py」として保存。

Windows PowerShell を起動して、ファイルを作ったディレクトリへ移動します。

そして、「python testopenai.py」として実行します。

エラー・・・Orz

次は、このエラーに対処します

ModuleNotFoundError: No module named 'openai'

エラーが出たら、エラーメッセージの意味を知ることと、対処方法を知らなければなりません。

'openai'というモジュールがないと言っています。

どうすればいいんでしょう?

以前なら、エラーメッセージでググって、対処方法を解説しているサイトを探していましたが、今回はChatGPTに聞いてみます。

ModuleNotFoundError: No module named 'openai' というエラーがでます。対処を教えて

このエラーは、 openai モジュールがPythonにインストールされていないことを示しています。したがって、openai モジュールをインストールする必要があります。

openai モジュールをインストールするには、次の手順に従います。

  1. Pythonのパッケージ管理ツールであるpipを最新のバージョンに更新する。以下のコマンドをコマンドラインに入力して、アップグレードを実行します。
    pip install --upgrade pip
  2. 次に、openaiをインストールします。以下のコマンドをコマンドラインに入力して実行します。
    pip install openai

まず、「pip」がわかりません。Python の対話モードから使うのでしょうか?

pipを使うにはどうすればいいですか?

pip はPythonの標準的なパッケージ管理ツールであり、Pythonパッケージのインストール、アップグレード、削除、検索などを行うことができます。以下は、pip を使用してPythonパッケージをインストールする方法です。

  1. コマンドプロンプトまたはターミナルを開きます。

(以下略)

コマンドプロンプトから使うらしい。

Windows PowerShell で「pip + [Enter]」と入力してみました。

叱られて、使用方法を教えてくれました。

Usage:  pip <command> [options]

「pip -h」とすればよかったですね。

「pip」の使い方が分かったので以下の指示を実行します。

「pip install --upgrade pip」がエラー

エラーがでました。

「 python.exe -m pip install --upgrade pip」を実行しろと言います。

なんで? と思って、Bing Chat に聞いてみます。

  1. pythin の pip とは何ですか? 使い方を教えて。
  2. pythonの対話モードの中で実行するのですか?
  3. エラーが出て「 python.exe -m pip install --upgrade pip」を実行しろと言われました。

そのコマンドは、pip自身をアップグレードするためのものです。python.exe -m pip install --upgrade pipと入力することで、pipが最新バージョンにアップグレードされます。エラーが出た場合、pipのバージョンが古い可能性があるため、このコマンドを実行することで問題が解決するかもしれません。

「なるほど、わかりました」と返事。

「 python.exe -m pip install --upgrade pip」でバージョンアップに成功しました。

pip install openai

以下が openai モジュールをインストールした様子です。

大量のエラーはおかしくね?

ようやく実行できたのですが、以下のような大量のエラー。

Bing Chat に「Pythonが生成したデータでChatGPTと対話をする方法」を聞いてみます。ChatGPTは古いですし、ウソをつくときがあるからです。

Bing Chat に聞いてやり直し

Pythonコードを使用して、ChatGPTにデータを生成し、そのデータに対する応答を得る方法を教えてください。

Pythonを使用して、ChatGPTにデータを生成し、そのデータに対する応答を得る方法は次のとおりです。

まず、OpenAIのAPIキーが必要です。次に、openaiパッケージをインストールします。次に、以下のようなコードを使用して、ChatGPTにデータを生成し、そのデータに対する応答を得ることができます。

import openai_secret_manager

assert "openai" in openai_secret_manager.get_services()
secrets = openai_secret_manager.get_secret("openai")

import openai
openai.api_key = secrets["api_key"]

prompt = 'YOUR PROMPT HERE'
response = openai.Completion.create(
    engine="davinci",
    prompt=prompt,
    temperature=0.7,
    max_tokens=150,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0
)

print(response['choices'][0]['text'])

 

このコードでは、YOUR PROMPT HEREという部分を自分で設定したプロンプトに置き換えます。また、temperatureやmax_tokensなどのパラメータも調整することができます。

こっちの方が正解っぽい。このコードなら動きそうです。

OpenAIのAPIキーが必要です

OpenAIのAPIキーを取得する方法を教えて

OpenAIのAPIキーを取得するには、まずOpenAIのウェブサイトにアクセスして、アカウントを作成します。次に、ダッシュボードに移動し、「APIキー」セクションで「新しいAPIキーを作成」ボタンをクリックします。そこで、APIキーの名前と説明を入力し、「作成」ボタンをクリックします。これで、新しいAPIキーが作成されます。

OpenAIのウェブサイトのURLを教えて

OpenAIのウェブサイトのURLは https://openai.com です。

OpenAI APIキーは無料ですか?

OpenAIのAPIキーは無料ではありません。ただし、無料トライアルがあります。無料トライアルが終了した後は、使用した分だけ請求されます12。

OpenAI APIキーを使用するとどのような費用がかかりますか?

OpenAI APIキーを使用する際の費用は、使用するモデルやリクエストの長さなどによって異なります。例えば、プロンプトが10トークンで、davinciエンジンから90トークンの完了を1つリクエストした場合、リクエストは100トークン使用し、費用は$0.002になります1。費用を抑えるためには、プロンプトの長さや最大応答長を減らす、best_of/nの使用を制限する、適切な停止シーケンスを追加する、またはトークンあたりの費用が低いエンジンを使用することができます1。

Webサービスを公開する予定もないので、大きな金額にはならないようです。

OpenAIのAPIキーを取得する手続きをやってみます。

提示されたプログラムのパラメータを聞く

temperature とはどのようなパラメータですか?

temperatureは、OpenAIのGPTモデルが生成するテキストの多様性を制御するパラメータです。値が高いほど、より多様なテキストが生成されます。値が低いほど、より予測可能なテキストが生成されます。

temperature を変更するとどのような影響がありますか?

temperatureを変更すると、生成されるテキストの多様性が変化します。値が高いほど、より多様なテキストが生成されます。値が低いほど、より予測可能なテキストが生成されます。ただし、値を高くしすぎると、意味のないテキストが生成される可能性があります。逆に、値を低くしすぎると、退屈で予測可能なテキストが生成される可能性があります。

設定可能な最小値、最大値はいくらですか

temperatureの設定可能な最小値は0.0で、最大値は1.0です。ただし、この範囲内であれば、任意の値を設定することができます。

なるほど、temperature=0.7, の意味がわかりました。

max_tokens とはどのようなパラメータですか?

max_tokensは、OpenAIのGPTモデルが生成するテキストの最大トークン数を制御するパラメータです。トークンとは、テキストを分割した単位のことで、通常は単語に相当します。max_tokensを設定することで、生成されるテキストの長さを制御することができます。

max_tokens の単語数とは、日本語の場合はどうなりますか?

max_tokensは、OpenAIのGPTモデルが生成するテキストの最大トークン数を制御するパラメータです。日本語の場合、トークンとは、テキストを分割した単位のことで、通常は単語に相当します。ただし、日本語では単語が明確に区切られていないため、トークン化の方法によってトークン数が異なる場合があります。そのため、max_tokensを設定する際には、使用するモデルやトークン化方法に応じて調整する必要があります。

ChatGPTに日本語文章のトークン数を聞いてみた

「日本語の場合、トークンとは、テキストを分割した単位のことで、通常は単語に相当します。」 この文章のトークン数はいくつですか?

この文章のトークン数は、23になります。

以下が23個のトークンです。

「日本語の場合」「、」「トークン」「とは」「、」「テキスト」「を」「分割した」「単位」「のことで」「、」「通常は」「単語」「に」「相当します」「。」

日本語の出力を文字数で指定しても守るのが難しいっぽい。

文字数より、トークン数で指示すべきということですか?

はい、トークン数で指示することがより適切です。理由は、トークン数は生成されたテキストの長さをより正確に決定することができるためです。ChatGPTは、トークン単位でテキストを生成するため、指定されたトークン数に近い長さの応答を生成することができます。

一方、文字数は、異なる言語や単語の長さによって生成されるテキストの長さが異なるため、より不正確な方法で応答の長さを指定することになります。例えば、日本語の場合、一般的な単語の長さは英語よりも長く、同じ文字数のテキストでもトークン数は異なります。そのため、トークン数で指示することがより正確であると言えます。

top_pとはどのようなパラメータですか?

top_pは、OpenAIのGPTモデルが生成するテキストの多様性を制御するパラメータです。このパラメータは、確率分布の累積確率が指定された値を超えるまで、トークンを選択することができます。値が高いほど、より多様なテキストが生成されます。値が低いほど、より予測可能なテキストが生成されます。

top_p の最適な値は何ですか?

top_pの最適な値は、使用するモデルやタスクに応じて異なります。一般的に、値を高くすると、より多様なテキストが生成されますが、意味のないテキストが生成される可能性があります。逆に、値を低くすると、より予測可能なテキストが生成されますが、退屈で予測可能なテキストが生成される可能性があります。最適な値を見つけるためには、実験的に調整することができます。

うーん、よく分からない。

    top_p=1,
    frequency_penalty=0,
    presence_penalty=0

とりあえず、このままで。

"davinci"、'choices'、'text'は何?

Pythonコードを使用して、ChatGPTにデータを生成し、そのデータに対する応答を得るPython コードを教えてもらいました。 engine="davinci" の"davinci"とは何ですか? response['choices'][0]['text'])の'choices'とは何ですか? 'text'とは何ですか?

「Davinci」は、OpenAIが提供するGPT-3言語モデルの一つです。このモデルは、自然言語理解と生成に優れており、多くのタスクで高い性能を発揮します。

response['choices'][0]['text'] は、OpenAI APIから返される応答の構造を表しています。 choices は、APIが生成した複数の応答候補を含むリストです。 [0] は、そのリストの最初の要素(つまり、最初の応答候補)を選択しています。 ['text'] は、その応答候補のテキスト部分を取得するために使用されます。

 

「Davinci」は、GPT-3のこと。

response['choices'][0]['text']は複数の応答候補があり、[0]は先頭のデータ。

たぶん、いくつの答えを生成しかたは、リストの長さを聞けば分かりそうです。

だいぶ長くなりました

ChatGPTはデータを記憶しません。Pythonを経由すればデータを指定した対話ができるのではないかと考え、ChatGPTに聞いてみると、Python コードを教えてくれました。

しかし、実行しようとすると大量のエラー。
そこでBing Chatに聞いてみます。

こちらは、コードも具体的で使用されているパラメータも納得しました。

本日はここまでとします。

次回は APIキーを取得し、Bing Chat に教わったコードを動かすことに挑戦します。

最後まで読んでいただきありがとうございます。

みなさんのお役に立てば幸いです。