简介

`LangServe` 是一个 `Python` 包,专门用于将基于 `LangChain` 的程序和链部署为生产就绪的 API。
- **易于调试**:它提供了一个 `Playground`,允许开发者实时地与他们的智能机器人互动,测试不同的输入并查看即时输出,这有助于快速迭代和调试。
- **支持并发**:它支持并发请求,这意味着多个用户可以同时使用部署的服务而不会出现性能问题。
- **安全性**:提供了一些安全性措施,如请求追踪,确保数据传输的安全。
- **支持流式传输和异步调用**:支持流式传输和异步调用,这对于需要实时反馈或处理大量数据的应用程序来说非常有用。

本文通过一个简单的应用演示`LangServe`如何使用。

安装`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处理方式。

 

下载源代码

- [gitee]
- [github]

参考
使用LangServe做API开放本地大模型的能力


🪐祝好运🪐