AI大模型探索之路-应用篇8:Langchain框架LangServe模块-专注于AI模型的部署

目录

前言

一、概述

二、功能特性

三、REST API 开发

四、Postman调用测试

五、Client调用测试

总结


前言

随着AI大语言模型(LLM)的技术的不断演进,AI应用的开发和部署变得越来越复杂。在这样的背景下,LangServe应运而生——一个旨在简化AI服务部署和运维的框架。专为大模语言模型(LLM)的部署和管理而设计;本篇旨在讲解LangServe的功能特点和实践运用。


一、概述

LangServe 则提供了一整套将LLM部署成产品服务的解决方案。它可以将 LLM应用链接入到常见的Python的 Web框架(比如:FastAPI、Pydantic、uvloop、asyncio),进而生成一套RESTful API; 减少了开发人员运维部署的任务,可以更专注于LLM应用开发;不仅简化了从开发到生产的过渡,还确保了服务的高性能和安全性;提供了包括模型管理器、请求处理器、推理引擎、结果缓存、监控与日志记录以及API网关各类组件;降低了技术门槛、加速了AI应用的上架,LangServe的目标是让开发者能够轻松集成、部署和管理AI模型。开发者可以“从零到一”无缝地实现 LLM 应用从原型到产品的过渡

二、功能特性

LangServe的功能集是为满足现代AI服务的需求而设计的。以下是一些关键特性:

1.多个模型支持:
LangServe支持部署多种类型的AI模型,包括文本生成、图像识别、语音处理等,开发人员能够按需切换。
2.高效推理缓存:
为了提高响应速度和节省计算资源,LangServe包含了一个高效的结果缓存系统,它可以智能地存储和管理热点数据。
3.安全访问控制:
通过角色和策略的管理,LangServe提供了灵活的访问控制机制,确保了服务的安全性和数据的隐私性。
4.实时监控与日志
内置的监控系统可以实时跟踪服务的运行状态,而详尽的日志记录则有助于问题的调试和分析。
5.API接口简单易用
LangServe的API设计简洁直观,易于理解和使用,大大减少了开发者的学习成本

三、REST API 开发

1.环境准备:

安装依赖:pip install "langserve[all]"  (包含了服务端和客户端的安装)

环境变量:OPENAI_API_KEY=<your valid openai api key>

2.代码开发:

以下代码样例中,将开发一个最简单的translator翻译接口(除了LangServe之外,代码中还引入了web框架FastAPI和web服务器uvicorn
创建一个app.py

from fastapi import FastAPIfrom langchain.prompts.chat import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate,
)
from langchain_openai import ChatOpenAI
from langserve import add_routes##FastAPI是一个基于Python的Web框架,用于构建高性能、可扩展的API。它提供了一种简单、直观的方式来定义API端点,以及处理HTTP请求和响应。
app = FastAPI(title="LangChain Server",version="1.0",description="A simple api server using Langchain's Runnable interfaces",
)
# 接口1
add_routes(app,ChatOpenAI(),path="/openai",
)## 接口2
system_message_prompt = SystemMessagePromptTemplate.from_template("""You are a helpful assistant that translates {input_language} to {output_language}.
""")
human_message_prompt = HumanMessagePromptTemplate.from_template("{text}")chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])add_routes(app,chat_prompt | ChatOpenAI(),path="/translate",
)if __name__ == "__main__":import uvicorn## Python的web服务器uvicorn.run(app, host="localhost", port=9999)

3.启动运行

python app.py

四、Postman调用测试

备注:通常情况下可以直接访问http://localhost:9999/docs,在浏览器在线的接口文档中找到对应的接口,直接在网页上测试即可;目前新的pydantic 版本存在兼容性问题,无法生成OpenAPI文档,因此暂时先采用Postman进行接口测试。

五、Client调用测试

直接在后台开发langserve 的客户端,进行远程调用REST API

