Slide 1

Slide 1 text

速習 AI エージェント入門 社外公開版 Nov 2025 株式会社LegalOn Technologies 浅野 卓也

Slide 2

Slide 2 text

はじめに ターゲット・背景・本日のゴール

Slide 3

Slide 3 text

ターゲット エージェント開発に関わることになったプロダクトマネージャー、デザイナー エージェント技術に興味を持ったバックオフィス系職種などの非エンジニア エージェント開発に興味はあるが、実践経験の少ないエンジニア

Slide 4

Slide 4 text

💥 背景 AI エージェントはこの1 年の間で急速に進化 用語が混乱しており、認識のズレが発生しやすい プラクティスが固まっていない 新しい情報がどんどん出てくる どこから学べば良いかわからない キャッチアップにかかる労力が非常に大きい 🎯 ゴール 基礎知識や用語を整理し、共通理解を得る AI エージェントやその開発に関連する、これまでの 大きな流れをキャッチアップする ⏩ 知識の土台を作り、AI エージェント開発を効率化す る

Slide 5

Slide 5 text

本日のハイライト 🤔 「エージェント」という用語の誤解 🔄 ワークフローとエージェントの違いと両立 💬 エージェントとのインタラクション(HITL とGenerative UI )

Slide 6

Slide 6 text

AI エージェントとは何か エージェントの定義と特性

Slide 7

Slide 7 text

🤔 エージェントと、そうでないAI との違いは?

Slide 8

Slide 8 text

AI 研究の4 つのアプローチ 人間のように 合理的に 思考 🧠 認知科学的アプローチ 人間の思考を模倣 ⚙️ 論理学的アプローチ 記号的・形式的推論 行動 🤖 チューリングテストアプローチ 人間らしく振る舞う 🎯 合理的エージェントアプローチ 目標達成のため合理的に行動 現在のAI 研究の主流は「合理的エージェント」アプローチ エージェントは人間らしさより目標達成を重視 内部処理は人間と異なってもOK

Slide 9

Slide 9 text

エージェントアプリケーションの例 Computer Use (OpenAI Operator 、Claude ) Browser Use (Browser Use 、Browserbase ) Gemini Deep Research ChatGPT Deep Research Open Deep Research (OSS) Claude Code Cursor Devin OpenHands (OSS) ChatGPT (agent mode ) Claude Gemini Microsoft Copilot Manus 近年のチャットAI は、ツール実行を行う「エージェント」へと進化 してきている コンピュータ・ブラウザ操作 リサーチエージェント コーディングエージェント 汎用エージェント

Slide 10

Slide 10 text

AI エージェントという用語について AI エージェント(AI Agents ) LLM を使う場合、とくにLLM エージェントと呼ぶこともある 単に「エージェント」というと、ソフトウェア以外(人など)もエージェントの範疇に入りうる 以降では便宜上、AI エージェント、さらにいうとLLM エージェントを「エージェント(agents ) 」と呼ぶこ とにする エージェントとは何かを厳密に定義することは難しく、共通の理解はまだ存在しない ここではエージェントを、便宜的に以下のように捉えることにする: 環境と相互作用し、与えられた目標(ゴール)を達成しようとするAI

Slide 11

Slide 11 text

エージェントの基本概念 環境 エージェント ⾏動 知覚 環境から知覚 (percepts) を得る 環境に対して行動 (actions) を起こす

Slide 12

Slide 12 text

エージェントの「定義」について エージェントの定義は数多く提案されている 自律的に動作し、環境を知覚し、長期間に渡って、変化に適応し、目標を作成して追求する [AIMA] センサーで環境を知覚し、アクチュエーターで環境に働きかける存在 [AIMA] 環境を感知し、目標を追求し、環境に対して作用する [Fanklin & Graesser 1996] 「エージェント」を厳密に定義することは難しいし、生産的ではない グラデーションやグレーゾーンがあり、例外が存在する 例:サーモスタットやエアコンは上記の定義に当てはまるがエージェントだろうか? また、製品マーケティングではエージェント的(=エージェンティック)ではない実装であっても「エー ジェント」と喧伝されることもある

Slide 13

Slide 13 text

