示例#1
0
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)
示例#2
0
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)
示例#3
0
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()
示例#5
0
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)
示例#6
0
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)