11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Strands Agentsで提供されているツールたちを紹介

11
Last updated at Posted at 2026-02-11

はじめに

AIエージェントを作るときに、AIエージェントに様々なtoolを持たせることがあります。リモートまたはローカルMCPサーバーを使うこともあれば、自作したtoolを使うこともあると思います。
Strands AgentsではCommunity Built Toolsとして、いくつかのtoolがpip installするだけで簡単に使えます。今回はそのtool一覧を使いながらまとめてみます(数が多いので一部だけ)。

パッケージインストール

基本的には下記でインストール可能ですが、一部ツールは追加のインストールが必要になります。

pip install strands-agents-tools

例:mem0 toolの場合

pip install 'strands-agents-tools[mem0_memory]'

RAG & Memory

retrieve

環境変数であらかじめ作成したナレッジベースのIDを環境変数KNOWLEDGE_BASE_IDで設定するだけで参照してくれそうです。お手軽!

retrieve.py
import os
from strands import Agent
from strands_tools import retrieve

os.environ["KNOWLEDGE_BASE_ID"] = "XXXXXXXXXX"
os.environ["AWS_REGION"] = "ap-northeast-1"

agent = Agent(tools=[retrieve])
agent("田中さんって誰?")
% python3 retrieve.py
田中さんについて調べてみますね。
Tool #1: retrieve
知識ベースによると、田中さんはIT会社の社長とのことです。

ただし、この情報は限定的ですので、もし特定の田中さんについてより詳しい情報が必要でしたら、より具体的な質問をしていただければと思います。例えば、どのような文脈で田中さんについて知りたいのか、会社名や他の詳細があれば教えてください。

memory

memoryツールでは以下の5つができるようです。

store:ナレッジベースに新たなドキュメントを保存
delete:ナレッジベースに保存されたドキュメントを削除
list:ナレッジベースに保存されているドキュメント一覧を取得
get:ナレッジベースに保存されているドキュメントの内容取得
retrieve:先ほどのretrieveツールと同様、セマンティック検索を行う

memoryツールはデータソースをカスタムデータソースにする必要があります。retrieveツールのようにS3をデータソースとする場合はエラーとなります。

storeとdeleteの処理については処理前にユーザーへの確認が発生します。もしAIエージェントに組み込み、自動で処理をさせたい時は環境変数BYPASS_TOOL_CONSENTfalseにすることで確認無しの処理ができますが、意図しないデータ追加・削除が発生する可能性もあるので利用には注意してください。

agent_core_memory

こちらはAgentCore Memoryに対してRECORD、RETRIEVE、LIST、GET、DELETEの操作ができます。memoryツールのAgentCore Memory版ですね。AgentCore Memoryのパラメータであるmemory_id、actor_id、session_id、namespaceはツールの初期化時に必要となります。

# Initialize with required parameters
provider = AgentCoreMemoryToolProvider(
    memory_id="memory-123abc",  # Required
    actor_id="user-456",        # Required
    session_id="session-789",   # Required
    namespace="default",        # Required
)

mem0_memory

Mem0という記憶管理ソフトウェアにstore/delete/list/get/retrieveの処理ができます。ナレッジベースやAgentCore Memory以外にもメモリ保存するツールがあるんですね。

File Operations

editor

リッチテキスト表示にも対応した、ファイル編集ツールです。以下のように、様々な処理ができます。

view:ファイルの読み取り、ディレクトリ構造の表示
create:新規ファイルの作成、親ディレクトリの作成
str_replace:文字列置換
pattern_replace:正規表現を用いた文字列置換
insert:特定行へのテキスト挿入
find_line:特定のテキストが書かれた行数の検出
undo_edit:編集内容のundo

file_read

このツールはファイルの読み取りができるツールですが、2つのファイルのdiffを取得する機能もあります。

file_write

こちらはファイル書き込みツールです。editorツール同様、テキストだけではなくPythonプログラムなどの書き込みもできます。

Shell & System

environment

環境変数の管理をするツールです。環境変数の表示、作成、削除等の操作が可能です。

shell

任意のコマンドを実行するツールです。並列実行も可能なオプションが有りました。

cron

