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


今回はその 2。AI を扱う機能を .NET Web アプリに追加するにあたっての AI を扱う機能を実装する方のプロジェクトの作り方についてです。
■ 全体の目次です
■ Web アプリに追加する、とは?
Web アプリそのものは別途存在していて、アドオン敵に AI 機能を追加する試みです。
簡単に言うと Web アプリのプロジェクトとは別のプロジェクトで AI の機能を実装します。そして、それらのプロジェクトに依存関係はないものの、実行時には AI 機能を持って Web アプリが動く。そういう夢のような構成です。
■ プロジェクト構成
プロジェクト構成はこんな感じ。

- AIClientAPI プロジェクト
AI を扱う機能を実装したプロジェクト - TestWebApp プロジェクト
↑のプロジェクトで作られた DLL を読み込み実行する Web アプリプロジェクト
今回の焦点は AIClientAPI プロジェクトの形式です。
■ .csproj
.csproj を見るのが早いでしょう。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <AssemblyName>RKSoftware.$(MSBuildProjectName)</AssemblyName> <RootNamespace>RKSoftware.$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace> </PropertyGroup> <ItemGroup> <PackageReference Include="Azure.AI.OpenAI" Version="2.0.0-beta.5" /> </ItemGroup> </Project>
今回 DLL をビルドして動的読み込みされることを想定したプロジェクトですので、AssemblyName、RootNamespace を設定しましたがこれば別になくても OK です。
PackageReference に Azure.AI.OpenAI が設定されています。これは AI を使うライブラリで、NuGet から入れています。実装内容次第で必要になる要素ですね。
ちなみに、このプロジェクトをビルドすると bin フォルダの中に
- Azure.AI.OpenAI.dll
- Azure.Core.dll
- OpenAI.dll
- System.ClientModel.dll
- System.Memory.Data.dll
といった DLL のも置かれますが、動作に必要なので、利用側(Web アプリ側)で読み込む必要があります。ものによっては利用側ですでに使用されていることもあるでしょうが今回は考慮していません。
■ プロジェクト形式
今回は Web プロジェクトを作成しています。クラスライブラリプロジェクトでも可能なのですが、この方が手っ取り早いです。
<Project Sdk="Microsoft.NET.Sdk.Web">
クラスライブラリプロジェクトの場合
この画像の、Microsoft.AspNetCore.App を参照してやればクラスライブラリプロジェクトでも Web のコントローラークラスを作ることができます。

しかし、ローカルにインストールされているファイルなので参照は面倒です。Web アプリにしてしまうのが間違いないと思います。
■ ビルド成果物
こんな感じになります。

この中の .dll ファイルたちが必要になります。 .exe ファイルも作られますが使いません。使わなくて大丈夫です。
■ 次回
次回からは AI を使うプロジェクトのコントローラーの作り方を見ていこうと思います。