LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」
原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎
说明:LangServe代替 langchainserver 成为新的langchain 部署工具
官网资料:🦜️🏓 LangServe | 🦜️🔗 Langchain
当前阶段对开发者来讲,一个让人感到舒服的开发流程应该具备这么五特性:
- 支持 LCEL,让人赏心悦目又可以简化开发流程的 dsl 必须支持
- 优雅简洁的 cli ,可以方便的通过 cli 来创建项目骨架、对话式配置需要用到的依赖、变量等
- 「reload」支持,可以边改代码边看到结果
- 改完马上就能看到 demo 的结果,而不是为了看一眼结果转头去调一堆部署细节到头来忘了接下来想干啥...
- 多机多卡集群部署支持,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:
- LangServe 是由 LangChain 团队自己开发,作用跟 jina 的 LangChainServe 类似(估计这也是为啥 jina 把LangChainServe 设成 archived 的原因),技术选型上都差不多但没有绑定特定的云(当然 ta 的 cli 里面倒是率先支持了 gcp)。初步看下来只是更加倾向于 LCEL 了,把 DAG 的每一部分都打散开,做成 web service,更加方便拆开、重组,单这一个点就很吸引人!
- 内置了 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。
- llm 应用其实就是 web 应用,自然没有理由不支持 「--reload」
- 另外一个特点当然就是内置了 「playground」页面,类似 FastAPI 可以随时查看测试 API ,通过这个你可以随时把 每个 runnable 打开看看,调试一下。FastAPI 是通过 http://your-ip:port/docs 或者 redoc 来内置提供了 api 的说明、调试,LangServe 也类似,ta 的入口在 http://your-ip:port/playground
- 没有针对多机多卡的集群环境支持,TBD
总结一下 LangServe 已经非常接近理想中的 llm 应用开发工具了,开发环境的各个步骤分别长这个样子,强烈推荐新项目采用!直观看一下几个开发界面:

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

图二:必不可少的 FastAPI docs

