LangChain教程:构建基于GPT的应用程序

ChatGPT和GPT-4的成功表明,通过使用强化学习训练的大型语言模型,可以构建可扩展且功能强大的自然语言处理应用程序。

然而,响应的有用性取决于提示信息,这导致用户探索了提示工程领域。此外,大多数现实世界的自然语言处理用例需要比单个ChatGPT会话更复杂的功能。这就是像LangChain这样的库可以发挥作用的地方!

LangChain是一个Python库,帮助您利用大型语言模型构建定制的自然语言处理应用程序。

在本指南中,我们将探讨LangChain是什么,以及您可以使用它构建什么。我们还将通过使用LangChain构建一个简单的问答应用程序来入门。

让我们开始吧!

LangChain是什么?

LangChain是由Harrison Chase创建的Python库,提供了开箱即用的支持,用于使用LLM(Large Language Models)构建自然语言处理应用程序。您可以连接到各种数据和计算源,并构建在特定领域数据源、私有存储库等上执行自然语言处理任务的应用程序。

截至撰写本文时(2023年3月),LangChain的GitHub存储库拥有超过14,000颗星星,并有来自世界各地的270多名贡献者。

使用LangChain可以构建的有趣应用程序包括(但不限于):

  • 聊天机器人

  • 针对特定领域的摘要和问答

  • 查询数据库以获取信息并进行处理的应用程序

  • 解决数学和推理谜题等特定任务的代理程序

LangChain模块概述

接下来,让我们看一下LangChain中的一些模块:

LLM(Large Language Models)

LLM是LangChain的基本组件。它实际上是围绕大型语言模型的封装,可以利用特定大型语言模型的功能和能力。

Chains(链式调用)

如前所述,LLM是LangChain中的基本单元。然而,正如LangChain的名字所暗示的那样,您可以根据特定任务来链式调用LLM。

例如,您可能需要从特定URL获取数据,对返回的文本进行

摘要,并使用生成的摘要回答问题。

链式调用也可以很简单。您可能需要读取用户输入,然后用它构建提示信息。然后可以用该提示信息生成响应。

提示(Prompts)

提示是任何自然语言处理应用程序的核心。即使在ChatGPT会话中,答案的帮助程度也取决于提示信息。为此,LangChain提供了可以用来格式化输入和执行其他实用功能的提示模板。

文档加载器和工具(Document Loaders and Utils)

LangChain的文档加载器和工具模块方便连接到数据源和计算源。

假设您有一个大型经济学文本语料库,希望构建一个自然语言处理应用程序。您的语料库可能包含各种文本文件、PDF文档、HTML网页、图像等。目前,文档加载器利用Python库Unstructured将这些原始数据源转换为可以进行处理的文本。

工具模块提供了Bash和Python解释器会话等功能。这对于需要直接与底层系统进行交互的应用程序很有用。或者在需要计算特定数学量或解决问题时,需要代码片段,而不是仅计算一次答案。

代理程序(Agents)

我们提到“链式调用”可以帮助将一系列LLM调用链接在一起。然而,在某些任务中,调用的顺序通常不确定。下一步很可能取决于用户输入和先前步骤的响应。

对于这种类型的应用程序,LangChain库提供了“代理程序”,可以根据沿途的输入采取动作,而不是固定的确定性顺序。

除上述之外,LangChain还提供与向量数据库的集成,并具有在LLM调用之间保持状态的内存功能等等。

使用LangChain构建问答应用程序

现在我们对LangChain有了一定的了解,让我们使用LangChain构建一个问答应用程序,以下是五个简单步骤:

第1步 - 设置开发环境

在编码之前,让我们设置开发环境。我假设您已经在工作环境中安装了Python。

您可以使用pip安装LangChain库:

pip install langchain

由于我们将使用OpenAI的语言模型,我们还需要安装OpenAI SDK:

pip install openai

第2步 - 将OPENAI_API_KEY设置为环境变量

接下来,登录您的OpenAI帐户。导航到帐户设置 > 查看API密钥。生成一个密钥并复制它。

在您的Python脚本中,使用os模块并利用环境变量字典os.environ。将"OPENAI_API_KEY"设置为您刚刚复制的密钥:

import osos.environ["OPENAI_API_KEY"] = "your-api-key-here"

第3步 - 使用LangChain进行简单的LLM调用

现在我们已经安装了所需的库,让我们看看如何使用LangChain进行简单的LLM调用。

为此,让我们导入OpenAI包装器。在本例中,我们将使用text-davinci-003模型:

