您当前的位置:首页 > 电脑百科 > 人工智能

一文解析如何基于 LangChain 构建 LLM 应用程序

时间:2024-03-07 13:47:58  来源:微信公众号  作者:架构驿站

Hello folks,我是 Luga,今天我们继续来聊一下人工智能(AI)生态领域相关的技术 - LangChain ,本文将继续聚焦在针对 LangChain 的技术进行剖析,使得大家能够了解 LangChain 实现机制以便更好地对利用其进行应用及市场开发。

在日新月异的人工智能领域,语言模型已经成为舞台主角,重新定义了人机交互的方式。ChatGPT 的广泛认可以及 google科技巨头纷纷推出类似产品,使语言模型,尤其是 LLM,成为科技界瞩目焦点。

从某种意义上来讲,LLM 代表了人工智能理解、解释和生成人类语言能力的重大飞跃,经过海量文本数据的训练,能够掌握复杂的语言模式和语义细微差别。凭借前所未有的语言处理能力,LLM 可以帮助用户以卓越的准确性和效率生成高质量内容。

而 LangChain 作为一个围绕 LLM 构建的框架,为自然语言处理方面开辟了一个充满可能性的新世界,可以创建各种应用程序,并能够有效解决文本生成、情感分析以及语言翻译等难题,极大地释放了 LLM 的潜力。

一、什么是 LangChain ?

作为一款开源的 Python/ target=_blank class=infotextkey>Python 框架,LangChain 旨在促进基于 LLM 的应用程序开发。基于所提供了一套工具、组件和接口等套件,LangChain 简化了以 LLM 为核心的应用程序的构建过程。通过 LangChain,开发人员能够轻松管理与语言模型的交互,无缝连接不同的组件,并集成 API 和数据库等资源。

此外,借助 LangChain 技术,我们能够构建出一系列应用程序,这些应用程序能够生成创新性且与上下文相关的内容。无论是撰写博客文章、产品描述,与聊天机器人对话,还是生成问答(GQA)和摘要等,利用 LLM 的应用程序开发变得更加简便高效。

图:LangChain Github Star 历史(由 star-history.com 生成)

从另一角度而言,这种基于 LangChain 的技术应用使得开发人员可以利用 LangChain 提供的强大语言模型能力,快速开发出符合用户需求的应用,从而提升用户体验并节约开发时间和成本。

二、LLM 的局限性与 LangChain 的解决方案

在实际的场景中,LLM 擅长在常规上下文下对提示做出响应,但在未接受过训练的特定领域却会遇到挑战。Prompts 则是人们用来引导 LLM 生成回复的查询。为了让 LLM 在特定领域发挥更佳效果,机器学习工程师需要将其与组织内部数据来源整合,并应用提示工程技术。

LangChain 的出现简化了开发数据响应式应用程序的中间步骤,并提高了 Prompt Engineering 的效率。同时,提供了一套易用、直观的工具和界面,使开发人员能够轻松地将 LLM 与数据源和提示工程技术进行整合。

作为一项重要技术,那么,LangChain 具备哪些核心的优势呢?

1.重新发挥语言模型的作用

借助 LangChain,组织可以将 LLM 的能力重新用于特定领域的应用程序,而无需重新培训或微调。开发团队可以构建引用专有信息的复杂应用程序,从而增强模型的响应能力。举例来说,我们可以利用 LangChain 构建应用程序,从存储的内部文档中检索数据,并将其整合为对话响应。我们还可以创建 RAG (检索增强生成) 工作流程,在提示期间向语言模型引入新信息。通过实施 RAG 和其他上下文感知工作流程,可以减少模型产生的幻觉,提高响应的准确性。

2.简化人工智能开发

LangChain 通过简化数据源集成的复杂性并快速提炼,简化了 AI 开发过程。开发人员可以自定义序列,快速构建复杂的应用程序。软件团队可以修改 LangChain 提供的模板和库,以减少开发时间,而不必从头编写业务逻辑。

3.开发者支持

LangChain 为 AI 开发者提供了连接语言模型和外部数据源的工具。毕竟,它是开源的,并得到活跃社区的支持。组织可以免费使用 LangChain,并获得其他熟悉该框架的开发人员的支持。

三、LangChain 的核心组件解析

