You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Route Acceptance Tests for DeepSeek Pro and Flash Worker Splits (September 2026)
#78
When a team splits AI work between a fast route and a deeper reasoning route, the first failure mode is usually not the model call itself. The failure is that nobody can explain why a request landed on one worker instead of the other.
For an OpenAI-compatible SDK, I think a DeepSeek Pro / Flash split needs acceptance tests before it becomes production routing policy. The tests should not try to prove that one model is universally better. They should prove that the application can classify work, pin the route decision, preserve the pricing snapshot, and reject ambiguous jobs before they create confusing usage rows.
I checked AIWave's live pricing endpoint for this discussion on Sep 4, 2026. The /api/pricing response returned success=true, 63 route records, pricing version a42d372ccf0b5dd13ecf71203521f9d2, auto_groups=["default"], and group ratios of default=3 and vip=1. A few route fields from that same snapshot were:
Model
model_ratio
completion_ratio
cache_ratio
Enabled groups
deepseek-v4-flash
0.319
3
0.0318
default, vip, svip
deepseek-v4-pro
0.957
3
0.0333
default, vip, svip
glm-5.1
1.05
3.142857
0.32381
default, vip, svip
kimi-k3
2.25
5
0.2
svip, default, vip
qwen3-max
0.7810988945590882
4
absent
vip, svip, default
Those are route catalog fields, not a complete invoice. The final debit still depends on account group, token buckets, cache treatment, output size, retries, and the pricing version accepted at request time. That is exactly why the worker split should have tests that produce evidence, not only configuration.
The acceptance suite I would want has five fixtures.
First, a "latency-sensitive summary" fixture should always resolve to Flash unless the caller explicitly asks for deeper reasoning. The test input can be small, deterministic, and low temperature. The expected evidence is not just served_model=deepseek-v4-flash; it should also include the route reason, pricing version, token ceiling, and account group used for estimation.
Second, a "multi-step planning" fixture should resolve to Pro when the job contract says the answer requires traceable decomposition. This is not about making the SDK judge semantic quality after the fact. It is about proving that the app's own workload label maps to the intended route before dispatch.
Third, a "large repeated prefix" fixture should verify cache assumptions. If the workload depends on stable system instructions and repeated context, the SDK should record whether the request was expected to benefit from cache accounting. A route split that ignores cache shape can look correct in unit tests and still mislead finance later.
Fourth, a "retry class" fixture should separate transport retries from model-executed retries. If the first attempt never reached the provider, the usage row should not be interpreted the same way as two executed attempts. The SDK can expose this without storing raw prompts or completions.
Fifth, an "ambiguous route" fixture should fail closed. If the caller sends a job without a workload class, output cap, or route policy, the SDK should return a typed preflight error instead of silently picking a worker.
The boundary matters. The gateway owns live route identity, account group, pricing version, and final usage. The SDK owns the developer-facing contract: before a workload runs, can the application prove that its worker split will produce interpretable evidence?
Open question: should route acceptance probes be part of the SDK test helpers, or should they live as examples that teams copy into their own CI?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
When a team splits AI work between a fast route and a deeper reasoning route, the first failure mode is usually not the model call itself. The failure is that nobody can explain why a request landed on one worker instead of the other.
For an OpenAI-compatible SDK, I think a DeepSeek Pro / Flash split needs acceptance tests before it becomes production routing policy. The tests should not try to prove that one model is universally better. They should prove that the application can classify work, pin the route decision, preserve the pricing snapshot, and reject ambiguous jobs before they create confusing usage rows.
I checked AIWave's live pricing endpoint for this discussion on Sep 4, 2026. The
/api/pricingresponse returnedsuccess=true, 63 route records, pricing versiona42d372ccf0b5dd13ecf71203521f9d2,auto_groups=["default"], and group ratios ofdefault=3andvip=1. A few route fields from that same snapshot were:model_ratiocompletion_ratiocache_ratiodeepseek-v4-flash0.31930.0318default,vip,svipdeepseek-v4-pro0.95730.0333default,vip,svipglm-5.11.053.1428570.32381default,vip,svipkimi-k32.2550.2svip,default,vipqwen3-max0.78109889455908824vip,svip,defaultThose are route catalog fields, not a complete invoice. The final debit still depends on account group, token buckets, cache treatment, output size, retries, and the pricing version accepted at request time. That is exactly why the worker split should have tests that produce evidence, not only configuration.
The acceptance suite I would want has five fixtures.
First, a "latency-sensitive summary" fixture should always resolve to Flash unless the caller explicitly asks for deeper reasoning. The test input can be small, deterministic, and low temperature. The expected evidence is not just
served_model=deepseek-v4-flash; it should also include the route reason, pricing version, token ceiling, and account group used for estimation.Second, a "multi-step planning" fixture should resolve to Pro when the job contract says the answer requires traceable decomposition. This is not about making the SDK judge semantic quality after the fact. It is about proving that the app's own workload label maps to the intended route before dispatch.
Third, a "large repeated prefix" fixture should verify cache assumptions. If the workload depends on stable system instructions and repeated context, the SDK should record whether the request was expected to benefit from cache accounting. A route split that ignores cache shape can look correct in unit tests and still mislead finance later.
Fourth, a "retry class" fixture should separate transport retries from model-executed retries. If the first attempt never reached the provider, the usage row should not be interpreted the same way as two executed attempts. The SDK can expose this without storing raw prompts or completions.
Fifth, an "ambiguous route" fixture should fail closed. If the caller sends a job without a workload class, output cap, or route policy, the SDK should return a typed preflight error instead of silently picking a worker.
One possible test record:
{ "fixture": "latency_sensitive_summary", "requested_model": "deepseek-v4-flash", "served_model": "deepseek-v4-flash", "route_reason": "workload_class:short_summary", "pricing_version": "a42d372ccf0b5dd13ecf71203521f9d2", "effective_group": "vip", "max_output_tokens": 700, "retry_class": "not_retried" }For
aiwave-sdk-python, I would keep this as an optional helper around the normal client:The boundary matters. The gateway owns live route identity, account group, pricing version, and final usage. The SDK owns the developer-facing contract: before a workload runs, can the application prove that its worker split will produce interpretable evidence?
Open question: should route acceptance probes be part of the SDK test helpers, or should they live as examples that teams copy into their own CI?
All reactions