作りながら学ぶAIエージェント

第1回AIエージェントを作ってみよう
~Mastraを使って

連載で目指す完成イメージ

はじめに ~ AI時代にできること

最近Anthropic社からAIエージェントをなるべく手軽に作成・運用するためのサービスが発表されるなど、AIエージェントを作ること自体がだんだんと簡単になってきており、いよいよおもしろい時代になってきました。ところで皆さんは、AIエージェントとは何か、またそれを構成する基本的な要素にはどういったものがあるかをご存知でしょうか。

本連載では、AIエージェントの基礎的な考え方を学べることを目標に、ある程度多機能なメール返信エージェントを実際に動かしつつ、全4回にわたってそれぞれの要素を見ていく構成となっています。

また、皆さんの手元で必ずしもコードを動かさなくても、記事をご覧いただくだけで、たとえばAIエージェントのセキュリティ対策にはどういった手法があるのかなど、幅広いトピックを網羅的に掴み取れる内容にしていますので、ぜひお楽しみいただけますと幸いです。

題材は、単にメールを読み書きするだけでなく、多言語で届く取引先からのメールに応じて会食会場の提案や取引先の好みの記憶まで行う「多機能メール返信エージェント」です。受信メールの読み込み、状況に応じた情報収集、返信案の作成、人間の承認を経た送信までの一連のフローを自動化します。

AI(LLM)とAIエージェントの違い

