def interactive(args: argparse.Namespace) -> None: _set_not_required_args(args) file_importer = TrainingDataImporter.load_from_config( args.config, args.domain, args.data) if args.model is None: loop = asyncio.get_event_loop() story_graph = loop.run_until_complete(file_importer.get_stories()) if not story_graph or story_graph.is_empty(): rasa.shared.utils.cli.print_error_and_exit( "Could not run interactive learning without either core data or a model containing core data." ) zipped_model = train.train_core( args) if args.core_only else train.train(args) if not zipped_model: rasa.shared.utils.cli.print_error_and_exit( "Could not train an initial model. Either pass paths " "to the relevant training files (`--data`, `--config`, `--domain`), " "or use 'rasa train' to train a model.") else: zipped_model = get_provided_model(args.model) if not (zipped_model and os.path.exists(zipped_model)): rasa.shared.utils.cli.print_error_and_exit( f"Interactive learning process cannot be started as no initial model was " f"found at path '{args.model}'. Use 'rasa train' to train a model." ) if not args.skip_visualization: logger.info(f"Loading visualization data from {args.data}.") perform_interactive_learning(args, zipped_model, file_importer)
def interactive(args: argparse.Namespace): _set_not_required_args(args) if args.model is None: check_training_data(args) zipped_model = train.train(args) else: zipped_model = get_provided_model(args.model) perform_interactive_learning(args, zipped_model)
def interactive(args: argparse.Namespace): args.fixed_model_name = None args.store_uncompressed = False if args.model is None: check_training_data(args) zipped_model = train.train(args) else: zipped_model = get_provided_model(args.model) perform_interactive_learning(args, zipped_model)
def test_pass_arguments_to_rasa_train(default_stack_config: Text, monkeypatch: MonkeyPatch) -> None: # Create parser parser = argparse.ArgumentParser() sub_parser = parser.add_subparsers() interactive.add_subparser(sub_parser, []) # Parse interactive command args = parser.parse_args(["interactive", "--config", default_stack_config]) interactive._set_not_required_args(args) # Mock actual training mock = Mock(return_value=TrainingResult(code=0)) monkeypatch.setattr(rasa, "train", mock.method) # If the `Namespace` object does not have all required fields this will throw train.train(args) # Assert `train` was actually called mock.method.assert_called_once()
def interactive(args: argparse.Namespace): from rasa.core.train import do_interactive_learning args.finetune = False # Don't support finetuning zipped_model = train.train(args) model_path = model.unpack_model(zipped_model) args.core, args.nlu = model.get_model_subdirectories(model_path) stories_directory = data.get_core_directory(args.data) do_interactive_learning(args, stories_directory) shutil.rmtree(model_path)
def interactive(args: argparse.Namespace): args.finetune = False # Don't support finetuning training_files = [ get_validated_path(f, "data", DEFAULT_DATA_PATH) for f in args.data ] story_directory, nlu_data_directory = data.get_core_nlu_directories( training_files) if not os.listdir(story_directory) or not os.listdir(nlu_data_directory): print_error( "Cannot train initial Rasa model. Please provide NLU data and Core data." ) exit(1) zipped_model = train.train(args) perform_interactive_learning(args, zipped_model)