返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

告别提示词工程, 斯坦福重新定义LLM开发范式,DSPy框架已获18.4K Star!

[复制链接]
链载Ai 显示全部楼层 发表于 10 小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding-right: 1em;padding-left: 1em;color: rgb(63, 63, 63);">DSPy:告别提示词工程,拥抱编程式LLM开发

斯坦福大学NLP小组开源了一个名为DSPy的star数高达18.4k的LLM开发框架,它提出了一种全新的方式来构建基于大语言模型的应用 - 不是通过手工编写和优化提示词(Prompt),而是通过编程的方式来声明和组合模块。本文带你一探这个创新框架的特点和优势。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding-right: 0.2em;padding-left: 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">为什么需要DSPy?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在当前的LLM应用开发中,我们主要依赖于手工编写和优化提示词模板。这种方式存在以下问题:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  1. 1. 提示词往往冗长且脆弱,需要反复调试

  2. 2. 针对特定场景优化的提示词难以迁移到其他场景

  3. 3. 整个过程较为艺术化,缺乏系统性

  4. 4. 难以构建和维护复杂的LLM应用流程

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">DSPy框架正是为了解决这些问题而生。它让开发者可以用更加结构化、模块化的方式来开发LLM应用。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding-right: 0.2em;padding-left: 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">DSPy的核心理念

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">DSPy的核心理念是将LLM应用开发转变为编程式的范式,主要包含三个关键抽象:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  1. 1. Signatures(签名): 声明式地定义输入输出行为

  2. 2. Modules(模块): 封装常用的提示词模式,支持组合构建pipeline

  3. 3. Teleprompters(优化器): 自动优化生成的提示词

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">让我们逐一来看这些概念。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding-right: 0.2em;padding-left: 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">Signatures: 声明式定义任务

在DSPy中,我们使用Signature来声明任务的输入输出行为。看看下面这行代码:

sig=dspy.Signature("question->answer")

没错,就这么简单!这行代码优雅地完成了原本需要手写几百字提示词的工作。如此简洁的声明式语法,不得不让人感叹DSPy设计的精妙!

当然,我们还可以用类定义的方式来实现更细粒度的控制:

classBasicQA(dspy.Signature):
"""回答问题的简单问答模块"""
question=dspy.InputField()
answer=dspy.OutputField(desc="briefanswer")

这两种方式都比手写长篇的提示词要简洁得多,而且更容易维护和修改。

Modules: 模块化构建应用

DSPy提供了多个内置模块,覆盖了常见的提示词技术:

  • • ChainOfThought: 思维链推理

  • • ProgramOfThought: 编程式思维

  • • Retriever: 检索增强生成

  • • ReAct: 推理和行动交互

我们可以组合这些模块构建复杂的应用。例如一个简单的RAG系统:

classRAG(dspy.Module):
def__init__(self,num_passages=3):
super().__init__()
self.retrieve=dspy.Retrieve(k=num_passages)
self.generate=dspy.ChainOfThought(RAGSignature)

defforward(self,question):
context=self.retrieve(question).passages
returnself.generate(context=context,question=question)

Teleprompters: 自动优化提示词

DSPy的一大亮点是提供了优化器来自动优化生成的提示词。我们只需要:

  1. 1. 提供一些训练样例

  2. 2. 定义评估指标

  3. 3. 使用优化器编译模块

例如:

#定义评估指标
defevaluate(example,pred):
returnpredin["positive","negative","neutral"]

#创建优化器
optimizer=dspy.BootstrapFewShot(
metric=evaluate,
trainset=examples
)

#编译优化
compiled_model=optimizer.compile(MyModule())

DSPy vs 传统方法的优势

相比传统的提示词工程,DSPy具有以下优势:

  1. 1.更高的可维护性: 代码更加结构化,易于理解和修改

  2. 2.更好的复用性: 模块可以方便地在不同项目间复用

  3. 3.自动优化: 优化器可以自动改进提示词效果

  4. 4.更强的扩展性: 易于构建复杂的应用流程

实践建议

  1. 1. 从简单的Signature开始,逐步熟悉DSPy的编程模式

  2. 2. 充分利用内置模块,避免重复造轮子

  3. 3. 善用优化器提升效果

  4. 4. 注意保持代码的模块化和可维护性

总结展望

DSPy代表了LLM应用开发的一个新思路 - 从手工调优提示词转向声明式编程。虽然目前社区规模还不及LangChain等框架,但其理念和设计都很有前景。如果你对提示词工程的繁琐感到困扰,不妨尝试一下这个创新框架。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