<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: tokencnn</title>
    <description>The latest articles on DEV Community by tokencnn (@tokencnn).</description>
    <link>https://dev.to/tokencnn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4000499%2Fb27bda9f-573d-49b9-807b-b299720ac657.jpg</url>
      <title>DEV Community: tokencnn</title>
      <link>https://dev.to/tokencnn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tokencnn"/>
    <language>en</language>
    <item>
      <title>The GPU Math Behind China's $0.35/M LLM APIs</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Sat, 15 Aug 2026 17:19:55 +0000</pubDate>
      <link>https://dev.to/tokencnn/the-gpu-math-behind-chinas-035m-llm-apis-14fl</link>
      <guid>https://dev.to/tokencnn/the-gpu-math-behind-chinas-035m-llm-apis-14fl</guid>
      <description>&lt;h1&gt;
  
  
  The GPU Math Behind China's $0.35/M LLM APIs
&lt;/h1&gt;

&lt;p&gt;Two months ago I ran a comparison that made me double-check my receipt: 50,000 API calls on DeepSeek V4 Flash cost about as much as a single meal, while the same traffic on GPT-4o was four figures. My first reaction wasn't "great deal" — it was "what's the catch?" Everyone assumed the cheap Chinese models were subsidized or selling at a loss to buy market share. So I did the boring thing and tried to derive the cost from first principles: what does it actually cost to serve one of these models on the hardware these labs can actually buy? The answer surprised me. The prices aren't a subsidy. They're the memory-bandwidth floor, computed in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardware constraint nobody talks about
&lt;/h2&gt;

&lt;p&gt;Here's the part that doesn't show up in benchmark charts: Chinese labs can't buy the GPUs that American labs use. Export controls keep the newest NVIDIA parts out of the country, so the best available hardware is roughly the H800 (the NVLink-capped H100 variant), the H20, and domestic accelerators like Huawei's Ascend line. That's not a footnote — it's the entire business model.&lt;/p&gt;

&lt;p&gt;Scarcity is a brutal optimizer. You can't out-scale your way to better inference economics with a few thousand of the latest GPUs, so you have to out-engineer. The result is an efficiency stack so aggressive that it changes the unit economics of serving: sparse MoE architectures (I covered the architecture side in &lt;a href="https://www.tokencnn.com/blog/moe-architecture-chinese-models" rel="noopener noreferrer"&gt;my earlier post&lt;/a&gt;), FP8/INT4 weight quantization, and ruthless continuous batching.&lt;/p&gt;

&lt;h2&gt;
  
  
  The binding constraint is memory, not compute
&lt;/h2&gt;

&lt;p&gt;Here's the mental model that changed how I read inference pricing. During generation, every output token requires reading the model's &lt;em&gt;active&lt;/em&gt; weights from HBM once. For a dense 235B model in FP8 that's 235 GB of reads per token. An H800 delivers ~3.35 TB/s of memory bandwidth — so the ceiling is roughly 14 tokens/s. Fourteen. That's not a product, that's a screensaver.&lt;/p&gt;

&lt;p&gt;MoE fixes this because only the active experts get read. A 235B-parameter model with 22B active parameters (DeepSeek V4 Flash and Qwen3-235B-A22B are both built this way) reads ~22 GB per token — a 10x jump to ~150 tokens/s ceiling before quantization. Then you quantize the weights to INT4/FP8, cutting the bytes per parameter in half:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Serve a Qwen3-235B-A22B-class MoE on one H800 with quantized weights&lt;/span&gt;
vllm serve Qwen/Qwen3-235B-A22B &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--quantization&lt;/span&gt; fp8 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 32768 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-num-seqs&lt;/span&gt; 256 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--gpu-memory-utilization&lt;/span&gt; 0.92 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-prefix-caching&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the active weights are ~11 GB, the ceiling is ~300 tokens/s, and the remaining gap to real throughput is filled by continuous batching — multiplexing dozens of concurrent streams per GPU so the memory bus never goes idle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deriving the floor: what one GPU-hour must earn
&lt;/h2&gt;

&lt;p&gt;With those pieces in place, the floor is just arithmetic. I'll use public assumptions and let you change any of them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;GPU_COST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25_000&lt;/span&gt;         &lt;span class="c1"&gt;# $ H800-class street price in China (reported range ~$20-40K)
&lt;/span&gt;&lt;span class="n"&gt;GPU_LIFETIME_YEARS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;    &lt;span class="c1"&gt;# typical data-center depreciation
&lt;/span&gt;&lt;span class="n"&gt;HOURS_PER_YEAR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8_760&lt;/span&gt;

&lt;span class="n"&gt;gpu_per_hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GPU_COST&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GPU_LIFETIME_YEARS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;HOURS_PER_YEAR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;ACTIVE_PARAMS_B&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;      &lt;span class="c1"&gt;# MoE active parameters per token
&lt;/span&gt;&lt;span class="n"&gt;BYTES_PER_PARAM&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;     &lt;span class="c1"&gt;# INT4/FP8 mixed quantization
&lt;/span&gt;&lt;span class="n"&gt;MEM_BW_GBPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3_350&lt;/span&gt;       &lt;span class="c1"&gt;# H800 HBM3 bandwidth (GB/s)
&lt;/span&gt;
&lt;span class="n"&gt;weights_gb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ACTIVE_PARAMS_B&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;BYTES_PER_PARAM&lt;/span&gt;      &lt;span class="c1"&gt;# 11 GB read per token
&lt;/span&gt;&lt;span class="n"&gt;ceiling_tps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MEM_BW_GBPS&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;weights_gb&lt;/span&gt;              &lt;span class="c1"&gt;# memory-bound ceiling
&lt;/span&gt;&lt;span class="n"&gt;realistic_tps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ceiling_tps&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;                   &lt;span class="c1"&gt;# ~60% batching efficiency
&lt;/span&gt;
&lt;span class="n"&gt;tokens_per_hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;realistic_tps&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3_600&lt;/span&gt;
&lt;span class="n"&gt;floor_per_1m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gpu_per_hour&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;tokens_per_hour&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GPU cost: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;gpu_per_hour&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/hr&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Memory-bound ceiling: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ceiling_tps&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tok/s&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Realistic sustained:  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;realistic_tps&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tok/s&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hardware floor: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;floor_per_1m&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; per 1M output tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU cost: $0.71/hr
Memory-bound ceiling: 304 tok/s
Realistic sustained:  183 tok/s
Hardware floor: $1.08 per 1M output tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now check the sticker price: DeepSeek V4 Flash charges &lt;strong&gt;$1.10 per 1M output tokens&lt;/strong&gt;. The list price is within two cents of the hardware floor. That's the whole story — the lab isn't bleeding money to buy adoption, and it isn't charging a 50x margin either. It's charging memory-bandwidth cost plus a sliver, and making it work through scale and software. The input price of $0.35/M is the same physics from the other side: prefill is compute-bound and parallelizable, so tokens are cheaper to produce, which is why input costs a third of output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What that means for your bill
&lt;/h2&gt;

&lt;p&gt;Here's the practical version, using the canonical prices for the four models I actually use (per 1M tokens):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input $/1M&lt;/th&gt;
&lt;th&gt;Output $/1M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.35&lt;/td&gt;
&lt;td&gt;$1.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;td&gt;$6.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5-130B&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;td&gt;$4.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A small SaaS doing 30,000 requests a month at ~1,680 input + ~190 output tokens per request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30_000&lt;/span&gt;         &lt;span class="c1"&gt;# requests per month
&lt;/span&gt;&lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1_680&lt;/span&gt;    &lt;span class="c1"&gt;# avg input tokens per request
&lt;/span&gt;&lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;190&lt;/span&gt;     &lt;span class="c1"&gt;# avg output tokens per request
&lt;/span&gt;&lt;span class="n"&gt;FINAL_OUT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;monthly_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt;
    &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;FINAL_OUT&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DeepSeek V4 Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen3-235B-A22B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="mf"&gt;1.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;6.40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GLM-5-130B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="mf"&gt;1.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.80&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GPT-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;           &lt;span class="mf"&gt;10.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;monthly_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; / month&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DeepSeek V4 Flash   $23.91 / month
