以前にコンソールアプリで AI を扱うチャットアプリを作りました。
今回は Web アプリに組み込んでみます。GitHub のリポジトリはこちら。
こんな感じに文章要約を AI で行います。


今回はその 3。AI を扱う機能を実装する方のプロジェクト上のコントローラーの作り方についてです。
■ 全体の目次です
■ Web アプリに追加する、とは?
Web アプリそのものは別途存在していて、アドオン敵に AI 機能を追加する試みです。
簡単に言うと Web アプリのプロジェクトとは別のプロジェクトで AI の機能を実装します。そして、それらのプロジェクトに依存関係はないものの、実行時には AI 機能を持って Web アプリが動く。そういう夢のような構成です。
■ コントローラーのコード
こんな感じです。
[Microsoft.AspNetCore.Mvc.ApiController] [Microsoft.AspNetCore.Mvc.Route("[controller]")] public class AIController : Microsoft.AspNetCore.Mvc.ControllerBase { public record PostParameter(string UserMessage) { } public record Result(string AIMessage) { } [Microsoft.AspNetCore.Mvc.HttpPost()] public async Task<Result> Post(PostParameter p) { string aiMessage = "AI で作ったメッセージ"; return new Result(aiMessage); } }
ControllerBase クラスの導出クラスを作って ApiController 属性、Route 属性をつけてメソッドに HttpPost 属性をつけています。
メソッドの入出力は record にしています。この形の JSON でリクエストを受け取り、レスポンスを返します。
GET の場合
こんな感じです。
[Microsoft.AspNetCore.Mvc.ApiController] [Microsoft.AspNetCore.Mvc.Route("[controller]")] public class AIScriptController : Microsoft.AspNetCore.Mvc.ControllerBase { [Microsoft.AspNetCore.Mvc.HttpGet()] public string Get() => "返却する文字列";
HttpGet 属性になっているだけですね。返却は文字列にしています。これは返却した結果をブラウザでそのまま使いたいからこうしてみました。
今回は実装としては JavaScript のソースコードを返却する実装で使っています。こうすることで、この結果を Web サイトのページで script タグで読み込めます。
と、ここれを書いて思ったのですが、だったら API コントローラーでなく普通のコントローラーにすべきだったかもしれませんね。このあたりが後日追加で考えてみます。
■ 次回
次回からは AI を使うコントローラーの中身を見ていこうと思います。