この記事は
AIエージェントを活用してWebアプリケーションの管理を自動化してみました。
概要的な構成を紹介します。
開発着手の背景
私はポケの記事というポケモンのパーティ記事まとめサイトを運営していました。
ポケの記事の機能はシンプルです。
- Wordpressで作成
- 自動で定期的に記事を収集(直近のXのポストからそれらしいものを取得)
- ランキング順に並べて表示する
今は、更新を停止しています。
(作成当時、自動更新するサイトはありませんでしたが、今は他サイトが更新自動化+画像認識をしているし、Xのアップデートでうまく動かないし)
ただ最近生成AIを見ていると、超パワーアップできそうなので、やってみました。
目標
- 生成AIを使ってより詳細なデータを整理・表示できるようにする
- 運営者に月30分以上の管理稼働をかけない(ポケの記事は月30分で管理できたので)
- 日英対応する
開発の課題(今回越えるべき壁)
- 記事はブログ形式で作成されることが多く、フリーフォーマットで作成されるためデータの整理が困難
- 入力するパラメータが多すぎるため管理に時間がかかりすぎる(ポケモンのデータ、わざのデータなど)
- 日英の翻訳
構成要素と概要的な役割
- AIエージェント(OpenAI Agents SDK)
- URLからテキスト情報を取得
- テキスト情報をもとに、情報を整理、成形
- Webアプリへ送信(REST APIでpost)
- Webアプリ(Django、Django REST Framework)
- AIエージェントのデータをDBに登録
- ページを表示
ポイント
- AIエージェントとアプリと切り離して開発することで、AIエージェントをアップデートしやすくする
- MCPは使わない(OpenAI Agents SDKはMCP対応している)
- Webアプリとの間をMCP連携しない:受信側をどう作るのかナレッジが少ない、REST APIでも要件は実現可能
- DBとの間をMCPで連携しない:Webアプリが行っているバリテーションチェックを行わず登録することにリスクがある
- AIエージェントは合計7つのエージェントを構成
課題の状況(今回越えるべき壁)
- 記事はブログ形式で作成されることが多く、フリーフォーマットで作成されるためデータの整理が困難
→ある程度解決(プロンプトをいじれば精度を向上できそうなレベル) - 入力するパラメータが多すぎるため管理に時間がかかりすぎる(ポケモンのデータ、わざのデータなど)
→手作業だと1記事30分くらいかかりそうな作業が完全自動化(ただし精度は、、、) - 日英の翻訳
→解決(英語で入力してとお願いすればOK)
成果物
ポケモンバトルデータベース様に記載されているシーズン30のパーティ記事をいくつかをAIエージェントへ入力しました。
- 現時点で精度はまあまあです
- 記事1つにつき約40円のコストがかかりますので、この画面を作るのに120円かかります
- 画面はあまり綺麗に作っていないので細かいことは気にしないでください。
ランキングページ
概要ページ
英語版概要ページ
新たな課題
ほぼ完成目前ですが、ややどうしようもない課題があります。
個人サイトとしてはコストが高すぎる、という点です。
ポケの記事の運営経験より算出していますが、家計を直撃する値段です。
- APIが高くつく(月大体100~200記事程度、なのでその40円倍がAPI費用想定です)
- インフラリソースが高くつく(AWSで構築予定ですが、ポケの記事より大きいPVが想定され、冗長化、負荷分散を視野に入れていくと、どうなるんでしょうね)
ひとまずはコスト削減できるように、Agentを改良していきますが、うーん
今後の方針
ひとまず、生成AIのナレッジを公開してみようかなと。
生成AI関連ですが、こういった実例って少ないと思うので。
また、他のAgent構築ツールがあるのでそちらでも実装していこうかなと、そのためにAI部分を独立させているので。