LangChain 的独特之处之一便是其灵活性和模块化。通过将自然语言处理管道分解为单独的组件,开发人员可以轻松混合和匹配这些构建块,以创建满足其特定需求的自定义工作流程,从而使得 LangChain 成为一个高度适应性的框架,可用于为广泛的用例和行业构建对话式人工智能应用程序。

LangChain 是提供了一组模块,能够构建完整的 LLM(Language Model)应用程序管道,并与各种数据加载器、向量存储和 LLM 提供程序等进行广泛的集成。LangChain的主要核心组件可参考如下图所示:

LangChain 关键组件

1.Model I/O

LangChain 的核心是强大的语言模型(LLM),使应用程序能够理解和生成类似人类的文本。通过 LangChain,开发人员能够出色地完成各种与语言相关的任务。无论是理解用户查询、生成响应,还是执行复杂的语言任务,LangChain 的模型都是语言处理能力的支柱。

Models 模块负责管理与语言模型的交互。LangChain 支持一系列 LLM,包括 GPT-3、OpenAI 等。开发者可以使用 Models 模块来管理 LLM 的配置,例如设置温度、top-p 等参数。模型模块对于提高 LLM 的能力并使开发人员能够构建可生成创意和上下文相关内容的应用程序至关重要。

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 = "When can I achieve financial freedom?"
completion = llm(prompt)

2.Chains

Chains 模块在应用程序中负责链接不同的组件,开发人员可以利用 Chains 模块创建链式结构,将提示、模型和其他应用程序组件有机地连接在一起。这种链式结构对于构建需要多个组件协同工作的复杂应用程序至关重要。

通过 Chains 模块,开发人员可以灵活组合和配置不同的组件,形成一个完整的应用程序管道,实现高度定制化的功能和逻辑。

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

chain.run("ai")

3.Agents

Agents 模块在应用程序中承担了管理应用程序与外界之间交互的重要角色。通过使用 Agents 模块,开发人员可以构建各种类型的应用程序,如个人助理、智能聊天机器人等。这些应用程序可以基于语音或文本输入进行交互,并通过分析和理解输入数据来提供相应的响应和服务。

Agents 模块为开发人员提供了一个灵活、可扩展的工具,使他们能够轻松构建具有交互功能的应用程序,为用户提供个性化、智能化的体验。

class Agent:

    def __init__(self, config):
        self.config = config
        self.chain = Chain(config)
        self.proxy = Proxy(config)
        self.memory = Memory(config)
        self.callback = Callback(config)

    def parse_input(self, input):
        # 解析用户的输入和上下文信息
        ...

4.Memory

LangChain 的 Memory 模块承担了数据存储的管理任务。通过使用 Memory 模块,开发人员可以轻松地存储和检索各种类型的数据,如文本、图像、音频等。

Memory 模块提供了高度可扩展的存储机制,可以适应不同规模和类型的数据存储需求。开发人员可以根据应用程序的需要,灵活地组织和管理存储的数据,以满足应用程序的要求。

conversation = ConversationChain(llm=llm, verbose=True)
conversation.predict(input="I am the last one.")
conversation.predict(input="he is first.")
conversation.predict(input="She is third from the bottom")

5.Retrieval

以 Indexes 组件为例,Indexs 模块在应用程序中承担了数据索引的管理任务。开发人员可以利用 Indexs 模块创建用于搜索和检索数据的索引结构。Indexs 模块对于构建需要进行数据搜索和检索的应用程序至关重要。

使用 Indexs 模块,开发人员可以根据应用程序的需求创建不同类型的索引,如文本索引、关键词索引等。这些索引结构可以针对特定的数据属性或特征进行优化,以实现更快速和精确的数据搜索和检索。开发人员可以根据数据的特点和应用程序的需求,灵活地配置和管理索引结构。

retriever = db.as_retriever()

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

query = "Forgive me for my unruly, indulgent love of freedom in this life?"
result = qa({"query": query})

print(result['result'])

6.Calbacks

LangChain 提供了一个回调系统,使的我们能够连接到 LLM 请求的不同阶段。这个回调系统对于日志记录、监控、流传输和其他任务非常有用。

