【ChatGPT×研修：前編】Azure PromptFlowで作るRAG活用の自律型AIエージェント研修

こんにちは！AgVentureLabの藁谷です。近年、生成系AIの進化とともに『AIエージェント』が注目を集めています。本記事では、Azure AI ServiceのPromptFlowを使い、RAGの仕組みで実践的な自律型AIエージェントを1日で作成する研修の模様と、その技術的ポイント、そして受講者の反応を徹底レポートします。
自律型AIエージェントとは、ユーザの要望を受け取って必要な情報を収集し、自律的にタスクをこなしてくれるシステムの総称です。

<p align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/66750e57-f1c3-4725-b6f5-f8d12ec7faeb.png" width=75% alt="研修を1日で実行できると豪語する会社員" >
</p>

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [研修実施の経緯とねらい](#研修実施の経緯とねらい)
1. [研修全体の流れ](#研修全体の流れ)
1. [JApitの仕組みと実装ポイント](#JApitの仕組みと実装ポイント)
1. [受講者の反応とアンケート結果](#受講者の反応とアンケート結果)
1. [今後の展望](#今後の展望)
1. [まとめ](#まとめ)

<!-- 各チャプター -->
<a id="#Chapter1"></a>
# 研修実施の経緯とねらい
#### 1-1. どのような技術研修？？
AgVentureLab アプリチームでは、アプリケーション開発と並行し、生成AIの新技術を調査・検証し、研修を通じてJAグループ内に展開しています。

今回、JAグループのシステム会社向けに実施した1日研修では、世間でも大きな話題となっているAIエージェントに注目し、RAG（Retrieval-Augmented Generation）の仕組みを使ってプロダクトコードを自動検索し、修正提案を行ってくれるような **「コーディングAIエージェントを作ってみる」** というテーマで、Azure PromptFlowを使ったハンズオンを行いました。

Copilotの登場でコーディングにかかる開発者体験が大きく変わりましたが、同様に今後(Copilotの発展も含めて)AIエージェントを活用した開発作業がスタンダードになると考えられます。今回の研修では、JAグループのような大きな組織のエンジニアに未来の開発手法を先取り体験させ、参加者にタネを蒔くことで数年後のエンジニアマインド変革に繋げられればと思っています。
本記事では、その研修の経緯から、実際に作成した「JApit」と呼ばれるエージェントの構成、そして参加者の反応・今後の展望などをレポートします。

#### 1-2. AIエージェントをシステム開発に使う狙い
今回のエージェント活用には以下のようなメリットを期待しています。

* ユーザ要望を入力に、コード修正案を提示
* タスクボードへ起票する開発タスクの洗い出しを自動化

これにより開発者を簡易な作業から解放し、ユーザバリューを届けるための作業にリソースを割ける効果が期待できます。


#### 1-3. Azure PromptFlowの採用理由
受講者には、日頃からコードを書いている人ばかりでなく、どちらかというとマネジメントやユーザ調整業務に従事している人が多いです。
そこで、視覚的に処理フローを組み立てられ、テストもしやすいAzure PromptFlowを採用しました。VSCodeの拡張機能を使うことで、ローカル環境でもLLMツールやPythonツールをつないだフローを一画面で管理しやすく、テスト結果の確認方法も用意されている利点があるためです。

<a id="#Chapter2"></a>
# 研修全体の流れ
#### 2-1. スケジュールと参加者
研修は7時間程度で、以下のように進行しました。
1. AIエージェントの概要座学（0.5時間）
1. MicrosoftによるPromptFlow基礎研修（2時間）
1. コーディングAIエージェント（JApit）作成ハンズオン（4時間）
1. まとめとクロージング（0.5時間）

参加者は19名で、ツールや生成AIに知見のある方もいれば、今回が初挑戦という方も含まれていました。
また、今年度もマイクロソフト社にご協力いただき、PromptFlowの基礎研修を実施いただくことで円滑にハンズオンに入ることができました。この場を借りて御礼申し上げます。

研修後にはchatGPTを利用したネットワーキングを実施し、組織を超えてのアイスブレイク、活発な交流が促進され大変好評でした。またプロンプトの使い方やtipsなどを
プロンプトの使い方やTipsなどの内容については、以下の記事で紹介しています。社内外のネットワーキングに生成AIを取り入れてみたい！という方は、ぜひ下記リンクから実施内容や導入効果をご確認ください。

https://qiita.com/AGV_yamada/items/dbc773ad8baa995b67a5

#### 2-2. コーディングAIエージェント（JApit）作成ハンズオンについて
今回実施した研修では、“Mission”という形式でステップごとの課題が示されており、受講者が自力で考えながらJApitというコーディングAIエージェントを完成させる構成になっています。
特に「親フロー」と「子フロー」に分割して設計する点が特徴で、フロント資産とサーバ資産それぞれの修正提案エージェントに処理を分けて実行させる仕組みになっています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/728fdf63-c07e-4aa9-9a94-f03f0da698e1.png" width=75% alt="人間で考えるとタスク生成と実行を分けるイメージがつきやすい">

さらにRAG（Retrieval-Augmented Generation）を使った修正対象ファイル検索手法や、LLMツールへのSystemメッセージの書き方などをスライドの図解とともに説明。理論を押さえた上で自分の力で考え、実装をさせる研修としました。
これは単純に手順を追うだけのハンズオンでは、ただ資料通りに進めて動くものができて満足！となりがちと考え、難易度は高いものの実りのある研修としたいという狙いです。
<a id="#Chapter3"></a>
# JApitの仕組みと実装ポイント
#### 3-1. コーディングAIエージェント「JApit」とは？
「JApit」は、ユーザからの修正依頼を入力すると、以下のステップを自動で実行します。

1. 要望を分析し、修正が必要なタスクを洗い出す（親フロー内のLLMツール）
1. RAGを使ってAzure Repos上のプロダクトコードを検索・Embeddingsで関連ファイルを特定
1. 該当ファイルごとに修正コード案を生成（子フロー）
1. コード修正案と必要な定型作業をまとめて、タスクボードに転記できる形式で出力

実行時には、index化したプロダクトコード情報を元にAzure AI Searchを活用して、適切なファイルを見つける仕組みです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/ea8dbab0-e8c3-4f1f-86a8-8b4d623683e1.png" width=100% alt="JApit全体イメージ">
```json:親フローの始めで生成されるタスクの例
[ {
    "target": "front",
    "action": "TODO一覧画面に一括削除ボタンを作成する",
    "ac": "一括削除ボタンが画面上に表示され、クリック可能であること。クリック時に一括削除ボタンAPIのリクエストを送信していること。"
  },
  {
    "target": "server",
    "action": "TODO一覧画面のControllerを修正し、一括削除ボタンのエンドポイントを作成する。"
  以下略
  }
]
```

```plaintext:ユーザに返すデータ
コードの修正内容 　以下を対象ファイル分繰り返す
　・修正対象のファイル名
　・修正ファイル全文
　・差分情報の解説
　・他ファイルへの影響や注意事項
必要なタスク全量
　・XXXX.vueの修正
  ・YYYY.javaの修正
　・テストケース作成
　・テスト実施
　など
```

#### 3-2. 親フローの役割
親フローはユーザの要望を受け取り、必要なタスクを把握し、子フローを呼び出す中心的な役割を担います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/6d43efe2-b93a-4729-a51e-11ea96aa8242.png" width=100% alt="親フローの処理概要">


PromptFlow上では、LLMツールやPythonツールを組み合わせて次のような動きを実装しています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/bc8b8d17-0d12-4c30-8e68-22801bb15312.png" width=100% alt="親フローの処理フロー">

これらのツールの入出力や接続関係は、VSCode拡張機能のグラフィカルな画面で編集・テストできます。

#### 3-3. 子フローの役割
子フローは実際にコード修正案を生成する部分です。今回の研修ではフロント（Vue.js）用とサーバ（Spring Boot）用の2種類を用意し、受講者が自分でフローを作成する形式となっています。
注意が必要な点として、PromptFlowはDAG（有向非巡回グラフ）で標準の繰り返し処理（ループ構造）がありません。そのため繰り返し処理はpythonコードで作成し、子フローを呼び出す実装が必要となります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/b211ac70-8e7e-40c0-b3ed-017210517ccd.png" width=100% alt="子フローの処理概要">

子フローの全体図は以下のようになります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953477/5cdd598a-bac8-419d-8dcf-73aee617e098.png" width=100% alt="子フローの処理フロー">

最終的には「修正するファイル名」「修正ソースコード」「修正概要」「他ファイルへの影響」などをJSONで返します。

<a id="#Chapter4"></a>
# 受講者の反応とアンケート結果
#### 4-1. 受講者アンケートのサマリー
ワークショップ終了後のアンケートでは、 **満足度4.63（5段階中）** と高評価を得ました。一方、「難しい」「時間配分がややタイト」という意見もあり、以下のような特徴的なフィードバックがありました。

* 良かった点
  * 最新技術（PromptFlow & コーディングAIエージェント）に触れる機会が貴重
  * 手を動かしながら学べるので具体的なイメージがつかみやすい
  * 質問が必須だったが、講師陣とのやりとりがしやすい環境だった
* 改善すべき点
  * VSCodeやPromptFlow、RAGといった要素の学習コストが高く、初学者は特に苦戦
  * 参加者のスキル差で「待ち時間」や「作業が追いつかない」問題が生じる
  * もう少し事前資料やフォローアップ環境を充実させたい

#### 4-2. 苦労したポイント・印象的なエピソード
* トークン制限に引っかかる
  * 多人数が同時にLLMや検索APIにリクエストを送るため、制限オーバーが発生しがちでした。
    これは事前のトークン量見積もりやテストが不完全だったと反省。
* 作業を“自分で考えさせる”研修方針
  * スライドの“Mission”形式で手順をあえて省略するパートを作り、受講者同士で試行錯誤してもらう構成にしたのが好評でした。単なる「マニュアルの手順通りにコピペ」ではないため、PromptFlowとAIエージェント構築の本質を掴みやすかったようです。

<a id="#Chapter5"></a>
# 今後の展望
#### 5-1. さらなる拡張・機能追加のアイデア
今回の研修で作成した「JApit」は、ユーザ要望に基づくコード修正・必要タスク提案というところまでをカバーしています。今回は機能に入れられなかったのですが、自動テストコードの生成・実行や、AIエージェントでの自己レビューなどを組み合わせれば、より強力なAIエージェントとして進化させられる可能性があります。

#### 5-2. 来年度以降の研修企画
本研修に限らず、今後も最新の生成AI技術を定期的に調査し、ハンズオン研修を開催していく予定です。スキルレベルの違う受講者が同じ場で学び合う中で、参加者同士の情報交換やネットワーク作りも促進できるように、研修設計をさらにブラッシュアップしていきたいと考えています。

<a id="#Chapter6"></a>
# まとめ
JAグループのシステム会社向けに実施した研修では、Azure PromptFlowとRAGを活用して、 **コード修正案を自動生成するAIエージェント「JApit」** を作成しました。

* 親フローと子フローに分けた設計で、複数のツールを組み合わせる
* RAGでコードを検索し、LLMが修正案やタスクリストを自動生成
* ハンズオン形式で、AIエージェントの仕組みを体験的に学ぶ

という流れを1日かけて行い、参加者からは **「最新技術に触れられて面白かった」「もっと学びたい」** と高評価をいただきました。一方で、ツールの難易度や時間配分に課題もあり、今後の研修企画のブラッシュアップに生かしていきます。

AIエージェントは今後ますます進化し、システム開発や運用の効率化を強力にサポートする存在となるでしょう。今回の取り組みが、読者の皆さんにとっても新しい技術導入のヒントになれば幸いです。