dream

Форк
0
48 строк · 1.4 Кб
1
import logging
2
import json
3
import os
4
import time
5

6
import numpy as np
7
import sentry_sdk
8
from flask import Flask, jsonify, request
9

10

11
sentry_sdk.init(os.getenv("SENTRY_DSN"))
12

13
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
14
logger = logging.getLogger(__name__)
15

16
app = Flask(__name__)
17

18

19
with open("midas_prediction_counters.json", "r") as f:
20
    counters = json.load(f)
21

22

23
def inference(last_midas_label, return_probas):
24
    global counters
25
    # counters['appreciation'] = {'appreciation': 0.09, 'comment': 0.15, 'opinion': 0.39, 'pos_answer': 0.13, ...}
26
    if return_probas:
27
        return counters[last_midas_label]
28
    else:
29
        # randomly choose with probability
30
        return np.random.choice(list(counters[last_midas_label].keys()), p=list(counters[last_midas_label].values()))
31
        # return max(counters[last_midas_label], key=counters[last_midas_label].get)
32

33

34
@app.route("/respond", methods=["POST"])
35
def respond():
36
    st_time = time.time()
37
    last_midas_labels = request.json["last_midas_labels"]
38
    return_probas = request.json.get("return_probas", 0)
39

40
    result = [inference(midas_label, return_probas) for midas_label in last_midas_labels]
41

42
    total_time = time.time() - st_time
43
    logger.info(f"midas-predictor exec time: {total_time:.3f}s")
44
    return jsonify(result)
45

46

47
if __name__ == "__main__":
48
    app.run(debug=False, host="0.0.0.0", port=3000)
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.