コード例 #1
0
ファイル: skill.py プロジェクト: deepmipt/deepy
def run_skill(state: State, modes: List = [skill_attrs.modes.intro]):

    model_results = run_models(models, state.human_utterances)
    true_model_names = cmd_postprocessing(model_results, model_name_only=True)
    true_cmds = cmd_postprocessing(model_results, cmd_only=True)

    skill_state_update = {}
    # print(f"<{skill_attrs.skill_name}> skill_state: {skill_state}")
    # print(f"<{skill_attrs.skill_name}> true_model_names: {true_model_names}")
    # print(f"<{skill_attrs.skill_name}> true_cmds: {true_cmds}")

    # handle loop
    proceed = True
    handler_state = {}
    i = 0
    while proceed:
        i += 1
        if skill_attrs.modes.intro in modes:
            skill_state = {}
            next_step = ""
        else:
            skill_state = state.get_skill_state(skill_attrs.skill_name)
            next_step = skill_state.get("next_step", "")

        # # if next_step in ["", "are_you_ask"]:

        # if next_step in ["are_you_ask"]:
        #     proceed, handler_state, skill_state_update, state = are_you_ask_handler(
        #         handler_state, skill_state, state, true_model_names, true_cmds
        #     )
        if next_step in ["", "have_you_played"]:
            proceed, handler_state, skill_state_update, state = have_you_played_handler(
                handler_state, skill_state, state, true_model_names, true_cmds)
        elif next_step in ["do_you_like"]:
            proceed, handler_state, skill_state_update, state = do_you_like_handler(
                handler_state, skill_state, state, true_model_names, true_cmds)

        state.update_skill_state(skill_attrs.skill_name, skill_state_update)
        # logger.info(f"{i}: next_step = {next_step}")
        # logger.info(skill_state_update)

    # print(f"skill_state_update = {skill_state_update}")

    text = handler_state.get("text", ["Sorry, i can not answer."])
    text = " ".join(text)
    confidence = handler_state.get("confidence", 0.0)
    scenario = handler_state.get("scenario", False)

    state.add_hypothesis(
        skill_name=skill_attrs.skill_name,
        text=text,
        confidence=confidence,
        scenario=scenario,
    )

    return state
コード例 #2
0
def run_skill(state: State, modes: List = [skill_attrs.modes.intro]):

    skill_state = state.get_skill_state(skill_attrs.skill_name)
    model_results = run_models(models, state.human_utterances)
    true_model_names = cmd_postprocessing(model_results, model_name_only=True)
    true_cmds = cmd_postprocessing(model_results, cmd_only=True)
    text = "Sorry, have no idea what to say."
    confidence = 0.0
    scenario = False
    skill_state_update = {}

    # print(f"<{skill_attrs.skill_name}> true_model_names: {true_model_names}")
    # print(f"<{skill_attrs.skill_name}> true_cmds: {true_cmds}")

    if skill_attrs.modes.intro in modes:
        if set(true_model_names) & set(
            ["last_year", "this_year", "month", "week"]):
            state, text, confidence, skill_state_update, scenario = select_top_handler(
                state, skill_state, true_model_names, true_cmds)
        else:
            state, text, confidence, skill_state_update, scenario = intro_handler(
                state, skill_state, true_model_names, true_cmds)
    else:
        current_step = skill_state.get("next_step", "")

        if current_step == "describe_top":
            state, text, confidence, skill_state_update, scenario = describe_top_handler(
                state, skill_state, true_model_names, true_cmds)
            state.update_st2_policy({"game_conversation": True})

        elif current_step == "select_top" or (set(true_model_names) & set(
            ["last_year", "this_year", "month", "week"])):
            state, text, confidence, skill_state_update, scenario = select_top_handler(
                state, skill_state, true_model_names, true_cmds)

    state.add_hypothesis(
        skill_name=skill_attrs.skill_name,
        text=text,
        confidence=confidence,
        scenario=scenario,
    )
    state.update_skill_state(skill_attrs.skill_name, skill_state_update)

    return state