LangChain系列:LangChain基础入门教程

news2025/2/13 11:07:31

LangChain 是一个开源框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。它为链提供了标准接口,与许多其他工具进行了集成,并为常见应用提供了端到端的链。
LangChain 让 AI 开发人员能够基于大型语言模型(如 GPT-4, DeepSeek)与外部计算和数据源相结合来开发应用程序。该框架提供了 Python 和 JavaScript 的包。

LangChain重要性

LangChain帮助管理复杂的工作流程,使llm更容易集成到各种应用程序中,如聊天机器人和文档分析。主要优势包括:

  • 模块化工作流:简化了llm的链接,实现可重用和高效的工作流。
  • 提示词管理:提供有效的提示词工程和内存记忆处理工具。
  • 易于集成:简化了构建llm驱动应用程序的过程。

在这里插入图片描述

LangChain关键组件

1. Models(模型)

  • 定义: Models 是 LangChain 的核心组件,负责处理自然语言任务。LangChain 支持多种类型的模型,包括大型语言模型(LLMs)、聊天模型(Chat Models)和嵌入模型(Embedding Models)。
  • 类型:
    • LLMs: 如 OpenAI 的 GPT 系列,用于生成文本。
    • Chat Models: 如 OpenAI 的 ChatGPT,专为对话场景设计。
    • Embedding Models: 如 OpenAI 的 text-embedding-ada-002,用于将文本转换为向量。
  • 作用:
    • 文本生成: 生成文章、代码、故事等。
    • 问答系统: 回答用户问题,如客服机器人。
    • 语义分析: 通过嵌入模型实现文本相似度计算,用于推荐系统或搜索。

2. Prompts(提示)

  • 定义: Prompts 是用户输入或系统生成的文本,用于引导模型生成特定输出。LangChain 提供了多种提示模板和优化工具。
  • 类型:
    • 静态提示: 固定格式的提示,如“请总结以下文本”。
    • 动态提示: 根据上下文生成的提示,如多轮对话中的问题。
  • 作用:
    • 控制输出: 通过设计提示,可以引导模型生成更符合需求的输出。
    • 提高效率: 在客服场景中,使用标准化提示可以快速生成高质量回复。
    • 多语言支持: 通过多语言提示,实现跨语言任务处理。

3. Chains(链)

  • 定义: Chains 是将多个组件(如模型、提示、工具等)串联起来,形成一个完整的工作流程。
  • 类型:
    • 简单链: 单一任务链,如问答链。
    • 复杂链: 多步骤任务链,如先检索信息再生成回答。
  • 作用:
    • 任务自动化: 在文档处理中,可以自动完成“加载文档→提取信息→生成报告”的流程。
    • 多轮对话: 在聊天机器人中,通过链式结构实现上下文连贯的对话。
    • 复杂推理: 在数据分析中,结合多个模型完成复杂推理任务。

4. Agents(代理)

  • 定义: Agents 是能够自主决策和执行任务的组件,通常结合模型和工具使用。
  • 类型:
    • 零样本代理: 无需训练即可执行任务。
    • 自定义代理: 根据特定需求设计的代理。
  • 作用:
    • 动态决策: 在客服场景中,代理可以根据用户问题动态选择调用知识库或生成回答。
    • 工具集成: 在数据分析中,代理可以调用计算工具或数据库查询工具。
    • 任务调度: 在自动化流程中,代理可以管理多个任务的执行顺序。

5. Memory(记忆)

  • 定义: Memory 用于存储和管理对话或任务的历史信息,以保持上下文一致性。
  • 类型:
    • 短期记忆: 存储当前会话的上下文。
    • 长期记忆: 存储用户的历史数据或偏好。
  • 作用:
    • 多轮对话: 在聊天机器人中,记忆可以记住用户之前的提问,提供连贯的回答。
    • 个性化服务: 在推荐系统中,记忆可以存储用户偏好,提供个性化推荐。
    • 任务延续: 在复杂任务中,记忆可以保存任务状态,便于后续继续处理。

