概要
普段PHPのエンジニアとして働いているが、ある会議中に「ChatGPTを使ってお客様の質問に答えるシステム作れないですか?」という要望があり、軽く調べたところできそうだったし、Pythonのライブラリ使えばできそうだなと思い、環境を構築しました。
Pythonを書くのは初めてです。。
ついでにJupyterLabを導入しました。
参考にしたサイト
環境
MacOS Monteray ver 12.6.5
Docker
やりたいこと
やりたい事としては、とりあえずChatGPTのAPIを使って質問を投げれば返ってくる簡単はものを作りたいと思います。
Pythonの環境構築
- まずはPythonの環境を構築するためのディレクトリを作ります。
mkdir docker-jupyterlab
mkdir docker-jupyterlab/work
- 作成したディレクトリ(docker-jupyterlab)へ移動します。
cd docker-jupyterlab
- Dockerfile(Dockerコンテナの設計図)を作成します。
vi Dockerfile
- 以下の内容をファイルに書き込んでください。
FROM python:3
RUN apt-get update
RUN pip install --upgrade pip
RUN python -m pip install jupyterlab
RUN pip install openai
- docker-compose.ymlを作成します。
vi docker-compose.yml
- 以下の内容をファイルに書き込んでください
version: '3'
services:
jupyterlab:
build: .
image: jupyterlab-test-img
container_name: jupyterlab
working_dir: /work
volumes:
- ./work:/work
ports:
- "8888:8888"
command:
jupyter-lab --ip 0.0.0.0 --allow-root -b localhost
- 作成したDockerfileとdocker-compose.ymlを使い、イメージとコンテナの作成、コンテナの起動を実行します。
docker compose up -d --build
- コンテナが正常に立ち上がったのか確認する
docker ps
- うまく立ち上がっていればpythonの環境構築は完了です。
OpenAIのアカウント登録
- OpenAIの公式ページにアクセスして、アカウント登録をする
- 参考にしたサイト (https://di-acc2.com/programming/python/24841/#index_id3) を見てもらえればすぐにできると思います。
- 登録後、APIシークレットキーとOrganizationIDをメモしておく
プログラムの実装
- work直下にsettingディレクトリを作成をする
mkdir work/setting
- settingディレクトリに移動して、config.pyという名前のファイルを作成する。
vi config.py
- config.pyは下記のようにする
OPENAI_API_KEY = "メモしておいたAPIキー"
OPENAI_ORGANIZATION_ID = "メモしておいたOrganizationID"
- work直下に戻り、chatbot.pyを作成する
cd ../
vi chatbot.py
- chatbot.pyは下記のようにする
import setting.config as config
import sys
# ライブラリ&認証情報を設定
import openai
openai.organization = config.OPENAI_ORGANIZATION_ID
openai.api_key = config.OPENAI_API_KEY
def Ask_ChatGPT(message):
# 応答設定
completion = openai.ChatCompletion.create(
model = "gpt-3.5-turbo", # モデルを選択
messages = [{
"role":"user", # 役割
"content":message, # メッセージ
}],
max_tokens = 1024, # 生成する文章の最大単語数
n = 1, # いくつの返答を生成するか
stop = None, # 指定した単語が出現した場合、文章生成を打ち切る
temperature = 0.5, # 出力する単語のランダム性(0から2の範囲) 0であれば毎回返答内容固定
)
# 応答
response = completion.choices[0].message.content
# 応答内容出力
return response
# 質問内容
print (sys.argv[1])
message = sys.argv[1]
# ChatGPT起動
res = Ask_ChatGPT(message)
# 出力
print(res)
- docker-compose.ymlのあるファイルまで移動して下記コマンドを実行してコンテナの中に入る
docker exec -it jupyterlab bash
- 下記コマンドを実行し、chatGPTに質問を投げる(ファイル名の後に聞きたいことを聞く)
python3 chatbot.py phpを作った人は?
以上で簡単はプログラムの実装が完了
(おまけ)jupyterlabへのアクセス
- (http://localhost:8888) にアクセスするとログイン画面が出てくる
- 「password or token」に下記コマンドを実行した時のtokenを入力する
jupyter server list
Currently running servers:
http://63f81459f779:8888/?token=[ここの値をコピペする] :: /work
GitHubのリポジトリ
今回紹介したものはGitに上げてますので、参考までに(config.pyはAPIの情報を書いてるので、上げてません)
https://github.com/nishun0419/docker-python-chatgpt
感想
普段PHPしか触ってないけど、ライブラリが豊富で書きやすいので、Pythonも悪くない印象でした。
もちろんこのままだと業務では使えないので、使えるように勉強していきたいですねー(LlamaIndexとか使っていきたい)