エージェントの「定義」について 産業界において重要なのは、エージェントの技術を利用して役にたつシステムを開発すること 定義が定まっていないので、単なるプログラムやLLM アプリケーションであるか、真にエージェントで あるかを厳密に区別することはできない エージェントの定義についての議論に時間を費やすのは非生産的 このあと説明するように、エージェント的な振る舞いをするAI 、すなわち エージェンティックAI (Agentic AI ) を単に「エージェント」と呼ぶことが多い

Slide 14

Slide 14 text

エージェンティック(agentic )な特性 Fanklin & Graesser 1996 による、エージェントの特性: 反応的である (reactive): 環境の変化に応じてタイムリーに行動する 自律的である (autonomous) - 自身の行動を自らコントロールする 目標志向である (goal-oriented, proactive) - ただ反射的な反応をするだけではない 継続性がある (temporally continuous) - 1 回呼び出して終わりではなく、継続的に動作 社交性がある (communicative) - 他のエージェントとコミュニケーション 学習する、適応的である (learning, adaptive) - 過去の経験に基づいて行動を変える 柔軟である (flexible) - 行動が固定的ではない 特に最初の4 つは、全てのエージェントが持つべき特性である、としている その他の特性

Slide 15

Slide 15 text

ここまでのまとめ エージェントの定義と特性

Slide 16

Slide 16 text

ここまでのまとめ エージェントの定義と特性(1 ) 「エージェント」という用語の定義はまだ業界内で固まっていない どの意味で使われているのか注意する エージェント的な特性 反応的、自律的、目標志向、継続性など これらの特性を備えたAI をエージェント、あるいは エージェンティックAI と呼ぶことが多い

Slide 17

Slide 17 text

ここまでのまとめ エージェントの定義と特性(2 ) ひとまずは曖昧に「環境と相互作用し、与えられた目標(ゴール)を達成しようとするAI 」としよう 行動:ツールを利用して環境に影響を与える 知覚:ツールを利用して環境からフィードバックを得る

Slide 18

Slide 18 text

エージェントの概要

Slide 19

Slide 19 text

エージェントがもつべき能力 能力 概要 ツール利用 (tool use) 外部環境と相互作用するツールを呼び出し、知覚・行動する プロファイル (profile) エージェントに役割・ユーザーの好みなどを与え、振る舞いを最適化する 計画 (planning) 目標(ゴール)を立て、それを分解して実行可能なサブタスクに落とし込む 内省 (reflection) 自らの出力やフィードバックを受けて方針を見直す 記憶 (memory) 短期や長期の情報を保持し、活用する

Slide 20

Slide 20 text

エージェントによるツール利用 環境 エージェント ツール ? ツール 知覚 ⾏動 エージェントが環境と相互作用するために「ツール (tool) 」を利用する センサー:環境から知覚を受ける(例:Web 検索)

Slide 21

Slide 21 text

ツールの例 Web 検索 (web search) Web ページ取得 (fetch) センサー情報の検知 (sensing) ブラウザ利用 (browser use) ファイル操作 (file I/O) メッセージ送信 (messaging) メール・チャット等 数値計算 (calculation) コード実行 (code run) 現状、ツールはMCP サーバー、もしくはPython 関数として実装されることが多い

Slide 22

Slide 22 text

エージェントの推論ループ 環境 エージェント ツール エージェント プログラム ツール 知覚 ⾏動 LLM 停⽌ エージェントは、目標(ゴール)を与えられたとき、その目標を自律的に追求しようとする LLM を使って反復的・段階的・自律的にタスクをこなす

Slide 23

Slide 23 text

エージェントの推論ループ 環境 エージェント ツール エージェント プログラム ツール 知覚 ⾏動 LLM 停⽌ エージェントプログラムは、停止するまで以下のステップを繰り返し実行する: 思考(reason ) :LLM でツール選択、停止判定 行動(act ) :ツールを呼び出し、環境に影響を与える 知覚(perceive ) :環境からのフィードバックを受け取る

Slide 24

Slide 24 text

基本的なエージェントの内部構造 環境 エージェント ツール エージェント プログラム ツール 知覚 ⾏動 LLM プロファイル 計画 内省 記憶 エージェントは、必要に応じて以下のようなモジュー ルを持つ: モジュール 概要 プロファイル (profile ) LLM に役割を指示するプロンプト 計画(planner ) サブタスクの生成や、生成した計画の取 得 内省(reflection ) ツール実行結果を元に計画を修正 記憶(memory ) コンテキストの永続化を行い、必要にな ったら想起

