Open WebUI v0.8.11、マルチターン会話の設計が変わる

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
Open WebUI v0.8.11がリリースされた。今回の更新、地味に見えて実装への影響がけっこうある。

LLMまわりを触り始めたばかりだと、「Responses APIって何?」ってなるかもしれない。OpenAIのRealtime APIとは別で、ツール呼び出しを含む応答を扱う比較的新しいAPIエンドポイントだ。

ツール呼び出しの重複バグが直った



今まで、ストリーミング中にツールの再呼び出しが走ると、同じツールが二重に実行されることがあった。これ、自前でfunction callingを実装してると地味に死ぬやつだ。ログ見て「あれ、なんでこのAPI2回叩いてるんだ」って頭抱えた経験がある人、いると思う。今回のアップデートでOpenAIプロキシ側がストリーミング中の再呼び出しを正しくハンドルするようになった。自分でworkaroundを書いてる人は、そのコードを剥がせるかもしれない。

ステートフルセッションが実験的に使えるようになった



もう一個の変更が個人的には気になっている。`ENABLE_RESPONSES_API_STATEFUL`という環境変数を有効にすると、会話履歴をサーバー側に保持できる実験的機能が使えるようになった。`previous_response_id`でアンカーを打って、前の応答を参照しながら次のターンを進める仕組みだ。

今まで自分でやろうとすると、会話履歴をクライアント側でJSONとして持ち回して、毎回全部バックエンドに投げる実装が定番だった。トークン数がどんどん膨らんで、コストが嵩む問題もあった。サーバー側でステートを持てると、そのあたりの実装がシンプルになる可能性がある。

ただし、現時点では「実験的」という位置づけだ。プロダクションに突っ込むのは早い。まず自分のローカル環境で動かして、どういう挙動をするか確認してから判断したほうがいい。

ちょっと整理すると、今回のリリースで自分のコードに関係しそうなポイントはこのあたりだ。

  • ツール呼び出し重複のworkaroundを書いていたら削除を検討できる
  • 会話履歴をクライアント側で管理している実装は、ステートフルセッションへの移行を将来的に検討できる
  • 環境変数`ENABLE_RESPONSES_API_STATEFUL`はまず開発環境だけで試す


Open WebUIをLLMのプロキシとして使っているチームにとっては、地味だけど設計判断に影響するリリースだと思う。「どこまでクライアントが状態を持つか、どこからサーバーに任せるか」という切り分けは、スケールするほど後から変えにくくなる。

自分は来週、ローカルのOpen WebUI環境にこのバージョンを当てて、ステートフルセッションの挙動を実際にログ追いながら確認してみるつもりだ。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む