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

news2024/9/30 1:40:27

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://www.coloradmin.cn/o/1913554.html

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

相关文章

突破AI性能瓶颈 揭秘LLaMA-MoE模型的高效分配策略

获取本文论文原文PDF,请在公众号【AI论文解读】留言:论文解读 本文介绍了一种名为“LLaMA-MoE”的方法,通过将现有的大型语言模型(LLMs)转化为混合专家网络(MoE),从而解决了训练MoE…

3DMAX卡死也要安装的10大插件

在探索3DMAX的无限创意边界时,有些插件如同星辰般璀璨,即便面对插件偶尔的“倔强”卡顿,设计师们依然对其爱不释手,誓要将其纳入麾下。以下便是那份令人心动的“卡死也要安装”的10大插件清单,每个都蕴含着设计师对美的…

HKT DICT解决方案,为您量身打造全方位的一站式信息管理服务

随着大数据时代的到来,企业对现代化管理、数据整合与呈现的解决方案需求不断增长。为满足更多企业客户的多元化信息管理发展需求,香港电讯(HKT)强势推出全面、高效、安全、可靠的一站式DICT(Digital Information and C…

Python数据处理之高效校验各种空值技巧详解

概要 在编程中,处理空值是一个常见且重要的任务。空值可能会导致程序异常,因此在进行数据处理时,必须确保数据的有效性。Python 提供了多种方法来处理不同数据对象的空值校验。本文将详细介绍如何对Python中的各种数据对象进行空值校验,并包含相应的示例代码,帮助全面掌握…

mipi协议中的calibration和scramble模式

在MIPI(Mobile Industry Processor Interface)协议中,calibration(校准)和scramble(加扰)模式是两个重要的特性,它们分别用于优化数据传输的准确性和减少信号干扰。以下是对这两个模式的详细解析: Calibration(校准)模式 目的与功能: 校准模式主要用于优化和补偿由…

备考无忧,张驰课堂与刷题共筑六西格玛考试坚实后盾

刷题对考中质协(中国质量协会)的六西格玛绿带和黑带考试具有显著的帮助,主要体现在以下几个方面: 一、巩固知识点 加深理解:刷题可以帮助考生更深入地理解和记忆六西格玛管理的相关知识点。通过反复练习,…

CAD应用程序开发工具CST CAD Navigator 1.4.0.1 正式发布—— 带来了 G 代码生成功能

CST CAD Navigator是一款兼容Windows和Linux的CAD应用程序。在其简单的界面下,有一个可以快速查看2D图纸和3D模型的强大核心。软件可以轻松地导入和导出文件,获取尺寸,并创建截面视图。 下载最新版CST CAD Navigatorhttps://www.evget.com/p…

七款知名电脑监控软件的介绍(2024年电脑监控软件整理推荐)

在信息化迅猛发展的今天,电脑监控软件成为企业管理和安全防护的重要工具。这类软件不仅有助于提高员工工作效率,还能防范数据泄露,保障企业的核心利益。以下是对几款知名电脑监控软件的介绍,它们在各自领域内都有出色表现。 固信…

帕金森患者营养小贴士

👋亲爱的小伙伴们,今天我要给大家带来一份特别的关怀——关于帕金森患者的营养小贴士📘。帕金森病虽然是一种神经系统疾病,但合理的营养摄入对于患者的生活质量有着不可忽视的影响哦!💪 🍎多吃水…

如何探索高效知识管理:FlowUs知识库体验很好

在当今信息爆炸的时代,有效的知识管理对于个人和团队的发展至关重要。FlowUs 知识库作为一款创新的知识管理工具,正逐渐成为众多用户的首选,为他们带来了高效、便捷和有条理的知识管理体验。 FlowUs 知识库的一大特色在于其简洁直观的界面设计…

算法可以赋能教育业务的哪些场景?

本文内容就一个点,将算法应用到教育系统中的各场景,让每个业务模块都实现智能化 以下列举出所有的需求点 目录 一、千人千面,个性化推荐流,推荐用户感兴趣的内容 实现方案:CTR模型 应用场景:所有的内容…

java使用poi-tl模版引擎导出word之列表循环数据渲染

目录 1.模版制作2.开启spring表达式3.编写关键代码接口4. 导出结果 poi-tl模版引擎中,如果区块对的值是一个非空集合,区块中的文档元素会被迭代渲染一次或者N次,这取决于集合的大小,类似于foreach语法。 1.模版制作 在静态资源目…

制作电子名片的小程序系统源码 快速生成电子名片

在当今数字化时代,传统的纸质名片已逐渐被智能电子名片所取代。电子名片小程序作为一种基于微信生态的创新名片交换方式,凭借其便捷性、高效性和环保性,成为了众多商务人士的首选。小编分享一个制作电子名片的小程序系统源码,无忧…

【pyqt-实训训练LOG】串口助手

串口助手 前言一、ui设计二、ui的控件命名三、ui转py使用类的方法【扩展】使用ui文件导入!P7的小错误解决办法 总结 前言 我的惯例就是万物之始,拜见吾师🥰⇨pyqt串口合集 最开始的时候我想的是,学了那么久的pyqt,我…

逻辑芯片:现代电子技术的基石

在现代科技飞速发展的时代,逻辑芯片作为集成电路的重要组成部分,已经渗透到我们生活的每一个角落,从计算机到智能手机,从通信设备到工业自动化系统,无一不彰显着其不可或缺的作用。本文将深入探讨逻辑芯片的基本概念、…

如何判断一个js对象为数组类型

如何判断一个js对象为数组类型? 能想到的最常见的intanceof是吗?开始是这么认为,但是不是哈,看下面的解释,也没有太明白,暂且记住吧 综上,判断js对象为数组的两种方式 Array.isArray([]) // trueObject.prototype.toString.call([]) ‘[object Array]’ //true

凝思安全操作系统安装部署

原文链接:凝思安全操作系统安装部署 Hello,大家好啊!今天给大家带来一篇关于凝思安全操作系统安装部署的文章。凝思安全操作系统是一款注重安全和隐私保护的操作系统,适用于各种高安全性需求的场景。本文将详细介绍如何安装和部署…

速度太慢,跑个分试试:AI语言模型和API性能对比;开源的高质量PDF,DOC提取工具;斯坦福TTT代码实现

✨ 1: Artificial Analysis AI语言模型和API提供商的比较分析,帮助用户选择最佳方案。 Artificial Analysis 是一个专门独立分析AI语言模型和API提供商的平台,旨在帮助用户了解AI领域并选择最适合其需求的模型和API提供商。以下是该平台的主要内容和功…

一键掌握天气动态 - 基于Vue和高德API的实时天气查询

前言 本文将学习如何使用Vue.js快速搭建天气预报界面,了解如何调用高德地图API获取所需的天气数据,并掌握如何将两者有机结合,实现一个功能丰富、体验出色的天气预报应用 无论您是前端新手还是有一定经验,相信这篇教程都能为您带来收获。让我们一起开始这段精彩的Vue.js 高德…

VS安装Qt扩展工具

1-Visual Studio中安装QT插件 **插件下载地址:**http://download.qt.io/development_releases/vsaddin/ 关闭VS,双击下载的QT插件,默认安装即可; (1)配置Qt的MSVC编译器安装路径 打开Visual Studio,在菜单栏…