GitHub Repo
Ollama 0.34.4候補版、思考とJSON出力を1回の生成で処理し、重複するプリフィルを削減
新版では、思考モデルが同じ生成処理の中で、形式に制約のある回答へ切り替えられるようになり、関連するJSON出力の問題も修正された。まだプレリリース段階であり、実際の性能や各インターフェースとの互換性は別途検証が必要だ。

Ollamaは9月23日、前日にマージされた思考モデルの構造化出力処理の改修を含むリリース候補版v0.34.4-rc0を公開した。サーバーは同じ生成処理の中で、モデルにまず思考させ、その後JSON形式の制約に従って回答を生成させられるようになった。リリースページでは引き続きプレリリースと表示されており、デプロイ時には候補版のタグを明示的に固定する必要がある。[リリース告知](https://github.com/ollama/ollama/releases/tag/v0.34.4-rc0)
今回の変更は、生成処理の切り替えを見直すものだ。従来はまず形式に制約のない生成を行い、パーサーが回答内容を認識すると、サーバーがリクエストを中断してプロンプトを再構成し、文法制約を適用した2回目の生成を開始していた。新しい処理では、パーサーが思考終了マーカーを提供し、MLXでは構造タグ、llama-serverではJSON Schemaを包む文法規則を使って、マーカー以降の回答に制約を適用する。これにより、2回目のプリフィルを省く。[マージされたプルリクエスト](https://github.com/ollama/ollama/pull/18479)
実際の不具合事例は、境界処理の重要性を示している。MLX上のQwen3.8に関する報告では、思考とスキーマを有効にした場合、10回のテストのうち8回でJSONの前に余分なピリオドが入り、厳密なパースに失敗した。一方、思考を無効にした10回のテストでは発生しなかった。単一環境での少数のサンプルであり、全モデルのエラー率とはみなせないが、アップグレード後の回帰テストには活用できる。[不具合報告](https://github.com/ollama/ollama/issues/18441)
アプリケーション側は引き続き`format`でJSON Schemaを渡し、互換インターフェースでは`response_format`を使う。公式ドキュメントでは、PydanticやZodで構造を定義し、応答を受け取った後に再検証する方法が示されている。また、Ollama Cloudはこの機能にまだ対応していないと明記されている。そのため、ローカル実行エンジンの修正がクラウドサービスにも適用されているとは判断できない。[利用ドキュメント](https://docs.ollama.com/capabilities/structured-outputs)
技術面で期待される効果は、プロンプトを重複して処理するコストの削減だ。ただし、告知には比較可能なレイテンシーやスループットの数値は示されていない。受け入れ検証では、プリフィル時間、応答全体の完了までの時間、形式への適合率を併せて測定し、ストリーミングの中断、思考の早期終了、ツール呼び出しとの併用も確認するとよい。rawプロンプトモードでは引き続き最初のトークンから形式制約が適用されるため、各エントリーポイントを個別にテストする必要がある。[実装と境界条件の説明](https://github.com/ollama/ollama/pull/18479)
具体的には、モデル、量子化方式、入力長を固定して更新前後のバージョンを比較し、生の応答とパース結果を保存することで、再試行後の成功率だけで修正効果を判断することを避けられる。データ抽出処理では、空の配列、フィールドの欠落、繁体字中国語の長文もテストし、後段のバリデーターが一貫して処理できることを確認する必要がある。形式が正しい場合でも、フィールド内容の正確性を併せて検証しなければならない。