rasa-pro 3.8.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

Files changed (644) hide show
  1. README.md +380 -0
  2. rasa/__init__.py +10 -0
  3. rasa/__main__.py +151 -0
  4. rasa/anonymization/__init__.py +2 -0
  5. rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
  6. rasa/anonymization/anonymization_pipeline.py +287 -0
  7. rasa/anonymization/anonymization_rule_executor.py +260 -0
  8. rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
  9. rasa/anonymization/schemas/config.yml +47 -0
  10. rasa/anonymization/utils.py +117 -0
  11. rasa/api.py +146 -0
  12. rasa/cli/__init__.py +5 -0
  13. rasa/cli/arguments/__init__.py +0 -0
  14. rasa/cli/arguments/data.py +81 -0
  15. rasa/cli/arguments/default_arguments.py +165 -0
  16. rasa/cli/arguments/evaluate.py +65 -0
  17. rasa/cli/arguments/export.py +51 -0
  18. rasa/cli/arguments/interactive.py +74 -0
  19. rasa/cli/arguments/run.py +204 -0
  20. rasa/cli/arguments/shell.py +13 -0
  21. rasa/cli/arguments/test.py +211 -0
  22. rasa/cli/arguments/train.py +263 -0
  23. rasa/cli/arguments/visualize.py +34 -0
  24. rasa/cli/arguments/x.py +30 -0
  25. rasa/cli/data.py +292 -0
  26. rasa/cli/e2e_test.py +566 -0
  27. rasa/cli/evaluate.py +222 -0
  28. rasa/cli/export.py +251 -0
  29. rasa/cli/inspect.py +63 -0
  30. rasa/cli/interactive.py +164 -0
  31. rasa/cli/license.py +65 -0
  32. rasa/cli/markers.py +78 -0
  33. rasa/cli/project_templates/__init__.py +0 -0
  34. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  35. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  36. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  37. rasa/cli/project_templates/calm/actions/db.py +57 -0
  38. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  39. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  40. rasa/cli/project_templates/calm/config.yml +12 -0
  41. rasa/cli/project_templates/calm/credentials.yml +33 -0
  42. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  43. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  44. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  45. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  46. rasa/cli/project_templates/calm/domain/add_contact.yml +33 -0
  47. rasa/cli/project_templates/calm/domain/list_contacts.yml +14 -0
  48. rasa/cli/project_templates/calm/domain/remove_contact.yml +31 -0
  49. rasa/cli/project_templates/calm/domain/shared.yml +5 -0
  50. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  51. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  52. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  53. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  54. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  55. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  58. rasa/cli/project_templates/calm/endpoints.yml +45 -0
  59. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  60. rasa/cli/project_templates/default/actions/actions.py +27 -0
  61. rasa/cli/project_templates/default/config.yml +44 -0
  62. rasa/cli/project_templates/default/credentials.yml +33 -0
  63. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  64. rasa/cli/project_templates/default/data/rules.yml +13 -0
  65. rasa/cli/project_templates/default/data/stories.yml +30 -0
  66. rasa/cli/project_templates/default/domain.yml +34 -0
  67. rasa/cli/project_templates/default/endpoints.yml +42 -0
  68. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  69. rasa/cli/project_templates/tutorial/actions.py +22 -0
  70. rasa/cli/project_templates/tutorial/config.yml +11 -0
  71. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  72. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  73. rasa/cli/project_templates/tutorial/domain.yml +17 -0
  74. rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
  75. rasa/cli/run.py +136 -0
  76. rasa/cli/scaffold.py +268 -0
  77. rasa/cli/shell.py +141 -0
  78. rasa/cli/studio/__init__.py +0 -0
  79. rasa/cli/studio/download.py +51 -0
  80. rasa/cli/studio/studio.py +110 -0
  81. rasa/cli/studio/train.py +59 -0
  82. rasa/cli/studio/upload.py +85 -0
  83. rasa/cli/telemetry.py +90 -0
  84. rasa/cli/test.py +280 -0
  85. rasa/cli/train.py +260 -0
  86. rasa/cli/utils.py +453 -0
  87. rasa/cli/visualize.py +40 -0
  88. rasa/cli/x.py +205 -0
  89. rasa/constants.py +37 -0
  90. rasa/core/__init__.py +17 -0
  91. rasa/core/actions/__init__.py +0 -0
  92. rasa/core/actions/action.py +1450 -0
  93. rasa/core/actions/action_clean_stack.py +59 -0
  94. rasa/core/actions/action_run_slot_rejections.py +207 -0
  95. rasa/core/actions/action_trigger_chitchat.py +31 -0
  96. rasa/core/actions/action_trigger_flow.py +109 -0
  97. rasa/core/actions/action_trigger_search.py +31 -0
  98. rasa/core/actions/constants.py +2 -0
  99. rasa/core/actions/forms.py +737 -0
  100. rasa/core/actions/loops.py +111 -0
  101. rasa/core/actions/two_stage_fallback.py +186 -0
  102. rasa/core/agent.py +557 -0
  103. rasa/core/auth_retry_tracker_store.py +122 -0
  104. rasa/core/brokers/__init__.py +0 -0
  105. rasa/core/brokers/broker.py +126 -0
  106. rasa/core/brokers/file.py +58 -0
  107. rasa/core/brokers/kafka.py +322 -0
  108. rasa/core/brokers/pika.py +387 -0
  109. rasa/core/brokers/sql.py +86 -0
  110. rasa/core/channels/__init__.py +55 -0
  111. rasa/core/channels/audiocodes.py +463 -0
  112. rasa/core/channels/botframework.py +339 -0
  113. rasa/core/channels/callback.py +85 -0
  114. rasa/core/channels/channel.py +419 -0
  115. rasa/core/channels/console.py +243 -0
  116. rasa/core/channels/development_inspector.py +93 -0
  117. rasa/core/channels/facebook.py +422 -0
  118. rasa/core/channels/hangouts.py +335 -0
  119. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  120. rasa/core/channels/inspector/.gitignore +23 -0
  121. rasa/core/channels/inspector/README.md +54 -0
  122. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  123. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  124. rasa/core/channels/inspector/custom.d.ts +3 -0
  125. rasa/core/channels/inspector/dist/assets/arc-5623b6dc.js +1 -0
  126. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  127. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-685c106a.js +10 -0
  128. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-8cbed007.js +2 -0
  129. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-5889cf12.js +2 -0
  130. rasa/core/channels/inspector/dist/assets/createText-62fc7601-24c249d7.js +7 -0
  131. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-7dd06a75.js +4 -0
  132. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-62c1e54c.js +51 -0
  133. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-ce49b86f.js +6 -0
  134. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-4067e48f.js +4 -0
  135. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-85583a23.js +1 -0
  136. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-59fe4051.js +139 -0
  137. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-47e3a43b.js +266 -0
  138. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-5a2ac0d9.js +70 -0
  139. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  140. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  141. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  142. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  143. rasa/core/channels/inspector/dist/assets/index-268a75c0.js +1040 -0
  144. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-dfb8efc4.js +1 -0
  145. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  146. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-b0c470f2.js +7 -0
  147. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  148. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-2edb829a.js +139 -0
  149. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  150. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  151. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  152. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  153. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  154. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  155. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  156. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  157. rasa/core/channels/inspector/dist/assets/layout-b6873d69.js +1 -0
  158. rasa/core/channels/inspector/dist/assets/line-1efc5781.js +1 -0
  159. rasa/core/channels/inspector/dist/assets/linear-661e9b94.js +1 -0
  160. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-2d2e727f.js +109 -0
  161. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  162. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  163. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-9d3ea93d.js +35 -0
  164. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-06a178a2.js +7 -0
  165. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-0bfedffc.js +52 -0
  166. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-d76d0a04.js +8 -0
  167. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-37bb4341.js +122 -0
  168. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-f52f7f57.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-4a986a20.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/styles-080da4f6-7dd9ae12.js +110 -0
  171. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-46e1ca14.js +159 -0
  172. rasa/core/channels/inspector/dist/assets/styles-9c745c82-4a97439a.js +207 -0
  173. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-823917a3.js +1 -0
  174. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-9ea72896.js +61 -0
  175. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-b631a8b6.js +7 -0
  176. rasa/core/channels/inspector/dist/index.html +39 -0
  177. rasa/core/channels/inspector/index.html +37 -0
  178. rasa/core/channels/inspector/jest.config.ts +13 -0
  179. rasa/core/channels/inspector/package.json +48 -0
  180. rasa/core/channels/inspector/setupTests.ts +2 -0
  181. rasa/core/channels/inspector/src/App.tsx +170 -0
  182. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +97 -0
  183. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  184. rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -0
  185. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  186. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  187. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +19 -0
  188. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  189. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  190. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  191. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  192. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  193. rasa/core/channels/inspector/src/helpers/formatters.test.ts +385 -0
  194. rasa/core/channels/inspector/src/helpers/formatters.ts +239 -0
  195. rasa/core/channels/inspector/src/helpers/utils.ts +42 -0
  196. rasa/core/channels/inspector/src/main.tsx +13 -0
  197. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  198. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  199. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  200. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  201. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  202. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  203. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  204. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  205. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  206. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  207. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  208. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  209. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  210. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  211. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  212. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  213. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  214. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  215. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  216. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  217. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  218. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  222. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  223. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  224. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  225. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  226. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  227. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  228. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  229. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  230. rasa/core/channels/inspector/src/types.ts +64 -0
  231. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  232. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  233. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  234. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  235. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  236. rasa/core/channels/inspector/tsconfig.json +26 -0
  237. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  238. rasa/core/channels/inspector/vite.config.ts +8 -0
  239. rasa/core/channels/inspector/yarn.lock +6156 -0
  240. rasa/core/channels/mattermost.py +229 -0
  241. rasa/core/channels/rasa_chat.py +126 -0
  242. rasa/core/channels/rest.py +210 -0
  243. rasa/core/channels/rocketchat.py +175 -0
  244. rasa/core/channels/slack.py +620 -0
  245. rasa/core/channels/socketio.py +274 -0
  246. rasa/core/channels/telegram.py +298 -0
  247. rasa/core/channels/twilio.py +169 -0
  248. rasa/core/channels/twilio_voice.py +367 -0
  249. rasa/core/channels/vier_cvg.py +374 -0
  250. rasa/core/channels/webexteams.py +135 -0
  251. rasa/core/concurrent_lock_store.py +210 -0
  252. rasa/core/constants.py +107 -0
  253. rasa/core/evaluation/__init__.py +0 -0
  254. rasa/core/evaluation/marker.py +267 -0
  255. rasa/core/evaluation/marker_base.py +925 -0
  256. rasa/core/evaluation/marker_stats.py +294 -0
  257. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  258. rasa/core/exceptions.py +29 -0
  259. rasa/core/exporter.py +284 -0
  260. rasa/core/featurizers/__init__.py +0 -0
  261. rasa/core/featurizers/precomputation.py +410 -0
  262. rasa/core/featurizers/single_state_featurizer.py +402 -0
  263. rasa/core/featurizers/tracker_featurizers.py +1172 -0
  264. rasa/core/http_interpreter.py +89 -0
  265. rasa/core/information_retrieval/__init__.py +0 -0
  266. rasa/core/information_retrieval/faiss.py +116 -0
  267. rasa/core/information_retrieval/information_retrieval.py +72 -0
  268. rasa/core/information_retrieval/milvus.py +59 -0
  269. rasa/core/information_retrieval/qdrant.py +102 -0
  270. rasa/core/jobs.py +63 -0
  271. rasa/core/lock.py +139 -0
  272. rasa/core/lock_store.py +344 -0
  273. rasa/core/migrate.py +404 -0
  274. rasa/core/nlg/__init__.py +3 -0
  275. rasa/core/nlg/callback.py +147 -0
  276. rasa/core/nlg/contextual_response_rephraser.py +270 -0
  277. rasa/core/nlg/generator.py +230 -0
  278. rasa/core/nlg/interpolator.py +143 -0
  279. rasa/core/nlg/response.py +155 -0
  280. rasa/core/nlg/summarize.py +69 -0
  281. rasa/core/policies/__init__.py +0 -0
  282. rasa/core/policies/ensemble.py +329 -0
  283. rasa/core/policies/enterprise_search_policy.py +717 -0
  284. rasa/core/policies/enterprise_search_prompt_template.jinja2 +62 -0
  285. rasa/core/policies/flow_policy.py +205 -0
  286. rasa/core/policies/flows/__init__.py +0 -0
  287. rasa/core/policies/flows/flow_exceptions.py +44 -0
  288. rasa/core/policies/flows/flow_executor.py +582 -0
  289. rasa/core/policies/flows/flow_step_result.py +43 -0
  290. rasa/core/policies/intentless_policy.py +924 -0
  291. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  292. rasa/core/policies/memoization.py +538 -0
  293. rasa/core/policies/policy.py +716 -0
  294. rasa/core/policies/rule_policy.py +1276 -0
  295. rasa/core/policies/ted_policy.py +2146 -0
  296. rasa/core/policies/unexpected_intent_policy.py +1015 -0
  297. rasa/core/processor.py +1331 -0
  298. rasa/core/run.py +315 -0
  299. rasa/core/secrets_manager/__init__.py +0 -0
  300. rasa/core/secrets_manager/constants.py +32 -0
  301. rasa/core/secrets_manager/endpoints.py +391 -0
  302. rasa/core/secrets_manager/factory.py +233 -0
  303. rasa/core/secrets_manager/secret_manager.py +262 -0
  304. rasa/core/secrets_manager/vault.py +576 -0
  305. rasa/core/test.py +1337 -0
  306. rasa/core/tracker_store.py +1664 -0
  307. rasa/core/train.py +107 -0
  308. rasa/core/training/__init__.py +89 -0
  309. rasa/core/training/converters/__init__.py +0 -0
  310. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  311. rasa/core/training/interactive.py +1742 -0
  312. rasa/core/training/story_conflict.py +381 -0
  313. rasa/core/training/training.py +93 -0
  314. rasa/core/utils.py +344 -0
  315. rasa/core/visualize.py +70 -0
  316. rasa/dialogue_understanding/__init__.py +0 -0
  317. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  318. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  319. rasa/dialogue_understanding/coexistence/intent_based_router.py +189 -0
  320. rasa/dialogue_understanding/coexistence/llm_based_router.py +261 -0
  321. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  322. rasa/dialogue_understanding/commands/__init__.py +45 -0
  323. rasa/dialogue_understanding/commands/can_not_handle_command.py +61 -0
  324. rasa/dialogue_understanding/commands/cancel_flow_command.py +116 -0
  325. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +48 -0
  326. rasa/dialogue_understanding/commands/clarify_command.py +77 -0
  327. rasa/dialogue_understanding/commands/command.py +85 -0
  328. rasa/dialogue_understanding/commands/correct_slots_command.py +288 -0
  329. rasa/dialogue_understanding/commands/error_command.py +67 -0
  330. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  331. rasa/dialogue_understanding/commands/handle_code_change_command.py +64 -0
  332. rasa/dialogue_understanding/commands/human_handoff_command.py +57 -0
  333. rasa/dialogue_understanding/commands/knowledge_answer_command.py +48 -0
  334. rasa/dialogue_understanding/commands/noop_command.py +45 -0
  335. rasa/dialogue_understanding/commands/set_slot_command.py +125 -0
  336. rasa/dialogue_understanding/commands/skip_question_command.py +66 -0
  337. rasa/dialogue_understanding/commands/start_flow_command.py +98 -0
  338. rasa/dialogue_understanding/generator/__init__.py +6 -0
  339. rasa/dialogue_understanding/generator/command_generator.py +257 -0
  340. rasa/dialogue_understanding/generator/command_prompt_template.jinja2 +57 -0
  341. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  342. rasa/dialogue_understanding/generator/flow_retrieval.py +410 -0
  343. rasa/dialogue_understanding/generator/llm_command_generator.py +637 -0
  344. rasa/dialogue_understanding/generator/nlu_command_adapter.py +157 -0
  345. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  346. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  347. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  348. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  349. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  350. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  351. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  352. rasa/dialogue_understanding/patterns/completed.py +40 -0
  353. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  354. rasa/dialogue_understanding/patterns/correction.py +278 -0
  355. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +243 -0
  356. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  357. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  358. rasa/dialogue_understanding/patterns/search.py +37 -0
  359. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  360. rasa/dialogue_understanding/processor/__init__.py +0 -0
  361. rasa/dialogue_understanding/processor/command_processor.py +578 -0
  362. rasa/dialogue_understanding/processor/command_processor_component.py +39 -0
  363. rasa/dialogue_understanding/stack/__init__.py +0 -0
  364. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  365. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  366. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  367. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  368. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  369. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  370. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  371. rasa/dialogue_understanding/stack/utils.py +211 -0
  372. rasa/e2e_test/__init__.py +0 -0
  373. rasa/e2e_test/constants.py +10 -0
  374. rasa/e2e_test/e2e_test_case.py +322 -0
  375. rasa/e2e_test/e2e_test_result.py +34 -0
  376. rasa/e2e_test/e2e_test_runner.py +659 -0
  377. rasa/e2e_test/e2e_test_schema.yml +67 -0
  378. rasa/engine/__init__.py +0 -0
  379. rasa/engine/caching.py +464 -0
  380. rasa/engine/constants.py +17 -0
  381. rasa/engine/exceptions.py +14 -0
  382. rasa/engine/graph.py +625 -0
  383. rasa/engine/loader.py +36 -0
  384. rasa/engine/recipes/__init__.py +0 -0
  385. rasa/engine/recipes/config_files/default_config.yml +44 -0
  386. rasa/engine/recipes/default_components.py +99 -0
  387. rasa/engine/recipes/default_recipe.py +1252 -0
  388. rasa/engine/recipes/graph_recipe.py +79 -0
  389. rasa/engine/recipes/recipe.py +93 -0
  390. rasa/engine/runner/__init__.py +0 -0
  391. rasa/engine/runner/dask.py +256 -0
  392. rasa/engine/runner/interface.py +49 -0
  393. rasa/engine/storage/__init__.py +0 -0
  394. rasa/engine/storage/local_model_storage.py +248 -0
  395. rasa/engine/storage/resource.py +110 -0
  396. rasa/engine/storage/storage.py +203 -0
  397. rasa/engine/training/__init__.py +0 -0
  398. rasa/engine/training/components.py +176 -0
  399. rasa/engine/training/fingerprinting.py +64 -0
  400. rasa/engine/training/graph_trainer.py +256 -0
  401. rasa/engine/training/hooks.py +164 -0
  402. rasa/engine/validation.py +839 -0
  403. rasa/env.py +5 -0
  404. rasa/exceptions.py +69 -0
  405. rasa/graph_components/__init__.py +0 -0
  406. rasa/graph_components/converters/__init__.py +0 -0
  407. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  408. rasa/graph_components/providers/__init__.py +0 -0
  409. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  410. rasa/graph_components/providers/domain_provider.py +71 -0
  411. rasa/graph_components/providers/flows_provider.py +74 -0
  412. rasa/graph_components/providers/forms_provider.py +44 -0
  413. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  414. rasa/graph_components/providers/responses_provider.py +44 -0
  415. rasa/graph_components/providers/rule_only_provider.py +49 -0
  416. rasa/graph_components/providers/story_graph_provider.py +43 -0
  417. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  418. rasa/graph_components/validators/__init__.py +0 -0
  419. rasa/graph_components/validators/default_recipe_validator.py +552 -0
  420. rasa/graph_components/validators/finetuning_validator.py +302 -0
  421. rasa/hooks.py +113 -0
  422. rasa/jupyter.py +63 -0
  423. rasa/keys +1 -0
  424. rasa/markers/__init__.py +0 -0
  425. rasa/markers/marker.py +269 -0
  426. rasa/markers/marker_base.py +828 -0
  427. rasa/markers/upload.py +74 -0
  428. rasa/markers/validate.py +21 -0
  429. rasa/model.py +118 -0
  430. rasa/model_testing.py +457 -0
  431. rasa/model_training.py +535 -0
  432. rasa/nlu/__init__.py +7 -0
  433. rasa/nlu/classifiers/__init__.py +3 -0
  434. rasa/nlu/classifiers/classifier.py +5 -0
  435. rasa/nlu/classifiers/diet_classifier.py +1874 -0
  436. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  437. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  438. rasa/nlu/classifiers/llm_intent_classifier.py +519 -0
  439. rasa/nlu/classifiers/logistic_regression_classifier.py +240 -0
  440. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  441. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  442. rasa/nlu/classifiers/sklearn_intent_classifier.py +309 -0
  443. rasa/nlu/constants.py +77 -0
  444. rasa/nlu/convert.py +40 -0
  445. rasa/nlu/emulators/__init__.py +0 -0
  446. rasa/nlu/emulators/dialogflow.py +55 -0
  447. rasa/nlu/emulators/emulator.py +49 -0
  448. rasa/nlu/emulators/luis.py +86 -0
  449. rasa/nlu/emulators/no_emulator.py +10 -0
  450. rasa/nlu/emulators/wit.py +56 -0
  451. rasa/nlu/extractors/__init__.py +0 -0
  452. rasa/nlu/extractors/crf_entity_extractor.py +672 -0
  453. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  454. rasa/nlu/extractors/entity_synonyms.py +178 -0
  455. rasa/nlu/extractors/extractor.py +470 -0
  456. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  457. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  458. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  459. rasa/nlu/featurizers/__init__.py +0 -0
  460. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  461. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +449 -0
  462. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  463. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +772 -0
  464. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  465. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  466. rasa/nlu/featurizers/featurizer.py +89 -0
  467. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  468. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +840 -0
  469. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +539 -0
  470. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +269 -0
  471. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  472. rasa/nlu/model.py +24 -0
  473. rasa/nlu/persistor.py +240 -0
  474. rasa/nlu/run.py +27 -0
  475. rasa/nlu/selectors/__init__.py +0 -0
  476. rasa/nlu/selectors/response_selector.py +990 -0
  477. rasa/nlu/test.py +1943 -0
  478. rasa/nlu/tokenizers/__init__.py +0 -0
  479. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  480. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  481. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  482. rasa/nlu/tokenizers/tokenizer.py +239 -0
  483. rasa/nlu/tokenizers/whitespace_tokenizer.py +106 -0
  484. rasa/nlu/utils/__init__.py +35 -0
  485. rasa/nlu/utils/bilou_utils.py +462 -0
  486. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  487. rasa/nlu/utils/hugging_face/registry.py +108 -0
  488. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  489. rasa/nlu/utils/mitie_utils.py +113 -0
  490. rasa/nlu/utils/pattern_utils.py +168 -0
  491. rasa/nlu/utils/spacy_utils.py +312 -0
  492. rasa/plugin.py +90 -0
  493. rasa/server.py +1536 -0
  494. rasa/shared/__init__.py +0 -0
  495. rasa/shared/constants.py +181 -0
  496. rasa/shared/core/__init__.py +0 -0
  497. rasa/shared/core/constants.py +168 -0
  498. rasa/shared/core/conversation.py +46 -0
  499. rasa/shared/core/domain.py +2106 -0
  500. rasa/shared/core/events.py +2507 -0
  501. rasa/shared/core/flows/__init__.py +7 -0
  502. rasa/shared/core/flows/flow.py +353 -0
  503. rasa/shared/core/flows/flow_step.py +146 -0
  504. rasa/shared/core/flows/flow_step_links.py +319 -0
  505. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  506. rasa/shared/core/flows/flows_list.py +211 -0
  507. rasa/shared/core/flows/flows_yaml_schema.json +217 -0
  508. rasa/shared/core/flows/nlu_trigger.py +117 -0
  509. rasa/shared/core/flows/steps/__init__.py +24 -0
  510. rasa/shared/core/flows/steps/action.py +51 -0
  511. rasa/shared/core/flows/steps/call.py +64 -0
  512. rasa/shared/core/flows/steps/collect.py +112 -0
  513. rasa/shared/core/flows/steps/constants.py +5 -0
  514. rasa/shared/core/flows/steps/continuation.py +36 -0
  515. rasa/shared/core/flows/steps/end.py +22 -0
  516. rasa/shared/core/flows/steps/internal.py +44 -0
  517. rasa/shared/core/flows/steps/link.py +51 -0
  518. rasa/shared/core/flows/steps/no_operation.py +48 -0
  519. rasa/shared/core/flows/steps/set_slots.py +50 -0
  520. rasa/shared/core/flows/steps/start.py +30 -0
  521. rasa/shared/core/flows/validation.py +527 -0
  522. rasa/shared/core/flows/yaml_flows_io.py +278 -0
  523. rasa/shared/core/generator.py +907 -0
  524. rasa/shared/core/slot_mappings.py +235 -0
  525. rasa/shared/core/slots.py +647 -0
  526. rasa/shared/core/trackers.py +1159 -0
  527. rasa/shared/core/training_data/__init__.py +0 -0
  528. rasa/shared/core/training_data/loading.py +90 -0
  529. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  530. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  531. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  532. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  533. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  534. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  535. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +442 -0
  536. rasa/shared/core/training_data/structures.py +838 -0
  537. rasa/shared/core/training_data/visualization.html +146 -0
  538. rasa/shared/core/training_data/visualization.py +603 -0
  539. rasa/shared/data.py +192 -0
  540. rasa/shared/engine/__init__.py +0 -0
  541. rasa/shared/engine/caching.py +26 -0
  542. rasa/shared/exceptions.py +129 -0
  543. rasa/shared/importers/__init__.py +0 -0
  544. rasa/shared/importers/importer.py +705 -0
  545. rasa/shared/importers/multi_project.py +203 -0
  546. rasa/shared/importers/rasa.py +100 -0
  547. rasa/shared/importers/utils.py +34 -0
  548. rasa/shared/nlu/__init__.py +0 -0
  549. rasa/shared/nlu/constants.py +45 -0
  550. rasa/shared/nlu/interpreter.py +10 -0
  551. rasa/shared/nlu/training_data/__init__.py +0 -0
  552. rasa/shared/nlu/training_data/entities_parser.py +209 -0
  553. rasa/shared/nlu/training_data/features.py +374 -0
  554. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  555. rasa/shared/nlu/training_data/formats/dialogflow.py +162 -0
  556. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  557. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  558. rasa/shared/nlu/training_data/formats/rasa_yaml.py +605 -0
  559. rasa/shared/nlu/training_data/formats/readerwriter.py +245 -0
  560. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  561. rasa/shared/nlu/training_data/loading.py +137 -0
  562. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  563. rasa/shared/nlu/training_data/message.py +477 -0
  564. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  565. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  566. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  567. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  568. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  569. rasa/shared/nlu/training_data/training_data.py +732 -0
  570. rasa/shared/nlu/training_data/util.py +223 -0
  571. rasa/shared/providers/__init__.py +0 -0
  572. rasa/shared/providers/openai/__init__.py +0 -0
  573. rasa/shared/providers/openai/clients.py +43 -0
  574. rasa/shared/providers/openai/session_handler.py +110 -0
  575. rasa/shared/utils/__init__.py +0 -0
  576. rasa/shared/utils/cli.py +72 -0
  577. rasa/shared/utils/common.py +308 -0
  578. rasa/shared/utils/constants.py +1 -0
  579. rasa/shared/utils/io.py +403 -0
  580. rasa/shared/utils/llm.py +405 -0
  581. rasa/shared/utils/pykwalify_extensions.py +26 -0
  582. rasa/shared/utils/schemas/__init__.py +0 -0
  583. rasa/shared/utils/schemas/config.yml +2 -0
  584. rasa/shared/utils/schemas/domain.yml +142 -0
  585. rasa/shared/utils/schemas/events.py +212 -0
  586. rasa/shared/utils/schemas/model_config.yml +46 -0
  587. rasa/shared/utils/schemas/stories.yml +173 -0
  588. rasa/shared/utils/yaml.py +777 -0
  589. rasa/studio/__init__.py +0 -0
  590. rasa/studio/auth.py +252 -0
  591. rasa/studio/config.py +127 -0
  592. rasa/studio/constants.py +16 -0
  593. rasa/studio/data_handler.py +352 -0
  594. rasa/studio/download.py +350 -0
  595. rasa/studio/train.py +136 -0
  596. rasa/studio/upload.py +408 -0
  597. rasa/telemetry.py +1583 -0
  598. rasa/tracing/__init__.py +0 -0
  599. rasa/tracing/config.py +338 -0
  600. rasa/tracing/constants.py +38 -0
  601. rasa/tracing/instrumentation/__init__.py +0 -0
  602. rasa/tracing/instrumentation/attribute_extractors.py +663 -0
  603. rasa/tracing/instrumentation/instrumentation.py +939 -0
  604. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +142 -0
  605. rasa/tracing/instrumentation/metrics.py +206 -0
  606. rasa/tracing/metric_instrument_provider.py +125 -0
  607. rasa/utils/__init__.py +0 -0
  608. rasa/utils/beta.py +83 -0
  609. rasa/utils/cli.py +27 -0
  610. rasa/utils/common.py +635 -0
  611. rasa/utils/converter.py +53 -0
  612. rasa/utils/endpoints.py +303 -0
  613. rasa/utils/io.py +326 -0
  614. rasa/utils/licensing.py +319 -0
  615. rasa/utils/log_utils.py +174 -0
  616. rasa/utils/mapper.py +210 -0
  617. rasa/utils/ml_utils.py +145 -0
  618. rasa/utils/plotting.py +362 -0
  619. rasa/utils/singleton.py +23 -0
  620. rasa/utils/tensorflow/__init__.py +0 -0
  621. rasa/utils/tensorflow/callback.py +112 -0
  622. rasa/utils/tensorflow/constants.py +116 -0
  623. rasa/utils/tensorflow/crf.py +492 -0
  624. rasa/utils/tensorflow/data_generator.py +440 -0
  625. rasa/utils/tensorflow/environment.py +161 -0
  626. rasa/utils/tensorflow/exceptions.py +5 -0
  627. rasa/utils/tensorflow/layers.py +1565 -0
  628. rasa/utils/tensorflow/layers_utils.py +113 -0
  629. rasa/utils/tensorflow/metrics.py +281 -0
  630. rasa/utils/tensorflow/model_data.py +991 -0
  631. rasa/utils/tensorflow/model_data_utils.py +500 -0
  632. rasa/utils/tensorflow/models.py +936 -0
  633. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  634. rasa/utils/tensorflow/transformer.py +640 -0
  635. rasa/utils/tensorflow/types.py +6 -0
  636. rasa/utils/train_utils.py +572 -0
  637. rasa/utils/yaml.py +54 -0
  638. rasa/validator.py +1035 -0
  639. rasa/version.py +3 -0
  640. rasa_pro-3.8.16.dist-info/METADATA +528 -0
  641. rasa_pro-3.8.16.dist-info/NOTICE +5 -0
  642. rasa_pro-3.8.16.dist-info/RECORD +644 -0
  643. rasa_pro-3.8.16.dist-info/WHEEL +4 -0
  644. rasa_pro-3.8.16.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,477 @@
