目前,LLMs的当前状态涉及许多用户需要进行的“提示工程”,不仅要诱导正确的响应,有时还需要正确的响应风格(例如:json)。这种手动、试错式的提示方式可能相当繁琐。
Stanfordnlp的DSPy可以解决很多关于提示工程的核心问题。DSPy提供了一种更智能的方式来处理LLMs。它将应用程序(模块)的流程与每个步骤的参数(LM提示和权重)分开。其次,DSPy引入了新的优化器,这些是基于LM的算法,可以自动调整您的LM调用的提示和/或权重,给定您想要最大化的指标(例如:长格式的EM、F1或RAGAS)。这不仅简化了提示的过程,还提供了一种更结构化的格式来使用PyTorch风格的语法制定您的优化器/模块等。
我曾尝试在haystack中单独使用DSPy进行小型实验,但我希望在我在haystack中构建的大型系统中使用它。我可以技术上使用自定义的Component
类来实现这一点,但还是想把将DSPy正式整合为一个建议的想法也提出来。
结合Haystack构建LLM系统的生态系统以及DSPy提供的基于算法的提示工程,可以在构建具有正式语法且减少手动提示工程努力的更好的LLM系统方面发挥巨大作用。
我对DSPy唯一的抱怨是,优化器用于改进提示的基本提示不容易根据模型进行更改。例如,mistral指令模型期望提示以以下方式出现:<s>[INST] {prompt} [/INST]
。然而,在haystack中,我们可以形式化一种方法来根据模型使用交换优化器提示。
附加资源:
DSPy docs
DSPy intro notebook
1条答案
按热度按时间nom7f22z1#
对于那些询问与DSPy集成的人,我们已经准备了一个experimental notebook。这不是真正的集成(因为目前DSPy API不允许与其他框架干净地集成),但我希望它会很有趣。我们将来很乐意重新审视这个问题,并在Haystack中引入其他提示优化功能。