Slide 25

Slide 25 text

ここまでのまとめ エージェントの概要

Slide 26

Slide 26 text

ここまでのまとめ エージェントの概要 エージェントプログラムは、内部で推論ループを実行する 思考→行動→知覚 エージェントはツール、プロファイル、計画、内省、記憶などのモジュールを使って自律的に目標を達成し ようとする 環境 エージェント ツール エージェント プログラム ツール 知覚 ⾏動 LLM プロファイル 計画 内省 記憶

Slide 27

Slide 27 text

エージェントシステムの 設計と実装

Slide 28

Slide 28 text

エージェントの設計パターン 実用的なエージェントは、いくつかのエージェントの設計パターンを組み合わせて作られる ここでは最も基本的なReAct エージェントのみ紹介 エージェントの設計に「正解」はまだない この分野は急速に発展しているので、変化を柔軟に取り入れていくのが大事 高度な推論・計画・内省の技法について詳しく知りたい方は、Plan-and-Solve 、Least-to-Most (L2M) 、Reflexion 、Self-Consistency 、 Self-Refine 、Chain-of-Verification (CoVe )などのキーワードで調べてみてください

Slide 29

Slide 29 text

ReAct エージェント:シンプルな設計パターン 最も基本的なエージェントの設計パターン continue done start agent tools end ReAct = Reasoning + Act エージェントを素直に実装している 推論(Reasoning ) と 行動(Act ) を交互に繰り返 す どのツールを選択・どのように実行するかをLLM が 決定 タスクが完了したかどうかもLLM が判定する

Slide 30

Slide 30 text

ワークフローとエージェントの違い ワークフロー(workflow ) 固定のロジックと依存関係を事前に定義 決められた条件で動作 挙動が予測可能で一貫性がある 柔軟な対応が難しい true false input output fail Gate A B エージェント(agents ) 事前に定義されたツールを利用 自律的に動作して目標を達成 推論ループを実行 柔軟性が高いが制御しづらい continue done input agent tools output

Slide 31

Slide 31 text

Agentic Workflow 柔軟性と予測可能性の両立 ワークフローとエージェントは相互に補完できる ワークフローの中にエージェントを組み込む エージェントの中にワークフローを組み込む このハイブリッドな方法を エージェンティックワークフロー(Agentic Workflow ) と呼ぶ ワークフローとしてドメイン知識を注入できる マルチエージェントにも自然に拡張できる 柔軟性と予測可能性・一貫性を両立できる

Slide 32

Slide 32 text

マルチエージェントシステム なぜマルチエージェントが必要か? 課題 LLM はlong context を扱えるようになったが、1 回のLLM 呼び出しではうまくいかないケースも コンテキスト劣化(Context Rot ) Lost in the Middle 、Attention Sink など たくさんのツールを1 つのエージェントに持たせると精度が下がる ツールが多すぎると使いこなせない マルチエージェントによる解決 複数の部分問題・ステップに分割し、それぞれのエージェントに役割を持たせて実行 専門のエージェントに少数のツールを持たせる

Slide 33

Slide 33 text

初歩的なマルチエージェントパターン Routing パターン(Hand-off ) ルーティング先のエージェントに委譲する 呼び出されたエージェントがユーザーに回答 input output output Agent A Agent B Router Supervisor パターン(Agent as Tools ) ツール実行としてエージェントを呼び出す 呼び出し側から見ると「自然言語で指示できるツ ール」 例えば、MCP 呼び出しでも実装可能 input output Agent A Agent B Supervisor Supervisor

Slide 34

Slide 34 text

エージェント間の通信 ー A2A とMCP エージェント間の通信にはいくつかのパターンがある ツールとして呼び出す(Agent as Tools ) 関数呼び出し MCP 専用プロトコルで呼び出す A2A ACP (A2A に統合された) A2A は、AgentCard により、エージェントのdiscovery をサポート エージェントが異なるエージェントを「発見」できる 全体として非常に自律性の高いシステムにしたい場合に有効?

Slide 35

Slide 35 text

ここまでのまとめ エージェントシステムの設計

