From 82a2d3eddeeb7406cde0ebbc4dcefee166548d38 Mon Sep 17 00:00:00 2001 From: Andrew Park Date: Sat, 11 Jul 2026 14:12:45 -0700 Subject: [PATCH] hybrid: replace guessed OpenRouter Qwen prices with list prices The Qwen3.5/3.6 entries were active-param-scaled guesses with a comment saying to verify them before trusting the cost-aware reward. Verified against openrouter.ai: every one of them was low on output, by 1.5x (9B) to 5.2x (27B), with the 122B off by 3.5x. The reward reads PRICES directly, so it has been undercharging the mid and large Qwen experts the whole time. qwen3.6-27b is not listed on OpenRouter; charge it at qwen3.5-27b's quote, which is the nearest real one. --- src/openjarvis/agents/hybrid/_prices.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/openjarvis/agents/hybrid/_prices.py b/src/openjarvis/agents/hybrid/_prices.py index 9cf61a8d..64e68787 100644 --- a/src/openjarvis/agents/hybrid/_prices.py +++ b/src/openjarvis/agents/hybrid/_prices.py @@ -35,13 +35,16 @@ PRICES: dict[str, tuple[float, float]] = { "qwen/qwen3-32b": (0.10, 0.30), "meta-llama/llama-3.3-70b-instruct": (0.13, 0.39), # OpenRouter slugs for the orchestrator's local-OSS class when routed via - # OpenRouter instead of self-hosted vLLM. ESTIMATES — no public list price - # exists yet for these Qwen3.5/3.6 builds; scaled by active-param size. - # VERIFY against openrouter.ai before trusting the cost-aware reward numbers. - "qwen/qwen3.5-9b": (0.05, 0.10), - "qwen/qwen3.6-27b": (0.10, 0.30), - "qwen/qwen3.5-122b-a10b": (0.20, 0.60), - "qwen/qwen3.5-397b-a17b": (0.40, 1.20), + # OpenRouter instead of self-hosted vLLM. OpenRouter list price, checked + # 2026-07-11. These replace earlier active-param-scaled guesses that were + # 2-5x low on output; the cost-aware reward reads these directly, so the + # guesses were systematically undercharging the mid/large Qwen experts. + "qwen/qwen3.5-9b": (0.10, 0.15), + # qwen3.6-27b is not listed on OpenRouter; qwen3.5-27b is the nearest real + # quote and is what we charge for it. + "qwen/qwen3.6-27b": (0.195, 1.56), + "qwen/qwen3.5-122b-a10b": (0.26, 2.08), + "qwen/qwen3.5-397b-a17b": (0.385, 2.45), } # Models whose API rejects an explicit `temperature` param — callers should