こんにちは。ナミレリです。みなさん、MacでPythonは使っていますか?
前回は話題のChatGPTをVSCodeの拡張機能で使う方法を紹介しましたが、今回はOpenAI公式のAPIであるOpenAI Python libraryを使ってGPT-3と会話する方法を紹介していきます。
ターミナルから使えるようになるのでWEBを使った会話よりもサクッと構えずにできるのが良いです。
以前にChatGPT Wrapperを使ってターミナルから利用する記事をアップしていますのでぜひご覧ください。
この記事はこんな人にオススメ
- GPT-3とターミナルで会話したい方
- ターミナルが大好きな方
- 何事もCLI派な方
- とにかくCLI派な方
- M2 MacBook Air 13.6 インチ
- M1 Max MacBook Pro 14インチ
- macOS Ventura 13.2
- pyenv 2.3.12
- miniforge3-22.9.0-2(Python 3.10.6)
目次
OpenAI Python libraryとは?
OpenAI Python libraryとは、Pythonで書かれたアプリケーションからOpen AIのAPIへ簡単にアクセスできるOpen AI公式のライブラリです。pipで簡単にインストールして使用できます。ドキュメントもしっかり整備されています。
OpenAI Python libraryをインストールする
Python用のOpenAI APIクライアントライブラリをインストールします。
下のようにpipで簡単にインストールできます。OpenAI APIのライブラリと依存関係で必要なライブラリもインストールされます。
pip install openai
pip showで情報を見ておきます。
pip show openai
Name: openai
Version: 0.26.5
Summary: Python client library for the OpenAI API
Home-page: https://github.com/openai/openai-python
Author: OpenAI
Author-email: support@openai.com
License:
Location: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/lib/python3.10/site-packages
Requires: aiohttp, requests, tqdm
Required-by:
APIキーの取得する
OpenAIのAPIを使用するためにはAPIキーを取得する必要があります。APIキーを生成するページにアクセスし、APIキーを取得します。
APIキーはここから取得します。https://platform.openai.com/account/api-keys
APIキーを環境変数に設定する
取得したAPIキーは、他の人と共有したりPythonコード(ブラウザ、アプリ等)で公開してしまうのはNGです。漏洩のリスクを軽減するために環境変数に設定しておきます。ここではOPENAI_API_KEYという環境変数に設定します。
YOUR_API_KEYの部分に実際に取得したAPIキーを置き換えてください。
export OPENAI_API_KEY="YOUR_API_KEY"
PythonからGPT-3を使う
それでは、下のようにPythonを通じてターミナルからGPT-3を使えるようにしてみます。
Pythonのサンプルコード
それでは公式のhttps://platform.openai.com/docs/librariesを参考に早速プログラムを書いていきます。全体は下のようなPythonプログラムになります。一つ一つ説明していきます。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
model="text-davinci-003"
blue= '\033[34m'
green= '\033[32m'
bold = '\033[1m'
reset = '\033[0m'
while True:
prompt = input(bold+blue+"Enter a prompt (or 'q'): "+reset)
if prompt.lower() == 'q':
break
response = openai.Completion.create(
model=model,
prompt=prompt,
temperature=0.5,
max_tokens=1024,
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=0.0,
)
ans = response.choices[0].text
print(bold+green+ans+reset, end = "\n")
サンプルコードの説明
ほぼ公式通りではありますが、カラー設定など少し手を加えているので説明します。
- STEP
ライブラリのインポート
import os import openai
pipでインストールしたOpenAIのライブラリと環境変数に設定したAPIキーを読むためにosライブラリをインポートします。
- STEP
APIキーの設定とモデルの指定
openai.api_key = os.getenv("OPENAI_API_KEY") model="text-davinci-003"
環境変数OPENAI_API_KEYを読み、モデルをtext-davinci-003に設定します。
os.getenvについては下の記事で詳しく紹介しています。
- STEP
文字カラーの設定
blue= '\033[34m' green= '\033[32m' bold = '\033[1m' reset = '\033[0m'
色を付けて見やすくするためにANSI color codeを設定しています。
- STEP
プロンプトの入力
while True: prompt = input(bold+blue+"Enter a prompt (or 'q'): "+reset) if prompt.lower() == 'q': break
qが入力されるまで繰り返し、qが入力されたらwhileを抜けて終了します。
- STEP
OpenAIのAPIにリクエストし、レスポンスを受け取る
response = openai.Completion.create( model=model, prompt=prompt, temperature=0.0, max_tokens=1024, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0, )
パラメータの説明はこちらのサイトを参考にさせていただきました。ありがとうございます。
https://note.com/npaka/n/nf8a38f49607e
https://data-analytics.fun/2021/12/01/gpt-3-api/
主なパラメータ 説明 model modelを指定します。今回はtext-davinci-003を指定。 prompt インプットする文章。 temperature ランダムさで0から2の範囲を指定。
0であれば完全に確定的な文章で、2であれば完全にランダムに。
temperatureとtop_pはどちらかを選択する。max_tokens 生成する文章の最大単語数。最大値は2048。 top_p 小さくすれば候補が確率の高いものに絞られ確定的になる。
大きくすればよりランダム性が強くなる。
temperatureとtop_pはどちらかを選択する。frequency_penalty -2.0から2.0の範囲を指定。
-2.0に近いと同じ単語を繰り返し、
2.0に近いと同じ単語は繰り返し使わなくなる。presence_penalty -2.0から2.0の範囲を指定。
-2.0に近いと同じ単語を繰り返し、
2.0に近いと同じ単語は繰り返し使わなくなる。
frequency_penaltyと同じようなもの。公式のドキュメントはこちらです。
https://platform.openai.com/docs/api-reference/completions/create?lang=python
- STEP
GPT-3のレスポンスを出力
ans = response.choices[0].text print(bold+green+ans+reset, end = "\n")
太文字緑色でGPT-3の回答を出力しています。
- STEP
Pythonプログラムの保存
ファイルを保存して、aliasで今回はgpt3に設定します。
vi ~/.zshrc alias gpt3='python /PATH/TO/PROG/gpt3.py'
- STEP
こんな感じ
補足
以前にLinux用ですがChatGPT Wrapperを紹介しました。こちらもぜひご覧ください。ChatGPT Wrapperは、過去の会話に移動したりstreaming modeがあったり、ログから以前の会話の続きができたりで、便利です。
最後に
最後まで読んでいただきありがとうございます。今回の【Python】OpenAI Python libraryを使ってGPT-3と会話するはいかがでしたでしょうか。
AIの急速な発展と普及を実感します。ChatGPTやStable DiffusionのようなジェネレーティブAIがますます発展しそれを扱うことのできるプロンプトエンジニアが活躍する時代はもうすぐだと思います。
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。