6. Indexes(索引)

  • 定义: Indexes 用于管理和检索大量文本数据,通常结合向量数据库使用。
  • 类型:
    • 文本索引: 基于关键词的检索。
    • 向量索引: 基于语义相似度的检索。
  • 作用:
    • 知识库检索: 在企业知识库中,快速检索相关信息。
    • 语义搜索: 在电商平台中,通过语义索引实现更精准的商品搜索。
    • 文档管理: 在法律或医疗领域,快速查找相关文档。

7. Tools(工具)

  • 定义: Tools 是外部功能或 API,如搜索引擎、数据库、计算器等。
  • 类型:
    • 搜索工具: 如 Google 搜索 API。
    • 计算工具: 如数学计算器。
    • 数据库工具: 如 SQL 查询工具。
  • 作用:
    • 扩展能力: 在问答系统中,调用搜索工具获取实时信息。
    • 数据处理: 在数据分析中,调用计算工具进行复杂计算。
    • 系统集成: 在企业应用中,集成内部系统 API 实现自动化流程。

8. Callbacks(回调)

  • 定义: Callbacks 是事件驱动的机制,用于在特定事件发生时执行自定义逻辑。
  • 类型:
    • 日志回调: 记录系统运行日志。
    • 错误回调: 处理任务执行中的错误。
  • 作用:
    • 监控与调试: 在开发过程中,通过回调监控模型行为。
    • 错误处理: 在生产环境中,通过回调实现错误预警和恢复。
    • 性能优化: 通过回调记录任务执行时间,优化系统性能。

9. Output Parsers(输出解析器)

  • 定义: Output Parsers 用于解析和处理模型的输出,将其转换为结构化数据。
  • 类型:
    • JSON 解析器: 将输出解析为 JSON 格式。
    • 自定义解析器: 根据需求设计解析逻辑。
  • 作用:
    • 数据标准化: 在 API 集成中,将模型输出解析为标准化格式。
    • 结果提取: 在信息提取任务中,从模型输出中提取关键信息。

10. Document Loaders(文档加载器)

  • 定义: Document Loaders 用于从不同来源(如文件、数据库、API)加载文档数据。
  • 类型:
    • 文件加载器: 加载本地文件(如 PDF、TXT)。
    • API 加载器: 从外部 API 获取数据。
  • 作用:
    • 数据整合: 在知识库构建中,从多个来源加载文档。
    • 信息提取: 在文档处理中,加载文档并提取关键信息。

11. Text Splitters(文本分割器)

  • 定义: Text Splitters 用于将长文本分割成较小的片段,便于模型处理。
  • 类型:
    • 按字符分割: 按固定字符数分割。
    • 按语义分割: 按句子或段落分割。
  • 作用:
    • 处理长文本: 在文档总结中,将长文档分割为小块进行处理。
    • 提高效率: 在问答系统中,分割文本以匹配模型输入长度。

12. Vector Stores(向量存储)

  • 定义: Vector Stores 用于存储和管理文本的向量表示,通常结合索引使用。
  • 类型:
    • 本地向量存储: 如 FAISS。
    • 云向量存储: 如 Pinecone。
  • 作用:
    • 语义搜索: 在推荐系统中,通过向量存储实现语义相似度搜索。
    • 知识管理: 在企业知识库中,存储文档的向量表示以便快速检索。

13. Embeddings(嵌入)

  • 定义: Embeddings 是将文本转换为向量表示的技术,通常用于语义分析和相似度计算。
  • 类型:
    • 预训练嵌入: 如 OpenAI 的嵌入模型。
    • 自定义嵌入: 根据特定任务训练的嵌入模型。
  • 作用:
    • 语义分析: 在情感分析中,通过嵌入模型理解文本情感。
    • 聚类分析: 在用户分群中,通过嵌入模型实现用户聚类。

