LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」

原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎

说明:LangServe代替 langchainserver 成为新的langchain 部署工具

官网资料:🦜️🏓 LangServe | 🦜️🔗 Langchain

当前阶段对开发者来讲,一个让人感到舒服的开发流程应该具备这么五特性:

  1. 支持 LCEL,让人赏心悦目又可以简化开发流程的 dsl 必须支持
  2. 优雅简洁的 cli ,可以方便的通过 cli 来创建项目骨架、对话式配置需要用到的依赖、变量等
  3. 「reload」支持,可以边改代码边看到结果
  4. 改完马上就能看到 demo 的结果,而不是为了看一眼结果转头去调一堆部署细节到头来忘了接下来想干啥...
  5. 多机多卡集群部署支持,llm 时代就是大数据时代,真正有意义的生产级部署面临的数据预处理、数据并行、参数并行、推理并行都不是单机的思路可以解决的,所以仅仅针对单机环境优化的开发工具除了自嗨没有意义

让人惊喜的是 LangServe 已经完成了前四个,第五个且再看。

LangServe 是 LangChain 的 Eugene Yurtsev 帅哥主刀开发的一个快速开发应用框架,跟 LangChain 的关系有点类似于 Flask/FastAPI 之于 Django 的关系,ta 自己 github 上的介绍是 「LangServe helps developers deploy LangChain runnables and chains as a REST API.」,其中 runnable 就是「人民群众最喜欢的 LCEL」的基本构成模块,LangServe 刚开始开发还没「满月」,git 上的第一条 commit 是 9 月 29 号,以至于 langserve.ai 域名都还没人抢注(只能帮到这儿了.... ;)

说实话头一次看到 LangServe 我还以为是 LangChainServe,以至于名字看过几回都没仔细研究 ta,jina-ai 的 LangChainServe 挺好的,由 Jina 开发并开源出来,方便大家把写好的 LangChain 服务放到 Jina 云上去,毕竟 Jina 本身就是从 BERT-as-a-service 开始的,把机器学习中的服务独立放出来是它家看家本领。

看一下 LangServe 的 Features:

  1. LangServe 是由 LangChain 团队自己开发,作用跟 jina 的 LangChainServe 类似(估计这也是为啥 jina 把LangChainServe 设成 archived 的原因),技术选型上都差不多但没有绑定特定的云(当然 ta 的 cli 里面倒是率先支持了 gcp)。初步看下来只是更加倾向于 LCEL 了,把 DAG 的每一部分都打散开,做成 web service,更加方便拆开、重组,单这一个点就很吸引人!
  2. 内置了 langchain cli,通过运行 「langchain your-project」就可以像运行 「django-admin startproject mysite」写 web 一样的方式写 llm 应用!更进一步,在生成项目骨架之后, LangServe 提供了 makefile 脚本,方便通过 make start/deploy/test 等指令快速部署,当前版本的部署实现是通过 uvicorn 来做的,云端方面内置了 gcp 的支持。由于整个开发包是通过 poetry 管理的,你会发现如果你想把你开发的 llm 应用通过 pypi 放出去简直不要太简单,因为 poetry 内置了针对 pypi 的支持,想发布 package 到 pypi 你要做的就是去申请一个账号,然后在本地 poetry release。
  3. llm 应用其实就是 web 应用,自然没有理由不支持 「--reload」
  4. 另外一个特点当然就是内置了 「playground」页面,类似 FastAPI 可以随时查看测试 API ,通过这个你可以随时把 每个 runnable 打开看看,调试一下。FastAPI 是通过 http://your-ip:port/docs 或者 redoc 来内置提供了 api 的说明、调试,LangServe 也类似,ta 的入口在 http://your-ip:port/playground
  5. 没有针对多机多卡的集群环境支持,TBD

总结一下 LangServe 已经非常接近理想中的 llm 应用开发工具了,开发环境的各个步骤分别长这个样子,强烈推荐新项目采用!直观看一下几个开发界面:

图一:项目骨架内置的快速开发指令

图二:必不可少的 FastAPI docs

图三:重点是这个,可配置、可 debug 的 playground

跑个题,RAG 的评测还真是很不容易整!主观性墙,量化费劲,量化费劲就意味着不太容易通过升职加薪的答辩 ...

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

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

相关文章

【SpringBoot】ThreadLocal 的详解

一、ThreadLocal 简介 ThreadLocal 叫做线程变量,意思是 ThreadLocal 中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal 为变量在每个线程中都创建了一个副本,那么每个线…

企业如何选择一款高效的ETL工具

企业如何选择一款高效的ETL工具? 在企业发展至一定规模后,构建数据仓库(Data Warehouse)和商业智能(BI)系统成为重要举措。在这个过程中,选择一款易于使用且功能强大的ETL平台至关重要,因为数…

Android:Google三方库之Firebase集成详细步骤(一)

前提条件 安装最新版本的 Android Studio,或更新为最新版本。使用您的 Google 账号登录 Firebase请注意,依赖于 Google Play 服务的 Firebase SDK 要求设备或模拟器上必须安装 Google Play 服务 将Firebase添加到应用: 方式:使用…

智慧工地综合管理平台-环境监测子系统概要设计说明书

需求说明 原始背景 由于城市建设和工业化进程的加速,工地施工过程中的部分环节由于监管不到位,导致工地扬尘污染问题日益严重,对人类健康和环境质量造成了不可忽视的影响。为了解决这一问题,政府部门和相关企业逐渐意识到了建立工地扬尘监测系统的必要性和紧迫性,因此,环…

