DSPy 是什么?38K 星的「编程而非提示」框架,把提示词优化交给编译器
做 AI Agent 这么久,我听到最多的一句话就是「提示词写得不好,效果就差」。调 prompt 就像玄学——换一个词、调一下格式,输出忽好忽坏,还没有规律。今天聊的这套东西,观点正好相反:别手写提示词,让框架帮你「编译」提示词。它就是斯坦福 NLP 团队出的 DSPy,GitHub 上已经 38,243 星。
本文是横向 Agent 平台/框架系列的基础篇,纯概念 + 上手思路,不整虚的。对 Agent 编排框架感兴趣的朋友,也可以翻翻我之前的 LangGraph、LangChain 基础篇(在 ai.godsun.pro 对应分类里),串起来看更清楚。
一句话说清它是干嘛的
DSPy = Declarative Self-improving Python(声明式、自改进的 Python)。它的口号很冲:programming—not prompting(编程,而不是提示)。意思是:你写的不是一长串夹带变量的提示词模板,而是模块化的 Python 代码,然后 DSPy 用一个「优化器」去帮你自动生成、搜索、调优提示词(和少数情况下的模型权重)。
换句话说,别人帮你把 prompt 从「手写」升级成「自动调」。在 RAG 管道、分类器、Agent 循环这些场景都能用,是个通用横向框架,MIT 协议,Apache-2.0 那套开放,随便商用。
上手:四个核心概念
DSPy 的理解门槛不高,抓住四个词就行:
- Signature(签名):你只要声明「输入是什么、输出是什么」,比如
"question -> answer"或"context, question -> reasoning, answer"。不用写提示词,它帮你生成。 - Module(模块):一种「策略」,比如
dspy.Predict、dspy.ChainOfThought、dspy.ReAct(带思考链或带工具的循环)。 - Program(程序):把上面这些模块组合起来的整体逻辑。
- Optimizer(优化器):核心。给它一份训练样本 + 一个评分指标,它就用 MIPROv2、BootstrapFewShot 这类算法去搜提示词和少量示例,输出一个比手写效果更稳的「编译后」程序。
最小 Demo 大概是:pip install dspy-ai,定义 Signature("context -> answer"),套一个 dspy.Predict,再 program.compile(...) 一把就完事。对我这种不爱抠字眼的人,这套「写逻辑、不写提示词」的思路确实舒坦——换模型、升级框架,程序逻辑不用动,提示词重新编译一遍就行。
实话实说:它的适用人群
DSPy 是给「程序员 + 想批量做实验的人」准备的,不是零代码玩家。它没有可视化拖拽界面(那得去看 Dify、Flowise、Langflow,我站内都有基础篇),上手门槛明显高一截。它的价值在于「可复现、可度量」——同一套程序、同一批数据,谁跑都一样,还能自动找更优提示词。
现实里有点劝退的地方是:要凑一份带标签的训练样本 + 一个明确的评分指标,才能发挥优化器的作用。如果你只是随口聊天调一两个 prompt,杀鸡用牛刀。而且编译过程要反复跑模型,本地小模型/免费 API 的话,token 成本得盯着点。
值不值得学?
我给的判断:做 RAG、批量分类、想搞「提示词工程自动化」的,值得认真看;做多 Agent 编排、想快速出 demo 的,先学 LangGraph、CrewAI 更顺手。DSPy 和 LangChain 不冲突——不少团队用 LangChain 做编排、拿 DSPy 搞定单个模型模块,互补着用。
一句话总结:当别人还在一个字一个字地抠提示词,DSPy 已经把「找最优提示词」这件事变成了一段能自动跑的代码。
本文为横向 AI Agent 框架系列基础篇,数据与定位来自官方仓库核实(stanfordnlp/dspy,38,243★)。实测环境为自建 AI Agent 站,更多工具框架对比见 ai.godsun.pro。