14. Evaluators(评估器)

  • 定义: Evaluators 用于评估模型或系统的性能,通常结合测试数据和指标使用。
  • 类型:
    • 自动化评估: 如 BLEU 分数。
    • 人工评估: 如人工打分。
  • 作用:
    • 性能监控: 在生产环境中,定期评估模型性能。
    • 优化指导: 在开发过程中,通过评估结果优化模型。

15. Utilities(工具集)

  • 定义: Utilities 是 LangChain 提供的各种辅助工具和函数,用于简化开发过程。
  • 类型:
    • 文本处理工具: 如正则表达式工具。
    • 调试工具: 如日志记录工具。
  • 作用:
    • 提高效率: 在开发中,快速实现常见功能。
    • 简化流程: 在任务处理中,减少重复代码。

通过以上组件的灵活组合,LangChain 可以支持多种应用场景,如智能客服、知识库管理、自动化文档处理等,帮助开发者快速构建高效的基于大型语言模型的应用程序。

LangChain工作机制

LangChain遵循结构化的流程,将用户查询、数据检索和响应生成集成为无缝的工作流程。

  1. 用户查询

该流程在用户提交查询或请求时开始。例如,用户可能会问:“今天天气怎么样?”该查询用作LangChain流程的输入。

  1. 向量表示与相似性搜索

一旦收到查询,LangChain使用嵌入将其转换为向量表示。该向量捕获查询的语义含义。然后使用该向量在向量数据库中执行相似性搜索。目标是找到与用户查询匹配的数据库中存储的最相关的信息或上下文。

  1. 获取相关信息

基于相似性搜索,LangChain从数据库中检索最相关的数据或上下文。此步骤确保语言模型能够访问准确且上下文适当的信息,以生成有意义的响应。

  1. 生成响应

检索到的信息被传递到语言模型(例如,OpenAI的GPT4, DeepSeek的R1或其他)。LLM处理输入并根据提供的数据生成响应或采取操作。

例如,如果查询是关于天气的,LLM可能会生成这样的响应:“今天的天气是阳光明媚的,最高温度为10摄氏度。”

格式化后的响应作为最终输出返回给用户。用户会收到一个清晰、准确且与上下文相关的查询答案。

LangChain入门示例

要开始使用LangChain,您需要安装所需的库并设置一个基本环境。

步骤1:安装LangChain

安装LangChain的命令如下:

pip install langchain

步骤2:安装大模型

LangChain与各种大型语言模型(llm)一起工作,对于这个例子,我们将使用OpenAI,当然也支持其他大模型,如DeepSeek。安装OpenAI,执行如下命令:

pip install openai 
# pip install deepseek-sdk

步骤3:安装Python-dotenv

为了在环境变量中安全地存储LLM API密钥,我们将使用python-dotenv库。运行以下命令安装:

pip install  python-dotenv

步骤4:生成并存储您的API密钥

你需要通过注册和创建帐户从LLM平台生成API密钥。一旦你有了API密钥,在你的项目目录中创建一个。env文件,并像这样添加你的API密钥:

OPENAI_KEY = 'your_api_key'

步骤5:编写Python脚本

接下来,创建名为lang.py的新Python文件。在这个文件中,将使用LangChain用LLM生成响应。首先导入必要的库:

import os
import openai
import langchain
from dotenv import load_dotenv

# Load the API key from .env file
load_dotenv()
api_key = os.getenv("OPENAI_KEY", None)

这段代码从.env文件加载环境变量,LLM API密钥存储在该文件中。初始设置完成后,让我们继续构建一个生成响应的简单应用程序。我们首先向模型提出一个基本问题:“给我推荐一项必备技能”

步骤6:初始化OpenAI模型

导入LangChain并使用OpenAI类初始化OpenAI LLM(大型语言模型):

from langchain.llms import OpenAI

# Initialize OpenAI LLM with a temperature of 0.9 for randomness
llm = OpenAI(temperature=0.9, openai_api_key=api_key)

在这种情况下,temperature=0.9的设置意味着结果将更加随机和创造性。如果你希望响应更加准确和确定,可以将温度降低到0.4左右。

步骤7:生成响应

