dream
45 строк · 1.5 Кб
1import logging2import sentry_sdk3from os import getenv4
5from df_engine.core import Context, Actor6
7sentry_sdk.init(getenv("SENTRY_DSN"))8logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)9logger = logging.getLogger(__name__)10
11
12def is_sf(sf_name="Open.Give.Opinion"):13def is_sf_handler(ctx: Context, actor: Actor, *args, **kwargs):14try:15last_utterance = ctx.misc.get("agent", {}).get("dialog", {}).get("human_utterances", {})[-1]16utterance_sfcs = last_utterance.get("annotations", {}).get("speech_function_classifier", [])17except KeyError:18utterance_sfcs = []19
20return sf_name in utterance_sfcs21
22return is_sf_handler23
24
25def is_ext_sf(ext_sf_name="React.Respond.Support.Reply.Agree"):26def is_ext_sf_handler(ctx: Context, actor: Actor, *args, **kwargs):27return ext_sf_name in ctx.misc.get("ext_sf", [[]])[-1]28
29return is_ext_sf_handler30
31
32def is_midas(midas_name="pos_answer", threshold=0.5):33def is_midas_handler(ctx: Context, actor: Actor, *args, **kwargs):34try:35last_utterance = ctx.misc.get("agent", {}).get("dialog", {}).get("human_utterances", {})[-1]36midas = last_utterance.get("annotations", {}).get("midas_classification", [{}])[-1]37midas_keys = [key for key, val in midas.items() if val > threshold]38except KeyError:39midas_keys = []40return midas_name in midas_keys41
42return is_midas_handler43
44
45speech_functions = is_sf46