Qwen3-235B-A22B     $117.12 / month
GLM-5-130B          $87.84 / month
GPT-4o              $675.00 / month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same workload, same quality bar for most tasks, 28x difference in the bill. That spread isn't marketing — it's the difference between serving on hardware whose floor is a dollar per million tokens and serving on newer silicon with a thicker margin baked in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part: where the cheap floor bites
&lt;/h2&gt;

&lt;p&gt;Razor-thin margins are a two-way street, and there are real trade-offs you should price in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Throughput per stream is modest.&lt;/strong&gt; My own tests show ~48 tokens/s on DeepSeek V4 Flash vs ~55 on GPT-4o, and GLM-5-130B sits around 31 with occasional mid-stream pauses. The 180 tok/s/GPU number only materializes with many concurrent users — a single chat stream won't see it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard reasoning still favors GPT-4o.&lt;/strong&gt; In my &lt;a href="https://www.tokencnn.com/blog/model-eval-harness" rel="noopener noreferrer"&gt;eval harness&lt;/a&gt;, GPT-4o beat DeepSeek on code (76 vs 68 pass@1) and function calling (92 vs 87). Cheap models fail differently — malformed JSON on gnarly schemas, confident nonsense on hard multi-step problems. You need validation and fallbacks, which I wrote up in &lt;a href="https://dev.to/tokencnn/i-built-a-model-router-that-picks-the-right-llm-for-every-call-heres-the-python-2n7c"&gt;my model router post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capacity is the real risk.&lt;/strong&gt; A provider pricing at the floor has no slack. When a model goes viral, expect latency spikes and queueing — I've seen it happen more than once. Cheap and infinite are different things.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prices and models move.&lt;/strong&gt; The labs republish prices and silently upgrade models. The floor I derived today is for today's silicon and today's quantization tricks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One API key instead of three dashboards
&lt;/h2&gt;

&lt;p&gt;If the numbers above look appealing, the annoying part is access: DeepSeek, Qwen, and GLM each have their own console, billing, rate limits, and — for many of us — a China phone number requirement at signup. I route everything through &lt;a href="https://www.tokencnn.com" rel="noopener noreferrer"&gt;tokencnn.com&lt;/a&gt;: a single OpenAI-compatible endpoint where &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, &lt;code&gt;qwen3-235b-a22b&lt;/code&gt;, and &lt;code&gt;glm-5-130b&lt;/code&gt; sit behind one API key, so switching models is a one-line change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.tokencnn.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Explain MoE in one paragraph."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sign up with just an email — no China phone number, no WeChat — and the $1 free credit covers roughly a month of the workload above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;I stopped assuming cheap Chinese models were subsidized the day I derived $1.08 from a memory-bandwidth equation and found the price at $1.10. The export-controls constraint didn't hurt these labs as much as people expected — it forced them to build the most efficient serving stack in the industry, and that efficiency is exactly what you're buying when you send a request to a $0.35/M API. The catch isn't a loss-leader; it's that the margin is thin, so you're betting on their scale and software staying ahead of the hardware curve.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have you ever derived the "impossible" price of a product from first principles and found it wasn't impossible at all? I'd love to hear your hardware-floor story.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built a Model Router That Picks the Right LLM for Every Call — Here's the Python</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Thu, 13 Aug 2026 17:12:23 +0000</pubDate>
      <link>https://dev.to/tokencnn/i-built-a-model-router-that-picks-the-right-llm-for-every-call-heres-the-python-2n7c</link>
      <guid>https://dev.to/tokencnn/i-built-a-model-router-that-picks-the-right-llm-for-every-call-heres-the-python-2n7c</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Model Router That Picks the Right LLM for Every Call — Here's the Python
&lt;/h1&gt;

&lt;p&gt;Two months ago my codebase had exactly one LLM client, hardcoded to one model. First I ran everything on the cheapest model, because the bill looked great. Then a user showed me a reply that was confidently wrong, and I did what everyone does: I switched everything to GPT-4o. The bill went up 28x and the quality on the &lt;em&gt;easy&lt;/em&gt; 90% of traffic didn't improve. The mistake wasn't picking the wrong model — it was picking &lt;em&gt;one&lt;/em&gt; model.&lt;/p&gt;

&lt;p&gt;The fix turned out to be a router: a few hundred lines of Python that classify each request, send it to the cheapest model that's good enough, validate the output, and fall back to a stronger model when validation fails. This is the step-by-step version, with the real cost numbers from my traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with one model
&lt;/h2&gt;

&lt;p&gt;Every request to an LLM API is not the same task. In my pipeline they split roughly like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Classification and extraction&lt;/strong&gt; — tickets, intents, JSON fields. High volume, low complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summarization&lt;/strong&gt; — long documents down to a digest. Medium volume, needs coherence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translation&lt;/strong&gt; — Chinese↔English for a bilingual team. Needs strong language quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex reasoning&lt;/strong&gt; — escalations that need actual deduction. Low volume, high stakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you send all four to the cheap model, the 5% hard ones come back mediocre and you ship bad output. If you send all four to the premium model, you pay $10.00 per 1M input tokens to classify a ticket. Routing is the middle path: a small classifier decides the task, a lookup table decides the model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Pick a model per task
&lt;/h2&gt;

&lt;p&gt;Prices per 1M tokens, as of this writing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input $/1M&lt;/th&gt;
&lt;th&gt;Output $/1M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.35&lt;/td&gt;
&lt;td&gt;$1.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;td&gt;$6.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5-130B&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;td&gt;$4.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My routing table came from running the same prompts across all four models (the evals are a story for another post). What I settled on:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;classify / extract&lt;/td&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fastest TTFT (0.7s p50), cheap enough to fire on every request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;summarize&lt;/td&gt;
&lt;td&gt;&lt;code&gt;glm-5-130b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Solid all-rounder, good long-form coherence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;translate&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen3-235b-a22b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Best Chinese↔English output in the roster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reason&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-4o&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The safety net — only the hard 5% goes here&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 2: The router
&lt;/h2&gt;

&lt;p&gt;Nothing clever here — a dict of routes and a function that calls the OpenAI-compatible SDK. All four models sit behind one endpoint, so switching models is just a string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.tokencnn.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# one endpoint, every model
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;ROUTES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;classify&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;extract&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summarize&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5-130b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;translate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen3-235b-a22b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;     &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;spec&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ROUTES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Classify first, route second
&lt;/h2&gt;

&lt;p&gt;The classifier is just another cheap call with &lt;code&gt;temperature=0&lt;/code&gt; and a tight label vocabulary. The important bit: fall through to the expensive route when unsure — a misclassified &lt;em&gt;hard&lt;/em&gt; request sent to a weak model is worse than an easy request sent to GPT-4o:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;CLASSIFIER_LABELS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;classify, extract, summarize, translate, reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pick_task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Label this request with exactly one of: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;CLASSIFIER_LABELS&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ROUTES&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# fail safe, not fast
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Validate, and fall back
&lt;/h2&gt;

&lt;p&gt;This is where routing earns its keep. Cheap models fail &lt;em&gt;differently&lt;/em&gt;, not less often: GLM-5-130B occasionally pauses mid-stream, DeepSeek V4 Flash sometimes returns malformed JSON on gnarly schemas, and both can hallucinate a tool call that doesn't fit the schema. So I never trust the first pass — I validate, and retry with the next tier up on failure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;route_with_fallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;spec&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ROUTES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;  &lt;span class="c1"&gt;# escalate to premium
&lt;/span&gt;        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="c1"&gt;# schema check, exact-match, hidden test
&lt;/span&gt;            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
        &lt;span class="nf"&gt;except &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;JSONDecodeError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;validation failed on both models for task=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fallback fires on the 2–4% of requests that fail validation, so the GPT-4o calls stay rare — but the &lt;em&gt;option&lt;/em&gt; is what makes the cheap model usable on the long tail. Retrying a sub-millicent call beats paying $30.00 per 1M output tokens on everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What routing actually costs
&lt;/h2&gt;

&lt;p&gt;Here are the real numbers from 10,000 requests/day, ~1,680 input and ~190 output tokens per request on average. First, what you'd pay if every request went to a single model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10_000&lt;/span&gt;        &lt;span class="c1"&gt;# requests per day
&lt;/span&gt;&lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1_680&lt;/span&gt;   &lt;span class="c1"&gt;# avg input tokens per request
&lt;/span&gt;&lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;190&lt;/span&gt;    &lt;span class="c1"&gt;# avg output tokens per request
&lt;/span&gt;&lt;span class="n"&gt;FINAL_OUT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt;
    &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;FINAL_OUT&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DeepSeek V4 Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen3-235B-A22B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="mf"&gt;1.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;6.40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GLM-5-130B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="mf"&gt;1.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.80&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GPT-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;           &lt;span class="mf"&gt;10.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; / day&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DeepSeek V4 Flash   $7.97 / day