Slide 36

Slide 36 text

ここまでのまとめ エージェントシステムの設計 ReAct エージェント エージェントの概念をシンプルに実現する設計パターン Agentic Workflow ワークフローとエージェントを組み合わせて柔軟性と予測可能性を両立 マルチエージェントシステム 複数のエージェントに分割することでより複雑なタスクに対応 最も簡単なRouting パターン、Supervisor パターンを紹介 関数呼び出し、MCP 、A2A などでエージェントを呼び出す

Slide 37

Slide 37 text

エージェントの 開発フレームワーク

Slide 38

Slide 38 text

代表的なエージェント開発フレームワーク SDK OpenAI Agents SDK Google ADK (Agent Development Kit) Microsoft Agent Framework AutoGen とSemantic Kernel を統合 Amazon Bedrock Bedrock Agents Strands Agents Bedrock AgentCore LangChain & LangGraph Mastra CrewAI ノーコード・ローコード n8n Dify

Slide 39

Slide 39 text

ツールの実装

Slide 40

Slide 40 text

ツールについて(復習) エージェントが環境と相互作用するために「ツール (tool) 」を利用する センサー:環境から知覚を受ける(例:Web 検索) アクチュエーター:行動を起こして環境に影響を与える(例:メール送信) ツールの例 Web 検索、メッセージ送信など ツールはMCP サーバー、もしくはPython 関数として実装されることが多い

Slide 41

Slide 41 text

MCP (Model Context Protocol )の概要 ツール利用のための汎用的なプロトコル 「AI アプリケーションにとってのUSB-C 」 外部システム・DB を、エージェントと接続 2 種類の通信方式(Transports ) Streamable HTTP :リモート動作OK Stdio (標準入出力) :ローカルのみ MCP Architecture. https://modelcontextprotocol.io/specification/2025-06- 18/architecture#core-components

Slide 42

Slide 42 text

MCP サーバーのAPI MCP サーバーはいくつかのAPI を持っている tools/list : どんなツールがあるかを提示 tools/call : ツールを呼び出して結果を取得 他にも色々あるが、基本はこの2 つを抑えておけば OK

Slide 43

Slide 43 text

リモートMCP サーバー 簡単にいうと「インターネット上で動くMCP サーバー」のこと 認証認可仕様の標準化が進行中 MCP 経由でも外部サービスの自分のリソースに安全にアクセスできるように 公式のリモートMCP サーバー Atlassian Rovo MCP Remote GitHub MCP Server Notion MCP Zapier MCP Authorization - Model Context Protocol. https://modelcontextprotocol.io/specification/draft/basic/authorization

Slide 44

Slide 44 text

MCP サーバーの実装 SDK を用いることで MCP サーバーを簡単に開発でき る 言語によって仕様のサポート状況はまちまち TypeScript とPython の実装が比較的先行 TypeScript: MCP TypeScript SDK Python: FastMCP v2 Python での実装例(Streamable HTTP ) from fastmcp import FastMCP mcp = FastMCP(name="MyServer") @mcp.tool def greet(name: str) -> str: """Greet a user by name.""" return f"Hello, {name}!" if __name__ == "__main__": mcp.run(transport="http", host="127.0.0.1", port=9000)

Slide 45

Slide 45 text

ツールの粒度 シンプルなツール群 プリミティブな操作1 つを1 つのツールとして定義・ 実装 ✅ ツール選択・操作をエージェントに任せるので柔 軟性が高い ⚠️ ツールがたくさんあるとコンテキスト圧迫&ツ ール選択の精度が下がる 複雑な単一ツール ひとかたまりのワークフロー(ユースケース)を1 つ のツールとして定義・実装 ✅ 挙動の一貫性が高まる ⚠️ 丁寧なツール設計が必要で、工数がかかる

Slide 46

Slide 46 text

ツールの粒度 シンプルなツール群 vs. 複雑な単一ツール 柔軟性と正確性のトレードオフ リモートMCP サーバーとして外部に公開する場合 シンプルなツール群を定義するのがよい 挙動の一貫性を高めて最適化したい場合 ひとかたまりのワークフローを1 つのツールとして定義するのがよい Writing effective tools for AI agents - Anthropic. https://www.anthropic.com/engineering/writing-tools-for-agents

