2023年大语言模型神器 - LangChain


 概要

今天介绍一下 LangChain 框架,LangChain 是一个帮助在应用程序中使用大型语言模型(LLM)的编程框架。它可以将大型语言模型与其他计算或知识来源相结合,从而实现功能更加强大的应用。

最初 LangChain 是一个开源项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。随着大模型的热度不断攀升,LangChain也获得了越来越多的开发人员亲睐。

什么是 LangChain

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。

简单来说,可以理解 LangChain 相当于开源版的GPT插件,它提供了丰富的大语言模型工具,支持在开源模型的基础上快速增强模型的能力。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。

LangChain 核心概念及原理

9341203639d24acd8d8dcc9caf098451.png

1. Components and Chains

在 LangChain 中,Component 是模块化的构建块,可以组合起来创建强大的应用程序。Chain 是组合在一起以完成特定任务的一系列 Components(或其他 Chain)。例如,一个 Chain 可能包括一个 Prompt 模板、一个语言模型和一个输出解析器,它们一起工作以处理用户输入、生成响应并处理输出。

2. Prompt Templates and Values

语言模型提示词模板PromptTemplates,提示模板可以让我们重复的生成提示,复用我们的提示。它包含一个文本字符串(“模板”),从用户那里获取一组参数并生成提示。PromptValues 是具有方法的类,这些方法可以转换为每个模型类型期望的确切输入类型(如文本或聊天消息)。

3. Memory

默认情况下Agent和Chain都是无状态的,所以用完之后不知道上次的对话内容是什么。ChatMessageHistory 类负责记住所有以前的聊天交互数据,然后可以将这些交互数据传递回模型、汇总或以其他方式组合。这有助于维护上下文并提高模型对对话的理解。

4. Indexes and Retrievers

Index 是一种组织文档的方式,使语言模型更容易与它们交互。检索器是用于获取相关文档并将它们与语言模型组合的接口。LangChain 提供了用于处理不同类型的索引和检索器的工具和功能,例如矢量数据库和文本拆分器。

5. Agents and Toolkits

Agent 是在 LangChain 中推动决策制定的实体。他们可以访问一套工具,并可以根据用户输入决定调用哪个工具。Tookits 是一组工具,当它们一起使用时,可以完成特定的任务。代理执行器负责使用适当的工具运行代理。

6. Output Parsers

输出解析器,负责将语言模型响应构建为更有用的格式,可以让LLM输出更加结构化的信息。它们实现了两种主要方法:一种用于提供格式化指令,另一种用于将语言模型的响应解析为结构化格式。这使得在您的应用程序中处理输出数据变得更加容易。

7. Example Selectors

示例选择器,他们接受用户输入并返回一个示例列表以在提示中使用,如果有多个案例的时候,使用ExampleSelectors选择一个案例让提示词使用:

  • 自定义的案例选择器
  • 相关性选择器,选择一个和输入最相关的案例
  • 基于长度的案例选择器,输入长的时候按理会少一点,输入多的时候,案例会多一些

理解了上面的这些核心概念之后,你就可以利用 LangChain 的强大功能来构建适应性强、高效且能够处理复杂用例的高级语言模型应用程序。

应用案例实战

如何使用LangChain做一款聊天机器人?

由于 LangChian 有相应的开源工具帮我们把各种组件做了可视化,所以直接拖拽即可,我们使用LangFlow:

pip install langflow

然后运行命令:

langfow

如果和本地的LangChain有冲突,我们可以使用Docker运行langfow:

FROM python:3.10-slimRUN apt-get update && apt-get install gcc g++ git make -yRUN useradd -m -u 1000 userUSER userENV HOME=/home/user \PATH=/home/user/.local/bin:$PATHWORKDIR $HOME/appCOPY --chown=user . $HOME/appRUN pip install langflow>==0.0.71 -U --userCMD ["langflow", "--host", "0.0.0.0", "--port", "7860"]

在界面上配置LangChain的三个组件:在最右下角是对应的聊天窗口,输入下openai的key

05b6a5a1b266455b92a8c6458a6ca456.png

开始聊天验证下我们的配置:

00ee0ca24b0d47bea2152f28a52b57eb.png

整个过程基本上没怎么写代码,只要了解LangChain的组件的功能,基本上就可以搭建出一款简单的聊天机器人。

总结

本文介绍了LangChain框架,它通过提供模块化和灵活的方法简化了构建高级语言模型应用程序的过程。通过了解组件、链、提示模板、输出解析器、索引、检索器、聊天消息历史记录和代理等核心概念,我们可以创建适合特定需求的自定义解决方案。