crontabを使ったジョブの定期実行を設定できます。処理の内容として、以下5つがあります。rawは特殊な処理な気がします。crontabに対して無知なので、いまいち使い所がわかっていません。(crontabで複雑な設定をするときにrawが使われるようです)
list:設定されているcronジョブの一覧。crontab -lと同義。
add:cronジョブの新規追加
remove:設定されているcronジョブの削除
edit:設定されているcronジョブの編集
raw:crontab行をそのまま追加

addはrawにはない以下のようなコードがあります。このフォーマット処理の有無がaddとrawの違いです。

# Format the cron job
description_text = f"# {_sanitize_description(description)}" if description else ""
cron_line = f"{schedule} {command} {description_text}".strip()

use_computer

一言で言えば、LLMがPCを操作するツールです。このツールは別途use_computerパッケージをインストールする必要があります。

pip install 'strands-agents-tools[use_computer]'

VSCodeでコードを書いて試してみましたが、画面の読み取りがうまくいかず、期待していた動作をしませんでした。後日またトライしてみようと思います。

Code Interpretation

python_repl

REPL(Read-Eval-Print Loop)環境を提供し、Pythonコードを実行することができるツールです。Windowsは対応していないようです。

code_interpreter

AgentCoreのビルトインツールである、Code Interpreterを使えます。
Strands Agentsを使わずにCode Interpreterを利用する方法もありますが、セッション管理が不要(裏側でやってくれる)であったり、よりシンプルにコードを書けます。

Strands Agentsを使ったやり方

Bedrock AgentCore SDKを使ったやり方

Web & Network

http_request

このツールは任意のURLに対してHTTPリクエストができるツールです。GITHUB_TOKENSLACK_BOT_TOKENなどのトークンを環境変数で認証情報を渡すと認証が必要なURLに対してもAPIリクエストができるようになります。単にWebページの検索をするときはTavilyに分がありますが、http_requestツールではPOST/PUT/DELETEの操作もできる点で大きくできることが異なります。

slack

名前の通り、slackに関する操作が可能です。
メッセージの送信はもちろん、チャンネルに投稿されたメッセージの履歴取得やリアクションをすることもできるようです。簡単にSlack上で動作するAIエージェントも作れそうです。

browser

browserツールはAgentCore Browserを利用してブラウザ操作ができるツールです。ちなみに、Strands Agents以外にもブラウザ操作が可能なフレームワークとしてNova ActとPlaywrightが紹介されています。

rss

RSSフィードを確認できるツールです。現在のRSSエントリの確認はもちろん、subscribeをした上で更新部分を抽出することもできそうです(要保存先ストレージ)。

Multi-modal

generate_image_stability

Stability Platform APIを使い、画像生成をするツールです。利用するためにはStabilityのAPIキーを発行し、環境変数(STABILITY_API_KEY)で設定する必要があります。

image_reader

画像(PNG, JPEG/JPG, GIF, WebP)を読み取り、どんな画像であるかを分析できるツールです。

generate_image

generate_image_stabilityと似ていますが、こちらはBedrockのStability AIのモデルを使って画像を生成できます。環境変数(STABILITY_API_KEY)がなくても利用できるのが特徴ですね(利用可能リージョンはus-west-2のみ)。

nova_reels

text-to-video(T2V)とimage-to-video(I2V)による動画生成ができるツールです。画像生成ツールと異なる点として、作成された動画はS3に保存されるため、ツール利用時に保存先のS3バケット名を教える必要があります。

speak

text-to-speachで音声を生成するツールです。Mac標準のsayコマンドを使って音声を読み上げるモードとAmazon Pollyを使って音声を作成をするモードの2種類あります。どちらも簡単に作成可能です。
余談ですが、Amazon Polly初心者なので、最初日本語を片言で喋る音声ファイルを作ってしまいました。voice_idを指定して自然な日本語で喋る音声を生成できるので言語に合わせて作成しましょう。

diagram

クラウドのアーキテクチャ図やUML図を作成してくれるツールです。試しにサーバーレス構成の図を作成させてみました。

diagram.py
from strands import Agent
from strands_tools import diagram

agent = Agent(tools=[diagram])

agent("API Gateway、Lambda、DynamoDBを使用して、ユーザー情報を管理するシステムのアーキテクチャ図をdiagram_typeをcloudとして、ツールを活用して作成してください。")

