重磅!大模型框架 LangChain 首个稳定版本终于来了!

著名的大模型智能体工具,现在有大版本更新了。

不知不觉,LangChain 已经问世一年了。作为一个开源框架,LangChain 提供了构建基于大模型的 AI 应用所需的模块和工具,大大降低了 AI 应用开发的门槛,使得任何人都可以基于 GPT-4 等大模型构建自己的创意应用。

在过去的一年中,LangChain 自身也一直在进化。刚刚,LangChain 官方宣布,他们的首个稳定版本 ——LangChain v0.1.0 问世了。

图片

新版本有以下几个重要特点:

  • 可观察性:构建复杂的 LLM 应用是困难的。为了更好地进行调试,你需要知道采取的确切步骤以及每个步骤的输入 / 输出。通过与 LangSmith 的紧密集成,LangChain 在可观察性方面做到了业界领先;

  • 集成:拥有近 700 个集成,无论你想使用什么技术栈,LangChain 都能支持;

  • 可组合性:使用 LangChain 表达式语言,轻松创建任意 chain,为你带来数据编排框架的所有好处;

  • 流式处理:官方团队投入了大量精力,以确保所有使用 LangChain 表达式语言创建的 chain 都能以一流的方式支持流 —— 包括中间步骤的流;

  • 输出解析:使 LLM 以特定格式返回信息对于使其能够采取行动至关重要;

  • 检索:添加先进但适用于生产环境的检索方法,包括文本分割、retrieval 和索引管道;

  • 工具使用 + 智能体:智能体集合(决定采取哪些行动),工具集合,定义工具的简单方法。

此外,这次更新还有一个「One More Thing」:能够将语言智能体构建为图的 LangGraph。它带来的主要新功能是允许用户创建更多的自定义循环行为。这对于智能体来说非常重要,智能体通常被描述为在 for 循环中运行 LLM。

LangChain 官方还发布了一系列视频来介绍新功能。

图片

视频地址:https://www.youtube.com/playlist?list=PLfaIDFEXuae0gBSJ9T0w7cu7iJZbH3T31

通俗易懂讲解大模型系列

  • 用通俗易懂的方式讲解:如何提升大模型 Agent 的能力?

  • 用通俗易懂的方式讲解:使用 Mistral-7B 和 Langchain 搭建基于PDF文件的聊天机器人

  • 用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

  • 用通俗易懂的方式讲解:结合检索和重排序模型,改善大模型 RAG 效果明显

  • 用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

  • 用通俗易懂的方式讲解:在 CPU 服务器上部署 ChatGLM3-6B 模型

  • 用通俗易懂的方式讲解:ChatGLM3-6B 功能原理解析

  • 用通俗易懂的方式讲解:使用 LangChain 和大模型生成海报文案

  • 用通俗易懂的方式讲解:一个强大的 LLM 微调工具 LLaMA Factory

  • 用通俗易懂的方式讲解:ChatGLM3-6B 部署指南

  • 用通俗易懂的方式讲解:LangChain Agent 原理解析

  • 用通俗易懂的方式讲解:HugggingFace 推理 API、推理端点和推理空间使用详解

  • 用通俗易懂的方式讲解:使用 LangChain 封装自定义的 LLM,太棒了

  • 用通俗易懂的方式讲解:使用 FastChat 部署 LLM 的体验太爽了

  • 用通俗易懂的方式讲解:基于 Langchain 和 ChatChat 部署本地知识库问答系统

  • 用通俗易懂的方式讲解:使用 Docker 部署大模型的训练环境

  • 用通俗易懂的方式讲解:在 Ubuntu 22 上安装 CUDA、Nvidia 显卡驱动、PyTorch等大模型基础环境

  • 用通俗易懂的方式讲解:Llama2 部署讲解及试用方式

  • 用通俗易懂的方式讲解:LangChain 知识库检索常见问题及解决方案

  • 用通俗易懂的方式讲解:基于 LangChain 和 ChatGLM2 打造自有知识库问答系统

  • 用通俗易懂的方式讲解:代码大模型盘点及优劣分析

  • 用通俗易懂的方式讲解:Prompt 提示词在开发中的使用

  • 用通俗易懂的方式讲解:万字长文带你入门大模型

以下是这次更新的详细内容。

第三方集成

LangChain 最受欢迎的特点之一是它极大地简化了在任何技术栈上开始构建的过程。LangChain 拥有近 700 个集成,涵盖从 LLM 到向量存储,再到智能体工具的广泛领域。

