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

至此,一个简单的问答链已经创建好了。
运行它需要两个参数:languagetext

请提前通过 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)

启动测试

启动此程序,出现类似下面的输出则说明启动成功。 langServe成功启动

根据上图的信息,在浏览器输入http://localhost:8010/translate/playground/ 玩一下此接口。 langServe playground

我们也可以打开接口文档,可以看见它还提供了很多其它接口,留在我们根据需要使用。 langServe API
上述接口还包含了批量处理以及stream处理方式。

查看完整代码


参考


🪐祝好运🪐