I’m running: Python 3.7.3, rasa 1.0.7, rasa-nlu 0.15.0 and rasa-sdk 1.0.0
I run Python and Rasa on a Dell Windows 7 desktop with 32GB RAM
I have been following a number of the on-line tutorials from various contributors, but noticed that many of the examples are 6 to 12 months old, and so when trying to implement them with the above versions of Python and Rasa I run into troubles, typically due to Rasa being updated several times since these tutorials were first written
I have managed to amend my code to sort out most issues, but I can’t seem to complete the dialogue_management_model, particularly I can’t get the command line bot to work. I thin the train_dialogue routine is fine as that seems to work.
All the examples I have seen for run_bot use commands that are now deprecated, and I can’t find the current alternative methods. What should I do to get the code to run correctly?
from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import logging import os import asyncio from rasa.core.agent import Agent from rasa.core.interpreter import RasaNLUInterpreter from rasa.core.policies import KerasPolicy, MemoizationPolicy from rasa.utils.endpoints import EndpointConfig from bot_constants import NLU_MODELS_DIR, BOT_NAME from rasa.core.train import online logger = logging.getLogger(__name__) async def train_dialogue(domain_file = './data/domain.yml', model_path = './models/dialogue', training_data_file = './data/stories.md'): agent = Agent(domain_file, policies = [MemoizationPolicy(max_history = 5), KerasPolicy(max_history = 3, epochs = 300, batch_size = 50, validation_split = 0.2, augmentation_factor=50)]) training_data = await agent.load_data(training_data_file) agent.train(training_data) agent.persist(model_path) return agent def run_bot(serve_forever = True): interpreter = RasaNLUInterpreter(os.path.join(NLU_MODELS_DIR + '/' + BOT_NAME)) action_endpoint = EndpointConfig(url="http://localhost:5055/webhook") agent = Agent.load('./models/dialogue', interpreter=interpreter, action_endpoint=action_endpoint) if serve_forever: #None of the following methods appear to work online.serve_agent(agent) #channel = BotServerInputChannel(agent) #agent.handle_channel(channel) #agent.handle_channels([channel]) #I think agent.handle_channels(channel) expects an array of channels. Try agent.handle_channels([channel]) #agent.handle_channel(ConsoleInputChannel()) #rasa_core.run.serve_application(agent, channel='cmdline') return agent if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(train_dialogue()) run_bot()