見出し画像

OpenAI APIをPythonで使ってみる Part1


API Keyの取得

Pythonに限らずプログラミング言語から「OpenAI API」を利用するには、「API Key」が必要です。「API Key」は、APIを使用する際に認証情報として使用される一連の文字列になります。「API Key」の取得手順は、次の通りです。

  1. ブラウザで「OpenAI API」サイトを開きAPI側でログイン
    https://openai.com/blog/openai-api

  2. ログイン後、左のタブにカーソルを合わせて「API keys」をクリック

  3. 「Create new secret key」ボタンをクリック

  4. 「API Key」をコピー
    ※大切に保管し外部には公開しないようにしましょう。勝手に使われて従量課金されないようにする為

PythonでOpenAI APIの前準備

前提:実行環境はGoogleColab

  1. 新規のColabのノートブックを開く

  2. 「openai」パッケージをインストール

  3. 環境変数の準備

# パッケージのインストール
!pip install openai
import os
os.environ["OPENAI_API_KEY"] = "<Your_OpenAI_API_Key>"

APIを使ってとりあえず投げてみる

# OpenAIライブラリからOpenAIクラスをインポート
from openai import OpenAI

# OpenAIクライアントを初期化
client = OpenAI()

# GPT-4モデルを使用してチャット応答を生成
stream = client.chat.completions.create(
    model="gpt-4-1106-preview",  # 使用するモデルを指定(ここではgpt-4-1106-preview)
    messages=[{"role": "user", "content": "Pythonを上達するためにはどうすればいいですか?"}],  # ユーザーからのメッセージを指定
    stream=True,  # 応答をストリームとして受け取る
)

# ストリームから受け取ったデータを処理
for chunk in stream:
    # 応答のテキスト部分(content)がNoneでなければ出力
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

実行結果が下の画像です、使用しているモデルも新しいものを選択しているのでかなり詳細に書かれていていますね

実行結果

これはメッセージを設定して実行しているので、メッセージを変えて色々と試してみてください。

対話できるようにしてみる

今度は先ほどのコードを参考にチャットのようにやり取りができるようにして見たいと思います。「quit」と打ち込むまで会話が続くようにしています。

from openai import OpenAI

# OpenAIクライアントを初期化
client = OpenAI()

# ユーザーのメッセージを格納するリスト
messages = []

while True:
    # ユーザーからの入力を受け取る
    user_input = input("You: ")
    if user_input.lower() == "quit":
        break

    # ユーザーのメッセージをメッセージリストに追加
    messages.append({"role": "user", "content": user_input})

    # GPT-4モデルを使用してチャット応答を生成
    response = client.chat.completions.create(
        model="gpt-4-1106-preview",
        messages=messages,
        stream=False,  # リアルタイム応答のためにストリームを無効化
    )

    # AIの応答を表示
    ai_response = response.choices[0].message.content  # 'content' 属性に直接アクセス
    print("AI: ", ai_response)

    # AIのメッセージをメッセージリストに追加
    messages.append({"role": "system", "content": ai_response})
チャットでのやり取り

リアルタイムの回答はAPIではできなさそうでした、今のGPT-4ではプラグイン使わずにリアルタイム情報取得できているのでいけるかなと思いましたが、、。それとも最新の方法があるのでしょうか。
LangChainなど使って今度リアルタイムの情報を回答できるようにしてみようかなと思います。

最後に

最後まで読んでいただきありがとうございます。
これから私の自己学習の復習も兼ねて簡単ではありますがnoteにまとめていきます。参考になったらいいねよろしくお願いいたします。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?