什么是LangChain

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

LangChain 是一个旨在简化使用大型语言模型(LLM)创建应用程序的框架。它提供了许多功能,使与LLM的合作变得更加容易,例如:

  • 用于加载和使用 LLM 的简单 API
  • 许多经过预训练的LLM可以开箱即用
  • 用于微调LLM的各种工具
  • 支持各种任务,例如聊天机器人、问答和文本生成

LangChain 是开源的,可在GitHub上获取( GitHub - langchain-ai/langchain: ⚡ Building applications with LLMs through composability ⚡ )。它是使用LLM构建应用程序的流行框架,被许多公司和组织使用。

以下是使用LangChain的一些好处:

  • 它使与LLM的合作变得更加容易。LangChain提供了一个简单的API来加载和使用LLM,这使得LLM的上手变得更加容易。
  • 它提供了许多经过预培训的LLM。LangChain 提供了许多预训练的 LLM,可以开箱即用。这节省了培训过程中的时间和精力。
  • 它提供了各种用于微调LLM的工具。LangChain提供了多种LLM微调工具,可以让您针对特定任务微调LLM。
  • 它支持多种任务。LangChain支持多种任务,例如聊天机器人、问答和文本生成。这使其成为使用LLM构建应用程序的多功能框架。

如果您有兴趣与LLM合作,我建议您查看 LangChain。它是一个功能强大的框架,可以让您更轻松地开始使用LLM并使用它们构建应用程序。让我们看一下一些额外的细节。

用于加载和使用 LLM 的简单 API

  LangChain提供了一个简单的API来加载和使用LLM。即使您不熟悉LLM,此 API 也能让您轻松    入门。例如,您可以使用一行代码加载 LLM:

model = langchain.load( “bert-base-uncased” )

加载 LLM 后,您可以使用它来生成文本、翻译语言、编写不同类型的创意内容,并以翔实的方式回答您的问题。

使用一些经过预先培训的LLM

  LangChain 提供了许多预训练的 LLM,可以开箱即用。这节省了培训过程中的时间和精力。例    如,LangChain 为各种任务提供预训练的 LLM,例如:

  • 聊天机器人
  • 问答
  • 文本生成

LangChain提供了多种用于LLM微调的工具。这使您可以针对特定任务微调LLM。例如,您可以针对特定的聊天机器人应用程序或特定的问答数据集微调 LLM。

有道德的黑客和程序员的例子

  让我们看一个例子。下面的代码也可以在我的GitHub 存储库之一中找到。  您还可以在Google Colab中使用此代码。

首先安装所需的库pip install -q transformers einops accelerate langchain bitsandbytes xformers

还运行nvidia-smi命令。(NVIDIA System Management Interface)命令nvidia-smi是NVIDIA提供的用于管理和监控NVIDIA GPU设备的工具。此工具提供有关系统中安装的 GPU 的详细信息,例如:

  1. GPU 名称和 ID。
  2. GPU 利用率。
  3. 内存使用情况。
  4. 温度。
  5. 驱动版本。
  6. 电力使用情况。
  7. 运行 GPU 进程。
  8. 还有许多其他细节。

例如,当您简单地nvidia-smi在终端中运行时,您将获得当前 GPU 状态的快照,包括 GPU ID、利用率、内存使用情况、温度、功耗等。

您还可以使用nvidia-smi各种标志和选项来查询特定信息或更新 GPU 设置。例如,nvidia-smi -q提供更详细的 GPU 状态报告。

对于那些使用 NVIDIA GPU 的人来说,这是一个非常有用的工具,特别是对于深度学习、科学计算或任何其他 GPU 密集型操作等任务来说,可以监控和管理 GPU 的运行状况和性能。

然后我们定义模型并使用 HuggingFacePipeline

from langchain import HuggingFacePipeline
from transformers import AutoTokenizer, pipeline
import torchmodel = "tiiuae/falcon-7b-instruct" # You can also use the larger model falcon-40b-instructtokenizer = AutoTokenizer.from_pretrained(model)pipeline = pipeline("text-generation", #taskmodel=model,tokenizer=tokenizer,torch_dtype=torch.bfloat16,trust_remote_code=True,device_map="auto",max_length=10000,do_sample=True,top_k=10,num_return_sequences=1,eos_token_id=tokenizer.eos_token_id
)

