吴恩达《LangChain for LLM Application Development》课程笔记

news2024/7/6 1:33:07

目录

1. 前言

2. 课程笔记

2.1. 模型、提示和解析器

2.2. LLM记忆,上下文管理

2.3. 链式操作

2.4. 文档问答

2.4.1. stuff 方法

2.4.2. 其他方法

2.5. LLM应用评估

2.6. 代理

2.6.1. 预定义工具

2.6.2. 自定义工具

代码资源:


1. 前言

LangChain是一个用来构建LLM应用的开源框架,主要是为基于大语言模型的应用提供一系列的构建工具包。这个短课程的主要内容有:

  • 模型、提示和解析器:调用LLM,提供提示并解析响应。
  • LLM的记忆:用于存储对话和管理有限上下文空间的记忆。
  • 链式操作:创建操作序列。
  • 文档问答:将LLM应用于您的专有数据和用例需求。
  • 代理:探索将LLM作为推理代理的新兴发展趋势。

原课程地址:LangChain for LLM Application Development - DeepLearning.AI

B站转载:(超爽中英!) 2024吴恩达最好的【LangChain大模型应用开发】教程!附课件代码 DeepLearning.AI

2. 课程笔记

2.1. 模型、提示和解析器

2_L1_model prompt parser.zh_哔哩哔哩_bilibili

这节课的要点有两个:

a. 使用Langchain的模板功能,将需要改动的部分抽象成变量,在具体的情况下替换成需要的内,达到一次定义,多次使用的效果。

书中提到的一个例子是,使用模板,去转化表达的风格。这种方式比fstring要更灵活,特别是模板很长的时候。

prompt

b. 使用一个解析器,将LLM的输出解析成你需要的格式,如字典。

parse

2.2. LLM记忆,上下文管理

这节课主要如何使用不同的内存类来管理与LLM的对话上下文。

memory

  • ConversationBufferMemory:保存所有上下文。
  • ConversationBufferWindowMemory:以对话轮数为单位,设置最大轮数限制。
  • ConversationTokenBufferMemory:以token的个数为单位,设置最大个数限制。
  • ConversationSummaryBufferMemory:可以设置对话token最大个数,但使用llm来总结之前的对话内容。

2.3. 链式操作

链式操作有点像工作流,基本单元是Chain,通过与LLM和提示词结合,可以构建出各种结构的链式操作,对文本及数据执行一系列操作。

a. 基础链

LLMChain,结合提示词,组成一个基本的单位,对输入进行相应,输出结果,是构建复合链的基本单位。

b. 顺序链

将基础链按照顺序前后组合起来,上一个基础链的输出是下一个基础链的输入,又包括以下两种细类:

SimpleSequentialChain:单输入/输出。

简单链

SequentialChain:多输入/输出,通过输入/输出键进行指定。

复杂链

c. 路由链

LLMRouterChain,根据输入的内容,将其路由到不同的链中。

路由链

2.4. 文档问答

给定文档,让LLM根据文档的内容回答问题。

由于LLM一般一次只能处理几千个词,因此基于文档的问答需要使用embedding和向量存储技术。

2.4.1. stuff 方法

a. embeddings

所谓embedding(词嵌入)就是将一段文本,转化成一个能够表征文本语义的向量,语义上相近的文本他们的向量也相似。

embeddings

b. 向量存储

一般将文本分解成一个个块(chunks),然后将每个块转为embedding,最后将这些embedding存入向量数据库中,相当于建立了索引。

向量存储

c. 查询过程

首先将查询文本转为embedding,然后在向量数据库中寻找并返回与这个查询最相似的n个查询。

查询

d. LLM处理

最后将这n个结果输入LLM进行处理,获得最后的答案。

语言模型处理

这就是文档问答最简单的办法,将所有文档都放入上下文中,并对语音模型进行一次调用,这种方法叫stuff method。

stuff qa

前面都是针对相同类型的片段进行回答的方法,但是针对不同类型的片段进行相同类型的问题和回答,则需要用到下面的几种方法。

2.4.2. 其他方法

Map_reduce方法:将每个片段和问题一起传递给LLM,得到各自的回答,然后使用另外一个LLM将所有单独的回答汇总成最后的答案。可以看到每个文档都是独立的,有利于并行执行,缺点是文档与文档之间也没有交互。

mp

Refine方法:当前的回答依赖于上一个文档的回答,对于合并信息和逐步构建答案非常有用,最后的答案长度趋于更长,缺点是并行度差,需要更长的处理时间。

refine

Map_rank方法:一种实验性的方法,为每个文档执行一次LLM调用,并返回回答与评分,选择分数最高的那个回答。这个方法,依赖于语言模型需要知道如何评分以及你关于评分的指导说明。这个方法并行度和MapReduce方法一样。

maprank

2.5. LLM应用评估

