第10章 組み込みツール(Browser / Code Interpreter) — 学習メモ¶
書籍「Amazon Bedrock AgentCore実践入門」第10章のサンプルコード(このフォルダ)を読み解いた個人学習メモ。 AgentCore 全体像は
../../lectures/agentcore_basics/STUDY_NOTES.md参照。 実行検証は伴わない。コードに現れた API 名だけ断定し、読めない挙動は「〜と推測」で明示する。
一言で¶
マネージドの Browser(ヘッドレスブラウザ)と Code Interpreter(コード実行サンドボックス)を、Strands の Agent(tools=[...]) にそのまま渡すだけで使える化する章。自前でブラウザ VM やサンドボックスを立てる必要がない。
全体像¶
flowchart LR
Agent["Strands Agent<br>tools=[browser.browser]<br>または<br>tools=[code_interpreter.code_interpreter]"]
Sandbox["AgentCore<br>マネージドサンドボックス<br>(Browser / Code Interpreter)"]
Agent -->|"ツール呼び出し"| Sandbox
Sandbox -->|"実行結果"| Agent
「Agent が .browser / .code_interpreter ツールを呼ぶ → AgentCore 側のマネージドサンドボックスで実行され、結果が返る」という単純な構図。本章の2ファイル(01_browser.py / 02_code_interpreter.py)はそれぞれ単体で完結し、相互依存はない。
使用ライブラリ・原理¶
strands_tools.browser.AgentCoreBrowser:Strands 公式ツール拡張パッケージstrands-agents-toolsの extra。AgentCore が提供するマネージドのヘッドレスブラウザを、Strands の@toolと同じインターフェース(.browser属性)で公開するラッパークラス。strands_tools.code_interpreter.AgentCoreCodeInterpreter:同様に、AgentCore のマネージドなコード実行サンドボックスを.code_interpreter属性として公開する。- どちらも「サンドボックスは AWS 側で動く」ため、ローカル環境にブラウザや実行環境を用意する必要がない。
sandbox_basicslecture で自作していた隔離層(Seatbelt / Docker / E2B microVM)を AWS に外注するイメージ。 - extras のインストール表記にゆれがある。README・
uv addコマンドはアンダースコア(agent_core_browser/agent_core_code_interpreter)、pyproject.tomlはハイフン(agent-core-browser/agent-core-code-interpreter)。PEP 508 では extra 名の-/_/.は正規化時に区別されないため実害はないが、コピペするコマンドの表記自体は統一されていない。
ファイル別の役割¶
| ファイル | 役割 |
|---|---|
01_browser.py |
AgentCoreBrowser を初期化して Agent に渡し、AWS 公式サイトへアクセスして内容を要約させるサンプル |
02_code_interpreter.py |
AgentCoreCodeInterpreter を初期化して Agent に渡し、CSV データから棒グラフを作らせるサンプル |
pyproject.toml |
Python 3.13 固定、strands-agents==1.38.0 + strands-agents-tools[agent-core-browser,agent-core-code-interpreter]==0.5.1 の依存定義 |
README.md |
セットアップ手順・書籍コマンドのコピペ用ガイド |
screenshots/screenshot_1777623132.png |
ブラウザツール実行結果とみられるスクリーンショット(生成物であり、コードではない) |
中心コードの読み解き¶
Browser¶
# chapter10/01_browser.py:1-14
from strands import Agent
from strands_tools.browser import AgentCoreBrowser # ①
browser = AgentCoreBrowser(region="us-east-1") # ②
agent = Agent(tools=[browser.browser]) # ③
response = agent( # ④
"https://aws.amazon.com/bedrock/agentcore/ にアクセスして、"
"AgentCoreの主な機能を3つ教えてください。"
)
| # | 行 | やってること | なぜ |
|---|---|---|---|
| ① | 01_browser.py:2 |
Strands 公式ツール拡張から AgentCoreBrowser をインポート |
マネージドブラウザをツール化するクラス |
| ② | 01_browser.py:5 |
region="us-east-1" を指定してブラウザサンドボックスを初期化 |
書籍全体で AWS リージョンを us-east-1 に統一する方針に合わせている |
| ③ | 01_browser.py:8 |
browser.browser を tools=[] に渡す |
自作 @tool と同じ渡し方で Agent に登録される |
| ④ | 01_browser.py:11-14 |
URL を含む自然文でエージェントを実行 | エージェントが内部でブラウザツールを呼び、ページ内容を読んで回答を生成する(ReAct ループは Strands 側で隠蔽) |
Code Interpreter¶
# chapter10/02_code_interpreter.py:1-16
from strands import Agent
from strands_tools.code_interpreter import AgentCoreCodeInterpreter # ①
code_interpreter = AgentCoreCodeInterpreter() # ②
agent = Agent(tools=[code_interpreter.code_interpreter]) # ③
csv_data = """月,売上(万円)
4月,120
5月,150
6月,180"""
response = agent(f"以下のCSVデータを棒グラフにしてください。\n\n{csv_data}") # ④
| # | 行 | やってること | なぜ |
|---|---|---|---|
| ① | 02_code_interpreter.py:2 |
AgentCoreCodeInterpreter をインポート |
マネージドのコード実行サンドボックスをツール化するクラス |
| ② | 02_code_interpreter.py:5 |
引数なしで初期化 | Browser と異なり region 等の引数を取らない(デフォルト設定に依存すると推測) |
| ③ | 02_code_interpreter.py:8 |
.code_interpreter を tools=[] に渡す |
Browser と同じ「ツール化されたマネージドサンドボックス」パターン |
| ④ | 02_code_interpreter.py:16 |
CSV を埋め込んだ自然文プロンプトでエージェントを実行 | エージェントがサンドボックス内でコード(グラフ描画)を生成・実行すると推測(実出力の検証はしていない) |
両者の対比¶
| 観点 | Browser(01_browser.py) |
Code Interpreter(02_code_interpreter.py) |
|---|---|---|
| クラス | AgentCoreBrowser(region="us-east-1") |
AgentCoreCodeInterpreter()(引数なし) |
| ツール属性 | .browser |
.code_interpreter |
| extras | agent-core-browser / agent_core_browser |
agent-core-code-interpreter / agent_core_code_interpreter |
| 必須 Python | 3.13(同一 pyproject.toml で固定) |
同上(Browser 由来の制約かは未確認) |
学んだこと(要点)¶
- 「マネージドツールを渡す」という Strands のパターンは自作
@toolと全く同じ形(Agent(tools=[...]))。呼び出し側は「隔離されたリモート実行環境か、ローカル関数か」を意識しなくてよい。 - Built-in Tools は AgentCore の8部品のうち、Runtime へのデプロイなしにローカルの
uv runだけで動く数少ない部品(サンドボックス自体は AWS 側にマネージドで存在する前提)。README にプレースホルダー置換の言及がないのはこのため。 - extras 名の表記ゆれ(アンダースコア vs ハイフン)は実害がないとはいえ、書籍のドキュメント間で統一されていない点は観察事実として残る。
落とし穴・現代版に移植するなら¶
- Browser だけ Python 3.13 必須(
pyproject.tomlのrequires-python = ">=3.13,<3.14")。書籍の他章は 3.14 統一なので、同一uv環境で混在させるとrequires-pythonの齟齬でハマる。章ごとに.venvを分けること。 - リージョンは
us-east-1決め打ち。他リージョンでの Browser / Code Interpreter 提供状況は本サンプルからは読めない。 - 実行結果を検証していないため、「実際に該当ページへアクセスできたか」「グラフが正しく生成されたか」はコード読解だけでは断定できない(
screenshots/に1枚スクリーンショットがあり、実行された形跡はある)。 - 現代版に移植するなら、AgentCore Browser/Code Interpreter はマネージド課金リソースである点を踏まえ、開発中は
sandbox_basics(Docker / E2B)でローカル検証し、本番のみ AgentCore に切り替える使い分けが妥当。
記事参照¶
- 書籍 第10章「クラウドならではの『組み込みツール』」。
- 全体像:
../../lectures/agentcore_basics/STUDY_NOTES.md§3-6「Built-in Tools(組み込みツール)」。 - 関連 lecture:
../../lectures/sandbox_basics/(自作コード実行隔離のマネージド版という位置づけ)。
作成: 2026-07-17 / 最終更新: 2026-07-17