from flow_modules.aiflows.HumanStandardInputFlowModule import HumanStandardInputFlow from typing import Dict, Any from aiflows.messages import UpdateMessage_Generic from aiflows.utils import logging log = logging.get_logger(f"aiflows.{__name__}") class FinalAns_Jarvis(HumanStandardInputFlow): """This class inherits from the HumanStandardInputFlow class. It is used to give the final answer to the user. *Input Interface*: - `answer`: The answer to the question asked by the user. *Output Interface*: - `result`: User's response to the final answer. - `summary`: A summary of the action. *Configuration parameters*: - `query_message_prompt_template`: The template of the message that is shown to the user. - `request_multi_line_input_flag`: A flag that indicates whether the user can give a multi-line input. - `end_of_input_string`: The string that indicates the end of the input. """ def run(self, input_data: Dict[str, Any]) -> Dict[str, Any]: """The run method of the class. :param input_data: The input data of the flow. :type input_data: Dict[str, Any] :return: The output data of the flow. :rtype: Dict[str, Any] """ query_message = self._get_message(self.query_message_prompt_template, input_data) state_update_message = UpdateMessage_Generic( created_by=self.flow_config['name'], updated_flow=self.flow_config["name"], data={"query_message": query_message}, ) self._log_message(state_update_message) log.info(query_message) human_input = self._read_input() answer = input_data["answer"] response = {} response["result"] = human_input response["summary"] = f"Final answer provided: {answer}; feedback of user: {human_input}" return response