Ollamaは0.40.14を公開し、OpenAI互換方式でモデルを利用するアプリの既定の生成設定と会話入力処理を修正した。設定を別途送らなければモデルに含まれる値に従い、過去の回答を再送するアプリでは、拒否内容を含む入力を読み取れる形で保持する。

1. OpenAI互換の経路がモデルの設定に従う

11月3日公開のリリースノートによると、リクエストを受けて処理する窓口であるOpenAI互換エンドポイントは、モデルに含まれるサンプラーの既定値を上書きしなくなった。サンプラー設定は、回答の生成時に次の表現をどの程度多様に選ぶかを調整する値だ。

リクエストでtemperatureとtop_pを送らなければ、従来適用されていた1.0ではなく、モデル自体の値が使われる。モデルに組み込んだ生成設定が、互換接続を経由する際に別の値へ変わっていた部分を修正したものだ。

リリースノートは、この動作がOllamaの/api/chatと一致すると説明している。同じモデルを二つの経路で使う開発者にとっては、値を省略した場合の基準がそろうことを意味する。

2. 未指定の値はモデルファイルで確認する

モデルファイルには、実行時の動作を定める設定値であるパラメーターを組み込める。その確認方法として公式ドキュメントが案内しているコマンドは次のとおりだ。

ollama show --modelfile llama3.2

公式ドキュメントは、temperatureを上げると回答がより創造的になると説明している。したがって、省略した値がどこで決まるかは、単なる設定の整理ではなく、回答の生成傾向に関わる問題だ。

更新を適用する際は、まず利用するモデルの設定を調べ、次にサーバーへリクエストを送るアプリであるクライアントが、同じ項目をリクエストに含めているかを確認するとよい。今回の変更は値を送らない呼び出しに直接影響するため、値がある場合とない場合を分けて調べると原因を絞りやすい。

特定の生成設定を維持したいクライアントは、必要な値をリクエストで直接指定できる。モデルファイルで既定値を管理するか、個々のリクエストで値を決めるかは、アプリがモデルの基本的な傾向に従うかどうかに応じて選ぶことになる。

3. Responsesが入力内容を読み取れる形で保持する

リリースでは、/v1/responsesが読み取れる入力内容を保持すると発表された。過去のアシスタントメッセージに含まれる拒否内容も保持対象で、入力を一律に平坦化して処理していた動作を変更した。

複数回の会話を交わすアプリでは、過去の回答も次のリクエストの材料になる。今回の変更は、その材料を再送する際に拒否内容まで読み取れる形で残すことに重点を置いている。サンプラーの修正が生成設定に関するものなら、この修正は受け渡す会話内容に関するものだ。

公式ドキュメントによると、Responsesはサーバーが以前のリクエストの状態を引き継ぐ方式をサポートしていない。会話を継続するアプリは、必要な履歴をリクエストの入力に含めて送る構成にする必要がある。

4. 既定動作を変える利点と確認のコスト

開発者にとっての利点は、モデルに設定したサンプラーの値を経路ごとに合わせる負担が減ることだ。一方、値を指定していなかった既存の呼び出しでは、モデルごとの既定値に従うことで生成結果が変わる可能性がある。そのため、更新のコストは既存テストの基準を見直す作業へ移る。

結果を比較する際は、モデルと入力をそろえるだけでなく、リクエストにサンプラーの値を含めたかも確認したほうがよい。会話アプリでは、拒否を含む過去の回答を再送する流れも確認対象にできる。二つの修正の影響を生成設定と会話入力に分けて見ると、更新後に変わった動作を見つけやすい。

今回のバージョンの要点は、互換経路がモデルのサンプラー設定を尊重し、Responsesの会話入力を意味のある形で保持するようにしたことだ。