C
Claude Academy
Tool Use

Tool Use (Function Calling)

約 14 分 · クイズ 4 問 · 演習 1 問
重要キーワード (4 語)
Tool Use (ツール使用) — LLM が宣言された関数を呼び出して外界とやりとりする仕組み
JSON Schema (JSONスキーマ) — ツール入力の型定義に使われる規格
Parallel Tool Use (並列ツール使用) — 複数の独立ツールを 1 ターンで同時呼び出し
tool_result (ツール実行結果) — アプリ側で関数を実行した結果を返すメッセージ種別

Tool Use (ツール使用)

LLM 単体では計算・検索・DB アクセス・API 呼び出しが苦手です。 Tool Use はモデルに 「関数」を定義して渡し、必要なら呼び出してもらう 仕組み。 別名 Function Calling

流れ

  1. ユーザーが質問する。
  2. モデルがツールを呼ぶ必要があるか判断 → tool_use ブロックを返す。
  3. アプリ側で実際に関数を実行し、結果を tool_result として返す。
  4. モデルが最終回答を生成する。
---
name: db-migrator
description: SQL マイグレーションの作成と検証専門
tools: Read, Edit, Bash
---

あなたはデータベースマイグレーション専門のエージェントです。
- alembic の規約に従う
- ロールバック (downgrade) も必ず書く
- 大規模テーブルの NOT NULL 追加は段階移行を提案する
- 本番 DB に直接接続しない

コード例

Main: "次の3つのリポジトリで package.json を読んで違いを比較して"
  ↓ 並列 起動
[Subagent 1] repo-a/package.json を読む
[Subagent 2] repo-b/package.json を読む
[Subagent 3] repo-c/package.json を読む
  ↓ 結果集約
Main: 比較結果を提示

設計のコツ

  • description が命。ツールが何をするか明確に書く (Claude のツール選択判断はここに依存)。
  • input_schema は JSON Schema。required も明記する。
  • 副作用のあるツール (送金等) は人間の確認を挟む設計に。
  • 多すぎるツール は精度を落とす。10 個以上なら絞り込むか、上位ツールでルーティングする。

Parallel Tool Use

Claude は 複数のツールを同時に呼ぶ ことができます。 独立した関数なら並列実行で高速化できます。

wzxhzdk:2

これらを並列に実行 → 両方の tool_result をまとめて返すと効率的。

tool_choice で制御

wzxhzdk:3

よく使う応用

  • DB クエリ実行 (read-only から始める)
  • 検索エンジン呼び出し (Web Search)
  • 計算実行 (Python REPL)
  • GitHub API, Slack 投稿 などの社内連携

試す: ツール定義を Claude に書かせる

最初の設計を Claude に手伝ってもらうと早いです。

▶ ツール JSON Schema 設計依頼
「会議室予約システム」用の Tool Use 定義 JSON Schema を、書き込み(reserve)・読み取り(list_rooms, get_availability) の 3 つで設計してください。各ツールに description と input_schema を含めて、JSON で返してください。

Hands-on 演習

演習 1: 電卓ツールを実装する

Tool Use を使って 「四則演算電卓」 を Claude に呼び出させてください。

  • ツール名: calc
  • 入力: expression: string (例: "3 * (5 + 2)")
  • 出力: 数値
  • 安全のため、Python の eval ではなく ast.literal_eval 風の制限付き評価を使う

会話例: 「3 * (5+2) は何?」 → ツール経由で 21 を返答。

▶ Playground を開いて実行
💡 ヒント

eval は危険なので避けます。ast.parse(expr, mode='eval') で AST 化し、許可ノード (Num/BinOp/UnaryOp など) のみ評価する関数を実装するのが安全。

進捗保存にはログインが必要 クイズに挑戦 (4問)

💬 このレッスンへの質問 (0)

全質問を見る →
質問の投稿には ログイン が必要です。閲覧は誰でも可能です。

まだ質問はありません。最初の 1 件を投稿してみましょう。