1. 分析レポートエージェント
データを分析して、スライド(PPTX)のレポートを作ってくれるエージェントを作ります。uvと認証のセットアップは3. SDKでエージェントを作成と同じ前提で、このページ用に新しいプロジェクトを作って進めます。
このページでは、Managed Agentsの次の要素を新しく使います。
| 要素 | 役割 |
|---|---|
ビルトインツール(agent_toolset) | サンドボックス内でbash・ファイル操作・Web検索などを実行するツール一式 |
環境のpackages | サンドボックスにaptやpip、npmのパッケージを事前インストールする設定 |
スキル(skills) | ドキュメント作成などの専門ワークフローをエージェントに教える仕組み |
| セッションアウトプット | エージェントが/mnt/session/outputs/に保存したファイルを手元にダウンロードする仕組み |
1. プロジェクトを作成
Section titled “1. プロジェクトを作成”プロジェクトを作成し、そのフォルダーに移動して、Claude SDKをインストールします。
uv init report-agentcd report-agentuv add anthropic2. リソースを作成
Section titled “2. リソースを作成”-
プロジェクトのフォルダーに
setup_report.pyを作成し、以下の内容を保存します。setup_report.py import jsonfrom anthropic import Anthropicclient = Anthropic()################################ 1. 環境を作成(pptxスキルの依存関係を事前インストール)###############################environment = client.beta.environments.create(name="Report-environment-adv",config={"type": "cloud","packages": {"apt": ["libreoffice-impress", "poppler-utils", "fonts-noto-cjk"],"pip": ["markitdown[pptx]", "Pillow"],"npm": ["pptxgenjs"],},"networking": {"type": "unrestricted"},},)print(f"environment: {environment.id}")################################ 2. エージェントを作成(ビルトインツール一式 + pptxスキル)###############################agent = client.beta.agents.create(name="Report Agent ADV",model="claude-sonnet-5",description="データ分析とスライドレポート作成を行うエージェント。",system="あなたはデータ分析とレポート作成のアシスタントです。分析にはサンドボックスのbashとPythonを使い、スライドの作成にはpptxスキルに従ってください。成果物は必ず /mnt/session/outputs/ に保存してください。日本語で応答してください。",tools=[{"type": "agent_toolset_20260401", "default_config": {"enabled": True}}],skills=[{"type": "anthropic", "skill_id": "pptx"}],)print(f"agent: {agent.id}")with open("ids_report.json", "w") as f:json.dump({"environment_id": environment.id, "agent_id": agent.id}, f, indent=2)print("IDをids_report.jsonに保存しました")設定のポイントは3つです。
packages・・・ pptxスキルの定義が必要とする依存関係(LibreOffice、Poppler、markitdown、pptxgenjs)と日本語フォントを事前インストールしています。apt・cargo・gem・go・npm・pipに対応し、同じ環境を使うセッション間でキャッシュされますagent_toolset_20260401・・・ bash、read/write/edit、glob/grep、Web検索・取得というビルトインツールの一式です。これまでのMCPツールと違い、サンドボックスの中で実行されますskills・・・ Anthropicが提供する事前構築スキル(pptxのほかxlsx、docx、pdf)は、skill_idを書くだけで使えます
-
スクリプトを実行します。
Terminal window uv run setup_report.py
3. レポートを作らせる
Section titled “3. レポートを作らせる”-
プロジェクトのフォルダーに
report.pyを作成し、以下の内容を保存します。report.py import jsonimport pathlibfrom anthropic import Anthropicclient = Anthropic()with open("ids_report.json") as f:ids = json.load(f)# セッションを作成session = client.beta.sessions.create(agent=ids["agent_id"],environment_id=ids["environment_id"],)print(f"session: {session.id}")# ストリームを開いてからタスクを送信stream = client.beta.sessions.events.stream(session_id=session.id)client.beta.sessions.events.send(session.id,events=[{"type": "user.message","content": [{"type": "text","text": ("架空のたこ焼き店の1年分の月別売上データ(販売数と売上金額)をCSVで作成し、""傾向を分析してください。その結果を、タイトル・売上推移グラフ・分析まとめの""3枚のスライドからなる日本語のPPTXレポートにして、""/mnt/session/outputs/report.pptx に保存してください。"),}],}],)print("タスクを送信しました。完了まで数分かかります...\n")for event in stream:if event.type == "agent.tool_use":print(f"[ツール: {event.name}]")elif event.type == "agent.message":for block in event.content:if block.type == "text":print(block.text)elif event.type == "session.status_idle":if event.stop_reason.type != "requires_action":breakelif event.type == "session.status_terminated":breakstream.close()# 成果物をダウンロードprint("\n成果物を確認しています...")files = client.beta.files.list(scope_id=session.id,betas=["managed-agents-2026-04-01"],)for f in files.data:print(f"- {f.filename} ({f.size_bytes} bytes)")content = client.beta.files.download(f.id)out = pathlib.Path(f.filename).namecontent.write_to_file(out)print(f" -> {out} に保存しました")最後のブロックが成果物のダウンロードです。エージェントが
/mnt/session/outputs/に保存したファイルは、Files APIでscope_idにセッションIDを指定すると一覧・ダウンロードできます。 -
スクリプトを実行します。初回はサンドボックスの準備(LibreOfficeなどのインストール)とスライド作成で5〜10分ほどかかります。
Terminal window uv run report.pysession: sesn_016pxZpFV5ny8Wj14fU2wVgDタスクを送信しました。完了まで数分かかります...[ツール: bash]良いデータができました。次に分析を行います。[ツール: bash]pptxgenjsが利用可能です。たこ焼き店にふさわしいカラーパレットでスライドを作成します。[ツール: write][ツール: bash]コンテンツQAとビジュアルQAを実施します。...線グラフの補間(lineSmooth)がデータを誇張している点と、スライド3の金色テキストのコントラストが弱い点を修正します。[ツール: edit]...以下の成果物を作成しました。...成果物を確認しています...- report.pptx (26240 bytes)-> report.pptx に保存しました- takoyaki_monthly_sales.csv (344 bytes)-> takoyaki_monthly_sales.csv に保存しました -
ダウンロードされた
report.pptxをPowerPointなどで開いて、仕上がりを確認してみましょう。
- 環境の
packagesで、apt・pip・npmのパッケージをサンドボックスに事前インストールできます(同じ環境を使うセッション間でキャッシュされます)。 - ビルトインツール(
agent_toolset)を有効にすると、エージェントがサンドボックス内でbashやファイル操作を実行できます。 - スキルは
skill_idを書くだけで、スライド作成のような専門ワークフローをエージェントに教えられます。 - エージェントが
/mnt/session/outputs/に保存した成果物は、Files APIにscope_id(セッションID)を指定して一覧・ダウンロードできます。
おつかれさまでした!ここまでの感想を、ぜひXにポストしてください。
感想をXにポストする