赞
踩
如本瓜在此前的文章中提到过,Prompt 工程已经不中用了,没有人愿意废那么大的劲来学习如何结构化提问,大家想要的就是傻瓜式提问,但是大模型的回答还是精准的、合意的;
后来,大兴 RAG 技术,做专业化的本地知识库,但是这个本地库的成本只能说是更高,如果有专业的库直接来用还行,要不然自建库、清洗数据等等,费了九牛二虎之力,那还要大模型啥事?
所以有人才说2023年大模型百模大战是原子弹,2024年大模型真的就让人一度怀疑,这不就是个茶叶蛋?
看到最近新闻说:研发出著名的Stable Diffusion模型,估值近300亿美元的明星企业Stability AI,资金链竟然要断裂了?!Crazy…
其实,大家的诉求很简单,就是“怎么简单方便怎么来”,不要 Prompt 工程、不要 RAG 本地库,只要我问了,你就直接给到我想要的答案,不能出现车轱辘话!
所以,本篇要提的新技术—— DSPy , 它来了!
先问一句:你觉得截止目前,谁是大模型最大的受益者?
除了炒作的、卖课的,或许目前真正能从大模型技术中获益的,莫过于程序员群体了。很多程序员都不同程度的利用上了大模型来辅助编程,大模型在编程方面表现往往比其他专业领域都好的多得多。
这是为什么?
因为 LLMs 对 prompts 的方式很敏感,它不喜欢提示词,它就喜欢编程,或者说是它更擅长编程!
DSPy,就是让提示词 Prompt 变成编程语言的一个框架。
一句话定性:它是一个旨在通过优先编程而不是 prompt 来解决基于语言模型(LM)的应用程序中的脆弱性问题的框架。
DSPy 展开是:“D declarative S self - improved Language P programs (in Python)”,读“迪斯屁儿”,它强调编程而不是提示,使构建基于 LM 的管道远离操作提示而更接近编程。
一波未平、一波又起,LangChain 还没学明白,这个“屁儿”怎么又来了?区别在哪?
说白了 LangChain 的 RAG 技术是让提示词更详细、丰富,形成一个标准的提问模板,而 DSPy 则是原理提示模板,从编程的角度去跟大模型交流。
DSPy 引入编译器,更改基于 LLM 的应用程序(如 LLM 或数据)时,消除额外的 prompt 工程 或 fine-tuning 微调;发人员可以简单地重新编译程序来优化 pipelines(模型的组件构成流程) 以适应新添加的更改。
具体它是怎么做的呢?
在 DSPy 程序中,每次调用语言模型时,都必须采用自然语言签名(signature),而不是传统的手写提示。
签名是一个简短的函数,用来明确说明转换的目标,而不是指导 LM 的提示方式,和我们以往命令大模型 “利用XXX回答XXX问题” 不一样。
签名包含 LLM 要解决的子任务的最小描述,输入字段的描述、输出字段的描述;结构一般类似这样:
代码语言:javascript
**复制
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")
与常规提示语相比,签名可以通过引导示例编译成自完善和自适应管道的 prompt 或 fine-tune。
有过提示经验的同学知道我们往往会引导大模型的回答,比如说:你要用 XXX 风格回答 XXX,你是 XXX 角色有 XXX 经验,不要回答 XXX …
在 DSPy 中,则通过模板化和参数化来抽象这些提示技术;通过应用提示、微调、增强和推理技术,使 DSPy 签名适应特定任务。
代码语言:javascript
**复制
# Option 1 : Pass minimal signature to ChainOfThought module
generate_answer = dspy.ChainOfThought("context, question -> answer")
# Option 2 : Or pass full notation signature to ChainOfThought module
generate_answer = dspy.ChainOfThought(GenerateAnswer)
# Call the module on a particular input.
pred = generate_answer(context = "Which meant learning Lisp, since in those days Lisp was regarded as the language of AI.",
question = "What programming language did the author learn in college?")
从以上代码看,DSPy 签名传递给ChainOfThought
模块,然后使用输入字段 context
和 question
的值进行调用。
DSPy 内置如下几个模块,分别有不同的作用:
模块的优势在于它灵活的集成在管道之中,是参数化的,包括提示细节等,模块根据签名处理输入,返回输出。
DSPy 还有另一个武器,就是 Teleprompters 提词器。提词器使用特定度量,与编译器协同工作,学习和引导有效提示,从而优化 DSPy 程序的各个模块。
DSPy 内置5个提词器:
不同的提词器在优化成本和质量等方面提供了不同的平衡。
以上对 DSPy 有了一个基本的认识:它把传统的提示词工程通过一些语法糖进行了优雅的封装。
它可以解决基于语言模型的应用程序脆弱性问题的框架;优先考虑编程而不是提示,允许重新编译整个流水线以优化任务。
实现原理是前文提到的:引入了签名、模块和提词器等概念来抽象提示和微调;编译器可以自动优化程序,根据任务需求生成高质量的提示。
如果感兴趣的同学可以点点关注,后续继续了解 DSPy 的 RAG 管道示例实践。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/866024
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。