掌握大模型高效任务流搭建(一):构建LangChain任务流

前言:

在LangChain框架中,“链”占据着核心地位。它允许我们将众多任务模块串联起来,构建出富有弹性的任务流。借助这种链式结构,我们能够处理复杂的逻辑,并实现任务的自动化。在实际场景里,链式操作极大地优化了大模型的调用管理。它不仅支持单步任务的执行,还能让多步任务相互协作、整合,进而应对更为复杂多变的业务挑战。

准备工作:

确保你的 Python 版本为 3.8 或更高

pip install langchain

conda install -c conda-forge langchain

pip install langchain-core

pip install langchain-community

pip install langchain-experimental

pip install langgraph

pip install "langserve[all]"

pip install langchain-cli

pip install langsmith

pip install langchain-openai

在进入目录下:

cd langchain/libs/langchain

pip install -e .

具体步骤如下:

  1. 安装 LangChain 及其相关依赖。

  2. .env 文件或环境变量中配置 API Key。如果使用的是自定义或其他私有大模型,还需要进行相应的 SDK 设置。

  3. (可选)如果需要使用 ConversationTokenBufferMemory 等功能,需要额外安装 transformers 库和 torch 库,以支持 token 计数。

只要能够成功运行以下代码并获取大模型返回的结果,就可以认为环境已经配置完成

1:基础用法

LLMChain 是 LangChain 提供的一个用于构建逻辑链的模块,它结合了大语言模型(LLM)和提示模板(Prompt Template),从而实现对模型交互逻辑的封装。通过 LLMChain,开发者可以:

  • 定义清晰的提示模板,确保每次与模型的交互具有明确的目标。

  • 通过链式调用,构建更复杂的逻辑,例如多轮对话或任务分解。

具体来说,LLMChain 是开发者与 LLM 交互媒介。

LLMChain 的三大核心组成部分:

要有效运用 LLMChain,需重点把握以下三个关键要素:

1. LLM(大型语言模型):这是执行任务的核心模型,例如 OpenAI 的 GPT 或阿里云的 ChatTongyi。
2. Prompt Template(提示模板):用于定义与模型交互时的语言提示,包括问题的格式、上下文信息等。
3. LLMChain(逻辑链):将上述两个要素整合在一起,提供一个便捷的调用接口。

以下是一个完整的代码示例对话的编码逻辑:

首先,我们需要导入必要的模块并通过环境变量设置 API 密钥,这一步是为了与 ChatTongyi 模型建立连接。通过 os.environ["DASHSCOPE_API_KEY"],我们将密钥信息传递给系统,确保模型可以正常运行。

下一步是设置模型。在代码示例中,`ChatTongyi()` 函数用于生成一个大型语言模型的实例。这个函数的作用是加载模型,并将其配置为可以进行后续的操作和使用。

然后,我们通过 ChatPromptTemplate.from_template("{question}") 创建了一个提示模板。在模板中,{question} 是一个占位符,用于动态填充用户输入的问题。这种模板化的设计,让与模型的交互变得更加灵活。

最后,通过 invoke 方法,我们向对话链传递了用户的问题,即 input_question,模型根据提示模板生成回答。通过 print(response["text"]),我们可以直观地看到模型的输出结果。

调用完成后,我们就可以在终端里看到大模型模版响应反馈。

2:添加记忆模块

但是假如单纯只是这样将大模型和提示词结合起来并不能展示出langchian的价值,这是因为我们在通义千问官方平台的调用其实也已经能够做到这一点了,因此其实我们还可以往这个链里面加多一些特别的东西,比如说上节课学习的记忆模块!

为了将记忆模块引入,我们需要对代码进行一些调整。首先,提示词模板需要新增一个变量 {memory} 来承接记忆信息,langchian就会自然而然的把这个记忆部分的内容加入进去了!大家可以通过下面的案例进行尝试:

我们从结果中可以得知,模型记住了我的名字!假如我们不希望打印中间的过程内容,我们可以把前面的verbose=False即可。

3:多变量提示词模版

那除了传入单一问题变量 {current_question} 外,我们还可以尝试加入其他变量。例如,如果希望大模型根据指定的语气 {tone} 回复,我们需要对提示词模板进行调整:

另外在调用 .invoke() 方法时,我们需要以字典的格式传入多个变量,但是我们会发现程序无法正常运行,出现的报错信息为:

以下是调整后的实现代码

以下全部实例代码:

总结:

       `LLMChain` 提供了更大的灵活性和扩展能力。其主要优势在于对模型调用逻辑的精细控制和模块化架构。通过集成提示模板(Prompt Template)、记忆模块(Memory)以及多参数输入等功能,`LLMChain` 能够适应更复杂的应用场景,例如多轮对话、多任务的链式执行和动态上下文的传递等。而 `ConversationChain` 则更适合快速搭建基础对话功能,其应用范围限于简单的输入输出逻辑。

