Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
まだ間に合う!Strands Agents SDKの入門からちょっと応用気味なところまで
Search
Har1101
July 26, 2025
2
160
まだ間に合う!Strands Agents SDKの入門からちょっと応用気味なところまで
JAWS-UG 栃木 オフライン #3 での登壇資料です
RTA部分(デモ)はTwitterに載せてます
Har1101
July 26, 2025
Tweet
Share
More Decks by Har1101
See All by Har1101
Bedrock AgentCoreを使って簡単なチャットアプリを作ってみた!
har1101
8
600
私たちはなぜAWS Summitに参加するのか?
har1101
1
430
Bedrockのプロンプト管理どうしてる?
har1101
6
930
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.7k
Ambient Agent on AWS!
har1101
3
620
Bedrockエージェントにおける MCP利用ケースについて考えてみる
har1101
4
540
AWS上でMCPを安全に使いたい ~Mastraを添えて~
har1101
7
1.9k
Bedrock×MCPで社内ブログ執筆文化を育てたい!
har1101
7
2.5k
Amazon Bedrock Agentsのマルチエージェント機能で競馬予想アプリ作ってみた!
har1101
5
980
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
KATA
mclloyd
32
14k
Become a Pro
speakerdeck
PRO
29
5.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.8k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Scaling GitHub
holman
462
140k
4 Signs Your Business is Dying
shpigford
184
22k
Building Adaptive Systems
keathley
43
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Transcript
まだ間に合う! Strands Agents SDKの入門から ちょっと応用気味なところまで 2025/07/26 (土) JAWS-UG 栃木 オフライン
#3 福地開
Who am I ? 福地 開 (ふくち はるき) @har1101mony 所属:NECソリューションイノベータ株式会社
年次:3年目 業務:少しだけLLM触る人 選出:AWS Community Builders (AI Engineering) 2025 Japan AWS Jr.Champions 2025 Japan All AWS Certifications Engineers
今日話すこと ◆AWSでAIエージェントを構築する方法 • Amazon Bedrock Agents • Amazon Bedrock AgentCore
+ フレームワーク ◆Strands Agents SDK はじめの一歩 ◆Strands Agents SDK 応用編 ※資料中で「AI」と記載しているものは「生成AI」とりわけ「LLM」のことを指します ※所属組織とは一切関係ない、私個人の意見・考えとなります
AWSでAIエージェントを 構築する方法
方法1. Amazon Bedrock Agents ◆GUI上で、Bedrockを用いたAIエージェントを構築できる機能 • 基本的にはコーディング不要(アクショングループでは必要) • エージェントの挙動はある程度自動で決定 ◆エージェントを構築するサービス(SaaS)として提供されている
方法2. Amazon Bedrock AgentCore ◆任意のフレームワーク・モデルで構築されたAIエージェントを 安全にデプロイおよび運用できるプラットフォーム(PaaS) • フレームワーク: LangGraph, CrewAI,
Strands Agents • モデル: Bedrock, OpenAI, Gemini
方法2. Amazon Bedrock AgentCore ◆任意のフレームワーク・モデルで構築されたAIエージェントを 安全にデプロイおよび運用できるプラットフォーム(PaaS) • フレームワーク: LangGraph, CrewAI,
Strands Agents • モデル: Bedrock, OpenAI, Gemini ここが作れないと、 話が始まらない!
https://strandsagents.com/latest/
Strands Agents SDKを使って AIエージェントを作ってみよう! ~はじめの一歩編~
最短3行でエージェントが動く! ◆AIエージェント構築RTA、はーじまーるよー 1. uv init 2. uv venv 3. source
.venv/bin/activate 4. uv add strands-agents 5. 右ファイルを作成する 6. uv run agent.py
最短3行でエージェントが動く! ◆AIエージェント構築RTA、はーじまーるよー 1. uv init 2. uv venv 3. source
.venv/bin/activate 4. uv add strands-agents 5. 右ファイルを作成する 6. uv run agent.py • デフォルトモデルはオレゴンリージョンのBedrock Claude Sonnet 4 • Bedrock以外にOpenAI GPTシリーズやGeminiなども利用可能
Strands Agents SDKの中核:エージェントループ ◆エージェントが実行する以下のプロセスのこと 1. ユーザー入力とコンテキスト情報を受け取る 2. 受け取った情報を元に、 LLMが何をすべきか判断する 3.
最適なツールを選択し、実行する 4. ツール使用結果に基づいて推論を続ける 5. 応答を生成する
Strands Agents SDKの中核:エージェントループ ◆エージェントが実行する以下のプロセスのこと 1. ユーザー入力とコンテキスト情報を受け取る 2. 受け取った情報を元に、 LLMが何をすべきか判断する 3.
最適なツールを選択し、実行する 4. ツール使用結果に基づいて推論を続ける 5. 応答を生成する 1. 2. 3. 4. 5.
Strands Agents SDKの中核:エージェントループ ◆エージェントが実行する以下のプロセスのこと 1. ユーザー入力とコンテキスト情報を受け取る 2. 受け取った情報を元に、 LLMが何をすべきか判断する 3.
最適なツールを選択し、実行する 4. ツール使用結果に基づいて推論を続ける 5. 応答を生成する 1. 2. 3. 4. 5.
ツールを使ってみる ◆サンプルツールパッケージが存在する • python_repl: Pythonコードを実行 • http_request: API呼び出し、Webデータの取得 • slack:
APIアクセス、メッセージ送信を備えたSlack統合 • use_aws: AWSサービスと対話する
ツールを使ってみる ◆サンプルツールパッケージが存在する • python_repl: Pythonコードを実行 • http_request: API呼び出し、Webデータの取得 • slack:
APIアクセス、メッセージ送信を備えたSlack統合 • use_aws: AWSサービスと対話する ◆設定方法 • uv add strands-agents-tools で追加モジュールのインポート • 先ほど作成したエージェントに tools を定義するだけ
ツールを作ってみよう ◆もちろん自作ツールをエージェントに使わせることもできる • @tool というデコレータを追加すると、Python関数をツールに変換可能 • ツールの名前と説明はできるだけ明確に書くのが重要 →エージェントはツール名と説明を参考にしてどのツールを使うか判断する
ツールがあれば、エージェントの力は∞! ◆エージェントとツールがあれば立派なAIエージェント ◆自分でエージェントループを実装するとなると、情報の渡し方、 ツールの実行方法、会話の状態管理、エラー時のリトライ処理、 オブザーバビリティなど考えなければいけないことがたくさん
ツールがあれば、エージェントの力は∞! ◆エージェントとツールがあれば立派なAIエージェント ◆自分でエージェントループを実装するとなると、情報の渡し方、 ツールの実行方法、会話の状態管理、エラー時のリトライ処理、 オブザーバビリティなど考えなければいけないことがたくさん ◆Strands Agents SDKでは開発者が複雑なフローを実装しなくても、 最初からツール使用を前提としたエージェントフローが用意されて いる
◆エージェントの振る舞いや ツールの実装といった、 コア部分の実装に注力できるのがAWSらしいところ!
Strands Agents SDKを使って AIエージェントを作ってみよう! ~応用編~
MCPをつなげよう ◆Strands Agents自身がMCPクライアントになることができる • ローカルMCPサーバーとはstdio接続 • リモートMCPサーバーとはStreamable-HTTP接続(SSE接続は非推奨)
MCPをつなげよう ◆Strands Agents自身がMCPクライアントになることができる • ローカルMCPサーバーとはstdio接続 • リモートMCPサーバーとはStreamable-HTTP接続(SSE接続は非推奨) • MCPを使う場合は、MCPクライアントとMCPサーバーの接続がアクティブ でないといけない
• with文の中、すなわちMCPセッションがアクティブな時にのみエージェン トを実行できるような形にしてあげる必要がある
マルチエージェント構成にしてみよう ◆最も簡単:Agents as Tools方式を使用する • オーケストレーターエージェントとツールエージェントが協働する構成 • オーケストレーター:人間とのやり取りを元にツールエージェントを呼ぶ • ツール(専門家):ドメイン固有のタスクを実行
• 先程の @tool デコレーターを用いることで、ツールとしてのエージェント を定義することができる
責任あるAI(セキュリティ) ◆ツール実装のベストプラクティス • 最小権限: ツールには必要最小限の権限を与える • 入力検証: ツールへのすべての入力を徹底的に検証する • 明確なドキュメント:
ツールの目的、制限、期待される入力を文書化する • エラー処理: エッジケースや無効な入力を適切に処理する • 監査ログ: 機密性の高い操作をレビューのためにログに記録する ◆ガードレールを使用する • Bedrock GuardRailsと統合が可能 • ユーザーからの入力・ツールの入出力・LLMへの入力・ユーザーへの出力 と多層でのガードレールが必要 参考:https://speakerdeck.com/licux/owasp-top-10-for-llm-applicationskarakao-erubedrock-guardrailsnodao-ru
◆Strands Agents SDKの入門~ちょこっと応用のお話をしました! • エージェント構築をスピーディーかつ比較的簡単にできる! ◆最高のアップデートにして最高の新機能、 色んなAIエージェントシステムを作っていきましょう〜〜〜! まとめ