ChatGPTに質問を投げる
前回、PythonとOpenAIを連携してChatGPTに質問を投げかけるChatBotを作ってみた。今度はフレームワークのFastAPIを使って作ってみる。
操作はターミナルではなくSwaggerUIで行います。プロジェクトは有料版のPyCharmで作成したので私はボタン押すだけで、FastAPIの環境構築をしてくれますが、VScodeを使っている人は仮想環境の作成と自分でインストールして環境を作る必要があるのでやってください。
モジュールは出力したらこれだけ入っていた?
こちらを仮想環境を作った後に、pip install
すれば良さそう。
requirements.txt
annotated-types==0.7.0
anyio==4.9.0
certifi==2025.1.31
click==8.1.8
distro==1.9.0
fastapi==0.115.11
h11==0.14.0
httpcore==1.0.7
httptools==0.6.4
httpx==0.28.1
idna==3.10
jiter==0.9.0
openai==1.66.5
pydantic==2.10.6
pydantic_core==2.27.2
python-dotenv==1.0.1
PyYAML==6.0.2
sniffio==1.3.1
starlette==0.46.1
tqdm==4.67.1
typing_extensions==4.12.2
uvicorn==0.34.0
uvloop==0.21.0
watchfiles==1.0.4
websockets==15.0.1
モジュールは最新版でも問題なかった。
openai==1.66.5
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from openai import OpenAI
# APIクライアントを初期化
client = OpenAI(
api_key="my-api-key"
)
app = FastAPI()
class Question(BaseModel):
question: str
def ask_openai(question: str) -> str:
# チャット完了リクエストを送信
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": question}
]
)
# レスポンスを返す
return response.choices[0].message.content
@app.post("/ask")
async def ask_question(question: Question):
try:
answer = ask_openai(question.question)
return {"answer": answer}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
エンドポイントにアクセスする。
最後に
今回はFastAPIを使用してブラウザからプロンプトを入力して、ChatGPTに質問を投げかけてみました。フロントエンドは、Next.js/Reactで作成すれば質問返してくれる質問箱が作れるかも?