使用 `LLMChain`,开发者可以便捷地构建结构化的交互流程,将模型的功能与特定应用场景的需求紧密结合。特别是在需要定制化输出、多模块整合(例如记忆模块、数据库访问、API 调用等)的情况下,`LLMChain` 的作用尤为关键。因此,`LLMChain` 是一个更为通用且易于扩展的工具,非常适合在复杂项目中实现精细的逻辑处理和任务管理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标检测——数据处理

1. Mosaic 数据增强 Mosaic 数据增强步骤: (1). 选择四个图像: 从数据集中随机选择四张图像。这四张图像是用来组合成一个新图像的基础。 (2) 确定拼接位置: 设计一个新的画布(输入size的2倍),在指定范围内找出一个随机点(如…

塑造网络安全的关键事件

注:本文为 “网络安全” 相关文章合辑。 机翻,未校。 Timeline of Cyber Security: Key Events that Shaped the Field 网络安全时间表:塑造该领域的关键事件 October 29, 2023 Cyberattacks are an everyday threat, always changing. T…

题解 | 牛客周赛82 Java ABCDEF

目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 判断字符串第一个字符和第三个字符是否相等 import java.io.*; import java.math.*; import java.u…

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

🎯 引言:Redis的高可用性为啥这么重要? 在现代高可用系统中,Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度,还是实现数据的高效持久化,Redis 都能轻松搞定。可是,当你把 …

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件,支持使用java、object-c等原生语言编写,从HBuilderX 3.6起,新增支持了使用uts来开发原生插件。 基础项目 UniPlugin-Hello-AS工程请在App离线SDK中查找 基础项目(App离线SDK)已经配置好了自定义插件所需要的…

【定昌Linux系统】部署了java程序,设置开启启动

将代码上传到相应的目录,并且配置了一个.sh的启动脚本文件 文件内容: #!/bin/bash# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名) JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…

SpringBoot源码解析(十):应用上下文AnnotationConfigServletWebServerApplicationContext构造方法

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…

Unity小功能实现:鼠标点击移动物体

1、功能描述 当玩家点击鼠标时,场景中的物体会移动到鼠标点击的位置。这个功能可以用于控制角色移动、放置物体等场景。 2、实现步骤 创建Unity项目:首先,打开Unity并创建一个新的3D项目。 添加3D物体:在场景中创建一个3D物体&am…

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化,经过过去两周的优化工作后,渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的,因为我们没有预计会达到这样的…

Opencv 图像基本操作

1.1 数据读取-图像 opencv读取的格式是BGR而不是RGB import cv2 import matplotlib.pyplot as plt import numpy as np %matplotlib inline # 在Notebook的输出单元格内嵌入绘制的图形,而不在新窗口中显示img cv2.imread(cat.jpg) # cv2.IMREAD_COLOR&#xff1a…

【微知】ssh如何指定免密的2种简单方式?(vim ~/.ssh/authorized_keys、ssh-copy-id)

背景 ssh通过存储公钥到远端服务器,可以完成本端访问远端服务器的时候免密。免密原理是本端使用私钥,远端公钥,远端可以进行鉴权 方法1: vim ~/.ssh/authorized_keys 将本地电脑的pub的key直接copy到远端 ~/.ssh/authorized_ke…

Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking

一.Skywalking介绍 Apache SkyWalking是一个开源的分布式追踪与性能监视平台,特别适用于微服务架构、云原生环境以及基于容器(如Docker、Kubernetes)的应用部署。该项目由吴晟发起,并已加入Apache软件基金会的孵化器,…

卷积神经网络(cnn,He初始化+relu+softmax+交叉熵+卷积核,六)

He初始化relusoftmax交叉熵卷积核,才是cnn,我们推导的公式: **** (p【k】-y【k】)*drelu(yi[k])*w2[j, k]*drelu(hi[j])*x【i】 只能满足:He初始化relusoftmax交叉熵。 我们参考: cnn突破七…

【区块链 + 智慧政务】 伽罗华域:区块链数据溯源系统 | FISCO BCOS 应用案例

由北京伽罗华域科技有限公司打造的区块链数据溯源系统, 实现了数据从生产、管理到共享的全流程可追溯性和安全审计。系统支持数据的全生命周期管理, 包括数据采集、生产、共享等关键流程, 并通过智能合约自动执行数据的存证、共享与安全审计&…

矩阵基本概念

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话理解矩阵 矩阵是数据排…

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…

xss自动化扫描工具-DALFox

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 工具:https://pan.quark.cn/s/3d824b8637f1 目录标题 一、…

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair 题目 分析一、pair1.1pair与vector的区别1.2 两者使用场景两者组合使用 二、set2.1核心特点2.2set的基本操作2.3 set vs unordered_set示例:统计唯一单词数代码 题目 分析 大佬写的很明白,看这儿 我讲讲…

vue3学习-1(基础)

vue3学习-1(基础) 1. 开始API 风格选项式 API (Options API)组合式 API (Composition API) 快速创建个应用 2.基础1. 创建个应用2.模板语法3.响应式基础reactive() 的局限性[](https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#limi…

eMMC安全简介

1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言, 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性(Confidentiality)、完整性(Integr…