WorkBuddy 直连 DeepSeek v4 Flash,一发截图就崩?我们在网关层一招根治

DeepSeek v4 Flash 便宜好用,已经成为企业级大模型的事实标准------谁没接上,谁就掉队。WorkBuddy 则在企业办公领域一骑绝尘,稳坐第一生产力品牌的位置。二者结合,本该如虎添翼。

但真把自建 DeepSeek v4 Flash 推理服务接进 WorkBuddy,你会发现一个令人抓狂的问题:对话框里一发截图,必报错。

折腾各种姿势,结果都是这样:

发截图是刚需行为------总不能每回都先存盘再贴路径。下面看四川汉扬智能自研的 Tokengine 平台,是如何优雅地解决这个问题的。

四川汉扬智能研发的 Tokengine 平台,是上市公司扬电科技在人工智能领域的重要战略布局,目前已开启公测。平台基于自有算力、自研推理框架搭建了 MaaS Token 工厂,并外接第三方供应商提供灵活的算力补充。


一、为什么截图不行?

众所周知,DeepSeek v4 Flash 是纯文本大模型,本身不识图。

DeepSeek 官方 App 专门出了"识图模式"------但这并不意味着大模型本身识图了。它的做法是:网关层面拦截用户发送的图片,转给其他识图服务解析,再把解析出的文本送回 DSv4 主模型处理。

同样的道理,WorkBuddy 内置的 DeepSeek v4 Flash 能识图,也不是模型自身的能力,而是前置网关做了同样的事。总之,DeepSeek v4 Flash 大模型本身从头到尾没收到过图片。

而当你直连自建推理服务、在 WorkBuddy 里直接发截图时,vLLM 推理服务收到的 content 数组里赫然躺着 image_url,于是必然抛出 400 错误:

csharp 复制代码
deepseek-ai/DeepSeek-V4-Flash is not a multimodal model

对应的请求长这样:

json 复制代码
POST /v1/chat/completions
{
  "model": "deepseek-v4-flash",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "这是什么?" },
        { "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
          }
        }
      ]
    }
  ],
  "stream": true,
  "temperature": 0.7,
  "max_tokens": 1024
}

多模态请求里,content 是数组而非字符串;粘贴的截图就藏在 image_url 字段里。vLLM 一看就知道:这个模型不吃图,拒绝。


二、各路博主的尝试与弯路

网上有不少人尝试各种"魔法"来绕过这个问题,最主流的一条路是:

使用识图 Skill 外挂视觉大模型。 WorkBuddy 内部有一个名为 Vision 的 Skill,外接视觉大模型,设计初衷是解析图片、将结果文本发送给主模型:

vision:让没有原生 vision 能力的模型获得识图能力。当用户发送图片、分享图片路径,或要求分析/描述/识别图片内容时触发。

听起来能解决问题,但实际上这条路走不通

原因在于:Skill 是作为提示词上下文的一部分存在的,它并不具备在大模型处理请求之前拦截信息的能力 。WorkBuddy 对话框收到截图后,会连同图片一起发给大模型------用不用 Skill,DSv4 收到的请求里都带着 image_url 字段,该报 400 还是报 400。

不过,识图 Skill 虽然解决不了直接发截图的问题,却提供了一条关键思路:

在 WorkBuddy 对话框里,不要发截图,而是指定图片路径。


三、为什么给图片路径就行?

核心在于 WorkBuddy 是 Agent 架构,而非简单的 API 透传:

  1. 在 WorkBuddy 对话框指定图片地址(如 D:/xxx.png),并加载识图 Skill;
  2. DSv4 收到的是一段纯文本路径字符串 D:/xxx.png,能正常处理;
  3. DSv4 识别到这是图片任务,会通知 WorkBuddy 调用识图 Skill 解析图片,将解析出的文本注入上下文,再送回 DSv4 做进一步推理。

核心证据见下图红框------主模型收到的就是路径文本,而非图片 payload:

简单说:只要图片不以 image_url 形式出现在请求里,DSv4 就不会炸。

但问题是------用户不会每次都乖乖存盘贴路径。截图是刚需。


四、网关层旁路解析:优雅且透明

既然 Agent 端的方案不够优雅,那就到服务端做手脚。

汉扬智能的 MaaS 平台在推理服务前面部署了 Higress AI 网关,整体链路如下:

复制代码
WorkBuddy → Higress AI 网关 → LLM Router Service → vLLM 推理服务

我们基于 Higress AI 网关自研了 ai-image-reader WASM 插件。它会在 DSv4 收到请求之前 介入:对直接截图产生的 image_url 请求,先转发给视觉大模型解析,再将解析出的文本注入原始上下文,最后送到 DSv4 处理。

流程如下:

插件支持白名单配置:只对特定模型开启旁路解析逻辑,不影响其他多模态模型的正常调用。我们已经向 Higress 官方提交了 PR,申请将这个插件贡献到开源社区。

实际效果------截图直接发,不再报错:


五、复盘

本文的源头是一个真实的用户反馈:在 WorkBuddy 上直连自建 DeepSeek v4 Flash 推理服务时,无法发送截图。

DeepSeek v4 Flash 是纯文本模型,直连时任何携带 image_url 的请求都会被 vLLM 以 400 拒绝。WorkBuddy 内置版本之所以能识图,靠的是官方前置网关的拦截转译------而我们自建服务没有这一层。

最终落地了两套方案:

方案 体验
Agent 端配置视觉 Skill,改为指定图片路径 能用,但不够优雅,门槛高,用户不可能每次都存盘贴路径
服务端网关层做旁路解析(ai-image-reader 插件) 优雅、透明,用户无感知,直接截图即可

方案②的思路并不复杂:把官方内置大模型在网关层做的事,在自建链路上复刻一遍。 用户不需要改任何习惯,截图照发不误,视觉解析在网关侧自动完成。

这就是汉扬智能自研推理框架向官方能力对齐的一次实践------积极响应真实用户需求,让自建大模型服务也能拥有"开箱即用"的体验。

相关推荐
用户239526180101 小时前
别只会画流程图!彻底搞懂 Spring AI Alibaba Graph 的节点、边与 State
后端
掘金者阿豪1 小时前
接口数据传输优化实战:JSON Gzip 与 Protobuf 的深度对比
后端
用户608186527901 小时前
Avalonia UI 样式进阶实战:外置样式 + MVVM 主题切换 + 样式优先级全解析
后端
掘金者阿豪1 小时前
达梦VS金仓:真正做一次Oracle迁移,才知道工具链有多重要
后端
刘立军1 小时前
中心化配置与 I18n:严格禁止 AI 魔法值与硬编码参数
人工智能·后端·架构
Y001112361 小时前
springboot+vue项目实战
vue.js·spring boot·后端
Csvn1 小时前
📊 SQL 入门 Day 25:查询优化实战 —— 从 EXPLAIN 到索引的完整排查流
后端·sql
用户298698530141 小时前
将 Excel 表格转换为图片的三种实用方法
人工智能·后端·excel
阿源聊AI1 小时前
给能退款、改库、跑代码的 AI Agent 加三道安全闸:一次零信任 Demo 实测
人工智能·后端