{"id":3415,"date":"2026-05-04T20:56:35","date_gmt":"2026-05-04T20:56:35","guid":{"rendered":"https:\/\/deepseek.international\/?p=3415"},"modified":"2026-05-04T20:56:37","modified_gmt":"2026-05-04T20:56:37","slug":"why-we-actually-switched-from-openai-to-deepseek-and-then-had-to-rethink-parts-of-it","status":"publish","type":"post","link":"https:\/\/deepseek.international\/zh\/why-we-actually-switched-from-openai-to-deepseek-and-then-had-to-rethink-parts-of-it\/","title":{"rendered":"Why We Actually Switched From OpenAI to DeepSeek (and then had to rethink parts of it)"},"content":{"rendered":"<p>I wouldn\u2019t frame it as some big strategic migration. It didn\u2019t feel like that while it was happening.<\/p>\n\n\n\n<p>It was more like\u2026 small annoyances stacking up inside our OpenAI setup until one day it became obvious we were spending more time fighting the system than using it.<\/p>\n\n\n\n<p>And even then, we didn\u2019t fully \u201cswitch.\u201d We just started routing certain workflows through DeepSeek. Then more. Then eventually most of them.<\/p>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/deepseek.international\/zh\/the-man-behind-deepseek-liang-wenfeng\/\" rel=\"noreferrer noopener\">The Man Behind DeepSeek (Liang Wenfeng)<\/a><\/p>\n\n\n\n<p>But the reasons weren\u2019t the ones you usually see in comparison posts.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The breaking point wasn\u2019t cost.<\/p>\n\n\n\n<p>Everyone assumes that. It wasn\u2019t.<\/p>\n\n\n\n<p>It was context collapse.<\/p>\n\n\n\n<p>We were running long, multi-step workflows\u2014mostly content and research pipelines\u2014and somewhere around step three or four, the outputs would start losing alignment with the original input.<\/p>\n\n\n\n<p>Not dramatically. Just subtly.<\/p>\n\n\n\n<p>A constraint would disappear. A tone instruction would get softened. A structural rule would get ignored.<\/p>\n\n\n\n<p>If you looked at any single output, it seemed fine.<\/p>\n\n\n\n<p>But if you compared it to the original brief, it had drifted.<\/p>\n\n\n\n<p>That drift compounds over chained steps.<\/p>\n\n\n\n<p>By the time you hit the final output, it\u2019s still coherent, still readable\u2026 just not what you asked for.<\/p>\n\n\n\n<p>That\u2019s harder to catch than a failure.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>We tried fixing it inside the OpenAI stack.<\/p>\n\n\n\n<p>Shorter prompts. More explicit constraints. Re-injecting context at every step.<\/p>\n\n\n\n<p>That helped, but it also made everything heavier.<\/p>\n\n\n\n<p>Prompts got bloated. Latency went up. Costs crept up\u2014not because of token pricing, but because of how much repetition we needed just to maintain alignment.<\/p>\n\n\n\n<p>It started feeling like we were constantly reminding the model what we had already told it.<\/p>\n\n\n\n<p>That\u2019s when DeepSeek came into the picture.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The first thing we noticed wasn\u2019t intelligence. It was tolerance.<\/p>\n\n\n\n<p>DeepSeek handled messy, overloaded prompts without immediately collapsing into summaries or skipping details.<\/p>\n\n\n\n<p>We could throw in:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>raw client notes<\/li>\n\n\n\n<li>conflicting tone guidelines<\/li>\n\n\n\n<li>half-structured outlines<\/li>\n\n\n\n<li>previous draft fragments<\/li>\n<\/ul>\n\n\n\n<p>\u2026and it would at least attempt to reconcile everything instead of pruning aggressively.<\/p>\n\n\n\n<p>That mattered more than accuracy in the early stages.<\/p>\n\n\n\n<p>Because at that point, we just needed the system to <em>hold onto the mess<\/em> long enough for us to shape it.<\/p>\n\n\n\n<p>OpenAI\u2014especially in GPT-5.5\u2014felt more optimized for clean inputs.<\/p>\n\n\n\n<p>Which is great in theory.<\/p>\n\n\n\n<p>But most real inputs aren\u2019t clean.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>So we started shifting ingestion workflows to DeepSeek.<\/p>\n\n\n\n<p>Just that part.<\/p>\n\n\n\n<p>And it worked well enough that we pushed further.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Where things got complicated was agent behavior.<\/p>\n\n\n\n<p>We had already built a decent amount of infrastructure around OpenAI\u2019s agent patterns. Predictable tool usage, relatively consistent step execution, fewer surprises.<\/p>\n\n\n\n<p>DeepSeek agents\u2026 don\u2019t behave like that.<\/p>\n\n\n\n<p>They\u2019re more opportunistic.<\/p>\n\n\n\n<p>Sometimes that\u2019s useful. They\u2019ll find shortcuts or combine steps in ways that actually improve efficiency.<\/p>\n\n\n\n<p>Other times, they just skip things.<\/p>\n\n\n\n<p>Not because they can\u2019t do them, but because they decide they\u2019re unnecessary.<\/p>\n\n\n\n<p>That\u2019s not something you can easily guard against with prompt instructions.<\/p>\n\n\n\n<p>We had one case where a validation step was consistently skipped\u2014not always, just often enough to be a problem.<\/p>\n\n\n\n<p>The agent \u201cdecided\u201d the previous step already ensured quality.<\/p>\n\n\n\n<p>It didn\u2019t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>We tried tightening control.<\/p>\n\n\n\n<p>Explicit step-by-step instructions, no deviation allowed.<\/p>\n\n\n\n<p>That worked briefly.<\/p>\n\n\n\n<p>Then the agents started following instructions too literally and breaking on edge cases.<\/p>\n\n\n\n<p>There\u2019s no stable middle ground yet.<\/p>\n\n\n\n<p>You either get initiative or compliance, and both come with tradeoffs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Memory 2.0 was another factor in the switch, but not in the way we expected.<\/p>\n\n\n\n<p>OpenAI\u2019s memory handling had improved, but it still felt somewhat scoped and cautious.<\/p>\n\n\n\n<p>DeepSeek\u2019s memory layer felt more\u2026 aggressive.<\/p>\n\n\n\n<p>It would store things quickly, sometimes after a single interaction.<\/p>\n\n\n\n<p>At first, that seemed powerful.<\/p>\n\n\n\n<p>Less repetition, more personalization, better continuity.<\/p>\n\n\n\n<p>But it didn\u2019t take long before it started storing the wrong signals.<\/p>\n\n\n\n<p>A one-time preference would become permanent.<\/p>\n\n\n\n<p>A temporary correction would shape future outputs indefinitely.<\/p>\n\n\n\n<p>We had a case where a single formatting tweak\u2014something minor\u2014ended up influencing every subsequent output for that client.<\/p>\n\n\n\n<p>And not subtly.<\/p>\n\n\n\n<p>It basically rewrote our default structure without asking.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>There\u2019s no clean UI for managing that kind of memory drift.<\/p>\n\n\n\n<p>You can reset it, but you can\u2019t really <em>\u9886\u4f1a<\/em> it.<\/p>\n\n\n\n<p>So we started building workarounds.<\/p>\n\n\n\n<p>Manual resets. Memory \u201ccheckpoints.\u201d Even injecting counter-instructions to override stored behavior.<\/p>\n\n\n\n<p>It worked, but it felt fragile.<\/p>\n\n\n\n<p>Like we were constantly negotiating with a system that had its own interpretation of history.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>One thing DeepSeek did better, though, was early-stage synthesis.<\/p>\n\n\n\n<p>When inputs were incomplete or contradictory, it didn\u2019t freeze or over-sanitize.<\/p>\n\n\n\n<p>It would generate something usable, even if imperfect.<\/p>\n\n\n\n<p>That saved time.<\/p>\n\n\n\n<p>Not because the outputs were perfect, but because they gave us something to react to.<\/p>\n\n\n\n<p>OpenAI often required cleaner inputs to reach that same starting point.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The switch accelerated after we hit scaling issues on the OpenAI side.<\/p>\n\n\n\n<p>Not performance scaling\u2014behavioral scaling.<\/p>\n\n\n\n<p>When we ran larger batches, we noticed increased variability in outputs.<\/p>\n\n\n\n<p>Not catastrophic, just inconsistent.<\/p>\n\n\n\n<p>We initially blamed our own system.<\/p>\n\n\n\n<p>Then we ran the same batches through DeepSeek.<\/p>\n\n\n\n<p>Different issues, but slightly more stable in terms of structure retention.<\/p>\n\n\n\n<p>That was enough to justify shifting more workflows.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>But here\u2019s the part that doesn\u2019t show up in most \u201cwe switched\u201d stories:<\/p>\n\n\n\n<p>We didn\u2019t get a clean upgrade.<\/p>\n\n\n\n<p>We traded one set of problems for another.<\/p>\n\n\n\n<p>With OpenAI, the friction was around maintaining context and avoiding drift over long chains.<\/p>\n\n\n\n<p>With DeepSeek, the friction moved into:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>agent unpredictability<\/li>\n\n\n\n<li>memory misalignment<\/li>\n\n\n\n<li>occasional format instability under load<\/li>\n<\/ul>\n\n\n\n<p>It wasn\u2019t better. It was different.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>There was also this subtle psychological shift.<\/p>\n\n\n\n<p>With OpenAI, we trusted the system more, even when it was wrong.<\/p>\n\n\n\n<p>With DeepSeek, we trusted it less\u2014but it sometimes produced better intermediate results.<\/p>\n\n\n\n<p>That changes how you design workflows.<\/p>\n\n\n\n<p>We started inserting human checkpoints earlier, not because outputs were worse, but because behavior was less predictable.<\/p>\n\n\n\n<p>That reduced efficiency.<\/p>\n\n\n\n<p>But increased confidence.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>At one point, we tried going back.<\/p>\n\n\n\n<p>Running a hybrid system.<\/p>\n\n\n\n<p>DeepSeek for ingestion and synthesis, OpenAI (GPT-5.5) for refinement and validation.<\/p>\n\n\n\n<p>On paper, that should have worked.<\/p>\n\n\n\n<p>In practice, context translation became a problem.<\/p>\n\n\n\n<p>What DeepSeek considered \u201cresolved\u201d context didn\u2019t always map cleanly into OpenAI\u2019s expectations.<\/p>\n\n\n\n<p>Subtle differences in interpretation would show up in the final output.<\/p>\n\n\n\n<p>Nothing obviously broken, just\u2026 off.<\/p>\n\n\n\n<p>And those small misalignments add up.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>There was one incident that kind of locked in the switch.<\/p>\n\n\n\n<p>We had a batch processing job\u2014about 80 items.<\/p>\n\n\n\n<p>Midway through, the OpenAI pipeline started truncating parts of the structure.<\/p>\n\n\n\n<p>Not failing. Just compressing.<\/p>\n\n\n\n<p>We didn\u2019t catch it immediately because outputs looked fine at a glance.<\/p>\n\n\n\n<p>But key sections were missing.<\/p>\n\n\n\n<p>We reran the same batch through DeepSeek.<\/p>\n\n\n\n<p>It preserved structure more consistently, even if some sections were rougher.<\/p>\n\n\n\n<p>That was enough.<\/p>\n\n\n\n<p>We shifted the entire pipeline.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Not everything improved.<\/p>\n\n\n\n<p>Latency was less predictable.<\/p>\n\n\n\n<p>Some runs were fast. Others stalled without clear reason.<\/p>\n\n\n\n<p>We never fully isolated why.<\/p>\n\n\n\n<p>It didn\u2019t block us, but it made planning harder.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Another issue was retries.<\/p>\n\n\n\n<p>DeepSeek sometimes requires more retries to get a clean output in agent chains.<\/p>\n\n\n\n<p>Not because it fails outright, but because intermediate steps drift.<\/p>\n\n\n\n<p>And retries are expensive\u2014not just in cost, but in time and system complexity.<\/p>\n\n\n\n<p>We had to redesign parts of our pipeline to make retries more modular.<\/p>\n\n\n\n<p>Instead of rerunning everything, we tried isolating failure points.<\/p>\n\n\n\n<p>That helped, but only partially.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>If I had to explain the switch in one sentence, it wouldn\u2019t be \u201cDeepSeek is better.\u201d<\/p>\n\n\n\n<p>It would be:<\/p>\n\n\n\n<p>DeepSeek tolerated the kind of messy, real-world inputs we were dealing with, and OpenAI didn\u2019t\u2014at least not without a lot of overhead.<\/p>\n\n\n\n<p>But that tolerance comes with instability.<\/p>\n\n\n\n<p>And you feel that instability more as your system grows.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>There are still parts of our stack that use OpenAI.<\/p>\n\n\n\n<p>Mostly for tasks where predictability matters more than flexibility.<\/p>\n\n\n\n<p>Structured transformations. Final formatting. Some validation layers.<\/p>\n\n\n\n<p>We didn\u2019t fully leave.<\/p>\n\n\n\n<p>We just stopped relying on it as the core.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The thing that surprised me most is how much the decision wasn\u2019t about model capability.<\/p>\n\n\n\n<p>It was about behavior under imperfect conditions.<\/p>\n\n\n\n<p>Benchmarks don\u2019t capture that.<\/p>\n\n\n\n<p>They don\u2019t show what happens when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>inputs are inconsistent<\/li>\n\n\n\n<li>instructions conflict<\/li>\n\n\n\n<li>workflows chain across multiple steps<\/li>\n\n\n\n<li>memory starts drifting<\/li>\n\n\n\n<li>agents make decisions you didn\u2019t explicitly allow<\/li>\n<\/ul>\n\n\n\n<p>That\u2019s where the real differences show up.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>And honestly, I\u2019m not sure we\u2019d make the same decision again today.<\/p>\n\n\n\n<p>Not because DeepSeek failed us, but because the tradeoffs are still shifting.<\/p>\n\n\n\n<p>GPT-5.5 has improved in some areas.<\/p>\n\n\n\n<p>DeepSeek has changed in others.<\/p>\n\n\n\n<p>The gap isn\u2019t static.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Some of the questions we kept asking during this whole transition:<\/p>\n\n\n\n<p>Why does DeepSeek hold context better but struggle with consistency across steps?<br>Feels like it prioritizes retention over constraint enforcement, but that\u2019s more of an observation than a confirmed behavior.<\/p>\n\n\n\n<p>Is agent unpredictability a feature or a bug?<br>Depends on the use case. For exploration, it\u2019s useful. For production pipelines, it\u2019s risky.<\/p>\n\n\n\n<p>Why does Memory 2.0 store low-signal events so aggressively?<br>No clear answer. It seems optimized for personalization, but without strong filtering.<\/p>\n\n\n\n<p>Did switching actually save time?<br>In some parts of the workflow, yes. In others, we just moved the effort somewhere else.<\/p>\n\n\n\n<p>Is a hybrid stack the real answer?<br>Maybe. But it introduces its own complexity, especially around context alignment.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>This isn\u2019t a clean \u201cwe switched and everything improved\u201d story.<\/p>\n\n\n\n<p>It\u2019s more like we moved to a system that fits our inputs better, but requires more vigilance to keep stable.<\/p>\n\n\n\n<p>And that tradeoff\u2026 still feels unresolved.<\/p>\n\n\n\n<p>Some days it\u2019s clearly the right choice.<\/p>\n\n\n\n<p>Other days we spend hours debugging something that didn\u2019t used to break.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>If you\u2019re considering a similar switch, the only thing I\u2019d say is:<\/p>\n\n\n\n<p>Don\u2019t evaluate models in isolation.<\/p>\n\n\n\n<p>Test them inside your actual workflow.<\/p>\n\n\n\n<p>With your real inputs.<\/p>\n\n\n\n<p>Under real load.<\/p>\n\n\n\n<p>That\u2019s where the differences show up.<\/p>\n\n\n\n<p>And they\u2019re rarely the ones highlighted in feature comparisons.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a href=\"https:\/\/www.datacamp.com\/blog\/deepseek-vs-openai\" target=\"_blank\" rel=\"noopener\">DeepSeek vs. OpenAI: Comparing the New AI Titans &#8211; DataCamp<\/a><\/p>\n\n\n\n<p>We didn\u2019t switch because DeepSeek was perfect.<\/p>\n\n\n\n<p>We switched because it failed in ways that were easier for us to work with.<\/p>\n\n\n\n<p>That\u2019s not a strong endorsement.<\/p>\n\n\n\n<p>But it\u2019s the most honest version of what happened.<\/p>","protected":false},"excerpt":{"rendered":"<p>We didn\u2019t switch because DeepSeek was \u201cbetter.\u201d We switched because OpenAI started getting in the way of a very specific workflow\u2014and then DeepSeek created a different set of problems.<\/p>","protected":false},"author":91,"featured_media":1372,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_gspb_post_css":"","iawp_total_views":0,"footnotes":""},"categories":[24],"tags":[],"class_list":["post-3415","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deepseek-stories"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/posts\/3415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/users\/91"}],"replies":[{"embeddable":true,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/comments?post=3415"}],"version-history":[{"count":2,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/posts\/3415\/revisions"}],"predecessor-version":[{"id":3417,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/posts\/3415\/revisions\/3417"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/media\/1372"}],"wp:attachment":[{"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/media?parent=3415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/categories?post=3415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deepseek.international\/zh\/wp-json\/wp\/v2\/tags?post=3415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}