Rasa version:
rasa 1.0.2
rasa-core-sdk 0.14.0
rasa-sdk 1.0.0
Python version:
Python 3.7.3
Operating system (windows, osx, ...):
Mac osx Mojave
Issue:
When I run the below command:
python dialogue_management_model.py
The error that pops up is this frame below:
WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
Traceback (most recent call last):
File "dialogue_management_model.py", line 38, in
train_dialogue()
File "dialogue_management_model.py", line 25, in train_dialogue
agent.train(data)
File "/usr/local/lib/python3.7/site-packages/rasa/core/agent.py", line 668, in train
self.policy_ensemble.train(training_trackers, self.domain, *kwargs)
File "/usr/local/lib/python3.7/site-packages/rasa/core/policies/ensemble.py", line 89, in train
policy.train(training_trackers, domain, *kwargs)
File "/usr/local/lib/python3.7/site-packages/rasa/core/policies/memoization.py", line 152, in train
for t in training_trackers
TypeError: 'coroutine' object is not iterable
sys:1: RuntimeWarning: coroutine 'Agent.load_data' was never awaited
I'm unsure of how this is happening, and I saw on another post to add "await" before when i train the agent, but that gave a syntax error. Please help!!
Content of configuration file (config.yml):
{
"pipeline":"spacy_sklearn",
"path":"./models/nlu",
"data":"./data/data.json"
}
Content of domain file (domain.yml):
slots:
location:
type: text
intents:
- greet
- goodbye
- inform
entities:
- location
templates:
utter_greet:
- 'Hello! How can I help you today?'
- 'Hi there!'
utter_goodbye:
- 'Goodbye! I hope I was of assistance today :)'
- 'Bye bye!'
- 'See you later!'
utter_ask_location:
- 'Could you specify the location?'
- 'In what location?'
- 'Where, exactly?'
actions:
- utter_greet
- utter_goodbye
- utter_ask_location
- action_weather
Content of dialogue_management_model.py:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import logging
import rasa.core
from rasa.core.agent import Agent
from rasa.core.policies.keras_policy import KerasPolicy
from rasa.core.policies.memoization import MemoizationPolicy
from rasa.core.interpreter import RasaNLUInterpreter
from rasa.core.run import serve_application
from rasa.core import config
logger = logging.getLogger(__name__)
def train_dialogue(domain_file = 'weather_domain.yml',
model_path = './models/dialogue',
training_data_file = './data/stories.md'):
agent = Agent(domain_file, policies = [MemoizationPolicy(), KerasPolicy(max_history=3, epochs=200, batch_size=50)])
data = agent.load_data(training_data_file)
agent.train(data)
agent.persist(model_path)
return agent
def run_weather_bot(serve_forever=True):
interpreter = RasaNLUInterpreter('./models/nlu/default/weathernlu')
agent = Agent.load('./models/dialogue', interpreter=interpreter)
rasa.core.run.serve_application(agent ,channel='cmdline')
return agent
if __name__ == '__main__':
train_dialogue()
run_weather_bot()
Thanks for raising this issue, @tabergma will get back to you about it soon.
same issue here
We use asyncio internally. agent.load_data is a coroutine that needs to be run and waited for. Please try out the following code:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import logging
import asyncio
import rasa.core
from rasa.core.agent import Agent
from rasa.core.policies.keras_policy import KerasPolicy
from rasa.core.policies.memoization import MemoizationPolicy
from rasa.core.interpreter import RasaNLUInterpreter
from rasa.core.run import serve_application
from rasa.core import config
logger = logging.getLogger(__name__)
async def train_dialogue(domain_file='weather_domain.yml',
model_path='./models/dialogue',
training_data_file='./data/stories.md'):
agent = Agent(domain_file, policies=[MemoizationPolicy(),
KerasPolicy(max_history=3, epochs=200,
batch_size=50)])
loop = asyncio.get_event_loop()
data = loop.run_until_complete(agent.load_data(training_data_file))
agent.train(data)
agent.persist(model_path)
return agent
def run_weather_bot(serve_forever=True):
interpreter = RasaNLUInterpreter('./models/nlu/default/weathernlu')
agent = Agent.load('./models/dialogue', interpreter=interpreter)
rasa.core.run.serve_application(agent, channel='cmdline')
return agent
if __name__ == '__main__':
train_dialogue()
run_weather_bot()
As you are using python3.7 you should be able to replace
loop = asyncio.get_event_loop()
data = loop.run_until_complete(agent.load_data(training_data_file))
````
by
asyncio.run(agent.load_data(training_data_file))
```
@tabergma, thank you! that solved the problem!
Hi @tabergma i had tried same but again getting same error. Please let me know what change required
async def train_dialogue(domain_file = 'domain.yml',
model_path = 'models/dialogue',
training_data_file = 'data/stories.md'):
agent = Agent(domain_file, policies = [MemoizationPolicy(),
KerasPolicy(max_history=3, epochs=200, batch_size=50)])
loop = asyncio.get_event_loop()
data = loop.run_until_complete( agent.load_data(training_data_file ))
agent.train(data)
agent.persist(model_path)
return agent
Error:dialogue_model.py:53: RuntimeWarning: coroutine 'train_dialogue' was never awaited
train_dialogue()
@neerajb1 As soon as you put the keyword async to the function definition, it becomes a coroutine. If you not await the coroutine, the error you mentioned will show up.
In your case you can simply remove the keyword async from train_dialogue as it is not needed. Please have a look at https://docs.python.org/3/library/asyncio-task.html#coroutine for more information.
Try the following:
def train_dialogue(
domain_file = 'domain.yml',
model_path = 'models/dialogue',
training_data_file = 'data/stories.md'
):
agent = Agent(domain_file, policies = [MemoizationPolicy(), KerasPolicy(max_history=3, epochs=200, batch_size=50)])
loop = asyncio.get_event_loop()
data = loop.run_until_complete( agent.load_data(training_data_file ))
agent.train(data)
agent.persist(model_path)
return agent
@tabergma
TypeError: 'coroutine' object is not callable

Can you please share your code, otherwise it is hard to figure out what is going wrong. Thanks.
@tabergma here is the code
domain_file` = 'C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-pipeline-
master/My_bot/domain_bot.txt'
policy_config = 'C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-pipeline-
master/My_bot/policies_bot.txt'
training_data_file = 'C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-pipeline-
master/My_bot/Data/stories_bot.txt'
fallback = FallbackPolicy(fallback_action_name="utter_unclear",
core_threshold=0.7,
nlu_threshold=0.7)
fallback2 = TwoStageFallbackPolicy()
agent = Agent(domain_file, policies=[MemoizationPolicy(), KerasPolicy(), fallback, fallback2])
loop = asyncio.get_event_loop()
training_data = agent.load_data(training_data_file)
data = loop.run_until_complete(training_data())
agent.train(data)
model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-pipeline-
master/My_bot/model/dialogue')`
Can you try
fallback = FallbackPolicy(fallback_action_name="utter_unclear",
core_threshold=0.7,
nlu_threshold=0.7)
fallback2 = TwoStageFallbackPolicy()
agent = Agent(domain_file, policies=[MemoizationPolicy(), KerasPolicy(), fallback, fallback2])
loop = asyncio.get_event_loop()
data = loop.run_until_complete(agent.load_data(training_data_file))
agent.train(data)
model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-pipeline-
master/My_bot/model/dialogue')`
@tabergma
Here's another error
`---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
5 agent = Agent(domain_file, policies=[MemoizationPolicy(), KerasPolicy(), fallback])
6 loop = asyncio.get_event_loop()
----> 7 data = loop.run_until_complete(agent.load_data(training_data_file))
8 agent.train(data)
9 interactive.run_interactive_learning(agent, training_data_file)
C:\ProgramData\Anaconda3\lib\asyncio\base_events.py in run_until_complete(self, future)
561
562 new_task = not futures.isfuture(future)
--> 563 future = tasks.ensure_future(future, loop=self)
564 if new_task:
565 # An exception is raised if the future didn't complete, so there
C:\ProgramData\Anaconda3\lib\asyncio\tasks.py in ensure_future(coro_or_future, loop)
590 return ensure_future(_wrap_awaitable(coro_or_future), loop=loop)
591 else:
--> 592 raise TypeError('An asyncio.Future, a coroutine or an awaitable is '
593 'required')
594
TypeError: An asyncio.Future, a coroutine or an awaitable is required`
@tabergma
Although running this alone trains the model;
agent = Agent(domain_file, policies=[MemoizationPolicy(max_history = 5), KerasPolicy(epochs = 100,
max_history = 5, batch_size = 50),fallback])
# loop = asyncio.get_event_loop()
training_data = agent.load_data(training_data_file)
# data = loop.run_until_complete(training_data())
agent.train(training_data)
# model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-
pipeline-master/My_bot/model/dialogue_final_test')
But when i try to do interactive learning, it is not happening
agent = Agent(domain_file, policies=[MemoizationPolicy(max_history = 5), KerasPolicy(epochs = 100,
max_history = 5, batch_size = 50),fallback])
# loop = asyncio.get_event_loop()
training_data = agent.load_data(training_data_file)
# data = loop.run_until_complete(training_data())
agent.train(training_data)
# model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf-
pipeline-master/My_bot/model/dialogue_final_test')
interactive.run_interactive_learning(agent, training_data_file)
Error:
` Bot loaded. Visualisation at http://localhost:5005/visualization.html.
Type a message and press enter (press 'Ctr-c' to exit).
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1]
Processed Story Blocks: 100%鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻坾
7/7 [00:00<00:00, 319.08it/s, #
trackers=1]
<WSGIServer at 0x1ff01e0d630 address=0.0.0.0:5005>
Exception in thread Thread-144:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\ProgramData\Anaconda3\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 1237, in
record_messages
_enter_user_message(sender_id, endpoint)
File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 1087, in
_enter_user_message
lambda a: not a)
File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 312, in
_ask_or_abort
answers = questions.ask()
File "C:\ProgramData\Anaconda3\lib\site-packages\questionary\question.py", line 45, in ask
return self.unsafe_ask(patch_stdout)
File "C:\ProgramData\Anaconda3\lib\site-packages\questionary\question.py", line 59, in unsafe_ask
return self.application.run()
File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line
709, in run
return run()
File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line
682, in run
run_until_complete(f, inputhook=inputhook)
File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\eventloop\defaults.py", line 123,
in run_until_complete
return get_event_loop().run_until_complete(future, inputhook=inputhook)
File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\eventloop\win32.py", line 60, in
run_until_complete
raise Exception('Event loop is already running')
Exception: Event loop is already running`
@ashish1471 Please ask your question in our forum (https://forum.rasa.com/). Also use ``` around your code so that it is more readable. Thanks.
@tabergma
Although running this alone trains the model;
agent = Agent(domain_file, policies=[MemoizationPolicy(max_history = 5), KerasPolicy(epochs = 100, max_history = 5, batch_size = 50),fallback]) # loop = asyncio.get_event_loop() training_data = agent.load_data(training_data_file) # data = loop.run_until_complete(training_data()) agent.train(training_data) # model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf- pipeline-master/My_bot/model/dialogue_final_test')But when i try to do interactive learning, it is not happening
agent = Agent(domain_file, policies=[MemoizationPolicy(max_history = 5), KerasPolicy(epochs = 100, max_history = 5, batch_size = 50),fallback]) # loop = asyncio.get_event_loop() training_data = agent.load_data(training_data_file) # data = loop.run_until_complete(training_data()) agent.train(training_data) # model_path = agent.persist('C:/Users/user/Downloads/tutorial-tf-pipeline-master/tutorial-tf- pipeline-master/My_bot/model/dialogue_final_test') interactive.run_interactive_learning(agent, training_data_file)Error:
` Bot loaded. Visualisation at http://localhost:5005/visualization.html.
Type a message and press enter (press 'Ctr-c' to exit).Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 0%| | 0/7 [00:00<?, ?it/s, # trackers=1] Processed Story Blocks: 100%鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻坾 7/7 [00:00<00:00, 319.08it/s, # trackers=1] <WSGIServer at 0x1ff01e0d630 address=0.0.0.0:5005> Exception in thread Thread-144: Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\threading.py", line 917, in _bootstrap_inner self.run() File "C:\ProgramData\Anaconda3\lib\threading.py", line 865, in run self._target(*self._args, **self._kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 1237, in record_messages _enter_user_message(sender_id, endpoint) File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 1087, in _enter_user_message lambda a: not a) File "C:\ProgramData\Anaconda3\lib\site-packages\rasa_core\training\interactive.py", line 312, in _ask_or_abort answers = questions.ask() File "C:\ProgramData\Anaconda3\lib\site-packages\questionary\question.py", line 45, in ask return self.unsafe_ask(patch_stdout) File "C:\ProgramData\Anaconda3\lib\site-packages\questionary\question.py", line 59, in unsafe_ask return self.application.run() File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 709, in run return run() File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 682, in run run_until_complete(f, inputhook=inputhook) File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\eventloop\defaults.py", line 123, in run_until_complete return get_event_loop().run_until_complete(future, inputhook=inputhook) File "C:\ProgramData\Anaconda3\lib\site-packages\prompt_toolkit\eventloop\win32.py", line 60, in run_until_complete raise Exception('Event loop is already running') Exception: Event loop is already running`
same problem. Did you able to solve it?
@tabergma thank you very much, you saved my life :)
Most helpful comment
We use asyncio internally.
agent.load_datais a coroutine that needs to be run and waited for. Please try out the following code:As you are using python3.7 you should be able to replace
```