FastAPI:服务于机器学习数据产品的API框架
微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩
自定义错误处理
构建数据产品需要许多不同的团队一起工作;例如数据科学、机器学习、软件工程等。在这种跨职能协作中,错误处理和消息传递的一致性变得至关重要。FastAPI 支持使用消息和状态代码进行自定义错误处理。
from fastapi import FastAPI, HTTPException
import uvicorn
app = FastAPI()
cities = {1: "Berlin", 2: "Hamburg", 3: "München"}
@app.get("/cities/{city_id}")
async def read_city_id(city_id: int):
if city_id not in cities:
raise HTTPException(status_code=404, detail="City id is not found") # status code and error message is defined
results = {"city": cities[city_id]}
return results
if __name__ == "__main__":
uvicorn.run("error-message:app")
OpenAPI 标准自动文档生成
FastAPI 支持开发人员在浏览器中自动生成交互式且易于测试的端点。通过下面的链接,您将被定向到您生成的路线。
http://localhost:8000/docs
当您单击蓝色面板上的箭头时,您将获得更多详细信息。
该文档允许用户测试创建的端点。您只需单击“试用”按钮即可。
为了测试数字验证,我将 0 传递给订单计数,API 自动返回错误消息和 422 状态。
使用 FastAPI 服务的机器学习模型
当我们学习了 FastAPI 的基础知识后,我们就可以使用它来为我们的机器学习模型提供服务了。
在这个例子中,我使用二手车数据集来预测汽车的价值。该数据集包含有关汽车的特征,从品牌到汽车行驶了多少公里。为了简化示例,我不会共享数据清理、数据准备和模型构建步骤,而是将所有内容都放在一个 pickle 文件中。
Python 代码加载 pickle 文件,创建预测端点,并返回汽车的预测价格。
from fastapi import FastAPI
import joblib
import numpy as np
import pandas as pd
import uvicorn
# passing title, version and description parameters to the class object
app = FastAPI(
title="Car Price Prediction",
version="1.0",
description="Model type: Linear Regression",
)
# loading previously saved pickle file
model = joblib.load("./LinearRegressionModel.pkl")
# creating predict end point
@app.get("/api/predict")
async def predict(
name: str, company: str, year: int, kms_driven: float, fuel_type: str
):
result = model.predict(
pd.DataFrame(
columns=["name", "company", "year", "kms_driven", "fuel_type"],
data=np.array([name, company, year, kms_driven, fuel_type]).reshape(1, 5),
)
)[0]
return result
if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
当我们将参数传递给预测端点时,它会在响应主体中返回汽车预测。下次你甚至可以将它 dockerize 并用一个漂亮的 web 应用程序来服务它!
结论
FastAPI 已经成为数据领域 API 服务的首选框架。每天我都会阅读另一篇关于数据团队迁移到 FastAPI 以及他们从这种变化中受益的文章。我期待在接下来的几个月和几年中看到更多更新。
感谢阅读。
推荐书单
《图解数据智能》
《图解数据智能》是一本为数字资源的对接方、分配方以及广大的入门学习者提供相关数据智能概念的科普读物。书中各个概念之间相对独立,读者可以将其作为一本检索用的工具书籍,也可以根据自己的兴趣灵活查阅相关篇章。
无论你是数智化领域的专业从业人员,还是刚刚毕业想要进入该领域的技术小白,抑或是正面临着数字化转型的政府或企业人员,或者是千千万万个生活在这个数智化社会中的普通人,都可以阅读此书,你将从酣畅淋漓的技术释疑和轻松有趣的漫画解读中,找到自己的答案。
精彩回顾
微信搜索关注《Python学研大本营》
访问【IT今日热榜】,发现每日技术热点