10分で分かるAIエージェントの設計パターン

# はじめに

こんにちは！KIYO Learningで[スタディング](https://studying.jp/)の開発をしている @Kumacchiino です！  
今回は、AIエージェントについての記事を書いてみようと思います。  

近年、**AIエージェント**が注目を集めていますが、その実態や実装手法、導入時の注意点については、まだ不明瞭な部分が多いのが現状です。  
そこで、本記事では各手法の概要やユースケースを整理し、実際の導入や活用に役立つ情報をまとめてみようと思います。  

この記事は、Anthropicの「[Building effective agents](https://www.anthropic.com/research/building-effective-agents)」をベースにしており、エージェントとワークフローの違いやユースケースについて、自分なりの解釈を交えながらまとめています。  

## この記事を読むと

- **拡張LLMモデル**がどのようなものか理解できる
- エージェントやワークフロー（プロンプトチェーン、ルーティング、並列化、オーケストレーション、自律型評価オプティマイザー）の各手法とその**違い**が分かる
- 各手法の具体的なユースケースや**メリット・デメリット**が把握できる
- エージェントシステムの実例や、導入時の**注意点**、最新の技術動向について理解できる

## 拡張LLMモデル

まず、基本となるのはLLM（大規模言語モデル）に外部機能を組み合わせた**拡張LLMモデル**です。  
このモデルは、従来のLLMの能力に加え、外部システムとの連携（例：ウェブ検索、API連携、データベースアクセス、ツール操作、履歴の記憶など）を可能にします。  
例えば、OpenAIのChatGPTのブラウジング機能や、RAGなどが該当します。  
ユーザーの入力から必要な情報を抽出し、**最新かつ正確な情報**を取得、その結果をプロンプトに反映して応答するため、問題解決において柔軟な対応が可能となります。

以下のようなイメージです。

![Untitled diagram-2025-03-02-123943.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/1620c80a-2b70-42e3-8057-1c48e85d1724.png)

### ユースケース

- **応答の精度**や**信頼性**を向上させたい場合
- **最新の情報**を動的に取り入れる必要がある場合
- モデルサイズや計算コストの制約を回避しながら、**知識の保持と参照**を効率化したい場合

## ワークフロー: プロンプトチェーン

**プロンプトチェーン**は、タスクを一連のステップに分割して処理するワークフローの一例です。  
具体的には、最初に全体の構成やアウトラインを生成し、その後各ステップ（例：各段落やセクションの執筆）で個別のLLM呼び出しを行い、最後にそれらを統合する形で最終出力を生成します。  
途中で**プログラムによるチェック**や補正処理を挟むことで、タスク全体の精度や整合性を確保できます。

![Untitled diagram-2025-03-02-100336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/ae976dcc-b4e4-4b97-84ec-6e08d300263f.png)

### ユースケース

- 複雑な文章やレポートの作成など、**複数の段階**に分けた出力が必要な場合
- 各ステップごとに処理を細分化することで、全体の**精度向上**を狙う場合
- 処理手順の**透明性**を確保し、途中の結果を検証しながら進めたい場合

## ワークフロー: ルーティング

**ルーティング**は、ユーザーからの入力を複数のカテゴリに分類し、各カテゴリに最適化されたLLMモデルへタスクを振り分ける手法です。  
例えば、一般的な質問と専門的な質問を自動で判別し、FAQシステムや専門的な回答システムにルーティングすることが可能です。  
この仕組みにより、各タスクに対して**最適な応答**が返せるだけでなく、シンプルなタスクは軽量なモデル、複雑なタスクは高性能なモデルを使い分けることで、**コスト最適化**も実現できます。

![Untitled diagram-2025-03-02-100236.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/512b02d2-ce37-4750-9bf7-ab8f3ee76503.png)

### ユースケース

- ユーザーの問い合わせ内容を自動で**分類**し、最適な応答を実現したい場合
- 各分野に特化したモデルを組み合わせ、**コストと精度のバランス**を最適化したい場合

## ワークフロー: 並列化

**並列化**は、タスクを複数のサブタスクに分割し、**同時並行**で処理する手法です。  
各サブタスクを独立して処理することで、全体の**応答速度**を向上させるとともに、複数の観点からの出力を統合することで**信頼性**も高まります。  
冗長性を活用して結果の整合性を検証する仕組みとしても有効です。

![Untitled diagram-2025-03-02-100919.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/f5f4686b-e405-4224-883b-805f92a9118e.png)

### ユースケース

- 大規模なデータ処理や**複数タスクの同時実行**で処理時間を短縮したい場合
- 異なるサブタスクの結果を統合し、より**信頼性の高い**最終結果を得たい場合

## ワークフロー: オーケストレーション

**オーケストレーション**は、中央のLLMが動的にタスクを**サブタスクに分解**し、各サブタスクを担当するワーカー（LLM）に委任、その結果を統合するアプローチです。  
この手法は、タスク全体の構造が事前に明確でない場合や、**動的なタスク分解**が求められるシナリオに非常に有効です。  
システム全体の**柔軟性**や**スケーラビリティ**を向上させ、複雑な問題解決に対応します。

![Untitled diagram-2025-03-02-111144.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/bcf6682b-9165-43b9-b827-a0e18f61b76c.png)

### ユースケース

- 構造が定まっていない複雑なタスク（例：アプリケーション全体の設計や実装）を処理したい場合
- 複数の外部システムから情報を収集し、動的に**分析・統合**する必要がある場合

## ワークフロー: 自律型評価オプティマイザー

**自律型評価オプティマイザー**形式は、まず1つのLLMを用いて初期応答を生成し、その応答を別のプロセスやLLMで**評価**、フィードバックを反映して再度出力するという**反復プロセス**です。  
この仕組みは、評価基準を**明確に定め**、逐次改善を行うことで最終的に高品質な出力を得ることを目的としています。  
評価プロセスには、人間の介在を組み込むことも可能で、**定量的な指標**を用いることで自動化する試みも進んでいます。

![Untitled diagram-2025-03-02-112102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/feb2d1ab-d314-46ab-814a-3dfabfd02070.png)

### ユースケース

- 複数回の検索や分析を通じ、**包括的な情報収集**が必要な場合  
  - 評価者が追加検索の必要性を判断し、反復処理を制御する
- 初期応答の**品質向上**のため、フィードバックループを構築して精度を高めたい場合

## エージェント

**エージェント**とは、**LLMが独自のプロセスとツールの使用を動的に指示するシステム**のことです。  
エージェントは、ユーザーからのタスクを受け取ると、**自律的**に計画や操作を実行し、その結果に基づいてフィードバックを評価、次のアクションを決定します。  
場合によっては、**人間の介入**による評価や補正を依頼することもあります。  

![Untitled diagram-2025-03-02-115011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/c0bb5440-f86b-45c3-84cf-12cb4fa1eade.png)

具体例として、コーディングエージェントにアプリケーションの開発を任せると、**システム設計**、**コード生成**、**テスト**、**デバッグ**といった一連のプロセスを自律的に実行する流れが構築されます。

![Untitled diagram-2025-03-02-120733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3996812/5f5d35ea-b96f-468e-b09e-dbc90405ffd4.png)

### ユースケース

- タスクの遂行において、必要なステップや条件を事前に正確に予測することが**困難**な場合  
  - ただし、設計・テスト・保守の**コスト増大**やエラー処理の**複雑性**に留意が必要
- 従来のワークフローでは対応しきれない**高度で複雑なタスク**に対して自律的な判断が求められる場合

## まとめと課題

エージェントシステムは、その**柔軟性**と**自律性**により多くのメリットを提供しますが、設計や運用にあたっては以下の基本原則が重要です。

1. エージェントの設計は**シンプル**に保つ  
2. エージェントの計画手順や判断プロセスは**明示的に表示**し、**透明性**を確保する（**ブラックボックス化**を避ける）

また、AIエージェントの実装にあたっては、以下の点にも注意が必要です。

- **コストと計算資源の最適化**  
  各手法の特性に応じ、シンプルなタスクには軽量なモデル、複雑なタスクには高性能なモデルを適用し、システム全体の**効率性**を考慮する必要がある
- **エラー処理と安全性**  
  自律的な判断に依存するため、予期せぬエラーや誤動作を防ぐための**評価・フィードバックループ**や、場合によっては**人間の監視**が不可欠

LLMを用いた業務課題の解決を検討する際は、まずシンプルなプロンプトやワークフローで試行し、シンプルなソリューションで不十分な場合にのみ、**エージェントシステムの構築**を検討すると良いでしょう。  

----

以上、AIエージェントとワークフローの違いや活用方法についてご紹介しました。
スタディングでは、AIを活用し、利用者が効率的に新しい知識を習得できるよう、日々サービスの改善に努めています。
ご興味のある方は、ぜひ下記をご覧ください。最後までご覧いただき、ありがとうございました！

----

## KIYOラーニング株式会社について
当社のビジョンは『世界一「学びやすく、分かりやすく、続けやすい」学習手段を提供する』ことです。革新的な教育サービスを作り成長させていく事で、オンライン教育分野でナンバーワンの存在となり、世界に展開していくことを目指しています。

https://kiyo-learning.com/

### プロダクト


* [スタディング](https://studying.jp/)：「学びやすく・わかりやすく・続けやすい」オンライン資格対策講座
* [スタディングキャリア](https://career.studying.jp/)：資格取得者の仕事探しやキャリア形成を支援する転職サービス
* [AirCourse](https://aircourse.com/)：受け放題の動画研修がついたeラーニングシステム（LMS）

### KIYOラーニング株式会社では一緒に働く仲間を募集しています

https://www.wantedly.com/companies/kiyo-learning/projects

https://herp.careers/v1/kiyolearning