【イチから学ぶ! 初めての Azure と生成 AI】Azure App Service / Container Apps を用いた生成AIアプリケーション開発

# はじめに

本記事は、【イチから学ぶ! 初めての Azure と生成 AI】セミナーのセッション『AI アプリのクラウド運用入門 ～App Service と Container Apps の選び方と管理のポイント』の解説記事です。

Azure を活用した生成 AI アプリケーション開発の際に役立つポイントをご紹介します。実装時に直面しがちなハマりどころやその解決策を、全 5 回に分けてお届けします。

本記事は序章として、生成 AI アプリケーション開発における代表的なシナリオと、サンプルアプリケーションの内容についてご紹介します。

本記事でご紹介するサンプルアプリケーションのソースコードは、以下のリポジトリで公開しています。

https://github.com/kohei3110/azure-101-day

# シナリオ概説

生成 AI アプリケーションを開発する際、多くの方が以下のような疑問や課題に直面するのではないでしょうか。

- 分析対象のファイルをどのようにアップロードするか
- SLM をサイドカーコンテナで実行し、どのように連携するか
- 生成 AI を組み込んだアプリケーションの監視方法
- AI が生成したコードを安全な環境でどのように実行するか

本セミナーでは、Azure 上で動作するサンプルアプリケーションのコードを用いて、これらの課題を解決するための実践的な Tips をご紹介します。

このセミナーが、生成 AI を活用したアプリケーション開発の一助となれば幸いです。

# インテリジェントアプリへの進化と新たな開発課題

生成 AI を活用することで、アプリケーションは単なるツールを超え、真の『インテリジェントアプリ』へと進化する可能性があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/7b2f74a7-cc70-fbaa-1033-849a66bfa11c.png)

一方で、生成 AI を活用したアプリケーション開発では、これまで以上に考慮すべきポイントが増えることが予想されます。

たとえば、従来のアプリケーション開発で一般的だったファイルのアップロードやダウンロードのシナリオに加え、以下のような課題が新たに浮上しています。

- SLM をサイドカーコンテナで稼働させる方法
- 生成 AI を組み込んだアプリケーションの監視方法
- AI が生成したコードを安全に実行する方法

特に、生成 AI アプリケーションの監視では、従来以上に複雑な対応が求められます。アプリケーションロジックの監視に加え、モデルの精度評価や生成されたデータの妥当性確認といった新たな観点が重要になります。

## 分析対象のファイルをどのようにアップロードするか

生成 AI を活用し、アップロードしたファイルを分析するシナリオは、生成 AI 時代における重要なユースケースの一つです。

例えば、Azure OpenAI Assistants API や Azure AI Agent Service を利用すれば、アップロードしたファイルを生成 AI に分析させる機能を簡単に実現できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/2434747f-deb5-24ce-27ca-5d39c5784265.png)

一方で、「どのようにファイルをアップロードするか」について、具体的な方法を検討中の方も多いのではないでしょうか。

参考までに、以前 **【Java on Azure 実践開発（全5回）】** というシリーズで、Java を用いたファイルアップロードの実装方法についてまとめました。生成 AI アプリケーションにおいても、同様の課題を検討する必要があると考えられます。

https://qiita.com/kk31108424/items/d07c7cf8926e669c6fa2

## SLM をサイドカーコンテナで稼働させる方法

ファインチューニングしたモデルをサイドカーコンテナで実行し、アプリケーションと連携する手法は、生成 AI アプリケーションの開発で注目されるユースケースの一つです。これにより、以下の利点が得られます。

- コスト削減
- モデル精度の最適化
- 独立したコンテナとしてのスケーリング

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/e2925181-0847-4ea6-c7c8-b3a24d851dbc.png)

セミナーでは、Azure App Service や Container Apps を利用し、SLM（Specialized Language Model）をサイドカーコンテナとして稼働させる具体的な方法について解説しました。こうした実装により、モデルを既存のアプリケーションにシームレスに統合できます。

## 生成 AI を組み込んだアプリケーションの監視方法

生成 AI アプリケーションの監視は、従来の監視項目に加え、以下のような新たな視点が必要です。

- モデルの精度評価
- 生成データの妥当性確認
- リアルタイムモニタリングによる異常検知

これらの監視項目を適切に実施することで、生成 AI の信頼性を高めることができます。セミナーでは、Application Insights と OpenTelemetry を連携し、独自のカスタム関数のトレースや、ユーザーフィードバックをトレースに紐づける方法をご紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/1cfd3d6d-a17f-19ff-6461-3b31b18ce1e1.png)


## AI が生成したコードを安全に実行する方法