通过使用这些回调函数,我们可以灵活地控制和管理 LLM 请求的各个阶段。同时,还可以根据应用程序的需求,自定义回调函数的行为,以实现特定的功能和逻辑。

class BaseCallbackHandler:
    """Base callback handler that can be used to handle callbacks from langchain."""

    def on_llm_start(
        self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any
    ) -> Any:
        """Run when LLM starts running."""

    def on_chat_model_start(
        self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs: Any
    ) -> Any:
        """Run when Chat Model starts running."""

    def on_llm_new_token(self, token: str, **kwargs: Any) -> Any:
        """Run on new LLM token. Only available when streaming is enabled."""

通过对上述关键组件的解析,我们可以大致了解 LangChain 的工作原理和流程,即将 Agents、Memory、Indexs 和回调系统等关键组件结合起来,实现应用程序与外界的交互、数据的存储和索引,以及自定义操作的执行。

这种组合使得 LangChain 能够构建出强大、灵活的应用程序,为用户提供个性化、智能化的体验。具体可参考如下工作流:

LLM LangChain 工作流程

四、使用 LangChain 进行 LLM 应用程序构建

在开始之前,我们需要确保正确安装 LangChain 的软件包,并按照指南进行设置和配置。这包括安装所需的编程语言环境(如Python)、安装 LangChain 的相关库和依赖项,并进行必要的配置和设置,以确保 LangChain 可以正常运行。

一旦安装和设置完成,我们可以开始导入和使用 LLM。为了有效使用 LLM,我们需要导入适当的库和依赖项,以便在应用程序中能够调用和使用 LLM 的功能。

1.设置 LangChain

这里,主要为 LangChain 环境设置相关的依赖库,具体可参考如下:

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")

2.初始化 LLM

要在 LangChain 中初始化 LLM,首先需要导入必要的库和依赖项。如果大家使用 Python 编程语言,我们可以导入名为 "langchain" 的库,并指定要使用的语言模型。

以下是一个示例代码片段,展示了如何导入 "langchain" 库和初始化 LLM,具体可参考:

# 导入必要的库和依赖项
import langchain

# 指定要使用的语言模型
language_model = "gpt3.5-turbo"  # 这里使用 GPT-3.5 Turbo 模型作为示例

# 初始化 LLM
llm = langchain.LLM(language_model)

# 接下来,可以使用 llm 对象来调用和使用 LLM 的各种功能和方法
# 例如,可以使用 llm.generate() 方法生成文本,或使用 llm.complete() 方法进行自动补全等

# 示例:使用 LLM 生成文本
prompt = "Hello, LangChain!"
response = llm.generate(prompt)
print(response)

3.输入 Prompts

初始化 LLM 后,我们可以通过输入提示来生成文本或获取响应。Prompts 是语言模型生成文本的起点。根据需求,我们可以提供单个或多个 Prompts。以下是一个简单的示例:

# 初始化 LLM
llm = langchain.LLM(language_model)

# 提供单个提示
prompt = "Once upon a time"
response = llm.generate(prompt)
print(response)

# 提供多个提示
prompts = [
    "The sun is shining",
    "In a galaxy far, far away",
    "Once upon a time"
]
responses = llm.generate(prompts)
for response in responses:
    print(response)

4.检索生成的文本或响应

输入 Prompts 后,我们可以从 LLM 中检索生成的文本或响应。生成的文本或响应将基于所提供的 Prompts,以及语言模型所具备的上下文理解和语言生成的功能。

当我们提供一个或多个 Prompts 时,LLM 会使用这些 Prompts 作为起点,并借助语言模型的能力来生成相关的文本。语言模型会考虑 Prompts 中的上下文信息,以及其在训练数据中学习到的语言规律和概率分布。这样,生成的文本将会在一定程度上与 Prompts 相关,并且具备一定的语法合理性和连贯性。

# Print the generated text
print(generated_text)

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

总而言之,通过遵循上述步骤并实现相应的代码,我们可以无缝地使用 LangChain 和预训练的 LLM,充分利用它们在文本生成和理解任务上的能力。这为我们解决各种自然语言处理问题提供了一种高效且灵活的方法。无论是开发智能对话系统、构建文本生成应用,还是进行文本理解和分析,LangChain 和预训练的 LLM 都将成为有力的工具和技术基础。