from langchain.llms import OpenAIllm = OpenAI(model_name="text-davinci-003")

“text-davinci-003:具有更好的质量、更长的输出和一致的指令遵循性,可以执行任何语言任务,优于curie、babbage或ada模型。还支持在文本中插入补全。” - OpenAI文档

让我们定义一个问题字符串并生成一个回答:

question = "2023年学习的最佳编程语言是什么?"print(llm(question))
输出 >>很难预测2023年最受欢迎的编程语言是哪个。然而,当今最受欢迎的编程语言是JavaScript、Python、Java、C++和C#,所以它们很可能在可预见的未来保持受欢迎。此外,像Rust、Go和TypeScript等较新的语言正在赢得关注,可能在未来成为受欢迎的选择。

第4步 - 创建提示模板

让我们提出另一个问题,关于学习一门新编程语言的顶级资源,比如Golang:

question = "2023年学习Golang的前4个资源是什么?"print(llm(question))
输出 >>1. The Go Programming Language by Alan A. A. Donovan and Brian W. Kernighan2. Go in Action by William Kennedy, Brian Ketelsen and Erik St. Martin3. Learn Go Programming by John Hoover4. Introducing Go: Build Reliable, Scalable Programs by Caleb Doxsey

虽然这对初学者来说效果不错,

但是当我们试图整理一份学习多种编程语言和技术栈的资源清单时,它很快变得重复。

这就是提示模板发挥作用的地方。您可以创建一个模板,可以使用一个或多个输入变量进行格式化。

我们可以创建一个简单的模板来获取学习任何技术栈的前k个资源。在这里,我们使用"k"和"this"作为输入变量:

from langchain import PromptTemplatetemplate = "2023年学习{k}的前{k}个资源是什么?"prompt = PromptTemplate(template=template, input_variables=['k', 'this'])

第5步 - 运行我们的第一个LLM链

现在我们有了一个LLM和一个可以在多个LLM调用中重复使用的提示模板。

llm = OpenAI(model_name="text-davinci-003")prompt = PromptTemplate(template=template, input_variables=['k', 'this'])

让我们继续创建一个LLMChain:

from langchain import LLMChainchain = LLMChain(llm=llm, prompt=prompt)

现在,您可以将输入作为字典传入,并运行LLM链,如下所示:

input = {'k': 3, 'this': 'Rust'}print(chain.run(input))
输出 >>1. Rust By Example - Rust By Example是学习Rust的一份很好的资源,它提供了一系列交互式练习,教你如何使用该语言及其特性。2. Rust Book - 官方的Rust Book是该语言的全面指南,从基础知识到更高级的主题。3. Rustlings - Rustlings是快速学习Rust的好方法,它提供一系列小练习,帮助你逐步学习该语言。

总结

这就是全部内容!您现在知道如何使用LangChain构建一个简单的问答应用程序。希望您对LangChain的功能有了初步了解。作为下一步,尝试探索LangChain以构建更有趣的应用程序。祝编码愉快!

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

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

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

相关文章

防火墙实验配置

实验要求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区全天都能访问 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,…

echarts——横坐标轴文字过长如何换行

