公開中サイト
開発環境
Server | lightSail |
Language | Python3.11 |
Framework | Django |
DB | sqlite3 |
ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
PYTHONとDjango環境
生成APIが流行しているので、PYTHONとDjango環境でアプリを作成してみた。
最初のアプリなのでプロンプトを送ったら、プロンプトが戻ってくるだけのシンプルなものです。
基礎中の基礎ですけれども、プロンプトを送ってレスポンスをもらうだけですが、いろいろと大変だった。
それと、PHPエンジニアでPYTHONはまだまだ経験不足だったので、フレームワークのDjangoの特徴を把握するのにも苦労しました。
慣れてくると、Djangoは生成APIのアプリ作成にとても相性がいいことが分かり始めた。
アプリを作るのはたった 1line のコマンドで作成できる。
python manage.py startapp {myapp}
これだけです。
データベースの更新も下記コマンドだけ。
python manage.py migrate
これでアプリの雛形ができます。
おそらくDjangoでWEBサイトを構築するのはLaravelよりずっと工数がかかるだろう、しかしLaravelで生成APIアプリを量産するよりもはるかに、工数が少なくアプリを作成できるのはDjangoだと思う。プロジェクトの考え方が違う。DjangoはシンプルなWEBアプリを量産しやすいフレームワークという印象をもった。
なんせアプリ作成コマンドでアプリ構造ができ、プロジェクトフォルダに登録するだけでいいのだ。あとはPYTHONファイルに生成APIアプリを呼び出せばいいだけ。
あまりに簡単なので、「ゼルダの伝説ティアーズオブザキングダム」で武器をクラフトしている感覚に似ている。あれとあれを組み合わせて、クラフトして課題をクリアしていく、あの感覚そっくり。ゼルダの伝説のクラフトを現実でやっている。
またはアトリエシリーズで錬金しているような感覚にも近い。「あのAPIとあのAPIを組み合わせたら、こんなことできる!」ってことばかり考えてしまう。本当にDjangoのおかげです。もし、Laravelでやったら、めんどくさって思ってたと思う。やはり、「人工知能時代の言語はPHPじゃなくPYTHONなのだ。」と理解した。
アプリ画面
とりあえず、プロンプトを送って、レスポンスをもらうだけのアプリです。この基礎が大事。ここで渡すプロンプトを裏側でちょこちょこしたり、ファインチューニングしたり、トレーニングすれば、ChatGPTは医者にもなるし、弁護士にもなるし、ファイナンシャルプランナーにもなれる。まさに生成AIは人類の夢への第一歩だと思う。
コードの解説を詳細にするつもりはありません。公式マニュアルには勝てないので、簡単なベースとなるコードだけ記述します。
Chat_app
chat_results = ""
if request.method == "POST":
form = ChatForm(request.POST)
if form.is_valid():
sentence = form.cleaned_data['sentence']
client = OpenAI(
api_key = OPENAI_API_KEY,
)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": "日本語で応答してください"
},
{
"role": "user",
"content": sentence
},
],
)
chat_results = response.choices[0].message.content
chatGPTは3.5を使いました。ChatGPT4も使用できますが、トークンの節約。要するに倹約です。最近の事情が必要なアプリでしたら、4を使おうと思います。今回は基礎アプリ仕様です。
制作で苦労したのはOpenAiが2024年1月にアップデートしていたせいでほとんどのブログ記事が参考にならなくなっていてたことです。
openai.NotFoundError
openaiをインストールしてもでてくるので。検索してみると、
pip install openai==0.28
バージョンを戻したら解決するよ。というありがたい助言。心の中で
「軽く死ねますね。」(CV:早見沙織)
ブログなんて読まずに本家のマニュアルを読んでください。
コード説明ブログは寿命が短い上に、月日が経つと虚言記事でエンジニアを迷い狂わせるよね。
【生成AIアプリ100チャレンジ】の1つ目でした。