← inaro.devAI駆動開発 学習ツール

Tool use

なぜ学ぶか: 「天気を教えて」に対して、Claudeが実際に天気APIを呼んで答える — これがTool use。AIを『喋るだけ』から『行動できる』存在に変える仕組みで、エージェントの心臓部でもあります。ただし『行動できる=危険もできる』ので、権限設計とセットで理解します。

Tool use=Claudeにあなたの関数を使わせる

「こういう道具(関数)があるよ」と教えておくと、Claudeが必要に応じて『この道具をこの引数で使いたい』と要求してきます。

実行するのは自分のコード

Claudeは『使いたい』と言うだけ。実際に関数を動かすのはあなたのアプリ。結果をClaudeに返すと、それを踏まえて応答を続けます。

行動できる=危険もできる

削除・送金など取り返しのつかない道具は、最小権限・人間の承認とセットで。Tool useは権限設計あってこそ安全です。

入力も出力も信じない

Claudeが要求した引数、ツールが返した結果 — どちらも検証してから使います。乗っ取られても被害を限る設計を。

コード例

import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();

// Claude に「天気を調べる道具」があると教える
const tools = [
  {
    name: "get_weather",
    description: "指定した都市の現在の天気を返す。天気を聞かれたら使う。",
    input_schema: {
      type: "object" as const,
      properties: { city: { type: "string", description: "都市名" } },
      required: ["city"],
    },
  },
];

const res = await client.messages.create({
  model: "claude-opus-4-8",
  max_tokens: 1024,
  tools,
  messages: [{ role: "user", content: "東京の天気は?" }],
});

// Claude が「道具を使いたい」と要求してきたら…
if (res.stop_reason === "tool_use") {
  const call = res.content.find((b) => b.type === "tool_use");
  // → ここで自分のコードが get_weather を実行し、結果を Claude に返す
  console.log("Claudeが使いたい道具:", call);
}

Claude自身は天気を知りません。「道具を使いたい」と要求 → あなたのコードが実行 → 結果を返す、という往復で『行動』が実現します。だからこそ、渡す道具の権限設計が肝心です。

ステップ 1 / 2

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。