运行代码时不同软件的参数写法

目录 pycharm终端 pycharm 如下图所示,不同参数间不需要什么间隔什么东西 终端 如下图所示,不同参数间需要用一个符号来间隔

npm ERR!问题解决

问题一 解决办法 两个文件夹【node_global】和【node_cache】 修改文件属性 问题二 解决办法 安装淘宝镜像 npm config set registry https://registry.npm.taobao.org 查看是否成功: npm config get registry 是淘宝的就ok

腾讯三季度财报解读:AI大模型成下个十年的新支点?

2023年,腾讯重回高增长轨道。 近日,腾讯披露了2023年第三季度财报,营收1546.25亿元,同比增长10%;非国际通用会计准则下的净利润为449.21亿元,同比增长39%。此前两个季度,腾讯的营收、净利润增速…

DependencyProperty.Register:wpf 向别的xaml传递参数

一.使用背景:在A.xaml中嵌入B.xaml,并且向B.xaml传递参数。 函数介绍: public static DependencyProperty Register(string name, Type propertyType, Type ownerType );name(string): 依赖属性的名称。在…

Tekton — 通过tekton-operator部署tekton组件

文章目录 版本信息部署准备安装卸载tekton组件 Tektoncd Operator 作为一个 Kubernetes 的扩展,可以方便快捷地在 Kubernetes 集群上安装、升级和管理 Tekton Pipelines、Dashboard、Triggers 等组件。 那么本篇文章介绍在K8S集群中如何通过tekton-operator部署Tekt…

SAE 2.0,让容器化应用开发更简单

云布道师 云原生这个概念从提出,到壮大,再到今天的极大普及,始终处于一个不断演进和革新的过程中。云原生体系下应用的托管形态是随着企业应用架构在不断演进的。最早的应用大多是集中式、单体式的,应用通过优雅的分层来实现领域…

七牛云产品使用介绍之Kodo篇

前不久刚参加完七牛云举办的第二届1024创作节(虽然只是我单方面的被各方大佬碾压) 赛题是网页短视频应用开发,要求作品中使用七牛云的相关产品,于是我决定分享下七牛云产品的使用(这么好用的产品很难忍住不想分享的心情…

易货:一种新型的商业模式

随着经济的发展和社会的进步,人们对于交易的需求和方式也在不断变化。传统的商业模式已经无法满足人们对于多元化、个性化、高效的需求。在这样的背景下,易货模式逐渐走进人们的视野,成为一种新型的商业模式。 易货模式是一种以物换物的交易方…

提升企业人效,从精细化考勤管理开始

过去,许多企业提到考勤管理,只能关联到打卡、请假、算薪这些简单的事务性流程。随着越来越多企业希望通过数字化转型来提升运营效率,实现精细化人员管理。考勤数据的作用也不再仅限于算薪,而是成为了企业分析人效的关键因子。因此…

产品经理的具体工作职责有什么?

产品经理是现代企业中非常重要的一种职位,其工作职责也非常广泛和复杂。产品经理需要在市场、用户、技术等多个方面进行综合考虑,为企业开发出具有竞争力的产品,从而推动企业的发展。下面我们将详细介绍产品经理的具体工作职责。 一、市场调研…

如何正确复制CSDN文章到自己的博客

1.csdn 文章页面,按f12打开浏览器开发者工具 2.按ctrl f 找 "article_content" 3.在该元素源代码上右键 “Copy”->“Copy element” 4.新建一个txt文件,把你粘贴的东西复制进去,然后再把文件名的后缀改为html,然后打开html文件,把里面的内容ctrlA全部…

PHP如何持续监听Redis的消息订阅并推送到前端?

PHP如何持续监听Redis的消息订阅并推送到前端? 概述: 在许多Web应用程序中,实时推送消息是很常见的需求。当我们需要向前端实时发送消息时,往往会使用轮询或长轮询的方式去获取最新数据。但这种方式对服务器资源的消耗较大,同时响…

Linux 中 .tar 和 tar.gz 的区别

1、前言 有时候你会发现,即便是有些拥有 3 年左右工作经验的运维或开发工程师对 .tar 和 .tar.gz 的区别并不是很清楚。.tar 和 .tar.gz 是在 Linux 系统中用于打包和压缩文件的两种常见格式。它们之间的主要区别在于压缩算法和文件扩展名。 2、区别 .tar .tar 是…

电商领域的三大沉疴难题?实在智能RPA来帮你药到病除!

在电商市场规模迅速扩大的当下,厂家们为了保持自身的竞争力,纷纷走上了数智化转型的道路,明白学会使用自动化利器才是制胜之道。 如今从产业的生产线到运营商、物流运输、商品售前、商品售后,实在RPA在电商平台的应用已经十分广泛…

Less精简直接上手,纯干货教程

目录 介绍 安装插件 入门使用测试 ​编辑 less变量 介绍 less作为一门CSS扩展语言,也就是说CSS预处理器。(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量、函数、作用域等等…

java springboot测试类鉴定虚拟MVC运行值与预期值是否相同

好 上文java springboot在测试类中构建虚拟MVC环境并发送请求中 我们模拟的MVC环境 发送了一个请求 我们这次需要 对比 预期值和运行值是否一直 这里 我们要用一个 MockMvcResultMatchers 他提供了非常多的校验类型 例如 请求有没有成功 有没有包含请求头信息 等等 这里 我们做…