我有一个使用FastAPI部署的机器学习模型,但问题是我需要该模型采用两体参数
app = FastAPI()
class Inputs(BaseModel):
industry: str = None
file: UploadFile = File(...)
@app.post("/predict")
async def predict(inputs: Inputs):
# params
industry = inputs.industry
file = inputs.file
### some code ###
return predicted value
当我尝试发送输入参数时,我发现邮递员出现错误,请参见下图,
答案 0 :(得分:1)
来自FastAPI讨论thread--(#657)
如果您使用
application/json
接收JSON数据,请使用常规的Pydantic模型。这是与API通信的最常用方法。
如果您正在接收原始文件,例如图片或PDF文件存储在服务器中,然后使用
UploadFile
,它将作为表单数据(multipart/form-data
)发送。如果您需要接收不是JSON的某种结构化内容,但是想要以某种方式进行验证(例如,Excel文件),则仍然必须使用
UploadFile
上传并执行所有代码中的必要验证。您可以在自己的代码中使用Pydantic进行验证,但是在这种情况下,FastAPI无法为您这样做。
因此,在您的情况下,路由器应为
from fastapi import FastAPI, File, UploadFile, Form
app = FastAPI()
@app.post("/predict")
async def predict(
industry: str = Form(...),
file: UploadFile = File(...)
):
# rest of your logic
return {"industry": industry, "filename": file.filename}