code-interpreter について
AWS Bedrock AgentCore Code Interpreterを基盤とする、サンドボックス型のコード実行スキルです。コードのテストやデータ分析、プロトタイプ作成など、実行を伴う作業向けで、セッション内のワークスペースにファイルを保持します。
主な機能
- 01Python、JavaScript、TypeScriptの実行
- 02シェルコマンドの実行
- 03ファイルの読み取り、書き込み、一覧表示、削除
- 04セッションワークスペースの保持
- 05生成ファイルの公開
活用シーン
- 01コードスニペットのテストとデバッグ
- 02データの探索と分析
- 03アルゴリズムのプロトタイプ作成
- 04パッケージのインストールと確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aws-samples/ sample-strands-agent-with-agentcore --skill code-interpreterインストール後、Claude Code で/code-interpreterを入力して読み込まれたか確認します。
詳細
コードインタープリター
AWS Bedrock AgentCore Code Interpreter を利用した汎用コード実行環境です。安全なサンドボックス内でコードを実行し、シェルコマンドを実行して、ファイルを管理できます。
利用可能なツール
- execute_code(code, language, output_filename):Python、JavaScript、または TypeScript のコードを実行します。
- execute_command(command):シェルコマンドを実行します。
- file_operations(operation, paths, content):マウントされたセッションのワークスペース内で、ファイルの読み取り、書き込み、一覧表示、削除を行います。
ツールのパラメーター
execute_code
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
code | string | はい | 実行するコードです。テキスト出力には print() を使用します。 | |
language | string | いいえ | "python" | "python"、"javascript"、または "typescript" |
output_filename | string | いいえ | "" | 永続的なセッションファイルとして公開するファイルです。コードでは、この名前と完全に一致するファイルを保存する必要があります。 |
execute_command
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
command | string | はい | 実行するシェルコマンドです(例:"ls -la"、"pip install requests")。 |
file_operations
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
operation | string | はい | "read"、"write"、"list"、または "remove" |
paths | list | read/list/remove の場合 | ファイルパスです。read:["file.txt"]、list:["."]、remove:["old.txt"] |
content | list | write の場合 | path と text を含むエントリーです:[{"path": "out.txt", "text": "hello"}] |
tool_input の例
execute_code — テキスト出力
{
"code": "import pandas as pd\ndf = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})\nprint(df.describe())",
"language": "python"
}
execute_code — グラフの生成
{
"code": "import matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.linspace(0, 10, 100)\nplt.figure(figsize=(10,6))\nplt.plot(x, np.sin(x))\nplt.title('Sine Wave')\nplt.savefig('sine.png', dpi=300, bbox_inches='tight')\nprint('Done')",
"language": "python",
"output_filename": "sine.png"
}
execute_command — パッケージのインストール
{
"command": "pip install yfinance"
}
execute_command — 環境の確認
{
"command": "python --version && pip list | head -20"
}
file_operations — ファイルの書き込み
{
"operation": "write",
"content": [{"path": "config.json", "text": "{\"key\": \"value\"}"}]
}
file_operations — ファイルの一覧表示
{
"operation": "list",
"paths": ["."]
}
file_operations — ファイルの読み取り
{
"operation": "read",
"paths": ["output.csv"]
}
このスキルを使用する場面
コードインタープリターは、コードのテストやプロトタイプ作成のためのサンドボックスとして使用します。 本番環境向けの作業(ドキュメント、グラフ、プレゼンテーションの作成)には、専用のスキルを優先してください。
次の用途には使用しないでください:
- コード例の整形や表示(Markdown のコードブロックで直接回答してください)
- コードやアルゴリズムの説明(テキストで直接回答してください)
- 頭の中でできる簡単な計算(答えをそのまま提示してください)
- 実際にコードを実行する必要のないタスク
| タスク | 推奨スキル | 備考 |
|---|---|---|
| グラフ/図の作成 | visual-design | 本番用のグラフでは、まずこれを使用してください |
| Word ドキュメントの作成 | word-documents | テンプレートとスタイリングに対応しています |
| Excel スプレッドシートの作成 | excel-spreadsheets | 書式設定のパイプラインと検証機能があります |
| PowerPoint の作成 | powerpoint-presentations | レイアウトシステムとデザインパターンを備えています |
| コードスニペットのテスト | code-interpreter | デバッグ、ロジックの検証、出力の確認 |
| アルゴリズムのプロトタイプ作成 | code-interpreter | 実装前に試行 |
| パッケージのインストール/テスト | code-interpreter | 互換性の確認、API のテスト |
| コードロジックのデバッグ | code-interpreter | 特定の関数を切り分けてテスト |
| 計算の検証 | code-interpreter | 簡単な計算やデータの確認 |
コードインタープリターとコードエージェントの比較
| コードインタープリター | コードエージェント | |
|---|---|---|
| 性質 | サンドボックス化された実行環境 | 自律型エージェント(Claude Code) |
| 最適な用途 | 簡単なスクリプト、データ分析、プロトタイプ作成 | 複数ファイルのプロジェクト、リファクタリング、テストスイート |
| ファイルの永続性 | /mnt/workspace 内のファイルはインタープリターの再起動後も保持されます | すべてのファイルが自動的に S3 と同期されます |
| セッションの状態 | 変数は1つのインタープリターセッション内で保持され、ワークスペース内のファイルはチャットセッション中保持されます | ファイルと会話はセッション間で保持されます |
| 自律性 | コードはユーザーが記述します | エージェントが計画、記述、実行、反復を行います |
| 使用する場面 | 特定のコードを実行する必要がある場合 | 問題をエンドツーエンドで解決するエンジニアが必要な場合 |
ワークスペースとの連携
チャットセッションには、/mnt/workspace にマウントされた永続ファイルシステムがあります。
Code Interpreter ツールで使用する相対ファイルパスは、このディレクトリ内を参照します。
ここに書き込まれたファイルは一時ファイルであり、インタープリターセッションを
再起動しても利用できます。output_filename を指定しない限り、ファイルはユーザーがダウンロードできる成果物にはなりません。
マウントは必須です。設定またはアタッチできない場合、Code Interpreter は永続性のない分離セッションを開始せず、エラーを返します。
永続ファイルを直接作成する:
{
"tool": "execute_code",
"code": "from pathlib import Path\nPath('/mnt/workspace/results.json').write_text('{\"ok\": true}')"
}
生成したファイルを Generated Files に表示する、またはユーザーがダウンロードできるようにする必要がある場合は、output_filename を使用してください。ツールは成功を返す前に、そのファイルを公開して検証します。/mnt/workspace への Markdown リンクを作成したり、ワークスペース内のパスをダウンロードリンクとして記述したりしないでください。アプリケーションがファイル操作を表示します。
アップロードされたファイル:
ユーザーがアップロードしたファイルは、手動で読み込んだり base64 で転送したりしなくても、マウントされたワークスペースの /mnt/workspace/inputs から利用できます。JSON、JSONL、NDJSON の添付ファイルは、会話内では一部のテキスト抜粋として表示される場合があります。データセット全体が必要な場合は、マウントされたファイルを使用してください。
一時ファイルの確認には file_operations を使用してください。公開されたファイルはアプリケーションに表示されるため、表示されているファイル名で参照してください。
環境
- 言語: Python(推奨、200 以上のライブラリ)、JavaScript、TypeScript
- シェル:
execute_commandによる完全なシェルアクセス - ファイルシステム:
/mnt/workspaceはチャットセッション中、Code Interpreter の再起動後も維持されます - セッション状態: 変数は 1 つのインタープリターセッション内で維持され、ファイルはマウントされたワークスペース内で維持されます
- ネットワーク: インターネットアクセスが利用可能です(
requests、urllib、curlを使用できます)
サポートされている言語
- Python(推奨)— データサイエンス、ML、可視化、ファイル処理に対応した 200 以上のプリインストール済みライブラリ
- JavaScript — JSON 操作や非同期処理に便利な Node.js ランタイム
- TypeScript — 型チェックに対応した TypeScript ランタイム
プリインストール済み Python ライブラリ
データ分析と可視化
| ライブラリ | 主な用途 |
|---|---|
pandas | DataFrame、CSV/Excel の入出力、グループ化、ピボット |
numpy | 配列、線形代数、乱数、統計 |
matplotlib | 折れ線、棒、散布図、ヒストグラム、サブプロット |
plotly | インタラクティブなグラフ、3D プロット |
bokeh | インタラクティブな可視化 |
scipy | 最適化、補間、信号処理 |
statsmodels | 回帰、時系列、仮説検定 |
sympy | 代数、微積分、方程式の求解 |
機械学習と AI
| ライブラリ | 主な用途 |
|---|---|
scikit-learn | 分類、回帰、クラスタリング、パイプライン |
torch / torchvision / torchaudio | ディープラーニング、コンピュータービジョン、音声 |
xgboost | 高性能な勾配ブースティング |
spacy / nltk / textblob | NLP、トークン化、NER、感情分析 |
scikit-image | 画像処理、フィルター、セグメンテーション |
数学と最適化
| ライブラリ | 主な用途 |
|---|---|
cvxpy | 凸最適化、ポートフォリオ最適化 |
ortools | スケジューリング、ルーティング、制約プログラミング |
pulp | 線形計画法 |
z3-solver | SAT ソルバー、形式検証 |
networkx / igraph | グラフアルゴリズム、ネットワーク分析 |
ファイル処理とドキュメント
| ライブラリ | 主な用途 |
|---|---|
openpyxl / xlrd / XlsxWriter | 書式設定に対応した Excel の読み書き |
python-docx | Word ドキュメントの作成・変更 |
python-pptx | PowerPoint の作成・変更 |
PyPDF2 / pdfplumber / reportlab | PDF の読み込み・書き込み・生成 |
lxml / beautifulsoup4 | XML/HTML の解析 |
markitdown | さまざまな形式から Markdown への変換 |
画像とメディア
| ライブラリ | 一般的な用途 |
|---|---|
pillow (PIL) | 画像のリサイズ、切り抜き、フィルター、変換 |
opencv-python (cv2) | コンピュータービジョン、特徴検出 |
imageio / moviepy | 画像/動画の入出力と編集 |
pydub | 音声の操作 |
svgwrite / Wand | SVG の作成、ImageMagick |
データストレージと形式
| ライブラリ | 一般的な用途 |
|---|---|
duckdb | DataFrame とファイルに対する SQL クエリ |
SQLAlchemy | SQL ORM とデータベースの抽象化 |
pyarrow | Parquet と Arrow 形式の処理 |
orjson / ujson / PyYAML | 高速な JSON/YAML の解析 |
Web と API
| ライブラリ | 一般的な用途 |
|---|---|
requests / httpx | HTTP リクエスト、API 呼び出し |
beautifulsoup4 | Web スクレイピング |
fastapi / Flask / Django | Web フレームワーク |
ユーティリティ
| ライブラリ | 一般的な用途 |
|---|---|
pydantic | データ検証、スキーマ定義 |
Faker | テストデータの生成 |
rich | 見栄えのよい出力、テーブル |
cryptography | 暗号化、ハッシュ化 |
qrcode | QR コードの生成 |
boto3 | AWS SDK |
バージョン付きの 200 以上のライブラリの完全な一覧を表示するには、
execute_command(command="pip list")を実行してください。
使用パターン
パターン 1:データ分析
import pandas as pd
import numpy as np
df = pd.DataFrame({
'date': pd.date_range('2024-01-01', periods=100),
'revenue': np.random.normal(1000, 200, 100),
'costs': np.random.normal(700, 150, 100),
})
df['profit'] = df['revenue'] - df['costs']
print("=== Summary Statistics ===")
print(df.describe())
print(f"\nTotal Profit: ${df['profit'].sum():,.2f}")
print(f"Profit Margin: {df['profit'].mean() / df['revenue'].mean() * 100:.1f}%")
パターン 2:可視化(output_filename を使用)
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
categories = ['Q1', 'Q2', 'Q3', 'Q4']
values = [120, 150, 180, 210]
axes[0,0].bar(categories, values, color='#2196F3')
axes[0,0].set_title('Quarterly Revenue')
x = np.linspace(0, 10, 50)
axes[0,1].plot(x, np.sin(x), 'b-', linewidth=2)
axes[0,1].set_title('Trend')
sizes = [35, 30, 20, 15]
axes[1,0].pie(sizes, labels=['A','B','C','D'], autopct='%1.1f%%')
axes[1,0].set_title('Market Share')
x = np.random.normal(50, 10, 200)
y = x * 1.5 + np.random.normal(0, 15, 200)
axes[1,1].scatter(x, y, alpha=0.5, c='#FF5722')
axes[1,1].set_title('Correlation')
plt.tight_layout()
plt.savefig('dashboard.png', dpi=300, bbox_inches='tight')
print('Dashboard saved')
パターン 3:機械学習
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.datasets import load_iris
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.3, random_state=42
)
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred, target_names=iris.target_names))
パターン 4:DuckDB での SQL
import duckdb
import pandas as pd
orders = pd.DataFrame({
'order_id': range(1, 101),
'customer': [f'Customer_{i%20}' for i in range(100)],
'amount': [round(50 + i * 3.5, 2) for i in range(100)],
})
result = duckdb.sql("""
SELECT customer, COUNT(*) as cnt, ROUND(SUM(amount), 2) as total
FROM orders GROUP BY customer
HAVING COUNT(*) >= 3 ORDER BY total DESC LIMIT 10
""").df()
print(result.to_string(index=False))
パターン 5:Web からデータを取得
import requests
import pandas as pd
response = requests.get("https://api.example.com/data")
data = response.json()
df = pd.DataFrame(data)
print(df.head())
パターン 6:複数ステップのワークフロー(セッション状態が保持されます)
Call 1: execute_code → load and clean data, store in variable `df`
Call 2: execute_code → analyze `df`, generate chart, save as PNG
Call 3: execute_code → export results to CSV
Call 4: file_operations(operation="read") → download the CSV
同じセッション内の呼び出し間では、変数(df)とファイルが保持されます。
重要なルール
import matplotlib.pyplotの前にmatplotlib.use('Agg')を実行してください — サンドボックスにはディスプレイがありません。- テキスト出力には
print()を使用してください — 結果は stdout を通じて返されます。 output_filenameは完全に一致させてください —plt.savefig()またはwb.save()内のファイル名は、output_filenameパラメーターと一致する必要があります。- シェルタスクには
execute_commandを使用してください —ls、pip install、curlなど。 - ファイル管理には
file_operationsを使用してください — ファイルの読み取り、書き込み、一覧表示、削除を明示的に行います。 - セッション状態は保持されます — 変数とファイルは呼び出し間で保持されます。複数ステップのワークフローに活用してください。
避けるべきよくある間違い
import matplotlib.pyplot as pltの前にmatplotlib.use('Agg')を実行し忘れるplt.savefig()ではなくplt.show()を使用する — ディスプレイはありませんoutput_filenameの入力ミス — コードで保存するファイル名と完全に一致させる必要があります- シェルタスクに
execute_codeを使用する — 代わりにexecute_commandを使用してください file_operationsでバイナリファイルを書き込む —execute_codeでバイナリファイルを生成し、output_filenameでダウンロードしてください