dream

Форк
0
52 строки · 1.7 Кб
1
import argparse
2
import requests
3
import json
4

5
parser = argparse.ArgumentParser()
6
parser.add_argument("-pred_f", "--pred_file", type=str, default="tests/test_results.json")
7
parser.add_argument("-true_f", "--true_file", type=str, default="tests/test_tasks.json")
8
parser.add_argument("-from_url", "--from_url", type=str, default="http://0.0.0.0:8007/transfertransfo")
9

10

11
def get_response(url, personality, history):
12
    try:
13
        data = requests.post(url, json={"personality": [personality], "utterances_histories": [history]})
14
        return data.json()[0]
15
    except Exception:
16
        return ("", 0)
17

18

19
def main():
20
    args = parser.parse_args()
21
    cntx = json.load(open(args.true_file, "rt"))
22
    personality = cntx["personality"]
23

24
    valid_flags = []
25
    res_tasks = []
26
    for task in cntx["tasks"]:
27
        responses = []
28
        for _ in range(task["num_try"]):
29
            responses.append(get_response(args.from_url, personality, task["utterances_histories"]))
30
        responses = sorted(responses, key=lambda x: -x[1])
31
        responses = [
32
            {
33
                "valid": not task["targets"] or bool([True for tgt in task["targets"] if tgt in res]),
34
                "response": res,
35
                "confidence": conf,
36
            }
37
            for res, conf in responses
38
            if res
39
        ]
40
        task["responses"] = responses
41
        valid = bool([True for res in responses if res["valid"]])
42
        task["valid"] = valid
43
        res_tasks.append(task)
44
        valid_flags.append(not task["targets"] or valid)
45
    cntx["tasks"] = res_tasks
46
    json.dump(cntx, open(args.pred_file, "wt", encoding="utf-8"), indent=4)
47
    for valid in valid_flags:
48
        assert valid
49

50

51
if __name__ == "__main__":
52
    main()
53

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

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

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

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