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_urlmodel 名,就能切到不同厂商甚至本地模型——像不同品牌的充电器都用了 USB-C 口。
一套代码,改 base_url 就切不同"插座" 你的同一套调用代码 OpenAI 风格 海外云 官方 base_url 国产云 改成它的 base_url 本地 Ollama localhost 地址
图注:接口统一后,"换模型"退化成"改配置",不用重写业务逻辑。
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 次走大模型 → 总账单可能降到原来的三成以下,而用户几乎感知不到质量差别。这就是"拧螺丝的活别请专家"。
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 的效果天差地别。
← Day 14 结构化输出 Day 16 · Prompt 基础 →