TL;DR

LLMに外部ツールを呼び出させる方法として、従来のJSON形式ではなく「Pythonコードを書かせる」方式(プログラム的ツール呼び出し)が有効かを、14モデル・BFCL v4ベンチマークで検証。11/14モデルでJSON方式と同等以上、最新GPT-5.6系では最大10.6%の精度向上を確認。特に長い連鎖処理や並列呼び出し、コンテキスト汚染に強い一方、古いモデルではコード生成の失敗で大幅に精度が下がるケースもあり、モデル世代による性能差が明確。

解説

AMI HAPPY

ねえ智也くん、このブログのタイトル見たんだけど、『ツール呼び出しはJSONよりコードが有利?』って、どういうこと?

TOMOYA NEUTRAL

ああ、それね。LLMに外部ツールを使わせる方法として、従来はJSONで指示を渡すのが普通だったんだけど、最近はPythonコードを直接書かせる方式が注目されてるんだ。

AMI SURPRISED

へー、コードを書かせるって、なんだか難しそうだけど、なんでそんなことするの?

TOMOYA NEUTRAL

理由はいくつかあるけど、まずJSONだと複雑な処理を表現するのが難しいんだ。例えば、複数のツールを順番に呼んだり、条件分岐させたりするとき、コードの方が自然に書ける。

AMI NEUTRAL

なるほどね。で、この研究では何をしたの?

TOMOYA NEUTRAL

BFCL v4っていうベンチマークを使って、14種類のモデルでJSON方式とコード方式を比較したんだ。

AMI SURPRISED

14モデルも!それで結果はどうだったの?

TOMOYA HAPPY

11モデルでコード方式がJSON方式と同等かそれ以上だった。特に最新のGPT-5.6系では最大10.6%も精度が上がったんだ。

AMI NEUTRAL

すごい!でも、全部のモデルで良かったわけじゃないんでしょ?

TOMOYA SAD

そう。古いモデルだとコード生成自体が失敗することがあって、逆に精度が大幅に下がるケースもあった。モデルの世代によって性能差がはっきり出てるんだ。

AMI NEUTRAL

なるほどね。じゃあ、どんな場面でコード方式が特に強いの?

TOMOYA NEUTRAL

長い連鎖処理や並列呼び出し、あとコンテキスト汚染に強いって結果が出てる。コンテキスト汚染っていうのは、前の情報が混ざって変な出力になることなんだけど、コードだと変数のスコープが明確だから防ぎやすいみたい。

AMI NEUTRAL

へえ、コードの方が構造的にしっかりしてるってことか。でも、実務で使うなら、古いモデルでも大丈夫なようにしないとね。

TOMOYA NEUTRAL

そうだね。この研究の意義は、コード方式が万能じゃないってことを示した点にあると思う。モデル選びが重要だってことだね。

AMI HAPPY

ふふ、つまり「コードが書けるAI」じゃなくて「コードを書かせても大丈夫なAI」を選べってことか。

TOMOYA NEUTRAL

まあ、その通りだな。でも、君のその冗談はJSONで表現するよりコードで書いた方が分かりやすいかもね。