この記事はレコチョク Advent Calendar 2023 の 6 日目の記事となります。
はじめに
株式会社レコチョクでバックエンドエンジニアをしている新卒2年目の小林です。 現在は、PythonによるAPIの開発やSolidityによるBlockchainのスマートコントラクトの開発を行っています。 趣味はゲームやアニメで、最近ハマっている曲はTVアニメ「ぼっち・ざ・ろっく!」作中バンドである結束バンドの「ギターと孤独と蒼い惑星」です。 今回は、2023/11/7 の OpenAI DevDay で発表された Assistants API を利用して簡単なチャットボットを作成する方法をまとめました。
Assistants API とは
ChatGPTの新機能の1つで、Assistants APIを利用することで自作のアプリケーションにAIアシスタントを構築することができます。 AIアシスタントは、さまざまなモデルやツールを用いて、ユーザーのリクエストに適切な応答を提供します。 β版(2023/11/22時点) では以下のツールが提供されています。
- Functions
- ユーザーのリクエストに応じて定義済みの関数を実行し、回答を生成することができる
- Code Interpreter
- GPT内でプログラミングコードを実行できる
- Retrieval
- ユーザーがアップロードしたファイルからデータを取得し、それに関する回答を生成することができる
今回は主にRetrievalを利用して簡単なチャットボット形式の英単語一問一答を作成していきます。
開発準備
- Pythonの仮想環境作成・起動
$ python --version Python 3.12.0 $ python -m venv env $ source ./env/bin/activate - FastAPIとUvicorn、OpenAIのインストール
$ pip install fastapi uvicorn openai $ pip list Package Version --------------- ------------ fastapi 0.104.1 openai 1.3.3 uvicorn 0.24.0.post1 - アプリケーションファイル作成
chat.pyファイルを作成し、以下のようにhealth_check関数を作成します。
from fastapi import FastAPI app = FastAPI() @app.get("/") def health_check(): return {"status": "success"} - アプリケーションの実行テスト
上記が完了後 http://127.0.0.1:8000 にアクセス。 {“status”: “success”} が出力されていれば開発準備完了。$ uvicorn chat:app --reload INFO: Will watch for changes in these directories: ['/path/chat'] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [26279] using StatReload INFO: Started server process [26281] INFO: Waiting for application startup. INFO: Application startup complete.
OpenAI クライアント作成
import openai
api_key = "xxxxxxxxxx"
client = openai.OpenAI(api_key=api_key)
api_key は OpenAI の APIキーとなります。 OpenAIアカウント作成後、こちらから作成・取得することができます。 セキュリティ上のリスクを避けるため、APIキーは公開されることのないように保管してください。
小林圭一朗