LangChain 核心概念学习(一)LangChain 架构解析

一、LangChain 架构

LangChain 作为一个框架,由多个package(包)组成。

1、langchain-core

这个package(包)包含了不同组件的基本抽象和组合方式。核心组件(如 LLMs向量存储检索器等)的接口都在这里定义。此包不包含任何第三方集成,依赖项被有意保持得非常轻量。

2、langchain

主要的 langchain 包包含了组成应用程序认知架构chains, agentsretrieval strategies(检索策略)。这里的内容并非第三方集成。所有的chains, agentsretrieval strategies(检索策略)都不是针对某一特定集成,而是适用于所有集成的通用功能。

3、langchain-community

这个package(包)包含了由 LangChain 社区维护的第三方集成。关键合作伙伴的包被单独分离出来。此package(包)包含了各种组件的所有集成(如 LLMs、向量存储、检索器)。为了保持包的轻量化,此包中的所有依赖项都是可选的。

4、Partner packages

虽然大多数集成都在 langchain-community 包中,但我们仍将一些流行的集成分离成它们自己的包(例如 langchain-openailangchain-anthropic 等)。这样做是为了更好地支持这些重要的集成。

5、langgraph

langgraphlangchain 的扩展,旨在通过将步骤建模为图中的边和节点,构建稳健且具有状态的多角色 LLM 应用程序

LangGraph 提供了用于创建常见类型代理的高级接口,以及用于组合自定义流程的低级 API。

6、langserve

用于将 LangChain chains部署为 REST API 的包。它使生产级别的 API 快速上线变得更加容易。

7、LangSmith

一个开发者平台,用于调试测试评估监控 LLM 应用程序

8、LangChain 表达式语言 (LCEL)

LangChain 表达式语言 (LCEL) 是一种声明式方式,用于将 LangChain 组件串联在一起。LCEL 从一开始就设计为支持将原型直接投入生产,无需修改代码,无论是最简单的“提示 + LLM”链,还是最复杂的链(我们见过在生产环境中成功运行包含数百个步骤的 LCEL 链)。

以下是使用 LCEL 的几个理由:

  • 一流的流式支持:当使用 LCEL 构建chains(链条)时,能够获得最佳的首字节时间(从输出的第一个块开始的时间)。对于某些chains(链条),这意味着我们直接从 LLM 流式传输令牌到流式输出解析器,你将以与 LLM 提供者输出原始令牌相同的速度获得解析后的增量输出块。

  • 异步支持:任何使用 LCEL 构建的chains(链条)都可以通过同步 API(例如,在 Jupyter notebook 中进行原型开发时)以及异步 API(例如,在 LangServe 服务器中)调用。这使得可以在原型和生产中使用相同的代码,具有良好的性能,并能够在同一服务器中处理多个并发请求。

  • 并行执行优化:当 LCEL chains(链条)中有可并行执行的步骤(例如,从多个检索器中获取文档)时,我们会自动执行,并在同步和异步接口中以最小的延迟完成任务。

  • 重试和回退:可以为 LCEL chains(链条)中的任何部分配置重试和回退。这是一种提高大规模chains(链条)可靠性的重要方式。我们目前正在添流式重试/回退支持,这样你可以在不增加延迟的情况下获得更高的可靠性。

  • 访问中间结果:对于更复杂的链条,访问中间步骤的结果通常非常有用,即使在最终输出生成之前。这可以用于让最终用户知道某些操作正在进行,或者仅用于调试你的链条。你可以使用流式访问中间结果,并且在每个 LangServe 服务器上都可以使用。

  • 输入和输出模式:输入和输出模式为每个 LCEL 链条提供了基于 Pydantic 和 JSONSchema 推断的模式。这可以用于输入和输出的验证,是 LangServe 的核心组成部分。

  • 无缝的 LangSmith 跟踪:随着你的链条变得越来越复杂,理解每个步骤的具体操作变得越来越重要。使用 LCEL,所有步骤都自动记录到 LangSmith,以实现最大程度的可观察性和可调试性,文档地址:https://docs.smith.langchain.com

LCEL 旨在为LLMChainConversational RetrievalChain等传统子类链的行为和定制提供一致性。许多传统链条隐藏了重要的细节,如提示,而随着更多不同类型的模型出现,定制化变得越来越重要。

9、Runnable interface

为了尽可能简化自定义链的创建,我们实现了一个“Runnable”协议。许多 LangChain 组件都实现了 Runnable 协议,包括chat models(聊天模型)LLMsoutput parsers(输出解析器)retrievers(检索器)prompt templates(提示模板)等。还有一些用于处理 Runnable 的有用原语,详情可见下文。

这是一个标准接口,它使定义自定义链以及以标准方式调用它们变得容易。标准接口包括:

  • stream:stream back chunks of the response.

  • invoke:call the chain on an input.

  • batch:call the chain on a list of inputs.

这些方法还有对应的异步方法,可与 asyncio 的 await 语法一起使用,以实现并发:

  • astream:异步返回响应的分块数据流

  • ainvoke:异步对单个输入调用链

  • abatch:异步对输入列表调用链

  • astream_log:在返回最终响应的同时,流式返回中间步骤

  • astream_events:beta 版本,流式返回链条中发生的事件(在 langchain-core 0.1.14 中引入)

输入类型和输出类型因组件而异:

组件输入类型输出类型
Prompt字典PromptValue
ChatModel单个字符串、聊天消息列表或 PromptValueChatMessage
LLM单个字符串、聊天消息列表或 PromptValue字符串
OutputParserLLM 或 ChatModel 的输出取决于解析器
Retriever单个字符串文档列表
Tool单个字符串或字典(取决于工具)取决于工具

所有的 Runnable 都提供输入和输出模式,以便检查输入和输出:

  • input_schema:根据 Runnable 的结构自动生成的输入 Pydantic 模型

  • output_schema:根据 Runnable 的结构自动生成的输出 Pydantic 模型


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方优快云官方认证二维码,免费领取【保证100%免费

### 关于LangChain的代码解析与教程 对于希望深入了解LangChain内部工作原理以及如何有效利用这框架的人来说,存在多种资源可以提供详细的指导和支持。 #### LangChain代码库全面解析和贡献指南 文章《深入探讨LangChain代码库:全面解析和贡献指南》提供了详尽的内容来帮助读者理解LangChain核心组件及其相互作用方式[^1]。此文档不仅涵盖了基础概念介绍,还包含了具体实现细节和技术要点分析,非常适合那些想要成为社区贡献者的开发者们。 #### 掌握LangChain代码架构的方法 另篇名为《深入解析LangChain的代码架构——学会在开源项目中游刃有余》的文章则更侧重于解释整个系统的结构布局,并给出了些实用技巧以便更好地参与到该项目当中去[^2]。它强调了模块化设计的重要性,并展示了各个部分是如何协同工作的。 #### 使用Ollama LLMLangChain实践案例 如果感兴趣的是实际应用场景,《使用Ollama LLMLangChain教程:全面解析和代码示例》文中给出了具体的实例演示,说明了怎样结合这两个强大工具完成复杂的自然语言处理任务[^3]。这是份非常宝贵的学习材料,特别是当涉及到多模态数据处理时。 ```python from langchain import LangChain, OllamaLLM # 初始化模型和其他必要的设置... model = OllamaLLM() def process_text(text_input): result = model.predict(text_input) return result ``` 上述代码片段展示了个简单的例子,其中`process_text()`函数接收段文本输入并通过调用预训练好的Ollama模型来进行预测操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值