モデルは対応してるのに動かない?Ollama /api/tagsの罠とv0.34.1の修正
AI実用ラボ
自作のエージェントやVS Code拡張機能から、Ollamaでホストしているモデルのcapabilities(対応機能)を/api/tagsで自動判定していないだろうか。
実はこのエンドポイント、つい最近まで ollama show や /api/show と食い違う結果を返すことがあった。ツール呼び出し対応のモデルなのに、連携先のクライアントからは「非対応」と誤判定される——そんな静かな不具合の中身と、v0.34.1での直し方を確認する。
Ollama v0.34.1(2026-09-14公開)で、/api/tagsが返すcapabilitiesが/api/showと食い違っていた不整合バグが修正された。原因はGGUFメタデータを取得する実装が2系統存在していたこと。修正後は/api/tagsの応答も大幅に高速化されている(大規模モデルライブラリでの計測で3.1秒→294ミリ秒)。TL;DR

最近、自分で作ったエージェントが「このモデルはツール呼び出し非対応」って判定して、勝手にfunction callingを使わない動作になったんです。でもOllamaで ollama show すると、ちゃんと tools って書いてあるんですよ…どういうことですか?

それ、まさにOllamaの/api/tagsにあった既知の不具合ですね。ollama show や /api/show とは違う結果を /api/tags だけが返していたんです。v0.34.1で直っているので、まずは仕組みから説明しますね。
この記事でできること
- Ollamaの/api/tagsが抱えていたcapabilities(モデルの対応機能)の不整合バグの中身が分かる
- 自分のエージェント・自動化パイプラインがこの不具合の影響を受けていないか確認できる
- v0.34.1でのパフォーマンス改善(応答時間の大幅短縮)の根拠と仕組みが分かる
対象読者
【中級者向け】Ollamaで複数モデルをサーバーにホストし、/api/tagsや/api/showをスクリプト・エージェント・VS Code拡張機能などから呼び出して「このモデルはツール呼び出しに対応しているか」を自動判定している人を想定しています。単発でOllamaを個人PCで使っているだけなら影響は小さいですが、判定ロジックを組んでいる場合は要確認です。
確認環境・確認日
- 確認日: 2026-09-24
- 対象: Ollama公式GitHubリポジトリの v0.34.1 タグ(2026-09-14公開)
- 本記事のコマンド例は公式ドキュメント・公式リリースノート・公式Issueの記載をそのまま引用したもの
背景:なぜ2つのAPIが違う答えを返していたのか
Ollamaはモデルの情報を返すエンドポイントを複数持っている。
- ollama show モデル名 (CLIコマンド)
- POST /api/show (同じ情報をAPI経由で取得)
- GET /api/tags (サーバー上の全モデルを一覧するAPI。エージェントがモデル選択に使うことが多い)
このうちGET /api/tagsは、モデルのcapabilities(tools=ツール呼び出し対応、thinking=思考プロセス対応、completion=通常の補完対応など)も含めて一覧を返す。GGUF形式のモデルファイルからこのcapabilitiesを含むメタデータを取り出す処理には計算コストがかかるため、Ollama内部では複数のキャッシュの仕組みが並行して育っていた。その結果、capabilitiesを判定する実装が実質的に2系統存在し、モデルによって/api/show系と/api/tags系で異なる結果を返す状態になっていた。
何が起きていたか:deepseek-r1でtools機能が見落とされる
この不整合は2026年6月30日に公式GitHubへ報告されている(Issue #16969)。報告環境はOllama 0.30.11、Windows 11、対象モデルはdeepseek-r1:32bだった。Issueに記載された再現結果は次の通り。
ollama show deepseek-r1:32b
→ capabilities: completion, thinking, tools
POST /api/show { "model": "deepseek-r1:32b" }
→ capabilities: completion, thinking, tools
GET /api/tags
→ capabilities: completion, thinking ← "tools" が含まれていないIssue本文では、この食い違いが実際に「VS Code Language Model provider(GitHub Copilot Chat統合)のようなクライアントが、/api/tagsだけを見てモデルはツール呼び出し非対応だと誤認する」影響を引き起こしていたと報告されている。ツール呼び出し可能なモデルを使っているのに、連携先のクライアント側でその機能が黙って無効化される、という静かな不具合だった。
全体像:修正前後で何が変わったか

v0.34.1での修正:メタデータキャッシュの統一
修正はGitHub上のPR #17858(2026-09-10マージ)で行われた。PR本文では、修正前の状態を次のように説明している。
Loading GGUF metadata is an expensive operation. Two caches had evolved to mitigate this, and the two capability implementations produced inconsistent results for some models.
対応として、モデルファイル(blob)ごとにメタデータを1回だけ抽出し、OLLAMA_MODELSディレクトリ配下のmetadataフォルダに、ハッシュ値を名前にしたJSONファイルとしてキャッシュする方式へ変更された。/api/tagsはGGUFファイルを毎回読み直すのではなく、このキャッシュとモデルのマニフェスト情報から直接構築されるようになっている。これにより/api/tagsと/api/showが同じ情報源を参照するようになり、capabilitiesの食い違いが解消された。
パフォーマンスも大幅に改善
同じ修正の副産物として、/api/tagsの応答速度も改善している。公式リリースノートには次のように明記されている。
/api/tags is much faster on large model libraries (3.1 s → 294 ms cold in testing)
| 項目 | 内容 |
| 計測条件 | 大規模なモデルライブラリ(公式PRの記載ではGGUF 182個・MLX 106個のモデルストア) |
| 改善前 | 3.1秒(cold、キャッシュ無しの初回呼び出し) |
| 改善後 | 294ミリ秒(cold) |
毎回GGUFファイルを読み直していた処理がキャッシュ参照に置き換わったことが、この高速化の直接の理由。多数のモデルをホストし/api/tagsを頻繁に呼び出す運用ほど、恩恵が大きくなる。

なるほど、キャッシュを1本化したから、速くなった上に答えも揃うようになったんですね。自分の環境でも直ってるか確認したいんですが、どうすればいいですか?

バージョンと、capabilitiesが一致しているかを見比べればOKです。次の章にまとめますね。
確認の考え方
このセクションのコマンドは公式ドキュメント・公式Issueの記載に基づく例。自身の環境のOllamaバージョンやモデル構成によって出力内容は変わる。
1. バージョンを確認する
ollama --version0.34.1以降であれば、今回の修正が適用されている。
2. capabilitiesが一致しているか比較する
/api/showと/api/tagsで同じモデルのcapabilitiesを見比べる。
curl -s http://localhost:11434/api/show -d '{"model": "<モデル名>"}' | grep -A5 capabilities
curl -s http://localhost:11434/api/tags | grep -A5 '"<モデル名>"'両方に同じcapabilitiesの一覧(toolsを含むかどうかなど)が出ていれば、/api/tagsだけがツール呼び出し対応を見落とす状態は解消されている。
3. エージェント側の判定ロジックを見直す
/api/tagsが信頼できなかった時期に、/api/showとの二重照合を組み込んだ設計にしている場合は、v0.34.1以降であれば/api/tags単独の判定に簡略化できる可能性がある。ただし判定ロジックを変更する際は、実際に使うモデルで挙動を確認してから反映すること。
応用:全モデルの整合性をまとめてチェックする
モデル数が多いサーバーでは、1つずつollama showと/api/tagsを見比べるのは手間だ。/api/tagsが返す一覧をそのまま使い、モデルごとに/api/showの結果と突き合わせるスクリプト例(jqが必要)。
#!/bin/bash
# usage: bash check_capabilities.sh
for name in $(curl -s http://localhost:11434/api/tags | jq -r '.models[].name'); do
tags_caps=$(curl -s http://localhost:11434/api/tags \
| jq -r --arg n "$name" '.models[] | select(.name==$n) | .capabilities | sort | join(",")')
show_caps=$(curl -s http://localhost:11434/api/show -d "{\"model\": \"$name\"}" \
| jq -r '.capabilities | sort | join(",")')
if [ "$tags_caps" != "$show_caps" ]; then
echo "不一致: $name tags=[$tags_caps] show=[$show_caps]"
fi
done
echo "確認完了"ollama --versionが0.34.1以降であれば、通常は不一致が出力されないはず。何か出力された場合は、対象モデルをollama pullコマンドで再取得してメタデータキャッシュを作り直してから、もう一度実行する。このスクリプトはOllamaの公式API仕様(/api/tags・/api/showのレスポンス形式)に基づいて構成したもので、jqのインストールとcurlが使える環境であれば動作する。
注意点・制限事項
- 公式APIドキュメント(docs.ollama.com/api/tags)に掲載されているサンプルレスポンスはdetailsオブジェクトまでの簡略版で、capabilitiesフィールドは例示されていない。ただしIssue #16969の再現例が示す通り、実際のレスポンスにはcapabilitiesが含まれる。ドキュメントのサンプルにフィールドが無いことは、機能が存在しない根拠にはならない
- 今回のメタデータキャッシュは、配列要素が4096を超える場合や非有限浮動小数点数(NaN/Infなど)を保存対象から除外する仕様。極端に大きなメタデータを持つモデルでは、キャッシュされる情報の一部が省略される可能性がある(公式PR本文に明記)
- 同じv0.34.1では、モデル作成時のオプションtypical_pが非推奨になり、新規モデル作成時には設定できなくなった(既存のGGUFモデルはそのまま動作する)。/api/tagsの修正とは別件だが、同じリリースに含まれるため、モデル作成スクリプトを持っている場合は合わせて確認するとよい
- 本記事のコマンド例は公式情報源の記載に基づくもの。実際の出力はモデルの種類・バージョン・OS環境によって変わり得る
よくある誤解
「ドキュメントにcapabilitiesが載っていないから、このフィールド自体が無い」
誤り。docs.ollama.com/api/tagsのサンプルは簡略版であり、実際のレスポンスにはcapabilitiesが含まれる(Issue #16969の再現例で確認)。
「これは単なる速度改善で、機能面には関係ない」
誤り。高速化とcapabilitiesの不整合解消は、どちらも同じ「メタデータキャッシュの統一」という1つの修正から生まれている。速くなったのは結果で、本質的な変更は「情報源を1本化した」こと。
早見表
| 確認項目 | コマンド | 見るポイント |
| バージョン確認 | ollama --version | 0.34.1以降か |
| CLIでの機能確認 | ollama show モデル名 | capabilitiesにtools等が含まれるか |
| API(show)での機能確認 | POST /api/show {"model": "モデル名"} | ollama showと同じ結果か |
| API(tags)での機能確認 | GET /api/tags | 上記2つと同じcapabilitiesが出るか |
| モデル一覧の応答速度 | curl http://localhost:11434/api/tags | 大規模ライブラリほど改善を体感しやすい |
まとめ
- Ollamaの/api/tagsは、v0.34.1より前はcapabilities(特にtools)を/api/showと食い違って報告することがあった
- 原因は、GGUFメタデータの取得処理が2系統に分かれ、モデルによって異なる結果を返していたこと
- v0.34.1でメタデータキャッシュが1本化され、/api/tags・/api/show・ollama showが同じ情報源を参照するようになった
- 副産物として/api/tagsの応答時間も大幅に短縮された(大規模モデルライブラリでの計測で3.1秒→294ミリ秒)
- /api/tagsだけでツール呼び出し対応を判定しているエージェント・自動化パイプラインは、バージョンとcapabilitiesの一致を確認しておくと安心
