[AI辅助创作] 探究多模型协作(一):愿景与前言
前言
我属于很早就把 AI Coding 放进真实工作流里的一批用户。甚至在成熟的 Coding Agent 出现之前,我就已经尝试让 GPT App通过http接口调用本地 Bash,执行命令,操作开发环境,修改代码,完成真实工程任务。
从去年到现在,我一直高频使用 AI Coding。在这段过程中,出现过大量营销上很厉害,但一使用就拉胯的模型。我逐渐形成了一个非常简单的认知,新模型一定比旧模型好。
GPT 新模型出了?直接换最新的。有了更强的云端模型,就直接用更强的。过去根本没有必要研究不同模型的边界。
但最近几代模型的使用体验开始打破这个认知。
同一个名字,能力水平却可能不同
我真正不满的是,同一个名字的云端模型,在不同时间可能表现出明显不同的能力水平。
长期使用下来的主观体验是,新模型刚发布后的前一两周,往往表现非常强;随后可能出现明显的能力下降。有时不仅新模型下降,旧模型的体验也会变化。
厂商背后可能存在路由策略(routing)与算力调度,也可能涉及风控和推理预算等机制。用户无法知道自己这一刻真正拿到的是什么能力水平。
模型能力对用户而言是不透明(opaque)且不可预测(unpredictable)的。
模型偶尔会犯错,这种能力波动给我带来的问题更大,尤其是我已经围绕模型设计了一套开发工作流。
工作流和模型智能水平是耦合的
AI Coding 不是普通聊天。一套为高智能模型设计的工作流,本身隐含了一个假设,执行这套工作流的模型足够聪明。
对于很强的模型,不需要把任务拆得特别细,只需要告诉它目标是什么。它能够自己理解意图(intent),自己规划路线,自己发现中间问题,自己补充没有明确写出的约束。
甚至很多时候,给强模型写得太详细,反而会限制(constrain)它的发挥。
但是弱一些的模型完全不同。它可能无法正确理解抽象目标,意图识别错误,做到一半就停止,或者沿着错误方向一直执行。它也可能不知道什么时候需要继续调查,无法主动发现方案里的漏洞。
弱模型需要更明确的路径、更细的步骤和更强的约束。工作流和模型智能水平其实是耦合(coupled)的。
我按照一个“聪明模型”设计完整开发工作流之后,如果云端模型突然降智,整个工作流都会随之退化。最终体现出来的就是代码质量、设计质量和测试质量一起下降,而我可能直到很后面才发现。
这也是我最终转向本地模型最重要的原因。
软件工程需要稳定产出
软件工程真正需要的是稳定产出,而不只是峰值智力。
“我明天还能不能得到和今天大致相同的质量?”企业或者真实项目需要回答这个问题。一个模型状态好的时候特别聪明,还不足以让我确定这套工作流能否持续使用。
尤其是我已经开始让 AI 修改代码,做架构设计和调查 Bug,也让它写测试,做验证,做技术决策。模型的能力波动就会直接变成工程风险(engineering risk)。
我的关注点逐渐从“哪个模型最聪明”,变成“哪个系统能够稳定地产出”。这是整个系列一个很重要的价值观转变。
本地模型提供了一个固定、可重复研究的对象。我可以围绕它研究能力边界,再据此设计工作流。
我只关心软件开发领域的能力边界
这个系列的范围需要明确。我只关心 AI 在软件开发领域的能力边界。
在写作、知识问答和聊天等很多场景里,模型之间即使有一定能力差距,用户也未必能够明显感受到。即使偶尔降智,后果通常也没那么严重,很多情况下直接使用最新模型已经足够。
但是 Coding 不一样。复杂工程任务中,一个非常小的认知差异,可能造成完全不同的结果。
尤其是理解大型代码库和架构设计,Debug 与根因分析(root cause analysis),还有判断隐藏约束、识别错误假设,以及多步骤工程任务,这些地方非常容易暴露模型真正的智能上限。
编程恰恰是观察模型能力边界非常好的实验场。
本地模型与云端模型,差距有多大?
至少在我最熟悉的 macOS 安全开发领域里,我开始发现,最新、最强的云端模型,与一个合适的本地模型之间,差距可能没有想象中那么大。
无论云端模型还是本地模型,很多复杂问题都做不到“一遍直接得到满意答案”。它们都需要不断追问,需要 Challenge 和验证,找漏洞,修正,再推导。
我开始产生一个更大胆的怀疑,至少在某些软件工程领域,AI Coding 的模型能力是否已经进入边际收益(marginal returns)快速下降的阶段?
对我当前的 workload 来说,最新云端模型带来的额外价值正在缩小。过去“永远使用最新最强模型”的策略开始失效。
我并不知道不同模型真正能做到什么
过去我一直无脑使用最强云端模型,所以实际上存在一个认知盲区(blind spot),我并不知道不同模型真正能做到什么。
小模型到底弱在哪里?它是不知道,还是不会推理?它能理解多抽象的任务?
什么任务必须强模型做?什么任务小模型完全够用?如果提供详细路线,小模型能不能完成强模型的任务?
如果加入验证(verification),它的能力边界能否继续向外扩展?快速但较弱的模型,能否凭借大量反馈循环击败慢但更聪明的模型?云端模型真正不可替代的能力到底是什么?
这些问题决定了我应该怎样使用不同的模型。过去直接选择最强云端模型,我很少需要回答它们。现在想建立一套稳定的 AI Coding 系统,就必须真正理解不同模型的能力边界。
我部署本地模型,是为了理解模型。理解以后,才能设计稳定系统。
怎样把不同智能水平的模型组织起来?
公司从来不是由一群天才组成的。
少数能力极强的人创造非常高的杠杆(leverage),大量普通能力的人负责执行不同层级的任务,而真正让组织产生稳定价值的是分工、流程和系统。
模型未来可能也是如此。
怎样把不同智能水平的模型组织起来,让整个系统表现得比其中任何一个模型都更可靠?这是我想在这个系列里研究的总命题。
最终目标,是建立一个由不同能力模型组成的稳定 AI Coding 系统。