一文教会你用 LangChain 快速构建大模型应用

这篇文章,我们将向你教你如何使用 LangChain 快速构建一个简单的 LLM 应用,本系列文章将使用 Jupyter notebooks 和 VSCode 编辑器,推荐大家也用这两个,简单易用,非常适合学习如何使用大型语言模型系统,因为事情有时会出错(意外输出、API故障等),在交互环境中逐步阅读指南是更好理解它们的好方法。如果还没使用过的同学,可以参考我们先前的教程文章 《代码编辑与数据分析的完美结合:VSCode 携手 Jupyter Notebook

1、LangChain 介绍

LangChain 是一个开源框架,旨在简化和加速语言模型(如 GPT-4、通义千问 等)的应用开发。它提供了一系列工具和组件,帮助开发者构建基于语言模型的应用程序,特别是在自然语言处理(NLP)和对话系统方面。

LangChain 包含比较完善的生态, 下面的依赖图显示了不同包之间的关系, 一个有向箭头表示源包依赖于目标包:

  • langchain-core:是 LangChain 的核心包,提供了构建和管理语言模型应用所需的基本组件和功能,包括链(Chains)、代理(Agents)、工具(Tools)和内存(Memory)等,帮助开发者快速搭建复杂的自然语言处理工作流。该包旨在简化与语言模型的交互,使开发者能够更高效地创建智能应用;
  • langgraph:是一个用于可视化和分析语言模型工作流的工具包,它允许开发者以图形化方式构建和展示复杂的自然语言处理管道。通过直观的界面,用户可以轻松管理和优化各个组件之间的交互,提高开发效率;
  • langchain-community:是一个专为 LangChain 用户设计的扩展包,提供了一系列社区贡献的组件和工具,旨在增强 LangChain 的功能。该包包含示例、模板和实用工具,帮助开发者更高效地构建基于语言模型的应用;
  • Integrations 集成包:是指与其他工具和服务的连接,旨在扩展 LangChain 的功能和应用场景。这些集成包可以与多种外部 API、数据库、云服务和其他机器学习框架协同工作,例如:langchain-openai、langchain-postgres 等;

正如上面依赖图所示,langchain 包承上启下,作为使用 LangChain 框架的起点,安装 langchain 包会自动安装以上介绍的 langchain-core、langgraph、langchain-community 包,Integrations 集成中的包根据需要进行安装。

我们使用国内的清华源来安装 langchain 包,运行以下命令即可完成安装

pip install langchain -U -i https://pypi.tuna.tsinghua.edu.cn/simple/
2、语言模型使用

LangChain 支持许多不同的语言模型,你可以使用你想要使用的模型!LangChain 支持几乎包括绝大部分的大模型供应商,包括国外的:OpenAI、AWS、谷歌、微软、Hugging Face、IBM等,国内的:阿里云、百度、腾讯、字节跳动、华为、科大讯飞、智普清言等等。

本文我们使用阿里云的通义千问语言模型,可以去通义千问官网申请 apikey,申请地址:dashscope.console.aliyun.com/apiKey

创建一个 api-key,这个 api-key 要好好保存,如果不慎遗失了,可以在查看里面找到这个 key

让我们首先直接使用模型,我们从 langchain_community.llms 包中导入 Tongyi 模型,然后简单地调用模型,我们可以将消息列表传递给 invoke 方法,其中

  • HumanMessage:代表用户或人类参与者发送的消息。这通常是用户的输入或提问,系统需要根据这些消息进行响应;
  • SystemMessage:代表系统或机器生成的消息。这可以是系统的提示、背景信息、指示或任何其他非用户输入的内容;
import os
os.environ["DASHSCOPE_API_KEY"] = "api-key"

from langchain_community.llms import Tongyi
from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="Translate the following from English into Chinese"),
    HumanMessage(content="hi!"),
]
Tongyi().invoke(messages)

# --------输出--------
# '你好!'
3、提示词模板

前面我们直接将消息列表传递给语言模型,但是我们可以使用提示词模版 PromptTemplates 用来接收原始用户输入并返回准备传递给语言模型的数据(提示)。

让我们在这里创建一个 PromptTemplate。它将接收两个用户变量:

  • language: 要翻译成的语言
  • text: 要翻译的文本
from langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following into {language}:"

prompt_template = ChatPromptTemplate.from_messages(
    [("system", system_template), ("user", "{text}")]
)

result = prompt_template.invoke({"language": "Chinese", "text": "hi"})
result.to_messages()

# --------输出--------
# [SystemMessage(content='Translate the following into Chinese:', additional_kwargs={}, response_metadata={}),
# HumanMessage(content='hi', additional_kwargs={}, response_metadata={})]
4、使用 LCEL 连接组件

我们可以使用 LangChain 表达式 (LCEL) 来连接以上 LangChain 模块的简单示例,这种方法有几个好处,包括优化的流式处理和追踪支持。如下所示,我们使用管道 (|) 操作符将其与上面的模型和提示词模版结合起来:

chain = prompt_template | Tongyi() 
chain.invoke({"language": "Chinese", "text": "hi"})

# --------输出--------
# '你好'

这篇文章,我们教你如何使用 LangChain 快速构建一个简单的 LLM 应用,包括 LangChain 介绍、通义语言模型使用、提示词模板、使用 LCEL 连接组件的完整介绍,希望对你有帮助!


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流

### RAG模型概述 RAG(Retrieval-Augmented Generation)是一种融合了检索增强机制的生成型语言模型,由Facebook AI研究院(FAIR)提出。这种架构通过结合传统的基于检索的方法和现代的语言生成技术来提升自然语言处理任务的效果[^3]。 ### 工作原理详解 #### 数据获取阶段 在数据准备过程中,RAG利用外部知识库作为补充资源。当接收到输入查询时,系统首先会在预先构建的知识图谱或其他形式的大规模语料库中执行信息检索操作,找到最有可能帮助完成当前对话或任务的相关片段。 #### 动态上下文集成 不同于静态预训练模式下的纯生成方式,在线检索到的具体实例会被即时融入到解码器端口处,使得每次预测都能依据最新获得的真实世界证据来进行调整优化。这一特性赋予了RAG更强的情境适应能力,尤其是在面对开放领域问答、多轮次交互式聊天等复杂场景下表现尤为突出。 #### 双重评分机制 为了确保最终输出的质量,RAG采用了两步走策略:先是从候选集中挑选出若干高质量的回答选项;再经过一轮精细评估后决定最佳回复方案。具体来说就是分别计算每条建议得分——一方面考量它与原始请求之间的匹配度;另一方面也要顾及内部连贯性和逻辑一致性等因素。 ```python def rag_model_inference(query, knowledge_base): retrieved_docs = retrieve_relevant_documents(query, knowledge_base) generated_responses = [] for doc in retrieved_docs: response = generate_response_based_on_document(doc) generated_responses.append(response) best_response = select_best_response(generated_responses) return best_response ``` ### 应用案例分析 实际应用方面,《大模型RAG实战:RAG原理、应用与系统构建》一书中提供了丰富的实践指导和技术细节解析,涵盖了从理论基础到工程实现再到部署上线全流程的内容介绍。对于希望深入了解并掌握这项前沿技术的研究人员而言,这本书籍无疑是一个宝贵的学习资料来源[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_风逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值