使用 LangChain 构建 LLM 应用详细教程(附python代码演练)

介绍

欢迎来到语言处理的未来!在一个语言是连接人与技术的桥梁的世界中,自然语言处理(NLP)的进步为我们带来了令人难以置信的机会。其中一个重要的进步是革命性的语言模型,即大型语言模型(LLM),它彻底改变了我们与基于文本的数据进行交互的方式。我们将探索LLM的奇迹,并学习如何使用LangChain构建基于LLM的应用,LangChain是一个创新平台,充分发挥了LLM的潜力。

语言模型在各种应用中具有重要意义,因为它们能够理解和生成类似人类的文本。这些模型已经彻底改变了自然语言处理任务,如机器翻译、情感分析、聊天机器人和内容生成。它们提供了宝贵的洞察力,改善了沟通,并增强了用户体验。

学习目标

  • 了解语言模型 (LLM) 的基础知识及其在构建智能应用程序中的重要性。

  • 了解如何将 LangChain 集成到应用程序开发工作流程中并利用其 API。

  • 深入了解 Langchain 可以做什么。

  • 使用 Langchain 与各种 LLMs 进行互动。

  • 使用 LLM 创建对话式聊天机器人。

  • 深入了解使用 langchain 微调 LLM 的含义。

目录

  • 介绍

  • 什么是LLMs?

  • LangChain介绍

  • LangChain的特点与能力

  • 将LLMs整合到你的项目中

  • 释放LLMs的魔力

  • 设置LangChain

  • 使用 LangChain 与 LLM 互动

  • Langchain可以做什么?

  • 构建对话式聊天机器人

  • 使用 LangChain 微调 LLM

  • 数据集准备

  • 配置参数

  • 训练流程

  • 评估

  • 现实世界的用例和成功故事

  • 客户支持

  • 电子商务

  • 卫生保健

  • 内容生成

  • 结论

  • 经常问的问题

什么是LLMs?

LLM,即大型语言模型,是指经过大量文本数据训练的最先进的语言模型。它利用深度学习技术来理解和生成类似人类的文本,使其成为各种应用程序的强大工具,例如文本完成、语言翻译、情感分析等。LLMs最著名的例子之一是 OpenAI 的 GPT-3,它因其语言生成能力而受到广泛关注和赞誉。

46efd31156ce965eafb70e77232b5f0d.png

LangChain介绍

欢迎来到 LangChain,这是一个开拓性的平台,打开了通往语言模型 (LLM) 迷人领域的大门。通过 LangChain,你可以将LLMs无缝集成到你的项目中,利用其非凡的能力。让我们踏上一段激动人心的旅程,探索LangChain的迷人功能和无限可能。

LangChain 是一个先进的平台,为开发人员提供无缝且直观的界面,以在其应用程序中利用 LLM 的强大功能。它提供了一系列 API 和工具,可简化 LLM 与你项目的集成,使你能够释放语言处理的全部潜力。

LangChain的特点与能力

LangChain 拥有一系列让你着迷的特性和功能。从完成句子到分析情感,从翻译语言到识别命名实体,LangChain 为你提供了创造语言奇迹的工具。当你探索 API 文档时,你将发现如何有效使用这些功能的秘密,就像巫师掌握咒语一样。

将LLMs整合到你的项目中

了解了 LangChain 的特性和功能后,是时候将其魔力融入到你自己的项目中了。使用 LangChain SDK,你可以将 LLM 的非凡能力与你现有的代码库无缝融合。只需几行代码,你就能够调用LLMs的语言处理能力,将你的应用程序转变为能够理解和生成类人文本的智能生物。

释放LLMs的魔力

有了LangChain,可能性就如你的想象一样无限。想象一下,聊天机器人可以吸引用户进行有趣的对话,为他们提供有用且诙谐的回复。想象一下电子商务平台可以如此准确地推荐产品,让客户无法抗拒购买。想象一下提供个性化医疗信息的医疗保健应用程序,使患者能够做出明智的决定。创造这些令人难以置信的体验的力量就在你的掌握之中。

