
DSPy 框架评测:声明式 LLM 编程
DSPy 是什么:Prompt 工程的范式转换 传统 Prompt 工程的核心痛点:Prompt 是手写的、脆弱的、不可优化的。你花数小时调出一个"看起来不错"的 Prompt,换个模型就失效了。DSPy 提出了一个激进的想法——不要手写 Prompt,让框架自动优化。 DSPy(Declarative Self-improving Language Programs)来自斯坦福 NLP 组,核心理念是将 LLM 编程从"写 Prompt"转变为"声明意图 + 自动优化"。 核心架构:三件套 Signature:声明输入输出 import dspy # 声明式定义:输入是什么,输出是什么 class QA(dspy.Signature): """回答问题,基于给定上下文""" context: str = dspy.InputField(desc="参考文档") question: str = dspy.InputField(desc="用户问题") answer: str = dspy.OutputField(desc="简洁准确的回答") class Summarizer(dspy.Signature): """生成长文本的摘要""" text: str = dspy.InputField(desc="原始文本") summary: str = dspy.OutputField(desc="200字以内的摘要") Signature 的关键在于:你只描述"做什么",不描述"怎么做"。框架会根据 Signature 自动生成 Prompt。 Module:组合 LLM 逻辑 # 类似 PyTorch 的模块化设计 class RAG(dspy.Module): def __init__(self): self.retrieve = dspy.Retrieve(k=3) self.generate = dspy.ChainOfThought(QA) def forward(self, question): context = self.retrieve(question).passages prediction = self.generate(context=context, question=question) return dspy.Prediction(answer=prediction.answer) # 使用 rag = RAG() result = rag(question="量子计算的基本原理是什么?") print(result.answer) DSPy 内置模块: 模块 功能 dspy.Predict 基础预测,直接调用 LLM dspy.ChainOfThought 链式思考,让模型先推理再回答 dspy.ReAct 推理+行动循环(工具调用) dspy.Retrieve 检索模块 dspy.MultiChainComparison 多路 CoT 对比 Teleprompter:自动 Prompt 优化 这是 DSPy 的杀手级能力。Teleprompter 会自动搜索最优 Prompt: ...