相信在不远的未来,LangChain有望在各个领域发挥出巨大作用,促进工作效率的变革,让我们一起期待吧!

欢迎点赞收藏转发,感谢!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

open3d实现搜索在一个球内部的点云

目录 写在前面原理代码结果参考完 写在前面 1、本文内容 给定一个点云P和一个圆心为center,半径为r的球,搜索出P中属于球内的点 2、平台/环境 使用open3d, cmake,适用windows/linux 3、转载请注明出处: https://blog.csdn.net/q…

【uniapp开发小程序】实现同声传译(长按语音转文字)

效果图: 插件: 采用小程序插件:微信同声传译。插件文档定位 具体步骤: 先登录小程序后台(项目别错了):官网传送然后 设置 > 第三方设置 > 添加插件 在插件文档里面拿到Appid和版本号 在…

14-Vue插槽(slot),制作可复用组件

什么是 slot ? Vue 将 <slot>元素作为承载分发内容的出口。插槽内可以包含任何模板代码&#xff0c;包括 HTML或其它组件。 在某些组件的模板中&#xff0c;有一部分区域需要父组件来指定 <!-- message组件&#xff1a;一个弹窗消息 --> <div class"mes…

组合取球-2022年全国青少年信息素养大赛Python国赛第6题

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第8讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设计…

安全防御 --- DDOS攻击(01)

DOS攻击&#xff08;deny of service&#xff09;--- 拒绝式服务攻击 例&#xff1a;2016年10月21日&#xff0c;美国提供动态DNS服务的DynDNS遭到DDOS攻击&#xff0c;攻击导致许多使用DynDNS服务的网站遭遇访问问题&#xff0c;此事件中&#xff0c;黑客人就是运用了DNS洪水…

LinearAlgebraMIT_5_SpacesOfVectors

这一节中我们将学习向量空间。 x.1 转置矩阵和构造对称矩阵 在开启向量空间的学习前我们先复习一下转置矩阵和置换矩阵。我们将矩阵转置前后不变的矩阵称为对称矩阵。而我们如何得到一个对称矩阵呢&#xff0c;我们使用矩阵乘以矩阵的转置便可得到。 x.2 Vectors Space 向量…

如何执行Photoshop脚本

环境 Photoshop: CC2017 OS: Windows 10 脚本放置位置 C:\Program Files\Adobe\Adobe Photoshop CC 2015\Presets\Scripts #也就是 PS的安装目录\Presets\Scripts

探究Vue源码:mustache模板引擎(5) 对比rollup与webpack,在本地搭建webpack环境

好 从本文开始 我们就来手写一下mustache这个库 他是模板引擎的一个祖先 将模板字符串编译成一个dom字符串 就是它的思想&#xff0c;这也是一个具有跨时代意义的思想 这里的话 我们还是搭一个 webpack 的项目环境 这里值得一提的是 mustache 他官方是通过rollup来进行打包的 …

简述JMeter实现分布式并发及操作

为什么要分布式并发&#xff1f; JMeter性能实践过程中&#xff0c;一旦进行高并发操作时就会出现以下尴尬场景&#xff0c;JMeter客户端卡死、请求错误或是超时等&#xff0c;导致很难得出准确的性能测试结论。 目前知道的有两个方法可以解决JMeter支撑高并发&#xff1a; …

微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录

数据绑定&#xff0c;事件绑定&#xff0c;事件传参与数据同步 1. 数据绑定1.1. 在data中定义数据1.2. 在wxml中渲染数据 &#xff08;mustache语法&#xff09; 2. 事件绑定2.1. 事件2.2. 常用的事件2.3. 事件对象的属性列表2.4. target 和 currentTarget的区别 3. 事件传参与…

订单结算页+下单业务

一、订单结算页 1.业务分析 (1) 获取用户收货地址信息 一般的收货地址都是多个&#xff0c;使用时选中一个&#xff0c;所以收货地址使用List集合封装 (2)获取购物车商品信息 购物车商品也是多个&#xff0c;使用List集合封装 (3)查询商品库存 查询每个商品是否有库存&#…

Scrap爬虫框架集成Selenium来解析动态网页

1、爬虫项目单独使用scrpay框架的不足 当前网站普遍采用了javascript 动态页面&#xff0c;特别是vue与react的普及&#xff0c;使用scrapy框架定位动态网页元素十分困难&#xff0c;而selenium是最流行的浏览器自动化工具&#xff0c;可以模拟浏览器来操作网页&#xff0c;解…