python - Rasa 操作服务器对 Rasa 聊天机器人没有响应
问题描述
我正在构建一个机器人,它提出问题和答案是自由文本。因为逻辑是这样的“是接受答案列表中的答案还是其他任何东西”,我使用操作服务器进行此分析。
Rasa 版本是2.2
Rasa-sdk 版本是2.2
我都在单独的 docker 容器中运行。
这是我的actions.py
from typing import Any, Text, Dict, List
from rasa_sdk.events import SlotSet
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.types import DomainDict
class kysymyksienTarkistus1(Action):
def name(self) -> Text:
return "action_tarkista_kysymys_01"
def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
vastaus = tracker.latest_message["text"]
# tarkistetaan onko vastaus oikein
if vastaus == "puolikas":
dispatcher.utter_message(response = "utter_kysymys01_oikein")
#dispatcher.utter_message(text=f"vastaus oikein")
return []
else:
dispatcher.utter_message(response = "utter_kysymys01_vaarin")
#dispatcher.utter_message(text=f"vastaus väärin")
return []
class kysymyksienTarkistus2(Action):
def name(self) -> Text:
return "action_tarkista_kysymys_02"
def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
vastaus = tracker.latest_message["text"]
# tarkistetaan onko vastaus oikein
if vastaus == "100":
dispatcher.utter_message(response = "utter_kysymys02_oikein")
return []
else:
dispatcher.utter_message(response = "utter_kysymys02_vaarin")
return []
class kysymyksienTarkistus4(Action):
def name(self) -> Text:
return "action_tarkista_kysymys_04"
def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
vastaus = tracker.latest_message["text"]
# tarkistetaan onko vastaus oikein
if vastaus == "100":
dispatcher.utter_message(response = "utter_kysymys01_oikein")
return []
else:
dispatcher.utter_message(response = "utter_kysymys04_vaarin")
return []
class kysymyksienTarkistus5(Action):
def name(self) -> Text:
return "action_tarkista_kysymys_04"
def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
vastaus = tracker.latest_message["text"]
# tarkistetaan onko vastaus oikein
if vastaus == "100":
dispatcher.utter_message(response = "utter_kysymys01_oikein")
return []
else:
dispatcher.utter_message(response = "utter_kysymys05_vaarin")
return []
这是从外壳调试
2021-06-17 12:16:15 DEBUG rasa.core.policies.memoization - There is a memorised next action 'action_tarkista_kysymys_01'
2021-06-17 12:16:15 DEBUG rasa.core.policies.ensemble - Made prediction using user intent.
2021-06-17 12:16:15 DEBUG rasa.core.policies.ensemble - Added `DefinePrevUserUtteredFeaturization(False)` event.
2021-06-17 12:16:15 DEBUG rasa.core.policies.ensemble - Predicted next action using policy_0_AugmentedMemoizationPolicy.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Predicted next action 'action_tarkista_kysymys_01' with confidence 1.00.
2021-06-17 12:16:15 DEBUG rasa.core.actions.action - Calling action endpoint to run action 'action_tarkista_kysymys_01'.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Policy prediction ended with events '[<rasa.shared.core.events.DefinePrevUserUtteredFeaturization object at 0x7fde807a8190>]'.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Action 'action_tarkista_kysymys_01' ended with events '[BotUttered('None', {"elements": null, "quick_replies": null, "buttons": null, "attachment": null, "image": null, "custom": null}, {"response": "utter_kysymys01_oikein"}, 1623932175.3445601)]'.
2021-06-17 12:16:15 DEBUG rasa.core.policies.memoization - Current tracker state:
[state 1] user intent: aloita | previous action name: action_listen
[state 2] user intent: aloita | previous action name: utter_kysymys_01
[state 3] user intent: vastaus01 | previous action name: action_listen
[state 4] user intent: vastaus01 | previous action name: action_tarkista_kysymys_01
2021-06-17 12:16:15 DEBUG rasa.core.policies.memoization - There is a memorised next action 'action_listen'
2021-06-17 12:16:15 DEBUG rasa.core.policies.ensemble - Predicted next action using policy_0_AugmentedMemoizationPolicy.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Predicted next action 'action_listen' with confidence 1.00.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Policy prediction ended with events '[]'.
2021-06-17 12:16:15 DEBUG rasa.core.processor - Action 'action_listen' ended with events '[]'.
2021-06-17 12:16:15 DEBUG rasa.core.lock_store - Deleted lock for conversation '0e2913fd53434c9ab1b9d74f949c3808'.
这是故事的开始
version: "2.0"
stories:
- story: aloitus ja kysymys 01
steps:
- intent: aloita
- action: utter_kysymys_01
- intent: vastaus01
- action: action_tarkista_kysymys_01
- story: lopetus 01
steps:
- action: utter_kysymys01_oikein
- action: utter_lopetus
这里是 domain.yml
version: "2.0"
intents:
- aloita
- vastaus01
- vastaus02
- siirry_diaan_09
- siirry_diaan_10
responses:
utter_kysymys_01:
- text: "- Potilaalle on määrätty tyroksiinia 50 mikrogrammaa. Thyroxin tablettien vahvuus on 0,1 mg. Kuinka monta tablettia annat potilaalle? \n- Montako tablettia otat purkista ja annat potilaalle? \n- Kirjoita vastauksesi alle"
utter_kysymys01_oikein:
- text: Hienoa, oikea vastaus! potilas saa oikean annoksen lääkettä.
utter_lopetus:
- text: potilas saa oikean annoksen lääkettä.
image: "https://i.imgur.com/nGF1K8f.jpg"
utter_kysymys01_vaarin:
- text: "- Vastauksesi on väärin, lasketaan yhdessä uudestaan."
utter_kysymys_02:
- text: "- Aloitetaan siitä, että muunnetaan ensin yksiköt samaan yksikköön. \n- Koska potilaalle on määrätty lääkeannos mikrogrammoissa, sinun täytyy muuttaa lääkepurkin vahvuutena oleva milligrammat samaan yksikköön eli mikrogrammoiksi (potilaalle oli määrätty 50 mcg) \n- Purkissa olevan yhden tabletin vahvuus on? mikrogrammaa, kirjoita yksikönmuunnos vastauksesi alle."
utter_kysymys02_oikein:
- text: Hienoa, nyt on oikeat yksiköt laskua varten.
buttons:
- title: " en tiedä"
payload: "/siirry_diaan_09"
- title: " tarkistetaan mikä olikaan potilaalle määrätty annos "
payload: "/siirry_diaan_10"
- title: " annetaan potilaalle 0,05 tablettia"
payload: "/siirry_diaan_09"
utter_dia_09:
- text: Käydäänpä läpi miten yksikönmuunnokset tehdään.
utter_dia_10:
- text: "Käydäänpä läpi miten yksikönmuunnokset tehdään."
utter_kysymys02_vaarin:
- text: Väärin
utter_kysymys_03:
- text: Mikä olikaan potilaalle määrätty annos mikrogrammoina ? Tarvitset tämän tiedon pystyäksesi jatkamaan laskua. kirjoita vastauksesi alle.
utter_kysymys_04:
- text: Eli jos purkissa oleva tabletti on 100 mikrogrammaa ja potilaalle on määrätty 50 mikrogrammaa. Eli kuinka monta tablettia annat?
utter_dia_12:
- text: Kokeillaanpa laskea verranto -laskutavalla. X = kuinka monta tablettia pitää antaa?
utter_kysymys_05:
- text: Lasketaan verranto -laskutavalla /n- Kerrotaan ristiin 100 x X ja 50 x 1 /n- 100x = 50 /n- X = 50/100 /n- X = 0,5 eli ___ tbl /n- kirjoita vastauksesi alle
utter_kysymys05_vaarin:
- text: Katso matikkapirkon video verranto -laskutapa
utter_kysymys04_vaarin:
- text: lisää oikea teksti
utter_dia_13:
- text: tähän kanssa lisää
actions:
- action_tarkista_kysymys_01
- action_tarkista_kysymys_02
- action_tarkista_kysymys_04
- action_tarkista_kysymys_05
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true
#rasa #rasa2.2 #actionserver
解决方案
推荐阅读
- javascript - 为 cols 添加新的汇总行共享 2 个不同 cols 的相同值并处理时间差异
- swagger-ui - 参考 OpenAPI 3.0 中的 self
- java - 如何调用我已经在 XML 中的数据库中加载的数组列表
- android - 如何从 Firebase 实时数据库中读取推送的数据
- javascript - 选项卡作为单选选择并清除选项卡更改基础上的复选框 6
- angular - 使用 webpack 在 @angular/elements 组件包中重用 Angular
- excel - 如何将工作簿中的所有工作表导出到单个文本文件?
- azure-cognitive-search - 转义特殊字符和使用 Azure 搜索选择正确分析器的问题
- r - 在列表中的样本预测之外,指定要在 R 中预测的列表名称
- elasticsearch - 如何通过单个查询在弹性搜索中获得文档的排名?