dream

Форк
0
/
output_formatters.py 
48 строк · 1.9 Кб
1
from typing import Dict
2
import logging
3
import difflib
4

5

6
logger = logging.getLogger(__name__)
7
logger.setLevel(logging.INFO)
8

9

10
def http_api_output_formatter(payload: Dict):
11
    response = payload["utterances"][-1]["text"]
12
    active_skill = payload["utterances"][-1]["active_skill"]
13
    ssml_tagged_response = []
14
    for hyp in payload["utterances"][-2]["hypotheses"]:
15
        if hyp.get("skill_name") == active_skill and hyp.get("ssml_tagged_text"):
16
            if difflib.SequenceMatcher(None, hyp.get("text", "").split(), response.split()).ratio() > 0.9:
17
                ssml_tagged_response.append(hyp["ssml_tagged_text"])
18
    ssml_tagged_response = ssml_tagged_response[-1] if ssml_tagged_response else ""
19
    ret_val = {
20
        "user_id": payload["human"]["user_telegram_id"],
21
        "response": response,
22
        "ssml_tagged_response": ssml_tagged_response,
23
        "active_skill": active_skill,
24
    }
25
    logger.info(f"http api output {ret_val}")
26
    return ret_val
27

28

29
def http_debug_output_formatter(payload: Dict):
30
    response = payload["utterances"][-1]["text"]
31
    active_skill = payload["utterances"][-1]["active_skill"]
32
    ssml_tagged_response = []
33
    for hyp in payload["utterances"][-2]["hypotheses"]:
34
        if hyp.get("skill_name") == active_skill and hyp.get("ssml_tagged_text"):
35
            if difflib.SequenceMatcher(None, hyp.get("text", "").split(), response.split()).ratio() > 0.9:
36
                ssml_tagged_response.append(hyp["ssml_tagged_text"])
37
    ssml_tagged_response = ssml_tagged_response[-1] if ssml_tagged_response else ""
38
    ret_val = {
39
        "user_id": payload["human"]["user_telegram_id"],
40
        "response": response,
41
        "active_skill": active_skill,
42
        "ssml_tagged_response": ssml_tagged_response,
43
        "debug_output": payload["utterances"][-2]["hypotheses"],
44
        "attributes": payload["utterances"][-1].get("attributes", {}),
45
    }
46

47
    logger.info(f"http api output {ret_val}")
48
    return ret_val
49

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

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

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

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