Day 15 / 共 68 天 · 阶段2 大模型基础
多模型 & 模型路由:贵活便宜活各就各位
前四天你把"一个模型"用得又省、又快、又稳、还能吐结构化结果。今天收尾阶段 2:认识市面上的模型全家福(OpenAI/Claude/国产/开源本地),并学会一个省钱利器——模型路由:按任务难度把活派给不同模型。学完你就打通了"大模型基础",明天正式进入提示词工程。
📍 你在阶段 2「大模型基础」里的位置(今天收尾)
D10 模型是什么→
D11 调 API→
D12 流式输出→
D13 参数/成本/延迟→
D14 结构化输出→
D15 多模型&路由
💡 今天用「找师傅干活 / 派工」这套世界观兜住全场
把不同的模型想成不同的手艺人:顶级大模型(GPT/Claude 里最强档)=请来的资深专家顾问,啥难题都能啃,但出场费高、来得慢;小模型=麻利的学徒,简单活干得又快又便宜;国产模型=本地能手,性价比高、沟通顺、数据不出境;开源本地模型(Ollama)=你自己养在家的员工,管饭(要台好机器)但干活不额外花钱、私密。模型路由=你这个包工头的派单本事:拧螺丝的活派给学徒,攻坚的活才请专家。记住"看活儿难易,派对人",今天全通。
L01
为什么不能只用一个模型
🤔 痛点既然某个最强模型啥都能干,我全程只用它不就完事了?为什么公司里的 Agent 总是同时接好几个模型?
💡 本质(一句话)模型之间在能力、价格、速度、隐私、合规上各有取舍,全用最强的既贵又慢又浪费——就像装修不会所有活都请首席设计师,拧螺丝叫学徒就行。
选模型时,工程师通常在这几个维度上权衡:
- 能力:难推理、长文档、多语言,强模型更稳。
- 成本:强模型每 token 可能是小模型的十几倍(回忆 Day 13 计费)。
- 速度:小模型延迟低,适合高频、要秒回的场景。
- 隐私/合规:数据不能出境或不能上公网时,用国产云或本地开源模型。
- 可用性:多接一家做备份,一家挂了能切换(Day 54 会讲降级)。
L02
主流玩家全景(认脸即可)
🤔 痛点OpenAI、Claude、DeepSeek、通义、文心、Llama……名字一堆,转行面试被问到"你用过哪些模型",我该怎么归类?
💡 本质(一句话)按"谁家的 + 闭源还是开源"分成几桌就清楚了,你不用全用过,但要能说清各桌适合什么活。
| 阵营 | 代表 | 派工类比 | 典型适合 |
|---|---|---|---|
| 海外闭源(云 API) | OpenAI (GPT 系)、Anthropic (Claude 系)、Google (Gemini 系) | 资深专家顾问 | 难推理、要最高质量 |
| 国产闭源(云 API) | DeepSeek、通义千问、文心一言、Kimi、智谱等 | 性价比本地能手 | 中文场景、数据合规、控成本 |
| 开源(可自己部署) | Llama、Qwen 开源版、DeepSeek 开源版等 | 自己养的员工 | 私密数据、离线、长期省钱 |
👶 一句话记住"闭源=租专家(按次付费、能力强、数据走人家服务器)","开源=雇自己人(先买机器,之后干活不额外花钱、数据留自己家)"。面试这么答就很清楚。
各家型号更新极快、能力排名常变,别去背某个模型此刻是不是第一;记住"分桌"和"选型维度"才是长期有用的。
L03
开源本地:用 Ollama 在自己电脑跑模型
🤔 痛点"本地跑模型"听着很高端,是不是要很强的算法功底?我这台普通电脑能玩吗?
💡 本质(一句话)Ollama 让"在自己电脑跑开源模型"简单到像装个 App——一条命令下载、一条命令运行,不额外花钱、数据不出机器。它就是你"养在家的员工"的落地方式。
# 1. 到 ollama.com 下载安装(像装普通软件)
# 2. 拉一个小的开源模型(名字以官方清单为准,这里示意)
ollama pull llama3.2
# 3. 直接在终端跟它聊
ollama run llama3.2 "用一句话解释什么是模型路由"
关键在于:Ollama 启动后会开一个本地服务,而且它兼容 OpenAI 的接口格式。这意味着你写好的调用代码,只要把"地址"指向本地,就能跑本地模型——这正是下一讲"统一接口"的威力。
👶 一句话记住本地小模型能力比不上顶级云模型,但免费、私密、离线可用,拿来做简单活、练手、处理敏感数据非常香。机器一般(8G~16G 内存)就能跑小号模型。
L04
统一接口:换模型只改一两行
🤔 痛点接了三家模型,难道要学三套 SDK、写三套代码?以后想换供应商是不是要大改?
💡 本质(一句话)行业里很多平台都兼容"OpenAI 风格"的接口,所以你用同一套写法,只改
base_url 和 model 名,就能切到不同厂商甚至本地模型——像不同品牌的充电器都用了 USB-C 口。图注:接口统一后,"换模型"退化成"改配置",不用重写业务逻辑。
from openai import OpenAI
# 同一套写法,靠 base_url + api_key + model 切换目标
# ① 海外云:用默认 base_url(省略)
gpt = OpenAI()
# ② 国产云(很多都兼容 OpenAI 格式,地址以官方文档为准)
cn = OpenAI(base_url="https://某国产平台/v1", api_key="你的key")
# ③ 本地 Ollama(地址固定在本机)
local = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
def chat(client, model, text): # 业务逻辑完全一样
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": text}],
)
return r.choices[0].message.content
print(chat(local, "llama3.2", "你好")) # 换一行就切到本地模型
各平台是否兼容、base_url 具体填什么,以官方文档为准;核心是理解"接口统一 → 换模型只改配置"这个工程价值。
L05
模型路由:按难度派单
🤔 痛点知道有大小模型了,可到底哪些活该给小模型、哪些该给大模型?总不能靠感觉吧?
💡 本质(一句话)模型路由就是先判断"这活多难/多长/多重要",再把它派给刚好够用的最便宜模型——大量简单请求走小模型,省下的钱惊人,质量还基本不掉。
常见的路由判断依据(由易到难升级):
| 判断依据 | 示例规则 | 派给谁 |
|---|---|---|
| 任务类型 | 分类/格式化/翻译等"套路活" | 小模型 |
| 输入长度 | 超长文档、需要跨段推理 | 大模型(能力+长上下文) |
| 关键词/意图 | 命中"复杂""分析""为什么" | 大模型 |
| 先小后大(升级) | 小模型先试,不合格再升大模型 | 先小,兜底大 |
📝 例子:路由省了多少钱(示意)
某客服 Agent 每天 10000 次请求,其中 8000 次是简单意图分类、2000 次是复杂问答。
全用大模型:10000 次都按贵单价算。
路由后:8000 次走小模型(便宜十几倍)、只有 2000 次走大模型 → 总账单可能降到原来的三成以下,而用户几乎感知不到质量差别。这就是"拧螺丝的活别请专家"。
全用大模型:10000 次都按贵单价算。
路由后:8000 次走小模型(便宜十几倍)、只有 2000 次走大模型 → 总账单可能降到原来的三成以下,而用户几乎感知不到质量差别。这就是"拧螺丝的活别请专家"。
L06
路由实战:一个能跑的最小路由器
🤔 痛点能不能给我一段真能跑、又看得懂的路由代码,让我立刻有感觉?
💡 本质(一句话)入门级路由就是一个普通的 if/else 派单函数:先用几条便宜的规则判断难度,再决定叫哪个模型。没有魔法,先能用起来最重要。
from openai import OpenAI
client = OpenAI()
CHEAP = "gpt-4o-mini" # 学徒:便宜快,干套路活
STRONG = "gpt-4o" # 专家:贵且强,干攻坚活(名字示意,以实际为准)
def route(question: str) -> str:
"""便宜的规则先判断难度,返回该用哪个模型。"""
hard_words = ["为什么", "分析", "对比", "推理", "证明", "设计方案"]
if len(question) > 200: # 依据1:输入很长 -> 上专家
return STRONG
if any(w in question for w in hard_words): # 依据2:命中"难词" -> 上专家
return STRONG
return CHEAP # 其余套路活 -> 学徒
def ask(question: str):
model = route(question) # 先派单
print(f"[路由] 本次交给:{model}")
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": question}],
temperature=0.2,
)
return r.choices[0].message.content
print(ask("把这句话翻译成英文:你好")) # 套路活 -> 学徒(CHEAP)
print(ask("请分析为什么这段代码会内存泄漏……")) # 难活 -> 专家(STRONG)
👶 小白:真项目也是写死这些"难词"吗?感觉好土。
👨🏫 老师:能用简单规则解决的,就别上复杂方案——这本身是工程智慧。进阶做法有:用一个便宜小模型先给难度打分再决定、按"先小后大"升级、结合成本预算动态调。但它们都是在这个 if/else 骨架上长出来的。你现在能说清"为什么要路由、怎么落地",面试就够用了。
👶 一句话记住路由 = "先花几乎 0 成本判断难度,再把活派给刚好够用的最便宜模型"。它和 Day 13 的缓存、Day 56 的成本治理是一条线上的省钱三兄弟。
L07
今日小结 + 动手 10 分钟(阶段 2 收尾)
🧠 今天你应该能回答
- 为什么不只用一个最强模型?(能力/成本/速度/隐私/可用性的权衡)
- 模型阵营怎么分?(海外闭源 / 国产闭源 / 开源本地)
- 闭源和开源的核心区别?(租专家 vs 雇自己人)
- Ollama 解决什么?(一条命令在本地跑开源模型,免费私密)
- 为什么换模型常常只改 base_url?(很多平台兼容 OpenAI 风格接口)
- 模型路由是什么、为什么省钱?(按难度派单,简单活走小模型)
🎉 恭喜,你已完成阶段 2「大模型基础」!从"模型是什么"到"调用、流式、参数成本、结构化、多模型路由",你已经能把大模型当成一个可控、可省、可靠的工具来用。
✋ 动手(约 10 分钟)
目标:亲手体验"路由"。存成 day15.py,先只用一个模型也能跑(把 STRONG/CHEAP 都设成你有的模型名即可)。
from openai import OpenAI
client = OpenAI()
CHEAP, STRONG = "gpt-4o-mini", "gpt-4o" # 换成你实际能用的模型名
def route(q):
if len(q) > 120 or any(w in q for w in ["为什么", "分析", "对比"]):
return STRONG
return CHEAP
for q in ["翻译成英文:早上好",
"为什么天空是蓝色的?请详细分析原理"]:
m = route(q)
print(f"问题:{q}\n -> 路由到 {m}")
r = client.chat.completions.create(
model=m, messages=[{"role": "user", "content": q}], max_tokens=120)
print(" 答:", r.choices[0].message.content.strip(), "\n")
进阶(选做):装个 Ollama,把 CHEAP 换成本地模型,体验"简单活走本地、免费"。
明日预告 · Day 16 Prompt 基础(进入阶段 3):模型和参数你都会用了,但真正决定输出好坏的,往往是你"怎么说话"。明天进入提示词工程——这是 JD 高频、性价比极高的一块。先学四招立竿见影的基础技巧:明确指令、角色设定、给例子(few-shot)、用分隔符隔离数据。同一句需求,好 prompt 和烂 prompt 的效果天差地别。