这节主要深入介绍一些框架,以及帮助进行评估的工具,亮点是使用LLM和链式操作来评估其他LLM、链式操作或者应用程序。

一种做法是,查看数据,提出示例问题,并提供正确答案以便评估,这个过程可以使用QAGenerateChain类来实现自动化。

另外,可以使用QAEvalChain类,来自动评估LLM对问题的回答是否是正确的,这个很重要,因为很多时候,可能正确答案跟回答的意思是一样的,但是表述却区别很大,无法单纯使用字符串匹配或者正则来比较。

为了调试中间过程,可以将langchain.debug = True,这样中间的提示,QA的检索过程,输入输出,token的使用情况等信息都可以打印出来。

另外本节还简单介绍了一下LangChain评估平台,可以将上述过程持久化并在用户界面中展示出来,另外还可以查看中间的调试信息,并且可以将生成的问答整理成新的数据集。

2.6. 代理

代理的目的,是将LLM视为一个推理引擎,你可以提供文本块或者其他信息源给它,然后这个LLM可以利用互联网上学到的背景知识,帮助回答问题和推理内容。

本节主要内容包括如何创建和使用代理,如何为其配备内在LangChain中的搜索引擎等不同类型的工具,让代理可以与任何数据存储,任何API和函数进行交互。

2.6.1. 预定义工具

  • llm-math:实际是个Chain,使用语言模型和计算器来解决数学问题。
  • wikipedia:维基百科工具,连接到维基百科的API,允许对维基百科进行搜索查询并返回结果。
  • PythonREPLTool:python执行环境,根据输入提示,使用python进行推理,并对推理结果进行相应处理,如打印出来。

初始化代理后,代理能够自动根据问题的类型,选择合适的工具进行推理,开了verbose标志后,可以看到代理每一步的推理过程。

0b96692903ac36bb517972c0ab53962

image

2.6.2. 自定义工具

另外,还可以将代理连接到自己的信息源、API和数据,需要自定义自己的工具,操作步骤:

在自己的工具函数前加上LangChain库中的@tool装饰器,然后写一个非常详细的文档,用来让代理了解一些约束及如何调用该工具。

image

(完)

