求求你别学了:从 Prompt 到 RAG,从 RAG 到 DSPy

如本瓜在此前的文章中提到过,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 的管道远离操作提示而更接近编程。

DSPy VS LangChain

一波未平、一波又起,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模块,然后使用输入字段 contextquestion 的值进行调用。

DSPy 内置如下几个模块,分别有不同的作用:

  • dspy.Predict :基本预测变量
  • dspy.ChainOfThought:教LM在对Signatures响应之前逐步思考
  • dspy.ProgramOfThought:教LM 输出代码
  • dspy.ReAct:能够实现某个Signatures功能的代理(利用工具)
  • dspy.MultiChainComparison:可以比较多个 ChainOfThought 输出以产生最终预测

模块的优势在于它灵活的集成在管道之中,是参数化的,包括提示细节等,模块根据签名处理输入,返回输出。

提词器

DSPy 还有另一个武器,就是 Teleprompters 提词器。提词器使用特定度量,与编译器协同工作,学习和引导有效提示,从而优化 DSPy 程序的各个模块。

DSPy 内置5个提词器:

  • dspy.LabeledFewShot
  • dspy.BootstrapFewShot
  • dspy.BootstrapFewShotWithRandomSearch
  • dspy.BootstrapFinetune
  • dspy.Ensemble

不同的提词器在优化成本和质量等方面提供了不同的平衡。

小结

以上对 DSPy 有了一个基本的认识:它把传统的提示词工程通过一些语法糖进行了优雅的封装。

它可以解决基于语言模型的应用程序脆弱性问题的框架;优先考虑编程而不是提示,允许重新编译整个流水线以优化任务。

实现原理是前文提到的:引入了签名、模块和提词器等概念来抽象提示和微调;编译器可以自动优化程序,根据任务需求生成高质量的提示。

如果感兴趣的同学可以点点关注,后续继续了解 DSPy 的 RAG 管道示例实践。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/729122.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt快速学习开发 - Nuxt3静态资源Assets

Nuxt 使用两个目录来处理样式表、字体或图像等资产。 public/目录内容按原样在服务器根目录中提供。 assets/目录包含您希望构建工具(Vite 或 webpack)处理的所有资产。 public/目录 public目录用作静态资产的公共服务器,可在您的应用程序定…

景联文科技构建高质量多轮对话数据库,赋能AI交互新飞跃

近年来,大语言模型的发展极大推动了自然语言处理领域的进步,大语言模型正引领智能对话领域进入一个全新时代,不仅提升了对话体验的自然度和效率,也为探索更加人性化、智能化的交互方式开辟了道路。 景联文科技作为大语言模型数据服…

文心一言 VS 讯飞星火 VS chatgpt (285)-- 算法导论21.2 4题