图三:重点是这个,可配置、可 debug 的 playground
跑个题,RAG 的评测还真是很不容易整!主观性墙,量化费劲,量化费劲就意味着不太容易通过升职加薪的答辩 ...
相关文章:
LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」
原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎 说明:LangServe代替 langchainserver 成为新的langchain 部署工具 官网资料:🦜️🏓 LangServe | &…...
mmdet全教程
官方给的文档一言难尽,网上的教程又没有从大纲到源码的完整解读,计划年后开个系列记录一下...
1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS)
1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:分区域汇总:…...
Guava的Retryer
Retryer类是Guava库中的一个重试工具类,它提供了一种在调用方法时自动重试的机制。Retryer类中的call()方法用于执行需要重试的方法,如果方法执行失败,则Retryer会根据配置的规则进行重试。Retryer类可以配置重试的次数、重试间隔时间、重试的…...
Docker实践笔记7:构建MySQL 8镜像
使用Docker构建MySQL 8镜像并运行容器 本教程将指导您使用Dockerfile构建和运行一个MySQL 8容器。让我们开始吧! 步骤1:创建Dockerfile 在您的项目根目录下创建一个名为Dockerfile的文件。以下是Dockerfile的示例内容: # 基于最新的MySQL…...
# 学习 Prolog 和 离散逻辑的16个等价公式:一趟有趣的逻辑之旅
Prolog 的语法很奇怪,需要一些时间来适应,所以我花了点时间,想用Prolot来学习和验证离散逻辑的16组等价公式。 1. 双重否定律 (Double Negation Law) A ⇔A 首先,我们来看看双重否定律。在 Prolog 中,我们可以这样验证它: fun1(A,Z):-memb…...
Win11+Modelsim SE-64 10.6d搭建UVM环境
1、添加源文件及tb文件 在目录下建立文件夹,将DUT和Testbench添加进去,文件夹内容如下所示: 2、以《UVM实战》中的例子做简单的示例: 2.1 设计文件 :dut.sv 功能很简单,即将接受到的数据原封不动发送出去…...
LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)
目录 1.题目2.答案3.提交结果截图4.图解 链接: 串联所有单词的子串 1.题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 w…...
【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案
目录 一、问题背景: 二、实际示例: 三、解决方案: 1. Delphi 代码: 2. javaScript代码: 一、问题背景: 在用Delphi开发程序,无论是移动端还是PC端,都可以很方便的使用TWebBrows…...
04 if进阶
elif 否则如果 如果条件没有满足 会继续进入“否则如果”里面判断 只要满足一个条件 条件判断立即终止 chinese 100 if chinese 100:print("我们去迪士尼玩")elif chinese > 90:print("我们去朱雀森林公园")else:print("回家写作业")if n…...
2023全球数字贸易创新大赛9-12
目录 回答评委提问:先说痛点-再说怎样解决 食品安全溯源是否全流程 星火• 链网...
vue3的两个提示[Vue warn]: 关于组件渲染和函数外部使用
1. [Vue warn]: inject() can only be used inside setup() or functional components. 这个消息是提示我们,需要将引入的方法作为一个变量使用。以vue-store为例,如果我们按照如下的方式使用: import UseUserStore from ../../store/module…...
Ubuntu环境下基于libxl库文件使用C++实现对表格的操作
功能 表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式 相关配置 下载地址:libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64 安装配置 1,使用 tar zxvf 文件名.tar.gz 进行文件解压2,创…...
Sentinel与SpringBoot整合
好的,以下是一个简单的Spring Cloud整合Sentinel的代码示例: 首先,在pom.xml中添加以下依赖: <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel&l…...
如何实现数据通过表格批量导入数据库
文章目录 1. 准备工作2. 创建数据库表3. 编写导入脚本4. 优化和拓展4.1 批量插入的优势4.2 错误处理4.3 数据验证4.4 数据转换 5. 总结 🎉如何实现数据通过表格批量导入数据库 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&…...
(动手学习深度学习)第13章 计算机视觉---微调
文章目录 微调总结 微调代码实现 微调 总结 微调通过使用在大数据上的恶道的预训练好的模型来初始化模型权重来完成提升精度。预训练模型质量很重要微调通常速度更快、精确度更高 微调代码实现 导入相关库 %matplotlib inline import os import torch import torchvision f…...
训练跳跃(青蛙跳台阶),剑指offer,力扣
目录 题目地址: 题目: 青蛙跳台阶问题 我们直接看题解吧: 相似题目,斐波那契数列: 解题方法: 难度分析: 审题目事例提示: 解题思路: 代码实现: 小鸡识补充 题…...
Linux中路由route
route 显示当前路由表信息 route add -net 192.168.10.0 netmask 255.255.255.0 dev ens160去往192.168.10.0/24网段的路由通过ens160网卡出去add 添加路由(del表示删除路由)-A 设置地址类型(默认ipv4 配置ipv6地址时:-A …...
美国国家安全实验室员工详细数据在网上泄露
一个从事出于政治动机的攻击的网络犯罪组织破坏了爱达荷国家实验室(INL)的人力资源应用程序,该组织周日在电报上发帖称,已获得该核研究实验室员工的详细信息。 黑客组织 SiegedSec 表示,它已经访问了“数十万用户、员…...
一石激起千层浪,有关奥特曼被炒的消息引发了一场热烈的讨论
在毫无征兆的情况下,OpenAI CEO山姆-奥特曼被炒了。 一石激起千层浪,有关奥特曼被炒的消息引发了一场热烈的讨论。 有人将其看成是一场「宫斗」,有人将其看成是OpenAI的董事会与创始人们的一次纠偏。 无论如何,这样一件看似并无…...
测试数据管理:打造高质量、合规、可复用的数据工厂
测试数据的“石油危机”在软件测试的日常中,我们时常陷入这样的困境:自动化脚本因一条过期订单数据而大面积飘红;性能测试因数据量不足而无法模拟真实峰值;安全测试因缺乏脱敏数据而被迫在“裸奔”的环境里小心翼翼。这些问题的根…...
OCAuxiliaryTools:如何快速配置OpenCore黑苹果的完整指南
OCAuxiliaryTools:如何快速配置OpenCore黑苹果的完整指南 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools OCAuxiliaryTo…...
3步实现Honey Select 2汉化:HS2-HF_Patch完整安装指南
3步实现Honey Select 2汉化:HS2-HF_Patch完整安装指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日文界面而困扰吗&…...
深度学习中的张量运算:核心原理与工程实践
1. 张量运算:AI世界的通用货币第一次接触张量这个概念是在研究生时期的数值分析课上,教授用"高维数组"一笔带过这个概念。直到后来真正开始做计算机视觉项目,我才意识到张量在AI领域的核心地位——它就像深度学习领域的"通用货…...
终极 electron-react-boilerplate 包大小优化指南:构建产物深度分析与高效瘦身方案
终极 electron-react-boilerplate 包大小优化指南:构建产物深度分析与高效瘦身方案 【免费下载链接】electron-react-boilerplate A Foundation for Scalable Cross-Platform Apps 项目地址: https://gitcode.com/gh_mirrors/el/electron-react-boilerplate …...
python新手福音,快马ai带你轻松上手第一个pycharm实战项目
作为一个刚接触Python的新手,第一次打开PyCharm时确实有点懵。复杂的界面、各种专业术语,还有那些看不懂的选项,让我一度想放弃。直到发现了InsCode(快马)平台,它帮我生成了一个特别适合新手的个人记账本项目,让我终于…...
使用Hermes Agent时如何正确配置Taotoken作为自定义供应商
使用Hermes Agent时如何正确配置Taotoken作为自定义供应商 1. 准备工作 在开始配置之前,请确保您已经完成以下准备工作。首先,您需要拥有一个有效的Taotoken账户,并在控制台中创建了API Key。其次,您需要在模型广场查看并记录下…...
告别‘一次性’校验:C语言CRC32流式处理详解与内存优化技巧
告别‘一次性’校验:C语言CRC32流式处理详解与内存优化技巧 在嵌入式系统和IoT设备中,处理大文件或持续数据流时,传统的"一次性加载全部数据"校验方式往往面临内存瓶颈。想象一下,当你的8KB RAM单片机需要校验一个2MB的…...
魔兽争霸3兼容性终极解决方案:5分钟让经典游戏在Windows 10/11完美运行
魔兽争霸3兼容性终极解决方案:5分钟让经典游戏在Windows 10/11完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在…...
命令行与微信集成:运维自动化通知与交互式助手实战
1. 项目概述:当命令行遇上微信 作为一名长期在运维和开发一线摸爬滚打的工程师,我每天打交道最多的就是命令行终端。从服务器部署、日志排查到自动化脚本, bash 、 zsh 和各类 CLI 工具是我的左膀右臂。然而,一个现实痛点始终…...