本文版权归作者(https://www.cnblogs.com/harrymore/)和博客园共有,欢迎转载


配套代码:

由于资源时常更新,链接不稳定,可以在助理处自取该文章配套代码

【一】上千篇CVPR、ICCV顶会论文
【二】动手学习深度学习、花书、西瓜书等AI必读书籍
【三】机器学习算法+深度学习神经网络基础教程
【四】OpenCV、Pytorch、YOLO等主流框架算法实战教程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇聚荣拼多多电商好不好?

拼多多电商好不好?这是一个值得探讨的问题。拼多多作为中国领先的电商平台之一,以其独特的商业模式和创新的营销策略吸引了大量用户。然而,对于这个问题的回答并不是简单的好或不好,而是需要从多个方面进行综合分析。 一、商品质量 来看拼多…

混合专家模型(MoE)的前世今生

在文章《聊聊最近很火的混合专家模型(MoE)》中,我们简单介绍了MoE模型的定义和设计,并且比较了MoE和Dense模型的区别,今天我们继续来回顾一下MoE模型发展的历史和最新的发展现状。 从去年GPT-4发布至今,MoE…

AIGC重塑创意设计:不仅能带来新技术,更能引发新思考

随着科技的飞速发展,AIGC(生成式人工智能)已经逐渐成为创意设计领域的一股新势力。从影视制作到游戏设计,从平面广告到数字媒体,AIGC的影响力无处不在,它不仅带来了全新的技术手段,更在深层次上…

[SAP ABAP] 数据字典

ABAP数据字典是定义和管理数据库对象的工具 系统的所有全局数据类型以及数据库表结构等都需要在数据字典中创建和维护(数据字典中的对象对所有ABAP程序都是全局的) 通过数据字典,我们可以把数据库对象管理好,后续才能顺利的进行功能开发,SA…

安全为基、创新驱动,Soul App创始人张璐团队大力筑牢社交平台发展之基

随着技术的不断进步,AIGC在各个领域的应用日益广泛。在社交领域,AIGC社交为用户带来了更加高质量、个性化的社交体验,但同时也伴随着数据隐私泄露、网络诈骗和不良信息误导等风险。因此,社交平台在抓住AIGC技术发展机遇的同时,也要警惕技术所带来的风险。新型社交平台Soul App坚…

15_软件程序设计基础

目录 嵌入式软件开发原理 宿主机和目标机 交叉编译 交叉调试 嵌入式软件开发特点和挑战 开发工具 程序设计语言基本概念 解释和编译 常见程序设计语言 程序设计语言的基本成分 编译程序基本原理 嵌入式软件开发原理 宿主机和目标机 嵌入式软件开发不同于传统软件开…

IO-Link OD介绍

IO-Link OD(On-request Data,按需数据)是IO-Link通信中的一种重要数据类型,主要用于参数读写、指令交互、事件上传等动作。以下是关于IO-Link OD的结构、构成以及功能使用的详细说明: 结构与构成 定义:OD…

星火认知大模型Spark3.5 api调用 #AI夏令营 #Datawhale #夏令营

环境安装 pip install --upgrade -q spark_ai_python 官网注册 链接:https://console.xfyun.cn/app/myapp 官方会在报名成功后,立即发放星火大模型 Spark Max的 API 额度助力我们完成赛事, 200w Tokens 任你花! 暑期有四场夏令营…

ADS基础教程23 - 有限元电磁仿真(FEM)可视化操作

EM介绍 一、引言二、FEM可视化操作流程1.打开可视化界面2.查看介质的网格3.设置网格颜色4.选择网格5.传感器选择6.编辑传感器7.选择频率8.动画 三、总结 一、引言 在ADS基础教程22中介绍了如何在ADS进行有限元电磁仿真(FEM),本文将继续介绍F…

MSVCR120.DLL丢失的多种修复方法,助你快速解决dll问题

在日常生活和工作中,电脑已经成为我们不可或缺的工具。然而,在使用电脑的过程中,我们常常会遇到一些问题,其中之一就是电脑运行软件时提示找不到msvcr120.dll。如果该文件缺失或损坏,可能会导致依赖它的应用程序无法启…

解锁跨境电商新边界:Temu API接口深度解析引言

引言 在竞争激烈的跨境电商领域,高效、精准的数据获取成为商家制胜的关键。Temu(拼多多跨境电商)作为行业内的新秀,其API接口服务为商家提供了强大的数据交互能力,尤其是其获取商品详情的核心功能,更是为商…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富,主要分为以下几种类型,每种类型都有其特定的用途和特性。 一、整型数值 1.定义:整数类型用于表示整数值,如1、-5、100等。 2.特点: Python 3中的…

【SGX系列教程】(三)Intel-SGX 官方示例分析(SampleCode)——SampleEnclave

文章目录 一. 引言二. README2.1 项目目的2.2 构建和执行示例代码的步骤2.3 配置参数解释2.4 配置文件分析2.5 启动令牌初始化 三. 重点代码分析3.1 App文件夹3.1.1 App/App.cpp3.1.2 App/Edger8rSyntax文件夹3.1.2.1 App/Edger8rSyntax/Arrays.cpp3.1.2.2 App/Edger8rSyntax/F…

Redis慢查询

Redis慢查询 目录 Redis慢查询慢查询配置慢日志操作返回参数介绍 Redis的慢查询就是当命令执行时间超过预定的阈值后将这条命令记录下来,与MySQL的功能类似 慢查询配置 默认阈值是10毫秒,即10000微秒 临时修改阈值为20毫秒 127.0.0.1:6379> confi…

千元好礼等你来拿 MatrixOne最强体验官

开发者集合![MatrixOne最强体验官]带着丰厚的奖品走来啦!MatrixOne 是一款高度兼容 MySQL 语法的 HTAP 数据库,MatrixOne Cloud (MO Cloud) 是基于 MatrixOne 内核的全托管云原生数据平台,具备实时 HTAP,多租户&#x…

VuePress介绍

从本文开始,动手搭建自己的博客!希望读者能跟着一起动手,这样才能真正掌握。 ‍ VuePress 是什么 VuePress 是由 Vue 作者带领团队开发的,非常火,使用的人很多;Vue 框架官网也是用了 VuePress 搭建的。即…

hadoop集群部署【二】YARN MapReduce 的部署

提前注意:请注意路径是否和我的相同,放置的位置不同,请修改标红处 HDFS部署 HDFS介绍及部署http://t.csdnimg.cn/Q3H3Y 部署说明 Hadoop HDFS分布式文件系统,我们会启动: NameNode进程作为管理节点 DataNode进程…

Transformer模型原理细节解析

基本原理: Transformer 的核心概念是 自注意力机制(Self-Attention Mechanism),它允许模型在处理每个输入时“关注”输入序列的不同部分。这种机制让模型能够理解每个单词或符号与其他单词或符号之间的关系,而不是逐个地线性处理输入。 Transformer 主要由两个部分组成:…

物料编码误区解析:制造企业如何避免

物料编码是制造企业物料管理中不可或缺的一环,它为每种物料提供了一个唯一的标识符。在物料种类繁多的现代制造业中,一个科学、合理的物料编码体系对于提高物料管理效率、降低成本、防止错误和舞弊具有至关重要的作用。本文将探讨物料编码的重要性、原则…

我在中东做MCN,月赚10万美金

图片|Photo by Ben Koorengevel on Unsplash ©自象限原创 作者丨程心 在迪拜购物中心和世界最高建筑哈利法塔旁的主街上,徐晋已经“蹲”了三个小时,每当遇到穿着时髦的年轻男女,他都会上前询问,有没有意愿成为…