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

Aberta
#1,305 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@Breadswim já está trabalhando nisso.

Desde 31/10/2026.

  • #1311 de @Breadswim — aberto

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
58/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
rust

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

现象
  • 触发条件:多模态模式;供应商 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 音频模型是否同样拒绝纯文本请求,未验证。
Linguagem predominante
Rust
Estrelas
3.7k
Forks
349
Merge médio
2d 14h
PRs com merge (30d)
97

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Open-Less/openless

Todas as issues de Open-Less/openless

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.