【超簡単】PythonでChatGPTを使ってAIチャットボットを作ろう!ChatGPTとPythonの最強コンビ!~プログラム公開中~
Summary
TLDRこの動画では、ChatGPTをPythonプログラムからAPI接続で利用する方法を紹介しています。企業や政府などが業務効率化のためにChatGPTのAPI利用を検討している背景、API経由での使用が学習データとして活用されない安全性、およびAPI利用料金について説明しています。実際のAPI接続のデモを通して、設定から質問応答の基本的な流れ、トークン消費の管理、そしてtkinterを使った簡単なGUIアプリケーションの作成方法までを、段階的に解説しています。この動画は、ChatGPTをビジネスや日常の業務に統合したいと考えている人々に向けた、実用的なガイドとなっています。
Takeaways
- 🔍 ChatGPTを無料で使用する際、提供した情報がOpenAIによって学習データとして利用される可能性がある。
- 🔐 API経由でChatGPTを使用すると、提供した情報が学習データとして利用されないため、企業や政府などが好んで使用。
- 💻 PythonプログラムからAPIを通じてChatGPTを使用する方法を紹介。
- 💸 2023年4月時点でのChatGPTのAPI利用料は、1000トークンあたり0.002ドル(約0.2~0.3円)。
- 📊 日本語の使用では1文字が1トークン、漢字で場合によっては2トークン消費する場合もある。
- 📝 APIキーの取得と設定方法について説明し、OpenAIのWebサイトからAPIキーを取得するプロセスを案内。
- 🖥️ PythonでOpenAIライブラリを使用し、ChatGPTとの対話を実現するプログラムの基本構造を解説。
- 🔧 環境変数からAPIキーを読み込む方法により、プログラムの安全性を高める方法を提案。
- 👩💻 質問とChatGPTからの回答を画面上に表示する簡易アプリケーションの作成方法を紹介。
- ✅ プログラムによるChatGPTの利用が意外と簡単であり、さまざまな応用が可能であることを強調。
Q & A
なぜ企業や政府はAPIを通じてChatGPTを利用することが多いのですか?
-APIを通じてChatGPTを利用する場合、利用した情報がOpenAIによって学習に使用されないため、機密情報や個人情報の保護が可能です。これにより、業務効率化を図りつつ、情報セキュリティも確保できるためです。
ChatGPTのAPI利用料はどのくらいですか?
-2023年4月時点でのChatGPTのGPT-3.5のAPI利用料は1000トークンあたり0.002ドル、日本円で約0.2~0.3円となっています。
トークンはどのように消費されますか?
-トークンは質問と回答の両方で消費され、英語の場合と比べて日本語では約1.5倍のトークンを消費します。また、対話を続けるためには過去のメッセージも入力する必要があり、トークン消費が増加します。
APIキーはどのようにして取得しますか?
-OpenAIのウェブサイトにログイン後、API KeysのセクションからCreate New Secret Keyボタンをクリックし、指示に従ってキーを生成し、コピーします。
無料でChatGPTのAPIを使用するにはどうすればよいですか?
-新規登録者は初めての3カ月間、18ドル分のAPI利用が無料です。この枠内であれば追加料金なしでAPIを試用することができます。
PythonプログラムからChatGPTにAPI接続する基本的な手順は何ですか?
-まず、OpenAIのライブラリをインストールし、APIキーをセットアップします。次に、openai.ChatCompletion.createメソッドを使ってリクエストを行い、応答を処理します。
環境変数からAPIキーを取得する利点は何ですか?
-APIキーを環境変数に保存することで、プログラムのコード中にキーが露出することなく、セキュリティを向上させることができます。
ChatGPTの応答から必要な情報を取り出すにはどうすればよいですか?
-応答のJSON構造から、必要な部分を特定し、プログラムで適切なキーを指定してデータを抽出します。例えば、'response.choices[0]["message"]["content"].strip()'というコードで応答テキストを取得できます。
ChatGPTのAPIでトークン数を制限するにはどうすればよいですか?
-APIリクエストのパラメータとして'max_tokens'を設定することで、応答のトークン数を制限できます。例えば、max_tokensを100に設定すると、応答は100トークンまでで停止します。
Outlines
🤖 ChatGPTのAPI利用とそのメリット
この段落では、ChatGPTをPythonプログラムからAPI接続する方法とその理由について説明しています。多くの企業や政府機関が業務効率化のためにChatGPTの活用を検討している中、情報がOpenAIに取得される懸念があります。しかし、APIを通じた利用では情報が学習に使われないため、機密情報保護の観点からAPI利用が推奨されています。APIを利用することでChatGPTを業務に統合し、自動化を進めることができる利点があることを紹介しています。また、ChatGPTのAPI利用料金についての説明も含まれており、2023年4月時点での料金が紹介されています。
💳 APIキー取得と支払い設定
この段落では、ChatGPTのAPIキーの取得方法と、支払い方法の設定について詳細に説明しています。支払い限度額の設定方法や、APIキーの取得手順、そのキーを安全に保管する方法について言及しています。また、これらの設定を完了させることで、ChatGPTのAPIを利用する準備が整うことが強調されています。
🛠 PythonプログラムでのChatGPT利用
この段落では、Pythonを用いてChatGPTのAPIに接続し、利用する具体的なプログラム作成方法について説明しています。プログラムの基本構造から始め、APIキーの安全な管理方法、トークン数の把握、そして実際にChatGPTに質問を投げて回答を得る処理までが解説されています。また、トークン数を制限する方法や、回答の多様性を調整するパラメーターについても触れられており、APIを利用する上での微調整の重要性が示されています。
📝 質問アプリの開発と応用
この段落では、ChatGPTを利用した質問応答アプリの開発過程が説明されています。tkinterを使ったGUIの基本的な構成から始め、ユーザーが質問を投げられるようにする方法、ChatGPTからの回答を画面に表示させる処理、そして質問ごとのトークン数を追跡する機能の実装について述べられています。最終的には、ChatGPTの持つ能力を生かした応用プログラムがどのように作成できるか、そしてその過程での実際の利用料金が意外と低価格であることが強調されています。
Mindmap
Keywords
Please replace the link and try again.
Highlights
PythonプログラムからAPI接続を介してChatGPTを使用することで、企業や政府機関の業務効率を向上させる方法の紹介。
無料版ChatGPTの利用に関する懸念:情報がOpenAIに取得され、AIの学習に利用される可能性があること。
API接続の利点:APIを通じて利用された情報はOpenAIの学習には使用されない。
2023年4月時点でのChatGPTのAPI利用料は1000トークンあたり0.002ドルであり、英語と日本語のクエリに対するトークン消費の詳細。
連続した対話のために以前の質問と回答を提供する必要があり、トークン消費が増加する。
OpenAIアカウントの設定とChatGPTのAPIキー生成についての紹介。
Pythonでのプログラミング:OpenAIライブラリのインストールとAPI通信のための基本設定。
APIキーを環境変数から取得することでセキュリティを強化し、ハードコーディングを避ける。
max_tokensやtemperatureなどのパラメータを最適化することにより、応答の制御を向上させる説明。
ChatGPTと対話するためのPythonで開発された基本的なアプリケーションインターフェース。
質問を継続しながらトークン消費を追跡できるようにプログラムを拡張する。
関連する応答のために一つの質問から次の質問へのコンテキストを維持する機能の実装。
開発されたアプリケーションでの質問形成から応答の受信、トークン消費の計算までの完全なワークフロー。
最小限のプログラミング労力でアプリケーションにChatGPTを統合する際の全体的な簡便さと可能性。
さまざまなタスクにChatGPTのAPIを使用することのコスト効率と実用的な応用に関する反省。
Transcripts
以前の動画でChatGPTの使い方をご紹介しましたが、
今回は、PythonプログラムからAPI接続で
ChatGPTを使ってみようと思います。
せっかく、無料で使えるChatGPTを、なぜ、 PythonプログラムでAPI接続で使うのか
についてですが、最近、企業や政府や市町村などの 役所も、業務効率化の為に、ChatGPTを活用しようと
話題になっています。
しかし、ChatGPTを無料で使うと、その情報は、 OpenAIに取得され、AIの学習で利用される
可能性があると言われています。
もちろん、ChatGPTに質問をするだけであれば、 単に、Google検索で調べものをすることと変わりませんので
問題ありません。
ただ、企業の社内文章をChatGPTに投げて要約してもらうと、 場合によっては、機密情報や個人情報が、
学習に使われると、困ります。
一方、ChatGPTにAPIで接続して、利用した情報は、 OpenAIは学習には活用しないと言っています。
それらの理由から、企業や政府、市町村では、 ChatGPTをAPIで利用するケースが多いようです。
さらに、PythonプログラムからAPI接続でChatGPTを 利用できれば、様々な業務の中に ChatGPTを組み込むことが
出来ますので、業務の自動化も可能になってきます。
それらの理由から、今回は、ChatGPTをPythonプログラム からAPI接続で利用する方法をご紹介したいと思います。
まず、ChatGPTのAPIの利用料についてご紹介します。
2023年4月時点での、ChatGPTの GPT3.5の API利用料は 1000トークンあたり、0.002ドルです。
日本円で0.2~0.3円といったところです。
1000トークンとは、英単語1つで1トークンと言われて いますが、日本語の場合、1文字で1トークン、漢字などの場合、
2トークン消費することもあるようですので500~1000文字 で1000トークンという計算になります。
また、トークンの消費は、質問だけではなく、ChatGPTからの 回答もカウントに入りますので、長い回答が返ってくると、
1回のやりとりで 結構消費してしまいます。
実際のAPI処理でトークン数を出力した結果がこちらです。
「ChatGPTについて教えてください。」という同じ質問を、 日本語と英語で実施したところ、
英語では、240トークン消費したことに対して、日本語では、 349トークンの消費となり、およそ1.5倍消費してしまいました。
さらに、ChatGPTに対して、続きの質問をする場合、 前の話を引き継いで回答を得るためには、2回目以降は、
それまでの質問や、回答も与える必要があり、 そこでもトークンを消費します。
例えば、1回あたり、300トークンだとします。
それに対して、2回目は、1回目の結果も投げる為、600トークン を消費し、合わせて900トークン消費したことになります。
そして、それを繰り返すと、5回目で、GPT3.5のAPI接続における 上限トークンの4096を超えてしまいます。
ですので、たとえ1000トークンが0.2円だとしても、ちょっと使うと、 すぐに1円分が課金されるので、注意が必要です。
ただし、個人利用の場合、最初から3カ月間は、 18ドル分が無料で使えるようです。
私の場合、2月に利用を開始したので、5月1日まで無料枠が 使えるようですので、せっかくなので、使ってみようと思います。
まず、OpenAIのトップページに接続します。
そして、上部のメニューの「Developers」をクリックし、 「Overview」をクリックします。
そして、既に、ChatGPTのアカウントがある方は、Loginをします。
また、まだアカウントが無い場合は、「サインアップ」を クリックして、先にアカウントを作成します。
アカウントの作成方法などは、以前の動画をご覧ください。
ログインが完了すると、まずは、初期設定をします。
画面、左側のSettingsをクリックすると、 このような画面が表示されます。
ここでは、組織名を設定します。
個人の場合は、Personalのままで良いです。
そして、次に、支払い方法を設定します。
左メニューの「Billing」の中の「Overview」をクリックします。
そして、SetupPaidAcountをクリックします。
そして、I'm an individual」を選択します。
そして、クレジットカード番号などの情報を入力します。
支払い方法の設定が完了すると、 支払い限度額を設定することも出来ます。
例えば、初期設定では96ドルで通知メールが届き、 120ドルが上限になっているようです。
これで、支払い方法の設定は完了です。
続いて、APIキーを取得します。
左メニューの、API Keysをクリックし、画面中央の、 CreateNewSecretKeyのボタンをクリックします。
そして、適当な名前を入力して、 CreateSecretKeyをクリックします。
そして、表示されたキーをコピーして、 メモ帳などに保存し、Doneをクリックします。
APIキーは、複数取得できるので、利用目的に 応じて設定するのが良いと思います。
これで、APIキーの取得が完了です。
では、Pythonプログラムを作成していきたいと思います。
Pythonプログラムの作成はVSCodeでしますので、 まずは、VSCodeを起動します。
そして、ファイルを新規作成し、Pythonプログラムとして 適当な名前で保存します。
まず、最初に、OpenAIのライブラリーをインストールします。
pip install OpenAI でインストールします。
ここで、注意が必要なのは、過去にOpenAIのライブラリーを インストールしたことがある場合は、
最新のライブラリーをインストールする為に、 --upgradeオプションを付けて、インストールしてください。
pip install --upgrade OpenAI となります。
2023年4月時点のOpenAIのライブラリーの バージョンは、0.27.4になります。
それでは、プログラムを作成していきたいと思います。
まず、import OpenAIでOpenAIをインポートします。
次に、APIキーをセットします。
APIキーは、先ほど取得した文字コードになります。
次に、response = openai.ChatCompletion .createと入力します。
そして、model="gpt-3.5-turbo"とします。
次に、ChatGPTに送信する messagesを設定していきます。
このように、roleはuser、contentに、 ChatGPTについて教えてください。とセットします。
そして、カッコを閉じます。
そして、結果をprint文で出力します。
このように記載します。
それでは、処理を実行します。
すると、しばらく時間がかかって、 このように、答えが出力されました。
ここまで、わずか10行のプログラムで、ChatGPTがAPIで 使えるようになりましたが、ここからは、
プログラムを使いやすいように改造していきたいと思います。
まず、プログラムの最初の、APIキーを設定する箇所ですが、 プログラムの中で 丸見えなのは良くありませんので、
この部分を、各パソコンの環境変数から 取得出来るようにしたいと思います。
まず、プログラムの中では、このように、 「os.getenv("OPENAI_API_KEY")」と書き換えます。
また、import osで OSをインポートしておきます。
そして、環境変数に登録するには、Windowsの場合、 コントロールパネルから、ユーザーアカウントをクリックします。
そして、「環境変数の変更」をクリックします。
そして、「新規」をクリックして、「変数名」にOPENAI_API_KEYを 入力し、変数値にAPIキーの文字列を入力します。
これによって、プログラムの中では、 APIキーを表示する必要が無くなります。
次に、OpenAIの公式サイトのChatGPTの 解説ページを見てみます。
DevelopersのOverViewから「Chat」をクリックします。
すると、画面の中盤に、出力データのJSON形式の 構造についての記載が有ります。
先ほど、ChatGPTからの回答結果を取り出すのに、 このような記載をしていたのは、このJSON形式の構造の中から、
この部分を取り出すのに、response.choices[0] ["message"]["content"].strip()と記載していました。
ここで、strip()は、前後の空白を取り除くという意味になります。
そして、この構造を見ると、この部分で利用した トークン数を取得できることが分かります。
最初がprompt_tokensで質問で使ったトークン数、 2つ目が、completion_tokensで、ChatGPTからの
回答によるトークン数、最後がその合計だと分かります。
そこで、プログラムの中で、このように記述して、 トークン数を出力するようにしたいと思います。
また、処理のパラメータには、max_tokensという パラメータがあり、例えば100を指定すると、
回答が100トークンで停止してくれます。
さらに、temperatureというパラメータは、0~2の値を 設定でき、値が大きくなると、多様な回答が得られ、
値が低いと、一貫性のある回答をしてくれるそうです。
初期値は1だということで、0.5を設定したいと思います。
では、これで実行してみたいと思います。
処理を実行すると、このように、回答結果が100トークン の途中で停止し、消費したトークン数が
このように表示されました。
また、temperatureを0.5に設定した為か、 回答内容が若干、硬くなった気がします。
では、ここからは、先ほどのプログラムを応用して、 ちょっとしたアプリを作成してみたいと思います。
完成イメージは、このように、画面上部に質問を 入力して、下部に、その結果を表示する構成にします。
また、通常のChatと同様に、何度か質問を 繰り返せるようにします。
さらに、トークン数もカウント出来るようにしたいと思います。
では、プログラムを作成していきます。
まず、第1ステップとして、1回の質問が 出来る構成にしたいと思います。
画面は、tkinterで作成したいと思いますので、 import tkinter as tkでtkinterをインポートします。
画面設計としては、このようにroot = tk.Tk()で 画面全体を宣言します。
アプリのタイトルをroot.title ("ChatGPTアプリ")で設定します。
そして、質問のラベルをセットします。
そして、質問を入力する為の、 インプットボックスを配置します。
input_box=tk.Text(root, width=100, height=5) とし、横幅を100、高さを5で設定します。
次に、回答のラベルを配置します。
そして、回答の結果をセットする、 テキストボックスを配置します。
output_box=tk.Text(root, width=100, height=20) とし、幅を100、高さを20に設定します。
そして、質問ボタンを配置します。
コマンドとして、answer関数を呼び出すようにします。
そして、一番下に、トークン数を表示するラベルをセットします。
また、最後にmainloopをセットし、 画面を入力待ちでループするようにします。
これで、画面設計は完了です。
続いて、質問ボタンを押した際に処理される answer関数を作成していきます。
まず、質問用のインプットボックスに入力された 文字列を、question変数に代入します。
そして、ChatGPTに投げる為に、 messages変数に、LIST型変数をセットします。
そして、先ほど作成したプログラムの 構成でAPIの処理を記述します。
今回のmax_tokensの上限は 400にしておきたいと思います。
messagesパラメータには、先ほどの messages変数をセットします。
ChatGPTからの回答は、変数respに代入します。
また、トークン数は変数tokenに代入します。
また、一度入力した質問は、入力欄からは消して、 回答用のテキストボックスに質問として記述し、
その後に改行を挟んで、回答を記述するようにします。
また、一番下に配置したトークン数も更新します。
では、これで、一旦、実行してみたいと思います。
すると、このように、質問に対して、結果が、 回答用のテキストボックスにセットされました。
また、トークン数も表示されています。
ここまでは、良い感じですので、引き続き、質問を 継続できるように機能追加していきたいと思います。
ChatGPTに対して、1回目の内容を引き継いで、 2回目の質問をするには、1回目の質問と回答も
2回目のメッセージにセットする必要があります。
OpenAIのサイトにも、このような形式で、 メッセージをセットするよう記載されています。
質問文は、roleをuserとし、ChatGPTの回答は、 roleをassistantとする必要があるようです。
それらを踏まえて、プログラムを書き換えていきます。
まず、最初に変数messagesをリスト型で空で宣言します。
また、変数tokenも最初に0でリセットしておきます。
そして、answer関数では、その2つの変数を global変数として宣言します。
そして、代入していたmessagesをappendに することで、質問をするたびに、追加する構成にします。
また、変数tokenは、今回、消費した トークン数を加算するようにします。
そして、ChatGPTからの回答は、次回の質問の為に、 messages変数の後にroleをassistantにして、
追加しておきます。
これで、プログラムの変更は完了ですので、 処理を実行したいと思います。
まず、1つ目の質問として、 「ChatGPTは何が得意ですか」と聞きます。
すると、回答がこのように出力されました。
トークン数も、177と計算され、正常に動作しています。
そして、続きの質問として、 「プログラムレビューも出来ますか」と聞きます。
すると、2回目の質問では、ChatGPTという言葉を質問文に 入れていないのに、回答は、ChatGPTに対する
質問であることを理解して回答してくれていますので、 1回目の質問を継続してくれています。
また、トークン数も578と累計をカウント できていますので、プログラムは完成です。
以上、今回は、ChatGPTを、Pythonプログラムから API接続で使ってみました。
わずか40行程度の短いプログラムで、見た目はあまり 良くないですが、ChatGPTの基本機能は
使えるようになっており、意外と簡単に出来たと思います。
そして、このプログラムをベースに、様々な応用が 可能ではないかと思います。
また、このプログラムを作成するにあたって、ChatGPTの APIを何度も利用しましたが、実際の利用料は
0.02ドルと 約3円程度で、さらに無料期間でしたので、 実際には料金はかかりませんでした。
皆さんも、一度、トライしてみては如何でしょうか
最後まで、ご視聴、ありがとうございました。
5.0 / 5 (0 votes)