from langchain.prompts.chat import ChatPromptTemplate
from langserve import RemoteRunnable#配置远程接口
openai_llm = RemoteRunnable("http://localhost:9999/openai/")#创建提示词
prompt = ChatPromptTemplate.from_messages([("system","你是一名资深的AI大模型专家",),("human", "请帮忙讲解一下,有哪些常用的通用开源大模型,中外各自罗列5个"),]
).format_messages()#LLM 接口调用
openai_llm.invoke(prompt)#输出:
AIMessage(content='当谈论通用开源大模型时,常常会提到自然语言处理(NLP)领域中的预训练模型。以下是中外各自常用的5个通用开源大模型:**国外:**
1. BERT(Bidirectional Encoder Representations from Transformers):由Google开发,是一种基于Transformer架构的预训练模型,用于各种NLP任务。
2. GPT-3(Generative Pre-trained Transformer 3):由OpenAI发布,是一个非常大的语言生成模型,可以用于文本生成等任务。
3. RoBERTa(A Robustly Optimized BERT Approach):由Facebook发布的预训练模型,基于BERT进行了一些优化,用于提高性能。
4. T5(Text-to-Text Transfer Transformer):由Google发布,是一个通用的文本生成模型,可以应用于多种NLP任务。
5. XLNet:由谷歌Brain团队发布,是一种自回归预训练模型,结合Transformer-XL和自回归方法。**国内:**
1. ERNIE(Enhanced Representation through kNowledge Integration):由百度发布,是一种基于Transformer架构的多语言预训练模型,融合了知识融合的方法。
2. GPT-2(Generative Pre-trained Transformer 2):由哈工大讯飞联合实验室发布,是一个类似于GPT-3的语言生成模型,用于文本生成等任务。
3. HFL/THU Bert:由清华大学自然语言处理与社会人文计算实验室发布,是一个BERT的中文预训练模型,适用于中文NLP任务。
4. RoFormer:由华为发布,是一种优化的中文预训练模型,用于中文NLP任务。
5. PaddleNLP:由百度发布,是一个NLP模型库,提供了多种预训练模型,包括BERT、ERNIE等,适用于各种NLP任务。以上列举的是一些常用的通用开源大模型,它们在各自领域都有着广泛的应用和影响。', response_metadata={'token_usage': {'completion_tokens': 590, 'prompt_tokens': 61, 'total_tokens': 651}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': 'fp_b28b39ffa8', 'finish_reason': 'stop', 'logprobs': None})


总结

LangServe作为一款专注于AI模型部署和运维的平台,通过其精心设计的架构和丰富的功能集合,显著降低了AI项目的门槛,提升了开发效率和服务稳定性。无论是初创公司还是大型企业,LangServe都提供了一个可靠的解决方案,以应对AI领域中的挑战和机遇。随着AI技术的不断进步,LangServe将继续在AI服务的革新和发展中扮演关键角色。

探索未知,分享所知;点击关注,码路同行,寻道人生!

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

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

相关文章

设计模式——2_7 状态(State)

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游 ——刘过《唐多令芦叶满汀州》 文章目录 定义图纸一个例子&#xff1a;如何模拟一个转笔刀自动转笔刀PencilPencilSharpener 投诉和改善钝刀BladePencilSharpener 没有铅笔PencilSharpener if if ifStatePencilSharpener 碎…

48-基于腾讯云EKS的容器化部署实战

准备工作 在部署IAM应用之前&#xff0c;我们需要做以下准备工作&#xff1a; 开通腾讯云容器服务镜像仓库。安装并配置Docker。准备一个Kubernetes集群。 开通腾讯云容器服务镜像仓库 在Kubernetes集群中部署IAM应用&#xff0c;需要从镜像仓库下载指定的IAM镜像&#xff…

亚马逊、速卖通、lazada测评自养号与机刷有何区别?

在亚马逊平台&#xff0c;买家评价的重要性无需多言。许多消费者在决定购买产品前&#xff0c;都会习惯性地查看相关评论&#xff0c;对比同类产品的买家反馈&#xff0c;从而做出更明智的选择。正因如此&#xff0c;测评成为各大电商平台不可或缺的一种推广策略&#xff0c;亚…

C++ 模拟实现 STL 中的 set、map 与 multiset、multimap

目录 一&#xff0c;RB_tree 的实现 1&#xff0c;RB_tree 的节点与数据结构 2&#xff0c;RB_tree 的迭代器 3&#xff0c;RB_tree 的构造 4&#xff0c;RB_tree 的元素操作 5&#xff0c;完整代码 二&#xff0c;set 与 multiset 的实现 1&#xff0c;set 2&#x…

从零开始:Elasticsearch简介与详解

大家好,我是小米,今天我来和大家聊一聊阿里巴巴面试题中常见的一个话题:Elasticsearch。作为一名喜欢分享技术的小伙伴,我深知在技术的道路上,多一份了解就多一份优势。那么,让我们一起来探索一下Elasticsearch的特点、功能、场景以及与竞品的对比分析吧! 特点 特点是…

js爬虫puppeteer库 解决网页动态渲染无法爬取

我们爬取这个网址上面的股票实时部分宇通客车(600066)_股票价格_行情_走势图—东方财富网 我们用正常的方法爬取会发现爬取不下来&#xff0c;是因为这个网页这里是实时渲染的&#xff0c;我们直接通过网址接口访问这里还没有渲染出来 于是我们可以通过下面的代码来进行爬取: …

1. VirtualBox安装CentOS

安装 VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads 版本: 6.1和7.0+版本都可以 安装: windows上安装需要admin权限,右键菜单选中 “Run as administrator” 安装 CentOS 6.10 地址:https://vault.centos.org/6.10/isos/x86_64/ 版本: 如果不需要GUI,选择…

混合云构建-如何通过Site to Site VPN 连接 AWS 和GCP云并建立一个高可用的VPN通信

