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
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