ホームへ戻る

GitHub Repo

Open WebUIコミュニティが切り詰め状態の修正を提案、Responses接続で未完了の回答が正常終了として扱われる可能性

10月31日のOpen WebUIコミュニティからの報告によると、Responses API接続で非ストリーミング応答を処理する際、切り詰めを示すシグナルが失われ、不完全な回答が正常に終了したものとしてクライアントに扱われる可能性があります。関連する修正案は更新されましたが、確認時点ではまだマージされていません。

NASA · Public domain · Image source
zh-Hant

Open WebUIコミュニティは10月31日、API互換性の不具合を報告しました。モデル出力がトークン上限に達した場合、Responses API接続経由で転送される非ストリーミング回答でも、finish_reason: "stop"が返される可能性があります。報告者は、v0.12.5と指定された開発版のソースコードを対象に、関数単位で再現したと述べています。これは、完全なデプロイ環境でのエンドツーエンドテストではありません。不具合報告

報告の対象は、stream: falseで、モデル接続タイプがResponsesに設定されたリクエストです。上流の結果には本来、status: "incomplete"と出力上限に達した理由が含まれていました。しかし変換関数は、ツール呼び出しの有無だけで終了理由を決めており、未完了状態を読み取っていませんでした。報告者が同じ内容で完了状態と未完了状態を切り替えたところ、どちらもstopになりました。Anthropic互換エンドポイントを経由してさらに変換すると、end_turnにもなりました。再現の詳細

こうしたフィールドは、アプリケーションの後続処理を直接左右します。Anthropicの公式ドキュメントでは、end_turnは自然な完了、max_tokensは出力上限への到達を表します。また、後者の場合は上限を引き上げるか、回答を続けることを推奨しています。そのため、ゲートウェイがこの違いを失わせると、終了理由に応じて続きを生成する処理が早期に停止する可能性があります。これはプロトコルの意味に基づくエンジニアリング上のリスクであり、大規模なデプロイ環境での障害を示す証拠は確認されていません。停止理由のドキュメント

関連するPR #33394は10月31日に更新され、未完了状態を読み取る分岐が追加されました。内容フィルターによる停止はcontent_filterに、それ以外の未完了理由はlengthにマッピングされます。同じ提案では、用量フィールドとストリーム形式の変換にも対応しています。つまり、当初の報告で指摘された非ストリーミング時の欠落は、現在の修正案に含まれています。ただしPRはまだオープンであり、正式リリースで修正済みとは見なせません。修正提案

運用担当者は、マージとリリースの状況を追跡し、実際に使用しているエンドポイントを低い出力上限でテストして、回答が切り詰められた際に続きの生成や警告が行われることを確認してください。検証では内容フィルターとツール呼び出しも対象にし、テキストが正常に表示されることだけを確かめて終了状態がエージェントの処理に与える影響を見落とさないようにする必要があります。

出典

  1. Open WebUI issue #33445:非串流截斷回覆的結束原因錯誤
  2. Open WebUI PR #33394:Responses API 用戶端回覆相容性修補
  3. Stop reasons and fallback