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,203 @@
1
+ import logging
2
+ from functools import reduce
3
+ from typing import Text, Set, Dict, Optional, List, Union, Any
4
+ import os
5
+
6
+ import rasa.shared.data
7
+ import rasa.shared.utils.io
8
+ from rasa.shared.core.domain import Domain
9
+ from rasa.shared.importers.importer import TrainingDataImporter
10
+ from rasa.shared.importers import utils
11
+ from rasa.shared.nlu.training_data.training_data import TrainingData
12
+ from rasa.shared.core.training_data.structures import StoryGraph
13
+ from rasa.shared.utils.common import mark_as_experimental_feature
14
+ from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
15
+ YAMLStoryReader,
16
+ )
17
+ from rasa.shared.utils.yaml import read_config_file, read_model_configuration
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ class MultiProjectImporter(TrainingDataImporter):
23
+ def __init__(
24
+ self,
25
+ config_file: Text,
26
+ domain_path: Optional[Text] = None,
27
+ training_data_paths: Optional[Union[List[Text], Text]] = None,
28
+ project_directory: Optional[Text] = None,
29
+ ):
30
+ self.config = read_model_configuration(config_file)
31
+ if domain_path:
32
+ self._domain_paths = [domain_path]
33
+ else:
34
+ self._domain_paths = []
35
+ self._story_paths = []
36
+ self._e2e_story_paths: List[Text] = []
37
+ self._nlu_paths = []
38
+ self._imports: List[Text] = []
39
+ self._additional_paths = training_data_paths or []
40
+ self._project_directory = project_directory or os.path.dirname(config_file)
41
+
42
+ self._init_from_dict(self.config, self._project_directory)
43
+
44
+ extra_nlu_files = rasa.shared.data.get_data_files(
45
+ training_data_paths, rasa.shared.data.is_nlu_file
46
+ )
47
+ extra_story_files = rasa.shared.data.get_data_files(
48
+ training_data_paths, YAMLStoryReader.is_stories_file
49
+ )
50
+ self._story_paths += extra_story_files
51
+ self._nlu_paths += extra_nlu_files
52
+
53
+ logger.debug(
54
+ "Selected projects: {}".format("".join([f"\n-{i}" for i in self._imports]))
55
+ )
56
+
57
+ mark_as_experimental_feature(feature_name="MultiProjectImporter")
58
+
59
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
60
+ """Returns config file path for auto-config only if there is a single one."""
61
+ return None
62
+
63
+ def _init_from_path(self, path: Text) -> None:
64
+ if os.path.isfile(path):
65
+ self._init_from_file(path)
66
+ elif os.path.isdir(path):
67
+ self._init_from_directory(path)
68
+
69
+ def _init_from_file(self, path: Text) -> None:
70
+ path = os.path.abspath(path)
71
+ if os.path.exists(path) and rasa.shared.data.is_config_file(path):
72
+ config = read_config_file(path)
73
+
74
+ parent_directory = os.path.dirname(path)
75
+ self._init_from_dict(config, parent_directory)
76
+ else:
77
+ rasa.shared.utils.io.raise_warning(
78
+ f"'{path}' does not exist or is not a valid config file."
79
+ )
80
+
81
+ def _init_from_dict(self, _dict: Dict[Text, Any], parent_directory: Text) -> None:
82
+ imports = _dict.get("imports") or []
83
+ imports = [os.path.join(parent_directory, i) for i in imports]
84
+ # clean out relative paths
85
+ imports = [os.path.abspath(i) for i in imports]
86
+
87
+ # remove duplication
88
+ import_candidates = []
89
+ for i in imports:
90
+ if i not in import_candidates and not self._is_explicitly_imported(i):
91
+ import_candidates.append(i)
92
+
93
+ self._imports.extend(import_candidates)
94
+
95
+ # import config files from paths which have not been processed so far
96
+ for p in import_candidates:
97
+ self._init_from_path(p)
98
+
99
+ def _is_explicitly_imported(self, path: Text) -> bool:
100
+ return not self.no_skills_selected() and self.is_imported(path)
101
+
102
+ def _init_from_directory(self, path: Text) -> None:
103
+ for parent, _, files in os.walk(path, followlinks=True):
104
+ for file in files:
105
+ full_path = os.path.join(parent, file)
106
+ if not self.is_imported(full_path):
107
+ # Check next file
108
+ continue
109
+
110
+ if YAMLStoryReader.is_test_stories_file(full_path):
111
+ self._e2e_story_paths.append(full_path)
112
+ elif Domain.is_domain_file(full_path):
113
+ self._domain_paths.append(full_path)
114
+ elif rasa.shared.data.is_nlu_file(full_path):
115
+ self._nlu_paths.append(full_path)
116
+ elif YAMLStoryReader.is_stories_file(full_path):
117
+ self._story_paths.append(full_path)
118
+ elif rasa.shared.data.is_config_file(full_path):
119
+ self._init_from_file(full_path)
120
+
121
+ def no_skills_selected(self) -> bool:
122
+ return not self._imports
123
+
124
+ def training_paths(self) -> Set[Text]:
125
+ """Returns the paths which should be searched for training data."""
126
+ # only include extra paths if they are not part of the current project directory
127
+ training_paths = {
128
+ i
129
+ for i in self._imports
130
+ if not self._project_directory or self._project_directory not in i
131
+ }
132
+
133
+ if self._project_directory:
134
+ training_paths.add(self._project_directory)
135
+
136
+ return training_paths
137
+
138
+ def is_imported(self, path: Text) -> bool:
139
+ """Checks whether a path is imported by a skill.
140
+
141
+ Args:
142
+ path: File or directory path which should be checked.
143
+
144
+ Returns:
145
+ `True` if path is imported by a skill, `False` if not.
146
+ """
147
+ absolute_path = os.path.abspath(path)
148
+
149
+ return (
150
+ self.no_skills_selected()
151
+ or self._is_in_project_directory(absolute_path)
152
+ or self._is_in_additional_paths(absolute_path)
153
+ or self._is_in_imported_paths(absolute_path)
154
+ )
155
+
156
+ def _is_in_project_directory(self, path: Text) -> bool:
157
+ if os.path.isfile(path):
158
+ parent_directory = os.path.abspath(os.path.dirname(path))
159
+
160
+ return parent_directory == self._project_directory
161
+ else:
162
+ return path == self._project_directory
163
+
164
+ def _is_in_additional_paths(self, path: Text) -> bool:
165
+ included = path in self._additional_paths
166
+
167
+ if not included and os.path.isfile(path):
168
+ parent_directory = os.path.abspath(os.path.dirname(path))
169
+ included = parent_directory in self._additional_paths
170
+
171
+ return included
172
+
173
+ def _is_in_imported_paths(self, path: Text) -> bool:
174
+ return any(
175
+ [rasa.shared.utils.io.is_subdirectory(path, i) for i in self._imports]
176
+ )
177
+
178
+ def get_domain(self) -> Domain:
179
+ """Retrieves model domain (see parent class for full docstring)."""
180
+ domains = [Domain.load(path) for path in self._domain_paths]
181
+ return reduce(
182
+ lambda merged, other: merged.merge(other),
183
+ domains,
184
+ Domain.empty(),
185
+ )
186
+
187
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
188
+ """Retrieves training stories / rules (see parent class for full docstring)."""
189
+ return utils.story_graph_from_paths(
190
+ self._story_paths, self.get_domain(), exclusion_percentage
191
+ )
192
+
193
+ def get_conversation_tests(self) -> StoryGraph:
194
+ """Retrieves conversation test stories (see parent class for full docstring)."""
195
+ return utils.story_graph_from_paths(self._e2e_story_paths, self.get_domain())
196
+
197
+ def get_config(self) -> Dict:
198
+ """Retrieves model config (see parent class for full docstring)."""
199
+ return self.config
200
+
201
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
202
+ """Retrieves NLU training data (see parent class for full docstring)."""
203
+ return utils.training_data_from_paths(self._nlu_paths, language)
@@ -0,0 +1,100 @@
1
+ import logging
2
+ import os
3
+ from typing import Dict, List, Optional, Text, Union
4
+
5
+ import rasa.shared.core.flows.yaml_flows_io
6
+ from rasa.shared.core.flows import FlowsList
7
+
8
+ import rasa.shared.data
9
+ import rasa.shared.utils.common
10
+ import rasa.shared.utils.io
11
+ from rasa.shared.core.training_data.structures import StoryGraph
12
+ from rasa.shared.importers import utils
13
+ from rasa.shared.importers.importer import TrainingDataImporter
14
+ from rasa.shared.nlu.training_data.training_data import TrainingData
15
+ from rasa.shared.core.domain import InvalidDomain, Domain
16
+ from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
17
+ YAMLStoryReader,
18
+ )
19
+ from rasa.shared.utils.yaml import read_model_configuration
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+
24
+ class RasaFileImporter(TrainingDataImporter):
25
+ """Default `TrainingFileImporter` implementation."""
26
+
27
+ def __init__(
28
+ self,
29
+ config_file: Optional[Text] = None,
30
+ domain_path: Optional[Text] = None,
31
+ training_data_paths: Optional[Union[List[Text], Text]] = None,
32
+ ):
33
+
34
+ self._domain_path = domain_path
35
+
36
+ self._nlu_files = rasa.shared.data.get_data_files(
37
+ training_data_paths, rasa.shared.data.is_nlu_file
38
+ )
39
+ self._story_files = rasa.shared.data.get_data_files(
40
+ training_data_paths, YAMLStoryReader.is_stories_file
41
+ )
42
+ self._flow_files = rasa.shared.data.get_data_files(
43
+ training_data_paths, rasa.shared.core.flows.yaml_flows_io.is_flows_file
44
+ )
45
+ self._conversation_test_files = rasa.shared.data.get_data_files(
46
+ training_data_paths, YAMLStoryReader.is_test_stories_file
47
+ )
48
+
49
+ self.config_file = config_file
50
+
51
+ def get_config(self) -> Dict:
52
+ """Retrieves model config (see parent class for full docstring)."""
53
+ if not self.config_file or not os.path.exists(self.config_file):
54
+ logger.debug("No configuration file was provided to the RasaFileImporter.")
55
+ return {}
56
+
57
+ config = read_model_configuration(self.config_file)
58
+ return config
59
+
60
+ @rasa.shared.utils.common.cached_method
61
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
62
+ """Returns config file path for auto-config only if there is a single one."""
63
+ return self.config_file
64
+
65
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
66
+ """Retrieves training stories / rules (see parent class for full docstring)."""
67
+ return utils.story_graph_from_paths(
68
+ self._story_files, self.get_domain(), exclusion_percentage
69
+ )
70
+
71
+ def get_flows(self) -> FlowsList:
72
+ """Retrieves training stories / rules (see parent class for full docstring)."""
73
+ return utils.flows_from_paths(self._flow_files)
74
+
75
+ def get_conversation_tests(self) -> StoryGraph:
76
+ """Retrieves conversation test stories (see parent class for full docstring)."""
77
+ return utils.story_graph_from_paths(
78
+ self._conversation_test_files, self.get_domain()
79
+ )
80
+
81
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
82
+ """Retrieves NLU training data (see parent class for full docstring)."""
83
+ return utils.training_data_from_paths(self._nlu_files, language)
84
+
85
+ def get_domain(self) -> Domain:
86
+ """Retrieves model domain (see parent class for full docstring)."""
87
+ domain = Domain.empty()
88
+
89
+ # If domain path is None, return an empty domain
90
+ if not self._domain_path:
91
+ return domain
92
+ try:
93
+ domain = Domain.load(self._domain_path)
94
+ except InvalidDomain as e:
95
+ rasa.shared.utils.io.raise_warning(
96
+ f"Loading domain from '{self._domain_path}' failed. Using "
97
+ f"empty domain. Error: '{e}'"
98
+ )
99
+
100
+ return domain
@@ -0,0 +1,34 @@
1
+ from typing import Iterable, Text, Optional, List
2
+
3
+ from rasa.shared.core.domain import Domain
4
+ from rasa.shared.core.flows import FlowsList
5
+ from rasa.shared.core.training_data.structures import StoryGraph
6
+ from rasa.shared.nlu.training_data.training_data import TrainingData
7
+
8
+
9
+ def training_data_from_paths(paths: Iterable[Text], language: Text) -> TrainingData:
10
+ from rasa.shared.nlu.training_data import loading
11
+
12
+ training_data_sets = [loading.load_data(nlu_file, language) for nlu_file in paths]
13
+ return TrainingData().merge(*training_data_sets)
14
+
15
+
16
+ def story_graph_from_paths(
17
+ files: List[Text], domain: Domain, exclusion_percentage: Optional[int] = None
18
+ ) -> StoryGraph:
19
+ """Returns the `StoryGraph` from paths."""
20
+ from rasa.shared.core.training_data import loading
21
+
22
+ story_steps = loading.load_data_from_files(files, domain, exclusion_percentage)
23
+ return StoryGraph(story_steps)
24
+
25
+
26
+ def flows_from_paths(files: List[Text]) -> FlowsList:
27
+ """Returns the flows from paths."""
28
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
29
+
30
+ flows = FlowsList(underlying_flows=[])
31
+ for file in files:
32
+ flows = flows.merge(YAMLFlowsReader.read_from_file(file))
33
+ flows.validate()
34
+ return flows
File without changes
@@ -0,0 +1,45 @@
1
+ TEXT = "text"
2
+ TEXT_TOKENS = "text_tokens"
3
+ INTENT = "intent"
4
+ COMMANDS = "commands"
5
+ FLOWS_FROM_SEMANTIC_SEARCH = "flows_from_semantic_search"
6
+ FLOWS_IN_PROMPT = "flows_in_prompt"
7
+ NOT_INTENT = "not_intent"
8
+ RESPONSE = "response"
9
+ RESPONSE_SELECTOR = "response_selector"
10
+ INTENT_RESPONSE_KEY = "intent_response_key"
11
+ ACTION_TEXT = "action_text"
12
+ ACTION_NAME = "action_name"
13
+ INTENT_NAME_KEY = "name"
14
+ FULL_RETRIEVAL_INTENT_NAME_KEY = "full_retrieval_intent_name"
15
+ METADATA = "metadata"
16
+ METADATA_INTENT = "intent"
17
+ METADATA_EXAMPLE = "example"
18
+ METADATA_MODEL_ID = "model_id"
19
+ INTENT_RANKING_KEY = "intent_ranking"
20
+ PREDICTED_CONFIDENCE_KEY = "confidence"
21
+
22
+ RESPONSE_IDENTIFIER_DELIMITER = "/"
23
+
24
+ FEATURE_TYPE_SENTENCE = "sentence"
25
+ FEATURE_TYPE_SEQUENCE = "sequence"
26
+ VALID_FEATURE_TYPES = [FEATURE_TYPE_SEQUENCE, FEATURE_TYPE_SENTENCE]
27
+
28
+ EXTRACTOR = "extractor"
29
+ PRETRAINED_EXTRACTORS = {"DucklingEntityExtractor", "SpacyEntityExtractor"}
30
+ TRAINABLE_EXTRACTORS = {"MitieEntityExtractor", "CRFEntityExtractor", "DIETClassifier"}
31
+
32
+ ENTITIES = "entities"
33
+ ENTITY_TAGS = "entity_tags"
34
+ ENTITY_ATTRIBUTE_TYPE = "entity"
35
+ ENTITY_ATTRIBUTE_GROUP = "group"
36
+ ENTITY_ATTRIBUTE_ROLE = "role"
37
+ ENTITY_ATTRIBUTE_VALUE = "value"
38
+ ENTITY_ATTRIBUTE_START = "start"
39
+ ENTITY_ATTRIBUTE_END = "end"
40
+ ENTITY_ATTRIBUTE_TEXT = "text"
41
+ ENTITY_ATTRIBUTE_CONFIDENCE = "confidence"
42
+ NO_ENTITY_TAG = "O"
43
+ SPLIT_ENTITIES_BY_COMMA = "split_entities_by_comma"
44
+ SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE = True
45
+ SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET = {".", ",", " ", ";"}
@@ -0,0 +1,10 @@
1
+ class NaturalLanguageInterpreter:
2
+ """Remove once all old components are deleted."""
3
+
4
+ pass
5
+
6
+
7
+ class RegexInterpreter:
8
+ """Remove once all old components are deleted."""
9
+
10
+ pass
File without changes
@@ -0,0 +1,209 @@
1
+ import re
2
+ from json import JSONDecodeError
3
+ from typing import Text, List, Dict, Match, Optional, NamedTuple, Any
4
+ import logging
5
+
6
+ import rasa.shared.nlu.training_data.util
7
+ from rasa.shared.constants import DOCS_URL_TRAINING_DATA_NLU
8
+ from rasa.shared.exceptions import InvalidEntityFormatException
9
+ from rasa.shared.nlu.constants import (
10
+ ENTITY_ATTRIBUTE_VALUE,
11
+ ENTITY_ATTRIBUTE_TYPE,
12
+ ENTITY_ATTRIBUTE_GROUP,
13
+ ENTITY_ATTRIBUTE_ROLE,
14
+ )
15
+ from rasa.shared.nlu.training_data.message import Message
16
+
17
+
18
+ GROUP_ENTITY_VALUE = "value"
19
+ GROUP_ENTITY_TYPE = "entity"
20
+ GROUP_ENTITY_DICT = "entity_dict"
21
+ GROUP_ENTITY_DICT_LIST = "list_entity_dicts"
22
+ GROUP_ENTITY_TEXT = "entity_text"
23
+ GROUP_COMPLETE_MATCH = 0
24
+
25
+ # regex for: `[entity_text]((entity_type(:entity_synonym)?)|{entity_dict}|[list_entity_dicts])` # noqa: E501
26
+ ENTITY_REGEX = re.compile(
27
+ r"\[(?P<entity_text>[^\]]+?)\](\((?P<entity>[^:)]+?)(?:\:(?P<value>[^)]+))?\)|\{(?P<entity_dict>[^}]+?)\}|\[(?P<list_entity_dicts>.*?)\])" # noqa: E501
28
+ )
29
+
30
+ SINGLE_ENTITY_DICT = re.compile(r"{(?P<entity_dict>[^}]+?)\}")
31
+
32
+ logger = logging.getLogger(__name__)
33
+
34
+
35
+ class EntityAttributes(NamedTuple):
36
+ """Attributes of an entity defined in markdown data."""
37
+
38
+ type: Text
39
+ value: Text
40
+ text: Text
41
+ group: Optional[Text]
42
+ role: Optional[Text]
43
+
44
+
45
+ def find_entities_in_training_example(example: Text) -> List[Dict[Text, Any]]:
46
+ """Extracts entities from an annotated utterance.
47
+
48
+ Args:
49
+ example: Annotated utterance.
50
+
51
+ Returns:
52
+ Extracted entities.
53
+ """
54
+ entities = []
55
+ offset = 0
56
+
57
+ for match in re.finditer(ENTITY_REGEX, example):
58
+ logger.debug(f"Entity annotation regex match: {match}")
59
+ if match.groupdict()[GROUP_ENTITY_DICT] or match.groupdict()[GROUP_ENTITY_TYPE]:
60
+ # Text is annotated with a single entity
61
+ entity_attributes = extract_entity_attributes(match)
62
+
63
+ start_index = match.start() - offset
64
+ end_index = start_index + len(entity_attributes.text)
65
+ offset += len(match.group(0)) - len(entity_attributes.text)
66
+
67
+ entity = rasa.shared.nlu.training_data.util.build_entity(
68
+ start_index,
69
+ end_index,
70
+ entity_attributes.value,
71
+ entity_attributes.type,
72
+ entity_attributes.role,
73
+ entity_attributes.group,
74
+ )
75
+ entities.append(entity)
76
+ else:
77
+ # Text is annotated with multiple entities for the same text
78
+ entity_text = match.groupdict()[GROUP_ENTITY_TEXT]
79
+
80
+ start_index = match.start() - offset
81
+ end_index = start_index + len(entity_text)
82
+ offset += len(match.group(0)) - len(entity_text)
83
+
84
+ for match_inner in re.finditer(
85
+ SINGLE_ENTITY_DICT, match.groupdict()[GROUP_ENTITY_DICT_LIST]
86
+ ):
87
+
88
+ entity_attributes = extract_entity_attributes_from_dict(
89
+ entity_text=entity_text, match=match_inner
90
+ )
91
+
92
+ entity = rasa.shared.nlu.training_data.util.build_entity(
93
+ start_index,
94
+ end_index,
95
+ entity_attributes.value,
96
+ entity_attributes.type,
97
+ entity_attributes.role,
98
+ entity_attributes.group,
99
+ )
100
+ entities.append(entity)
101
+
102
+ return entities
103
+
104
+
105
+ def extract_entity_attributes(match: Match) -> EntityAttributes:
106
+ """Extract the entity attributes, i.e. type, value, etc., from the
107
+ regex match.
108
+
109
+ Args:
110
+ match: Regex match to extract the entity attributes from.
111
+
112
+ Returns:
113
+ EntityAttributes object.
114
+ """
115
+ entity_text = match.groupdict()[GROUP_ENTITY_TEXT]
116
+
117
+ if match.groupdict()[GROUP_ENTITY_DICT]:
118
+ return extract_entity_attributes_from_dict(entity_text, match)
119
+
120
+ entity_type = match.groupdict()[GROUP_ENTITY_TYPE]
121
+
122
+ if match.groupdict()[GROUP_ENTITY_VALUE]:
123
+ entity_value = match.groupdict()[GROUP_ENTITY_VALUE]
124
+ else:
125
+ entity_value = entity_text
126
+
127
+ return EntityAttributes(entity_type, entity_value, entity_text, None, None)
128
+
129
+
130
+ def extract_entity_attributes_from_dict(
131
+ entity_text: Text, match: Match
132
+ ) -> EntityAttributes:
133
+ """Extract entity attributes from dict format.
134
+
135
+ Args:
136
+ entity_text: Original entity text.
137
+ match: Regex match.
138
+
139
+ Returns:
140
+ Extracted entity attributes.
141
+ """
142
+ entity_dict_str = match.groupdict()[GROUP_ENTITY_DICT]
143
+ entity_dict = get_validated_dict(entity_dict_str)
144
+ return EntityAttributes(
145
+ entity_dict.get(ENTITY_ATTRIBUTE_TYPE),
146
+ entity_dict.get(ENTITY_ATTRIBUTE_VALUE, entity_text),
147
+ entity_text,
148
+ entity_dict.get(ENTITY_ATTRIBUTE_GROUP),
149
+ entity_dict.get(ENTITY_ATTRIBUTE_ROLE),
150
+ )
151
+
152
+
153
+ def get_validated_dict(json_str: Text) -> Dict[Text, Text]:
154
+ """Converts the provided `json_str` to a valid dict containing the entity
155
+ attributes.
156
+
157
+ Users can specify entity roles, synonyms, groups for an entity in a dict, e.g.
158
+ [LA]{"entity": "city", "role": "to", "value": "Los Angeles"}.
159
+
160
+ Args:
161
+ json_str: The entity dict as string without "{}".
162
+
163
+ Raises:
164
+ SchemaValidationError if validation of parsed entity fails.
165
+ InvalidEntityFormatException if provided entity is not valid json.
166
+
167
+ Returns:
168
+ Deserialized and validated `json_str`.
169
+ """
170
+ import json
171
+ from rasa.shared.utils.yaml import validate_training_data
172
+ import rasa.shared.nlu.training_data.schemas.data_schema as schema
173
+
174
+ # add {} as they are not part of the regex
175
+ try:
176
+ data = json.loads(f"{{{json_str}}}")
177
+ except JSONDecodeError as e:
178
+ raise InvalidEntityFormatException.create_from(
179
+ e,
180
+ f"Incorrect training data format ('{{{json_str}}}'). "
181
+ f"More info at {DOCS_URL_TRAINING_DATA_NLU}",
182
+ ) from e
183
+
184
+ validate_training_data(data, schema.entity_dict_schema())
185
+
186
+ return data
187
+
188
+
189
+ def replace_entities(training_example: Text) -> Text:
190
+ """Replace special symbols related to the entities in the provided
191
+ training example.
192
+
193
+ Args:
194
+ training_example: Original training example with special symbols.
195
+
196
+ Returns:
197
+ String with removed special symbols.
198
+ """
199
+ return re.sub(
200
+ ENTITY_REGEX, lambda m: m.groupdict()[GROUP_ENTITY_TEXT], training_example
201
+ )
202
+
203
+
204
+ def parse_training_example(example: Text, intent: Optional[Text] = None) -> "Message":
205
+ """Extract entities and synonyms, and convert to plain text."""
206
+ entities = find_entities_in_training_example(example)
207
+ plain_text = replace_entities(example)
208
+
209
+ return Message.build(plain_text, intent, entities)