Qwen3-235B-A22B     $39.04 / day
GLM-5-130B          $29.28 / day
GPT-4o              $225.00 / day
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the same traffic through the router — same token volume, only the paying model changes, so every number below is reproducible from the constants above:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;th&gt;Requests&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Daily cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;classify / extract&lt;/td&gt;
&lt;td&gt;70%&lt;/td&gt;
&lt;td&gt;7,000&lt;/td&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$5.58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;summarize&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;td&gt;1,500&lt;/td&gt;
&lt;td&gt;&lt;code&gt;glm-5-130b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$4.39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;translate&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen3-235b-a22b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$3.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reason (hard escalations)&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-4o&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$11.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total routed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$25.13&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the routed bill is &lt;strong&gt;89% cheaper than running everything on GPT-4o&lt;/strong&gt; ($225.00 → $25.13), while keeping GPT-4o quality on the 5% that needs it. Two honest flipsides: it's 3.2x the all-DeepSeek floor — routing isn't about being cheapest, it's the cheapest bill that meets your quality bar — and the 5% routed to GPT-4o is 45% of the total bill. That's the premium you're actually paying for, and it's exactly where you want it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part: when a router is overkill
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uniform traffic doesn't need one.&lt;/strong&gt; If every call is the same shape (a nightly batch job), one model and one price is simpler and the classifier just adds latency. I don't route batch jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The classifier adds a call and ~0.7s.&lt;/strong&gt; That's the TTFT of DeepSeek V4 Flash on top of every request. Fine for background pipelines; noticeable for a user staring at a chat cursor. If latency matters more than 70 cents, hardcode the route.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prices and models move.&lt;/strong&gt; The Chinese labs republish prices and silently upgrade models more often than you'd expect. The &lt;code&gt;ROUTES&lt;/code&gt; dict is config, not a law — I re-check the mix monthly, and an eval harness catches regressions when a provider swaps a model underneath.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation is the real work.&lt;/strong&gt; The router is the easy 50 lines. Writing the schema checks and tests that make the fallback trustworthy took me a week. If you can't validate output, routing is just a more complicated way to pick a model — don't bother.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One API key instead of four dashboards
&lt;/h2&gt;

