I am trying to pass a multi-line text to fastApi Code. My code looks like
from fastapi import FastAPI
from pydantic import BaseModel
from model import predictT5
testApp = FastAPI() # create an app
@testApp.get("/") # set root directory
# pydantic models
class TextIn(BaseModel):
text: str
class TextOut(BaseModel):
Summary: dict
# routes
def root():
return {"message":"jmj"}
@testApp.post("/predict", response_model=TextOut, status_code=200)
def get_prediction(payload: TextIn):
"""
Gets a text and runs through T5 & outputs summary
"""
text = payload.text
t5Summary = predictT5(text)
This works with a request like
curl -X 'POST' \
'http://127.0.0.1:8000/predict' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"text": "A dictionary that maps attention modules to devices. For reference, the t5 models have the following number of attention modules:"
}'
However if I split the text with a \n and have a request body like
curl -X 'POST' \
'http://127.0.0.1:8000/predict' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"text": "A dictionary that maps attention modules to devices.
For reference, the t5 models have the following number of attention modules:"
}'
I see
Error: Unprocessable Entity "msg": "Invalid control character at: line 2 column 285 (char 286)", "type": "value_error.jsondecode",
Would anyone know how to handle this ? thank you!