现在模型已经初始化,您可以通过向它传递一个简单的提示来生成响应。在这种情况下,我们会问,“给我推荐一项必备技能?”

response=llm.predict("给我推荐一项必备技能?")
print(response)

该输出基于语言模型的预测,并且温度设置为0.9,它提供了当前需求的更具创造性和多样化的技能集。

LangChain的应用场景

LangChain是一个强大的工具,可用于构建广泛的llm驱动应用程序。它易于使用,并且拥有大量的用户和贡献者社区。

  • 会话代理:构建聊天机器人和虚拟助手,它们可以与用户进行有意义的、上下文感知的对话。
  • 文档摘要:自动生成长文档摘要,方便用户消化大量信息。
  • 问题回答:创建能够根据给定上下文或一组文档回答问题的系统。
  • 流程自动化:设计涉及多个步骤的工作流,例如数据提取、处理和报告,所有这些都由语言模型提供支持。
  • 内容生成:在语言模型的帮助下生成创意内容,如文章、故事或营销文案。

LangChain框架提供良好的接口和流程,可以开发有趣的人工智能应用程序,从个人助理到提示管理以及自动化任务。所以,继续学习,继续开发强大的大模型应用程序。

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

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

相关文章

修改docker内容器中的某配置文件的命令

先找到配置文件config.php find / -name "config.php" 2>/dev/null 然后用vi编辑器修改配置文件 vi /var/www/config.php 最后就是vi的基本操作,根据具体需求使用: vi 有两种主要模式: 命令模式:进入 vi 后的默认…

无人机遥感图像拼接及处理实践技术:生态环境监测、农业、林业等领域,结合图像拼接与处理技术,能够帮助我们更高效地进行地表空间要素的动态监测与分析

近年来,无人机技术在遥感领域的应用越来越广泛,尤其是在生态环境监测、农业、林业等领域,无人机遥感图像的处理与分析成为了科研和业务化工作中的重要环节。通过无人机获取的高分辨率影像数据,结合图像拼接与处理技术,…

基于Springmvc+MyBatis+Spring+Bootstrap+EasyUI+Mysql的个人博客系统

基于SpringmvcMyBatisSpringBootstrapEasyUIMysql的个人博客系统 1.项目介绍 使用Maven3Spring4SpringmvcMybatis3架构;数据库使用Mysql,数据库连接池使用阿里巴巴的Druid;使用Bootstrap3 UI框架实现博客的分页显示,博客分类&am…

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT? 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头(Classification Head) 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…

软考高级《系统架构设计师》知识点(二)

操作系统知识 操作系统概述 操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。操作系统有三个重要的作用: 管理…

DeepSeek的魔法:如何让复杂概念变得通俗易懂?

日常生活中,常常会被复杂的概念所困扰。怎么样将这些晦涩难懂的概念变得通俗易懂?当然是利用大模型帮我们解答,不过让大模型解答也需要有好的沟通提示词。  我收集整理了 2 套提示词,大家一起学习一下。  一、用推理模型解释概…

地弹噪声【信号完整性】

地弹、振铃、串扰、信号反射 地弹,就是地噪声! 低频时,地噪声主要是因为构成地线的导体有“电阻”,电路系统的电流都要流经地线而产生的电势差波动。 高频时,地噪声主要是因为构成地线的导体有“电感”,电路系统的电流快速变化地经过这个“电感”时,“电感”两端激发…

【大模型】阿里云百炼平台对接DeepSeek-R1大模型使用详解

目录 一、前言 二、DeepSeek简介 2.1 DeepSeek 是什么 2.2 DeepSeek R1特点 2.2.1 DeepSeek-R1创新点 2.3 DeepSeek R1应用场景 2.4 与其他大模型对比 三、阿里云百炼大平台介绍 3.1 阿里云百炼大平台是什么 3.2 阿里云百炼平台主要功能 3.2.1 应用场景 3.3 为什么选…

相似性图相关性重构网络用于无监督跨模态哈希

