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

news2025/2/28 0:29:15

目录

前言

一、概述

二、功能特性

三、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 FastAPI

from 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.coloradmin.cn/o/1585164.html

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

相关文章

java的aop实现方式

java的aop可以通过三种方式来实现 1.使用ajc编译的插件来完成增强 这种方法会直接修改编译完成的class文件&#xff0c;不需要依赖springboot 2.动态代理proxy 2.1cglib 可以代理接口&#xff0c;方法等&#xff0c;这种方式代理类是目标类的子类&#xff0c;要求目标类不…

技术图纸受控下发软件,知名的技术图纸管理软件

技术图纸受控下发软件是一种专门用于管理和控制技术图纸下发的工具。这种软件的主要目的是确保技术图纸的安全、准确和受控的下发&#xff0c;同时提高图纸管理的效率和便利性。 以下是技术图纸受控下发软件的一些主要功能和特点&#xff1a; 权限管理&#xff1a;软件能够设置…

python基础——MySQL

文章目录 一、引入pymysql二、使用三、执行非查询性质的SQL语句四、执行查询性质的SQL语句五、数据插入 一、引入pymysql 除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行SQL从而操作数据库。 在Python中&#xff0c;使用第三方库:pymysql来完成对MySQL数据库…

为什么每个人都需要了解这些数据加密技术?

在数字时代&#xff0c;数据加密技术不仅对保护企业的商业秘密至关重要&#xff0c;也是个人隐私安全的重要屏障。随着技术的进步和网络犯罪的增加&#xff0c;数据加密已经成为了信息安全领域的一个热点议题。以下是探讨为什么每个人都需要了解这些数据加密技术的几个主要原因…

Python 读写T5557低频RFID,将T5557卡制做成ID、HID卡

本示例使用的发卡器&#xff1a; T5557 T5567 T5577低频RFID读写器 EM4100 HID卡复制器 酒店门卡-淘宝网 (taobao.com) from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,QMessageBox,QCheckBox,QLineEdit from…

基于ARM内核的智能手环(day7)

RTC&#xff08;实时时钟&#xff09; 什么是RTC&#xff1f; RTC是指实时时钟&#xff08;Real-Time Clock&#xff09;&#xff0c;是一种能够持续跟踪时间的计时器&#xff0c;即使在设备断电的情况下也能保持时间的准确性。它通常用于需要准确时间记录的应用&#xff0c;…

遥感降水、气温数据的处理与可视化、ERA5大气再分析数据的统计分析、干旱监测及SCI论文写作技巧

深度探讨人工智能在大气科学中的应用&#xff0c;特别是如何结合最新AI模型与Python技术处理和分析气候数据。课程介绍包括GPT-4等先进AI工具&#xff0c;旨在帮助学员掌握这些工具的功能及应用范围。内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等实战案例…

Oracle数据库imp文件导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法

导入数据库时&#xff0c;直接提示不是有效的导出文件&#xff0c;标头验证失败 原因&#xff1a;这是因为导出的imp文件和你当前导入的数据库版本不一致造成的&#xff0c;例如&#xff1a;导出文件版本号12.0.1 导入数据库的版本号11.0.2&#xff0c;会报这个错误。 解决办法…

[C++]map set

一、set 1、概念 set是按照一定次序存储元素的容器在set中&#xff0c;元素的value也标识它(value就是key&#xff0c;类型为T)&#xff0c;并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const)&#xff0c;但是可以从容器中插入或删除它们。在内部&…

泰迪智能科技高职人工智能专业人才培养方案

人工智能行业近年来得到了快速发展&#xff0c;全球科技公司都在竞相投入人工智能的研发&#xff0c;从硅谷到北京&#xff0c;都在人工智能上取得了显著的进步。人工智能已经从学术研究转变为影响制造业、医疗保健、交通运输和零售等多个行业的关键因素。我国政策的积极推动下…

备战2024年中学生古诗文大会(初中组):单选题真题和独家解析

我们继续来做中学生古诗文大会&#xff08;初中组&#xff09;&#xff0c;即我们常说的初中生古诗文大会的部分真题&#xff0c;从中了解初中生古诗文大会的考察内容和形式&#xff0c;并且提供了我独家的题目解析和答案&#xff0c;供初中的同学们学习和参考。 初中生古诗文…

C++常用技巧与算法总结(简洁)

前言警告&#xff1a; 1、注意数据的边界&#xff0c;数组不能越界&#xff01; 2、 时间复杂度 3、开long long 4、注意输出的四舍五入 printf("%d %.0f\n",k,sum*1.0/k);//double类型输出会自动四舍五入&#xff1b; 5、让Dev C支持C11 先在dev的【工具】里找…

从零到部署指南:Ubuntu上安装Boost和Crow库

1.安装boost 在安装Crow之前&#xff0c;需要确保您的系统中已经安装了Boost库。以下是Boost库安装步骤&#xff1a; 首先&#xff0c;从Boost官方网站或通过特定的链接下载Boost的源码&#xff0c;boost源码具体可参看这个链接&#xff1a; https://blog.csdn.net/duan199201…

提升App用户黏性,Xinstall推出注册用户自动绑定功能

在移动互联网时代&#xff0c;App的用户留存和活跃度对于产品的成功至关重要。然而&#xff0c;许多App在面临用户注册和绑定时&#xff0c;常常遭遇繁琐的操作流程和不佳的用户体验&#xff0c;导致用户流失严重。为了解决这一痛点&#xff0c;Xinstall推出了一项创新功能——…

蚂蚁集团CodeFuse 发布“图生代码”功能,支持产品设计图一键生成代码

4月11日&#xff0c;蚂蚁集团自研的智能研发平台CodeFuse推出“图生代码”新功能&#xff0c;支持开发人员用产品设计图一键生成代码&#xff0c;大幅提升前端页面的开发效率。目前相关功能正在内测。 和很多互联网公司一样&#xff0c;蚂蚁集团正在内部全面推行AI编程&#x…

Ubuntu-22.04安装Virtualbox并安装Windows10

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Virtualbox是什么&#xff1f;二、安装Virtualbox1.关闭Secure Boot2.安装 三、安装Windows101.新装虚拟机基本配置2.新装虚拟机核心配置 总结 前言 虚拟机…

【实战JVM】双亲委派机制

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

pip install opencv-python出现ModuleNotFoundError: No module named ‘skbuild‘错误解决方案

问题描述 File “”, line 1, in File “/tmp/pip-build-o148qsmj/opencv-python/setup.py”, line 10, in from skbuild import cmaker, setup ModuleNotFoundError: No module named ‘skbuild’ Command “python setup.py egg_info” failed with error code 1 in /tmp…

东用科技助力5G+区域教育管理智慧平安校园建设

一、 方案背景 为深入贯彻党中央、国务院关于加快5G发展、加强教育信息化工作的决策部署&#xff0c;加快推进《5G应用“扬帆”行动计划》实施&#xff0c;促进5G与教育融合创新发展&#xff0c;按照“育人为本、多方协同、问题导向、深度融合”的原则&#xff0c;工业和信息化…

LeetCode-1766. 互质树【树 深度优先搜索 广度优先搜索 数组 数学 数论】

LeetCode-1766. 互质树【树 深度优先搜索 广度优先搜索 数组 数学 数论】 题目描述&#xff1a;解题思路一&#xff1a;DFS 中记录节点值的深度和编号&#xff0c;回溯写法。关键点是1 < nums[i] < 50解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1…