一、LangChain 架构
LangChain 作为一个框架,由多个package(包)组成。
1、langchain-core
这个package(包)
包含了不同组件的基本抽象和组合方式。核心组件(如 LLMs
、向量存储
、检索器
等)的接口都在这里定义。此包不包含任何第三方集成,依赖项被有意保持得非常轻量。
2、langchain
主要的 langchain 包包含了组成应用程序认知架构
的chains
, agents
和retrieval strategies(检索策略)
。这里的内容并非第三方集成。所有的chains
, agents
和retrieval strategies(检索策略)
都不是针对某一特定集成,而是适用于所有集成的通用功能。
3、langchain-community
这个package(包)
包含了由 LangChain 社区维护的第三方集成。关键合作伙伴的包被单独分离出来。此package(包)
包含了各种组件的所有集成(如 LLMs、向量存储、检索器)。为了保持包的轻量化,此包中的所有依赖项都是可选的。
4、Partner packages
虽然大多数集成都在 langchain-community
包中,但我们仍将一些流行的集成分离成它们自己的包(例如 langchain-openai
、langchain-anthropic
等)。这样做是为了更好地支持这些重要的集成。
5、langgraph
langgraph
是 langchain
的扩展,旨在通过将步骤建模为图中的边和节点,构建稳健
且具有状态
的多角色 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 旨在为LLMChain
和Conversational RetrievalChain
等传统子类链
的行为和定制提供一致性。许多传统链条隐藏了重要的细节,如提示,而随着更多不同类型的模型出现,定制化变得越来越重要。
9、Runnable interface
为了尽可能简化自定义链的创建,我们实现了一个“Runnable”
协议。许多 LangChain 组件都实现了 Runnable 协议,包括chat models(聊天模型)
、LLMs
、output 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 | 单个字符串、聊天消息列表或 PromptValue | ChatMessage |
LLM | 单个字符串、聊天消息列表或 PromptValue | 字符串 |
OutputParser | LLM 或 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%免费
】