《Similarity Graph-correlation Reconstruction Network for unsupervised cross-modal hashing》 摘要1. 引言2. 相关工作2.1. 监督跨模态哈希方法2.2. 无监督跨模态哈希方法 3. 方法论3.1 问题定义3.2 特征提取3.3 模态内关系图构建3.4. 局部关系图重置3.5. 跨模态关系图构建…

问卷数据分析|SPSS实操之单因素方差分析

适用条件: 检验分类变量和定量变量之间的差异 分类变量数量要大于等于三 具体操作: 1.选择分析--比较平均值--单因素ANOVA检验 2. 下方填分类变量,上方为各个量表数据Z1-Y2 3. 点击选项,选择描述和方差齐性检验 4.此处为结果数…

更加通用的Hexo多端部署原理及实现,适用于各种系统之间

本文推荐在作者的个人博客网站阅读:shenying.online 一、故事背景 故事发生在大学上学期间(而不是寒假)。上学期间,宿舍条件极其恶劣,半夜断电、空间狭小。我们大学垃圾条件使用游戏本的种种弊端被无限放大&#xff1…

5g基站测试要求和关键点

5G基站的测试要求涉及多个方面,以确保其性能、覆盖能力、稳定性和合规性。以下是5G基站测试的主要要求和关键点: 一、基础性能测试 射频(RF)性能测试 发射机性能:验证基站的发射功率、频率误差、调制质量(E…

算法——搜索算法:原理、类型与实战应用

搜索算法:开启高效信息检索的钥匙 在信息爆炸的时代,搜索算法无疑是计算机科学领域中熠熠生辉的存在,它就像一把神奇的钥匙,为我们打开了高效信息检索的大门。无论是在日常生活中,还是在专业的工作场景里,…

【嵌入式Linux应用开发基础】open函数与close函数

目录 一、open函数 1.1. 函数原型 1.2 参数说明 1.3 返回值 1.4. 示例代码 二、close函数 2.1. 函数原型 2.2. 示例代码 三、关键注意事项 3.1. 资源管理与泄漏防范 3.2. 错误处理的严谨性 3.3. 标志(flags)与权限(mode&#xff…

在实体机和wsl2中安装docker、使用GPU

正常使用docker和gpu,直接命令行安装dcoker和,nvidia-container-toolkit。区别在于,后者在于安装驱动已经cuda加速时存在系统上的差异。 1、安装gpu驱动 在实体机中,安装cuda加速包,我们直接安装 driver 和 cuda 即可…

Unity3D实现显示模型线框(shader)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉二、第一种方式👉二、第二种方式👉壁纸分享👉总结👉前言 在 Unity 中显示物体线框主要基于图形渲染管线和特定的渲染模式。 要显示物体的线框,通常有两种常见的方法:一种是利用内置的渲染…

VAD端到端系列梳理以及阅读

0. 简介 最近VAD v2论文出来了,又掀起了一波该系列模型的热点。我们先看一下蒋博的文章,然后再来看一下《VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning》这篇文章,代码目前还没开源,可以期待一波…

在vmd中如何渲染透明水分子

1.设置背景为白色 依次点击Graphics>>Colors... 2. 改变渲染模式 依次点击Display>>rendermode>>GLSL 3. 渲染水分子 选中水分子,显色方式改为ColorID, 编号10的颜色; 选择材质为GlassBubble; 绘图方式为QuickSurf. 若水盒子显示效…

MybatisPlus常用增删改查

记录下MybatisPlus的简单的增删改查 接口概述 Service和Mapper区别 Mapper简化了单表的sql操作步骤(CRUD),而Serivce则是对Mapper的功能增强。 Service虽然加入了数据库的操作,但还是以业务功能为主,而更加复杂的SQL…

常用电路(过压保护、电流/电压采集)

过压保护电路 输入电压使用电源(36V)或者typec(20V),需要过压保护电路处理输入再连接到CH224K,保证输入不高于最大获取电压20V MOS管导通条件为栅源极有压差,一般为5-10V 三极管导通条件为基极…