专栏 · Agent 工程手艺 › 第 97 期 · AGENT 工程 · 收录于 2026 年 8 月 16 日
把任务和模型分开,效果出乎意料地好——Maxime Rivest 与 Isaac Miller MR
Maxime Rivest · AI Engineer
4,714 观看
108 赞
2.3% 点赞率
4 评论
62.7万 频道订阅
数据截至 8 月 27 日
▶ 双人对谈 · 本期速读电台 00:00 / 25:26
1× TL;DR · 三句话
一 AI 程序应该像写函数一样写 :给一个会反复执行的任务定死"输入什么、输出什么"的契约,把模型、prompt、agent、工具这些实现细节全关进盒子里——外面的集成代码永远不用改,里面爱怎么换怎么换。→ 详细 二 要把一个任务刻画完整,需要三样东西 :spec(应该发生什么,用自然语言指令)、code(必须发生什么,用代码硬性强制)、eval(好长什么样,只能靠例子学)——三样齐了,任务目标才算被完整定义,机器才可能替你自动优化实现。→ 详细 三 这不是学术玩具 :Shopify 靠换掉贵模型、沿用同一套 eval,把成本降到原来的 1/550 → 详细 ;而且就算将来真有了 AGI 也替代不掉这套活儿——"智能,和无所不知,完全是两回事"。→ 详细 01
核心论点:AI 程序也该像函数一样写(厚)
开场即全场主张:Maxime Rivest 和 Isaac Miller 代表 DSPy 社区上台(DSPy = 一个用 Python 写的开源框架,把"写 AI 程序"变成"写函数"),讲"把任务与模型、harness 和所有实现细节分离开 "带来的、好到不讲道理的效果。harness 的大白话是"跑模型的那一整套外壳"——调用几次、怎么循环、带不带工具、怎么重试,全算它。→ 详细
类比朴素但硬:普通编程里"一件事要反复做,我们就把它写成函数",而函数的四个好处是可复用、可组合、可测试、可优化 ——起名、定义输入输出、写实现逻辑三步而已,之后就能复用成千上万次、单独优化、组合进更大的程序。讲者认为 AI 程序理应享有一模一样的待遇。→ 详细 → 详细
还有一个被低估的特性:函数可以打包分发 ,别人只需知道对外的契约(contract,即"喂什么进去、吐什么出来"的约定)就能当 black box(黑盒)来用。DSPy 就是把这整套属性搬到 AI 程序上并配齐工具链。→ 详细
为什么现在特别需要?过去三年领域造了一大堆新名词,每隔一周就有新模型、新技术、新策略 ,"如果你和我一样,你会想把它们全都试一遍"。但讲者一句话定性:它们全都只是"实现层面的战术"(implementation tactics) ,该做的不是追着跑,而是把它们塞进一个清晰的契约里。→ 详细
结论式的一句:"如果你为那些会反复执行的 AI 任务定义好输入接口和输出接口,你就可以随意折腾内部实现,从而获得极大的灵活性。" 换句话说,agility(敏捷)不是靠跑得快换来的,是靠"把变的部分关起来、把不变的部分定死"换来的。→ 详细
02
四个真实的 AI 程序:从报税发票到"给 spec 出 PR"(紧凑)
Maxime 的第一个 DSPy 程序很生活化:农场发票要报税,写个程序把税额 抽出来。→ 详细
第二、三个是键盘快捷命令:读剪贴板 → 纠正语法(或改写得更清晰)→ 放回去;因为接口固定,"出了新模型我随时可以换掉,非常简单" 。→ 详细
野心版:整个收件箱 + 一封新邮件 → 起草回信;再往上是"给它一份 spec 和一个代码仓库,它给你产出一个 PR" (用 RLM,recursive language models,递归语言模型,即让模型对超长内容递归地自调用来处理)。讲者强调这些同样是"可重复的任务" ,所以同样该写成函数。→ 详细 → 详细
03
边界一旦固定,内部就是自由市场(厚)
这是整场最实操的一段:当你把边界固定下来,上层只关心"要做成什么",内部的实现可以一路进化而外部零改动 。演进路线讲者给得很具体——一开始里面只放一个简单 prompt 做一次普通调用;你可以不断迭代这个 prompt;agent 出来了,你把它换成 agent;工具被发明出来了,你加上工具;再往后进入 loop engineering(循环工程,即让模型反复自己跑、自己纠错的那套调度),你也把它塞进去 。→ 详细
关键收益是那句"外面的一切都不会因此改变,你的集成方式也不会变,其他东西也都不用动 "。也就是说,你为"追新技术"付出的代价,被压缩在一个盒子里,不会外溢成一次全系统重构。→ 详细
而且这条硬边界还有第二重红利:"当你有了这样一条硬边界,你还可以开始做自动优化。" 没有边界,就没有可被优化的对象;边界本身是优化的前提条件,不只是工程洁癖。→ 详细
04
第一样 · 应该发生什么 = instructions(中厚)
但只有 signature(签名,即"输入什么类型、输出什么类型"的那行声明)不够 ——"这还不足以完整刻画你的任务"。时间点很有意思:早在 ChatGPT 出现之前,DSPy 的作者就已经形成了"刻画一个任务需要三样东西"这个想法 。→ 详细
第一样是"应该发生什么 "= instructions(指令)。真实脚本里模型配置写在最上面,和下面的 signature 完全独立 ——这本身就是"任务 / 模型分离"的具象体现。→ 详细
signature 里就是大白话需求:"把所有税额抽取出来,如果字迹无法辨认就输出 0" ;输入一个字符串,输出一个字符串加一个浮点数。讲者说这"非常强大,也非常高效"。→ 详细
为什么高效?一个特别好的比方:朋友来找你玩桌游,你把规则念一遍他马上就能开局;但你要是走 AlphaGo / AlphaZero 那条路,跟他说"你只能从例子里自己学",那这一晚上有得熬了。 能用一句话说清的事,别逼模型用一万个样本去猜。→ 详细
05
第二样 · 必须发生什么 = 用代码强制(厚)
第二样是"必须发生什么 ":"有些约束是必须被遵守、必须被强制执行的。做这件事最好的方式是用代码。" 注意这里的立场——不是写进 prompt 里请模型注意,而是用代码兜住 。→ 详细
代码长什么样,他逐行讲了:定义了 self.extract 和 self.recheck 两个东西,前者是对"抽取税额"做一个 Predict(最朴素的一次调用) ,后者是对同一件事做一个 ChainOfThought(思维链,让模型先写推理过程再给答案) 。→ 详细 → 详细
然后在 forward(程序主流程)里那句 if not pred.tax 就是硬性要求的落点:如果朴素版本没抽出税额,就自动用更多推理重跑一遍 ——"毕竟,我的税必须算对"。第二条要求是:数值小于零就抛异常,交给人来看,"不能就这么放过去" 。→ 详细 → 详细
这段收在一句很锋利的话上:"这一点是不会变的。就算真的有了 AGI,我当然希望它不犯错,但只要 predictor 里的东西还会犯这些错,我就依然要保证这些约束成立。" 意思是:约束层的价值不随模型变强而贬值 ,它是你和不确定性之间那道不商量的墙。→ 详细 → 详细
06
第三样 · 好长什么样 = 只能从例子里学(厚)
第三样是"好的结果长什么样 "。Maxime 讲了一个农场上的童年故事:他问爸爸"你怎么知道这棵树是枫树? "——他爸说不上来,给不出一套判断说明,更给不出一段判断代码 。于是他只能靠时间和大量例子,慢慢学会认枫树。→ 详细
关键在于这个故事不是关于植物学的:"它同样适用于你需求规格里那些长尾的、更隐性的部分。" 也就是说,一套需求里总有一部分是写不进文档、也写不成代码 的隐性知识(latent),只能被示范出来。→ 详细
他顺手给了这类知识一个人类世界的对照物:"这也正是为什么会有实习制度、会有导师带学徒的原因。" 你要看大量例子,因为"那些成功行为里有很长的长尾,你必须亲眼见过才能学会"。→ 详细 → 详细
三样凑齐——spec、代码、eval(评测集,即"用什么样例和打分标准来判断做得好不好") ——"你的目标就被完整刻画出来了,于是你可以开始做优化"。这句是整场的枢纽:没有这三样,"自动优化"根本无处下手。 → 详细 → 详细
07
优化史:从翻 few-shot 例子,到自动改指令,到解放实现细节(紧凑)
优化的抓手是 GEPA (一个 prompt 优化器,出自伯克利):作用在你的 metric(评分函数)和程序上自动搜更好的实现。→ 详细
早期没这条件——"在 DSPy 早期,GEPA 还不存在,那时候模型也还没好到可以做优化" ,只能用代码去搜 few-shot 示例(在 prompt 里塞几个做对的例子)把基础模型掰正;后来模型变强才能自动优化 instruction。→ 详细 → 详细
终局期望说得很直白:"你只需要盯住这三样东西,剩下的新玩意儿和实现细节都能自动帮你搞定。" → 详细
08
企业侧的硬证据:Shopify 把成本压到 1/550(厚)
交棒给 Isaac Miller 后,第一句就是把这套东西从学术圈拽出来:"这些绝不只是学术圈里的东西,一些最大的企业已经在生产环境中使用它们,并取得了巨大的收益。" → 详细
企业收益有两条。第一条是实现变便宜 :当你对"具体怎么实现"保持灵活,就可以借 bitter lesson(苦涩的教训,指"通用方法 + 算力搜索"长期胜过人工精雕细琢) 去搜索不同解法,找到便宜的那个。第二条是规模 :便宜之后你能跑的数据量,是昂贵实现根本处理不了的。→ 详细
具体数字:Shopify 便宜了 550 倍 (成本降到原来的 1/550)。做法拆开看毫不神秘——从一个昂贵模型换成一个便宜模型,同时沿用同一套 eval,继续在内部迭代业务逻辑、尝试新东西 。也就是说,省下的那 549/550 不是因为模型魔法,而是因为评测标准没变,所以敢换 。→ 详细
讲者点名"这里有三个很棒的案例研究 ,演讲结束后大家可以去看看",说里面有很多"怎么在自己的企业里做到这一点"的细节(现场只展示了幻灯片,未逐个念名字)。→ 详细
09
生态的诚实边界:"我们只帮你解子问题,你的问题是你的工作"(紧凑)
一句非常反营销的话:"我们加进来的这些技术,没有一个是一定能解决你的问题的——那是你的工作。我们能做的,是帮你解决那些子问题。" → 详细 → 详细
例子人名机构齐全:MIT 博士生 Alex Zhang 的 recursive language models(RLM)论文 解决某类 long context(超长上下文)问题,DSPy 把它接进来——"也许有用,也许没用。但关键在于,只需要一行代码,你的 signature 完全不用动。" → 详细 → 详细
过去一年社区内外的技术清单:RLM、GEPA(伯克利的 prompt 优化器)、Better Together、multi-module GRPO (多模块强化学习训练法)——身处生态就能直接试用。→ 详细 → 详细
10
DSPy 4 新东西之一 · dspy.flex:连 harness 都能学出来(紧凑)
DSPy 4 里 Isaac 重点讲两个:dspy.flex 和 qualitative learning 。→ 详细
dspy.flex 是一种新 module,把"可优化的对象"再抬一级:"一开始是 few-shot 示例,后来变成了 prompt,而现在它正在变成代码。" 任何函数都能随时间学出一整套定制 harness 。→ 详细
前提仍是那三样:"你之所以能有衡量的手段,是因为你已经定义好了 spec、code、eval 这三个核心部分。" → 详细 → 详细
11
DSPy 4 新东西之二 · qualitative learning:eval 为什么难,以及用现实反哺 eval(厚)
Isaac 直接点名痛点:"AI engineering 里最难的问题之一,就是构建 eval。" 三条难点条条能对号入座。难点一 :对任何真实世界的问题,定义"什么才算好"本身就非常有挑战 。→ 详细
难点二(最值得抄走的一条) :定义"好"时往往不得不丢掉大量细节 ——"『这封邮件好还是不好』所包含的信息,远远少于『这封邮件里改哪些地方才能变得更好』"。一个二分标签,把整段可操作的改进意见压成了 1 bit。→ 详细
难点三 :每当你造出一个可以往上爬的"山坡"(hill,即一个可优化的评分曲面)和一套数据集,你其实是在为现实制造一个代理指标(proxy) 。于是他反问:"那如果反过来,我们能直接用现实来自动指导我们的 eval 呢?" → 详细
这就是 qualitative learning(定性学习) :怎么缩小差距、怎么减少对人工介入的依赖 ——"这目前还是一个研究问题"(讲者自己标明了它还没落地)。押注是模型已足够强,能解读环境里的各种文字反馈并转化成 eval、转化成一个可以往上爬的山坡 ;反馈来自生产环境的 trace(调用轨迹)、用户行为、产品分析数据,以及模型主动来问你"数据应该怎么表示" ,模型一轮轮打磨山坡并持续往上爬。→ 详细 → 详细
这也是 DSPy 的定位——专攻"最后一公里"问题 :看到应用型 AI engineering 里真实发生的问题 → 定义清楚 → 建 benchmark(基准测试集)→ 用技术解决 → 因为开源、开放研究,再把成果普惠给所有人 。→ 详细
12
"等有了 AGI 呢?"——爱因斯坦不会用邮件(中厚)
现场最常被问的一个问题,Isaac 正面回应:"哪怕我们有了一个极其聪明的模型,它也不知道该怎么解决你的问题。它不知道怎么做你的任务,也没有你的上下文。" → 详细
全场最好记的一句金句:"智能,和无所不知,完全是两回事。" (Intelligence is very different from being all knowing.)所以"最后一公里学习"这一整类问题问的是:怎样才能高效地完成这种学习 。→ 详细
配套的段子同样精准:"如果你让 Albert Einstein 帮你处理邮件,他大概会先反问一句『什么是 email?』" ——当然 AGI 是知道怎么处理邮件的,但它依然不知道该怎么真正解决你的问题、怎么跟你需要打交道的人打交道;不随时间学习这些上下文,它就理解不了你的人际关系 。→ 详细
13
面对任何新技术,你该问的那个问题(紧凑)
时间线:从 2022 年起 DSPy 就专注 spec / code / eval 三个核心理念,全部以"编程接口"方式定义 ;演进链条是演化 few-shot → 演化 prompt → 演化 harness → 现在连 eval 本身也在随时间演化 。→ 详细
判据一句话:"它能不能帮你解决更难的问题,或者把你自己的问题解决得更好?而且你要用数据驱动的方式来问" ——先把问题定义清楚,然后"让你的 prompt、模型和代码,都为你要解决的那个问题负责" 。→ 详细
网络效应收尾:实现保持灵活,就"解锁了在座每一个人不断发明出来的所有技术",解锁了"所有人共享技术所汇聚成的集体智慧" 。→ 详细
14
闪电问答 / 收尾 本场无闪电问答环节 (17 分钟的双人主题演讲,讲完直接收尾,没有 Q&A / lightning round 段落)。
收尾部分讲者说了三件事:
号召 :"如果你想构建可靠的 AI 软件,我很建议你来了解一下 DSPy。我们完全开源、开放研究,我们就是来帮你通过构建可靠软件来解决问题的。" → 详细
社区 :有一个 Discord ,欢迎加入。→ 详细
反向邀请 :"等你想出了下一项新技术,欢迎来给 DSPy 贡献。我们可以帮你把它分发出去,让这个很棒的技术惠及所有人。" → 详细
15
联系方式
讲者 :Maxime Rivest、Isaac Miller(均代表 DSPy 社区;现场未给出个人联系方式)。→ 详细
DSPy :完全开源、开放研究的 Python 框架,官方 Discord 社区开放加入;技术贡献走开源贡献通道。→ 详细
文中点名的第三方 :Alex Zhang(MIT 博士生,RLM 论文作者)、GEPA(伯克利)、Shopify(企业案例)。→ 详细