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

Ouverte
#1,305 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Breadswim y travaille déjà.

Depuis le 31/10/2026.

  • #1311 par @Breadswim — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
58/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
rust

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

现象
  • 触发条件:多模态模式;供应商 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 音频模型是否同样拒绝纯文本请求,未验证。
Langage dominant
Rust
Étoiles
3.7k
Forks
349
Merge moyen
2 j 14 h
PR mergées (30 j)
97

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Open-Less/openless

Toutes les issues de Open-Less/openless

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.