本投稿は LINEDC Advent Calendar 2025 の1日目の記事です。
1日目なのに空席になっていたので、急いで書いています!!
Microsoft Foundry とは
これまで Azure AI Foundry として提供されていたサービスです。先日の Microsoft Ignite 2025 にて Microsoft Foundry への名称変更が発表されました。
Microsoft Foundry はさまざまな AI モデルやエージェントを作成・利用できるプラットフォームで、Azure サービスとの連携も容易です。
LINE Bot からつないでみよう
以前、ノーコード・ローコードサービスである Azure Logic Apps で LINE Bot を簡単に構築できるテンプレートを作りましたので、今回もこれを使って LINE Bot を作り、ノーコードで Microsoft Foundry Agent Service と連携してみます。
Logic Apps は Power Platform で使える「Power Automate」と同じ UI なので、そちらで慣れている人は特にすんなり使えると思います。
テンプレートから LINE Bot のバックエンド処理を作成
上記リポジトリの README 内のリプライ>テキストのオウム返し>「Deploy to Azure」から、カスタムデプロイ画面を開きます。

あらかじめ作っておいた Messaging API チャネルの ID とシークレットを入力してデプロイすると、オウム返しを行うフローが最初からつくられた状態で Logic Apps リソースができあがります。
あとは、Logic Apps の URL を Messaging API の Webhook URL として設定すれば準備 OK です。
Table Storage を作成する
エージェントとの対話は、「スレッド」という単位で行います。
今回は LINE のユーザーと1対1でスレッドを作成することにし、それを管理するために Table Storage を使います。
Cosmos DB などのデータベースサービスでももちろんよいですが、今回はより手軽な Table Storage を選択しています。
Azure の、Logic Apps と同じリソースグループに「ストレージアカウント」を作成し、ストレージブラウザーの「テーブル」で新しいテーブル threads を作成しておきます。

Logic Apps との接続をセキュアにするため、マネージド ID を使います。 まず Logic Apps の「ID」からシステム割り当てマネージド ID をオンにし、その後ストレージアカウントの「アクセス制御 (IAM)」から Logic Apps のマネージド ID に対して「ストレージ テーブル データ共同作成者」のロールを付与しておきます。

これで、Logic Apps からテーブルへの操作が可能になります。
エージェントを準備する
Azure ポータルから「Microsoft Foundry」リソースを作成し、Foundry ポータルに遷移します。
そこでエージェントを作成しましょう。モデルを選ぶだけで簡単に用意できます。

Foundry ポータル上で、エージェントへの事前の指示(システムプロンプトですね)や複数エージェントとの連携、ツール連携などの定義ができます。
今回は割愛しますが、ここで使用するツールにも Logic Apps のフローが使えますので、全体的にノーコードでエージェントが作れるのでうれしいですね。
Logic Apps でエージェントとの対話を構築する
では、Logic Apps のフローを組み立てていきます。
フロー先頭の変数初期化のところに、2つ変数を追加しておきます。

あとは、For each>条件>True>スイッチ>ケース 1 : テキスト の中を変えていきます。
Logic Apps からエージェントを利用するには、AI Foundry アクションを使っていきます(おそらく、近日中に Microsoft Founcry に名称が変更されるでしょう)。

全体的にはこんな感じ。
ポイントは、スレッドの作成はストレージからの取得失敗時にのみ行うことで、初回以外はストレージに格納したスレッドIDを使って会話を継続していけるようにしています。
また、「Get Run」も Until ループで回すことで、返答が生成され終わるのを待つことができます。
そのほかポイントになりそうなアクションの中身を貼っておきます:

LINE ユーザー ID。値の選択で2つ出てきますが、(たぶん)下に表示されるほうを使います。(間違えるとループが勝手に増えてしまうので、おそらく気づけます)


LINE でユーザーが送ってきた文章を、メッセージに渡しています。

最後の、返答部分は下記ドキュメントにならって body('List_Messages')['data'][0]['content'][0]['text']['value'] という式をセットしています。
動作確認
こんな感じで動きます!


ちゃんとマルチターンで会話が続いてますね。
その他
Logic Apps では、そのほか自律型エージェントや会話型エージェントを作成する方法もあります。
これらの機能を使えば、より高度なエージェントを簡単に作成できそうですね。
エージェントループ(反復的なプロセスを使用して、複雑な複数ステップの問題を解決)を LINE Bot から使っていくということも、いずれやってみたいところです。