Slide 47

Slide 47 text

ここまでのまとめ ツールの実装

Slide 48

Slide 48 text

ここまでのまとめ ツールの実装 MCP はエージェントとツールを接続するための汎用プロトコル MCP サーバーの重要なAPI tools/list tools/call MCP サーバーの実装には各言語のSDK を利用するとよい TypeScript 、Python など ツール粒度のトレードオフ シンプルなツール群 複雑な単一ツール エージェントのユースケースに応じて選択する

Slide 49

Slide 49 text

エージェントシステムのUI エージェントとユーザーのインタラクション

Slide 50

Slide 50 text

チャットUI OpenAI ChatGPT

Slide 51

Slide 51 text

チャットUI エージェントへの指示 基本は テキストフォーム として実装される 画像や文書ファイルなどを添付してコンテキスト に含める場合も トークンのストリーミング トークン生成をリアルタイム表示できるとUX が 良い HTTP SSE (Server Sent Events ) やWebSocket で実装される エージェントの状態のサマリー表示 例: 「考え中… 」 「〜をしています」など トークン、エージェントの中間状態などの変化を イベントのストリーム として抽象化すると実装 しやすい 会話スレッド管理 過去の会話を探したり再開したりするUI サイドバー として実装されることが多い タイトル生成、スレッドの共有などの機能も考慮 する

Slide 52

Slide 52 text

ヒューマンインザループ(HITL ) エージェントがアクションを実行する前後に、 人間が確認・修正・承認 できるようにする仕組み 計画の確認・修正 ツール実行の承認 Claude Code CLI でのHITL の例

Slide 53

Slide 53 text

ヒューマンインザループ(HITL ) 承認を求めるかどうかの判定基準 実行内容の影響度・不可逆性・スコープ・機密性や、ユーザーの過去の指示内容・設定によっても変化 アプリケーションやツールによって要件が異なる エージェントの安全性、ガバナンスに直結するため、慎重な設計が必要 クリティカルな部分は判断をエージェント(LLM )に任せず、バックエンドのロジックで強制的にHITL を挟むなど 後述するGenerative UI によって、ユーザーにわかりやすく状況を伝える

Slide 54

Slide 54 text

Generative UI エージェントがリッチなUI コンポーネントを返し、それをフロントエンドでレンダリング Markdown だけでは表現できない独自のUI 「承認ボタン」などのHITL を挟むインタラクティブなUI も表現可能 How to implement generative user interfaces with LangGraph - Docs by LangChain

Slide 55

Slide 55 text

Generative UI の実装イメージ 右のようなJSON をstructured output で生成 サーバーでスキーマや値をバリデーション イベントに変換しフロントエンドに送信 フロントエンドでデータを指定されたUI コンポーネ ントにマッピングして表示 { "type": "card", "title": "経費申請 #1234", "body": [ {"type": "text", "value": "申請者: Takuya Asano"}, {"type": "text", "value": "金額: ¥12,300"}, {"type": "text", "value": "用途: 交通費"} ], "actions": [ { "type": "button", "label": "承認", "style": "primary", "action_id": "approve_expense" }, { "type": "button", "label": "却下", "style": "secondary", "action_id": "reject_expense" } ] }

Slide 56

Slide 56 text

アンビエントエージェント Ambient Agents 環境のイベントによってトリガーされるエージェント ユーザーが能動的に指示を出すチャットUI と対照的 タスクが完了したらユーザーに報告 承認依頼や質問があれば一時停止してHITL を挟む 毎朝9 時 メールを受信するたび カレンダーの予定の30 分前 Slack でメンションされるたび トリガーの例

Slide 57

Slide 57 text

アンビエントエージェントのUI 例 エージェントからの承認依頼や質問に回答するUI (Agent Inbox )が必要 E メール、プッシュ通知などのような、ユーザーへの通知のシステムも必要になるだろう LangChain Agent Inbox

Slide 58

Slide 58 text

代表的なエージェントUI フレームワーク Vercel AI SDK フレームワーク非依存 UI コンポーネントは提供されないため、自分たちで 用意する CopilotKit AG-UI というプロトコルでエージェント↔UI の通信 を標準化 ヘッドレスを選択可能 UI コンポーネントはassistant-ui と比べると少なめ assistant-ui CopilotKit と同様、React ベース CopilotKit のようなランタイムサーバー(BFF )が不 要 OpenAI ChatKit この中では最も新しい(2025 年11 月リリース) UI コンポーネントは提供されたものをカスタマイズ するという考え方

