Codex CLI で画像が Invalid request になる問題を修正しました
Codex CLI で画像を扱うと、Invalid request というエラーで処理が続かない問題がありました。/v1/responses 側を修正して解消しています。hai.config.toml や API キーの変更は不要です。
症状
Codex CLI から qwen3.8-27b-uncensored に画像を読み込ませると、次のようになっていました。
- Codex の画面には
Viewed Imageまで正常に表示される - その直後に
{"error":{"type":"api_error","message":"Invalid request"}}が返る - 同じ画像を
/v1/chat/completionsにimage_urlで直接送ると正常に認識される
「モデルの画像認識は動くのに、Codex 経由だけ失敗する」という切り分けになるため、設定の問題に見えていました。原因は HAI 側の Responses API にありました。
条件は wire_api = "responses"(Codex CLI の既定)で、画像を伴うリクエストです。テキストのみの利用は影響を受けていません。
原因
Codex CLI は画像を 2 つの経路で送ります。
- 起動時に
--imageで添付する経路 view_imageツールで会話の途中に読み込む経路(画面にViewed Imageと表示されるもの)
このうち 2 の経路では、画像がツール実行結果として送られてきます。qwen3.8-27b-uncensored を動かしている推論基盤は、ツール実行結果をテキストとしてのみ受け付ける仕様のため、ここに画像が含まれるとリクエスト全体が拒否されていました。
拒否は HAI の手前で起きており、モデルには届いていません。Viewed Image の直後に失敗していたのは、Codex が読み込んだ画像を次のリクエストで送り返した時点にあたるためです。
1 の経路は従来どおり動作していました。/v1/chat/completions と /v1/messages も影響を受けていません。
対応
Responses API がリクエストを中継する際に、ツール実行結果に含まれる画像を、直後のメッセージへ移すようにしました。画像は破棄せず、そのままモデルへ渡ります。
Codex CLI で view_image を使った場合も、画像の内容を踏まえた応答が返るようになりました。
ご対応いただくこと
ありません。HAI 側の修正のみで解消しており、hai.config.toml・モデル ID・API キーはそのままご利用いただけます。
Codex CLI 側の設定も従来どおりです。
model = "qwen3.8-27b-uncensored"
model_provider = "hai"
[model_providers.hai]
name = "HAI"
base_url = "https://hai-api.hcloud.ltd/v1"
env_key = "HAI_API_KEY"
wire_api = "responses"
注意点
qwen3.8-27b-uncensoredの画像認識の品質は十分に検証されていません。 コンテキスト拡大のお知らせでお伝えしているとおり、テキスト向けの無検閲派生に派生元モデルの画像認識構成を組み合わせたものです。画像理解が主目的の場合はqwen3.8-27bかgemma-4-31b-itを推奨します- 画像を受け付けないモデルに画像を送った場合は、従来どおりエラーを返します
ご不便をおかけしたことをお詫び申し上げます。セットアップ手順はドキュメント、単価とモデル一覧は料金ページに掲載しています。