LangChain核心解析:掌握AI开发的“链“式思维

0. 思维导图

在这里插入图片描述

1. 引言 🌟

在人工智能快速发展的今天,如何有效地利用大语言模型(LLM)构建强大的应用成为众多开发者关注的焦点。前面的课程中,我们学习了正则表达式以及向量数据库的相关知识,了解了如何处理文档并将其附加给大模型。本章我们将深入探讨LangChain中的核心概念——“Chain”(链)。

LangChain作为一个强大的框架,让我们能够将LLM与其他计算资源或知识源结合起来,创建更加智能的应用。而Chain则是这个框架的重要组成部分,它就像是将各种功能模块串联起来的纽带,使得复杂的AI工作流成为可能。

2. 什么是Chain(链)💡

2.1 链的基本概念

在LangChain中,Chain(链)是一个核心概念,它代表一系列组件的连接,这些组件按照特定的顺序执行,以完成复杂的任务。简单来说,Chain就是将多个步骤组合成一个可调用的单元,让信息能够从一个组件流向另一个组件。

链的基本工作流程是:接收输入 → 处理数据 → 产生输出。而这个处理过程可能涉及到与LLM的交互、文档的检索、信息的提取等多个步骤。

2.2 链的重要性

链的设计理念使得我们可以:

  • 🔄 模块化地组合不同功能
  • 📦 封装复杂的逻辑流程
  • 🛠️ 重用常见的处理模式
  • 🧩 灵活地扩展应用功能

正是这种灵活性和模块化的特性,使得LangChain能够适应各种各样的AI应用场景,从简单的问答系统到复杂的智能助手。

3. 四种基本的内置链 🔗

LangChain提供了多种内置的链类型,其中最基础的四种分别是LLM链、顺序链、路由链和检索链。这些内置链为我们提供了处理不同任务的基本工具。

3.1 LLM Chain

LLM Chain(LLM链)是最基础也是最常用的链类型,它将提示模板(PromptTemplate)和语言模型(LLM)结合在一起,形成一个简单但强大的处理单元。

工作原理

  1. 接收用户输入
  2. 根据提示模板格式化输入
  3. 将格式化后的提示发送给LLM
  4. 返回LLM的响应

代码示例

from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate# 创建提示模板
template = "请告诉我{topic}的三个重要知识点"
prompt = PromptTemplate(input_variables=["topic"], template=template)# 初始化LLM
llm = OpenAI(temperature=0.7)# 创建LLM链
chain = LLMChain(llm=llm, prompt=prompt)# 使用链
response = chain.run("人工智能")
print(response)

3.2 Sequential Chain(顺序链)

顺序链允许我们将多个链按照特定顺序连接起来,前一个链的输出可以作为后一个链的输入,从而实现更复杂的处理流程。

顺序链主要有两种类型:

  1. SimpleSequentialChain:每个链只有一个输入和一个输出,链之间一对一串联
  2. SequentialChain:支持多输入多输出,更加灵活

代码示例(SimpleSequentialChain)

from langchain.chains import SimpleSequentialChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 第一个链:生成一个故事概要
first_prompt = PromptTemplate(input_variables=["subject"],template="请为{subject}写一个简短的故事概要"
)
chain_one = LLMChain(llm=llm, prompt=first_prompt)# 第二个链:基于故事概要写一个完整故事
second_prompt = PromptTemplate(input_variables=["概要"],template="基于以下概要,写一个完整的故事:\n\n{概要}"
)
chain_two = LLMChain(llm=llm, prompt=second_prompt)# 创建顺序链
overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two])# 运行链
response = overall_chain.run("一只迷路的猫")
print(response)

代码示例(SequentialChain)

from langchain.chains import SequentialChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 第一个链:为电影生成标题
first_prompt = PromptTemplate(input_variables=["genre"],template="为{genre}类型的电影想一个标题"
)
title_chain = LLMChain(llm=llm, prompt=first_prompt, output_key="title")# 第二个链:为电影生成简介
second_prompt = PromptTemplate(input_variables=["title"],template="为电影《{title}》写一个简短的简介"
)
synopsis_chain = LLMChain(llm=llm, prompt=second_prompt, output_key="synopsis")# 创建顺序链
overall_chain = SequentialChain(chains=[title_chain, synopsis_chain],input_variables=["genre"],output_variables=["title", "synopsis"]
)# 运行链
response = overall_chain.run("科幻")
print(f"标题: {response['title']}\n简介: {response['synopsis']}")

3.3 Router Chain(路由链)

路由链是一种能够根据输入动态决定调用哪个子链的高级链。它根据输入的内容或特征,选择最适合处理该输入的链,类似于一个智能分发器。

Router Chain由三个主要部分组成:

  1. 路由器(决定使用哪个链)
  2. 目标链(可选择的链集合)
  3. 默认链(当无法确定路由时使用)

代码示例