Slide 59

Slide 59 text

UI フレームワーク選択の観点 薄いフレームワークは自由度が高いが、自前で作らないといけない部分が多い 厚いフレームワークは初期開発の速度は出やすいが、カスタマイズが難しいことも 独自のデザインシステムを適用したければヘッドレスUI や薄いフレームワークを選択 独自に定義したイベントがストリーミングできるとGenerative UI が実装しやすく、拡張性が高い

Slide 60

Slide 60 text

ここまでのまとめ エージェントシステムのUI

Slide 61

Slide 61 text

ここまでのまとめ エージェントシステムのUI チャットUI トークンストリーミング、会話スレッドの管理、エージェントの状態の表示など ヒューマンインザループ(HITL ) エージェントのアクション前後に人間が確認・修正・承認できる仕組み Generative UI エージェントがリッチな情報を返し、フロントエンドでUI コンポーネントをレンダリング アンビエントエージェント 環境のイベントによってトリガーされるエージェント 代表的なエージェントUI フレームワーク Vercel AI SDK 、CopilotKit 、assistant-ui 、OpenAI ChatKit など

Slide 62

Slide 62 text

エージェントシステムの セキュリティ

Slide 63

Slide 63 text

プロンプトインジェクション システム側が意図していない指示をLLM に読ませる攻撃 ユーザーが直接入力したプロンプトだけでなく、エージェントが読み込んだコンテンツにも注意 システムによっては、攻撃者がエージェントを悪意あるコンテンツに誘導することもできる GitHub MCP サーバーのプロンプトインジェクションの事例 https://iototsecnews.jp/2025/05/27/critical-github-mcp-server-vulnerability-allows-unauthorized-access-to-private-repositories/

Slide 64

Slide 64 text

セキュリティ対策 モデルだけに頼らず、追加のセキュリティ対策を検討する 参照:OWASP Top 10 for LLM Applications LLM の出力を検証 サニタイズ、機密情報のマスク・フィルタ システム全体での対策 アクセス制御、ライブラリの脆弱性対応 LLM ガードレール製品を検討 OpenAI Moderation API 、Model Armor 、Guardrails AI など レートリミットの設定 大量・高頻度・過剰なリソース要求をするリクエスト をブロック レッドチーミング 人手により脆弱性を継続的にテスト

Slide 65

Slide 65 text

まとめ 今日学んだこと

Slide 66

Slide 66 text

まとめ AI エージェントとは 環境と相互作用し、目標を達成しようとするAI ツール利用、計画、内省、記憶などの能力を持つ 推論ループを実行して自律的に動作 エージェントシステムの設計 ReAct パターンなどの基本的な設計 ワークフローとエージェントの組み合わせ(Agentic Workflow ) MCP によるツールの実装 エージェントシステムのUI チャットUI 、HITL 、Generative UI 、アンビエントエ ージェント 代表的なエージェントUI フレームワーク エージェントシステムのセキュリティ プロンプトインジェクション セキュリティ対策

Slide 67

Slide 67 text

今日話さなかったこと 記憶・計画・内省の手法 コンテキストエンジニアリング 高度なエージェント設計パターン エージェントの評価・オブザーバビリティ

Slide 68

Slide 68 text

さらに学ぶために(1 ) 📚 書籍 現場で活用するためのAI エージェント実践入門 LangChain とLangGraph によるRAG ・AI エージェント[実践]入門 LLM のプロンプトエンジニアリング 🔍 フォローすべき情報源 OpenAI ニュースリリース Anthropic 公式ブログ LangChain 公式ブログ・YouTube ・SNS Andrew Ng 氏の記事・SNS

Slide 69

Slide 69 text

さらに学ぶために(2 ) 🌐 ガイド・ホワイトペーパー Business guides and resources | OpenAI AI エージェント実践ガイドブック | Google Cloud Prompt Engineering Guide 12-Factor Agents - Principles for building reliable LLM applications

Slide 70

Slide 70 text

Thank you