以前に書いた記事で自分の興味のある分野をいくつか挙げてみたという話をしたが、今回はその中から競馬をテーマにDify(ノーコードでAIアプリを開発できるプラットフォーム)を使って競馬予想アプリを作ってみた。
使用技術スタック:
Dify: AIオーケストレーション
Gemini 3 Flash Preview: 最新(?)の推論モデル
Bing Search API: 最新調教・馬体重データの取得etc...
実装のこだわり:
チャットボット形式で、「予想して。」など一言送らないと動かなかったため、文字を打たなくてもいいようにスタートボタンを設置して、ボタンを押すと回答結果が表示されるようにステップを簡略化した。
入力変数を整理し、馬名や馬場状態、枠順などの入力が簡単になるようなフォーム設計をした。
プロンプトはAIなのであれだけど・・・最新の戦績や馬場状態、枠順、脚質、距離適性、コース適性etc...を一応、参照している。
レート制限(APIの回数制限)があるため、効率的なクエリ(検索文)を投げるように工夫した(AIがね・・・)
直面した課題と解決策:
・サーバー過負荷(503)でフリーズ。→ サーバー側の問題なのでアクセス頻度を減らしたり使用するAIのモデルを変更すると多少改善した。
・回答にPythonコードが混ざるノイズ問題。→ プロンプトで回答結果にコードが表示されないように記載すると多少改善したが、混ざることもあったので謎。
・最新モデルが英語で回答してしまう。→ こちらもプロンプトで日本語表記をするよう記載。問題解消。
・戦績や馬のデータを拾ってくるのにAPIを通して検索エンジンを組み込んだんだけど、なぜかGoogle検索のプラグインはうまくインストールされず・・・仕方なくbingのプラグインをインストールした。
実際にアプリを動かしてみた:
まとめと今後の展望:
初心者がノーコードでとりあえずは動くアプリが作れたことに技術革新を感じた。
AI生成したプロンプトは、その生成速度や完成度に驚いたが、完璧ではないので、壁打ちするか人力でのプロンプトの修正が必要。
とりあえずは動いたが、デザインやUIがかなり不格好な点に改善の余地あり。
また、肝心の予想精度に関しては実際のレースがないと何とも言えないが、今回作ったアプリでは選択した1頭の予想のみのため、今後はレースに出走する他の馬を絡めた予想ができるように、チャットボット形式からワークフロー形式にして、複数の馬の予想を並列処理したり、回答結果のブレを減らすなど改善点は多いと感じた。
Difyではテキストファイルなどからナレッジ(RAG)を追加することができるため、独自の競馬予想論を盛り込んで、アプリのオリジナリティを付加してみるのも良いと感じた。
他にはCursorを使って、このAPIを叩く専用フロントエンドを作るというのも今後やってみたいと思う。


