async def start_training_process(
            self,
            team: Text = config.team_name,
            project_id: Text = config.project_name) -> Any:
        url = "/model/train"

        nlu_training_data = self.data_service.get_nlu_training_data_object(
            should_include_lookup_table_entries=True, )

        responses: Optional[Dict] = None

        if self.data_service.training_data_contains_retrieval_intents(
                nlu_training_data):
            try:
                from rasa.utils import io as io_utils

                responses = io_utils.read_yaml(self._get_responses_file_name())
            except ValueError as e:
                rasa_cli_utils.print_error(
                    "Could not complete training request as your training data contains "
                    "retrieval intents of the form 'intent/response_key' but there is no "
                    "responses file found.")
                raise ValueError(
                    f"Unable to train on data containing retrieval intents. "
                    f"Details:\n{e}")

        nlu_training_data = nlu_training_data.filter_training_examples(
            lambda ex: ex.get(RESPONSE_KEY_ATTRIBUTE) is None)
        md_formatted_data = nlu_training_data.nlu_as_markdown().strip()

        stories = self.story_services.fetch_stories(None)
        combined_stories = self.story_services.get_stories_markdown(stories)

        domain = self.domain_service.get_or_create_domain()
        domain_yaml = dump_obj_as_yaml_to_string(domain)

        _config = self.settings_service.get_config(team, project_id)
        config_yaml = dump_obj_as_yaml_to_string(_config)

        payload = dict(
            domain=domain_yaml,
            config=config_yaml,
            nlu=md_formatted_data,
            stories=combined_stories,
            responses=dump_obj_as_yaml_to_string(responses),
            force=False,
            save_to_default_model_directory=False,
        )

        async with self._session() as session:
            response = await session.post(
                self._request_url(url),
                params=self._query_parameters(),
                json=payload,
                timeout=24 * 60 * 60,  # 24 hours
            )
            return await response.read()
Ejemplo n.º 2
0
    def as_yaml(self, clean_before_dump=False):
        if clean_before_dump:
            domain_data = self.cleaned_domain()
        else:
            domain_data = self.as_dict()

        return utils.dump_obj_as_yaml_to_string(domain_data)
Ejemplo n.º 3
0
 def as_yaml(self):
     domain_data = self.as_dict()
     return utils.dump_obj_as_yaml_to_string(domain_data)