先日、Langchainが”Tool Calling”という機能を正式にリリースしましたので、共有したいと思います。
1.Tool Callingとは
tool callingはAI-agentのコアになる機能で、LLMが外部ツールを使用することを指します。最初OpenAIから発表されて、当時は”function calling”という名前だったです。
(昨年11月に”tool calling”に変更され、それと同時に複数のツールを並行して呼び出せるようにもなりました。)
tool callingのメリットとしては、ツールを活用することでLLMができない作業もできるようになることです。
例えば、モデルにPythonを使った数式計算を行う関数(ツール)を提供し、そのツールに対して適切な説明を加えれば、モデルはそのコードを使って数学計算ができるようになり、LLMの計算能力の弱点を補うことができます。
2.Tool Callingの流れとイメージ
tool callingの処理の流れは、各ツールに詳細な説明用のprompt文を用意し、モデルがユーザーの指示とツールの説明文に基づいて、どのツールを使用するかを判断して処理を実行します。
例えば、ユーザーから「JSONの形式で質問に答えてほしい」というリクエストがあった場合、モデルは自動的にJSONparserというツールを呼び出して回答を生成します。また、「最新の論文情報を知りたい」という質問があれば、arXivなどの関連APIを呼び出して情報を取得します。
今回Langchainが発表した"tool calling"は、各モデルのこのようなツール呼び出しのプロセスを統一化しています。(これまで主要なLLM(chatgpt,gemini,claude,cohereなど)はそれぞれ独自のtool calling形式を持っており、入力、出力、パラメータの設定方法などもバラバラでした。)
ただし、tool callingが適切に機能するかどうかは、主にLLMの能力に依存しています。そのため、小規模なモデルではtool callingを活用することが難しい場合があります。そういった場合は、tool callingのデータを使ってモデルをファインチューニングする必要があります。(tool calling用のオープンソースデータはHugging Faceに多数あります。イメージとしては以下のようなものです。)
Langchainのgithubコミュニティで、他の人がファインチューニングした結果を見ると、およそ1万件程度のデータを使えば、7B規模のモデルでも特に問題なくtool callingを習得できるようです。私も最近ちょっと試してみたいと思います。
興味ある方: