社内でAIエージェント構築ワークショップを開催しました。

こんにちは!
Principal Generative AI Engineerの森田です。私の所属するAIファーストGでは、社内の生成AI活用にとどまらず、販売店やトヨタグループにおけるAI活用支援を行っております。
社内でAIエージェントの活用が進む中、ある部署から「AIエージェント開発に取り組みたいが、どこから始めていいかわからない」と相談をもらいました。座学だけでは手触り感が得られないので、実際に手を動かすワークショップ形式で開催することにしました。
弊社はAWSを主なクラウド基盤としているため、AWSが提供するAIエージェントの構築・運用基盤である Amazon Bedrock AgentCore と、エージェントのツール連携プロトコルである MCP(Model Context Protocol) を中心テーマに据えました。
教材として使用した書籍
ゼロから資料を作るよりも、体系的にまとまった書籍のハンズオンをベースにした方が、参加者が後から復習しやすいと考えました。今回は以下の2冊を使用しています。
- 『Amazon Bedrock AgentCore 実践入門 ── Strands Agentsで構築するAIエージェント』(SBクリエイティブ) ※以下、AgentCore本
- 『AWSではじめるMCP実践ガイド ── 基礎からAIエージェント構築まで徹底解説』(技術評論社) ※以下、MCP本
AgentCore本でエージェントフレームワークであるStrands AgentsやAgentCoreの各機能を学び、MCP本でMCPサーバーの自作とAgentCore Gatewayによるツール統合を学ぶ、という組み合わせです。
実は、どちらも私が共著者として執筆に携わった書籍です。手前味噌で恐縮なのですが、中身を隅々まで把握できている分、参加者がハンズオンで詰まったときにも補足しやすく、教材として選びました。
開発環境
今回は環境を揃えるため、GitHub Codespaces 上に開発環境を用意しました。書籍の手順をベースに、以下の工夫で環境構築にかかる時間を短縮しています。
- ツール管理は mise に統一し、
mise use aws-cli node uv claudeでAWS CLI・Node.js・uv・Claude Codeを一括導入 - AWSへは
aws configure ssoでSSOログイン - コーディングのお供として Claude Code をセットアップ
サンプルコードは書籍著者が公開しているGitHubリポジトリを git clone して参照できるようにし、すべてのコードを手打ちしなくていいようにしました。
ワークショップの構成
1日のワークショップとして、午前・午後に分けて以下の流れで進めました。
午前の部(1.5時間)・・・Strands Agentsに触れる
| # | タイトル | 書籍・該当箇所 | 概要 |
|---|---|---|---|
| 1 | Strands Agents入門 | AgentCore本 3.4節 | ツール定義、エージェント作成、会話ループの実装など基本を体験 |
| 2 | リサーチエージェントの構築 | AgentCore本 4章 | Webから情報収集・要約するエージェントを構築し、ツール連携の開発フローを掴む |
| 任意 | AgentCoreハーネス | AgentCore本 5.2節 | 時間に余裕がある人向けに、AgentCoreハーネスを体験 |
午後の部(3時間)・・・AgentCoreとMCPを実践する
| # | タイトル | 書籍・該当箇所 | 概要 |
|---|---|---|---|
| 3 | AgentCoreランタイム入門 | AgentCore本 5.3節 | agentcore create → agentcore deploy でエージェントをクラウドにデプロイ |
| 4 | アンビエントエージェントの構築 | AgentCore本 15章 | S3への領収書アップロードをトリガーに、解析→Confluence記録→メール通知するイベント駆動型エージェントをCDKで構築 |
| 5 | MCPサーバーの構築 | MCP本 4.2節 | 自前のMCPサーバーとホストを実装 |
| 6 | AgentCore Gateway | MCP本 6.2節 | MCPサーバーをAgentCore Gatewayに登録し、認証・認可を統合 |
社内実施にあたって変更が必要だったポイント
書籍のハンズオンをそのまま社内で実施するにあたり、いくつか環境差異への対応が必要でした。
参加者からもらった質問
ワークショップ中、参加者からいくつか印象的な質問がありました。
Q. ツールの定義はPythonでもできるのか?
Strands Agentsのツール定義はPythonのデコレータ@toolで行えます。関数のdocstringがそのままツールの説明文(description)としてLLMに渡されるため、Pythonで完結します。MCPサーバーとして公開する場合もPython SDKが利用可能です。
Q. Swarmエージェントはどうやってタスクを振り分けているのか?
マルチエージェント構成(Swarm)では、オーケストレーターとなるエージェントがLLMの判断に基づいて、各サブエージェントにタスクをルーティングします。各エージェントのnameやdescriptionに基づき、他のエージェントの役割を把握したうえで、作業を委譲するエージェントを選択します。
Q. マルチエージェントにするか、シングルエージェントにするか、どのように決めるのが良いか?
個人的な感覚としては、最初から厳密に切り分けようとしない方がうまくいきます。シングルエージェントとして作り始めて、複雑なタスクをうまく処理できなくなったり、コンテキストを分けた方が動きが安定すると感じた時点で、サブエージェントへの分割を考える、というのが実際の進め方に近いです。
Q. エージェントで使用するモデルはどのような基準で選んでいるのか?
コストを最初から意識しすぎないことが大事だと思っています。Sonnetをベースにまず作ってみて、判断の精度が足りない部分はOpusに切り替え、単純作業の部分だけHaikuでコストを下げる、という順番です。先にHaikuでコストを抑えようとすると、実現できる機能のレベルが下がってしまうので、まずは「エージェントとして実現できるか」を確認してから、コスト最適化に移る方がスムーズに進みます。
参加者の声
ワークショップの締めに参加者で「振り返り会」を行い、そこで出た声の中から印象的だったものをいくつか紹介します。
ある参加者は、「エージェントの動きが、これまでふんわりとマジックのように感じていたのに、こういう仕組みで動いていたのかと腹落ちした」と話してくれました。難しさの本質はプロンプトの作り込みにある、という気づきを得られたようです。
別の参加者は、ハーネスの手軽さに驚いたそうです。テンプレートに「あなたはプロ野球に詳しい人です」のような一行を書くだけでエージェントが動いてしまうのを見て、拍子抜けするほど単純だったと話していました。
MCPサーバーの自作に取り組んだ参加者は、午後の中でも特に難しかったと振り返っていました。それでも自分の手で実装したことで、普段使っているMCPの裏側の動きまで想像できるようになった、という言葉が印象的でした。
これまで固定パイプライン的な実装(情報を取得し、LLMに渡し、整形して出力する)に慣れていたという参加者は、エージェントが入力に応じて処理のルートを動的に決めていく発想自体が新鮮だったと語っていました。同じ入力でも出力のパスが事前に決まっていない、というところに面白さを感じたそうです。
ワークショップを終えて
1日にかなりの内容を詰め込んだこともあり、進み具合には個人差が出ました。午前の任意項目だったAgentCoreハーネス(5.2節)まで到達できた方もいれば、そこまで手が回らなかった方もいます。午後はそれぞれの興味に合わせて、アンビエントエージェントに取り組むグループとMCPサーバー構築に取り組むグループに分かれて進めてもらいました。
今回のワークショップを通して、書籍のハンズオンをベースにしたことで準備の負担を抑えつつ、実践的な内容を届けられたのは良かったです。本記事が、これからAIエージェント開発に取り組む方や、同様のワークショップを企画する方の参考になれば幸いです。最後までお読みいただき、ありがとうございました。
関連記事 | Related Posts
We are hiring!
生成AIエンジニア・生成AIスペシャリスト/AIファーストG/東京・名古屋・大阪・福岡
募集背景KINTOテクノロジーズでは、2023年6月に内製の生成AIチャットツールを導入して以来、全社的に生成AIの業務活用を推進してきました。現在は、単発のPoCや個別最適に留まらず、複数部門・複数チームにまたがる課題を、再現性のある形で解決していくことが求められています。
Cloud Engineer(トヨタグループ内製化支援)/Cloud Infrastructure G/東京・名古屋・大阪・福岡
トヨタグループのクラウド活用を、最前線で支える。1社にとどまらないスケールで、移行・生成AI・内製化まで幅広く挑戦できるポジションです。