如果我们的业务环境既有AWS云又有GCP云,那么就需要将他们打通,最经济便捷的方式就是通过Site-to-Site VPN连接AWS和GCP云,你需要在两个云平台上分别配置VPN网关,并建立一个VPN隧道来安全地连接这两个环境,我们下面演示一个高可用场景下的S2S VPN线路构建,采用动态BGP协议…

利用dbschema工具导出数据库结构

dbschema是SinoDB数据库的一个命令行工具&#xff0c;可以用来导出SinoDB数据库的所有对象&#xff08;如表、触发器、视图等&#xff09;的元数据。以下是常见的使用方法&#xff1a; 1、导出数据库中所有的表结构到文件db.sql $dbschema -d your_database_name -t all db.sq…

岛屿个数c++

参考文章 岛屿个数1岛屿个数2 题目 输入样例&#xff1a; 2 5 5 01111 11001 10101 10001 11111 5 6 111111 100001 010101 100001 111111输出样例&#xff1a; 1 3样例解释 对于第一组数据&#xff0c;包含两个岛屿&#xff0c;下面用不同的数字进行了区分&#xff1a; 0…

Torch not compiled with CUDA enabled问题解决过程记录

1. 背景 运行大模型的时候&#xff0c;出现错误:Torch not compiled with CUDA enabled 原因&#xff1a;并不是电脑安装了nvdia显卡驱动就可以的&#xff0c;还需要安装 NVDIA GPU Computing Toolkit&#xff08;即CUDA Toolkit&#xff09;cudnn 另外还需要确保安装的pyt…

ROS2 采集虚拟仿真环境图像并发布

简介&#xff1a;ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成&#xff0c;gym虚拟仿真环境安装请参考另一篇教程&#xff0c;这里不再重复说明&#xff0c;接下来我们开始创建一个ROS2的功能节点&#xff0c;并发布虚拟仿真环境小车摄像头的图像&#xff0c;…

day02 VS Code开发单片机

VS Code开发单片机 1.1 安装 MinGW-w64 1)MinGW-w64介绍 VS Code 用于编辑 C 代码,我们还需要 C 编译器来运行 C 代码,所以安装 VS Code之前我们需要先安装 C 编译器。这里我们使用 MinGW-w64(Minimalist GNU for Windows 64-bit)。 MinGW-w64 是一个用于Windows操作系…

SpringBoot和Vue2项目配置https协议

1、SpringBoot项目 ① 去你自己的云申请并下载好相关文件&#xff0c;SpringBoot下载的是Tomcat&#xff08;默认&#xff09;&#xff0c;Vue2下载的是Nginx ② 将下载的压缩包里面的.pfx后缀文件拷贝到项目的resources目录下 ③ 编辑配置文件 &#xff08;主要是框里面的内…

解决苹果iMac的M1芯片Node Sass does not yet support your current environment的问题

问题背景 如图所示&#xff0c;这是我的电脑&#xff0c;M1芯片 启动前端项目老是报错&#xff0c;说node Sass不支持我当前的环境&#xff0c;同事的macBook是intel芯片的&#xff0c;就能跑起项目来 很烦 但是不慌&#xff01;&#xff01;&#xff01; 咱有解决方法啦&a…

云原生__K8S

createrepo --update /var/localrepo/# 禁用 firewall 和 swap [rootmaster ~]# sed /swap/d -i /etc/fstab [rootmaster ~]# swapoff -a [rootmaster ~]# dnf remove -y firewalld-*[rootmaster ~]# vim /etc/hosts 192.168.1.30 harbor 192.168.1.50 master 192.168.1.…

数字货币:金融创新的未来?

随着科技的进步&#xff0c;数字货币作为一种新型的金融工具正逐渐走进人们的视线。那么&#xff0c;数字货币究竟是什么&#xff1f;它有哪些优势&#xff1f;它是否真的能够引领金融创新的未来&#xff1f;本文将从专业角度出发&#xff0c;深入探讨这些问题。 一、数字货币的…

iOS 启动速度优化

启动耗时&#xff1a;点击App后到首帧显示耗费的时间。 阶段分析&#xff1a;premain、postmain&#xff0c;也就是main函数执行前和main函数执行后。 耗时检测&#xff1a;Instrument->App Launch Premain 减少动态库数量&#xff1a;启动时程序会加载动态库&#xff0c;…

一分钟了解机器人自由度

目录 自由度的定义 自由度的分类 自由度的影响 影响自由度的主要参数 关节类型和数量 机械结构 控制系统 自由度控制的硬件架构原理 传感器 执行器 控制器 通信接口 软件和算法 机器人的自由度是指机器人在空间中可以独立移动的方向和角度的数量&#xff0c;它是衡…

html--虎鲸

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>虎鲸</title> <link rel"stylesheet" href"css/normalize.css"> <link rel"stylesheet" href"css/style.css" …