def create_policy(self, featurizer, priority): max_history = None if isinstance(featurizer, MaxHistoryTrackerFeaturizer): max_history = featurizer.max_history p = AugmentedMemoizationPolicy(priority=priority, max_history=max_history) return p
def test_agent_train(tmpdir, default_domain): training_data_file = 'examples/moodbot/data/stories.md' agent = Agent("examples/moodbot/domain.yml", policies=[AugmentedMemoizationPolicy()]) training_data = agent.load_data(training_data_file) agent.train(training_data) agent.persist(tmpdir.strpath) loaded = Agent.load(tmpdir.strpath) # test domain assert [a.name() for a in loaded.domain.actions] == \ [a.name() for a in agent.domain.actions] assert loaded.domain.intents == agent.domain.intents assert loaded.domain.entities == agent.domain.entities assert loaded.domain.templates == agent.domain.templates assert [s.name for s in loaded.domain.slots] == \ [s.name for s in agent.domain.slots] # test policies assert type(loaded.policy_ensemble) is type( agent.policy_ensemble) # nopep8 assert [type(p) for p in loaded.policy_ensemble.policies] == \ [type(p) for p in agent.policy_ensemble.policies]
def test_agent_wrong_use_of_load(tmpdir, default_domain): training_data_file = 'examples/moodbot/data/stories.md' agent = Agent("examples/moodbot/domain.yml", policies=[AugmentedMemoizationPolicy()]) with pytest.raises(ValueError): # try to load a model file from a data path, which is nonsense and # should fail properly agent.load(training_data_file)
def default_processor(default_domain, default_nlg): agent = Agent(default_domain, SimplePolicyEnsemble([AugmentedMemoizationPolicy()]), interpreter=RegexInterpreter()) training_data = agent.load_data(DEFAULT_STORIES_FILE) agent.train(training_data) tracker_store = InMemoryTrackerStore(default_domain) return MessageProcessor(agent.interpreter, agent.policy_ensemble, default_domain, tracker_store, default_nlg)
async def prepared_agent(tmpdir_factory) -> Agent: model_path = tmpdir_factory.mktemp("model").strpath agent = Agent("data/test_domains/default.yml", policies=[AugmentedMemoizationPolicy(max_history=3)]) training_data = await agent.load_data(DEFAULT_STORIES_FILE) agent.train(training_data) agent.persist(model_path) return agent
def core_server(tmpdir_factory): model_path = tmpdir_factory.mktemp("model").strpath agent = Agent("data/test_domains/default.yml", policies=[AugmentedMemoizationPolicy(max_history=3)]) training_data = agent.load_data(DEFAULT_STORIES_FILE) agent.train(training_data) agent.persist(model_path) return server.create_app(model_path, interpreter=RegexInterpreter())
def core_server(tmpdir_factory): model_path = tmpdir_factory.mktemp("model").strpath agent = Agent("data/test_domains/default.yml", policies=[AugmentedMemoizationPolicy(max_history=3)]) training_data = agent.load_data(DEFAULT_STORIES_FILE) agent.train(training_data) agent.persist(model_path) loaded_agent = Agent.load(model_path, interpreter=RegexInterpreter()) app = server.create_app(loaded_agent) channel.register([RestInput()], app, agent.handle_message, "/webhooks/") return app
def train_dialogue(domain_file='bank_domain.yml', model_path='./models/dialogue', training_data_file='./data/stories.md'): agent = Agent(domain_file, policies=[ MemoizationPolicy(), KerasPolicy(max_history=3, epochs=150, batch_size=50), AugmentedMemoizationPolicy(max_history=3) ]) data = agent.load_data(training_data_file) agent.train(data) agent.persist(model_path) return agent