[{"data":1,"prerenderedAt":386},["ShallowReactive",2],{"\u002Fblog\u002Fqwen-vision-for-deepseek\u002F:en":3,"\u002Fblog\u002Fqwen-vision-for-deepseek\u002F-surround:en":285,"blog-all-posts:en":286},{"id":4,"title":5,"author":6,"body":10,"date":268,"description":269,"extension":270,"image":271,"locale":272,"meta":273,"minRead":154,"navigation":274,"original":275,"path":276,"pinned":275,"seo":277,"source":278,"sourceUrl":23,"stem":279,"tags":280,"updated":271,"__hash__":284},"blog\u002Fblog\u002Fqwen-vision-for-deepseek.en.md","Giving DeepSeek multimodality: the Qwen-3.7-Flash vision approach",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":260},"minimark",[13,28,31,36,39,42,46,54,57,61,64,183,186,199,207,211,229,233,236,239,243,246,249,256],[14,15,16],"blockquote",{},[17,18,19,20,27],"p",{},"Originally posted on ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fx.com\u002Frealchendahuang\u002Fstatus\u002F2085265465564336327",[25],"nofollow","X"," — 89k views, 600+ likes.",[17,29,30],{},"Lots of people complain that DeepSeek V4 Flash has no multimodal capability. It's a real gap — but there's no need to be married to one model.",[32,33,35],"h2",{"id":34},"the-problem","The problem",[17,37,38],{},"V4 Flash's text ability is maxed out, but it's helpless with images: screenshots, table images, UI design mockups, scanned documents — none of it works.",[17,40,41],{},"Multimodality is the price of \"cheap\" — the model needs visual encoders, parameters balloon, and costs climb.",[32,43,45],{"id":44},"the-fix-combine-models","The fix: combine models",[17,47,48,49,53],{},"I surveyed the most cost-effective vision models on the market, and the answer is ",[50,51,52],"strong",{},"Qwen-3.7-Flash",".",[17,55,56],{},"The cost of recognizing one image is negligible. Use it as the dedicated vision model, keep text reasoning on V4 Flash, and get the best of both.",[32,58,60],{"id":59},"how-to-combine-them","How to combine them",[17,62,63],{},"The simplest idea is \"routing\": input contains an image → vision model; pure text → V4 Flash.",[65,66,71],"pre",{"className":67,"code":68,"language":69,"meta":70,"style":70},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F pseudocode: route on demand\nfunction route(input) {\n  if (hasImage(input)) {\n    return qwenVision(input)   \u002F\u002F recognize image + extract key info\n  }\n  return deepseekV4Flash(input) \u002F\u002F text reasoning\n}\n","js","",[72,73,74,83,108,133,152,158,177],"code",{"__ignoreMap":70},[75,76,79],"span",{"class":77,"line":78},"line",1,[75,80,82],{"class":81},"sHwdD","\u002F\u002F pseudocode: route on demand\n",[75,84,86,90,94,98,102,105],{"class":77,"line":85},2,[75,87,89],{"class":88},"spNyl","function",[75,91,93],{"class":92},"s2Zo4"," route",[75,95,97],{"class":96},"sMK4o","(",[75,99,101],{"class":100},"sHdIc","input",[75,103,104],{"class":96},")",[75,106,107],{"class":96}," {\n",[75,109,111,115,119,122,124,127,130],{"class":77,"line":110},3,[75,112,114],{"class":113},"s7zQu","  if",[75,116,118],{"class":117},"swJcz"," (",[75,120,121],{"class":92},"hasImage",[75,123,97],{"class":117},[75,125,101],{"class":126},"sTEyZ",[75,128,129],{"class":117},")) ",[75,131,132],{"class":96},"{\n",[75,134,136,139,142,144,146,149],{"class":77,"line":135},4,[75,137,138],{"class":113},"    return",[75,140,141],{"class":92}," qwenVision",[75,143,97],{"class":117},[75,145,101],{"class":126},[75,147,148],{"class":117},")   ",[75,150,151],{"class":81},"\u002F\u002F recognize image + extract key info\n",[75,153,155],{"class":77,"line":154},5,[75,156,157],{"class":96},"  }\n",[75,159,161,164,167,169,171,174],{"class":77,"line":160},6,[75,162,163],{"class":113},"  return",[75,165,166],{"class":92}," deepseekV4Flash",[75,168,97],{"class":117},[75,170,101],{"class":126},[75,172,173],{"class":117},") ",[75,175,176],{"class":81},"\u002F\u002F text reasoning\n",[75,178,180],{"class":77,"line":179},7,[75,181,182],{"class":96},"}\n",[17,184,185],{},"A more advanced play is feeding the vision output straight into V4 Flash for further reasoning:",[187,188,189,193,196],"ol",{},[190,191,192],"li",{},"Have Qwen-3.7-Flash recognize the image and output a structured description",[190,194,195],{},"Hand the description + original question to DeepSeek V4 Flash together",[190,197,198],{},"V4 Flash reasons deeply on the description — writes code, summarizes",[17,200,201,202,206],{},"This way you get vision ",[203,204,205],"em",{},"and"," V4 Flash's cheap-and-fast.",[32,208,210],{"id":209},"good-use-cases","Good use cases",[212,213,214,217,220,223,226],"ul",{},[190,215,216],{},"Screenshot Q&A: throw in error screenshots and chat screenshots",[190,218,219],{},"Table \u002F document images into structured data",[190,221,222],{},"UI mockups into code",[190,224,225],{},"Extracting info from scanned invoices and contracts",[190,227,228],{},"Agents that need to \"see\" a screen",[32,230,232],{"id":231},"why-not-other-options","Why not other options",[17,234,235],{},"Pure vision LLMs (like the GPT family's multimodal models) are strong, but the price is what it is — not economical for daily batch work.",[17,237,238],{},"Qwen-3.7-Flash wins on cost-performance: recognition quality is sufficient, cost is nearly invisible, and you can run big batches without wincing.",[32,240,242],{"id":241},"summary","Summary",[17,244,245],{},"Model combination is the norm — don't expect one model to do everything.",[17,247,248],{},"Text workhorse V4 Flash (cheap, fast, huge context), vision supplement Qwen-3.7-Flash (cheap, good enough) — this combo is the best cost-performance option available right now. Patch what's missing rather than waiting for a \"does-everything-but-expensive\" model to arrive.",[17,250,251,252],{},"Related: ",[21,253,255],{"href":254},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash — hands-on review of the stable release",[257,258,259],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":70,"searchDepth":85,"depth":85,"links":261},[262,263,264,265,266,267],{"id":34,"depth":85,"text":35},{"id":44,"depth":85,"text":45},{"id":59,"depth":85,"text":60},{"id":209,"depth":85,"text":210},{"id":231,"depth":85,"text":232},{"id":241,"depth":85,"text":242},"2026-08-06","DeepSeek V4 Flash has no multimodality — what do you do for image understanding? After surveying the market, the most cost-effective option right now is Qwen-3.7-Flash: recognizing an image costs almost nothing, and pairing it with V4 Flash patches the gap.","md",null,"en",{},true,false,"\u002Fblog\u002Fqwen-vision-for-deepseek",{"title":5,"description":269},"x","blog\u002Fqwen-vision-for-deepseek.en",[281,282,283],"DeepSeek","Multimodality","Model review","b7Sa3aejlhdk34LLAhLRG8EUQM05w6exJ8xmdFT4568",[271,271],[287,294,303,311,315,323,330,338,346,352,354,362,369,377],{"path":288,"title":289,"description":290,"date":268,"minRead":160,"tags":291},"\u002Fblog\u002Fagent-harness-selection","After tinkering with Pi Agent, OMP, Codex, and ZCode, why I finally chose OpenCode + OpenChamber","A retrospective on choosing an Agent Harness: three criteria — GUI experience, vendor lock-in, and freedom for secondary development — ruled out Pi Agent, OMP, Codex, and ZCode, and finally settled on the OpenCode core + OpenChamber interface.",[292,293],"AI Agent","Tool selection",{"path":295,"title":296,"description":297,"date":298,"minRead":160,"tags":299},"\u002Fblog\u002Fcloudflare-broke-stack","2026 indie dev best practices: the Cloudflare \"broke-ass all-in-one\" stack","The zero-cost tech stack for indie developers: Codex for writing code, GitHub for version control, Stripe for payments, TanStack Start for frontend, Hono + Workers for backend, D1 for database, R2 for storage, KV for caching — all running on Cloudflare.","2026-06-15",[300,301,302],"Cloudflare","Indie development","Tech stack",{"path":304,"title":305,"description":306,"date":307,"minRead":160,"tags":308},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek's API has built-in web search — freeload the official search via the Responses API","DeepSeek built web search straight into the API: call deepseek-v4-flash through the Responses interface and declare the web_search tool. No third-party search engine integration, no search API key required.","2026-08-05",[281,309,310],"API","AI tools",{"path":254,"title":312,"description":313,"date":307,"minRead":179,"tags":314},"DeepSeek V4 Flash stable release, hands-on: cheap, fast, 1M context, built-in search","A few days deep-diving the stable DeepSeek V4 Flash release: aggressively cheap, lightning fast, 1M context, official built-in web search, fully open source. The one weakness is multimodality — but you can patch it by combining other models.",[281,283,310],{"path":316,"title":317,"description":318,"date":298,"minRead":319,"tags":320},"\u002Fblog\u002Ffree-cloudflare","How free users can squeeze Cloudflare dry — how far does the free tier actually get you?","Cloudflare's free tier can carry an entire personal internet infrastructure: DNS, CDN, Pages, Workers, KV, D1, R2, email, Tunnel, AI Gateway and more.",8,[300,321,322],"Free tier","Deployment",{"path":324,"title":325,"description":326,"date":327,"minRead":319,"tags":328},"\u002Fblog\u002Fmodel-harness-decoupling","The First-Party Harness Isn't Always the Best Answer: In the Open-Model Era, Pick Your Model and Harness Separately","Using Claude? Go Claude Code. In the open-model era that instinct deserves an upgrade. The first-party advantage is real, but training a good model and building a good harness are two different kinds of engineering — here's why models and harnesses are now separable choices, plus a positioning map of five harnesses.","2026-09-09",[292,329,293],"Harness",{"path":331,"title":332,"description":333,"date":327,"minRead":319,"tags":334},"\u002Fblog\u002Fopencode-productive-stack","Stable, Fast, Productive, Cheap: My AI Coding Stack, Documented","OpenCode + OpenChamber + two DeepSeek V4 Flash subscriptions: 15 projects running code simultaneously and the quota barely moved. The full configuration laid out — context pruning, layered memory, desktop automation, and the \"stick with the original pairing\" lesson.",[335,336,337],"OpenCode","AI Coding","Configuration",{"path":339,"title":340,"description":341,"date":342,"minRead":343,"tags":344},"\u002Fblog\u002Fproduct-faxin-principle","The founding-intention principle: why indie developers must learn to let go","Why do you set out? Who do you set out for? Which problem are you actually trying to solve? A product's sharpness comes from what you dare to cut.","2026-06-20",10,[345,301],"Product thinking",{"path":347,"title":348,"description":349,"date":342,"minRead":319,"tags":350},"\u002Fblog\u002Fproduct-pain-vs-itch","Don't get carried away when users say \"that's awesome\": pain points vs. itch points","Verbal approval is worth nothing. There's only one hard standard for judging demand: what the user is willing to pay.",[345,351],"Demand judgment",{"path":276,"title":5,"description":269,"date":268,"minRead":154,"tags":353},[281,282,283],{"path":355,"title":356,"description":357,"date":358,"minRead":135,"tags":359},"\u002Fblog\u002Fsub-store-cloudflare","I moved my proxy subscription aggregation to Cloudflare","Merge multiple proxy services plus your own nodes into one single subscription, with routing rules configured server-side — clients just subscribe.","2026-06-28",[300,360,361],"Circumvention","Open-source project",{"path":363,"title":364,"description":365,"date":327,"minRead":179,"tags":366},"\u002Fblog\u002Ftui-cognitive-bandwidth","TUI Is Killing Your Cognitive Bandwidth: Time to Shatter the \"Geek Filter\" in AI Coding","A pile of AI coding agents are rushing to ship TUIs, stuffing interaction back into the 1980s terminal paradigm and calling it \"immersive\" and \"respectful of programmers.\" This piece breaks down the three mechanisms by which TUI systematically lowers your cognitive bandwidth — and why Web UI is the right answer.",[336,367,368],"Interaction design","Essay",{"path":370,"title":371,"description":372,"date":373,"minRead":160,"tags":374},"\u002Fblog\u002Fvalue-not-external","Debating whether something has value is itself worthless","Our value is not defined by anyone. In the age of AI, how should we understand ourselves?","2026-06-18",[375,376],"AI thinking","Humanistic essay",{"path":378,"title":379,"description":380,"date":381,"minRead":382,"tags":383},"\u002Fblog\u002Fx-growth-1000-followers","Gained 1000+ followers in a little over a day — here's what I did","In June I ran my X account seriously and gained 1000+ followers in a little over a day. This post records what I did and the feedback I got.","2026-06-16",12,[384,385],"X operations","Content growth",1789752313210]