四、请给出图 21-3 所示操作序列的一个运行时间的渐近紧确界,假定使用链表表示和加权合并启发式策略。如果要写代码,请用go语言。 文心一言: 图 21-3 没有直接给出,但通常这种操作序列可能与某种数据结构(如并查集或…

算法:分治(归并)题目练习

目录 题目一:排序数组 题目二:数组中的逆序对 题目三:计算右侧小于当前元素的个数 题目四:翻转对 题目一:排序数组 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入&#xf…

收银系统源码推荐收银系统二次开发

千呼新零售收银系统是一套线下线上一体化的收银系统,给商户提供了含有线下收银/称重、线上小程序商城、精细化会员管理、ERP进销存、营销活动、移动店务管理等一体化解决方案! 1. 多样化线下收银 线下收银支持Windows收银、安卓收银、智能称重收银、无人…

BFS:FloodFill算法

文章目录 FloodFill算法简介1.图像渲染2.岛屿数量3.岛屿的最大面积4.被围绕的区域总结 FloodFill算法简介 Flood Fill算法是一种用于确定与某个给定节点相连的区域的算法,常用于计算机图形学和图像处理。该算法可以用于诸如填充多边形、检测连通区域等任务。Flood …

Linux 一键部署 Nginx1.26.1 + ModSecurity3

前言 ModSecurity 是 Apache 基金会的一个开源、高性能的 Web 应用程序防火墙(WAF),它提供了强大的安全规则引擎,用于检测和阻止各种攻击行为,如 SQL 注入、XSS 跨站点脚本攻击等。而 nginx 是一个高性能的 Web 服务器,常用于处理大量的并发请求,具有很高的负载均衡能力…

蓝牙数传芯片TD5325A,蓝牙5.1—拓达半导体

拓达TD5325A芯片是一款支持蓝牙BLE&SPP的纯数传芯片,蓝牙5.1版本。芯片的亮点在于性能强,支持APP端直接对芯片做设置与查询操作,包括修改蓝牙名、UUID、MAC地址,以及直接操作蓝牙芯片自身的IO与PWM口,还包括支持简…

Linux:用户账号和权限管理的命令

目录 一、Linux用户的分类和组的分类 1.1、用户账号和组账号 1.2、用户的分类 1.3、组账号 1.4、用户账号文件/etc/passwd 二、用户管理相关命令 2.1、chage命令:用来修改帐号和密码的有效期限,针对目前系统已经存在的用户 2.2、useradd&#xf…

行车记录仪文件夹“0字节”现象解析与恢复策略

一、行车记录仪文件夹“0字节”现象描述 行车记录仪作为现代驾驶中的必备设备,其储存的视频数据对于事故记录和取证至关重要。然而,有时车主们可能会遇到这样一个问题:行车记录仪的某个文件夹内的文件突然变成了0字节大小,无法正…

Vue快速上手和Vue指令

一、Vue快速上手 1、Vue概念 Vue (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架 Vue2官网:https://v2.cn.vuejs.org/ 构建用户界面:基于数据渲染出用户可以看到的界面 渐进式: 循序渐进,不一定非得把…

操作系统精选题(一)(PV经典问题之生产者与消费者)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀操作系统 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 进程互斥与同步 题目一 题目二 题…

开发uniapp插件包aar文件,使uniapp可以调用jar包

背景 使用 uniapp 开发应用时,很多时候都需要调用第三方的sdk,一般以 jar 为主。为了应对这个问题,官方提供了插件方案,可以将第三方 jar 包进行封装为 aar 包后,再集成到 uniapp 中使用。 一、环境安装工具 1、jdk…

后台管理台字典localStorage缓存删除

localStorage里存放了如以下dictItems_开头的字典数据,localStorage缓存是没有过期时间的,需要手动删除。同时localStorage里还存有其他不需要删除的数据。 这里的方案是遍历localStorage,利用正则和所有key进行匹配,匹配到dict…

qt打包失败 ,应用程序无法正常启动0xc000007b解决办法

用 windeployqt 打包QT程序,运行时提示程序无法正常启动0xc000007b #原因:因本机装了多个版本的Qt,包括32位,64位的,在cmd下可能是环境变量原因,用 windeployqt 打的包无法运行 解决办法: 1、…

【netty】三万字详解!JAVA高性能通信框架,关于netty,看这一篇就够了

目录 1.概述 2.hello world 3.EventLoop 4.channel 4.1.同步 4.2.异步 4.3.调试 4.4.关闭 4.5.为什么要用异步 5.future 6.promise 7.pipeline 8.byteBuf 8.1.创建 8.2.内存模式和池化 8.2.1.内存模式 8.2.2.池化 8.3.组成 8.4.操作 8.4.1.读写 8.4.2.释放…

内容安全复习 2 - 网络信息内容的获取与表示

文章目录 信息内容的获取网络信息内容的类型网络媒体信息获取方法 信息内容的表示视觉信息视觉特征表达文本特征表达音频特征表达 信息内容的获取 网络信息内容的类型 网络媒体信息 传统意义上的互联网网站公开发布信息,网络用户通常可以基于网络浏览器获得。网络…

数据结构_优先级队列(堆)

目录 一、优先级队列 1.1 堆 1.2 PriorityQueue接口 二、模拟实现优先级队列 2.1 初始化 2.2 创建大根堆 (向下调整) 2.3 堆的插入 2.4 堆的删除 2.5 堆排序 总结 一、优先级队列 优先级队列是一种特殊的队列,其出队顺序与入队顺序无关,而与优…

Unet已死,Transformer当立!详细解读基于DiT的开源视频生成大模型EasyAnimate

Diffusion Models视频生成-博客汇总 前言:最近阿里云PIA团队开源了基于Diffusion Transformer结构的视频生成模型EasyAnimate,并且提出了专门针对视频的slice VAE,对于目前基于Unet结构的视频生成最好如SVD形成了降维打击,不论是生…

16s功能注释--PICRUST2的安装及使用

文章目录 安装本地安装conda安装 使用一些报错 安装 本地安装 在github网址下载压缩包:https://github.com/picrust/picrust2/releases/tag/v2.5.2 解压后将bin目录设置到环境变量 conda安装 利用bioconda安装 conda create -n picrust2 -c bioconda -c conda-…