LESSON 03
/ 06
Tool Use で外部システムと連携
Tool Use(ツール使用)は、Claude に外部のAPIや関数を呼ばせる機能。これによりClaudeは「文章生成」を超えて「行動するエージェント」になります。
仕組み
- 使えるツールのスキーマを定義してClaudeに渡す
- ユーザーの質問に対し、Claude がツールを使うべきか判断
- 使うなら、tool_useブロックでツール名と引数を返す
- こちら側で実際にツールを実行し、結果を tool_result としてClaudeに返す
- Claudeが結果を踏まえて最終回答を生成
シンプルな実装例
tools = [
{
"name": "get_weather",
"description": "指定都市の現在の天気を取得します。",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "都市名(例: 東京)"}
},
"required": ["city"]
}
}
]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "今日の東京の天気は?"}]
)
# response.stop_reason が "tool_use" なら、ツール呼び出しが要求された
for block in response.content:
if block.type == "tool_use":
# 実際の天気APIを呼ぶ
result = call_weather_api(block.input["city"])
# 結果を返してClaudeに最終応答を作らせる
...
ツール設計のベストプラクティス
- description は丁寧に:いつ使うべきツールかを明確に
- input_schema は厳密に:型・必須項目・例を入れる
- 少数精鋭:使えるツールは10個以下に絞る(多すぎると判断精度が落ちる)
- エラー結果も返す:失敗時の情報があるとClaudeが対処できる
典型的なユースケース
- 社内DBへの検索(顧客情報・在庫・売上)
- 外部API呼び出し(天気・地図・株価)
- 計算・コード実行(Pythonサンドボックス)
- メール送信・カレンダー予約などのアクション系
このレッスンのまとめ
Tool Use を使えば、Claude は対話エージェントから業務エージェントに進化します。次のレッスンでは Claude Code(CLI)をローカル開発に統合する方法を学びます。