from langchain.chains.router import MultiPromptChain
from langchain.chains.router.llm_router import LLMRouterChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 定义各专业领域的提示模板
physics_template = PromptTemplate(template="你是一位物理学专家。回答以下物理学问题:{question}",input_variables=["question"]

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

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

相关文章

Error:java: 程序包lombok不存在

使用Maven package打包项目发现报错 一、Maven配置文件修改 1.找到本地 maven的配置文件settings.xml 2.修改配置文件中,指向本地仓库的地址使用 ‘’ \ \ ‘’ 隔开, 要么使用 正斜线 / 隔开 不要使用 反斜线 \ windows OS 电脑,使用 \ …

WordPress 未授权本地文件包含漏洞(CVE-2025-2294)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…

基于 C# 开发视觉检测系统项目全解析

引言 在当今高度自动化的制造业领域,视觉检测系统的重要性愈发凸显。它凭借高速、高精度的特性,在产品外观缺陷检测、尺寸测量等环节发挥着关键作用,显著提升了生产效率和产品质量。C# 作为一种功能强大且易于学习的编程语言,结合.NET 框架丰富的类库以及 Windows Forms、…

GISBox:核心功能免费的一站式三维GIS处理平台

大家好,今天为大家介绍的软件是GISBox:一款核心功能免费的一站式三维GIS处理平台,主要是适用于数字孪生。下面,我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 软件官网:http://www.gisbox.…

Ubuntu 24 云服务器上部署网站_详细版_1

从零开始,在 Ubuntu 24 云服务器上部署一个支持登录和权限的网站,用 Python Django 实现,适合新手跟着操作。 🔧 第一步:更新服务器并安装基础环境 请使用 SSH 登录你的 Ubuntu 24 云服务器(用 MobaXterm…

单片机学习之定时器

定时器是用来定时的机器,是存在于STM32单片机中的一个外设。STM32一般总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TI…

AIGC6——AI的哲学困境:主体性、认知边界与“天人智一“的再思考

引言:当机器开始"思考" 2023年,Google工程师Blake Lemoine声称对话AI LaMDA具有"自我意识",引发轩然大波。这一事件将古老的哲学问题重新抛回公众视野:​**机器能否拥有主体性?**从东方"天人…

从内核到应用层:Linux缓冲机制与语言缓冲区的协同解析

系列文章目录 文章目录 系列文章目录前言一、缓冲区1.1 示例11.2 缓冲区的概念 二、缓冲区刷新方案三、缓冲区的作用及存储 前言 上篇我们介绍了,文件的重定向操作以及文件描述符的概念,今天我们再来学习一个和文件相关的知识-----------用户缓冲区。 在…

高通camx IOVA内存不足,导致10-15x持续拍照后,点击拍照键定屏无反应,过一会相机闪退

定屏闪退问题分析思路: 定屏问题如果是相机问题,一般会出现返帧,导致预览卡死。当然还有其他情况,我们先看返帧情况,发现request和result开始都正常,到12:53:05.443038就没有返帧了,定屏了。往…

AI知识补全(十五):AI可解释性与透明度是什么?

名人说:一笑出门去,千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十四):零样本…

CentOS 7安装hyperscan

0x00 前言 HyperScan是一款由Intel开发的高性能正则表达式匹配库,专为需要快速处理大量数据流的应用场景而设计。它支持多平台运行,包括Linux、Windows和macOS等操作系统,并针对x86架构进行了优化,以提供卓越的性能表现。HyperSc…

机器学习的一百个概念(9)学习曲线

前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…

macvlan 和 ipvlan 实现原理及设计案例详解

一、macvlan 实现原理 1. 核心概念 macvlan 允许在单个物理网络接口上创建多个虚拟网络接口,每个虚拟接口拥有 独立的 MAC 地址 和 IP 地址。工作模式: bridge 模式(默认):虚拟接口之间可直接通信,类似交…

linux文件上传下载lrzsz

lrzsz 是一个在 Linux 系统中用于通过串行端口(如 ZMODEM、XMODEM、YMODEM 等协议)进行文件上传和下载的工具集。它通常用于在终端环境中通过串口或 SSH 连接传输文件。 安装 lrzsz 在大多数 Linux 发行版中,你可以使用包管理器来安装 lrzsz。 Debian/Ubuntu: sudo apt-ge…

单片机学习之SPI

物理层 串行全双工总线 需要四根线:SCLK(时钟线),CS(片选线)、MOSI(主设备输出、从设备输入),MISO(主设备输入,从设备输出)。 片选信号 片选信号CS是用来…

大模型应用初学指南

随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式,RAG 的核心原理及其在实际应用中的挑战与解决方案,通用大模型在知识局限性、幻觉问题和数据安…

docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警

目录 一.docker-compose文件 二.配置文件 三.文件层级关系,docker-compose和配置文件位于同级目录 四.node_exporter页面json文件 五.效果展示 prometheusalertmanager邮件告警 grafana面板效果 六.涉及离线包 一.docker-compose文件 [rootsulibao prometh…

AI设计再现新引擎,科技创新又添新动能——广东省首家行业AI设计工程中心获批成立

近期,大捷智能科技(广东)有限公司(以下简称“大捷智能”)凭借其在人工智能与智能制造领域的突出研发实力与创新科技成果,由广东省科技厅批准设立“广东省模具智能设计与智能制造工程技术研究中心”。 广东省…

【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解决方案

在代码审计项目中,MongoDB可以用于存储元数据和部分结构化信息,但要高效处理向量相似性搜索,需结合其他工具。以下是具体分析: 1. MongoDB 的适用场景 元数据存储: 存储代码片段的文件路径、行号、语言类型等结构化信…

基于ANSYS 概率设计和APDL编程的结构可靠性设计分析

01 可靠度基本理论 结构的极限状态:整个结构的一部分超过某一特定状态就不能满足设计规定的某一功能要求。结构的极限状态实质上是结构工作状态的一个阀值,如果工作状态超过这一阀值,则结构处于不安全、不耐久或不适用的状态;若工…