こんにちは、ハッピーメリークリスマス♪
……と書いていますが、
「この時期に何してんだ」という声が聞こえてきそうです。
ですが今回は、みんな大好きちゃっぴーさんに baserCMS のプラグインを作らせてみよう! という実験をしてみました。
※いちおー前回の記事の伏線回収!
ところで、「ちゃっぴーって誰よ?」という方もいるかもしれませんが、要するに ChatGPT のことです。
いつの間にかSNSとかみてるとそんな愛称で呼ばれるようになってるきがします。タブン
そんなちゃっぴーさんがイメージするちゃっぴーさんをイラストにしてもらいました。
何かかわいいロボみたいな画像を出してきました☺️すご!
今回作ったプラグインについて
今回作成したのは、
「生成AIでサンタからのメッセージを自動生成するプラグイン」 です。
機能としては、以下のような構成になっています。
フロントエンド機能
管理画面機能
管理画面側では、以下のようなことができます。
- 使用する生成AIの種類を選択(今回は無料枠で使えそうだったのでGeminiと、ローカルで動作するOllama)
- APIキーやプロンプトの設定
- 管理画面からの動作テスト(実際にメッセージを生成)
- 過去に生成したメッセージの一覧表示
- 生成時の入力内容と生成結果を確認
ちゃんと管理画面のデザインにもあわせてbaserCMSらしい作りになりました♪
- フロントエンド画面で簡単な設問(名前・年齢・今年頑張ったこと等)を入力
- 「生成する」ボタンを押すと、生成AIを使ってサンタさんからのメッセージが自動生成されて表示されます
- 生成時に使った内容と結果のメッセージは DBに保存
デザインは特に考えなかったので簡素な入力項目と文章の表示のみです。
手紙みたいな背景にしたり、文章にあうような画像もあわせて生成するのも良いかもですね。
生成された文章が多少意味不明な感じはあるけど、LLM変えたら良くなりそうな感じもします☺️
出来上がったソースコードはgithubにおいてますので、よかったらどうそ!
https://github.com/kaburk/BcSantaMessages
多分動くと思いますが、Docker環境でしか試してません、、💦
ちなみに、Ollamaの導入の仕方や使い方は、別途記事にしようかと思いますが、簡単にまとめると
HomebrewでOllamaをインストールする
brew install ollama
サーバーを起動する
ollama serve
以下のコマンドを実行するとログイン時に起動されるようになります。
brew services start ollama
今回はbaserCMSはDocker、OllamaはMacローカルなんで
http://127.0.0.1:11434
↓
http://host.docker.internal:11434
で動作させています。ほぼ全部、生成AIに作らせてみた結果
今回のポイントは、設計・コード・画面構成の大部分を、ちゃっぴーさん(といくつかのAI)に相談しながら作ってもらったことです。
- テーブル設計
- Controller / Model / View の役割分担
- baserCMS5(CakePHP5)での書き方
- 管理画面のCRUD構成
最初はふらっとに
生成AI API 連携でサンタからのメッセージを自動生成できるbaserCMS5のプラグイン作って。AIのAPIはできるだけ無料で使えるもので対応できるようお願いします。
みたいに投げかけたら、結構それっぽいファイル構成で具体的なソースコードまで出てきました。
ただ、そのままコピペで一部動かなかったので、「CakePHPにはないbaserCMSの流儀的なところや、意図を説明 → 出てきたコードを微調整」という流れを何度か行いました。
- 管理画面にプラグインを認識させるファイルを準備させる(たりてなかった)
- フロントエンドからPOST時のCSRF対策周りが少し足らなかった
- テンプレートでBcFormヘルパやBcAdminFormヘルパを使うよう指示(ベタなHTMLだったので)
- あとは想定外なAI周りの動作の調整
デバッグ時のトライアンドエラーはブラウザのChatGPTではやりづらかったので、 VSCode + GitHub Copilot の Agentモードを使ってデバッグしてます。でも結果的にコードはほとんど書いてないです。指示出しだけでほぼ完成しました。
👉 「ゼロから考える時間」が圧倒的に減った
👉 実装スピードは体感で2〜3倍
👉 Markdown形式のファイル規約的なのをbaserCMSのルールを入れて作っておけば、もっと精度が上がりそう
という印象です。
実は、ChatGPTが出たばかりの頃にも一度、AIでプラグイン作成にチャレンジしたことがあります。
ただ当時は、AIがbaserCMS自体をあまり認識しておらず、出来上がったコードも手直しがかなり必要でした。
正直、ベースは自分で作ったほうが早いな、という印象だったんですよね。
それだけに、今のAIは進化の度合いがすごいと感じています。