AIアプリに関数呼び出しを組み込むと、モデルは使いたい関数と引数を返せます。開発者が用意する関数の場合、その要求を受けて処理を動かし、結果を返すのはアプリ側です。この役割を分けて読むと、「ツールを使える」という説明のうち、自分で実装する部分が分かります。

この記事は、関数呼び出しを初めてアプリへ組み込む開発者向けの解説です。OpenAI・Anthropic・Googleの公式資料を基に、開発者が定義する関数を中心に扱います。提供元のサーバーで動くツールと、実行を補助するSDKについても後半で区別します。

呼び出しの要求から、実行結果を返すまで

関数呼び出しは、自然言語の依頼を、関数名と引数の組へつなぐ仕組みです。例えば「tool_callという用語を調べて」に対し、モデルがlookup_termと{"term":"tool_call"}を選ぶ場面を考えます。これは説明用の共通表現で、各社APIの応答形式そのものではありません。

OpenAIの関数呼び出しガイドは、利用できるツールを送る、呼び出しを受け取る、アプリで実行する、結果を送る、モデルの返答を受け取る、という流れを示しています。最後の返答が、追加の呼び出しになる場合もあります。

上の例なら、関数名と引数を受け取った段階では、辞書を引く処理はまだ残っています。アプリが辞書を調べて結果を返すと、その結果を使ってモデルが回答できます。呼び出しの要求、関数が返した結果、利用者に見せる回答を分けると、途中で止まった場所も追いやすくなります。

公式3社の説明で共通する役割

呼び出しを表す名前や結果の渡し方は製品ごとに異なります。次の表は、開発者が定義する関数についての対応です。コードをそのまま相互に置き換えられるという意味ではありません。

資料モデルから受け取るもの実行と結果の返却
OpenAI・Function calling関数名と引数を含む呼び出しアプリで処理し、対応する呼び出しの結果を送る
Anthropic・client toolstool_useブロックアプリで処理し、tool_resultを返す
Google・Function calling関数名と引数アプリで関数を実行し、結果をモデルへ渡す

Anthropicの解説は、client toolsをアプリ側で実行するものとして説明しています。Googleの解説も、関数コードの実行をアプリ側の役割に置いています。共通する役割を理解したうえで、採用するAPIの形式を読む順序がよいでしょう。

AIに接続しない例で、実行する側を確かめる

次は、呼び出しを受け取った後の処理だけを取り出したPythonの例です。requestは手で作ったデータで、モデルの実際の応答ではありません。API、ネットワーク、外部ファイルを使わず、固定した辞書を読みます。

TERMS = {"tool_call": "A request to run a tool."}


def dispatch(name, arguments):
    if name != "lookup_term":
        raise ValueError("unsupported tool")
    if type(arguments) is not dict or set(arguments) != {"term"}:
        raise ValueError("unexpected arguments")
    term = arguments["term"]
    if type(term) is not str or term not in TERMS:
        raise ValueError("unknown term")
    return {"term": term, "definition": TERMS[term]}


if __name__ == "__main__":
    request = {"name": "lookup_term", "arguments": {"term": "tool_call"}}
    print(dispatch(request["name"], request["arguments"]))

このコードをdemo.pyとして保存し、python demo.pyで実行すると、tool_callと説明文を含む辞書が表示されます。関数名をdelete_noteに変えると、辞書を読む処理へ進む前にValueErrorになります。この例で実行を分岐するのはdispatchです。

Python 3.13.9で、正常な要求1件と、関数名・余分な引数・用語の型・未登録の用語・引数全体の型が異なる5件を確認しました。正常な要求は固定値を返し、不正な5件は例外になりました。実際のモデルが適切な関数や引数を選ぶか、APIとの往復が成立するかは、この例では検証していません。

実行前の確認と、サービス側で動くツール

Googleの公式資料は、実行前に呼び出しを検査することを勧めています。上の例では、許可した関数名、引数の項目、用語の型と値をアプリ側で確かめました。これは小さな辞書用の設計例です。外部APIの認証や、データを書き換える処理の承認まで実装した例ではありません。

すべてのツールを自分のアプリで動かすわけではありません。Anthropicはclient toolsと、同社の基盤で実行するserver toolsを区別しています。Web検索などのserver toolsを使う場合には、ここで示した辞書関数と実行場所が異なります。

また、Anthropicのtool runnerのように、関数の実行や結果の送信をSDKが補助する仕組みもあります。往復処理を自分で書く量と、どこで処理が動くかは別の話です。SDKを使う場合も、渡した関数の処理と実行環境を読む必要があります。

今回確認した範囲と出典

2026年10月27日に確認した公式資料に基づく解説です。Googleの資料には2026年9月23日UTCの更新日が表示されていました。ほかの参照資料については、確認できたページに基づき、特定のモデル版やSDK版への対応を断定していません。

実行したのは、固定データを使うPythonの例と、その入力検査です。各社APIへの接続、server toolsやSDKの起動、モデル間の性能比較は行っていません。まず「どんな要求を受け取り、どの処理が結果を返すか」を分けることが、公式の実装例を読む際の手掛かりになります。

Skillを導入するときに読むファイルや実行環境については、Agent Skillsを導入する前に、仕様と公式リポジトリのどこを読むかでも扱っています。

記事一覧へトップへ