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

DSPy Visualizer:可视化Prompt优化过程

[复制链接]
链载Ai 显示全部楼层 发表于 10 小时前 |阅读模式 打印 上一主题 下一主题
通过示例和源码解析的方式对Optimizer类进行了详细解读,本文将从示例和可视化方式,观测DSPy是如何对Prompt进行优化的。
DSPy是开源社区比较有影响力的大模型提示词、参数调优仓库,使得用户以一种编程的方式,调整和优化大模型模板和参数。DSPy的设计思想借鉴了Torch,使得Torch的使用者可以很快的理解DSPy的使用方式。
使用Torch时,研究人员往往会使用Tensorboard等可视化工具来直观的查看模型的训练情况,那么是否有适配DSPy优化过程的可视化工具呢?答案是Yes,本文将首先介绍带有DSPy优化器的优化示例,然后使用 langwatch 仓库提供的DSPy Visualizer 查看具体的优化过程,包括显示每个优化步骤的Predictior、Example、大模型调用内容等。

1. 安装

在使用DSPy Visualizer之前,需要确保已经安装了langwatch 以及 dspy 的python包。

pipinstalldspy-ai==2.4.12pipinstalllangwatch

2. 编写DSPy程序

本示例将编写简单的优化器使用示例,如图-1所示,DSPy的优化流程需要准备数据集、程序主体、优化器以及衡量指标,然后在固定数据集合衡量指标的情况下,调整程序主体和算法以达到优化的目的,具体步骤如下:

图-1 DSPy 优化流程

1)获取数据集,本示例中通过导入方式获取训练集和测试集。

importdspyfromget_datasetimportcustom_trainsetastrain_setfromget_datasetimportcustom_testsetastest_set
2)导入衡量指标以及优化器,本示例中使用基本的 BootstrapFewShot优化器。
fromdspy.datasets.gsm8kimportgsm8k_metricfromdspy.telepromptimportBootstrapFewShot
3)定义大模型配置,本示例中使用了 ollama 启动的本地llama3模型服务。
#定义并设置大模型model_name='llama3'lm=dspy.OllamaLocal(model=model_name)dspy.settings.configure(lm=lm)
4)定义程序主体(Module),程序主体包含初始化(__init__)以及推理(forward)两部分逻辑,使用了dspy.ChainOfThought思维模式实现推理过程。
classCoT(dspy.Module):def__init__(self):super().__init__()self.prog=dspy.ChainOfThought("question->answer")
defforward(self,question):returnself.prog(question=question)
cot=CoT()
5)配置优化器参数,通过调整优化器参数,可以调整最终的提示词效果。
config=dict(max_bootstrapped_demos=4,max_labeled_demos=4,max_rounds=2)
#Optimize!Usethe`gsm8k_metric`here.Ingeneral,themetricisgoingtotelltheoptimizerhowwellit'sdoing.teleprompter=BootstrapFewShot(metric=gsm8k_metric,**config)
至此,本示例已经定义好了优化之前的所有准备工作。

3. 优化与可视化

为了实现可视化DSPy的优化过程,本实例引入langwatc包,langwatc需要在优化开始前初始化,如下面代码所示。
DSPy Visualizer的可视化服务可以通过在线的方式访问,也可以通过本地部署安装Docker镜像的方式使用。
importlangwatchlangwatch.login()langwatch.dspy.init(experiment="test",optimizer=teleprompter)optimized_cot=teleprompter.compile(cot,trainset=train_set)
至此,本示例代码已完成,接下来需要做好可视化准备工作,可视化准备主要包含启动可视化程序和获取langwatch的API-Key。
3.1.在线访问方式

由于langwatch已经提供了可视化的在线服务,因此在线方式无需启动可视化程序,之间获取API-Key即可,如下步骤所示:

1)登录 langwatch在线dashboard ,获取API-Key。

2)本地运行程序,根据提示输入API-Key,并在 dashboard查看结果。

本地界面:
dashboard界面:

如上界面展示的为训练两步得到的可视化数据,可以看出在第一步时优化器得到了3个demo,第二步时,优化器得到了4个demo。

也可以点击具体的 Predictors、Examples、LLM Calls(图中LLM Call无信息,因为使用了LLama3本地访问,如果是OpenAI接口则有数据显示)查看详细信息。

如下图所示,显示了变量名为 prog 的Predictor类的信息,包括输入输出、得到的示例等。
下图显示了在优化过程中所测试的示例,以及得到的分数,可以看出前两个示例预测结果格式不符合要求,判定为错误,后三个示例预测结果正确。

3.2.本地访问

本地启动可视化程序需要安装Docker,然后做如下3步动作:

1)下载github langwatch 仓库并 复制 langwatch/.env.example 中的文件内容到langwatch/.env

2)运行 docker compose up --build

3)打开 LangWatch 通过网址http://localhost:3000
其他步骤与在线访问类似。

回复

使用道具 举报

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

本版积分规则

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

  • 微信公众号

  • 商务合作

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