横坐标轴文字过长,想要换行 实现如下效果 具体实现代码如下: axisLabel: {show: true,interval: 0,formatter: function (value) {var ret "";//拼接加\n返回的类目项 var maxLength 4;//每项显示文字个数 var valLength value.length;//X轴类目项…

智慧城市大数据运营中心 IOC:Web GIS 地图应用助力智能决策

利用图扑 HT for Web GIS 技术,智慧城市大数据运营中心 (IOC) 实现动态可视化展示,整合多源数据,提高城市管理和资源分配效率,支持智能决策与实时监控。

【数据结构与算法 经典例题】单值二叉树的判断

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 目录 一、问题描述 二、解题思路 三、C语言实现代码 一、问题描述 如果二叉树…

Linux 防火墙配置指南:firewalld不同服务管理的应用案例(十个)

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作时间&…

nginx正向代理、反向代理、负载均衡

nginx.conf nginx首要处理静态页面 反向代理 动态请求 全局模块 work processes 1; 设置成服务器内核数的两倍(一般不不超过8个超过8个反而会降低性能一般4个 1-2个也可以) netstat -antp | grep 80 查端口号 *1、events块:* 配置影响ngi…

贴脸细看Mixtral 8x7B- 稀疏混合专家模型(MoE)的创新与推动

贴脸细看Mixtral 8x7B- 稀疏混合专家模型(MoE)的创新与推动 原创 一路到底孟子敬 上堵吟 2024年01月15日 20:05 美国 I. 引言 A. Mixtral 8x7B的背景和目的 • 背景:随着大型语言模型在自然语言处理(NLP)领域的广泛…

2024年上海和数集团市场部下半年工作会议圆满召开

2024年6月19日,上海和数集团市场部下半年工作会议在苏州2.5产业园圆满召开! 和数研究院院长徐敬东发表了“把握数字经济浪潮”的主题演讲。 徐院长深入分析了当前数字经济的发展趋势,强调了数字技术在推动全球经济增长中的重要作用。 和数集…

Java使用POI导出后数字类型为常规类型,不能计算

今日日常撸码,甲方提出来excel导出后,数字类型那一列是常规类型,并不是数字,无法进行计算,如下图: 这里和导出的字段类型有关,我用的是POI进行excel的导出,需要在实体类上标注出需要…

概率论期末速成(知识点+例题)

考试范围 一: 事件关系运算性质全概率公式、贝叶斯公式古典概型 二: 离散分布律连续密度函数性质 -> 解决三个问题(求待定系数、求概率、求密度函数)分布函数 -> 解决三个问题常用分布(最后一节课的那几个分…

【C++】使用C++实现基于Socket的通信

在本文中,我们将详细讨论如何使用C实现基于Socket的通信,并设计一个TLV(Type-Length-Value)协议用于数据交互。TLV协议因其灵活性和可扩展性,在多种通信协议中被广泛使用,特别是在需要动态定义数据结构的场…

提升Selenium在Chrome上的HTML5视频捕获效果的五个方法

在使用Selenium进行网页自动化测试时,捕获HTML5视频是一个常见的需求。然而,许多开发者发现,在使用Chrome浏览器时,视频捕获效果并不理想,经常出现视频背景为空白的问题。本文将概述五种方法,帮助提升Selen…

边框插画:成都亚恒丰创教育科技有限公司

边框插画:艺术与生活的精致边界 在视觉艺术的广阔天地里,边框插画以其独特的魅力和细腻的表达方式,成为连接艺术与生活的一道精致边界。成都亚恒丰创教育科技有限公司它不仅仅是图像的外框装饰,更是情感、故事与创意的延伸&#…

从天空到地面:无人机航拍推流直播技术在洞庭湖决口封堵中的全方位支援

据新闻报道,受持续强降雨影响,湖南省华容县团洲垸洞庭湖一线堤防发生管涌险情,随后出现决口。截至7月8日20时左右,226米长的洞庭湖一线堤防决口已累计进占208米,目前剩余18米,有望在今晚或9日凌晨实现合龙。…

Geoserver源码解读六 插件

系列文章目录 Geoserver源码解读一 环境搭建 Geoserver源码解读二 主入口 Geoserver源码解读三 GeoServerBasePage Geoserver源码解读四 REST服务 Geoserver源码解读五 Catalog Geoserver源码解读六 插件(怎么在开发模式下使用) 目录 系列文章目…

微软Win11 24H2七月更新补丁KB5040435发布!附下载

系统之家于7月10日发出最新报道,微软为Win11用户发布了24H2版本七月的最新更新补丁KB5040435。用户升级系统后,会发现版本号升至 26100.1150。此次更新针对远程身份验证拨入用户服务(RADIUS)协议与 MD5冲突等问题进行修复。接下来跟随小编看看此次更新的…

中国 水文站 分布 矢量数据

中国 水文站 分布 矢量数据 数据介绍 水文站hydrological station是观测及搜集河流、湖泊、水库等水体的水文、气象资料的基层水文机构。中国把水文站按性质分为基本站和专用站。前者的任务是收集实测资料,提供探索基本水文规律的资料,满足水资源评价、…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 Day3

前端框架必会的(ajaxnode.jswebpackgit)个人学习心得作业及bug记录 Day3 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner 🌹 如果本…

sdwan是硬件还是网络协议?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)并不是一个硬件产品或单一的网络协议,而是结合了软件、硬件和网络技术的一种解决方案。SD-WAN的核心在于其软件定义的特性,它通过软件来控制和管理广域网的…

使用机器学习 最近邻算法(Nearest Neighbors)进行点云分析

使用 NearestNeighbors 进行点云分析 在数据分析和机器学习领域,最近邻算法(Nearest Neighbors)是一种常用的非参数方法。它广泛应用于分类、回归和聚类分析等任务。下面将介绍如何使用 scikit-learn 库中的 NearestNeighbors 类来进行点云数…