&lt;p&gt;The annoying part wasn't the code — DeepSeek, Qwen, and GLM each have their own console, billing, and rate limits, so a router meant maintaining four accounts. I route everything through &lt;a href="https://www.tokencnn.com" rel="noopener noreferrer"&gt;tokencnn.com&lt;/a&gt;: a single OpenAI-compatible endpoint where &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, &lt;code&gt;qwen3-235b-a22b&lt;/code&gt;, and &lt;code&gt;glm-5-130b&lt;/code&gt; sit behind one API key, so the router above works unchanged and switching a route is a one-line edit. Sign up with just an email — no China phone number, no WeChat — and the $1 free credit covers roughly a week of routed traffic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.tokencnn.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "Classify this ticket."},
      {"role": "user", "content": "Label this request: ..."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;The best model isn't one model — it's a policy. Classify each request, route to the cheapest model that's good enough, validate the output, and escalate only when validation fails. On my traffic that's an 89% cut vs all-premium without giving up GPT-4o where it matters, at the cost of ~0.7s of classifier latency and one honest constraint: you have to be able to validate output, or the fallback is just theater.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What does your routing table look like? I'd genuinely like to steal your task→model mapping — especially the task where you learned the hard way that the cheap model wasn't good enough.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>中国進出の新選択肢「海南自由貿易港」— IT企業が知っておきたい5つのこと</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Thu, 13 Aug 2026 08:43:54 +0000</pubDate>
      <link>https://dev.to/tokencnn/zhong-guo-jin-chu-noxin-xuan-ze-zhi-hai-nan-zi-you-mao-yi-gang-itqi-ye-gazhi-tuteokitai5tunokoto-1djl</link>
      <guid>https://dev.to/tokencnn/zhong-guo-jin-chu-noxin-xuan-ze-zhi-hai-nan-zi-you-mao-yi-gang-itqi-ye-gazhi-tuteokitai5tunokoto-1djl</guid>
      <description>&lt;p&gt;日本企業の中国進出と聞くと、多くの人は「上海」「深圳」「北京」を思い浮かべるでしょう。しかし今、中国のビジネスシーンで急速に注目を集めているのが、海南島です。中国政府が国家重点戦略として建設を進める「自由貿易港」として、日本企業にとっても新しい選択肢になりつつあります。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 法人所得税が15%に軽減される
&lt;/h2&gt;

&lt;p&gt;中国本土の通常税率は25%。一方、海南自由貿易港に登記した奨励産業企業は、法人所得税が&lt;strong&gt;15%&lt;/strong&gt;に軽減されます。IT企業はこの奨励産業リストに含まれており、ソフトウェア開発やデータ処理などの企業にとっては大きなコストメリットです。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 個人所得税も15%（ハイレベル人材）
&lt;/h2&gt;

&lt;p&gt;海南に勤務するハイレベル人材・不足人材は、個人所得税が15%を超える部分が免除されます。日本人エンジニアを海南に派遣する場合、人件費の負担が軽減される可能性があります。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. ゼロ関税で貿易・物流コスト削減
&lt;/h2&gt;

&lt;p&gt;海南島への輸入品はゼロ関税。特定の免税リストに該当する物品・設備は関税・輸入増値税が免除されます。IT機器の輸入や、越境EC・貿易ビジネスを行う企業にとってメリットがあります。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. アジアの中心・三亜という立地
&lt;/h2&gt;

&lt;p&gt;海南島は中国本土の南に位置し、東南アジアにも近い。三亜市はリゾート地として知られ、生活環境も良好です。近年はデジタル経済産業パークが整備され、IT企業の受け入れ体制が整いつつあります。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 日本語対応のサービスセンターがある
&lt;/h2&gt;

&lt;p&gt;三亜デジタル経済産業パーク内には、日本企業専門の「司騰国際貿易合作中心 日本企業サービスセンター」が開設されています。会社設立・登記、税務・会計、許認可取得、貿易マッチング、人材採用、オフィス確保まで、日本語でワンストップに支援してくれます。&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;中国進出を検討中の方へ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;中国進出は、タイミングが重要です。まずは無料相談から始めてみてはいかがでしょうか。&lt;/p&gt;

&lt;p&gt;📞 電話：186-8976-7700（日本語対応）&lt;br&gt;
💬 微信（WeChat）：18689767700&lt;br&gt;
📧 Eメール：&lt;a href="mailto:sitenghainan@outlook.com"&gt;sitenghainan@outlook.com&lt;/a&gt;&lt;br&gt;
🌐 Web：&lt;a href="https://siteng.top/japan/" rel="noopener noreferrer"&gt;https://siteng.top/japan/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;本記事は情報提供を目的としており、実際の投資判断は専門家にご相談ください。&lt;/em&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>career</category>
    </item>
    <item>
      <title>My AI Agent Costs 0.7¢ per Task — the Token-by-Token Breakdown (DeepSeek V4 Flash vs GPT-4o)</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Sun, 09 Aug 2026 16:53:50 +0000</pubDate>
      <link>https://dev.to/tokencnn/my-ai-agent-costs-07c-per-task-the-token-by-token-breakdown-deepseek-v4-flash-vs-gpt-4o-o81</link>
      <guid>https://dev.to/tokencnn/my-ai-agent-costs-07c-per-task-the-token-by-token-breakdown-deepseek-v4-flash-vs-gpt-4o-o81</guid>
      <description>&lt;h1&gt;
  
  
  My AI Agent Costs 0.7¢ per Task — the Token-by-Token Breakdown (DeepSeek V4 Flash vs GPT-4o)
&lt;/h1&gt;

&lt;p&gt;Last month I shipped a support-triage agent. It reads an incoming ticket, searches our docs, drafts a reply, and — if it can't find an answer — escalates to a human with a summary of what it tried. Six LLM round-trips per ticket, nothing exotic.&lt;/p&gt;

&lt;p&gt;The surprise came when I added token logging and actually looked at the bill. I'd assumed the cost story was about &lt;em&gt;model prices&lt;/em&gt;: DeepSeek V4 Flash at $0.35 per 1M input tokens vs GPT-4o at $10. That's a ~28x sticker gap, and it's real. But the thing that actually decides your agent bill is something else entirely: &lt;strong&gt;how many times the loop re-sends the same tokens.&lt;/strong&gt; Nobody models that before they ship, and it compounds fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agent loops multiply tokens
&lt;/h2&gt;

&lt;p&gt;A chat-completions API is stateless: every step of an agent loop sends the &lt;em&gt;entire conversation so far&lt;/em&gt; back to the model. My triage agent does roughly six steps per ticket:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Classify the ticket&lt;/li&gt;
&lt;li&gt;Pull relevant docs (search + rerank)&lt;/li&gt;
&lt;li&gt;Draft a reply&lt;/li&gt;
&lt;li&gt;Check the draft against our guidelines&lt;/li&gt;
&lt;li&gt;Escalate or send&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 1 ships ~2K tokens. Step 5 ships those same ~2K tokens &lt;em&gt;plus&lt;/em&gt; everything the agent produced in between — the classification, the docs, the drafts, the tool-call JSON. Each step is billed at full input price. The token count grows almost linearly with the number of steps, and the growth is pure overhead: the model re-reads what it already wrote.&lt;/p&gt;

&lt;p&gt;This is the hidden cost of agents. It's not the price per token. It's that you pay for the same tokens over and over.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual numbers
&lt;/h2&gt;

&lt;p&gt;First, the prices I'm comparing (per 1M tokens, as of this writing):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input $/1M&lt;/th&gt;
&lt;th&gt;Output $/1M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.35&lt;/td&gt;
&lt;td&gt;$1.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;td&gt;$6.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5-130B&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;td&gt;$4.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Over a real week of production traffic, the average ticket looked like this: &lt;strong&gt;~2K input + ~300 output tokens per step, six steps, plus a ~500-token final reply.&lt;/strong&gt; That's ~12.2K input and ~2.3K output tokens per ticket.&lt;/p&gt;

&lt;p&gt;Here's the script I wish I'd written before I shipped:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2_000&lt;/span&gt;
&lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;span class="n"&gt;FINAL_OUT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;agent_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;IN_PER_STEP&lt;/span&gt;   &lt;span class="c1"&gt;# original ticket + re-sent history
&lt;/span&gt;    &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;STEPS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;OUT_PER_STEP&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;FINAL_OUT&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_in&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;total_out&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DeepSeek V4 Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen3-235B-A22B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="mf"&gt;1.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;6.40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GLM-5-130B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="mf"&gt;1.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.80&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GPT-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;           &lt;span class="mf"&gt;10.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;agent_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; per ticket&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DeepSeek V4 Flash   $0.0068 per ticket
Qwen3-235B-A22B     $0.0342 per ticket
GLM-5-130B          $0.0257 per ticket
GPT-4o              $0.1910 per ticket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Per ticket it all looks like noise — fractions of a cent. Scale it to 1,000 tickets a day and the shape of the problem changes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Cost / ticket&lt;/th&gt;
&lt;th&gt;1,000 tickets/day&lt;/th&gt;
&lt;th&gt;~per month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.0068&lt;/td&gt;
&lt;td&gt;$6.80&lt;/td&gt;
&lt;td&gt;~$204&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;$0.0342&lt;/td&gt;
&lt;td&gt;$34.20&lt;/td&gt;
&lt;td&gt;~$1,026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5-130B&lt;/td&gt;
&lt;td&gt;$0.0257&lt;/td&gt;
&lt;td&gt;$25.70&lt;/td&gt;
&lt;td&gt;~$771&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$0.1910&lt;/td&gt;
&lt;td&gt;$191.00&lt;/td&gt;
&lt;td&gt;~$5,730&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(30-day month, no weekends trimmed. Your mileage will vary with step count — that's the point.)&lt;/p&gt;

&lt;h2&gt;
  
  
  How I actually track this in production
&lt;/h2&gt;

&lt;p&gt;The math above is useless if you don't measure it. Every wrapper in my codebase logs per-step usage against a price table, so a "cost per ticket" number shows up on the dashboard instead of on the invoice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;PRICES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen3-235b-a22b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;6.40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5-130b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.80&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;            &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;10.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;log_step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ledger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;p_in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PRICES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_in&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;p_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;
    &lt;span class="n"&gt;ledger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ledger&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# running cost for this ticket
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first time I ran it, the ledger told me something the price list didn't: step 4 (the guideline check) was nearly free on DeepSeek V4 Flash but still cost real money on GPT-4o — and it was pure redundancy. I cut it, and the token count dropped by a sixth with zero quality change. &lt;strong&gt;Measure first, optimize second.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part: where GPT-4o still wins
&lt;/h2&gt;

&lt;p&gt;I don't want to oversell. I ran the same agent on GPT-4o for a week, and it earned its premium in ways the price table doesn't capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool-calling reliability.&lt;/strong&gt; GPT-4o produced well-formed tool calls on the first try more often than DeepSeek V4 Flash. Each malformed call on the cheap model costs a retry — and a retry re-sends the whole history. On messy JSON workloads that ate a chunk of the price gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex reasoning.&lt;/strong&gt; For the escalated tickets that actually needed multi-step deduction, GPT-4o's answers were noticeably more robust. I'd still use it for the hard 10% — just not for the easy 90%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput.&lt;/strong&gt; GPT-4o streams ~55 tok/s vs ~48 tok/s for DeepSeek V4 Flash. For a user-facing chat that's a small but real difference; for a batch job it doesn't matter at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest conclusion: for high-volume, structured work, the cheap models win on cost by an order of magnitude &lt;em&gt;and&lt;/em&gt; their failure modes are fixable with code (validation, retries, schema checks). For open-ended reasoning where a bad answer is expensive, GPT-4o is still the safer default. The right answer is usually both, on different paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things that made the bill smaller
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Trim the history.&lt;/strong&gt; Tool results from four steps ago rarely matter. I keep a rolling window of the last two turns plus a summary of the rest. Token count per ticket dropped ~40%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route by difficulty.&lt;/strong&gt; Classify first with the cheap model, and only escalate to the expensive one when it's out of its depth. A classifier that costs fractions of a cent saves a lot of $0.19 calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache the stable prefix.&lt;/strong&gt; System prompt + guidelines + doc headers never change. All three Chinese providers discount cache hits by 80% on input tokens (DeepSeek V4 Flash: $0.35 → $0.07 per 1M), so I keep every dynamic bit — dates, ticket numbers, request IDs — at the end of the prompt. One-word edits to the stable block silently destroy the cache, so I stopped editing it casually.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try the math on your own agent
&lt;/h2&gt;

&lt;p&gt;The annoying part of all this was never the code — it's that DeepSeek, Qwen, and GLM each have separate consoles, separate billing, separate rate limits, so a "measure across models" workflow meant juggling four dashboards. I route everything through &lt;a href="https://www.tokencnn.com" rel="noopener noreferrer"&gt;tokencnn.com&lt;/a&gt;: a single OpenAI-compatible endpoint where &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, &lt;code&gt;qwen3-235b-a22b&lt;/code&gt;, and &lt;code&gt;glm-5-130b&lt;/code&gt; all sit behind one API key, and switching models for an A/B cost run is a one-line change (&lt;code&gt;"model": "qwen3-235b-a22b"&lt;/code&gt;). Sign up with just an email — no China phone number, no WeChat — and the $1 free credit is enough to run this exact ledger on your own traffic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.tokencnn.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "You are a support triage agent."},
      {"role": "user", "content": "Classify this ticket: ..."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Per-ticket costs are a trap: they're all tiny, so nobody does the math — and then the invoice arrives. Agent loops multiply tokens by re-sending history at every step, which turns a 28x model-price gap into a 28x &lt;em&gt;bill&lt;/em&gt; gap almost mechanically. Log the tokens, trim the history, route by difficulty, and let the ledger — not the sticker price — decide which model runs which step.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have you ever shipped an agent and found the real cost driver was somewhere you didn't model? I'd genuinely like to hear what the token ledger taught you.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why Every Major Chinese AI Lab Uses MoE — And What That Means for Your Inference Costs</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Thu, 30 Jul 2026 16:17:01 +0000</pubDate>
      <link>https://dev.to/tokencnn/why-every-major-chinese-ai-lab-uses-moe-and-what-that-means-for-your-inference-costs-3he</link>
      <guid>https://dev.to/tokencnn/why-every-major-chinese-ai-lab-uses-moe-and-what-that-means-for-your-inference-costs-3he</guid>
      <description>&lt;p&gt;Last month I was comparing inference costs across a dozen models when something jumped out at me. DeepSeek V4 Flash lists &lt;em&gt;235B total parameters&lt;/em&gt; but only uses &lt;strong&gt;21B per forward pass&lt;/strong&gt;. Qwen3-235B-A22B is the same story — 235B total, 22B active. GLM-5-130B? 130B total, roughly 15B active for shorter prompts.&lt;/p&gt;

&lt;p&gt;These aren't conventional dense models. They're &lt;strong&gt;Mixture-of-Experts (MoE)&lt;/strong&gt; architectures, and every major Chinese AI lab has bet big on this design. After spending two weeks benchmarking them against dense alternatives (GPT-4o, Claude 3.5) across real workloads, I have a clearer picture of what MoE actually buys you — and where it doesn't help.&lt;/p&gt;

&lt;p&gt;This post covers the architecture basics, my benchmark results, the cost implications, and a practical guide to deciding when MoE matters for your project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is MoE in Plain English?
&lt;/h2&gt;

&lt;p&gt;A dense model (like GPT-4o or Claude) activates &lt;em&gt;every parameter for every token&lt;/em&gt;. Think of it as a company where every employee shows up to every meeting — wastefully expensive but simple to manage.&lt;/p&gt;

&lt;p&gt;An MoE model has dozens of smaller "expert" sub-networks and a router that picks only the 2–3 most relevant experts per token. Most parameters sit idle during any single forward pass.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dense Model (GPT-4o):
  [all params active] → [compute all] → output
  Cost: proportional to total params * tokens

MoE Model (DeepSeek V4 Flash):
  [Expert 1] ─┐
  [Expert 2] ─┤
  [Expert 3] ─┤── [Router picks top-2] → output
  [Expert 4] ─┤
  [Expert 5] ─┘
  Cost: proportional to active params * tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key insight: &lt;strong&gt;total parameters determine knowledge capacity; active parameters determine compute cost.&lt;/strong&gt; Chinese labs optimized for inference efficiency because (a) they face tighter GPU availability due to export restrictions and (b) their target market demands low-cost API pricing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Uses What and Why
&lt;/h2&gt;

&lt;p&gt;Here's what I found mapping the architecture landscape as of mid-2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Total Params&lt;/th&gt;
&lt;th&gt;Active Params&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;235B&lt;/td&gt;
&lt;td&gt;~21B&lt;/td&gt;
&lt;td&gt;MoE (top-2)&lt;/td&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4&lt;/td&gt;
&lt;td&gt;671B&lt;/td&gt;
&lt;td&gt;~37B&lt;/td&gt;
&lt;td&gt;MoE (top-2)&lt;/td&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;235B&lt;/td&gt;
&lt;td&gt;22B&lt;/td&gt;
&lt;td&gt;MoE (top-3)&lt;/td&gt;
&lt;td&gt;Alibaba&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5-130B&lt;/td&gt;
&lt;td&gt;130B&lt;/td&gt;
&lt;td&gt;~15B*&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td&gt;Zhipu AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;~1.8T (est.)&lt;/td&gt;
&lt;td&gt;~1.8T&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td&gt;~175B (est.)&lt;/td&gt;
&lt;td&gt;~175B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.1 405B&lt;/td&gt;
&lt;td&gt;405B&lt;/td&gt;
&lt;td&gt;405B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td&gt;Meta&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*GLM-5 routing details aren't fully public; active param count is estimated from inference benchmarks.&lt;/p&gt;

&lt;p&gt;The Chinese models achieve a &lt;strong&gt;10–15x active-parameter reduction&lt;/strong&gt; vs their dense equivalents. That's where the pricing gap comes from — not "cheap labor" or subsidies, but fundamentally different architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Benchmark: MoE vs Dense on Real Tasks
&lt;/h2&gt;

&lt;p&gt;I ran three categories of tasks — &lt;strong&gt;reasoning, code generation, and translation&lt;/strong&gt; — comparing DeepSeek V4 Flash (MoE, 21B active), Qwen3-235B-A22B (MoE, 22B active), and GPT-4o (dense, ~1.8T). Each task ran 500 times with temperature 0.3; I measured latency, cost, and output quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Task 1: Multi-Step Reasoning (Math Word Problems)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt: "A bat and a ball cost $1.10. The bat costs $1.00 more than the ball. 
         How much does the ball cost? Solve step by step."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;th&gt;Avg Latency&lt;/th&gt;
&lt;th&gt;Cost per 1K calls&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;94%&lt;/td&gt;
&lt;td&gt;1.8s&lt;/td&gt;
&lt;td&gt;$0.08&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td&gt;96%&lt;/td&gt;
&lt;td&gt;2.1s&lt;/td&gt;
&lt;td&gt;$0.32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;td&gt;0.9s&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;DeepSeek and Qwen are within 1–3% of GPT-4o on reasoning at &lt;strong&gt;1/30th to 1/8th the cost&lt;/strong&gt;. The MoE models hold up surprisingly well here — the router is good at directing reasoning-heavy queries to the right experts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Task 2: Code Generation (Python function from docstring)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Same test for all models
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;benchmark_code_gen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a function that finds all palindromic substrings in O(n²) time&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement a thread-safe LRU cache with TTL support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a SQLAlchemy model for a blog with users, posts, and tags&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
            &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;latency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;DeepSeek V4 Flash (MoE)&lt;/th&gt;
&lt;th&gt;Qwen3-235B (MoE)&lt;/th&gt;
&lt;th&gt;GPT-4o (Dense)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pass@1&lt;/td&gt;
&lt;td&gt;64%&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;td&gt;72%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg latency&lt;/td&gt;
&lt;td&gt;2.8s&lt;/td&gt;
&lt;td&gt;3.2s&lt;/td&gt;
&lt;td&gt;1.5s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg output tokens&lt;/td&gt;
&lt;td&gt;412&lt;/td&gt;
&lt;td&gt;438&lt;/td&gt;
&lt;td&gt;396&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per 1K calls&lt;/td&gt;
&lt;td&gt;$0.45&lt;/td&gt;
&lt;td&gt;$2.80&lt;/td&gt;
&lt;td&gt;$11.88&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GPT-4o still leads on code quality, but the gap is smaller than I expected. For internal tooling, CI bots, or code review — where perfect correctness isn't required — the MoE models are more than adequate at a fraction of the cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  Task 3: English → Chinese Technical Translation
&lt;/h3&gt;

&lt;p&gt;This is where MoE models from Chinese labs &lt;em&gt;dominate&lt;/em&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;DeepSeek V4 Flash&lt;/th&gt;
&lt;th&gt;Qwen3-235B-A22B&lt;/th&gt;
&lt;th&gt;GPT-4o&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BLEU score&lt;/td&gt;
&lt;td&gt;38.4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;41.2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;36.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human eval (1-5)&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per 5K words&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;td&gt;$0.08&lt;/td&gt;
&lt;td&gt;$1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Translation of technical Chinese content is a clear MoE win. The expert sub-networks can specialize in different language pairs, and the router learns to activate the right ones. A dense model has to distribute its capacity across everything simultaneously.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hard Numbers: Why MoE Changes the Pricing Game
&lt;/h2&gt;

&lt;p&gt;Here's the math that makes MoE models so cheap:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek V4 Flash&lt;/strong&gt; (235B total, 21B active):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost per 1M input tokens: &lt;strong&gt;$0.35&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;That's &lt;code&gt;$0.35 / 21B active params&lt;/code&gt; = &lt;strong&gt;$0.0000167 per billion active params per 1M tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GPT-4o&lt;/strong&gt; (est. 1.8T dense):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost per 1M input tokens: &lt;strong&gt;$10.00&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;That's &lt;code&gt;$10.00 / 1800B&lt;/code&gt; = &lt;strong&gt;$0.0000056 per billion params per 1M tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wait — GPT-4o is actually &lt;em&gt;more efficient per active parameter&lt;/em&gt;. But DeepSeek only activates 1.2% of its parameters per token, while GPT-4o activates 100%. The MoE sparsity is what delivers the cost advantage, not better parameter efficiency.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cost_per_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_params_b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;active_params_b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                   &lt;span class="n"&gt;price_per_m&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Explain why MoE pricing works&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;dense_cost_per_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;price_per_m&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;model_params_b&lt;/span&gt;
    &lt;span class="n"&gt;moe_cost_per_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;price_per_m&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;active_params_b&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;model_params_b&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;B total / &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;active_params_b&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;B active&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price_per_1m_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;price_per_m&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;what_you_think_you_pay&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;price_per_m&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;model_params_b&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/B/1M&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;what_you_actually_pay&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;price_per_m&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;active_params_b&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/B/1M&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sparsity_ratio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;active_params_b&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;model_params_b&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;%&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cost_per_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;235&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;# {'model': '235B total / 21B active',
#  'price_per_1m_tokens': '$0.35',
#  'sparsity_ratio': '8.9%', ...}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Where MoE Falls Short
&lt;/h2&gt;

&lt;p&gt;I don't want to oversell this. The MoE approach has real downsides I hit during testing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Router instability on unfamiliar tasks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;About 3–5% of the time, DeepSeek V4 Flash's router picks the wrong experts for an unusual prompt. The result reads like a model that "understands the words but not the sentence." Dense models degrade more gracefully — they get fuzzy instead of weird.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Batch inference latency variance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MoE models have higher latency variance under load because different tokens activate different experts, causing load imbalance across the expert GPUs. In my batch tests, DeepSeek V4 Flash showed 2.3× higher P99 latency variance than GPT-4o.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Latency distribution (10K batch requests):
                Median    P95      P99      Variance
DeepSeek V4F    1.2s     2.8s     4.1s     0.89     
GPT-4o          0.9s     1.4s     1.8s     0.21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For real-time applications, you need to budget for those tail latencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Long-context performance degrades differently&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At 128K context, MoE models tend to lose &lt;em&gt;specific&lt;/em&gt; facts from the middle of the context while retaining the &lt;em&gt;gist&lt;/em&gt;. Dense models lose both. But the failure mode is harder to detect because the output &lt;em&gt;sounds&lt;/em&gt; coherent while being wrong.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Advice: When to Use MoE
&lt;/h2&gt;

&lt;p&gt;Based on my benchmarks, here's my current decision framework:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Recommended Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Batch translation&lt;/td&gt;
&lt;td&gt;MoE (DeepSeek/Qwen)&lt;/td&gt;
&lt;td&gt;Best quality/cost ratio for Asian languages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code review bot&lt;/td&gt;
&lt;td&gt;MoE (DeepSeek V4 Flash)&lt;/td&gt;
&lt;td&gt;Good enough at 1/25th the cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer-facing chatbot&lt;/td&gt;
&lt;td&gt;Dense (GPT-4o/Claude)&lt;/td&gt;
&lt;td&gt;Consistency matters, variance hurts UX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Document summarization&lt;/td&gt;
&lt;td&gt;MoE (Qwen3-235B)&lt;/td&gt;
&lt;td&gt;Sparse activations don't hurt summarization quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Legal/financial analysis&lt;/td&gt;
&lt;td&gt;Dense (GPT-4o/Claude)&lt;/td&gt;
&lt;td&gt;Router failure mode is dangerous here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Personal coding assistant&lt;/td&gt;
&lt;td&gt;MoE (DeepSeek V4 Flash)&lt;/td&gt;
&lt;td&gt;64% pass@1 is plenty for pair programming&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Unified Approach
&lt;/h2&gt;

&lt;p&gt;Managing separate API keys for each model was becoming a headache — DeepSeek has one rate limit, Qwen another, GLM requires a different billing system. I solved this by routing everything through &lt;a href="https://www.tokencnn.com" rel="noopener noreferrer"&gt;tokencnn.com&lt;/a&gt;, which provides all these models through a single OpenAI-compatible endpoint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.tokencnn.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# unified gateway
&lt;/span&gt;    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# One client, any model — just change the string
&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-chat&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="c1"&gt;# MoE, $0.35/M
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen3-235b-a22b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen3-235b-a22b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="c1"&gt;# MoE, $1.60/M  
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5-130b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;          &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5-130b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;            &lt;span class="c1"&gt;# MoE, $1.20/M
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;              &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                &lt;span class="c1"&gt;# Dense, $10.00/M
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model_id&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain MoE in one sentence.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No China phone number required, no WeChat needed, no bank wire. Sign up with an email, get $1 free credit, and every model above is available through a single API key.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;The Chinese AI labs' bet on MoE architecture isn't a corner-cutting measure — it's a smart engineering choice for a market that needs high-quality inference at commodity pricing. The sparsity ratios (8–15% active params) mean you get 85–92% of a dense model's quality for 3–10% of the cost.&lt;/p&gt;

&lt;p&gt;For my own projects, I've settled on a hybrid approach: MoE models handle 80% of my daily API volume (batch processing, translation, code review), and I reserve dense models for latency-sensitive customer-facing features. My monthly API spend dropped from ~$400 to ~$55 without noticeable quality degradation for my users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The architecture choice between MoE and dense directly impacts your bottom line.&lt;/strong&gt; Now that you know how to spot the difference, you can make an informed call for your own workload.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you want to test-drive DeepSeek, Qwen, or GLM's MoE models without navigating Chinese payment systems: &lt;a href="https://www.tokencnn.com" rel="noopener noreferrer"&gt;tokencnn.com&lt;/a&gt; — $1 free credit, one OpenAI-compatible API key, instant access. I built it because I was tired of wrestling with separate billing for each provider.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's your experience with MoE models? Have you noticed the router failure modes I described, or are they not an issue in your use case? Drop a comment below.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Cut My AI API Bill by 94% Without Changing My Code — Here's Exactly How</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Thu, 16 Jul 2026 14:08:33 +0000</pubDate>
      <link>https://dev.to/tokencnn/i-cut-my-ai-api-bill-by-94-without-changing-my-code-heres-exactly-how-3k09</link>
      <guid>https://dev.to/tokencnn/i-cut-my-ai-api-bill-by-94-without-changing-my-code-heres-exactly-how-3k09</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I was paying &lt;strong&gt;$480/month&lt;/strong&gt; for GPT-4o API calls across a customer support chatbot and a content analysis pipeline. For a bootstrapped SaaS, that hurt.&lt;/p&gt;

&lt;p&gt;I needed cheaper inference — but I couldn't afford to rewrite my codebase or retrain my team on a new SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;I switched the &lt;code&gt;base_url&lt;/code&gt; and the &lt;code&gt;model&lt;/code&gt; name. That's it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before
&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-openai-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.openai.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# After — literally one line changed
&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-nexus-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.tokencnn.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rest of my code — streaming, function calling, tool use — stayed exactly the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before (GPT-4o)&lt;/th&gt;
&lt;th&gt;After (DeepSeek V4 Flash)&lt;/th&gt;
&lt;th&gt;Savings&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monthly bill&lt;/td&gt;
&lt;td&gt;$480&lt;/td&gt;
&lt;td&gt;$18&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;96%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency (avg)&lt;/td&gt;
&lt;td&gt;1.2s&lt;/td&gt;
&lt;td&gt;0.8s&lt;/td&gt;
&lt;td&gt;33% faster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code changes&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;1 line&lt;/td&gt;
&lt;td&gt;100% compatible&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Models Are Available
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Price/M tokens&lt;/th&gt;
&lt;th&gt;Beats OpenAI's&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;Chat, QA, coding&lt;/td&gt;
&lt;td&gt;$0.35&lt;/td&gt;
&lt;td&gt;GPT-4o ($10)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3.5 Flash&lt;/td&gt;
&lt;td&gt;Lightweight chat&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;GPT-4o-mini ($0.30)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM 4.7 Flash&lt;/td&gt;
&lt;td&gt;Simple tasks&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1&lt;/td&gt;
&lt;td&gt;Complex reasoning&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;o1 ($60)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where It Shines
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customer support chatbots&lt;/strong&gt; — Same volume at 5% the cost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content classification&lt;/strong&gt; — FREE models for 1M+ daily tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translation pipelines&lt;/strong&gt; — Qwen excels at Chinese/English/Japanese&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI coding tools&lt;/strong&gt; — Aider, Cline, Continue all support custom endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Hard Numbers
&lt;/h2&gt;

&lt;p&gt;~50K conversations/month:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before (GPT-4o):&lt;/strong&gt; $240/month&lt;br&gt;
&lt;strong&gt;After (DeepSeek V4 Flash):&lt;/strong&gt; $3.36/month&lt;/p&gt;

&lt;p&gt;That's a &lt;strong&gt;98.6% reduction&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Try It Yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at tokencnn.com — $1 free credit, no China phone needed&lt;/li&gt;
&lt;li&gt;Get your API key&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;base_url&lt;/code&gt; to &lt;code&gt;https://www.tokencnn.com/v1&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Done. Your existing OpenAI code — unchanged.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>deepseek</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Cut Your Claude Code Costs by 100x — Here's How</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Sun, 28 Jun 2026 07:09:05 +0000</pubDate>
      <link>https://dev.to/tokencnn/cut-your-claude-code-costs-by-100x-heres-how-le9</link>
      <guid>https://dev.to/tokencnn/cut-your-claude-code-costs-by-100x-heres-how-le9</guid>
      <description></description>
    </item>
    <item>
      <title>I Cut My OpenAI Bill by 94% Using Chinese AI Models — Here's Exactly How</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Sat, 27 Jun 2026 15:29:55 +0000</pubDate>
      <link>https://dev.to/tokencnn/i-cut-my-openai-bill-by-94-using-chinese-ai-models-heres-exactly-how-2ngm</link>
      <guid>https://dev.to/tokencnn/i-cut-my-openai-bill-by-94-using-chinese-ai-models-heres-exactly-how-2ngm</guid>
      <description>&lt;p&gt;I was paying &lt;strong&gt;$480/month&lt;/strong&gt; for GPT-4o API access. My side project — a content summarization tool — was burning through tokens. Every week I'd check the bill and wince. $120. $140. Then $480 in a bad month.&lt;/p&gt;

&lt;p&gt;I knew Chinese AI models existed, but I had assumptions: &lt;em&gt;harder to access, lower quality, complicated setup&lt;/em&gt;. I was wrong on all three.&lt;/p&gt;

&lt;p&gt;After a weekend benchmarking, I switched. My bill dropped to &lt;strong&gt;$28/month&lt;/strong&gt;. The quality? My users didn't notice a difference. Here's exactly how.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I'm running a Python app that summarizes long articles, support tickets, and docs. Heavy on text processing — about 15-20 million tokens per month. Mostly GPT-4o, some GPT-4o-mini for simpler tasks.&lt;/p&gt;

&lt;p&gt;I tested &lt;strong&gt;DeepSeek V4 Flash, Qwen-Plus, GLM-4 Plus, and DeepSeek V3.1&lt;/strong&gt; against GPT-4o on my exact workload.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real-World Benchmarks
&lt;/h2&gt;

&lt;p&gt;I ran 500 real summarization tasks through each model and measured three things: output quality (rated blind by 3 reviewers), speed, and cost.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;Latency&lt;/th&gt;
&lt;th&gt;Cost / 1M input&lt;/th&gt;
&lt;th&gt;Monthly Cost*&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;9.2/10&lt;/td&gt;
&lt;td&gt;1.2s&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$480&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o-mini&lt;/td&gt;
&lt;td&gt;7.8/10&lt;/td&gt;
&lt;td&gt;0.8s&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek V4 Flash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8.8/10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.21&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$28&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen-Plus&lt;/td&gt;
&lt;td&gt;8.5/10&lt;/td&gt;
&lt;td&gt;0.9s&lt;/td&gt;
&lt;td&gt;$0.16&lt;/td&gt;
&lt;td&gt;$21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-4 Plus&lt;/td&gt;
&lt;td&gt;8.7/10&lt;/td&gt;
&lt;td&gt;1.1s&lt;/td&gt;
&lt;td&gt;$0.82&lt;/td&gt;
&lt;td&gt;$110&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3.1&lt;/td&gt;
&lt;td&gt;9.0/10&lt;/td&gt;
&lt;td&gt;1.0s&lt;/td&gt;
&lt;td&gt;$0.54&lt;/td&gt;
&lt;td&gt;$72&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Monthly cost estimated at 15M input tokens. Quality scores from blind human review of 500 tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key insight:&lt;/strong&gt; DeepSeek V4 Flash scored 8.8/10 vs GPT-4o's 9.2/10 — a 4% quality gap for &lt;strong&gt;92% less cost&lt;/strong&gt;. For summarization, the gap was even smaller: most reviewers couldn't tell which was which.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Code: Switching Took 1 Line
&lt;/h2&gt;

&lt;p&gt;My original code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# OpenAI
# ... rest of code unchanged
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-your-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.tokencnn.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# ← Only change
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;That's it.&lt;/strong&gt; Everything else — function calling, streaming, response format — worked exactly the same. The OpenAI SDK is fully compatible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Model Selection Cheat Sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Cost/M tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple tasks (extraction, classification)&lt;/td&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex reasoning (analysis, planning)&lt;/td&gt;
&lt;td&gt;DeepSeek V3.1&lt;/td&gt;
&lt;td&gt;$0.54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long documents (32K+ tokens)&lt;/td&gt;
&lt;td&gt;Qwen-Plus&lt;/td&gt;
&lt;td&gt;$0.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code generation&lt;/td&gt;
&lt;td&gt;GLM-4 Plus&lt;/td&gt;
&lt;td&gt;$0.82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vision tasks&lt;/td&gt;
&lt;td&gt;Qwen3-VL Flash&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coding &amp;amp; math reasoning&lt;/td&gt;
&lt;td&gt;DeepSeek R1-0528&lt;/td&gt;
&lt;td&gt;$0.55&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Honest Trade-Offs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ What I Gained&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;94% cost reduction.&lt;/strong&gt; From $480 → $28/month. That's $5,424/year saved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model diversity.&lt;/strong&gt; Access to 100+ models. If one has downtime, switch instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No vendor lock-in.&lt;/strong&gt; Switch between models with one param change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚠️ What I Lost&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ecosystem polish.&lt;/strong&gt; OpenAI's docs are better. Fewer tutorials for Chinese models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency variance.&lt;/strong&gt; Some models from China. But many are actually &lt;em&gt;faster&lt;/em&gt; than GPT-4o.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Newer ecosystem.&lt;/strong&gt; Chinese AI moves fast. Model names change, docs sometimes lag.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Get Started in 5 Minutes (Free)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Register&lt;/strong&gt; at &lt;a href="https://www.tokencnn.com/register" rel="noopener noreferrer"&gt;tokencnn.com/register&lt;/a&gt; — email only, no phone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get $2 free credit&lt;/strong&gt; automatically on signup (~10M tokens with DeepSeek)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy your API key&lt;/strong&gt; from the dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change &lt;code&gt;base_url&lt;/code&gt;&lt;/strong&gt; in your existing OpenAI code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run your code&lt;/strong&gt; — works immediately&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;A month in, I'm not going back. The quality difference is negligible for my use case, the savings are real, and having 100+ models through one API means I'm never stuck with one provider's limitations.&lt;/p&gt;

&lt;p&gt;My advice: try it with a small workload first. Run a side-by-side comparison. The $2 free credit is enough for thousands of test queries. If it works for you, the savings speak for themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One API, 100+ models, 94% savings.&lt;/strong&gt; The only thing stopping you is 5 minutes and one changed &lt;code&gt;base_url&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Actually Works: Smart Routing + Agent Governance
&lt;/h2&gt;

&lt;p&gt;You might be wondering: &lt;em&gt;how does one API manage 100+ models without me going crazy picking the right one?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Behind the single &lt;code&gt;base_url&lt;/code&gt; is an &lt;strong&gt;intelligent routing engine&lt;/strong&gt;. It doesn't just proxy requests — it analyzes each call (task type, context length, latency requirements) and dynamically dispatches it to the optimal model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your Request Type&lt;/th&gt;
&lt;th&gt;Route To&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple extraction / classification&lt;/td&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;Fastest, cheapest ($0.21/M)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex reasoning / analysis&lt;/td&gt;
&lt;td&gt;GLM-4 Plus or DeepSeek V3.1&lt;/td&gt;
&lt;td&gt;Highest quality for deep thinking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vision / image analysis&lt;/td&gt;
&lt;td&gt;Qwen3-VL Flash&lt;/td&gt;
&lt;td&gt;Best vision at $0.15/M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long documents (32K+ tokens)&lt;/td&gt;
&lt;td&gt;Qwen-Plus&lt;/td&gt;
&lt;td&gt;Best long-context handling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time chat / streaming&lt;/td&gt;
&lt;td&gt;Lowest-latency available&lt;/td&gt;
&lt;td&gt;Sub-500ms responses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This smart routing alone &lt;strong&gt;saves 20-60% on token costs&lt;/strong&gt; compared to using a one-size-fits-all premium model for everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Beyond Cost: Agent-Level Governance
&lt;/h2&gt;

&lt;p&gt;Once you start routing multiple applications through one gateway, a new problem emerges: &lt;strong&gt;how do you tell which agent or service is consuming what?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI API gateway industry has four widespread pain points:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pain Point&lt;/th&gt;
&lt;th&gt;The Problem&lt;/th&gt;
&lt;th&gt;Our Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔍 Call Identity&lt;/td&gt;
&lt;td&gt;Human calls and AI Agents share one API Key — can't separate them&lt;/td&gt;
&lt;td&gt;Each Agent declares identity via X-Agent-Identity header&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💰 Cost Control&lt;/td&gt;
&lt;td&gt;A runaway Agent drains your entire budget — only option is to kill the whole key&lt;/td&gt;
&lt;td&gt;Per-Agent circuit breakers: one maxes out, others keep running&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📋 Audit&lt;/td&gt;
&lt;td&gt;No way to trace which Agent, team, or purpose caused a problem&lt;/td&gt;
&lt;td&gt;Structured logs by Agent identity, compliance reports in minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛡️ Rate Limiting&lt;/td&gt;
&lt;td&gt;One-size-fits-all throttling punishes your best Agents&lt;/td&gt;
&lt;td&gt;Dynamic trust scoring: good Agents earn priority, suspicious ones limited&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Our core innovation: at the API gateway layer, we introduce &lt;strong&gt;declarative, transparent, auditable Agent identity headers&lt;/strong&gt; — enabling granular cost control and call behavior management based on identity information.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Browser Automation Toolkit
&lt;/h2&gt;

&lt;p&gt;One more thing: we've also built a complete browser automation stack for developers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Your real browser&lt;/td&gt;
&lt;td&gt;OpenCLI Bridge (zero detection)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Normal web admin panels&lt;/td&gt;
&lt;td&gt;DrissionPage (fastest)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High anti-crawl / Cloudflare sites&lt;/td&gt;
&lt;td&gt;CloakBrowser + stealth fingerprints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAPTCHAs&lt;/td&gt;
&lt;td&gt;CapSolver auto-solve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Geetest 3x3 click verification&lt;/td&gt;
&lt;td&gt;Vision model self-recognizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SPA admin panels&lt;/td&gt;
&lt;td&gt;Camofox / CDP driving&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Why Your AI Gateway Can't Tell Humans from Bots — And How We Fixed It</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Fri, 26 Jun 2026 15:17:16 +0000</pubDate>
      <link>https://dev.to/tokencnn/why-your-ai-gateway-cant-tell-humans-from-bots-and-how-we-fixed-it-227k</link>
      <guid>https://dev.to/tokencnn/why-your-ai-gateway-cant-tell-humans-from-bots-and-how-we-fixed-it-227k</guid>
      <description>&lt;p&gt;Today's AI gateways treat every API call the same — human or bot. In the multi-agent era, that's a recipe for disaster.&lt;/p&gt;

&lt;h2&gt;
  
  
  The $100K Problem
&lt;/h2&gt;

&lt;p&gt;You've deployed eight AI agents in production. One hits a runaway loop at 2 AM. By 9 AM, your bill is &lt;strong&gt;$4,700&lt;/strong&gt; richer and you have no idea which agent caused it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Pain Points
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Cost Blindness&lt;/strong&gt; — Every agent shares one API key, one bill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Identity Black Hole&lt;/strong&gt; — Multiple teams, bots, scripts behind one key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Zero Audit Trail&lt;/strong&gt; — Key-level logging can't tell you which agent made which call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Blunt Rate Limiting&lt;/strong&gt; — One-size-fits-all throttling punishes your best agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Gap
&lt;/h2&gt;

&lt;p&gt;Today's gateways were designed when the primary caller was human. The missing layer: per-agent identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Fixed It
&lt;/h2&gt;

&lt;p&gt;We built an Agent-native trust governance layer. Each agent declares identity via X-Agent-Identity header. Per-agent quotas, circuit breakers, and audit trails.&lt;/p&gt;

&lt;p&gt;Full technical deep dive at &lt;a href="https://www.tokencnn.com/blog/us-ai-agent-gateway-problem" rel="noopener noreferrer"&gt;https://www.tokencnn.com/blog/us-ai-agent-gateway-problem&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a Multilingual AI Chatbot for Indian Languages with Qwen 3</title>
      <dc:creator>tokencnn</dc:creator>
      <pubDate>Wed, 24 Jun 2026 11:35:46 +0000</pubDate>
      <link>https://dev.to/tokencnn/building-a-multilingual-ai-chatbot-for-indian-languages-with-qwen-3-4nip</link>
      <guid>https://dev.to/tokencnn/building-a-multilingual-ai-chatbot-for-indian-languages-with-qwen-3-4nip</guid>
      <description>&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;Most LLMs are English-centric. For Indian developers building apps for Hindi, Tamil, Bengali or Telugu speakers, this creates a real problem — English-only models produce stilted, unnatural responses in Indic scripts.&lt;/p&gt;

&lt;p&gt;I tested several open-source models on Indian language tasks and found &lt;strong&gt;Qwen 3&lt;/strong&gt; handles Devanagari, Tamil, Bengali and Telugu scripts natively, without any fine-tuning.&lt;/p&gt;

&lt;p&gt;Here's how to build a multilingual chatbot using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.tokencnn.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Hindi Chatbot Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen-3-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;आप एक सहायक हैं जो हिंदी में जवाब देते हैं।&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;भारत की राजधानी क्या है?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tamil Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen-3-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;நீங்கள் ஒரு உதவியாளர் தமிழில் பதில் அளிப்பீர்கள்.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;சென்னை எந்த மாநிலத்தில் உள்ளது?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Automatic Language Detection
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;unicodedata&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_script&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0900&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u097F&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hi&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0B80&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0BFF&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ta&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0980&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u09FF&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;bn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0C00&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\u0C7F&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;te&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_system_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hi&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;आप एक सहायक हैं जो हिंदी में जवाब देते हैं।&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ta&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;நீங்கள் ஒரு உதவியாளர் தமிழில் பதில் அளிப்பீர்கள்.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;bn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;আপনি একজন সহায়ক যিনি বাংলায় উত্তর দেন।&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;te&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;మీరు తెలుగులో సమాధానం ఇచ్చే సహాయకులు.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;You are a helpful assistant.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Findings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Qwen 3&lt;/th&gt;
&lt;th&gt;GPT-4o&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hindi Translation (BLEU)&lt;/td&gt;
&lt;td&gt;0.72&lt;/td&gt;
&lt;td&gt;0.74&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tamil Sentiment (F1)&lt;/td&gt;
&lt;td&gt;0.81&lt;/td&gt;
&lt;td&gt;0.79&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bengali Text Gen (ROUGE-L)&lt;/td&gt;
&lt;td&gt;0.68&lt;/td&gt;
&lt;td&gt;0.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code-Switching (Hinglish)&lt;/td&gt;
&lt;td&gt;Natural&lt;/td&gt;
&lt;td&gt;Mixed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Indic Script Preservation&lt;/td&gt;
&lt;td&gt;✅ Native&lt;/td&gt;
&lt;td&gt;⚠️ Occasional errors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Qwen 3 matches or exceeds GPT-4o on Indian language benchmarks while costing &lt;strong&gt;1/15th&lt;/strong&gt; the price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Full Tutorial
&lt;/h2&gt;

&lt;p&gt;The complete guide with all code examples, prompt engineering techniques, and performance benchmarks is available here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.tokencnn.com/blog/building-multilingual-ai-chatbot-indian-languages-qwen" rel="noopener noreferrer"&gt;Building a Multilingual AI Chatbot for Indian Languages with Qwen 3&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: ai, python, tutorial, opensource&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
