オープンモデルでFunction Callingを行う(Hermes、Functionary)
多くのベースオープンモデルはツール呼び出しが得意ではありません。HermesとFunctionaryはそのためにファインチューニングされています。
「オープンモデルでFunction Callingを行う(Hermes、Functionary)」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
ベースモデルではツール呼び出しの信頼性が低い
素の Llama、Mistral、Qwen のベースモデルに「{...}のような JSON を返して」とプロンプトで指示することはできます。しかし、形式が壊れた出力を生成したり、引数を取り違えたり、存在しないツールを生成したりすることがよくあります。
Function-calling のファインチューニングによって、これらの問題を解決できます。
Hermes ファミリー
NousResearch の Hermes モデルは、最高クラスの function-calling ファインチューニングモデルです。
- Hermes 3 Llama 3.1 8B / 70B
- 高いツール呼び出し精度
- Apache 形式の寛容なライセンス
Functionary
MeetKai の Functionary モデルは、OpenAI 互換の function calling 用に明示的にトレーニングされています。
- Functionary v3(Llama 3.1 ベース)
- 並列ツール呼び出しをサポート
- HuggingFace と Together AI で利用可能
Llama 3.1 以降のネイティブツール使用
最近の Llama 3.1、Llama 3.3、Llama 4 の instruct バリアントには、ツール呼び出し機能が組み込まれています。多くのタスクではこれで十分ですが、難しいケースでは Hermes / Functionary を使ってください。
Qwen 2.5 のツール使用
Qwen 2.5 は強力なネイティブツール呼び出し機能を備えており、クローズドモデルと競合できます。多言語対応のセルフホスト型エージェントでは、デフォルトの選択肢になることがよくあります。
ツール対応オープンモデルを呼び出す
OpenAI 互換サーバー(Ollama、vLLM、Together AI)であれば、同じ tools パラメーターを受け付けます。
from openai import OpenAI
client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
tools = [{'type': 'function', 'function': {
'name': 'get_weather',
'description': 'Current weather',
'parameters': {'type': 'object', 'properties': {'city': {'type': 'string'}}, 'required': ['city']}
}}]
response = client.chat.completions.create(
model='hermes3:8b',
messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
tools=tools
)出力を慎重に検証する
オープンモデルのツール呼び出しは、クローズドモデルよりも頻繁に失敗します。必ず次の処理を行ってください。
- try/except で JSON を解析する
- Pydantic で検証する
- 修復ループを追加する
Outlines でツール呼び出しを強制する
オープンモデルで構造化出力を保証するには、文法制約付きデコーディングを行う Outlines を使います。
import outlines
model = outlines.models.transformers('meta-llama/Llama-3.1-8B-Instruct')
generator = outlines.generate.json(model, ToolCall)
result = generator(prompt)Hugging Face TGI のツール使用
TGI は多くのオープンモデルで OpenAI 形式のツール使用をサポートしており、そのまま置き換えて利用できます。
ツール使用の品質をベンチマークする
ツール呼び出しのベンチマークには、次のものがあります。
- Berkeley Function Calling Leaderboard (BFCL) — 決定的なランキング
- ToolBench — より広い範囲をカバー
- API-Bank — 複数ツールのシナリオ
妥当なデフォルト構成
多くのチームが最終的に採用する組み合わせは次のとおりです。
- 一般的なエージェント処理には Llama 3.1 8B Instruct
- コードエージェントには Qwen 2.5 Coder
- ツールを多用するエージェントには Hermes 3
- 構造化出力を保証するには Outlines または Instructor
ホステッドプロバイダー経由で実行する
インフラを完全に不要にするには、Together AI、Fireworks、Anyscale が OpenAI 互換 API で Hermes、Functionary、Llama、Qwen をホストしています。同程度の品質であれば、OpenAI より安価です。
コスト比較の例
100万トークンあたりのおおよそのコスト(2025年半ば)。
- GPT-4o:入力 $2.50、出力 $10
- Llama 3.1 70B(Together AI):入力 $0.88、出力 $0.88
- セルフホストの Llama 8B:$0(電気料金は別途必要です)
なぜ Function-Calling のファインチューニングモデルを使うのか
ツール呼び出しにベースの Llama ではなく、なぜ Hermes や Functionary を使うのでしょうか。
まとめ
最近の Llama / Qwen は、ネイティブのツール使用に十分対応できます。より高い信頼性が必要な場合は、Hermes または Functionary を使ってください。Outlines/Instructor と組み合わせることで、構造を保証できます。
よくある質問
「オープンモデルでFunction Callingを行う(Hermes、Functionary)」レッスンは無料ですか?
はい。「オープンモデルでFunction Callingを行う(Hermes、Functionary)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「オープンモデルでFunction Callingを行う(Hermes、Functionary)」で何を学びますか?
多くのベースオープンモデルはツール呼び出しが得意ではありません。HermesとFunctionaryはそのためにファインチューニングされています。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「オープンモデルでFunction Callingを行う(Hermes、Functionary)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Llama、Mistral、Qwenの概要
- Ollamaとllama.cppでローカルモデルを実行する
- オープンモデルでFunction Callingを行う(Hermes、Functionary)
- トレードオフ:レイテンシ、コスト、性能