agentへの指示文にdiagram_typeをcloudとして、と書いていますが、これを書かないと(私の環境では)シーケンス図やクラス図が出てきました。色んな図を作成できる反面、明確に指示が必要になります。

構成図を作成時、下記エラーが発生したためgraphvizをインストールしてエラーを解消しました。

ERROR:root:Failed to create cloud diagram: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
brew install graphviz

下記のような図が出来上がりました。
architecture.png

diagramsというPythonライブラリを経由して様々なAWSアイコンを使った構成図が作成できるようです。

上記の構成図にBedrockを加えるように指示しました。どうしてこうなった。
ec22222222.png

AWS Services

use_aws

このツールはboto3を使ってAWSリソースを操作できるツールです。できることはAWS API MCPサーバーと同じなので、単にAWSリソースを操作するだけであれば差はよくわかりませんでした。

Utilities

calculator

計算ツールです。よくサンプルコードとかでも出てきますが、四則演算以外にも三角関数の取り扱いや微積分もできるようなので、思ってる以上に高度な計算ができそうです。

current_time

ISO 8601形式 (2023-04-15T14:32:16.123456+00:00)で現在時刻を取得できるツールです。
ただし、このツールがISO 8601形式で取得されるというだけで、実際にAIエージェント応答でどのようにレスポンスするかはLLMやシステムプロンプト次第です。
デフォルトではUTCで時刻が返されますが、私の環境で日本語で時刻を聞いたところ、JSTの時刻も教えてくれました。

load_tool

通常、ツールは事前にエージェントに持たせることで動作しますが、このツールは動的にPythonファイルを読み込み、そのファイルの中に@toolデコレータがあれば、そのツールを参照して使えるようにします。ツールだけ別ファイルで実装して、後から読み込ませたい時に使えそうです。

sleep

このツールはシンプルで、指定された秒数待機(sleep)させることができるツールです。環境変数MAX_SLEEP_SECONDSで設定可能な最大時間を指定でき、デフォルトでは300秒(5分)です。

Agents & Workflows

このカテゴリのツールは私の知識不足もあって完全に理解できていないです。

graph

Strands SDK Graphを使って、有向非巡回グラフ(DAG)の作成や実行ができるツールです。決まったワークフローに沿ってエージェントを動かすケースでは使えそうです。

agent_graph

このツールもグラフを作って実行できるという点は同じですが、star/mesh/hierarchicalといったトポロジーでグラフを作成できます。

journal

日々の作業内容をジャーナル(日記)として作成してくれるツールです。ジャーナルと言いつつ、add_taskという機能もあり、TODOリストの管理ができます。日々の作業内容を記録するエージェントに使えそうですかね(要永続化)。

swarm

スウォームと聞くと、スクラム開発におけるスウォーミングのことを想像しますが、複数のエージェントが一つのタスクに注力するようなイメージです。GitHubのサンプルとして以下のようなコードがありました。

下記コードを実行すると、ツールが見つからない、と警告が出ます。各エージェントにツールを使わせたいときは親エージェントにツールを持たせる必要があります。
(イメージとしては、親エージェントが「これ使ってね」とツールを渡す感じでしょうか)

Agent 'market_researcher' missing tools: {'retrieve', 'calculator'}
Agent 'product_strategist' missing tools: {'calculator', 'file_write'}
Agent 'creative_director' missing tools: {'generate_image', 'file_write'}
swarm.py
from strands import Agent
from strands_tools import swarm

agent = Agent(tools=[swarm])

# Define custom agent team
result = agent.tool.swarm(
    task="Develop a comprehensive product launch strategy",
    agents=[
        {
            "name": "market_researcher",
            "system_prompt": (
                "You are a market research specialist. Focus on market analysis, "
                "customer insights, and competitive landscape."
            ),
            "tools": ["retrieve", "calculator"],
            "model_provider": "bedrock",
            "model_settings": {"model_id": "us.anthropic.claude-sonnet-4-20250514-v1:0"}
        },
        {
            "name": "product_strategist",
            "system_prompt": (
                "You are a product strategy specialist. Focus on positioning, "
                "value propositions, and go-to-market planning."
            ),
            "tools": ["file_write", "calculator"],
            "model_provider": "anthropic",
            "model_settings": {"model_id": "claude-sonnet-4-20250514"}
        },
        {
            "name": "creative_director",
            "system_prompt": (
                "You are a creative marketing specialist. Focus on campaigns, "
                "branding, messaging, and creative concepts."
            ),
            "tools": ["generate_image", "file_write"],
            "model_provider": "openai",
            "model_settings": {"model_id": "o4-mini"}
        }
    ]
)

