LangServe
可以轻松的将langchain
的能力包装为接口,为前端提供服务。本文通过一个简单的应用演示LangServe
如何使用。
LangServe
是一个Python
包,专门用于将基于LangChain
的程序和链部署为生产就绪的 API。
- 易于调试:它提供了一个
Playground
,允许开发者实时地与他们的智能机器人互动,测试不同的输入并查看即时输出,这有助于快速迭代和调试。- 支持并发:它支持并发请求,这意味着多个用户可以同时使用部署的服务而不会出现性能问题。
- 安全性:提供了一些安全性措施,如请求追踪,确保数据传输的安全。
- 支持流式传输和异步调用:支持流式传输和异步调用,这对于需要实时反馈或处理大量数据的应用程序来说非常有用。
安装LangServe
pip install "langserve[all]"
创建链
创建一个问答链,它提供简单地翻译功能。
from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama.llms import OllamaLLM
from langserve import add_routes
# 1. 创建提示词模板
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
# 2. 创建本地大模型
model = OllamaLLM(model="llama3.1")
# 3. 创建解析器
parser = StrOutputParser()
# 4. 创建链
chain = prompt_template | model | parser
至此,一个简单的问答链已经创建好了。
运行它需要两个参数:language
、text
。
请提前通过
ollama run llmama3.1
在本地启动大模型。
使用langServe
将链包装为API
# 5. App 定义
app = FastAPI(
title="LangChain Server",
version="1.0",
description="使用 LangChain 的 Runnable 接口的简单 API 服务器。",
)
# 6. 添加链的路由
add_routes(
app,
chain,
path="/translate",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8010)
启动测试
启动此程序,出现类似下面的输出则说明启动成功。
根据上图的信息,在浏览器输入http://localhost:8010/translate/playground/
玩一下此接口。
我们也可以打开接口文档,可以看见它还提供了很多其它接口,留在我们根据需要使用。
上述接口还包含了批量处理以及stream处理方式。
查看完整代码
参考
🪐祝好运🪐