Hello !There are many problems confused me when I use FormPolicy and can someone help me?The problem is : I have a form action named ‘number_form’ and two slots of it.When I first input some infomations with two slots,FormPolicy can not work sometimes and slot filling not right.And the terrible problem is that when I input message with one slot again,FormPolicy always did not work and slots did not be cleared, Rasa core return the last result to me instead of asking me fill another slot.Why?
Here is my some logs and configs.look forward to your reply!Thanks
Rasa Core logs:
192.168.0.110 - - [2019-06-08 11:44:37] "POST /webhooks/rest/webhook HTTP/1.1" 200 452 1.066897
2019-06-08 11:44:51 DEBUG rasa_core.tracker_store - Recreating tracker for id '152869574032212890:123'
2019-06-08 11:44:52 DEBUG rasa_core.processor - Received user message 'Help me check the license plate number AB12345' with intent '{'name': 'request_number', 'confidence': 0.964844109378438}' and entities
'[{'entity': 'item', 'value': 'license plate number', 'start': 2, 'end': 6, 'confidence': None, 'extractor': 'ner_mitie', 'processors': ['ner_synonyms']}, {'entity': 'number', 'value': 'AB12345', 'st
art': 6, 'end': 13, 'confidence': None, 'extractor': 'ner_mitie'}]'
2019-06-08 11:44:52 DEBUG rasa_core.processor - Logged UserUtterance - tracker now has 170 events
2019-06-08 11:44:52 DEBUG rasa_core.processor - Current slot values:
business: None
item: None
number: None
requested_slot: None
2019-06-08 11:44:52 DEBUG rasa_core.policies.memoization - Current tracker state [None, None, None, {}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_action_listen': 1.0, 'inten
t_request_number': 1.0}]
2019-06-08 11:44:52 DEBUG rasa_core.policies.memoization - There is no memorised next action
2019-06-08 11:44:52 DEBUG rasa_core.policies.form_policy - There is no active form
2019-06-08 11:44:52 DEBUG rasa_core.policies.ensemble - Predicted next action using policy_1_MobilePolicy
2019-06-08 11:44:52 DEBUG rasa_core.processor - Predicted next action 'number_form' with prob 0.99.
2019-06-08 11:44:52 DEBUG rasa_core.actions.action - Calling action endpoint to run action 'number_form'.
2019-06-08 11:44:52 WARNING py.warnings - E:\ComPython\LittleTeligen\RasaCore\venv\lib\site-packages\urllib3\connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request i
s being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
2019-06-08 11:44:52 DEBUG rasa_core.processor - Action 'number_form' ended with events '['Form(number_form)', 'SlotSet(key: item, value: license plate number)', 'SlotSet(key: number, value:AB12345)', 'SlotSet(key: item, value: None)', 'Form(None)', 'SlotSet(key: requested_slot, value: None)']'
2019-06-08 11:44:52 DEBUG rasa_core.processor - Bot utterance 'BotUttered(text: {"method": "queryCarInfo", "wccpproxy": "{\"result\": 1, \"resultMsg\": \"none\", \"list\": [{\"owne
rName\": \"\\u5f20\\u4e09\", \"idCard\": \"450981199305174536\", \"color\": \"\\u9ec4\\u8272\", \"firstRegDate\": \"2019-03-23\", \"brand\": \"BMW\", \"model\": \"x3\", \"carType\": \"
normal\", \"numType\": \"plate\", \"carNum\": \"\\u7ca4a12345\"}]}"}, data: {
"elements": null,
"buttons": [],
"attachment": null
})'
2019-06-08 11:44:52 DEBUG rasa_core.policies.memoization - Current tracker state [None, None, {}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_action_listen': 1.0, 'intent_requ
est_number': 1.0}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_number_form': 1.0, 'intent_request_number': 1.0}]
2019-06-08 11:44:52 DEBUG rasa_core.policies.memoization - There is no memorised next action
2019-06-08 11:44:52 DEBUG rasa_core.policies.form_policy - There is no active form
2019-06-08 11:44:52 DEBUG rasa_core.policies.ensemble - Predicted next action using policy_1_MobilePolicy
2019-06-08 11:44:52 DEBUG rasa_core.processor - Predicted next action 'action_listen' with prob 1.00.
2019-06-08 11:44:52 DEBUG rasa_core.processor - Action 'action_listen' ended with events '[]'
192.168.0.110 - - [2019-06-08 11:44:52] "POST /webhooks/rest/webhook HTTP/1.1" 200 1184 1.067888
2019-06-08 11:44:58 DEBUG rasa_core.tracker_store - Recreating tracker for id '152869574032212890:123'
2019-06-08 11:44:59 DEBUG rasa_core.processor - Received user message 'Help me query the phone number' with intent '{'name': 'request_number', 'confidence': 0.9043155210530247}' and entities '[{'e
ntity': 'item', 'value': 'phone number', 'start': 2, 'end': 7, 'confidence': None, 'extractor': 'ner_mitie', 'processors': ['ner_synonyms']}]'
2019-06-08 11:44:59 DEBUG rasa_core.processor - Logged UserUtterance - tracker now has 180 events
2019-06-08 11:44:59 DEBUG rasa_core.processor - Current slot values:
business: None
item: None
number: AB12345
requested_slot: None
2019-06-08 11:44:59 DEBUG rasa_core.policies.memoization - Current tracker state [None, {}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_action_listen': 1.0, 'intent_request_nu
mber': 1.0}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_number_form': 1.0, 'intent_request_number': 1.0}, {'entity_item': 1.0, 'prev_action_listen': 1.0, 'intent_request_number':
1.0}]
2019-06-08 11:44:59 DEBUG rasa_core.policies.memoization - There is no memorised next action
2019-06-08 11:44:59 DEBUG rasa_core.policies.form_policy - There is no active form
2019-06-08 11:44:59 DEBUG rasa_core.policies.ensemble - Predicted next action using policy_1_MobilePolicy
2019-06-08 11:44:59 DEBUG rasa_core.processor - Predicted next action 'number_form' with prob 1.00.
2019-06-08 11:44:59 DEBUG rasa_core.actions.action - Calling action endpoint to run action 'number_form'.
2019-06-08 11:44:59 WARNING py.warnings - E:\ComPython\LittleTeligen\RasaCore\venv\lib\site-packages\urllib3\connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request i
s being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
2019-06-08 11:44:59 DEBUG rasa_core.processor - Action 'number_form' ended with events '['Form(number_form)', 'SlotSet(key: number, value: AB12345)', 'SlotSet(key: item, value: None)', 'Form(None)', 'SlotSet(key: requested_slot, value: None)']'
2019-06-08 11:44:59 DEBUG rasa_core.processor - Bot utterance 'BotUttered(text: {"method": "queryCarInfo", "wccpproxy": "{\"result\": 1, \"resultMsg\": \"none\", \"list\": [{\"owne
rName\": \"\\u5f20\\u4e09\", \"idCard\": \"450981199305174536\", \"color\": \"\\u9ec4\\u8272\", \"firstRegDate\": \"2019-03-23\", \"brand\": \"BMW\", \"model\": \"x3\", \"carType\": \"
normal\", \"numType\": \"plate\", \"carNum\": \"\\u7ca4a12345\"}]}"}, data: {
"elements": null,
"buttons": [],
"attachment": null
})'
2019-06-08 11:44:59 DEBUG rasa_core.policies.memoization - Current tracker state [{}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_action_listen': 1.0, 'intent_request_number':
1.0}, {'entity_item': 1.0, 'entity_number': 1.0, 'prev_number_form': 1.0, 'intent_request_number': 1.0}, {'entity_item': 1.0, 'prev_action_listen': 1.0, 'intent_request_number': 1.0},
{'entity_item': 1.0, 'prev_number_form': 1.0, 'intent_request_number': 1.0}]
2019-06-08 11:44:59 DEBUG rasa_core.policies.memoization - There is no memorised next action
2019-06-08 11:44:59 DEBUG rasa_core.policies.form_policy - There is no active form
2019-06-08 11:44:59 DEBUG rasa_core.policies.ensemble - Predicted next action using policy_1_MobilePolicy
2019-06-08 11:44:59 DEBUG rasa_core.processor - Predicted next action 'action_listen' with prob 1.00.
2019-06-08 11:44:59 DEBUG rasa_core.processor - Action 'action_listen' ended with events '[]'
192.168.0.110 - - [2019-06-08 11:44:59] "POST /webhooks/rest/webhook HTTP/1.1" 200 1184 1.083746
Here is my story:
# happy with request number
* greet
- utter_answer_greet
* request_number
- number_form
- form{"name": "number_form"}
- form{"name": null}
* thanks
- utter_answer_thanks
Here is my action code:
class NumberForm(FormAction):
def name(self):
"""Request Number action唯一标识"""
return "number_form"
def validate_number(self, value, dispatcher, tracker, domain):
pass
def validate_item(self, value, dispatcher, tracker, domain):
pass
@staticmethod
def required_slots(tracker):
number = tracker.get_slot('number')
if number is not None:
return ["number"]
return ["item", "number"]
def submit(self, dispatcher, tracker, domain):
inputItem = tracker.get_slot("item")
inputNum = tracker.get_slot("number")
print("##### current slot:item={0},number={1}".format(inputItem, inputNum))
return []
Here is my train core model configs:
def train_dialogue_keras_form(domain_file="configs/core/domain_form.yml",
model_path="models/dialogue_keras_form_new",
training_data_file="data/stories_data/form"):
fallback = FallbackPolicy(
fallback_action_name="action_default_fallback",
nlu_threshold=0.4,
core_threshold=0.3
)
agent = Agent(domain_file,
policies=[MemoizationPolicy(max_history=5),
MobilePolicy(epochs=100, batch_size=16),
FormPolicy(), fallback])
training_data = agent.load_data(training_data_file)
agent.train(
training_data,
validation_split=0.2
)
agent.persist(model_path)
return agent
my domain.yml is(section):
forms:
- number_form
intents:
- affirm
- deny
- greet
- goodbye
- thanks
- whoareyou
- whattodo
- whereyoufrom
- mod_happy
- mod_unhappy
- mod_angry
- mod_worried
- request_number
- request_business
- search_item
- say_jokes
- ask_age
- ask_sex
- out_of_scope
- welcome
slots:
item:
type: unfeaturized
auto_fill: false
number:
type: unfeaturized
auto_fill: false
business:
type: unfeaturized
auto_fill: false
entities:
- item
- number
- business