この記事では、OllamaのAPI経由でTool Calling(関数呼び出し)を使用する際、ストリーミングモードで正しくtool_callsが返却されない問題について、海外コミュニティでの解決策を要約して解説します。
1. どんな問題(エラー)が発生したか?
- 発生した環境やツール: Ollama 0.12系、/api/chat エンドポイント
- エラーメッセージ: ストリーミング有効時にtool_callsフィールドが空で返る
- 症状:
"stream": falseなら正常にtool_callsが返るが、"stream": trueにすると関数呼び出し情報が欠落する
2. 結論(解決策)
Ollamaの現行バージョンでは、ストリーミングモードとTool Callingの併用に制限があります。Tool Callingを使う際は"stream": falseに設定するのが安定した回避策です。
3. 具体的な手順
- ストリーミングを無効にしてリクエスト
curl -X POST http://localhost:11434/api/chat -d '{ "model": "qwen3:8b", "messages": [{"role": "user", "content": "東京の天気は?"}], "tools": [{"type": "function", "function": {...}}], "stream": false }' - クライアント側で分岐処理を実装
# Python例 if tools_enabled: response = ollama.chat(model=model, messages=msgs, tools=tools, stream=False) else: response = ollama.chat(model=model, messages=msgs, stream=True) - 対応モデルを使用
Tool Callingの対応品質はモデルによって異なります。Qwen3系やLlama3.1系が比較的安定しています。
4. 補足・注意点
この問題はOllamaの開発チームも認識しており、将来的にストリーミング+Tool Callingの両立がサポートされる見込みです。OpenAI互換APIとして使う場合(LiteLLMやOpenWebUI経由など)、クライアント側で自動的にstreamをfalseに設定している場合があります。
5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
参考元
本記事は海外コミュニティの複数のディスカッションを要約・再構成したものです。
Source: Ollama GitHub Issues #12557
💡 この問題を根本的に解決するには
ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:
- VRAM不足なら → RTX 4070 Ti Super(16GB VRAM)
- メモリ不足なら → DDR5 64GBメモリ
- AI開発を体系的に学ぶなら → AI・機械学習の実践書籍