Skip to content

fix(provider): keep video_url content in OpenAI Responses conversion - #1149

Open
3316891527 wants to merge 1 commit into
AAswordman:devfrom
3316891527:fix/openai-responses-keep-video-url
Open

fix(provider): keep video_url content in OpenAI Responses conversion#1149
3316891527 wants to merge 1 commit into
AAswordman:devfrom
3316891527:fix/openai-responses-keep-video-url

Conversation

@3316891527

Copy link
Copy Markdown
Contributor

变更说明 / Description

OpenAI Responses 转换漏了 video_url 分支,开启视频解析后上传的视频会被静默丢掉,请求体只剩纯文本。这次把 Chat Completions 的 video_url 和已经是 Responses 形态的 input_video 都转成 input_video

背景与动机 / Context and motivation

Fixes #1146. OpenAIProviderenable_direct_video_processing 开启时会把视频打成 {type:"video_url", video_url:{url:"data:video/...;base64,..."}}OpenAIResponsesPayloadAdapter.convertMessageContentForResponses 只处理了文本/图片/音频/文件,video_urlelse 后因没有 text 字段被丢掉。

改动范围 / Changes

  • OpenAIResponsesPayloadAdaptervideo_url / input_video 分支,输出 {type:"input_video", video_url:<url string>}
  • 同时接受 nested {url} 和直接字符串 URL;空 URL 不发空块
  • 新增 OpenAIResponsesVideoInputTest 覆盖这三种形态和空 URL 丢弃
  • 不改 Deepseek Responses;不改 Chat Completions 封装

兼容性与风险 / Compatibility and risks

只影响 OpenAI Responses / OpenAI Responses Generic 且开了视频解析的请求体。未开开关时不会生成 video_url。后端若不认 input_video,可能从「静默丢视频」变成显式拒绝,这是预期行为。

关联 Issue / Related issue

Fixes #1146

验证方式 / Verification

检查或命令:
- OpenAIResponsesVideoInputTest(JVM unit)
- fork 上触发 android-tests.yml、android-build.yml (assembleDebug)

环境与变体:
- 无可用视频理解模型,未做真机视频上传测试

结果:
- 转换单测覆盖:Chat Completions video_url 对象 -> input_video;已有 input_video 字符串/nested url 保留;空 URL 丢弃且不影响文本块
- 真机视频理解:未跑,无可用模型

检查清单 / Checklist

  • 已记录可复现验证和未运行项原因
  • 目标分支为 dev
  • 工作流已在工作分支上触发
  • diff 无无关/临时/敏感内容

OpenAIProvider already wraps video attachments as Chat Completions
video_url parts when enable_direct_video_processing is on. The Responses
adapter only mapped text/image/audio/file, so those parts fell through
to else and were dropped because they have no text field.

Map video_url and input_video onto Responses input_video, accepting both
nested {url} objects and string URLs. Deepseek is left unchanged.

Fixes AAswordman#1146
@3316891527
3316891527 marked this pull request as ready for review September 8, 2026 15:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant