【OpenAI統合】ChatGPTを自作APIに繋いで動かす ~ChatGPT API 開発基礎 #3~
本記事は、「ChatGPT API 開発基礎 ~ChatGPT APIをFastAPIとStreamlitで動かす~」の第3回です。
今回は、FastAPIにOpenAI APIを組み込み、受付AIの基礎応答を実装していきます。
👤 1. 前回のまとめ – PythonとFastAPI導入
前回は、カスタムGPTではPythonコードが実行できない問題に直面し、API化する決意を固めた。そしてPython環境を整え、FastAPIを導入し、Hello FastAPIまで無事表示できた。
🛠️ 2. OpenAI APIとは(初心者メモ)
ChatGPT UIはブラウザ上でチャットするツール。OpenAI APIは、ChatGPTと同じようにGPT-3.5やGPT-4などの学習済みモデルをプログラムから呼び出す仕組み。
ChatCompletionって何?
もともとAPIは一問一答式のはず。でも、それだとただのChatBotと変わらない。生成AIとしての価値は過去文脈の保持だと思っていたけど、APIでは毎回履歴を渡す必要がある仕様らしい。
UIベースのChatGPTは、ユーザーとの過去のやりとりを自動で追加して呼び出してくれる仕様なので、この点はAPIより便利だ。 一方、APIでは毎回履歴を渡す必要があるが、履歴管理を工夫すればChatGPTのように会話を継続できる「ように見える」APIも作れる。
🚀 3. FastAPIへのOpenAI組み込み
📝 3.1. openaiライブラリインストール
pip install openai
🔧 3.2. APIキー設定
環境変数にAPIキーを設定しておく方法(TypeA)と、テキストに保存して読み込む方法(TypeB)がある。
TypeA: Windows環境変数設定
OpenAI DeveloperサイトからAPIキーを取得し、Windows環境変数にセットする。
setx OPENAI_API_KEY "sk-xxxxxx"
TypeB: テキスト保存読み込み(今回の作業)
環境変数設定が面倒だったので、APIキーをテキストに保存し、Pythonコード内で読み込む方法を採用した。
※詳細は別記事でまとめる予定。
🤖 3.3. ChatCompletion呼び出しサンプルコード
from fastapi import FastAPI
from openai import OpenAI
import os
app = FastAPI()
client = OpenAI()
@app.get("/")
def read_root():
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは練馬区行政受付AIです。"},
{"role": "user", "content": "こんにちは"}
]
)
return {"message": response.choices[0].message.content}
これでFastAPIからOpenAI APIにアクセスできるようになった。
💡 4. 今回のまとめ(設計思考的視点)
今回は、FastAPI経由でOpenAI APIを叩き、レスポンスを返すところまでがゴール。
会話継続などの履歴管理設計は、また別の機会にまとめたい。
🔭 5. 次への問い
- StreamlitでこのAPIをどう公開するか?
次回は、#4 UI試作へ進む予定。
📚 ChatGPT API 開発基礎(全8回)
#1 構想と環境構築 | #2 FastAPI導入 | #3 OpenAI統合 | #4 UI試作 | #5 POST通信 | #6 公開テスト | #7 本番環境 | #8 仕上げと考察
Discussion