[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400

Aperta
#1,305 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@Breadswim ci sta già lavorando.

Dal 31/10/2026.

  • #1311 di @Breadswim — aperta

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
58/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

Start with the multimodal verification logic in openless-all/app/crates/openless-core/src/cloud_providers.rs, especially the text probe at lines 1973–1976 and the silent-WAV probe at lines 1964–1972. Check how the OpenAI audio model responds to a silent WAV and how probe results are interpreted; the issue leaves the model-detection or error-retry approach open. Done when the stated acceptance criteria are met and tests cover the probe request shape.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

现象
  • 触发条件:多模态模式;供应商 OpenAI(支持音频);模型 gpt-audio-1.5;接口地址 https://api.openai.com/v1;在「AI 服务与模型 → 多模态模型」点击「验证」。

  • 平台 / 版本:macOS,OpenLess 2.0.1+build.20261016 上实测复现;代码定位基于 beta 最新提交 85b243ab。2.0.2-Beta.3(c9f49c60)以来验证逻辑所在的 cloud_providers.rs 没有改动,预计同样复现(尚未在 Beta.3 上实测)。

  • 当前表现:验证失败。日志:

    [omni] POST https://api.openai.com/v1/chat/completions provider=openai model=gpt-audio-1.5 audio=false
    [omni] HTTP 400 body={
      "error": {
        "message": "This model requires that either input content or output modality contain audio.",
        "type": "invalid_request_error",
        "param": "model",
        "code": "invalid_value"
    

    同一份配置下,实际录音听写请求(audio=true)可以正常返回 HTTP 200(输出格式问题另见 #1304)。

初步定位

除专用转写模型外,验证只发纯文本探测:

https://github.com/Open-Less/openless/blob/85b243abd83abb295cd99e0ec31ba483c3f5c6fe/openless-all/app/crates/openless-core/src/cloud_providers.rs#L1973-L1976

gpt-audio-1.5 要求输入内容或输出模态里至少有一方包含音频,纯文本请求必然被拒。专用转写模型(Gemini Transcribe)的分支已经改用合成静音 WAV 探测:

https://github.com/Open-Less/openless/blob/85b243abd83abb295cd99e0ec31ba483c3f5c6fe/openless-all/app/crates/openless-core/src/cloud_providers.rs#L1964-L1972

影响
  • 配置正确的 gpt-audio-1.5 也显示验证失败,用户会误以为 Key、接口地址或模型填错了。
  • 设置页提示「通过不代表音频听写可用」只覆盖了「验证通过但听写不可用」,没有覆盖「听写可用但验证失败」。
建议接受标准
  • 对只接受音频输入的模型(至少 OpenAI gpt-audio*),验证改为携带一段短静音 WAV(与 Gemini Transcribe 分支一致),或在收到这个 400 后改用音频探测重试。
  • 配置正确的 gpt-audio-1.5 验证通过;Key 错误、模型不存在等真实错误仍然报错。
  • 其他可以用纯文本探测的多模态模型行为不变。
  • 测试覆盖探测请求的形态。
TODO / 不确定项
  • OpenAI 音频模型对静音 WAV 的返回形态未验证;Gemini Transcribe 分支把空结果视为通过,OpenAI 是否沿用同样处理需要确认。
  • 按模型名判断(如 gpt-audio*)还是按错误码回退,需要维护者确定。
  • gpt-4o-audio-preview 等其他 OpenAI 音频模型是否同样拒绝纯文本请求,未验证。
Lingua principale
Rust
Stelle
3.7k
Fork
349
Merge medio
2g 14h
PR unite (30g)
97

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Open-Less/openless

Tutte le issue di Open-Less/openless

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.