LangChain 通常被用作「粘合剂」,将构建 LLM 应用所需的所有不同部分连接在一起,因此,优先考虑构建一个稳健的集成生态系统对他们来说非常重要。

大约一个月前,LangChain 开始进行一些改变,他们认为这将提升集成的稳健性、稳定性、可扩展性以及一般开发者的体验。他们将所有第三方集成分离到 langchain-community 中 —— 这使得他们能够集中处理特定于集成的工作。他们还开始将单独的集成分离到它们自己的包中。到目前为止,他们已经对大约 10 个包进行了这样的处理,包括 OpenAI、Google 和 Mistral。

其中一个好处是更好的依赖管理 —— 以前,所有依赖都是可选的,这在尝试安装特定版本时会导致一些困扰。现在,如果集成位于它们自己的包中,LangChain 可以更严格地对它们的需求进行版本控制,从而简化安装过程。

另一个好处是版本控制。通常情况下,第三方集成会有变化,需要进行重大更改。现在,这些更改可以在独立的集成包中以适当的版本控制反映在单个集成的基础上。

可观察性

构建 LLM 应用涉及到在系统核心放置一个非确定性组件。这些模型往往会产生意想不到的结果,因此,能够清晰地了解系统内部确切发生的情况极为重要。

官方团队希望使 langchain 尽可能具有可观察性和可调试性,无论是通过架构决策还是他们构建的辅助工具。

他们通过几种方式着手解决这一问题。

他们的主要方式是构建了 LangSmith。LangSmith 提供的主要价值之一是为你的 LLM 应用提供一流的调试体验。它准确地记录下每个步骤发生的情况、每个步骤的输入、输出、所需时间以及更多数据。它以用户友好的方式展示这些信息,让你能够识别哪些步骤耗时最长、进入一个沙盒环境来调试意外的 LLM 响应、跟踪 token 使用情况等。

即使在私人测试版中,对 LangSmith 的需求也是压倒性的,LangChain 正在投入大量资源提高其可扩展性,以便在未来几个月发布公开测试版,然后普及应用。他们也已经支持企业版本,该版本为具有严格数据隐私策略的企业提供 VPC 内部署。

LangChain 还通过其他方式解决了可观察性问题。他们长期以来一直内置了 verbose 和 debug 模式,用于整个管道中不同级别的日志记录。他们最近引入了可视化你创建的 chain 的方法,以及获取所有使用的提示的方法。

可组合性

LangChain 表示,虽然预构建的 chain 有助于上手,但他们经常看到有些团队希望跳出这些架构,并定制他们自己的 chain。不仅是定制提示,还包括定制编排的不同部分。

这也为 LLM 工作负载带来了一些独特的好处 —— 主要是针对 LLM 的可观察性以及流式处理(sreaming)。

在过去的几个月里,官方团队大力投入了 LangChain 表达式语言(LCEL)的开发。LCEL 允许组合任意序列,提供了类似于数据工程管道中数据编排工具的许多优势,包括 batching、并行化和 fallback 等功能。

用于 LCEL 的组件位于 langchain-core 中。官方已经开始为 LangChain 中特定的 chain 创建更高级别的入口点。这些将逐渐取代原有(现在称为「Legacy」)的 chain,因为使用 LCEL 构建的 chain 将自带流式处理、易定制性、可观察性、batching、retries 等功能。LangChain 的目标是使这一转变无缝进行。以前你可能会这样做:

ConversationalRetrievalChain.from_llm(llm,)

现在做法更简单了:

