Bird
Raised Fist0
ML Pythonml~10 mins

FastAPI for model serving in ML Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import FastAPI and create an app instance.

ML Python
from fastapi import [1]

app = [1]()
Drag options to blanks, or click blank then click option'
AResponse
BDepends
CRequest
DFastAPI
Attempts:
3 left
💡 Hint
Common Mistakes
Importing Request or Response instead of FastAPI
Forgetting to call FastAPI() as a function
2fill in blank
medium

Complete the code to define a POST endpoint '/predict' that accepts JSON input.

ML Python
@app.post('/predict')
async def predict(data: [1]):
    return {'prediction': 'dummy'}
Drag options to blanks, or click blank then click option'
Adict
Bstr
Cint
Dfloat
Attempts:
3 left
💡 Hint
Common Mistakes
Using str instead of dict for JSON input
Using numeric types like int or float incorrectly
3fill in blank
hard

Fix the error in the code to load a saved model using joblib.

ML Python
import joblib

model = joblib.[1]('model.joblib')
Drag options to blanks, or click blank then click option'
Asave
Bload
Cdump
Dopen
Attempts:
3 left
💡 Hint
Common Mistakes
Using save or dump instead of load
Trying to use open directly on the model file
4fill in blank
hard

Fill both blanks to extract features from input JSON and make a prediction.

ML Python
features = [data[[1]] for [2] in ['feature1', 'feature2']]
prediction = model.predict([features])
Drag options to blanks, or click blank then click option'
A'feature1'
Bx
C'feature2'
Ddata
Attempts:
3 left
💡 Hint
Common Mistakes
Using a literal string instead of the loop variable in the first blank
Using a variable name that doesn't match the loop in the second blank
5fill in blank
hard

Fill all three blanks to return the prediction as JSON with a status code.

ML Python
from fastapi.responses import Response

@app.post('/predict')
async def predict(data: dict):
    features = [data[[1]] for [2] in ['f1', 'f2']]
    pred = model.predict([features])[0]
    return Response(content=str(pred), media_type=[3], status_code=200)
Drag options to blanks, or click blank then click option'
A'f1'
Bf
C'application/json'
D'text/plain'
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong feature key or loop variable
Using incorrect media type like 'application/json' instead of 'text/plain'

Practice

(1/5)
1. What is the main purpose of using FastAPI in machine learning model serving?
easy
A. To create a web service that allows users to send data and get model predictions
B. To train machine learning models faster on GPUs
C. To visualize data with interactive charts
D. To store large datasets efficiently

Solution

  1. Step 1: Understand FastAPI's role

    FastAPI is a web framework used to build APIs that can serve machine learning models.
  2. Step 2: Identify the main use in ML serving

    It allows sending input data and receiving predictions via HTTP requests, making models accessible.
  3. Final Answer:

    To create a web service that allows users to send data and get model predictions -> Option A
  4. Quick Check:

    FastAPI serves ML models as web APIs = D [OK]
Hint: FastAPI is for serving models, not training or visualization [OK]
Common Mistakes:
  • Confusing FastAPI with training libraries
  • Thinking FastAPI is for data storage
  • Assuming FastAPI is for data visualization
2. Which of the following is the correct way to define a POST endpoint in FastAPI for model prediction?
easy
A. app.post('/predict')
B. app.put('/predict')
C. app.get('/predict')
D. app.delete('/predict')

Solution

  1. Step 1: Recall HTTP methods for sending data

    POST is used to send data to the server, suitable for prediction requests.
  2. Step 2: Match method to FastAPI syntax

    FastAPI uses @app.post decorator to define POST endpoints.
  3. Final Answer:

    app.post('/predict') -> Option A
  4. Quick Check:

    POST endpoint for sending data = app.post [OK]
Hint: Use POST to send data for predictions in FastAPI [OK]
Common Mistakes:
  • Using GET instead of POST for sending input data
  • Confusing HTTP methods like PUT or DELETE
  • Missing the @ decorator syntax
3. Given the following FastAPI code snippet, what will be the output when sending JSON {"text": "hello"} to /predict?
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class InputData(BaseModel):
    text: str

@app.post('/predict')
def predict(data: InputData):
    return {"length": len(data.text)}
medium
A. {"text": 5}
B. {"length": "hello"}
C. {"length": 5}
D. Error: Missing return type

Solution

  1. Step 1: Understand input and output

    The input JSON has "text": "hello". The function returns the length of this string.
  2. Step 2: Calculate length of 'hello'

    "hello" has 5 characters, so the output JSON is {"length": 5}.
  3. Final Answer:

    {"length": 5} -> Option C
  4. Quick Check:

    len('hello') = 5 [OK]
Hint: Count characters in input string for length output [OK]
Common Mistakes:
  • Returning the string instead of its length
  • Confusing keys in the output JSON
  • Expecting a syntax or runtime error
4. Identify the error in this FastAPI model serving code:
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class InputData(BaseModel):
    value: int

@app.post('/predict')
def predict(data: InputData):
    return {"result": data.value * 2}

# Client sends JSON: {"value": "10"}
medium
A. Missing return statement
B. Type error because 'value' should be int but client sent string
C. Syntax error in function definition
D. No error, code works fine

Solution

  1. Step 1: Check data type in Pydantic model

    InputData expects 'value' as int, client sends string "10".
  2. Step 2: Understand Pydantic validation and coercion

    Pydantic automatically converts compatible strings like "10" to int 10, so no validation error occurs.
  3. Final Answer:

    No error, code works fine -> Option D
  4. Quick Check:

    Pydantic coerces "10" to 10 [OK]
Hint: Pydantic automatically converts compatible types like str to int [OK]
Common Mistakes:
  • Thinking Pydantic doesn't auto-convert string to int
  • Expecting a type validation error
  • Overlooking Pydantic's coercion feature
5. You want to serve a sentiment analysis model using FastAPI. The model expects a list of texts and returns a list of sentiment scores. Which is the best way to define the input and output in FastAPI?
hard
A. Accept raw JSON string and return a plain string
B. Use a Pydantic model with a field 'texts' as List[str] and return List[float]
C. Use query parameters for each text input and return a single float
D. Use a Pydantic model with a single string field and return a dictionary with one score

Solution

  1. Step 1: Define input for multiple texts

    Since the model expects multiple texts, input should be a list of strings, best defined with Pydantic List[str].
  2. Step 2: Define output for multiple scores

    The model returns multiple sentiment scores, so output should be a list of floats matching input size.
  3. Final Answer:

    Use a Pydantic model with a field 'texts' as List[str] and return List[float] -> Option B
  4. Quick Check:

    Input/output types match model expectations [OK]
Hint: Match input/output types to model's batch processing [OK]
Common Mistakes:
  • Using single string input for multiple texts
  • Returning single score instead of list
  • Using query params for large input lists
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard