重磅!大模型框架 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, Graph

workflow = 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/

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

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

相关文章

报错解决:RuntimeError: Error building extension ‘bias_act_plugin‘

系统: Ubuntu22.04, nvcc -V:11.8 , torch:2.0.0cu118 一:BUG内容 运行stylegan项目的train.py时遇到报错👇 Setting up PyTorch plugin "bias_act_plugin"... Failed! /home/m…

认知能力测验,⑦如何破解类比推理类测试题?

关于认知能力测评,今天这稿算是最后一篇,一共写了7篇,分别是数字推理、逻辑思维、语言常识、数量关系、图形推理、逻辑判断、和类比推理。 不论是校招、社招、网申、还是行测,在线人才测评已经是普遍普及的想象,而认知…

从源码角度来谈谈 HashMap

HashMap的知识点可以说在面试中经常被问到,是Java中比较常见的一种数据结构。所以这一篇就通过源码来深入理解下HashMap。 1 HashMap的底层是如何实现的?(基于JDK8) 1.1 HashMap的类结构和成员 /** HashMap继承AbstractMap,而AbstractMap又实现了Map的…

深入了解网络流量清洗--使用免费的雷池社区版进行防护

​ 随着网络攻击日益复杂,企业面临的网络安全挑战也在不断增加。在这个背景下,网络流量清洗成为了确保企业网络安全的关键技术。本文将探讨雷池社区版如何通过网络流量清洗技术,帮助企业有效应对网络威胁。 ![] 网络流量清洗的重要性&#x…

一个简单的MIPS-常见MIPS指令

ALU操作 这些指令用于执行算术和逻辑操作: ADDU(无符号加法):将寄存器 rs 和 rt 的内容相加,结果存储在 rd 寄存器中。SUBU(无符号减法):从寄存器 rs 减去寄存器 rt 的内容&#x…

RAG 最新最全资料整理

最近在做RAG方面的工作。它山之石可以攻玉,做了一些调研,包含了OpenAi,百川,iki.ai为我们提供的一些实现方案。 本文以时间顺序,整理了最近最新最全的和RAG相关的资料。都是满满的干货,包含了RAG评测工具、…

C语言实例_string.h库函数功能及其用法详解

一、前言 在计算机编程中,字符串处理是一项常见而重要的任务。C语言的string.h头文件提供了一系列函数和工具,用于对字符串进行操作和处理。这些函数包括字符串复制、连接、比较、查找等功能,为开发人员提供了强大的字符串处理能力。本文将对…

国际版WPS Office18.6.0

​【应用名称】:WPS Office 【适用平台】:Android 【软件标签】:WPS 【应用版本】:18.5.4 → 18.6.0 【应用大小】:160MB 【软件说明】:WPS Office是使用人数最多的移动办公软件。它具有独有手机阅读…

Spark 初级编程实践

什么是Spark? Spark是一个快速、通用、可扩展的大数据处理引擎,最初由加州大学伯克利分校的AMPLab开发。它提供了高级API,用于在大规模数据集上执行并行处理。Spark支持多种编程语言,包括Java、Scala、Python和R,因此被广泛应用于大数据分析和机器学习等领域。 一、目的 …

Cloud模型matlab

学习资料python 多维正态云python 预备知识: 如何获取具有特定均值和方差的正态分布随机数。首先,初始化随机数生成器,以使本示例中的结果具备可重复性。 rng(0,twister);基于均值为 500 且标准差为 5 的正态分布创建包含 1000 个随机值的向…

QT应用篇:QT解析与生成XML文件的四种方式

四种常见的解析 XML 的方式(DOM、SAX、以及基于 Qt 的 XmlStreamReader)各有自己的优缺点,适合不同的应用场景。 DOM 适合小型且结构简单的 XML 文件,需要频繁修改和操作整个文档结构的情况。SAX 适合大型 XML 文件,以及只需读取不需要修改的情况。基于 Qt 的 XmlStreamRe…

Excel5:自动化周报的制作

自动化周报的数据引用来源于8月成交数据-纯数值表格,因为8月成交数据表格中部分单元格中有vlookup函数,且存在跨表连接。 对于跨表连接的解释和说明? 首先打开我们之前做好的成交数据。打开后我们可以看到这上面出现了一个安全警告&#xff0…

第57、58颗北斗导航卫星发射成功

第57、58颗北斗导航卫星发射成功! 12月26日11时26分,我国在西昌卫星发射中心用长征三号乙运载火箭与远征一号上面级,成功发射第57、58颗北斗导航卫星。 这组卫星属中圆地球轨道卫星(MEO卫星),是我国北斗三…

新年新风貌 苏州金龙蔚蓝公交护航高贸区“效率巴士”!

1月4日,由苏州市公交集团园区公司与园区高贸区管委会联合推出的4条“高贸区效率巴士”正式开行,这四条线路惠及包括苏州群策科技有限公司、荣旗工业科技有限公司等在内的20余家高贸区重点企业。线路开行5天来,效率巴士让不少企业员工感受到了…

kubernetes ResourceQuotas Limits(资源配额)

开头语 写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 内容较长,页面右上角目录方便跳转 简介 当多个用户或团队共享具有固定节点数目的集群时,人们会…

AI人工智能虚拟现实行业发展分析

AI人工智能和虚拟现实是当今科技领域最受关注和研究的两个领域。这两项技术的迅速发展给各行各业带来了巨大的变革和机遇。在过去的几年里,AI和虚拟现实已经取得了显著的进展,并且有着广阔的发展前景。 AI人工智能作为一种模拟人类智能的技术&#xff0…

web端播放rtsp视频流(摄像头监控视频)教程

文章目录 前言一、ffmpeg是什么?二、ffmpeg安装1.下载2.安装 三、node搭建websocket服务四、web客户端播放视频 前言 像海康大华一些摄像头或者直播源 为rtsp视频流,想在web上播放必须进行协议转换。已知一些方案例如rtsp转rtmp需要flash,现…

vue3中路由的使用(详细讲解)

1、路由的简介 路由(route):就是根据特定的规则将数据包或请求从源地址传输到目标地址的过程。 在前端或者vue3项目中路由主要用于构建单页面应用程序(SPA),其中所有的页面都在同一个HTML文件中加载,通过JavaScript动…

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

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

团结引擎 | 发布微信小游戏的那些坑

问题1 问题:Failed to download file Build/安装包.framework.js.unityweb. Loading web pages via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host content, or use the Build and Ru…