create_conversational_retrieval_chain(llm,

在幕后,它将创建一个特定的 LCEL chain 并返回它。如果你想修改逻辑 —— 没问题,因为它全部用 LCEL 编写,所以在不需要对任何东西进行子类化或覆盖任何方法的情况下,修改其中的一部分是很容易的。

LangChain 中有很多 chain,其中许多都被广泛使用。官方表示他们不会废弃遗留版本的 chain,直到存在一个可以用来替代的构造函数,并且该函数已被使用并经过良好测试。

流式处理

LLM 有时可能需要一段时间才能响应。向终端用户展示工作正在进行,而不是让他们盯着空白屏幕,这一点很重要。这可以通过从 LLM 流式传输 token 或流式传输中间步骤的形式实现(如果 chain 或智能体运行时间较长的话)。

LangChain 对这两个方面都进行了深入的开发和优化工作。所有用 LCEL 构建的 chain 都提供了标准的 stream 和 astream 方法,官方也做了大量工作以确保流式处理不仅仅局限于 LLM 调用(例如,在输出解析器中)。所有 chain 还提供了一个标准的 astream_log 方法,它能够流式传输 LCEL chain 中的所有步骤。然后可以对这些步骤进行筛选,以轻松获取中间步骤所采取的操作和其他信息。

在大多数 LLM 应用中,流式处理(包括 token 和中间步骤)是一个关键的用户体验组成部分。而使用 LangChain,你可以免费获得这一功能。

输出解析

LangChain 的一个主要用例是「工具使用」—— 使用 LLM 来调用其他工具。

确保 LLM 以一种结构化的格式返回信息,使得信息可以在下游应用中使用,对于让 LLM 采取行动至关重要。

官方在围绕这一点的开发者体验上投入了大量资源,特别是在输出解析器的概念上。实现这一点的一个主要方法是使用 OpenAI 函数调用。他们不仅简化了指定输出格式(使用 Pydantic、JSON schema 甚至是一个函数),而且简化了处理响应。当你想要使用不支持 OpenAI 函数调用的模型并转而使用提示时,LangChain 还支持几种不同的编码方法(JSON、XML、Yaml)。当你使用提示时,还需要适当的指令来告诉 LLM 如何响应 —— 所有输出解析器都配备了 get_format_instructions 方法来获取这些指令。

他们还围绕输出解析器设计了更高级的功能,例如允许它们在生成时流式传输部分结果,以改善用户体验。这包括从结构化格式(如 JSON、XML 和 CSV)中流式传输部分结果。在输出解析方面,这有时可能是棘手的 —— 为了解析一个 JSON 块,大多数 JSON 解析器需要一个完整的 JSON 块。LangChain 的许多输出解析器包含了内置逻辑来进行这种部分解析。

检索

LangChain 开发者主要构建的一种应用类型是那些能够与他们自己的私有数据进行交互的应用程序。

能够轻松地将你的数据与 LLM 结合起来是 LangChain 的一个非常重要的部分。

这通常涉及两个不同的组件 —— 摄取(准备数据)和检索(检索数据),LangChain 已经构建了这两个组件。

在数据摄取方面,摄取的一个重要部分是将你正在处理的文本分割成块。虽然这看起来可能微不足道,但最佳的分割方式通常是微妙的,并且通常特定于你正在处理的文档类型。LangChain 有 15 种不同的文本分割器,一些针对特定文档类型(如 HTML 和 Markdown)进行了优化,以便开发者最大限度地控制这一过程。然而,相关数据通常是在变化的,LangChain 的摄取系统是为生产、规模化应用而设计的。他们提供了一个索引 API,允许你重新摄取内容,同时忽略那些没有改变的部分,这可以为大容量工作负载节省时间和成本。

在检索方面,他们设计了更先进的方法,同时也使检索更适合生产环境。他们实现了来自学术界的高级检索策略(如 FLARE 和 Hyde),创造了他们自己的策略(如 Parent Document 和 Self-Query),并改编了一些来自其他行业解决方案的策略(如 Multi-Query)。他们还特别支持了生产环境中的需求,例如针对每个用户的检索,这对于将多个用户的文档存储在一起的任何应用程序来说都是至关重要的。

值得注意的是,虽然 LangChain 提供了构建高级检索系统的所有必要组件,但他们对具体实现方式并不固执己见,这也促使许多其他库在 LangChain 的基础上进行构建,以提供更有特色的检索方法,例如 EmbedChain 和 GPTResearcher。

智能体

LangChain 最早出名的东西之一是智能体工作负载。这可能包括两个方面:

1. 工具使用:让 LLM 调用函数或工具;

2. 推理:如何以最佳方式让 LLM 多次调用工具,以及以什么顺序调用(或者根本不调用工具)。

在工具使用方面,LangChain 大致介绍了他们认为至关重要的组件:

1. 与大量第三方工具的集成;

2. 构建 LLM 响应以适配这些工具输入模式的方法;

3. 提供了一种灵活的方法,允许用户自定义调用这些工具的方式(LCEL)。

在推理方面,LangChain 有几种不同的「智能体」方法,这些方法主要可以被看作是 LLM 在循环中运行,每次迭代决定它需要调用哪个工具,然后观察该工具的结果。LangChain 从一开始就集成了 ReAct(一种早期的用于此目的的提示策略),并且很快添加了许多其他类型,包括那些使用 OpenAI 函数调用的、使用他们的新工具调用 API 的、为对话优化的类型等等。

通过灵活和可扩展的工具支持和先进的推理能力,LangChain 已经成为使 LLM 采取行动的默认方式。

与检索类似,虽然 LangChain 提供了构建智能体的基础模块,但也可以看到基于 LangChain 构建的几个更有特色的框架。其中一个很好的例子是 CrewAI,它在 LangChain 之上构建,为多智能体工作负载提供了一个更简单的界面。

LangChain 0.2

虽然 LangChain 0.1 版本刚刚才发布,但其实官方团队已经在考虑 0.2 版本了。一些重要的改进包括:

  • 用 LCEL 重写遗留 chain(提供更好的流式处理和调试支持);

  • 添加新类型的 chain;

  • 添加新类型的智能体;

  • 改进生产场景的摄取能力;

  • 移除旧的和未使用的功能。

One More Thing

LangChain 受欢迎的主要原因之一是它对智能体的支持。大多数智能体主要定义为以某种循环方式运行 LLM。到目前为止,他们实现这一点的唯一方式是使用 AgentExecutor。他们为 AgentExecutor 添加了很多参数和功能,但它仍然只是运行循环的一种方式。

在新版本中,LangChain 官宣了 langgraph,这是一个可以将语言智能体创建为图的新库。

这将允许用户创建更加定制化的循环行为。你可以定义明确的计划步骤、明确的反思步骤,或者轻松地硬编码,以便始终首先调用特定的工具。值得注意的是,这不是一个 DAG 框架。如果你想构建一个 DAG,你应该直接使用 LangChain 表达式语言。

它的灵感来自于 Pregel 和 Apache Beam。目前公开的接口受到 NetworkX 的启发,看起来像这样:

from langgraph.graph import END, Graphworkflow = Graph()workflow.add_node("agent", agent)
workflow.add_node("tools", execute_tools)workflow.set_entry_point("agent")workflow.add_conditional_edges("agent",should_continue,{"continue": "tools","exit": END}
)workflow.add_edge('tools', 'agent')chain = workflow.compile()

LangChain 表示,他们过去六个月一直在研发这个功能,并且与用户进行了 Beta 测试。它目前支持 OpenGPTs。

参考链接:

https://blog.langchain.dev/langchain-v0-1-0/

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

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

相关文章

oracle角色管理

常用角色 CONNECT,RESOURCE,DBA,EXP_FULL_DATABASE,IMP_FULL_DATABASE 1角色可以自定义,语法与创建用户一样 CREATE role role1 IDENTIFIED by 123; 2授权权限给角色 --自定义角色 CREATE role role1 IDENTIFIED by 123; --授权权限给角色 GRANT create view, …

AI人工智能从业人员《自然语言及语音处理设计开发工程师》证书专项培训(第二期)通知!

工业和信息化部电子工业标准化研究院联合北京龙腾亚太教育咨询有限公司和北京龙腾智元信息技术有限公司于2024年1月成功在京举办AI人工智能从业人员《自然语言及语音处理设计开发工程师》证书专项培训第一期课程,所有学员成功通过考试。介于学员的良好反应&#xff…

设置flex布局的元素,其子元素宽度和超过其本身时,其宽度值未被撑起问题

如图父元素main-content设置了display:flex. 里面包含了不确定个数的子元素,子元素样式为: flex: 1; min-width: 240px;现在想获取父元素的宽度,发现无论子元素的个数为多少,父元素的宽度都是一样的大小,并没有被子元…

Docker与微服务实战(基础篇)

Docker与微服务实战(基础篇) 1、Docker简介2、Docker安装步骤1.Centos7及以上的版本2.卸载旧版本3.yum安装gcc相关4.安装需要的软件包5.设置stable镜像仓库【国内aliyun】6.更新yum软件包索引--以后安装更快捷7.安装Docker-Ce8.启动Docker9.测试10.卸载1…

Socket closed 异常解决方案:如何解决 JMeter 压测中的问题

问题描述 JMeter 压测时会报 java.net.SocketException: Socket closed java.net.SocketException: Socket closed at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.ne…

Temu、Shopee、Lazada等跨境流量如何提升?买家号如何批量养号?

现在在temu、Lazada、shopee等跨境电商平台开店的商家越来越多。如果商家想让商店的产品得到更多的展示,流量是必不可少的,平台的流量入口主要有几个板块。 让我们谈谈temu、Lazada、shopee搜索流量如何提升,有什么方法。 有两种方法可以在短…

usb转32串口方案

方案结构图 使用usb hub芯片扩展4路usb然后再一分八路串口 USB hub 选择hub芯片注意事项: 目前市场上多数的USB 2.0 Hub芯片,只有内建一个Transaction Translators(STT),因此 当Hub接收到如Full Speed的装置进入时,12Mbps的「单一」信道…

使用Moonbuilders Academy平台,学习DApp开发

Moonbeam团队于2022年宣布开放Moonbuilders Academy。这是一套以开发为中心的异步学习课程,用于学习如何在Moonbeam上构建跨链DApp。 如何从官网进入平台? 点击http://moonbeam.network 鼠标移动至 “Builders”,在Resources下方选择“Moo…

2024腾讯爱奇艺首发片单,谁能率先拿下开年爆款?

刚进入2024年,头部长视频平台就开启了新一轮“内卷”。 腾讯和爱奇艺不约而同地在2024年的第一天发布了新剧片单,多部高质量精品大剧蓄势待发,点燃了观众和市场的期待。 2023年之争已经落下帷幕,爱奇艺凭借大爆剧《狂飙》拔得头…

Next City 数都上海应用创新大赛结果公布,子虔科技获奖

12月16日,以“应变求机 以数谋新”为主题的上海城市数字化转型体验周举办。作为上海城市数字化转型年终重磅活动,上海市人民政府副秘书长庄木弟,市经济和信息化工作党委书记程鹏,杨浦区委副书记、区长周海鹰,市经济和信…

Apache ActiveMQ 远程代码执行漏洞分析

漏洞简介 Apache ActiveMQ官方发布新版本,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …

统信UOS虚拟机安装VirtualBox扩展使用USB功能

为什么要安装VirtualBox扩展包? 安装 Oracle VM VirtualBox 扩展包的原因是,它提供了对 USB 2.0、USB 3.0、远程桌面协议 VRDP(VirtualBox Remote Desktop Protocol)等实用功能的支持,以增强 VirtualBox 的功能。这些…

HarmonyOS 应用开发学习笔记 ets组件生命周期

HarmoryOS Ability页面的生命周期 Component自定义组件 ets组件生命周期官放文档 本文讲解 ets组件的生命周期,在此之前大家可以先去了解Ability的生命周期,这两个生命周期有有一定的关联性 在开始之前,我们先明确自定义组件和页面的关系&…

RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用

目前国内外研究人员对于RPA机器人在财务管理流程优化领域中的应用研究层出不穷,但现有研究成果主要集中在财务业务单一领域,缺乏财务管理整体流程一体化管控的研究。RPA机器人的功能绝非单一的财务业务处理,无论从自身技术发展,或…

常见的Latex公式所用到的内容汇总

行内公式 f ( x ) a b f(x)ab f(x)ab 左右各加一个$,即为行内公式 $ f(x) ab $行间公式 $$ f(x) ab $$f ( x ) a b f(x)ab f(x)ab 手动编号 $$ f(x) a - b \tag{1.1} $$f ( x ) a − b (1.1) f(x)a-b \tag{1.1} f(x)a−b(1.1) 简单运算 -*/以及阿拉伯…

为什么大型服务器要用 Linux 系统?

为什么大型服务器要用 Linux 系统? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!&#xff…

创新百喻,综合性思维和分析性思维

创新百喻,综合性思维和分析性思维 不知道您注意没有,在创新中,人们的思维方式是不一样的,有综合性思维和分析性思维之分。总的来说,综合性思维适合创造原来没有的事物,而分析性思维擅长改进和提高&#xf…

两周掌握Vue3(一):安装、打包、目录结构

文章目录 一、安装1.安装node.js和npm(windows)2.安装vue,创建vue项目报错:XXX不是内部或外部命令 二、打包三、目录结构 nodejs版本:v20.10.0 npm版本:v10.2.3 一、安装 1.安装node.js和npm(…

安科瑞电气防火限流式保护器与电动汽车充电桩的搭配使用——安科瑞 顾烊宇

摘要:随着电动汽车行业的不断发展,电动汽车充电设施的使用会变得越来越频繁和广泛。根据中汽协数据显示,2022年上半年,我国新能源汽车产销分别完成266.1万辆和260万辆,同比均增长1.2倍,市场渗透率达21.6%。因此,电动汽…

韩语发音干货,零基础韩语学习,柯桥韩语知识点之发音规律

01.连音化 当收音遇到以元音为首音的音节时,收音要和该元音相连发音。 예: 독일[도길] 밥을 [바블] 우산이[우사니] 읽어요[일거요] 02.送气 ㄱ/ㄷ/ㅂ/ㅈ遇到ㅎ,送气化读成ㅋ/ㅌ/ㅍ/ㅊ 예: 어떻게[어떠케] 좋다[조타] 많지만[만치만] 백화점[배콰…