【Ollama】ToolCalling(関数呼び出し)がストリーミング時に動作しない問題の解決法

この記事では、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. 具体的な手順

  1. ストリーミングを無効にしてリクエスト
    curl -X POST http://localhost:11434/api/chat -d '{
      "model": "qwen3:8b",
      "messages": [{"role": "user", "content": "東京の天気は?"}],
      "tools": [{"type": "function", "function": {...}}],
      "stream": false
    }'
  2. クライアント側で分岐処理を実装
    # 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)
  3. 対応モデルを使用
    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トラブルが頻発する場合、ハードウェアの見直しも検討してみてください:

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?