面包屑图标 当前位置: 首页
AI资讯
热点详情

告别提示工程,DSPy引领未来(下)

AI热点日报
AI热点日报时间:2026-06-23
热点解读

本文深入解析DSPy框架的核心概念、编程模型与编译器功能,并通过一个简易示例演示其实际应用。内容紧凑,直奔主题。 2 3 DSPy提词器:自动化提示优化与编译器协同机制 在DSPy中,提词器(Teleprompter)充当优化器的角色,通过特定性能指标对DSPy程序模块的提示进行自动优化,并与编译器

本文深入解析DSPy框架的核心概念、编程模型与编译器功能,并通过一个简易示例演示其实际应用。内容紧凑,直奔主题。

告别提示工程,未来属于DSPy(下)

2.3 DSPy提词器:自动化提示优化与编译器协同机制

在DSPy中,提词器(Teleprompter)充当优化器的角色,通过特定性能指标对DSPy程序模块的提示进行自动优化,并与编译器紧密协作,显著提升程序执行的效率与效果。简而言之,它实现了提示的自动化改进。

以最基础的提词器BootstrapFewShot为例:

from dspy.teleprompt import BootstrapFewShot

teleprompter = BootstrapFewShot(metric=dspy.evaluate.answer_exact_match)

DSPy目前已内置五种提词器,各具特色,适用于不同场景:

  • dspy.LabeledFewShot:用于精确控制预测器使用的样本数量(k值)。
  • dspy.BootstrapFewShot:采用引导式启动,像搭积木一样逐步构建高质量示例。
  • dspy.BootstrapFewShotWithRandomSearch:在BootstrapFewShot基础上引入随机搜索,探索更优组合。
  • dspy.BootstrapFinetune:专为编译过程中的模型微调设计,适合追求精细调优的场景。
  • dspy.Ensemble:将多个程序集成并统一输出为单一结果,类似投票机制。

不同提词器在优化成本与输出质量之间各有权衡,选择合适的提词器能让优化工作事半功倍。

3 DSPy编译器:智能优化程序性能

DSPy编译器会在内部跟踪程序的执行路径,并借助提词器(优化器)进行系统性优化,从而全面提升程序性能。该优化过程会根据所选语言模型的规模与特性动态调整策略:

  • 对于大型语言模型(LLMs),编译器会生成少量但高质量的示例提示。
  • 对于规模较小的语言模型,则自动执行微调训练。

换言之,编译器能够智能地将程序模块与最佳的提示、微调、推理及增强策略进行匹配。在后台,它会模拟程序在多种输入下的不同运行版本,并通过引导式学习不断自我完善,最终完美适配你的特定任务。这一过程与训练神经网络有着异曲同工之妙。

此前创建的ChainOfThought模块虽然为语言模型提供了一个良好起点,但往往并非最优提示。如下图所示,DSPy编译器能够自动优化初始提示,彻底省去手动调整提示的繁琐过程——这才是其真正的价值所在。

编译器运行需要以下三个输入:

  • 程序(DSPy模块)
  • 提词器(包含定义的验证指标)
  • 训练样本(少量标注数据)
from dspy.teleprompt import BootstrapFewShot

# 带有问题和答案对的小型训练集
trainset = [dspy.Example(question="What were the two main things the author worked on before college?", 
                         answer="Writing and programming").with_inputs('question'),
            dspy.Example(question="What kind of writing did the author do before college?", 
                         answer="Short stories").with_inputs('question'),
            ...
            ]

# 提词器将引导缺失的标签:推理链和检索上下文
teleprompter = BootstrapFewShot(metric=dspy.evaluate.answer_exact_match)

compiled_rag = teleprompter.compile(RAG(), trainset=trainset)

4 DSPy实战:构建一个简单的RAG(检索增强生成)流程

掌握了核心概念后,下面我们动手构建第一个DSPy流程。检索增强生成(RAG)是目前生成式AI领域的热门技术,以它为起点进行实践再合适不过。

首先,安装DSPy库:

pip install dspy-ai

步骤1:初始化配置

首先配置语言模型(LM)和检索模型(RM)。具体操作如下:

  • 语言模型(LM):选用OpenAI的gpt-3.5-turbo,请提前准备好API密钥。

  • 检索模型(RM):选用Weaviate(一款开源向量数据库)。我们使用示例数据对其进行初始化。

本例数据来自LlamaIndex GitHub仓库(MIT许可)。你也可以使用自己的数据替换。

!mkdir -p 'data'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham_essay.txt'

接下来,将文档拆分为单独句子并导入数据库。这里使用Weaviate的嵌入式版本,免费且无需注册API密钥。

注意:导入时,每个数据项必须包含名为'content'的属性,这是Weaviate检索的依据。

import wea viate
from wea viate.embedded import EmbeddedOptions
import re

# 以嵌入模式连接到 Wea viate 客户端
client = wea viate.Client(embedded_options=EmbeddedOptions(),
                             additional_headers={
                                "X-OpenAI-Api-Key": "sk-",
                             }
                         )

