【Python】OpenAI Python libraryを使ってGPT-3と会話する

5 min

こんにちは。ナミレリです。みなさん、MacでPythonは使っていますか?

前回は話題のChatGPTをVSCodeの拡張機能で使う方法を紹介しましたが、今回はOpenAI公式のAPIであるOpenAI Python libraryを使ってGPT-3と会話する方法を紹介していきます

ターミナルから使えるようになるのでWEBを使った会話よりもサクッと構えずにできるのが良いです。

以前にChatGPT Wrapperを使ってターミナルから利用する記事をアップしていますのでぜひご覧ください。

この記事はこんな人にオススメ

  • GPT-3とターミナルで会話したい方
  • ターミナルが大好きな方
  • 何事もCLI派な方
  • とにかくCLI派な方
この記事のMac環境
  • 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)
Parallels Desktop 20 for Macの無料トライアル もありますので、ぜひダウンロードして試してみてください。M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。
NEW Parallels Desktop 20 for Mac

Parallels Desktop 20 for Macは、M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。

14日間の無料トライアルもありますので、ぜひダウンロードして試してみてください。

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"

.zshrcに設定しておくことも可能ですが漏洩には十分に注意する必要があります。

PythonからGPT-3を使う

それでは、下のようにPythonを通じてターミナルからGPT-3を使えるようにしてみます。

PythonからChatGPTを使う
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")

サンプルコードの説明

ほぼ公式通りではありますが、カラー設定など少し手を加えているので説明します。

  1. STEP

    ライブラリのインポート

    
    import os
    import openai
    

    pipでインストールしたOpenAIのライブラリと環境変数に設定したAPIキーを読むためにosライブラリをインポートします。

  2. STEP

    APIキーの設定とモデルの指定

    
    openai.api_key = os.getenv("OPENAI_API_KEY")
    model="text-davinci-003"
    

    環境変数OPENAI_API_KEYを読み、モデルをtext-davinci-003に設定します。

    os.getenvについては下の記事で詳しく紹介しています。

  3. STEP

    文字カラーの設定

    
    blue= '\033[34m'
    green= '\033[32m'
    bold = '\033[1m'
    reset = '\033[0m'
    

    色を付けて見やすくするためにANSI color codeを設定しています。

  4. STEP

    プロンプトの入力

    
    while True:
        prompt = input(bold+blue+"Enter a prompt (or 'q'): "+reset)
        if prompt.lower() == 'q':
            break
    

    qが入力されるまで繰り返し、qが入力されたらwhileを抜けて終了します。

  5. 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/

    主なパラメータ説明
    modelmodelを指定します。今回は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

  6. STEP

    GPT-3のレスポンスを出力

    
        ans = response.choices[0].text
        print(bold+green+ans+reset, end = "\n")
    

    太文字緑色でGPT-3の回答を出力しています。

  7. STEP

    Pythonプログラムの保存

    ファイルを保存して、aliasで今回はgpt3に設定します。

    
    vi ~/.zshrc
    alias gpt3='python /PATH/TO/PROG/gpt3.py'
    
    
  8. 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万冊以上が読み放題。お好きな端末で利用可能です。

定番おすすめ記事

カテゴリー:
関連記事