| from fastapi import FastAPI |
| from tensorflow import keras |
| from tensorflow.keras.preprocessing.text import tokenizer_from_json |
| import json |
| import pandas as pd |
| from tensorflow.keras.preprocessing.sequence import pad_sequences |
| from azure.monitor.opentelemetry import configure_azure_monitor |
| import logging |
| import mlflow |
| from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor |
| from opencensus.ext.azure.log_exporter import AzureLogHandler |
| from fastapi import FastAPI |
|
|
| app = FastAPI() |
|
|
|
|
| |
| logging.basicConfig( |
| level=logging.INFO, |
| format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" |
| ) |
|
|
| |
| logger = logging.getLogger(__name__) |
| logger.addHandler(AzureLogHandler( |
| connection_string="InstrumentationKey=63f5fb13-6bad-4790-9158-dd15a35dffa9;IngestionEndpoint=https://francecentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://francecentral.livediagnostics.monitor.azure.com/;ApplicationId=b12b6f69-5163-4e00-a2d0-091bb33efaf2" |
| )) |
| logger.info("test") |
| VOCAB_SIZE = 20000 |
| MAX_LEN = 50 |
|
|
| model = keras.models.load_model("model1_simple_neural_network.keras") |
| with open("tokenizer_simple_neural_network.json", "r", encoding="utf-8") as f: |
| tokenizer_json_str = f.read() |
|
|
| tokenizer = tokenizer_from_json(tokenizer_json_str) |
|
|
| app = FastAPI() |
|
|
|
|
| @app.get("/") |
| async def root(): |
| logger.info(f"test") |
| return {"message": "Hello World"} |
|
|
| @app.get("/feeling_predictions/{text}") |
| async def read_item(text): |
| |
| X_example = pd.Series([text], name="new_test") |
| X_example_seq = tokenizer.texts_to_sequences(X_example) |
| X_example_pad = pad_sequences(X_example_seq, maxlen=MAX_LEN, padding='post', truncating='post') |
| y_prediction = (model.predict(X_example_pad) > 0.5).astype(int).ravel() |
| prediction = y_prediction[0] |
| if prediction == 0: |
| feeling_result = "sad" |
| else: |
| feeling_result = "happy" |
| logger.info(f"pour le texte {text}, la prediction est {feeling_result}") |
| return {"text": text, |
| "feeling_result": feeling_result} |