# 创建 Wea viate 模式
schema = {
   "classes": [
       {
           "class": "MyExampleIndex",
           "vectorizer": "text2vec-openai",
            "moduleConfig": {"text2vec-openai": {}},
           "properties": [{"name": "content", "dataType": ["text"]}]
       }      
   ]
}
    
client.schema.create(schema)

# 将文档分割为单个句子
chunks = []
with open("./data/paul_graham_essay.txt", 'r', encoding='utf-8') as file:
    text = file.read()
    sentences = re.split(r'(?

现在配置全局的语言模型和检索模型:

import dspy
import openai
from dspy.retrieve.wea viate_rm import Wea viateRM

openai.api_key = "sk-"

lm = dspy.OpenAI(model="gpt-3.5-turbo")

rm = Wea viateRM("MyExampleIndex", 
                wea viate_client = client)

dspy.settings.configure(lm = lm, 
                        rm = rm)

步骤2:准备训练数据

接下来收集训练示例。以下是我们手动标注的少量问答对:

trainset = [dspy.Example(question="What were the two main things the author worked on before college?", 
                          answer="Writing and programming").with_inputs('question'),
            dspy.Example(question="What kind of writing did the author do before college?", 
                          answer="Short stories").with_inputs('question'),
            dspy.Example(question="What was the first computer language the author learned?", 
                          answer="Fortran").with_inputs('question'),
            dspy.Example(question="What kind of computer did the author's father buy?", 
                          answer="TRS-80").with_inputs('question'),
            dspy.Example(question="What was the author's original plan for college?", 
                          answer="Study philosophy").with_inputs('question'),]

步骤3:构建DSPy程序模块

首先定义签名GenerateAnswer,描述从问题到答案的转换逻辑:

class GenerateAnswer(dspy.Signature):
    """Answer questions with short factoid answers."""

    context = dspy.InputField(desc="may contain relevant facts")
    question = dspy.InputField()
    answer = dspy.OutputField(desc="often between 1 and 5 words")

随后编写自定义RAG类,继承自dspy.Module。在__init__()中声明所需的子模块,在forward()中定义数据流:

class RAG(dspy.Module):
    def __init__(self, num_passages=3):
        super().__init__()
        self.retrieve = dspy.Retrieve(k=num_passages)
        self.generate_answer = dspy.ChainOfThought(GenerateAnswer)
    
    def forward(self, question):
        context = self.retrieve(question).passages
        prediction = self.generate_answer(context=context, question=question)
        return dspy.Prediction(context=context, answer=prediction.answer)

步骤4:编译与优化模型

最后定义提词器并编译程序,该过程会更新ChainOfThought模块所使用的提示:

from dspy.teleprompt import BootstrapFewShot

teleprompter = BootstrapFewShot(metric=dspy.evaluate.answer_exact_match)

compiled_rag = teleprompter.compile(RAG(), trainset=trainset)

调用编译后的RAG流程进行推理:

pred = compiled_rag(question = "What programming language did the author learn in college?")

你可以评估输出结果,并反复迭代优化,直至达到满意的性能。通过这一完整流程,原本繁琐的手工提示工程工作将完全交由DSPy自动完成。

热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:告别提示工程,DSPy引领未来(下)要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.53ai.com/news/tishicijiqiao/2024090124159.html
ai 人工智能

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-14 19:48
面壁智能CTO谈端侧AI:从打字机到大模型的进化突围

面壁智能聚焦端侧AI,不拼参数大小,而是通过知识密度提升与模型风洞技术,将大模型压缩至手机、汽车等设备。其MiniCPM以2B参数超越同期8B对手。CTO曾国洋22岁主导训练中国首个大语言模型CPM-1。端侧AI追求“默契系统”,在用户开口前预判需求,已在吉利、上汽大众等车型落地应用。

AI热点2026-07-14 19:48
印度IT巨头HCL Tech投350亿卢比建50MW AI数据中心

印度IT巨头HCLTech投资最高350亿卢比建设AI数据中心,容量可扩展至50MW,提供从设计到运营的端到端服务,旨在满足政府及企业日益增长的算力需求,抢占印度快速增长的数据中心市场,并推动AI基础设施布局。

AI热点2026-07-14 19:48
小米具身智能机器人新工站双侧螺母上件成功率达98%

小米具身机器人在汽车工厂自攻螺母上件工站实现双侧作业成功率98%,接近人工水平。同时在新工站分别达到90%成功率,从单一操作拓展至多工站协同,验证了具身智能在复杂工业环境的落地能力。

AI热点2026-07-14 19:48
DeepSeek梁文锋身价360亿美元成AI新首富

全球AI行业正迎来新的财富格局,DeepSeek创始人梁文锋凭借其公司的迅猛发展,个人财富急剧膨胀,一举超越多位硅谷知名人物,成为全球AI公司领域的新首富。以下将详细解析其身价飙升背后的关键因素及公司发展历程。 一、身价飙升至360亿美元,超越多位AI大佬 根据最新彭博亿万富豪指数,DeepSeek

延伸阅读