1
+ from typing import Any, Optional, Tuple, Text, Dict, Set, List
2
+
3
+ import typing
4
+ import copy
5
+
6
+ import rasa.shared.utils.io
7
+ from rasa.shared.exceptions import RasaException
8
+ from rasa.shared.nlu.constants import (
9
+ TEXT,
10
+ INTENT,
11
+ RESPONSE,
12
+ INTENT_RESPONSE_KEY,
13
+ METADATA,
14
+ METADATA_INTENT,
15
+ METADATA_EXAMPLE,
16
+ ENTITIES,
17
+ ENTITY_ATTRIBUTE_START,
18
+ ENTITY_ATTRIBUTE_END,
19
+ RESPONSE_IDENTIFIER_DELIMITER,
20
+ FEATURE_TYPE_SENTENCE,
21
+ FEATURE_TYPE_SEQUENCE,
22
+ ACTION_TEXT,
23
+ ACTION_NAME,
24
+ TEXT_TOKENS,
25
+ )
26
+ from rasa.shared.constants import DIAGNOSTIC_DATA
27
+
28
+ if typing.TYPE_CHECKING:
29
+ from rasa.shared.nlu.training_data.features import Features
30
+
31
+
32
+ class Message:
33
+ """Container for data that can be used to describe a conversation turn.
34
+
35
+ The turn is described by a set of attributes such as e.g. `TEXT` and `INTENT`
36
+ when describing a user utterance or e.g. `ACTION_NAME` for describing a bot action.
37
+ The container includes raw information (`self.data`) as well as features
38
+ (`self.features`) for each such attribute.
39
+ Moreover, the message has a timestamp and can keep track about information
40
+ on a specific subset of attributes (`self.output_properties`).
41
+ """
42
+
43
+ def __init__(
44
+ self,
45
+ data: Optional[Dict[Text, Any]] = None,
46
+ output_properties: Optional[Set] = None,
47
+ time: Optional[int] = None,
48
+ features: Optional[List["Features"]] = None,
49
+ **kwargs: Any,
50
+ ) -> None:
51
+ """Creates an instance of Message."""
52
+ self.time = time
53
+ self.data = data.copy() if data else {}
54
+ self.features = features if features else []
55
+
56
+ self.data.update(**kwargs)
57
+ self._cached_fingerprint: Optional[Text] = None
58
+
59
+ if output_properties:
60
+ self.output_properties = output_properties
61
+ else:
62
+ self.output_properties = set()
63
+ self.output_properties.add(TEXT)
64
+
65
+ def add_features(self, features: Optional["Features"]) -> None:
66
+ """Add more vectorized features to the message."""
67
+ if features is not None:
68
+ self.features.append(features)
69
+ self._cached_fingerprint = None
70
+
71
+ def add_diagnostic_data(self, origin: Text, data: Dict[Text, Any]) -> None:
72
+ """Adds diagnostic data from the `origin` component.
73
+
74
+ Args:
75
+ origin: Name of the component that created the data.
76
+ data: The diagnostic data.
77
+ """
78
+ if origin in self.get(DIAGNOSTIC_DATA, {}):
79
+ rasa.shared.utils.io.raise_warning(
80
+ f"Please make sure every pipeline component has a distinct name. "
81
+ f"The name '{origin}' appears at least twice and diagnostic "
82
+ f"data will be overwritten."
83
+ )
84
+ self.data.setdefault(DIAGNOSTIC_DATA, {})
85
+ self.data[DIAGNOSTIC_DATA][origin] = data
86
+ self._cached_fingerprint = None
87
+
88
+ def set(self, prop: Text, info: Any, add_to_output: bool = False) -> None:
89
+ """Sets the message's property to the given value.
90
+
91
+ Args:
92
+ prop: Name of the property to be set.
93
+ info: Value to be assigned to that property.
94
+ add_to_output: Decides whether to add `prop` to the `output_properties`.
95
+ """
96
+ self.data[prop] = info
97
+ if add_to_output:
98
+ self.output_properties.add(prop)
99
+ self._cached_fingerprint = None
100
+
101
+ def get(self, prop: Text, default: Optional[Any] = None) -> Any:
102
+ """Retrieve message property."""
103
+ return self.data.get(prop, default)
104
+
105
+ def as_dict_nlu(self) -> dict:
106
+ """Get dict representation of message as it would appear in training data."""
107
+ d = self.as_dict()
108
+ if d.get(INTENT, None):
109
+ d[INTENT] = self.get_full_intent()
110
+ d.pop(RESPONSE, None)
111
+ d.pop(INTENT_RESPONSE_KEY, None)
112
+ return d
113
+
114
+ def as_dict(self, only_output_properties: bool = False) -> Dict:
115
+ """Gets dict representation of message."""
116
+ if only_output_properties:
117
+ d = {}
118
+ for key, value in self.data.items():
119
+ if key in self.output_properties:
120
+ if key == TEXT_TOKENS:
121
+ d[TEXT_TOKENS] = [(t.start, t.end) for t in value]
122
+ else:
123
+ d[key] = value
124
+ else:
125
+ d = self.data
126
+
127
+ # Filter all keys with None value. These could have come while building the
128
+ # Message object in markdown format
129
+ return {key: value for key, value in d.items() if value is not None}
130
+
131
+ def __eq__(self, other: Any) -> bool:
132
+ if not isinstance(other, Message):
133
+ return False
134
+ else:
135
+ return other.fingerprint() == self.fingerprint()
136
+
137
+ def __hash__(self) -> int:
138
+ """Calculate a hash for the message.
139
+
140
+ Returns:
141
+ Hash of the message.
142
+ """
143
+ return int(self.fingerprint(), 16)
144
+
145
+ def fingerprint(self) -> Text:
146
+ """Calculate a string fingerprint for the message.
147
+
148
+ Returns:
149
+ Fingerprint of the message.
150
+ """
151
+ if self._cached_fingerprint is None:
152
+ self._cached_fingerprint = rasa.shared.utils.io.deep_container_fingerprint(
153
+ [self.data, self.features]
154
+ )
155
+ return self._cached_fingerprint
156
+
157
+ @classmethod
158
+ def build(
159
+ cls,
160
+ text: Text,
161
+ intent: Optional[Text] = None,
162
+ entities: Optional[List[Dict[Text, Any]]] = None,
163
+ intent_metadata: Optional[Any] = None,
164
+ example_metadata: Optional[Any] = None,
165
+ **kwargs: Any,
166
+ ) -> "Message":
167
+ """Builds a Message from `UserUttered` data.
168
+
169
+ Args:
170
+ text: text of a user's utterance
171
+ intent: an intent of the user utterance
172
+ entities: entities in the user's utterance
173
+ intent_metadata: optional metadata for the intent
174
+ example_metadata: optional metadata for the intent example
175
+
176
+ Returns:
177
+ Message
178
+ """
179
+ data: Dict[Text, Any] = {TEXT: text}
180
+ if intent:
181
+ split_intent, response_key = cls.separate_intent_response_key(intent)
182
+ if split_intent:
183
+ data[INTENT] = split_intent
184
+ if response_key:
185
+ # intent label can be of the form - {intent}/{response_key},
186
+ # so store the full intent label in intent_response_key
187
+ data[INTENT_RESPONSE_KEY] = intent
188
+ if entities:
189
+ data[ENTITIES] = entities
190
+ if intent_metadata is not None:
191
+ data[METADATA] = {METADATA_INTENT: intent_metadata}
192
+ if example_metadata is not None:
193
+ data.setdefault(METADATA, {})[METADATA_EXAMPLE] = example_metadata
194
+
195
+ return cls(data, **kwargs)
196
+
197
+ def get_full_intent(self) -> Text:
198
+ """Get intent as it appears in training data."""
199
+ return (
200
+ self.get(INTENT_RESPONSE_KEY)
201
+ if self.get(INTENT_RESPONSE_KEY)
202
+ else self.get(INTENT)
203
+ )
204
+
205
+ @staticmethod
206
+ def separate_intent_response_key(
207
+ original_intent: Text,
208
+ ) -> Tuple[Text, Optional[Text]]:
209
+ """Splits intent into main intent name and optional sub-intent name.
210
+
211
+ For example, `"FAQ/how_to_contribute"` would be split into
212
+ `("FAQ", "how_to_contribute")`. The response delimiter can
213
+ take different values (not just `"/"`) and depends on the
214
+ constant - `RESPONSE_IDENTIFIER_DELIMITER`.
215
+ If there is no response delimiter in the intent, the second tuple
216
+ item is `None`, e.g. `"FAQ"` would be mapped to `("FAQ", None)`.
217
+ """
218
+ split_title = original_intent.split(RESPONSE_IDENTIFIER_DELIMITER)
219
+ if len(split_title) == 2:
220
+ return split_title[0], split_title[1]
221
+ elif len(split_title) == 1:
222
+ return split_title[0], None
223
+
224
+ raise RasaException(
225
+ f"Intent name '{original_intent}' is invalid, "
226
+ f"it cannot contain more than one '{RESPONSE_IDENTIFIER_DELIMITER}'."
227
+ )
228
+
229
+ def get_sparse_features(
230
+ self, attribute: Text, featurizers: Optional[List[Text]] = None
231
+ ) -> Tuple[Optional["Features"], Optional["Features"]]:
232
+ """Gets all sparse features for the attribute given the list of featurizers.
233
+
234
+ If no featurizers are provided, all available features will be considered.
235
+
236
+ Args:
237
+ attribute: message attribute
238
+ featurizers: names of featurizers to consider
239
+
240
+ Returns:
241
+ Sparse features.
242
+ """
243
+ if featurizers is None:
244
+ featurizers = []
245
+
246
+ sequence_features, sentence_features = self._filter_sparse_features(
247
+ attribute, featurizers
248
+ )
249
+
250
+ combined_sequence_features = self._combine_features(
251
+ sequence_features, featurizers
252
+ )
253
+ combined_sentence_features = self._combine_features(
254
+ sentence_features, featurizers
255
+ )
256
+
257
+ return combined_sequence_features, combined_sentence_features
258
+
259
+ def get_sparse_feature_sizes(
260
+ self, attribute: Text, featurizers: Optional[List[Text]] = None
261
+ ) -> Dict[Text, List[int]]:
262
+ """Gets sparse feature sizes for the attribute given the list of featurizers.
263
+
264
+ If no featurizers are provided, all available features will be considered.
265
+
266
+ Args:
267
+ attribute: message attribute
268
+ featurizers: names of featurizers to consider
269
+
270
+ Returns:
271
+ Sparse feature sizes.
272
+ """
273
+ if featurizers is None:
274
+ featurizers = []
275
+
276
+ sequence_features, sentence_features = self._filter_sparse_features(
277
+ attribute, featurizers
278
+ )
279
+ sequence_sizes = [f.features.shape[1] for f in sequence_features]
280
+ sentence_sizes = [f.features.shape[1] for f in sentence_features]
281
+
282
+ return {
283
+ FEATURE_TYPE_SEQUENCE: sequence_sizes,
284
+ FEATURE_TYPE_SENTENCE: sentence_sizes,
285
+ }
286
+
287
+ def get_dense_features(
288
+ self, attribute: Text, featurizers: Optional[List[Text]] = None
289
+ ) -> Tuple[Optional["Features"], Optional["Features"]]:
290
+ """Gets all dense features for the attribute given the list of featurizers.
291
+
292
+ If no featurizers are provided, all available features will be considered.
293
+
294
+ Args:
295
+ attribute: message attribute
296
+ featurizers: names of featurizers to consider
297
+
298
+ Returns:
299
+ Dense features.
300
+ """
301
+ if featurizers is None:
302
+ featurizers = []
303
+
304
+ sequence_features, sentence_features = self._filter_dense_features(
305
+ attribute, featurizers
306
+ )
307
+
308
+ combined_sequence_features = self._combine_features(
309
+ sequence_features, featurizers
310
+ )
311
+ combined_sentence_features = self._combine_features(
312
+ sentence_features, featurizers
313
+ )
314
+
315
+ return combined_sequence_features, combined_sentence_features
316
+
317
+ def get_all_features(
318
+ self, attribute: Text, featurizers: Optional[List[Text]] = None
319
+ ) -> List["Features"]:
320
+ """Gets all features for the attribute given the list of featurizers.
321
+
322
+ If no featurizers are provided, all available features will be considered.
323
+
324
+ Args:
325
+ attribute: message attribute
326
+ featurizers: names of featurizers to consider
327
+
328
+ Returns:
329
+ Features.
330
+ """
331
+ sparse_features = self.get_sparse_features(attribute, featurizers)
332
+ dense_features = self.get_dense_features(attribute, featurizers)
333
+
334
+ return [f for f in sparse_features + dense_features if f is not None]
335
+
336
+ def features_present(
337
+ self, attribute: Text, featurizers: Optional[List[Text]] = None
338
+ ) -> bool:
339
+ """Checks if there are any features present for the attribute and featurizers.
340
+
341
+ If no featurizers are provided, all available features will be considered.
342
+
343
+ Args:
344
+ attribute: Message attribute.
345
+ featurizers: Names of featurizers to consider.
346
+
347
+ Returns:
348
+ ``True``, if features are present, ``False`` otherwise.
349
+ """
350
+ if featurizers is None:
351
+ featurizers = []
352
+
353
+ (
354
+ sequence_sparse_features,
355
+ sentence_sparse_features,
356
+ ) = self._filter_sparse_features(attribute, featurizers)
357
+ sequence_dense_features, sentence_dense_features = self._filter_dense_features(
358
+ attribute, featurizers
359
+ )
360
+
361
+ return (
362
+ len(sequence_sparse_features) > 0
363
+ or len(sentence_sparse_features) > 0
364
+ or len(sequence_dense_features) > 0
365
+ or len(sentence_dense_features) > 0
366
+ )
367
+
368
+ def _filter_dense_features(
369
+ self, attribute: Text, featurizers: List[Text]
370
+ ) -> Tuple[List["Features"], List["Features"]]:
371
+ sentence_features = [
372
+ f
373
+ for f in self.features
374
+ if f.attribute == attribute
375
+ and f.is_dense()
376
+ and f.type == FEATURE_TYPE_SENTENCE
377
+ and (f.origin in featurizers or not featurizers)
378
+ ]
379
+ sequence_features = [
380
+ f
381
+ for f in self.features
382
+ if f.attribute == attribute
383
+ and f.is_dense()
384
+ and f.type == FEATURE_TYPE_SEQUENCE
385
+ and (f.origin in featurizers or not featurizers)
386
+ ]
387
+ return sequence_features, sentence_features
388
+
389
+ def _filter_sparse_features(
390
+ self, attribute: Text, featurizers: List[Text]
391
+ ) -> Tuple[List["Features"], List["Features"]]:
392
+ sentence_features = [
393
+ f
394
+ for f in self.features
395
+ if f.attribute == attribute
396
+ and f.is_sparse()
397
+ and f.type == FEATURE_TYPE_SENTENCE
398
+ and (f.origin in featurizers or not featurizers)
399
+ ]
400
+ sequence_features = [
401
+ f
402
+ for f in self.features
403
+ if f.attribute == attribute
404
+ and f.is_sparse()
405
+ and f.type == FEATURE_TYPE_SEQUENCE
406
+ and (f.origin in featurizers or not featurizers)
407
+ ]
408
+
409
+ return sequence_features, sentence_features
410
+
411
+ @staticmethod
412
+ def _combine_features(
413
+ features: List["Features"], featurizers: List[Text]
414
+ ) -> Optional["Features"]:
415
+ combined_features = None
416
+
417
+ for f in features:
418
+ if combined_features is None:
419
+ combined_features = copy.deepcopy(f)
420
+ combined_features.origin = featurizers
421
+ else:
422
+ combined_features.combine_with_features(f)
423
+
424
+ return combined_features
425
+
426
+ def is_core_or_domain_message(self) -> bool:
427
+ """Checks whether the message is a core message or from the domain.
428
+
429
+ E.g. a core message is created from a story or a domain action,
430
+ not from the NLU data.
431
+
432
+ Returns:
433
+ True, if message is a core or domain message, false otherwise.
434
+ """
435
+ return bool(
436
+ self.data.get(ACTION_NAME)
437
+ or self.data.get(ACTION_TEXT)
438
+ or (
439
+ (self.data.get(INTENT) or self.data.get(RESPONSE))
440
+ and not self.data.get(TEXT)
441
+ )
442
+ or (
443
+ self.data.get(TEXT)
444
+ and not (self.data.get(INTENT) or self.data.get(RESPONSE))
445
+ )
446
+ )
447
+
448
+ def is_e2e_message(self) -> bool:
449
+ """Checks whether the message came from an e2e story.
450
+
451
+ Returns:
452
+ `True`, if message is a from an e2e story, `False` otherwise.
453
+ """
454
+ return bool(
455
+ (self.get(ACTION_TEXT) and not self.get(ACTION_NAME))
456
+ or (self.get(TEXT) and not self.get(INTENT))
457
+ )
458
+
459
+ def find_overlapping_entities(
460
+ self,
461
+ ) -> List[Tuple[Dict[Text, Any], Dict[Text, Any]]]:
462
+ """Finds any overlapping entity annotations."""
463
+ entities = self.get(ENTITIES, [])[:]
464
+ entities_with_location = [
465
+ e
466
+ for e in entities
467
+ if (ENTITY_ATTRIBUTE_START in e.keys() and ENTITY_ATTRIBUTE_END in e.keys())
468
+ ]
469
+ entities_with_location.sort(key=lambda e: e[ENTITY_ATTRIBUTE_START])
470
+ overlapping_pairs: List[Tuple[Dict[Text, Any], Dict[Text, Any]]] = []
471
+ for i, entity in enumerate(entities_with_location):
472
+ for other_entity in entities_with_location[i + 1 :]:
473
+ if other_entity[ENTITY_ATTRIBUTE_START] < entity[ENTITY_ATTRIBUTE_END]:
474
+ overlapping_pairs.append((entity, other_entity))
475
+ else:
476
+ break
477
+ return overlapping_pairs
File without changes
@@ -0,0 +1,85 @@
1
+ from typing import Dict, Text, Any
2
+
3
+
4
+ def entity_dict_schema() -> Dict[Text, Any]:
5
+ """Returns: schema for defining entities."""
6
+ return {
7
+ "type": "object",
8
+ "properties": _common_entity_properties(),
9
+ "required": ["entity"],
10
+ }
11
+
12
+
13
+ def _common_entity_properties() -> Dict[Text, Any]:
14
+ return {
15
+ "entity": {"type": "string"},
16
+ "role": {"type": "string"},
17
+ "group": {"type": "string"},
18
+ "value": {"type": ["string", "number"]},
19
+ }
20
+
21
+
22
+ def rasa_nlu_data_schema() -> Dict[Text, Any]:
23
+ """Returns: schema of the Rasa NLU data format (json format)."""
24
+ entity_properties = _common_entity_properties()
25
+ entity_properties["start"] = {"type": "number"}
26
+ entity_properties["end"] = {"type": "number"}
27
+
28
+ training_example_schema = {
29
+ "type": "object",
30
+ "properties": {
31
+ "intent": {"type": "string"},
32
+ "entities": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "object",
36
+ "properties": entity_properties,
37
+ "required": ["start", "end", "entity"],
38
+ },
39
+ },
40
+ },
41
+ }
42
+
43
+ regex_feature_schema = {
44
+ "type": "object",
45
+ "properties": {"name": {"type": "string"}, "pattern": {"type": "string"}},
46
+ }
47
+
48
+ lookup_table_schema = {
49
+ "type": "object",
50
+ "properties": {
51
+ "name": {"type": "string"},
52
+ "elements": {
53
+ "oneOf": [
54
+ {"type": "array", "items": {"type": "string"}},
55
+ {"type": "string"},
56
+ ]
57
+ },
58
+ },
59
+ }
60
+
61
+ return {
62
+ "type": "object",
63
+ "properties": {
64
+ "rasa_nlu_data": {
65
+ "type": "object",
66
+ "properties": {
67
+ "regex_features": {"type": "array", "items": regex_feature_schema},
68
+ "common_examples": {
69
+ "type": "array",
70
+ "items": training_example_schema,
71
+ },
72
+ "intent_examples": {
73
+ "type": "array",
74
+ "items": training_example_schema,
75
+ },
76
+ "entity_examples": {
77
+ "type": "array",
78
+ "items": training_example_schema,
79
+ },
80
+ "lookup_tables": {"type": "array", "items": lookup_table_schema},
81
+ },
82
+ }
83
+ },
84
+ "additionalProperties": False,
85
+ }
@@ -0,0 +1,53 @@
1
+ allowempty: True
2
+ mapping:
3
+ version:
4
+ type: "str"
5
+ required: False
6
+ allowempty: False
7
+ nlu:
8
+ type: "seq"
9
+ matching: "any"
10
+ sequence:
11
+ - type: "map"
12
+ mapping:
13
+ intent: &intent_anchor
14
+ type: "str"
15
+ allowempty: False
16
+ metadata: &metadata_anchor
17
+ type: "any"
18
+ required: False
19
+ examples: &examples_anchor
20
+ type: "str"
21
+ - type: "map"
22
+ mapping:
23
+ intent: *intent_anchor
24
+ metadata: *metadata_anchor
25
+ examples:
26
+ type: "seq"
27
+ sequence:
28
+ - type: "map"
29
+ mapping:
30
+ text:
31
+ type: "str"
32
+ allowempty: False
33
+ metadata: *metadata_anchor
34
+ - type: "map"
35
+ mapping:
36
+ synonym:
37
+ type: "str"
38
+ examples: *examples_anchor
39
+ - type: "map"
40
+ mapping:
41
+ regex:
42
+ type: "str"
43
+ examples: *examples_anchor
44
+ - type: "map"
45
+ mapping:
46
+ lookup:
47
+ type: "str"
48
+ examples: *examples_anchor
49
+ responses:
50
+ # see rasa/shared/nlu/training_data/schemas/responses.yml
51
+ include: responses
52
+ regex;(.*):
53
+ type: "any"
@@ -0,0 +1,70 @@
1
+ schema;responses:
2
+ type: "map"
3
+ allowempty: True
4
+ mapping:
5
+ regex;(.+):
6
+ type: "seq"
7
+ required: False
8
+ nullable: False
9
+ func: require_response_keys
10
+ sequence:
11
+ - type: "map"
12
+ required: True
13
+ allowempty: False
14
+ mapping:
15
+ id:
16
+ type: "str"
17
+ required: False
18
+ text:
19
+ type: "str"
20
+ image:
21
+ type: "str"
22
+ custom:
23
+ type: "map"
24
+ allowempty: True
25
+ buttons:
26
+ type: "seq"
27
+ sequence:
28
+ - type: "map"
29
+ allowempty: True
30
+ mapping:
31
+ title:
32
+ type: "str"
33
+ payload:
34
+ type: "str"
35
+ button_type:
36
+ type: "str"
37
+ quick_replies:
38
+ type: "seq"
39
+ sequence:
40
+ - type: "map"
41
+ allowempty: True
42
+ mapping:
43
+ title:
44
+ type: "str"
45
+ payload:
46
+ type: "str"
47
+ attachment:
48
+ type: "map"
49
+ allowempty: True
50
+ elements:
51
+ type: "seq"
52
+ sequence:
53
+ - type: "map"
54
+ allowempty: True
55
+ channel:
56
+ type: "str"
57
+ metadata:
58
+ type: "any"
59
+ condition:
60
+ type: "seq"
61
+ sequence:
62
+ - type: "map"
63
+ allowempty: False
64
+ mapping:
65
+ type:
66
+ type: "str"
67
+ name:
68
+ type: "str"
69
+ value:
70
+ type: "any"