マルチエージェントと何が違うのだろう、と思ったのでChatGPTに聞きながら整理していたのですが、マルチエージェントと明確に違うなと感じた点はどのエージェントにもTaskを共有している点かと思いました。それぞれのタスクがゴールを意識して回答や調査を行うと考えれば精度が上がったりするかもと思いました。
(有識者の方のコメントお待ちしております!)

stop

エージェントに対して、次の思考やツール使用を止める指示をして、次のイベントの発生を抑制します(結果、出力が止まる)。内部的にはstop_event_loopというフラグをTrueにしています。

handoff_to_user

判断を人間側に委ねることができるツールです。ツール側で重大な処理前にはyes/noを入力させる機能があるものもありますが、本ツールによりそのような機能を明示的につけることができます。内部的にはbreakout_of_loopというフラグがあり、一時中断してユーザーが承認/否認してからエージェントが処理を継続するものと、完全に停止し処理を止める2パターンがあります。

ドキュメント内にもこのツールを使ったHuman-in-the-Loopの記載があります。

use_agent

エージェントの中で、使い捨てのエージェントが作成されるツールです。エージェントが処理の中で、別エージェントに聞いた方が良いと判断した時に使うツールのようです。いまいちマルチエージェントで事前に定義しておくケースとの差別化点がわかっていないので、ユースケースが思いついていないです。

think

Inputに対して、指定された回数(cycle_count)分だけ新しいAgentを作成しながら思考を繰り返し、より深い回答を導き出すツールです。Claude Codeにおけるultrathinkのようなものかなと解釈しました。

use_llm(非推奨)

一時的なエージェントが作成されるツールですが、現時点で非推奨のAPIとなっており、use_agentを使うことが案内されています。

以下はコード上に記載されていた内容です。

logger.warning(
    "DEPRECATION WARNING: use_llm will be removed in the next major release. "
    "Migration path: replace use_llm calls with use_agent for equivalent functionality."
)

workflow

名前の通り、AIエージェントのワークフローを管理するツールです。graphツールと似たようなものですが、workflowツールでは、タスクごとにpriorityパラメータがあり、優先度に応じてどのタスクを優先して行うかをあらかじめ設定できます。

batch

このツールは複数のツールを並列で実行し、複数ツールの結果を統合して1つのResponseを返すものです。例えば、通常であれば、「ツールA利用→結果応答→ツールB利用→結果応答→最終結果」のように、逐次処理がされますが、batchツールでは「ツールA、ツールB利用→最終結果」といった形で単一の応答が返されるツールです。ツール間で応答結果を引き継ぐ必要がない処理では使えそうです。

a2a_client

AIエージェント同士がやり取りするためのプロトコルA2Aを扱うツールです。
以下ページのサンプルが一番わかりやすいと思いますが、既知のエージェントURLをA2AClientToolProviderとして設定することで、エージェントが他のエージェントと通信するための準備をします。
エージェントが必要に応じて外部のエージェントを検索、ツール取得を行い回答を生成します。

Tool Consent and Bypassing

ツールの紹介は以上ですが、これらのツールを扱う上で考慮すべき環境変数があります。書き込みや削除、作成などリソースに何らかの変化があるような操作は、デフォルトでユーザーに確認を行います。確認を求めない場合は環境変数BYPASS_TOOL_CONSENTをtrueにすることで、確認を省略できます。

Trueではなく、"true"で設定します。

os.environ["BYPASS_TOOL_CONSENT"] = "true"

想定される実行環境としては以下に記載がありました。

  • ユーザーインタラクション(ユーザーによる応答)が不可能な自動化されたワークフロー
  • 開発およびテスト環境
  • CI/CDパイプライン
  • 運用の安全性をすでに検証している状況

まとめ

Strands Agentsで提供されているツールを試しながら紹介しました。簡単に扱えるものから、少し複雑なものもあるので各ユースケースに応じて使いこなしたいですね!

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?