实战教程展示如何根据任务复杂度智能选择模型(快速廉价 vs. 强力昂贵),含具体定价对比和 OpenAI 兼容端点实现。DeepSeek V4 Flash ¥0.206 vs GLM-5 ¥1.55 的成本差异可驱动智能路由决策。
生产 AI 系统很少需要为每个请求都使用同一个模型。短分类任务、代码审查和长推理工作流对延迟和质量的要求各不相同。虽然将所有三类任务都发送到一个高级模型在操作上很简单,但这会让成本和故障行为变得更难控制。
本教程在 OpenAI 兼容的端点之上构建了一个小型模型路由器。示例使用的是两个模型,它们在 2026-08-03 AIWave 公开价格目录中可见:
deepseek-v4-flash:每 100 万 token 输入价格 $0.206,输出价格 $0.412。
glm-5:每 100 万 token 输入价格 $1.55,输出价格 $4.96。
上述价格是撰写时 AIWave 的实时费率,根据目录的模型和完成比例计算。定价会随时间变化,因此生产代码应该将 AIWave 定价页面作为真实来源,而不是硬编码永久费率。
当工作负载在复杂性上有明显差异时,路由很有用。Flash 模型可以以更低的成本处理简短回答、数据提取和常规转换。更强大的推理模型可以保留用于模糊需求、多步骤规划和代码审查,这些地方答案错误的成本远高于额外 token 的消耗。
重要的设计目标不是"总是选择最便宜的模型"。而是使权衡显式化和可测量化:
例如,一个包含 2,000 个输入 token 和 800 个输出 token 的请求,在上述费率下,使用 DeepSeek V4 Flash 的成本约为 $0.00074,而使用 GLM-5 的成本约为 $0.00708。计算方式为 (input_tokens / 1,000,000 × input_price) + (output_tokens / 1,000,000 × output_price)。实际账单取决于返回的 token 数和任何重试。
AIWave 提供标准的 Chat Completions 响应格式。现有 OpenAI SDK 代码只需要一个不同的基础 URL 和在 AIWave 仪表板中创建的密钥。将下面的占位符保留在源代码控制中;永远不要提交真实的 API 密钥。
from openai import OpenAI
client = OpenAI(
base_url="https://aiwave.live/v1",
api_key="YOUR_API_KEY_HERE", # Create a key at https://aiwave.live/
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "Return concise, structured answers."},
{"role": "user", "content": "Extract the three action items from this text."},
],
max_tokens=400,
)
print(response.choices[0].message.content)
模型名称是目录标识符,不是营销别名。在部署前,比对配置中的标识符与当前模型目录。
第一个版本可以故意保持简单。根据调用者提供的任务类型进行路由,并保持一个安全的默认值。这比要求另一个模型对每个请求进行分类的路由器更容易测试。
from openai import OpenAI
client = OpenAI(base_url="https://aiwave.live/v1", api_key="YOUR_API_KEY_HERE")
MODEL_BY_TASK = {
"routine": "deepseek-v4-flash",
"reasoning": "glm-5",
}
def complete(prompt: str, task: str = "routine") -> str:
model = MODEL_BY_TASK.get(task, MODEL_BY_TASK["routine"])
result = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.2 if task == "reasoning" else 0.0,
)
return result.choices[0].message.content or ""
print(complete("Turn this support ticket into JSON fields: priority, owner, next_step."))
print(complete("Review this migration plan and list hidden failure modes.", "reasoning"))
在真实的服务中,将路由决策放在一个小模块中,并记录选定的模型、延迟、状态码和 token 使用情况。不要记录包含客户机密的 prompt。请求 ID 让你可以将应用指标与提供商响应关联起来,而无需存储敏感内容。
三个保护措施通常足以让第一个路由器对生产友好:
为每个任务类设置最大输出 token 预算。短提取不应该被允许生成长论文。
使用指数退避重试瞬态 429 和 5xx 响应,但限制重试次数,使中断无法倍增成本。
保持一个回退策略。如果 GLM-5 不可用,对于高风险工作流故障关闭,或仅在调用者接受质量降级时路由到 DeepSeek V4 Flash。
回退必须对操作人员可见。在内部遥测中返回选定的模型和 fallback_used 标志;否则无声的质量变化可能看起来像是 prompt 回退。
至少收集请求数、输入 token、输出 token、延迟百分位数、错误率和按模型估计的美元成本。以下助手从 SDK 返回的使用情况计算估计值:
PRICE_PER_MILLION = {
"deepseek-v4-flash": (0.206, 0.412),
"glm-5": (1.55, 4.96),
}
def estimate_usd(model: str, prompt_tokens: int, completion_tokens: int) -> float:
input_price, output_price = PRICE_PER_MILLION[model]
return (prompt_tokens * input_price + completion_tokens * output_price) / 1_000_000
将此表视为一个有日期的快照,而不是永久配置。在账单审查前从 AIWave 定价刷新它,并在快照旁边保留生效日期。如果你的组织要求对定价变更进行审批,使刷新成为一个已审查的配置变更。
不要仅基于用户可见的关键字进行路由,也不要将私有数据发送到不需要它的分类器。当严格的可重复性、一个厂商的安全控制或单一延迟 SLO 比成本更重要时,单个模型可能更可取。同样,如果你没有足够的流量来测量质量和支出,从一个模型开始,并在添加路由逻辑之前对其进行检测。
对于已经使用 OpenAI SDK 的团队,迁移路径刻意保持很小:创建 AIWave 密钥,更改基础 URL,选择目录模型,并在现有服务边界后面添加路由器。Chat Completions 文档涵盖请求参数和流式处理细节。
验证模型 ID 和定价页面上的当前美元输入/输出费率。
在更改流量前,通过两个路由运行固定的评估集。
从一小部分常规请求开始,比对质量、延迟和成本。
对错误率、回退率和每日支出进行告警——不仅仅是请求数。
在示例中保留 YOUR_API_KEY_HERE,并在密钥管理器中存储真实密钥。
成本感知的路由器首先是一个测量系统,其次才是模型选择规则。一旦遥测是可信的,你可以添加缓存、批处理或第三个模型,而不会失去对为什么路由请求或它花费了多少的可见性。