生成AIサービスの中核を担っているのが「LLM(大規模言語モデル⁠⁠」です。大量のテキストデータを学習し、質問への回答や文章要約を行う「テキスト生成エンジン」とも言えます(近年はテキスト以外に画像・音声も扱うマルチモーダル化が進んでいますが、本連載では基本的なテキスト処理を中心に解説します⁠⁠。

では、近年注目されている「AIエージェント」とは何でしょうか。単体のLLMとの違いは、以下のようになります。

  • LLM(単体): 入力された情報に対して回答を生成・返答する、一問一答型の処理が基本
  • AIエージェント: LLMを頭脳として活用しつつ、状況の判断、外部ツールの操作、次の行動の決定などを自律的に繰り返すシステム

たとえば、⁠明日の天気を教えて」と質問した場合、単体の最もシンプルなLLMは事前に学習したデータのみに基づいて回答を生成します。

一方、AIエージェントは自ら天気予報システム(API)にアクセスし、最新情報を取得した上で回答します。このように、ツールを使いこなして自律的にタスクを実行する能力が、AIエージェントの核心です。

AIエージェント開発のエコシステム

AIエージェントを作るためのフレームワークやライブラリは、ここ1~2年で急速に増えています。ここでは、代表的なものを簡単に紹介します。

LangChain

AIエージェント開発フレームワークの先駆けとも言える存在です。Python版(LangChain)が有名ですがJavaScript/TypeScript版(LangChain.js)も提供されており、LLMの呼び出し、プロンプトテンプレート、ツール連携、メモリ管理、RAGなどAIアプリケーション開発に必要な要素を網羅的にカバーしています。

Mastra

本連載で使用するフレームワークです。TypeScriptネイティブで設計されており、Agent、Tools、Workflow、Memory、Guardrails、Evalsといった機能を統合的に提供しています。詳しくは次のセクションで紹介しますが、⁠TypeScriptでAIエージェントを作りたい」という方にとって、現時点で最も機能が充実した選択肢の1つです。

Claude Agent SDK

Anthropic社が提供する、Claudeを使ったエージェント開発のためのSDKです。昨今広く使われているコーディング支援ツール「Claude Code」と関連が深く、かつてはClaude Code SDKと呼ばれていました。コーディング用途にとどまらず、より一般的なエージェント用途にも対応したことを位置づけるため、現在の「Claude Agent SDK」という名称にリブランドされています。

これら以外にもさまざまなフレームワークが登場しています。重要なのはチームの技術スタックや作りたいエージェントの規模感に合ったものを選ぶことです。

本連載の教材としてMastraを選んだ理由

本連載でMastraを教材として選んだ理由は、大きく3つあります。

①TypeScriptネイティブであること

Web開発で標準となっているTypeScriptでそのまま書けます。ツール入出力やエージェント設定も型安全で、IDE補完やコンパイル時チェックが効きます。

②学習教材として適した構造を持っていること

Mastraは、AIエージェント開発に必要な概念を整理された形で提供しています。Agent、Tools、Memory、Workflow、Guardrails、Evalsといった各機能が独立したモジュールとして設計されており、1つずつ学んでいくことができます。これは連載記事の構成とも相性が良く、各回で新しい概念を導入しながら段階的にエージェントを高度化していく、という流れを自然に作ることができます。

③主要機能を網羅的にカバーしていること

Mastraが提供する主要機能の全体マップは以下のとおりです。

機能 概要 本連載での登場回
Agent LLMに指示文とツールを与えてエージェントを定義する 第2回
Tools エージェントが呼び出せる外部機能(API呼び出し、DB操作など) 第2回
Structured Output エージェントの出力をスキーマに沿って構造化する 第2回
Workflow 複数ステップの処理を定義・実行(精度・コスト面でのメリットは第2回で詳説) 第2回
Memory 会話履歴や文脈を記憶し、パーソナライズに活用する 第3回
Guardrails 入出力の安全性を検証するフィルター機能 第3回
Evals エージェントの応答品質を定量的に評価する仕組み 第4回

このように、AIエージェント開発において押さえるべき要素がMastra1つで学べます。もちろんMastraが唯一の正解というわけではありませんが、⁠AIエージェントの構成要素を体系的に学ぶ」という目的においては、非常に適した教材だと考えています。

補足: 本連載のデモで登場するスケジュール提案機能やレストラン検索など、一部の内部処理はサンプル用のモック実装となっています。ただしいずれも外部API(カレンダーサービスや検索サービスなど)へ差し替え可能な構造で設計しているため、実用途においても同様の目的を達成できます。本連載ではAIエージェントの構成要素の理解に焦点を当てるため、外部サービス連携の詳細には踏み込みません。

完成形のデモ

百聞は一見にしかず。まずは、本連載の全4回を通じて完成する多機能メール返信エージェントの動作を見てみましょう。単なる定型返信ではなく、会食の候補日時やレストランの提案まで行う、多言語対応の実践的なシステムとして動きます。

次の画像では、Slack上で担当者が受信メールの要約を依頼し、エージェントが取引先ごとに内容を要約して返している様子が確認できます。

とくに3件目の要約に注目してください。メール本文に紛れ込んだ悪意ある指示(プロンプトインジェクション攻撃)を検知し、指示に従うことなく安全に処理している様子が示されています。第3回で扱うGuardrailsによる防御が機能していることがわかります。

完成形のイメージ

続く画像では、担当者のスケジュールを考慮した会食会場の提案と、それに基づく返信メール案の作成が段階的に行われています。エージェントが勝手にメールを送信するのではなく、担当者がSlack上で内容を確認し、承認ボタンを押して初めて送信される構成になっている点にも注目してください。AIエージェントの自律性と人間による最終判断を組み合わせる「Human-in-the loop」の流れが1つのスレッド内で完結します。

AIエージェントの実行イメージ

メール受信から返信送信までの全体フロー

完成形のエージェントは、以下のフローで動作します。

  1. メール受信: Mailpit(ローカルSMTPサーバ)に届いたメールをエージェントが検出
  2. 返信案の作成: 相手のメール内容に応じて、AIが返信案を生成
  3. Slack通知: 返信案がSlackチャンネルに通知され、承認/却下ボタンが表示される
  4. 人間の承認: 担当者がSlack上で返信内容を確認し、承認ボタンを押す
  5. メール送信: 承認された返信案が自動的にメールとして送信される
今回目指すAIエージェントの機能と処理フロー

このデモの裏側では、前節の機能マップ(Agent/Tools/Structured Output/Memory/Guardrails/Evals/Workflow)が連携して動いています。各回で具体的な実装を順に見ていきます。

連載ロードマップと次回予告

本連載は全4回構成で、各回で以下の内容を扱います。

各回の学習テーマ

  • 第1回: AIエージェントを作ってみよう(本記事)
    ――AIとAIエージェントの違いを整理し、開発フレームワークのエコシステムを俯瞰した上で、本連載の教材としてMastraを選んだ理由と完成形のデモを紹介します。
  • 第2回: AIエージェントの基礎を作ろう
    ――Agent・Tools・Structured Outputの基本に加え、Slack連携・Human-in the-loop・Workflowまで組み立て、⁠動くもの」を手元に用意します。
  • 第3回: メモリとガードレールでエージェントを賢く安全にしよう
    ――Memoryで過去のやり取りを踏まえたパーソナライズを、Guardrailsでプロンプトインジェクション対策を導入します(個人情報漏洩対策については概念のみ触れます⁠⁠。
  • 第4回: Evalでエージェントの品質を改善しよう
    ――Mastra Evalsで応答品質を定量的に測り、計測→分析→改善→再計測のサイクルを回します。

お知らせ第1回のまとめ

本記事では、AIとAIエージェントの違いを整理し、開発フレームワークのエコシステムを俯瞰した上で、本連載の教材としてMastraを選んだ理由を紹介しました。そして完成形のデモをお見せし、全4回の道のりを概観しました。

次回からはいよいよ実装に入ります。エージェントの定義、ツールの作成、Slack連携まで、手を動かしながらAIエージェント開発の基本を体験していきましょう。リポジトリをGit Cloneすれば、すぐに開発を始められる環境が整っています(具体的なセットアップ手順は第2回の冒頭でご案内します⁠⁠。次回もお楽しみに。

参考: デモで使用した素材は、それぞれのライセンスに準拠した形で利用しています。

  • レストラン提案のサンプル画像: Unsplash
  • Slack Botのアバターアイコン: Lucide Icons

おすすめ記事

記事・ニュース一覧