OpenAIのAPIをPython初心者でも簡単にできるJupyterで挙動確認してみよう!
はじめに
実務でFastAPIにて、OpenAIのAPI関連の実装をしている私の備忘録です。
FastAPIについては載っておりません。
読んでいただきたい方
・ポートフォリオでAI機能つけたい方
・OpenAIのAPI気になるけど難しいんでしょ・・・な方
ぜひ、ご自分の環境で試され、実装して欲しいです。
Pythonが初めての方でも、環境構築せずにUI上でPythonのコードを実行することができるJupyterを採用しております。
使用技術
下記、バージョンにて動作確認致しました。
バージョンを合わせて実行してください。
- Python3
- 3.11
- OpenAIのAPI
- 1.12.0
-
VSCodeの拡張機能
- Jupyter
Jupyterについて
Jupyterとは
ブラウザ上(VSCodeのファイル内)で、動作する対話型実行環境とのこと。
PCにPythonをインストールせずに入力・実行することができるため、試験実装や勉強の際に便利です。
今回は、APIの挙動を確認し、ストリーミング機能を実装することが目的なので、こちらで一つ一つ返答を確認しつつ、進めていきたいと思います。
また、私の都合上詳しい説明はVSCode上のJupyterとなります。
PythonをインストールしないとVSCode上では動きませんので、Python初めての方は、公式を参考にブラウザ上での挙動確認をお願い致します。
公式
1.VSCodeに拡張機能Jupyterをインストールする
下記の拡張機能をインストール
.ipynb
ファイルを作成する
2.VSCode上に.ipynb
拡張子のファイルを作成
下記のように、セルが表示されているファイルが作成される
3.セルに実装
セルにコードを記入し、セルの左上の再生ボタンを押す
4.カーネルの選択
どの環境で実行するか選択する。
また、ここでjupyterパッケージインストールのダイアログが出た際は、「OK」を選択する。
自動的にパッケージがインストールされます。
5.実行結果
実行結果は以下の通りに、セルの下に結果が出る仕様です!
セルの増やし方
赤丸の三点マークをクリック → 緑の四角 → 選択
または、
ショートカットも存在しておりますので、下記記事参考にしつつ、試してみてください。
OpenAIのAPIのコードの書き方を調べる
OpenAIのAPIとは
OpenAI社が提供する人工知能のAPIのこと。
OpenAI社が提供する多岐にわたるAIモデルへのアクセスを簡単に可能にするインターフェースのこと。
(私は、ChatGPTの機能を自分のアプリに導入可能にするAPIと認識しております。)
1.公式を調べる
下記、URLにて公式に飛べます。
導入から、例のコードまで載せてくれているので、APIを動かすのはかなり楽に行えると思います。
公式
2.keyの取得
keyの取得も、とても簡単に行えます。課金しなくてもkeyは取得できます。
ただし、OpenAIにログインされたのが3ヶ月以上前だと、無料で動かすことができません。
(使用の際に、ログインして3ヶ月以上の方は課金が必要です。4.エラーが出る方へを参考にして、課金してください)
また、ChatGPTとOpneAPIの課金は違います。
よって、GPTへ課金されている方もAPIに課金を行わなければ動きませんので、ご注意ください。
1.下記公式のURLです。こちらからログインしてください(Googleログインなどがありめちゃ楽!)
2.OpenAIのページに遷移 → 「API」を選択
3.選択後の遷移画面の左のAPI keysを選択
4.遷移先の画面にて、keyを作成してください
a.新しい秘密鍵(Create new secret key)
b.名前(name)に好きな名前を入れてください。
c.右下のCrete secret key(秘密鍵)を押す
5.keyは一度しか表示されませんので、メモしてください。また、keyの取り扱いには十分に注意して、.env
等をしようして、GitHub上にあげないでください
3.Jupyterにて、OpenAIのAPIの挙動を確認する
本題です!
APIを動かして、AIに返答させてみましょう!
1.Jupyterのセルで、PythonのOpenAIライブラリーをインストール
pip install openai==1.12.0
下記のように表示されます
2.OpenAIの環境変数の設定(先ほど取得したkeyを設定)
-
まず、下にセルを増やす
-
同じくJupyterのセルで、
python-dotenv
をインストール -
.envファイルの作成し、key作成時にコピーした秘密鍵を記述
.envファイル
OPEN_AI_KEY='key作成時にコピーした秘密鍵'
-
.gitignoreファイルを作成して、git管理時にGitHub上に入れないようにしましょう
.gitignore
.env
-
.envファイルを読み込んでkeyを使用しましょう
下記コードをそのままコピペで実行
import os from dotenv import load_dotenv # .envから環境変数を取る。 load_dotenv() # 上記で得た環境変数をos.environで取得する os.environ['OPEN_AI_KEY']
青線の場所に.envファイルに記述したkeyが現れます
3.公式のコードをコピぺして、挙動を確認します。
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
openai_key = os.environ['OPEN_AI_KEY']
client = OpenAI(api_key=openai_key)
stream = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Say this is a test"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
ちゃんと、APIが返答が来ました!
modelにてAPIのバージョンを渡しています。"gpt-4”は高いので、確認取れたら安いもの(例:gpt-3.5-turbo-0125)に変更をすることをおすすめします。
エラーが出る方へ
429等のAPI側のエラーコードが出る場合があります。
API公式のエラー集を参考に解決してみてください。
主なエラーは下記に記述しています。
1.OpenAIのAPIは、5ドル分無料枠を使えます
しかし、無料期間決まっており、3ヶ月過ぎると残っていても使えなくなります。3ヶ月以降のAPIの使用の際はプリペイド式に前払いし使います。(2024年3月現在)
支払いは、従量課金制(使用トークン量で支払われる)です。
課金の際の参考記事
あとは、公式サイトを翻訳して進めば大丈夫です!
2.429エラー
下記のエラーが出た場合はAPIの無料期間(3ヶ月)を過ぎてしまっているので、私と同じく課金してください(泣)
RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: <https://platform.openai.com/docs/guides/error-codes/api-errors.'>, 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}
3.404エラー
こちらのエラーは、 model のgpt-4
が存在しないか、アクセス権がないというエラーです。model の誤字がないか・残高が残っているか確認を行ってください。
NotFoundError: Error code: 404 - {'error': {'message': 'The model `gpt-4` does not exist or you do not have access to it. Learn more: <https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.'>, 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}
4.OpenAIのImportError
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[12], line 2
1 import os
----> 2 from openai import OpenAI
3 from dotenv import load_dotenv
5 load_dotenv()
ImportError: cannot import name 'OpenAI' from 'openai' (/opt/homebrew/lib/python3.11/site-packages/openai/__init__.py)
- OpenAIのバージョンが違う
-
セルを増やし、コピペで実行し、バージョンを確認
%pip show openai
Version: 1.12.0
以外のバージョンが出た場合 -
再起動を押す
-
インストールするopenaiのバージョンを指定して再度インストールする
pip install openai==1.12.0
-
これまでに行っていた変数や関数、インストールしたものがなくなりますのでopenai以外もセルの右上の再生ボタンを押す(再起動の左のすべて実行でも可能)
-
OpenAIのインストールをセル内で行っていない
-
.ipynbファイル内のセルにて以下を再実行
pip install openai==1.12.0
(セルは同じファイル内で何個も実行可能です)
-
エラーの出たコードを再実行する
-
5..env書き換えた場合
load_dotenvの引数にoverride=True
を入れて実行。オーバーライドしてください
Trueと返答がくれば、前の環境変数が無効になり、新しい環境変数をとって来れるようになります。
from dotenv import load_dotenv
load_dotenv(override=True)
APIのコードの説明
stream = client.chat.completions.create(
model="gpt-3.5-turbo-0125",
messages=[
{"role": "system", "content": "今日の天気を教えてください"},
{"role": "user", "content": "東京"}
}],
stream=True,
temperature=0.0①
)
“messages”とは
API側に受け渡す会話を構成するメッセージにリストのこと。
"role"には、種類が5種類があります。
- "system"→システム側の入力を渡す
- "user”→userの入力を渡す
- “assistant”→アシスタントメッセージの内容を渡す
- “tool”→ツールメッセージの内容を渡す
- “function”→廃止されました
上記入力して、メッセージが何に当たるかを渡して、"content"にメッセージの詳細値を入れることで、会話をすることができる
①create()のかっこ内にOpneAPIのパラメータ(Temperature)等を記載して、設定することもできます。Temperatureとは、回答の自由度です。
OpneAPIのパラメータについては、面白いので調べてみてください。
Jupyterでの挙動確認はあくまでも挙動確認ですので、ストリーミングは適応されないようです。
また、このままアプリ等にすることはできませんので、次回からはPythonのフレームワークFastAPIでAPIを使用できるようにしていきます。
あとがき
OpenAIのAPIのコードは、実装を一回してしまえばとても簡単で、わかりやすいコードでした。
みなさん、OpenAIのAPIやストリーミング等やってみたい技術ではないでしょうか?
今回は、挙動確認が目的で、Jupyterを使用しました。Pythonが初めての方でもかなりスムーズに行えたのではないでしょうか?
ぜひ、このハンズオンを一度試していただき、ポートフォリオや自作アプリにご使用ください。
Discussion