🏃

ChatGPT(OpenAI)環境をインストール

2023/02/11に公開

CentOSにChatGPT(OpenAI)のAPIにアクセスする環境をセットアップしてみる

背景

PlaygroundからChatGPTを使うのもいいけど、やっぱりPythonからChatGPTのAPI(正確には裏でGPT-3と呼ばれるAIのモデルが動いています)をコールして返答を得たかったのでアプリケーションの環境を手順に従ってセットアップしてみました。

インストール

今回はCentOSにPythonでセットアップします。

環境
OS: CentOS Stream release 8
Python:Python 3.10.10

事前作業

APIの使用にはシークレットキーが必要になるので事前にChatGPTにサインアップが必要です。

githubから「openai-quickstart-python」をダウンロード

git clone https://github.com/openai/openai-quickstart-python.git

API Keyの設定

cd openai-quickstart-python
cp .env.example .env

ここでAPI Keyを生成して「.env」の以下の位置にコピーします。
vi .env

OPENAI_API_KEY=************************************

アプリケーションを実行する

# python -m venv venv
# . venv/bin/activate
# pip install -r requirements.txt

pipコマンドでエラーになりました。

Collecting openai==0.19.0
  Using cached openai-0.19.0.tar.gz (42 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [63 lines of output]
      running dist_info
      creating /tmp/pip-modern-metadata-glvfok20/openai.egg-info
      writing /tmp/pip-modern-metadata-glvfok20/openai.egg-info/PKG-INFO
      writing dependency_links to /tmp/pip-modern-metadata-glvfok20/openai.egg-info/dependency_links.txt
      ・・・
      ・・・
        File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 883, in exec_module
        File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
        File "/tmp/pip-build-env-qgz5qofd/overlay/lib/python3.10/site-packages/wheel/bdist_wheel.py", line 28, in <module>
          from .macosx_libfile import calculate_macosx_platform_tag
        File "/tmp/pip-build-env-qgz5qofd/overlay/lib/python3.10/site-packages/wheel/macosx_libfile.py", line 43, in <module>
          import ctypes
        File "/root/.pyenv/versions/3.10.10/lib/python3.10/ctypes/__init__.py", line 8, in <module>
          from _ctypes import Union, Structure, Array
      ModuleNotFoundError: No module named '_ctypes'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

以下のエラーをググります。pipが原因ではなく、OSにいくつかのプログラムがインストールされていないようです。

ModuleNotFoundError: No module named '_ctypes'

足りないのは以下のライブラリのようでした。

  • libffi-devel
  • bzip2-devel

一度、Python3.10.10をアンインストール
pyenvでバージョンを管理しているため、一度アンインストールします。

# pyenv uninstall 3.10.10

ライブラリをインストール
# yum install libffi-devel
# yum install bzip2-devel

再度、Python3.10.10をインストールし直して再構成
# pyenv install 3.10.10

アプリケーションのインストールからやり直します。
# python -m venv venv
# . venv/bin/activate
# pip install -r requirements.txt

・・・
Successfully built openai
Installing collected packages: pytz, pandas-stubs, certifi, Werkzeug, urllib3, tqdm, toml, six, python-dotenv, pycodestyle, numpy, MarkupSafe, itsdangerous, idna, et-xmlfile, click, charset-normalizer, requests, python-dateutil, openpyxl, Jinja2, autopep8, pandas, Flask, openai
Successfully installed Flask-2.0.2 Jinja2-3.0.2 MarkupSafe-2.0.1 Werkzeug-2.0.2 autopep8-1.6.0 certifi-2021.10.8 charset-normalizer-2.0.7 click-8.0.3 et-xmlfile-1.1.0 idna-3.3 itsdangerous-2.0.1 numpy-1.21.3 openai-0.19.0 openpyxl-3.0.9 pandas-1.3.4 pandas-stubs-1.2.0.35 pycodestyle-2.8.0 python-dateutil-2.8.2 python-dotenv-0.19.2 pytz-2021.3 requests-2.26.0 six-1.16.0 toml-0.10.2 tqdm-4.62.3 urllib3-1.26.7

無事インストールされたようです。

flaskを実行

flask run

 * Serving Flask app 'app' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 139-530-183

ブラウザが起動しました。

ブラウザでCentOSのサンプルアプリにアクセス

http://<CentOSのIPアドレス>:5000/

エラーになりました。
正常に接続できませんでした

調べた所、デフォルトではflaskは外部からアクセスすることができないらしい。(ローカルアクセスのみ)

Flaskを外部からアクセスできるように設定変更

Ctrl + Cキーで一旦Flaskを停止します。

こうやってflaskを起動すると外部からアクセスできるようになるようです。

flask run --host=0.0.0.0

無事外部からアクセスできました。
GPT-3サンプルアプリ

サンプルアプリのコードを書き換えれば、自由にカスタマイズできるようです。

Discussion