生成 AI が生成したコードを安全に実行するためには、以下の課題を解決する必要があります。

- 実行環境の分離とサンドボックス化
- 生成コードの検証

Azure Container Apps の動的セッション機能を活用することで、安全なコード実行環境を構築可能です。本シリーズでは、実装方法を詳細に解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/7ebf2bec-9a2c-d16d-ca5e-79f470e28dc0.png)

# サンプルアプリケーション実行環境

App Service / Container Apps を活用し、生成 AI を組み込んだサンプルアプリケーションの実行環境は下図の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/9585cc11-b8dd-2cd1-19dc-65af13f4de3e.png)

サンプルアプリケーションを App Service (Web App for Containers) / Container Apps にそれぞれデプロイする構成とし、生成 AI アプリケーション開発における代表的なシナリオについて、API を作成しました。

登場するリソースについて、簡単にご紹介します。

## Azure 上のコンテナ関連サービス

Azure にはさまざまなコンテナ関連サービスが提供されています。本記事では、その中でも App Service (Web App for Containers) と Container Apps に焦点を当て、詳しく解説していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/c6e716e0-9692-ac84-cb70-d770960f40ad.png)


## App Service (Web App for Containers)

App Service は、Windows、Linux、Docker コンテナ（カスタム コンテナー）の Web アプリケーションを Azure 上にホストすることができる PaaS です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/be79cb57-515d-a0f8-4527-7edc366a574d.png)

今回は、生成 AI アプリケーションの実行環境として、App Service (Web App for Containers) を作成しました。

App Service (Web App for Containers) の課金の単位は、App Service Plan です。App Service Plan は「アプリケーションサーバー」相当のリソースとして理解するとわかりやすいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/ce612348-3338-926e-38a5-6706ed9d8199.png)


https://learn.microsoft.com/ja-jp/azure/app-service/

## Container Apps

Container Apps は、フルマネージドのサーバーレスコンテナサービスです。開発者がアプリケーション開発 (=ビジネスの差別化要因) に集中できることを目指して作られたサービスとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/c1af3224-e278-f0f8-1299-be7bf4aa2ab6.png)

今回は、生成 AI アプリケーションの実行環境として、Container Apps も作成しました。

Container Apps の基盤となるのが「Container Apps 環境」というリソースです。ネットワークやストレージ等インフラ関連の設定は Container Apps 環境にて行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/84f408f1-b42c-d2eb-75a1-ed6296f09142.png)

https://learn.microsoft.com/ja-jp/azure/container-apps

## 関連サービス

App Service (Web App for Containers) 、Container Apps は、Azure における代表的なコンテナ関連サービスですが、今回のサンプルアプリに登場するその他の関連サービスを簡単にご紹介します。

### Container Registry

Container Registry は、オープンソースの Docker Registry 2.0 が基になっているマネージドなプライベートな Docker レジストリ サービスです。

Web App for Containers や Container Apps を利用するケースの大半で使用されています。

コンテナイメージのビルド機能も備えており、イメージのビルドからデプロイまでのプロセスを一元化して管理することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/ff8ddbf4-d739-3a7b-fe8e-928f8cec3d56.png)


### WebJobs

WebJobs は、Web App for Containers と同じインスタンスでプログラムおよびスクリプトを実行できるようにする App Service の機能です。 全ての App Service プランで WebJobs をサポートしており、WebJobs を使用するための追加のコストはありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/98f23d96-4270-00e4-e338-55c9ee70e39f.png)

### AI Agent Service

AI エージェントを安全にビルド、デプロイ、スケーリングできるように設計されたフル マネージド サービスです。
Azure OpenAI の Assistants API を基盤とし、Microsoft のマネージドサービスを組み合わせることで、エンタープライズ向けに機能を大幅に拡張したものといえます。 
具体的には、Bing Search、Microsoft Fabric、SharePoint、Azure AI Search、Azure Blob Storage、ローカルファイル、さらには独自のライセンスデータといった多様なデータソースから情報を引き出し、データをグラウンディングすることが可能です。

Assistants API との大きな違いとしては、関数呼び出し（Function calling / tool calling）を自動で行ってくれる点です。Assistants API の場合、関数の呼び出しはクライアント、つまりアプリのロジック内で実装する必要がありましたが、AI Agent Service の場合は、すべて内部で自律的に呼び出してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248756/6b889ef7-1799-8f19-3acd-27f9114091bc.png)

# おわりに

本記事は、【Azure 生成 AI アプリ実践開発】の序章として、サンプルアプリケーションの実行環境や、関連するリソース、今後の実装シナリオについてまとめました。

次回以降では、具体的なサンプルコードや実装のコツを解説していきます。お楽しみに！