综上所述,在构建支持 LLM 的应用程序方面,LangChain 为我们开辟了一个充满无限可能性的世界。如果大家对文本完成、语言翻译、情感分析、文本摘要或命名实体识别等领域感兴趣,LangChain 提供了直观易用的平台和强大的 API,让我们的想法转化为现实。

借助 LangChain 和 LLM 的强大能力,我们可以创建出具备理解和生成类人文本能力的智能应用程序,从而彻底改变我们与语言交互的方式。

Reference :

  • [1] https://python.langchain.com/
  • [2] https://machinehack.com/story/langchain-to-build-llm-powered-Applications


Tags:LLM   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
一文解析如何基于 LangChain 构建 LLM 应用程序
Hello folks,我是 Luga,今天我们继续来聊一下人工智能(AI)生态领域相关的技术 - LangChain ,本文将继续聚焦在针对 LangChain 的技术进行剖析,使得大家能够了解 LangChain 实现...【详细内容】
2024-03-07  Search: LLM  点击:(31)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: LLM  点击:(19)  评论:(0)  加入收藏
一文读懂大型语言模型LLM
在当今的技术世界中,人工智能正以前所未有的速度发展和演变。这一领域的快速发展得益于先进的机器学习算法、海量数据的可用性以及计算能力的显著提升。特别是,在自然语言处理...【详细内容】
2024-01-02  Search: LLM  点击:(81)  评论:(0)  加入收藏
SQL应用于LLM的程序开发利器——开源LMQL
译者 | 朱先忠审校 | 重楼我相信你听说过SQL,甚至已经掌握了它。SQL(结构化查询语言)是一种广泛用于处理数据库数据的声明性语言。根据StackOverflow的年度调查,SQL仍然是世界上...【详细内容】
2023-12-27  Search: LLM  点击:(76)  评论:(0)  加入收藏
生成式人工智能潜力的释放:软件工程师的MLOps和LLM部署策略
译者 | 李睿审校 | 重楼生成式人工智能最近的爆发标志着机器学习模型的能力发生了翻天覆地的变化。像DALL-E 2、GPT-3和Codex这样的人工智能系统表明,人工智能系统在未来可以...【详细内容】
2023-12-18  Search: LLM  点击:(116)  评论:(0)  加入收藏
构建更好的基于LLM的应用程序的四大秘诀
作者 | Adrien Treuille译者 | 布加迪自从OpenAI发布首个ChatGPT模型以来,人们对生成式AI的兴趣激增。基于大语言模型(LLM)的应用程序现处于企业思考生产力和效率的最前沿,用于...【详细内容】
2023-12-13  Search: LLM  点击:(132)  评论:(0)  加入收藏
解决LLaMA、BERT等部署难题:首个4-bit浮点量化LLM来了
大语言模型 (LLM) 压缩一直备受关注,后训练量化(Post-training Quantization) 是其中一种常用算法,但是现有 PTQ 方法大多数都是 integer 量化,且当比特数低于 8 时,量化后模型的...【详细内容】
2023-11-17  Search: LLM  点击:(144)  评论:(0)  加入收藏
LLM量化包与传统投资策略的对比分析
随着科技的发展和金融市场的变化,投资者们在寻求更有效的投资策略时,开始关注量化投资。LLM量化包作为一种先进的量化投资工具,与传统投资策略相比,具有许多独特的优势。本文将...【详细内容】
2023-11-17  Search: LLM  点击:(132)  评论:(0)  加入收藏
LLMs应用框架:LangChain端到端语言模型
在当今数字化时代,语言处理技术的重要性日益凸显。大语言模型(LLMs)作为其中的重要分支,已经在多个领域取得了显著的进展。然而,如何将这些模型应用到实际场景中,实现端到端的自动...【详细内容】
2023-11-16  Search: LLM  点击:(167)  评论:(0)  加入收藏
什么是 LLM (大型语言模型)以及如何构建LLM?
来源:Mangesh Gothankar在本文中,我们将了解如何从零开始构建 LLM(大型语言模型)。你可能会问,为什么要做这样的事情?是这样的,LLM 在无数应用中都非常有用,从头开始构建一个 LLM,你...【详细内容】
2023-11-09  Search: LLM  点击:(90)  评论:(0)  加入收藏
▌简易百科推荐
多方热议人工智能产业新机遇
编者按  从前沿科技展会到高层对话平台,从上海、重庆到博鳌,从线上到线下……一场场高规格、大规模的盛会中,人工智能正在成为各界热议的高频词。赋能千...【详细内容】
2024-04-08    中国家电网  Tags:人工智能   点击:(2)  评论:(0)  加入收藏
​人形机器人时代来了吗
日前,由中国人形机器人(11.080, -0.05, -0.45%)百人会主办的人形机器人大赛在北京经济技术开发区开赛。工作人员向参观者展示一款人形机器人。参观者与一款陪护型人形机器人...【详细内容】
2024-04-08    中国青年报  Tags:​人形机器人   点击:(2)  评论:(0)  加入收藏
AI重塑社交:腾讯与字节跳动的新赛场
文|新火种 一号编辑|美美最近,腾讯和字节跳动这两大互联网巨头几乎同步推出了各自的AI社交产品,尽管腾讯和字节跳动在前段时间刚刚“破冰”,但这一举措不仅意味着这两大巨头之...【详细内容】
2024-04-07    蓝鲸财经  Tags:AI   点击:(6)  评论:(0)  加入收藏
第一批用 Kimi 做内容的网红已经杀疯了
作者:王东东 文章来自:斗战圣佛小组技术信仰派 VS 市场信仰派 朱啸虎和月之暗面老板杨植麟在前几天有一场不算 battle 的 battle。battle 的争论点是:大模型有没有戏。技术派...【详细内容】
2024-04-04    斗战圣佛小组  Tags:Kimi   点击:(4)  评论:(0)  加入收藏
昆仑万维发布面向人工智能时代的六条人才宣言
过去的一年多,是人工智能取得非凡进步的一年。在这充满突破性技术飞跃和备受争议的一年里,我们见证了人工智能的快速发展和广泛的影响,人工智能已经迅速地融入了我们的生活,深刻...【详细内容】
2024-04-03    砍柴网  Tags:昆仑万维   点击:(7)  评论:(0)  加入收藏
AI干掉声优?音频大模型追逐“图灵时刻”
七十年前,“人工智能之父”图灵提出,如果人无法判断屏幕的另一侧究竟是人还是机器,就证明机器具备了人一样的智能。这一经典的图灵测试如同北斗星一般,指引着AI行业的工作者们不...【详细内容】
2024-04-03    第一财经网  Tags:AI   点击:(5)  评论:(0)  加入收藏
生成式人工智能有哪些新趋势?
相较于去年,当下我们所能体验的人工智能技术的范围已经大幅提升。从搜索引擎、电商平台再到社媒平台,只要是以搜索结果为导向的内容,都会出现它的身影。但其实,人工智能的应用场...【详细内容】
2024-04-03  品谈教师帮    Tags:人工智能   点击:(6)  评论:(0)  加入收藏
AI世界的新难题:互联网的信息不够用了!
高质量数据的紧缺正成为AI发展的重要障碍。4月1日,据媒体报道,随着OpenAI、Google等企业不断深入发展AI技术,科技巨头们遇到了一个新问题:现有的互联网信息量可能不足以支撑他们...【详细内容】
2024-04-02  硬AI    Tags:AI   点击:(6)  评论:(0)  加入收藏
今天起,ChatGPT无需注册就能用了!
 来源:量子位    金磊 克雷西 发自 凹非寺  就在刚刚,OpenAI狠狠地open了一把:从今天起,ChatGPT打开即用,无需再注册帐号和登录了!  像这样,直接登录网站,然后就可以开启对...【详细内容】
2024-04-02    量子位   Tags:ChatGPT   点击:(7)  评论:(0)  加入收藏
AI时代,面对死亡有了第二种选择?
今年春节期间,罗佩玺瞒着妈妈用AI技术“复活”了外婆,她将妈妈现在的模样和外婆留下的老照片合成在一起。时隔60多年,妈妈和外婆终于又“见面”了,这是她送给妈妈的生日礼物。收...【详细内容】
2024-04-02    中国青年报  Tags:AI时代   点击:(7)  评论:(0)  加入收藏
站内最新
站内热门
站内头条