上面的代码片段使用 Hugging Face Transformers 库设置文本生成管道。让我们逐步浏览一下代码以了解它的作用:

  1. 导入必要的库::
    langchain嗯,就是我们在本文中讨论的库;-)
    HuggingFacePipeline`:HuggingFacePipeline 允许您从 Transformer 库加载 HuggingFace 模型,而无需访问 HuggingFace 推理 API。要使用它,您需要transformers安装 Python 包。

2. 从Transformers库导入所需模块:

  • AutoTokenizer:此类用于自动加载指定预训练模型的分词器。
  • pipeline:该函数为各种 NLP 任务创建管道,例如文本生成、情感分析等。
  • torch:它导入 PyTorch 库。

3. 设置模型和分词器:将
模型标识符“ tiiuae/falcon-7b-instruct ”(或较大模型的“ falcon-40b-instruct ”)分配给变量model

AutoTokenizer.from_pretrained ()方法用于加载与指定模型关联的分词器。该分词器将用于预处理输入文本并将其转换为适合模型的输入格式。

4. 配置文本生成管道:使用参数“text- Generation”调用
pipeline()函数,表示该管道将用于文本生成。
参数modeltokenizer、 和torch_dtype被传递到管道。
trust_remote_code设置为True,因为管道依赖于远程代码执行。
device_map设置为“auto”,表示管道将自动确定合适的硬件设备(CPU/GPU)进行推理。
max_length设置为 10000,这意味着生成的文本不应超过 10,000 个标记。
do_sample设置为True,这允许模型在文本生成期间使用采样。
top_k设置为 10,这意味着模型在采样期间将考虑前 10 个最有可能的标记。
num_return_sequences设置为1,表示只会生成一个文本序列。
eos_token_id 设置为tokenizer.eos_token_id这可能是用于停止文本生成的序列结束标记 ID。

该代码使用指定的模型和分词器设置文本生成管道,允许您使用给定的模型生成文本。如果您向此管道提供输入文本,它将根据配置参数和所使用的语言模型的行为返回生成的文本。

注意:生成文本的具体行为和功能将取决于底层模型(例如,“tiiuae/falcon-7b-instruct”或“falcon-40b-instruct”或任何其他模型)以及训练它的数据。

现在让我们定义要使用的温度:

llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})

在 中model_kwargs = {'temperature':0},代码设置要在文本生成期间使用的特定于模型的关键字参数。在这种情况下,它将temperature参数设置为0。该temperature参数控制文本生成的随机性。较高的值(例如,1.0)使生成的文本更具创意和多样性,而较低的值(即本示例中的 0)使文本更具确定性和针对性。

现在,让我们创建一些代码来使用 LangChain 创建提示模板。

from langchain import PromptTemplate,  LLMChaintemplate = """
You are an ethical hacker and programmer. Help the following question with brilliant answers.
Question: {question}
Answer:"""
prompt = PromptTemplate(template=template, input_variables=["question"])llm_chain = LLMChain(prompt=prompt, llm=llm)question = "Create a python script to send a DNS packet using scapy with a secret payload "print(llm_chain.run(question))

让我们逐步分解提供的代码:

  1. 导入必要的库。PromptTemplate帮助创建文本提示模板的类。
  2. 定义templatetemplate是一个多行字符串,其中包含{question}稍后插入的问题的占位符。它似乎是用于生成提示的预定义格式。
  3. 创建PromptTemplate对象:使用和 的列表PromptTemplate调用该类,其中包含将在模板中用作占位符的变量名称。在本例中,只有一个变量 ,稍后将用实际问题替换。templateinput_variables"question"
  4. 创建LLMChain对象:使用之前创建的对象和对象LLMChain来调用该类,该对象似乎是之前使用 Hugging Face Transformers 库定义的语言模型管道 ( )。promptllmllm
  5. 定义 a question:用一个字符串值定义一个名为 的变量question,该字符串值代表需要给出精彩答案的问题。问题涉及创建一个 Python 脚本,以使用带有秘密负载的 Scapy 发送 DNS 数据包。
  6. 生成响应:使用 as 输入llm_chain.run(question)调用该方法question。此方法可能使用链式语言模型 ( llm) 以及提供的提示来生成问题的响应。该llm_chain对象似乎处理根据输入问题和预定义模板生成答案的过程。
  7. 打印生成的响应:使用 将生成的响应打印到控制台print(llm_chain.run(question))

同样,代码示例也可以在我的GitHub 存储库之一中找到。您还可以在Google Colab中使用此代码。

适用于出色模板的文档加载器

在LangChain中,文档加载器提供了一种便捷的方式来从不同来源检索不同格式的数据,例如.txt、.csv、JSON、HTML和PDF。在这种情况下,文档是指一段文本及其关联的元数据。这些加载器在处理不同类型的数据源时提供灵活性和易用性。

例如,您可以使用文档加载器加载简单的 .txt 文件、提取任何网页的文本内容或获取 YouTube 视频的文字记录。

文档加载器提供两种基本方法:

  1. load:此方法用于从指定源获取数据并将其呈现为文档。它有效地处理将数据加载到内存的过程。
  2. lazy load:除了常规加载方法之外,一些文档加载器还提供“延迟加载”功能。这意味着数据仅在需要时才加载到内存中,从而为大型数据集提供更高效的内存管理。

通过利用LangChain中的文档加载器,用户可以轻松访问和处理不同的数据源,而无需担心底层格式。这一功能使 LangChain 成为以多功能且用户友好的方式处理基于文本的数据的强大工具。无论您是处理简单的文本文件、网页还是多媒体记录,文档加载器都可以简化数据检索过程并提高处理不同任务的整体效率。

您甚至可以集成第三方文档加载器。

Document loaders | 🦜️🔗 Langchain

正如您所看到的,LangChain 是一个多功能框架,旨在构建由语言模型驱动的应用程序。其主要功能是数据感知,支持与外部数据源无缝集成,以及基于代理的方法,允许语言模型与其环境动态交互。

该框架提供了强大的价值主张,包括一系列可简化语言模型使用的组件。这些组件是模块化的,使其易于独立使用或与 LangChain 的其余部分结合使用。此外,LangChain还为特定任务提供即用型、预组装的链,从而简化了应用程序开发流程。

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

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

相关文章

【Mybatis】我抄袭了Mybatis,手写一套MyMybatis框架:学会使用mybatis框架

上一篇文章中,我们学习了通过JDBC与MySQL进行交互。如果我们平常在项目中使用mybatis框架作为我们的orm框架。这一次我们就来学习如何使用框架。我们项目中使用到maven。我们直接通过pom文件的方式给他引入进来。 MyBatis是一个简单而强大的持久层框架,…

SParC数据集介绍

导语 SParC是Text-to-SQL领域的一个多轮查询数据集。本篇博客将对该数据集论文和数据格式进行简要介绍。 SParC数据集概述 SParC是一个跨领域的多轮Text-to-SQL数据集。它包含有4298个问题轮次,大约有12k的自然语言问句到SQL标注的Question-SQL对。这些问题来自于…

JavaWeb的Servlet的入门和使用方法

1 什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输…

提升FTP上传速度的方法(提升FTP下载速度的技巧)

在企业日常经营中,快速上传和下载文件至关重要。然而,在使用FTP(文件传输协议)进行文件传输时,速度可能成为瓶颈。为了提升工作效率,以下是一些建议,可以帮助企业提高FTP上传下载速度。 1、确保…

BERT的学习

BERT 1.前言 self-supervised learning是一种无监督学习的特殊形式,算法从数据本身生成标签或者目标,然后利用这些生成的目标来进行学习。(也就是说数据集的标签是模型自动生成的,不是由人为提供的。)例如&#xff0…

万能刷题小程序源码系统:功能强大+试题管理+题库分类+用户列表 附带完整的搭建教程

随着互联网技术的不断进步,线上学习已成为越来越多人的选择。刷题作为提高学习效果的重要方式,一直受到广大学生的喜爱。然而,市面上的刷题软件虽然繁多,但功能各异,质量参差不齐,使得很多用户在选择时感到…

STM32F4系列单片机库函数模板工程创建

目录 一、工程配置 1、新建工程 2、芯片选择 3、工程子文件夹创建 (1)FWLIB文件夹添加文件 (2)CORE文件夹添加文件 (3)USER文件夹添加文件 4、工程设置 (1)工程中添加文件夹…

【前端技术】Vite vs Webpack

✨专栏介绍 在当今数字化时代,Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序,就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术,以及各种框架、库和工具…

Banana Pi BPI-M4 Berry 全志H618开发板快速使用手册

介绍 BPI-M4 Berry 开发板是一款功能强大的单板计算机 (SBC),利用 Allwinner H618 片上系统 (SoC) 的功能为开发人员提供令人印象深刻的性能和丰富的功能。与 Raspberry Pi 4b 类似,BPI-M4 Berry 拥有可比的 CPU 性能、LPDDR4 内存支持、集成 WiFi 和蓝…

人机验证码生成与验证:提升系统安全性

一、前言 为了防止机器人或脚本程序自动化攻击和滥用系统资源,很多网站和应用程序需要使用验证码来判断用户是否为真人。 一般登录都要求用户手动输入以验证身份的安全措施。验证码是一种通过生成包含随机字符的图像或文本,通常包含了不同大小写字母、数…

内网穿透的应用-Ubuntu安装XRDP远程桌面结合内网穿透实现远程桌面Ubuntu

文章目录 一、 同个局域网内远程桌面Ubuntu二、使用Windows远程桌面连接三、公网环境系统远程桌面Ubuntu1. 注册cpolar账号并安装2. 创建隧道,映射3389端口3. Windows远程桌面Ubuntu 四、 配置固定公网地址远程Ubuntu1. 保留固定TCP地址2. 配置固定的TCP地址3. 使用…

工业4.0、 工业互联网、智能制造与设备通信协议 Modbus OPC MQTT

工业4.0是指第四次工业革命的核心概念,它代表了制造业的一种转型趋势,即通过深度整合数字化、互联和智能化技术,实现生产方式的革新。以下是对工业4.0主要特点的概述: 数字化:将物理世界与虚拟世界紧密连接&#xff0c…

ros2+gazebo+urdf:ros2机器人使用gazebo的urdf文件中的<gazebo>部分官网资料

原文链接SDFormat extensions to URDF (the gazebo tag) — Documentation 注意了ros2的gazebo部分已经跟ros1的gazebo部分不一样了: Toggle navigation SpecificationAPIDocumentationDownload Back Edit Version: 1.6 Table of C…

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测 目录 多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多…

Qt/C++音视频开发61-多屏渲染/一个解码渲染到多个窗口/画面实时同步

一、前言 多屏渲染就是一个解码线程对应多个渲染界面,通过addrender这种方式添加多个绘制窗体,我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面,原理应该类似,一个地方负责打开解码播放,将画面…

谷歌 SGE 和生成式 AI 在搜索中:2024 年会发生什么

2024 年,Google 的搜索生成体验将如何影响营销?探索 AI 驱动的搜索趋势、SERP 中的 SGE、自然流量影响等。 最初,Labs 中的 Google 搜索生成体验 (SGE) 实验预计将于 2023 年 12 月“结束”。但随着谷歌实验室网站的最…

nodejs+vue+微信小程序+python+PHP的勤工俭学系统-计算机毕业设计推荐

微信小程序端 (1)首页。顶部展示公告,下方展示兼职信息详情,按时间倒序,求职者可以根据兼职内容信息和行业进行模糊筛选用人单位的招聘信息,点击某条信息可查看其信息内容和用人单位的信息(包括…

用C语言找最大值最小值极值问题---------(C每日一编程)

一&#xff0c;输入十个数&#xff0c;输出其中的最大值 采用打擂台的方法 void main() {int i, max, a[10];for (i 0; i < 10; i)scanf("%d", &a[i]);max a[0];for (i 1; i < 10; i)if (a[i] > max)max a[i];printf("%d\n", max); } 二…

蓝牙物联网在汽车领域的应用

I、蓝牙的技术特点 ​ 1998 年 5 月&#xff0c;瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM 和英特尔公司五家著名厂商&#xff0c;在联合拓展短离线通信技术的标准化活动时提出了蓝牙技术的概念。蓝牙工作在无需许可的 2.4GHz 工业频段 (SIM)之上(我国的频段范围为2400.0~248…

Text-to-SQL小白入门(十)RLHF在Text2SQL领域的探索实践

本文内容主要基于以下开源项目探索实践&#xff0c; Awesome-Text2SQL:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, Text2DSL、Text2API、Text2Vis and more.DB-GPT-Hub&#xff1a;GitHub - eosphoros-ai…