File size: 1,116 Bytes
aaffad9
 
 
 
 
 
 
c61a090
 
aaffad9
 
 
 
d73a93b
aaffad9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d73a93b
aaffad9
 
d73a93b
aaffad9
 
 
c61a090
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""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
import uvicorn


current_dir = Path(__file__).parent

# Load the model
fhe_model = FHEModelServer(
    Path.joinpath(current_dir, "fhe_model")
)
class PredictRequest(BaseModel):
    evaluation_key: str
    encrypted_encoding: str


# Initialize an instance of FastAPI
app = FastAPI()


# Define the default route
@app.get("/")
def root():
    return {"message": "Welcome to Your ClairVault!"}


@app.post("/predict")
def predict(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}

#if __name__ == "__main__":
#    uvicorn.run(app, host="0.0.0.0", port=3000)