コンテンツにスキップ

第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_basics lecture で自作していた隔離層(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.browsertools=[] に渡す 自作 @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_interpretertools=[] に渡す 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.tomlrequires-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 に切り替える使い分けが妥当。

記事参照


作成: 2026-07-17 / 最終更新: 2026-07-17