前言
上篇文章给大家介绍了在Langchain框架中如何定义提示词模板
这篇文章将介绍LangChain 生态系统中的一个工具LangServe
一、LangServe是什么?
LangServe 是 LangChain 生态系统中的一个工具,旨在帮助开发者将基于 LangChain 开发的链(Chain)、代理(Agent)或其他可运行对象(Runnable)快速部署为 REST API 服务。它基于 FastAPI 构建,简化了将 AI 应用转化为标准化接口的过程,方便与其他系统集成。
核心功能与特点
-
快速部署
只需少量代码即可将 LangChain 对象(如链、检索器、代理)转换为 API 端点,无需手动编写路由或序列化逻辑。 -
自动 API 文档
集成 FastAPI 的 Swagger UI,自动生成交互式 API 文档,支持开发者直接测试接口。 -
异步支持
原生支持异步请求处理,适合高并发场景,提升推理任务的效率。 -
与 LangChain.js 集成
生成的 API 可直接被 LangChain.js 调用,方便前后端协作开发 AI 应用。 -
简化开发流程
开发者聚焦于业务逻辑(如链的设计),而无需处理 HTTP 请求解析、响应格式化等底层细节。
二、编写代码
1.大模型调用部分
这部分代码在上一篇文章中已经做过了详细介绍,这里就不多叙述了
# 调用AI检测平台(langSmith)
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = 'XXXX'
os.environ["LANGCHAIN_PROJECT"] = "智谱AI"
#调用智谱AI API
os.environ["ZHIPUAI_API_KEY"] = "XXXXX"
#安装第三方库集成
#pip install langchain_community
#调用第三方库
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
#调用大语言模型
model = ChatZhipuAI(model_name='glm-4-flash')
# 创建返回的数据解析器
parser = StrOutputParser()
# 定义提示模板
prompt_template = ChatPromptTemplate.from_messages([
('system','请将下面的内容翻译成{language}'),
('user',"{text}")
])
#得到链
chain = prompt_template | model |parser
#调用chain
print(chain.invoke({'language':'English','text':'今天心情非常好,因为中午吃了汉堡'}))
2.安装第三方库langserve
pip install langserve[all]
3.安装第三方库FastAPI
由于langServe工具是基于FastAPI构建的,所以我们这里需要先安装FastAPI
pip install fastapi
4.调用第三方库
from langserve import add_routes
from fastapi import FastAPI
5.创建FastAPI应用
app = FastAPI(title='我的Langchain服务',version='v1.0',description='使用Langchain翻译任何语句的服务器')
-
title:构建服务的名称,可自定义
-
version: 构建服务的版本,可自定义
-
description:构建服务的功能,可自定义
6.添加路由
add_routes(
app,
chain,
path="/chain"
)
-
app:你所创建的FastAPI应用,这里为app
-
chain: 创建的链
-
path:路由路径,可自定义
7.构建服务器
if __name__ == "__main__":
#构建服务器
import uvicorn
uvicorn.run(app,host="localhost",port=8000)
8.完整代码
#安装第三方库 pip install langserve[all]
# 调用AI检测平台(langSmith)
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = 'xxxxxxxx'
os.environ["LANGCHAIN_PROJECT"] = "智谱AI"
#调用智谱AI API
os.environ["ZHIPUAI_API_KEY"] = "xxxxxxxxx"
#安装第三方库集成
#pip install langchain_community
#调用第三方库
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.output_parsers import StrOutputParser
from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langserve import add_routes
#调用大语言模型
model = ChatZhipuAI(model_name='glm-4-flash')
# 创建返回的数据解析器
parser = StrOutputParser()
# 定义提示模板
prompt_template = ChatPromptTemplate.from_messages([
('system','请将下面的内容翻译成{language}'),
('user',"{text}")
])
#得到链
chain = prompt_template | model |parser
#调用chain
print(chain.invoke({'language':'English','text':'今天心情非常好,因为中午吃了汉堡'}))
#创建fastAPI应用
app = FastAPI(title='我的Langchain服务',version='v1.0',description='使用Langchain翻译任何语句的服务器')
#添加路由
add_routes(
app,
chain,
path="/chain"
)
if __name__ == "__main__":
#构建服务器
import uvicorn
uvicorn.run(app,host="localhost",port=8000)
9.运行结果
运行后终端控制台出现如下界面代表服务构建成功
10.测试
关于服务接口测试有两种方法
1.借助于第三方工具,例如Apipost
2.利用代码进行测试,我这里介绍第二种方式
from langserve import RemoteRunnable
if __name__ == "__main__":
client = RemoteRunnable('http://127.0.0.1:8000/chain/')
print('nihao')
新建.py文件,运行上述代码,终端控制台不报错及代表接口测试成功