> For the complete documentation index, see [llms.txt](https://www.nhasachso.io.vn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.nhasachso.io.vn/truc-tuyen/interactive-blocks-1/tac-gia/nguyen-hong-phuong/sach-cong-cu-ai-python/phan-7-xay-dung-he-thong-ai/flask-and-fastapi-trien-khai-cac-mo-hinh-ai-thanh-restful-api.md).

# Flask & FastAPI: Triển khai các mô hình AI thành RESTful API

#### **Flask & FastAPI: Triển khai mô hình AI thành RESTful API**

***

**🚀 Mục tiêu**

Giúp đưa các mô hình học máy (machine learning) hoặc học sâu (deep learning) vào ứng dụng thực tế thông qua **RESTful API**, cho phép các hệ thống khác (web, mobile, IoT…) truy cập mô hình một cách tiện lợi và nhanh chóng.

***

#### 🔹 **1. Flask: Web Framework đơn giản, linh hoạt**

* **Phù hợp** với các dự án nhỏ, nguyên mẫu nhanh (prototype).
* **Ưu điểm**:
  * Cấu trúc gọn nhẹ, dễ hiểu, dễ triển khai.
  * Tích hợp dễ dàng với mô hình từ scikit-learn, TensorFlow, PyTorch.
* **Hạn chế**:
  * Không hỗ trợ async (bất đồng bộ) mặc định, nên không tối ưu cho hiệu suất cao hoặc các ứng dụng đồng thời lớn.

**🔧 Ví dụ dùng Flask để tạo API dự đoán:**

```python
from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load('model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json()
    prediction = model.predict([data['features']])
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run()
```

***

#### 🔹 **2. FastAPI: Framework hiện đại, hiệu suất cao**

* **Thiết kế để tối ưu hiệu năng** (nhanh gấp 5 lần Flask trong nhiều trường hợp).
* **Hỗ trợ async/await**, lý tưởng cho hệ thống real-time hoặc xử lý đồng thời.
* **Tự động sinh tài liệu API** (Swagger UI, Redoc).
* **Hỗ trợ kiểu dữ liệu tĩnh (type hints)** => giúp giảm lỗi & dễ bảo trì.

**🔧 Ví dụ API dự đoán dùng FastAPI:**

```python
from fastapi import FastAPI
from pydantic import BaseModel
import joblib

app = FastAPI()
model = joblib.load('model.pkl')

class InputData(BaseModel):
    features: list

@app.post("/predict")
def predict(input_data: InputData):
    prediction = model.predict([input_data.features])
    return {"prediction": prediction.tolist()}
```

***

#### ⚖️ **So sánh nhanh Flask vs FastAPI**

| Tiêu chí            | Flask             | FastAPI                      |
| ------------------- | ----------------- | ---------------------------- |
| Dễ học              | ⭐⭐⭐⭐⭐             | ⭐⭐⭐⭐                         |
| Hiệu suất           | ⭐⭐                | ⭐⭐⭐⭐⭐                        |
| Async/Await support | ❌                 | ✅                            |
| Tài liệu tự động    | ❌ (thêm thư viện) | ✅ (tích hợp sẵn)             |
| Dùng trong sản phẩm | Có                | Rất phù hợp với microservice |

***

#### 📌 **Ứng dụng thực tế**

* Triển khai **mô hình AI lên server, cloud, hoặc container (Docker)**
* Kết hợp với **ngôn ngữ front-end, mobile app, hệ thống backend**
* Tích hợp trong **pipeline MLOps** cùng với Docker, Kubernetes, CI/CD

***