5a29479c15a20be3bdc2d23bb06e81ed.png

设置LangChain

为了开始我们的 LangChain 之旅,我们需要确保正确的安装和设置。你还将获得有关导入有效使用LLMs所需的必要库和依赖项的说明。

导入必要的库

import langchain
import openai
import os
import IPython
from langchain.llms import OpenAI
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import LLMChain
from langchain.chains import RetrievalQA
from langchain import ConversationChain

load_dotenv()
# API configuration
openai.api_key = os.getenv("OPENAI_API_KEY")

使用 LangChain 与 LLM 互动

使用 LangChain 与LLMs进行交互涉及一系列步骤,这些步骤允许你利用预训练语言模型的强大功能来执行文本生成和理解任务。这里是每个部分的详细解释,以及代码实现。

初始化LLM

要在LangChain中初始化LLM,首先需要导入必要的库和依赖项。例如,如果你使用 Python 编程语言,则可以导入“langchain”库并指定要使用的语言模型。这是一个例子:

from langchain import LangModel

# Specify the language model you want to use
model_name = 'gpt3'

# Initialize the LLM
llm = LangModel(model_name)

输入提示

初始化 LLM 后,你可以输入提示(prompt)来生成文本或获取响应。提示是语言模型生成文本的起点。你可以根据你的要求提供单个提示或多个提示。这是一个例子:

# Input a single prompt
prompt = "Once upon a time"

# Generate text based on the prompt
generated_text = llm.generate_text(prompt)

检索生成的文本或响应

输入提示后,你可以从 LLM 检索生成的文本或响应。生成的文本或响应将基于提示提供的上下文和语言模型的功能。这是一个例子:

# Print the generated text
print(generated_text)

# Print the responses
for response in responses:
    print(response)

通过遵循这些步骤并实现相应的代码,你可以使用 LangChain 与预先训练的 LLM 无缝交互,利用它们的能力来完成各种文本生成和理解任务。

Langchain可以做什么?

LangChain 凭借其多样化的功能,为开发人员在其应用程序中探索和利用提供了广泛的可能性。让我们深入了解 LangChain 的关键组件——模型、提示、链、索引和内存,并了解每个组件可以完成什么。

模型

目前,许多新的LLMs正在涌现。LangChain为各种模型提供了简化的界面和集成。

LangChain 的核心是强大的语言模型(LLM),使应用程序能够理解和生成类似人类的文本。通过 LangChain,开发人员可以接触到大量的LLMs,每个LLMs都接受过大量数据的训练,能够出色地完成各种与语言相关的任务。

无论是理解用户查询、生成响应,还是执行复杂的语言任务,LangChain 的模型都是语言处理能力的支柱。

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

# The LLM takes a prompt as an input and outputs a completion
prompt = "How many days are there in a month"
completion = llm(prompt)

聊天模型

这将使用 ChatOpenAI 类在用户和 AI 聊天机器人之间建立对话。聊天机器人的初始化温度为 0,这使其响应更加集中和确定。对话以一条说明机器人目的的系统消息开始,然后是一条表达食物偏好的人类消息。聊天机器人将根据给定的输入生成响应。

chat = ChatOpenAI(temperature=0)

chat(
    [
        SystemMessage(content="You are a nice AI bot that helps a user figure out 
          what to eat in one short sentence"),
        HumanMessage(content="I like tomatoes, what should I eat?")
    ]
)

文本嵌入模型

文本嵌入模型接收文本输入,然后输出以数字方式表示输入文本的嵌入列表。可以使用嵌入从文本中提取信息。稍后,可以应用此信息来确定两个文本(例如电影摘要)的相似程度。

embeddings = OpenAIEmbeddings()

text = "Alice has a parrot. What animal is Alice's pet?"
text_embedding = embeddings.embed_query(text)

提示

尽管以自然语言向LLMs添加提示应该感觉很自然,但在获得所需结果之前,你必须对提示进行重大更改。这称为即时工程

一旦你有了一个好的提示,你可能想将它用作其他事情的模板。因此,LangChain 提供了 PromptTemplates,使你能够使用各种组件构建提示。

template = "What is a good name for a company that makes {product}?"

prompt = PromptTemplate(
    input_variables=["product"],
    template=template,
)

prompt.format(product="colorful socks")

链接

将LLM与其他组件结合起来创建应用程序的过程在LangChain中称为链接。示例包括:

  • 结合提示模板和 LLM

  • 通过使用第一个 LLM 的输出作为第二个 LLM 的输入,可以按顺序组合多个 LLS。

  • 例如,将LLMs与外部数据相结合来回答问题。

  • 将LLMs与长期记忆(例如聊天记录)相结合。

chain = LLMChain(llm = llm, 
                  prompt = prompt)

chain.run("colorful socks")

索引

缺乏上下文信息(例如访问特定文档或电子邮件)是LLMs的一大缺点。允许LLMs访问特定的外部数据将帮助你避免这种情况。

一旦外部数据准备好存储为文档,你就可以使用文本嵌入模型在名为 VectorStore 的矢量数据库中对其进行索引。

矢量存储现在将你的文档存储为嵌入。利用这些外部数据,你现在可以采取许多操作。

fc9d3eedb3bf9f17308095a830ee494a.png

让我们将它用于基于信息检索器的问答任务。

retriever = db.as_retriever()

qa = RetrievalQA.from_chain_type(
    llm=llm, 
    chain_type="stuff", 
    retriever=retriever, 
    return_source_documents=True)

query = "What am I never going to do?"
result = qa({"query": query})

print(result['result'])

记忆

对于聊天机器人这样的程序来说,能够回忆起之前的对话至关重要。然而,除非你输入聊天记录,否则LLMs默认缺乏任何长期记忆。

通过提供多种处理聊天记录的选项,LangChain 通过维护所有对话、最近的 K 条对话并总结所说内容来解决这个问题。

conversation = ConversationChain(llm=llm, verbose=True)
conversation.predict(input="Alice has a parrot.")
conversation.predict(input="Bob has two cats.")
conversation.predict(input="How many pets do Alice and Bob have?")

构建对话式聊天机器人

对话式聊天机器人已成为许多应用程序不可或缺的一部分,为用户提供无缝交互和个性化体验。开发成功的聊天机器人的关键在于其理解和生成类似人类响应的能力。借助LangChain先进的语言处理能力,你可以创建超越传统基于规则的系统的智能聊天机器人。

9967b46e2d6bd238e6acf9e4e6ea5699.jpeg

导入必要的库

from langchain.llms import OpenAI
from langchain import LLMChain
from langchain.prompts.prompt import PromptTemplate

# Chat specific components
from langchain.memory import ConversationBufferMemory

使用提示模板

这将创建一个聊天机器人模板,该模板通过获取用户的输入并将其合并到预定义的 joke 格式中来生成 joke 。它使用 PromptTemplate 和 ConversationBufferMemory 来存储和检索聊天历史记录,使聊天机器人能够生成上下文相关的 joke 。

template = """
You are a helpful chatbot.
Your goal is to help the user make jokes.
Take what the user is saying and make a joke out of it

{chat_history}
Human: {human_input}
Chatbot:"""

prompt = PromptTemplate(
    input_variables=["chat_history", "human_input"], 
    template=template
)
memory = ConversationBufferMemory(memory_key="chat_history")

聊天机器人

这将设置 LLMChain 类的实例,该实例利用 OpenAI 语言模型来生成响应。然后使用“llm_chain.predict()”方法根据提供的用户输入生成响应。

llm_chain = LLMChain(
    llm=OpenAI(temperature=0), 
    prompt=prompt, 
    verbose=True, 
    memory=memory
)
llm_chain.predict(human_input="Is an pear a fruit or vegetable?")

使用 LangChain 微调 LLM

微调是一个过程,其中现有的预训练LLMs在特定数据集上进一步训练,以使其适应特定任务或领域。通过将模型暴露于特定于任务的数据,它可以学习更好地理解目标领域的细微差别、上下文和复杂性。此过程使开发人员能够改进模型的性能、提高准确性并使其与实际应用程序更加相关。

介绍LangChain的微调能力

LangChain 通过为开发人员提供一个全面的框架来在自定义数据集上训练LLMs,从而将微调提升到新的高度。它提供了一个用户友好的界面和一套简化微调过程的工具。LangChain支持各种流行的LLM架构,例如GPT-3,使开发人员能够为其应用程序使用最先进的模型。借助 LangChain,定制和优化 LLM 的能力触手可及。

LangChain 的微调工作流程

数据集准备

要微调 LLM,请根据你的特定任务或领域定制数据集。首先收集或整理与你的目标应用程序一致的标记数据集。该数据集应包括输入-输出对或用于微调过程的合适格式。

配置参数

在LangChain界面中,开发人员指定所需的LLM架构,例如层数、模型大小以及其他相关参数。这些配置定义了要训练的模型的架构和容量,使开发人员能够在性能和计算资源之间取得适当的平衡。

训练流程

LangChain利用分布式计算资源来高效训练LLM。开发者发起训练流程,LangChain优化训练流程,保证资源高效利用和更快收敛。在训练期间,模型从提供的数据集中学习,调整其参数以捕获特定于目标任务或领域的细微差别和模式。

一旦准备好数据集,你就可以开始使用 LangChain 进行微调过程。首先,导入必要的库和依赖项。然后,初始化预训练的 LLM 并在你的自定义数据集上对其进行微调。

这是一个例子:

from langchain import LangModel

# Initialize the pre-trained LLM
pre_trained_model = LangModel('gpt3')

# Load and preprocess your dataset
dataset = load_dataset('your_dataset.txt')
preprocessed_dataset = preprocess(dataset)

# Fine-tune the LLM on your dataset
fine_tuned_model = pre_trained_model.fine_tune(preprocessed_dataset, 
  num_epochs=5, batch_size=16)

在本例中,我们加载数据集,将其预处理为所需的格式,然后使用 LangModel 的“fine_tune”方法在预处理的数据集上训练 LLM。你可以根据你的具体要求调整训练周期数和批量大小等参数。

评估

LLM微调后,评估其表现至关重要。此步骤可帮助你评估模型对你的特定任务的适应程度。你可以使用适当的指标和单独的测试数据集来评估微调模型。这是一个例子:

# Prepare the test dataset
test_dataset = load_dataset('your_test_dataset.txt')
preprocessed_test_dataset = preprocess(test_dataset)

# Evaluate the fine-tuned LLM
evaluation_results = fine_tuned_model.evaluate(preprocessed_test_dataset)

评估结果可让你深入了解经过微调的LLMs课程的有效性。你可以测量准确性、精确度、召回率或特定领域的指标等指标来评估模型的性能。

通过遵循这些步骤并实现提供的代码示例,你可以使用 LangChain 有效地微调预训练的 LLM。此过程允许你定制语言模型的行为,使其更适合并与你的特定应用程序要求相关。

使用LangChain的好处

  • 使用 LangChain 微调LLMs可以提高模型的准确性和特定任务或领域的上下文相关性,从而产生更高质量的输出。

  • LangChain 允许开发人员定制LLMs来处理独特的任务、行业特定的术语和特定领域的上下文,以满足特定的用户需求。

  • 经过微调的LLMs可以通过对特定领域语言的更深入理解来开发功能强大的应用程序,从而获得更准确和上下文感知的响应。

  • 使用 LangChain 进行微调减少了对大量训练数据和计算资源的需求,节省了时间和精力,同时实现了显着的性能改进。

现实世界的用例和成功故事

我们将深入研究LLMs应用程序的真实例子和成功故事,以展示LLMs和LangChain产生重大影响的广泛行业。我们将探讨这些应用程序如何改变客户支持、电子商务、医疗保健和内容生成,从而改善用户体验并增强业务成果。

客户支持

由LLMs支持的聊天机器人通过为用户提供即时和个性化的帮助,彻底改变了客户支持。公司正在利用 LangChain 构建聊天机器人,以理解客户的查询、提供相关信息,甚至处理复杂的交易。这些聊天机器人可以处理大量查询,确保全天候支持,同时减少等待时间并提高客户满意度。

电子商务

利用LLMs来增强电子商务行业的购物体验。LangChain使开发人员能够构建能够理解产品描述、用户偏好和购买模式的应用程序。通过利用LLMs功能,电子商务平台可以提供个性化的产品推荐、回答客户查询,甚至生成创意产品描述,从而提高销售额和客户参与度。

卫生保健

由LLMs支持的应用程序正在通过改善患者护理、诊断和治疗流程来改变医疗保健行业。LangChain支持开发智能虚拟助手,可以理解医疗查询、提供准确信息,甚至根据症状协助对患者进行分诊。这些应用程序有助于更快地访问医疗保健信息,减轻医疗保健提供者的负担,并使患者能够就其健康做出明智的决定。

内容生成

事实证明,LLMs是内容生成和创作方面的宝贵工具。LangChain 使开发人员能够构建能够生成创意和上下文相关内容的应用程序,例如博客文章、产品描述和社交媒体帖子。这些应用程序帮助内容创作者产生想法、提高写作效率并保持语气和风格的一致性。

这些现实世界的用例展示了LLMs支持的应用程序在各个行业的多功能性和影响力。通过利用LangChain的功能,开发人员可以创建创新的解决方案来简化流程、改善用户体验并推动业务增长。

实施LLMs申请的公司的成功案例展示了所取得的切实利益和成果。例如,大型电子商务平台实施的客户支持聊天机器人显着减少了支持票解决时间并提高了客户满意度得分。同样,利用LLMs功能的医疗保健应用程序提高了分类准确性并减少了急诊室的等待时间,最终挽救了生命。

结论

在构建 LLM 支持的应用程序方面,LangChain 开启了一个充满可能性的世界。如果你的兴趣在于文本完成、语言翻译、情感分析、文本摘要或命名实体识别。LangChain 提供直观的平台和强大的 API,将你的想法变为现实。通过利用LLMs的功能,你可以创建能够理解和生成类人文本的智能应用程序,从而彻底改变我们与语言交互的方式。

要点

  • LangChain 支持开发利用语言模型 (LLM) 卓越功能来理解和生成类人文本的应用程序。

  • 借助LangChain直观的平台,开发人员可以通过安装LangChain SDK并使用API凭证进行身份验证,轻松将LLM集成到他们的项目中。

  • 通过 LangChain 整合LLMs,开发人员可以创建与用户提供更自然和上下文感知交互的应用程序,从而增强用户体验并提高参与度。

常见问题

Q1. 什么是LangChain?

A1. LangChain 是一个提供工具和 API 的平台,用于构建由语言模型 (LLM) 驱动的应用程序。它简化了LLMs与你项目的集成,使你能够利用高级语言处理功能。

Q2. 什么是语言模型(LLM)?

A2. 语言模型 (LLM) 是基于大量文本数据训练的强大机器学习模型。它们可以理解并生成类似人类的文本,这使得它们对于文本完成、翻译、情感分析等应用很有价值。

Q3. 我需要机器学习方面的专业知识才能使用 LangChain 吗?

A3. 不,LangChain 的设计目的是让所有级别的开发者都可以使用,包括初学者。虽然对自然语言处理概念的一些了解可能会有所帮助,但 LangChain 的用户友好平台和文档使没有丰富机器学习专业知识的开发人员更容易构建由 LLM 驱动的应用程序。

Q4. LangChain可以使用哪些编程语言?

A4. LangChain提供了可以使用各种编程语言访问的API,包括Python、JavaScript、Java等。你可以选择你最熟悉的语言来将 LangChain 集成到你的应用程序中。

Q5. 可以用 Langchain 来增强语言模型的性能吗?

A5. 是的,通过 LangChain 集成LLMs,你可以增强语言处理模型的性能。LLMs拥有理解和生成文本的高级功能,可以补充和提高现有模型的准确性和有效性。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

8ad43643077f74bdefa87399aa8a86ae.jpeg

猜你喜欢

转载自blog.csdn.net/woshicver/article/details/132242049