| """Server that will listen for GET requests from the client.""" | |
| from fastapi import FastAPI | |
| from joblib import load | |
| from concrete.ml.deployment import FHEModelServer | |
| from pydantic import BaseModel | |
| import base64 | |
| from pathlib import Path | |
| current_dir = Path(__file__).parent | |
| # Load the model | |
| fhe_model = FHEModelServer("deployment/sentiment_fhe_model") | |
| class PredictRequest(BaseModel): | |
| evaluation_key: str | |
| encrypted_encoding: str | |
| # Initialize an instance of FastAPI | |
| app = FastAPI() | |
| # Define the default route | |
| def root(): | |
| return {"message": "Welcome to Your Sentiment Classification FHE Model Server!"} | |
| def predict_sentiment(query: PredictRequest): | |
| encrypted_encoding = base64.b64decode(query.encrypted_encoding) | |
| evaluation_key = base64.b64decode(query.evaluation_key) | |
| prediction = fhe_model.run(encrypted_encoding, evaluation_key) | |
| # Encode base64 the prediction | |
| encoded_prediction = base64.b64encode(prediction).decode() | |
| return {"encrypted_prediction": encoded_prediction} |