rasa-pro 3.12.0.dev1__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 (790) hide show
  1. README.md +41 -0
  2. rasa/__init__.py +9 -0
  3. rasa/__main__.py +177 -0
  4. rasa/anonymization/__init__.py +2 -0
  5. rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
  6. rasa/anonymization/anonymization_pipeline.py +286 -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 +118 -0
  11. rasa/api.py +160 -0
  12. rasa/cli/__init__.py +5 -0
  13. rasa/cli/arguments/__init__.py +0 -0
  14. rasa/cli/arguments/data.py +106 -0
  15. rasa/cli/arguments/default_arguments.py +207 -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 +219 -0
  20. rasa/cli/arguments/shell.py +17 -0
  21. rasa/cli/arguments/test.py +211 -0
  22. rasa/cli/arguments/train.py +279 -0
  23. rasa/cli/arguments/visualize.py +34 -0
  24. rasa/cli/arguments/x.py +30 -0
  25. rasa/cli/data.py +354 -0
  26. rasa/cli/dialogue_understanding_test.py +251 -0
  27. rasa/cli/e2e_test.py +259 -0
  28. rasa/cli/evaluate.py +222 -0
  29. rasa/cli/export.py +250 -0
  30. rasa/cli/inspect.py +75 -0
  31. rasa/cli/interactive.py +166 -0
  32. rasa/cli/license.py +65 -0
  33. rasa/cli/llm_fine_tuning.py +403 -0
  34. rasa/cli/markers.py +78 -0
  35. rasa/cli/project_templates/__init__.py +0 -0
  36. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  37. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  38. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  39. rasa/cli/project_templates/calm/actions/db.py +57 -0
  40. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  41. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  42. rasa/cli/project_templates/calm/config.yml +10 -0
  43. rasa/cli/project_templates/calm/credentials.yml +33 -0
  44. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  45. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  46. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  47. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  48. rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
  49. rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
  50. rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
  51. rasa/cli/project_templates/calm/domain/shared.yml +10 -0
  52. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  53. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  54. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  55. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  58. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  59. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  60. rasa/cli/project_templates/calm/endpoints.yml +58 -0
  61. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  62. rasa/cli/project_templates/default/actions/actions.py +27 -0
  63. rasa/cli/project_templates/default/config.yml +44 -0
  64. rasa/cli/project_templates/default/credentials.yml +33 -0
  65. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  66. rasa/cli/project_templates/default/data/rules.yml +13 -0
  67. rasa/cli/project_templates/default/data/stories.yml +30 -0
  68. rasa/cli/project_templates/default/domain.yml +34 -0
  69. rasa/cli/project_templates/default/endpoints.yml +42 -0
  70. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  71. rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
  72. rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
  73. rasa/cli/project_templates/tutorial/config.yml +12 -0
  74. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  75. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  76. rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
  77. rasa/cli/project_templates/tutorial/domain.yml +35 -0
  78. rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
  79. rasa/cli/run.py +143 -0
  80. rasa/cli/scaffold.py +273 -0
  81. rasa/cli/shell.py +141 -0
  82. rasa/cli/studio/__init__.py +0 -0
  83. rasa/cli/studio/download.py +62 -0
  84. rasa/cli/studio/studio.py +296 -0
  85. rasa/cli/studio/train.py +59 -0
  86. rasa/cli/studio/upload.py +62 -0
  87. rasa/cli/telemetry.py +102 -0
  88. rasa/cli/test.py +280 -0
  89. rasa/cli/train.py +278 -0
  90. rasa/cli/utils.py +484 -0
  91. rasa/cli/visualize.py +40 -0
  92. rasa/cli/x.py +206 -0
  93. rasa/constants.py +45 -0
  94. rasa/core/__init__.py +17 -0
  95. rasa/core/actions/__init__.py +0 -0
  96. rasa/core/actions/action.py +1318 -0
  97. rasa/core/actions/action_clean_stack.py +59 -0
  98. rasa/core/actions/action_exceptions.py +24 -0
  99. rasa/core/actions/action_hangup.py +29 -0
  100. rasa/core/actions/action_repeat_bot_messages.py +89 -0
  101. rasa/core/actions/action_run_slot_rejections.py +210 -0
  102. rasa/core/actions/action_trigger_chitchat.py +31 -0
  103. rasa/core/actions/action_trigger_flow.py +109 -0
  104. rasa/core/actions/action_trigger_search.py +31 -0
  105. rasa/core/actions/constants.py +5 -0
  106. rasa/core/actions/custom_action_executor.py +191 -0
  107. rasa/core/actions/direct_custom_actions_executor.py +109 -0
  108. rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
  109. rasa/core/actions/forms.py +741 -0
  110. rasa/core/actions/grpc_custom_action_executor.py +251 -0
  111. rasa/core/actions/http_custom_action_executor.py +145 -0
  112. rasa/core/actions/loops.py +114 -0
  113. rasa/core/actions/two_stage_fallback.py +186 -0
  114. rasa/core/agent.py +559 -0
  115. rasa/core/auth_retry_tracker_store.py +122 -0
  116. rasa/core/brokers/__init__.py +0 -0
  117. rasa/core/brokers/broker.py +126 -0
  118. rasa/core/brokers/file.py +58 -0
  119. rasa/core/brokers/kafka.py +324 -0
  120. rasa/core/brokers/pika.py +388 -0
  121. rasa/core/brokers/sql.py +86 -0
  122. rasa/core/channels/__init__.py +61 -0
  123. rasa/core/channels/botframework.py +338 -0
  124. rasa/core/channels/callback.py +84 -0
  125. rasa/core/channels/channel.py +456 -0
  126. rasa/core/channels/console.py +241 -0
  127. rasa/core/channels/development_inspector.py +197 -0
  128. rasa/core/channels/facebook.py +419 -0
  129. rasa/core/channels/hangouts.py +329 -0
  130. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  131. rasa/core/channels/inspector/.gitignore +23 -0
  132. rasa/core/channels/inspector/README.md +54 -0
  133. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  134. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  135. rasa/core/channels/inspector/custom.d.ts +3 -0
  136. rasa/core/channels/inspector/dist/assets/arc-861ddd57.js +1 -0
  137. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  138. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
  139. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
  140. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
  141. rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
  142. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
  143. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
  144. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
  145. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
  146. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
  147. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
  148. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
  149. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.js +70 -0
  150. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  151. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  152. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  153. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  154. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-42ba3e3d.js +1 -0
  155. rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
  156. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  157. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
  158. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  159. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.js +139 -0
  160. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  161. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  162. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  163. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  164. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  165. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  166. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  167. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  168. rasa/core/channels/inspector/dist/assets/layout-89e6403a.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
  171. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.js +109 -0
  172. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  173. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  174. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-bdf5f29b.js +35 -0
  175. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
  176. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
  177. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
  178. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
  179. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
  180. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
  181. rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
  182. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
  183. rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
  184. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
  185. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
  186. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
  187. rasa/core/channels/inspector/dist/index.html +42 -0
  188. rasa/core/channels/inspector/index.html +40 -0
  189. rasa/core/channels/inspector/jest.config.ts +13 -0
  190. rasa/core/channels/inspector/package.json +52 -0
  191. rasa/core/channels/inspector/setupTests.ts +2 -0
  192. rasa/core/channels/inspector/src/App.tsx +220 -0
  193. rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
  194. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
  195. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  196. rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
  197. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  198. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  199. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
  200. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  201. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  202. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  203. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  204. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  205. rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
  206. rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
  207. rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
  208. rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
  209. rasa/core/channels/inspector/src/main.tsx +13 -0
  210. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  211. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  212. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  213. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  214. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  215. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  216. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  217. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  218. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  222. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  223. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  224. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  225. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  226. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  227. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  228. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  229. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  230. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  231. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  232. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  233. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  234. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  235. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  236. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  237. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  238. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  239. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  240. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  241. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  242. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  243. rasa/core/channels/inspector/src/types.ts +84 -0
  244. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  245. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  246. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  247. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  248. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  249. rasa/core/channels/inspector/tsconfig.json +26 -0
  250. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  251. rasa/core/channels/inspector/vite.config.ts +8 -0
  252. rasa/core/channels/inspector/yarn.lock +6249 -0
  253. rasa/core/channels/mattermost.py +229 -0
  254. rasa/core/channels/rasa_chat.py +126 -0
  255. rasa/core/channels/rest.py +230 -0
  256. rasa/core/channels/rocketchat.py +174 -0
  257. rasa/core/channels/slack.py +620 -0
  258. rasa/core/channels/socketio.py +302 -0
  259. rasa/core/channels/telegram.py +298 -0
  260. rasa/core/channels/twilio.py +169 -0
  261. rasa/core/channels/vier_cvg.py +374 -0
  262. rasa/core/channels/voice_ready/__init__.py +0 -0
  263. rasa/core/channels/voice_ready/audiocodes.py +501 -0
  264. rasa/core/channels/voice_ready/jambonz.py +121 -0
  265. rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
  266. rasa/core/channels/voice_ready/twilio_voice.py +403 -0
  267. rasa/core/channels/voice_ready/utils.py +37 -0
  268. rasa/core/channels/voice_stream/__init__.py +0 -0
  269. rasa/core/channels/voice_stream/asr/__init__.py +0 -0
  270. rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
  271. rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
  272. rasa/core/channels/voice_stream/asr/azure.py +130 -0
  273. rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
  274. rasa/core/channels/voice_stream/audio_bytes.py +8 -0
  275. rasa/core/channels/voice_stream/browser_audio.py +107 -0
  276. rasa/core/channels/voice_stream/call_state.py +23 -0
  277. rasa/core/channels/voice_stream/tts/__init__.py +0 -0
  278. rasa/core/channels/voice_stream/tts/azure.py +106 -0
  279. rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
  280. rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
  281. rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
  282. rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
  283. rasa/core/channels/voice_stream/util.py +57 -0
  284. rasa/core/channels/voice_stream/voice_channel.py +427 -0
  285. rasa/core/channels/webexteams.py +134 -0
  286. rasa/core/concurrent_lock_store.py +210 -0
  287. rasa/core/constants.py +112 -0
  288. rasa/core/evaluation/__init__.py +0 -0
  289. rasa/core/evaluation/marker.py +267 -0
  290. rasa/core/evaluation/marker_base.py +923 -0
  291. rasa/core/evaluation/marker_stats.py +293 -0
  292. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  293. rasa/core/exceptions.py +29 -0
  294. rasa/core/exporter.py +284 -0
  295. rasa/core/featurizers/__init__.py +0 -0
  296. rasa/core/featurizers/precomputation.py +410 -0
  297. rasa/core/featurizers/single_state_featurizer.py +421 -0
  298. rasa/core/featurizers/tracker_featurizers.py +1262 -0
  299. rasa/core/http_interpreter.py +89 -0
  300. rasa/core/information_retrieval/__init__.py +7 -0
  301. rasa/core/information_retrieval/faiss.py +124 -0
  302. rasa/core/information_retrieval/information_retrieval.py +137 -0
  303. rasa/core/information_retrieval/milvus.py +59 -0
  304. rasa/core/information_retrieval/qdrant.py +96 -0
  305. rasa/core/jobs.py +63 -0
  306. rasa/core/lock.py +139 -0
  307. rasa/core/lock_store.py +343 -0
  308. rasa/core/migrate.py +403 -0
  309. rasa/core/nlg/__init__.py +3 -0
  310. rasa/core/nlg/callback.py +146 -0
  311. rasa/core/nlg/contextual_response_rephraser.py +320 -0
  312. rasa/core/nlg/generator.py +230 -0
  313. rasa/core/nlg/interpolator.py +143 -0
  314. rasa/core/nlg/response.py +155 -0
  315. rasa/core/nlg/summarize.py +70 -0
  316. rasa/core/persistor.py +538 -0
  317. rasa/core/policies/__init__.py +0 -0
  318. rasa/core/policies/ensemble.py +329 -0
  319. rasa/core/policies/enterprise_search_policy.py +905 -0
  320. rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
  321. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
  322. rasa/core/policies/flow_policy.py +205 -0
  323. rasa/core/policies/flows/__init__.py +0 -0
  324. rasa/core/policies/flows/flow_exceptions.py +44 -0
  325. rasa/core/policies/flows/flow_executor.py +754 -0
  326. rasa/core/policies/flows/flow_step_result.py +43 -0
  327. rasa/core/policies/intentless_policy.py +1031 -0
  328. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  329. rasa/core/policies/memoization.py +538 -0
  330. rasa/core/policies/policy.py +725 -0
  331. rasa/core/policies/rule_policy.py +1273 -0
  332. rasa/core/policies/ted_policy.py +2169 -0
  333. rasa/core/policies/unexpected_intent_policy.py +1022 -0
  334. rasa/core/processor.py +1465 -0
  335. rasa/core/run.py +342 -0
  336. rasa/core/secrets_manager/__init__.py +0 -0
  337. rasa/core/secrets_manager/constants.py +36 -0
  338. rasa/core/secrets_manager/endpoints.py +391 -0
  339. rasa/core/secrets_manager/factory.py +241 -0
  340. rasa/core/secrets_manager/secret_manager.py +262 -0
  341. rasa/core/secrets_manager/vault.py +584 -0
  342. rasa/core/test.py +1335 -0
  343. rasa/core/tracker_store.py +1703 -0
  344. rasa/core/train.py +105 -0
  345. rasa/core/training/__init__.py +89 -0
  346. rasa/core/training/converters/__init__.py +0 -0
  347. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  348. rasa/core/training/interactive.py +1744 -0
  349. rasa/core/training/story_conflict.py +381 -0
  350. rasa/core/training/training.py +93 -0
  351. rasa/core/utils.py +366 -0
  352. rasa/core/visualize.py +70 -0
  353. rasa/dialogue_understanding/__init__.py +0 -0
  354. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  355. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  356. rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
  357. rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
  358. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  359. rasa/dialogue_understanding/commands/__init__.py +61 -0
  360. rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
  361. rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
  362. rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
  363. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
  364. rasa/dialogue_understanding/commands/clarify_command.py +86 -0
  365. rasa/dialogue_understanding/commands/command.py +85 -0
  366. rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
  367. rasa/dialogue_understanding/commands/error_command.py +79 -0
  368. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  369. rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
  370. rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
  371. rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
  372. rasa/dialogue_understanding/commands/noop_command.py +54 -0
  373. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
  374. rasa/dialogue_understanding/commands/restart_command.py +58 -0
  375. rasa/dialogue_understanding/commands/session_end_command.py +61 -0
  376. rasa/dialogue_understanding/commands/session_start_command.py +59 -0
  377. rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
  378. rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
  379. rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
  380. rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
  381. rasa/dialogue_understanding/commands/utils.py +45 -0
  382. rasa/dialogue_understanding/generator/__init__.py +21 -0
  383. rasa/dialogue_understanding/generator/command_generator.py +464 -0
  384. rasa/dialogue_understanding/generator/constants.py +27 -0
  385. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  386. rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
  387. rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
  388. rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
  389. rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
  390. rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
  391. rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
  392. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +920 -0
  393. rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -0
  394. rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
  395. rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
  396. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +486 -0
  397. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  398. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  399. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  400. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  401. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  402. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  403. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  404. rasa/dialogue_understanding/patterns/completed.py +40 -0
  405. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  406. rasa/dialogue_understanding/patterns/correction.py +278 -0
  407. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
  408. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  409. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  410. rasa/dialogue_understanding/patterns/repeat.py +37 -0
  411. rasa/dialogue_understanding/patterns/restart.py +37 -0
  412. rasa/dialogue_understanding/patterns/search.py +37 -0
  413. rasa/dialogue_understanding/patterns/session_start.py +37 -0
  414. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  415. rasa/dialogue_understanding/patterns/user_silence.py +37 -0
  416. rasa/dialogue_understanding/processor/__init__.py +0 -0
  417. rasa/dialogue_understanding/processor/command_processor.py +720 -0
  418. rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
  419. rasa/dialogue_understanding/stack/__init__.py +0 -0
  420. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  421. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  422. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  423. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  424. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  425. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  426. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  427. rasa/dialogue_understanding/stack/utils.py +211 -0
  428. rasa/dialogue_understanding/utils.py +14 -0
  429. rasa/dialogue_understanding_test/__init__.py +0 -0
  430. rasa/dialogue_understanding_test/command_metric_calculation.py +12 -0
  431. rasa/dialogue_understanding_test/constants.py +17 -0
  432. rasa/dialogue_understanding_test/du_test_case.py +118 -0
  433. rasa/dialogue_understanding_test/du_test_result.py +11 -0
  434. rasa/dialogue_understanding_test/du_test_runner.py +93 -0
  435. rasa/dialogue_understanding_test/io.py +54 -0
  436. rasa/dialogue_understanding_test/validation.py +22 -0
  437. rasa/e2e_test/__init__.py +0 -0
  438. rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
  439. rasa/e2e_test/assertions.py +1345 -0
  440. rasa/e2e_test/assertions_schema.yml +129 -0
  441. rasa/e2e_test/constants.py +31 -0
  442. rasa/e2e_test/e2e_config.py +220 -0
  443. rasa/e2e_test/e2e_config_schema.yml +26 -0
  444. rasa/e2e_test/e2e_test_case.py +569 -0
  445. rasa/e2e_test/e2e_test_converter.py +363 -0
  446. rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
  447. rasa/e2e_test/e2e_test_coverage_report.py +364 -0
  448. rasa/e2e_test/e2e_test_result.py +54 -0
  449. rasa/e2e_test/e2e_test_runner.py +1192 -0
  450. rasa/e2e_test/e2e_test_schema.yml +181 -0
  451. rasa/e2e_test/pykwalify_extensions.py +39 -0
  452. rasa/e2e_test/stub_custom_action.py +70 -0
  453. rasa/e2e_test/utils/__init__.py +0 -0
  454. rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
  455. rasa/e2e_test/utils/io.py +598 -0
  456. rasa/e2e_test/utils/validation.py +178 -0
  457. rasa/engine/__init__.py +0 -0
  458. rasa/engine/caching.py +463 -0
  459. rasa/engine/constants.py +17 -0
  460. rasa/engine/exceptions.py +14 -0
  461. rasa/engine/graph.py +642 -0
  462. rasa/engine/loader.py +48 -0
  463. rasa/engine/recipes/__init__.py +0 -0
  464. rasa/engine/recipes/config_files/default_config.yml +41 -0
  465. rasa/engine/recipes/default_components.py +97 -0
  466. rasa/engine/recipes/default_recipe.py +1272 -0
  467. rasa/engine/recipes/graph_recipe.py +79 -0
  468. rasa/engine/recipes/recipe.py +93 -0
  469. rasa/engine/runner/__init__.py +0 -0
  470. rasa/engine/runner/dask.py +250 -0
  471. rasa/engine/runner/interface.py +49 -0
  472. rasa/engine/storage/__init__.py +0 -0
  473. rasa/engine/storage/local_model_storage.py +244 -0
  474. rasa/engine/storage/resource.py +110 -0
  475. rasa/engine/storage/storage.py +199 -0
  476. rasa/engine/training/__init__.py +0 -0
  477. rasa/engine/training/components.py +176 -0
  478. rasa/engine/training/fingerprinting.py +64 -0
  479. rasa/engine/training/graph_trainer.py +256 -0
  480. rasa/engine/training/hooks.py +164 -0
  481. rasa/engine/validation.py +1451 -0
  482. rasa/env.py +14 -0
  483. rasa/exceptions.py +69 -0
  484. rasa/graph_components/__init__.py +0 -0
  485. rasa/graph_components/converters/__init__.py +0 -0
  486. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  487. rasa/graph_components/providers/__init__.py +0 -0
  488. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  489. rasa/graph_components/providers/domain_provider.py +71 -0
  490. rasa/graph_components/providers/flows_provider.py +74 -0
  491. rasa/graph_components/providers/forms_provider.py +44 -0
  492. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  493. rasa/graph_components/providers/responses_provider.py +44 -0
  494. rasa/graph_components/providers/rule_only_provider.py +49 -0
  495. rasa/graph_components/providers/story_graph_provider.py +96 -0
  496. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  497. rasa/graph_components/validators/__init__.py +0 -0
  498. rasa/graph_components/validators/default_recipe_validator.py +550 -0
  499. rasa/graph_components/validators/finetuning_validator.py +302 -0
  500. rasa/hooks.py +111 -0
  501. rasa/jupyter.py +63 -0
  502. rasa/llm_fine_tuning/__init__.py +0 -0
  503. rasa/llm_fine_tuning/annotation_module.py +241 -0
  504. rasa/llm_fine_tuning/conversations.py +144 -0
  505. rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
  506. rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
  507. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
  508. rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
  509. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
  510. rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
  511. rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
  512. rasa/llm_fine_tuning/storage.py +174 -0
  513. rasa/llm_fine_tuning/train_test_split_module.py +441 -0
  514. rasa/markers/__init__.py +0 -0
  515. rasa/markers/marker.py +269 -0
  516. rasa/markers/marker_base.py +828 -0
  517. rasa/markers/upload.py +74 -0
  518. rasa/markers/validate.py +21 -0
  519. rasa/model.py +118 -0
  520. rasa/model_manager/__init__.py +0 -0
  521. rasa/model_manager/config.py +40 -0
  522. rasa/model_manager/model_api.py +559 -0
  523. rasa/model_manager/runner_service.py +286 -0
  524. rasa/model_manager/socket_bridge.py +146 -0
  525. rasa/model_manager/studio_jwt_auth.py +86 -0
  526. rasa/model_manager/trainer_service.py +325 -0
  527. rasa/model_manager/utils.py +87 -0
  528. rasa/model_manager/warm_rasa_process.py +187 -0
  529. rasa/model_service.py +112 -0
  530. rasa/model_testing.py +457 -0
  531. rasa/model_training.py +596 -0
  532. rasa/nlu/__init__.py +7 -0
  533. rasa/nlu/classifiers/__init__.py +3 -0
  534. rasa/nlu/classifiers/classifier.py +5 -0
  535. rasa/nlu/classifiers/diet_classifier.py +1881 -0
  536. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  537. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  538. rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
  539. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  540. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  541. rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
  542. rasa/nlu/constants.py +77 -0
  543. rasa/nlu/convert.py +40 -0
  544. rasa/nlu/emulators/__init__.py +0 -0
  545. rasa/nlu/emulators/dialogflow.py +55 -0
  546. rasa/nlu/emulators/emulator.py +49 -0
  547. rasa/nlu/emulators/luis.py +86 -0
  548. rasa/nlu/emulators/no_emulator.py +10 -0
  549. rasa/nlu/emulators/wit.py +56 -0
  550. rasa/nlu/extractors/__init__.py +0 -0
  551. rasa/nlu/extractors/crf_entity_extractor.py +715 -0
  552. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  553. rasa/nlu/extractors/entity_synonyms.py +178 -0
  554. rasa/nlu/extractors/extractor.py +470 -0
  555. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  556. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  557. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  558. rasa/nlu/featurizers/__init__.py +0 -0
  559. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  560. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
  561. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  562. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
  563. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  564. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  565. rasa/nlu/featurizers/featurizer.py +89 -0
  566. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  567. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
  568. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
  569. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
  570. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  571. rasa/nlu/model.py +24 -0
  572. rasa/nlu/run.py +27 -0
  573. rasa/nlu/selectors/__init__.py +0 -0
  574. rasa/nlu/selectors/response_selector.py +987 -0
  575. rasa/nlu/test.py +1940 -0
  576. rasa/nlu/tokenizers/__init__.py +0 -0
  577. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  578. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  579. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  580. rasa/nlu/tokenizers/tokenizer.py +239 -0
  581. rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
  582. rasa/nlu/utils/__init__.py +35 -0
  583. rasa/nlu/utils/bilou_utils.py +462 -0
  584. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  585. rasa/nlu/utils/hugging_face/registry.py +108 -0
  586. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  587. rasa/nlu/utils/mitie_utils.py +113 -0
  588. rasa/nlu/utils/pattern_utils.py +168 -0
  589. rasa/nlu/utils/spacy_utils.py +310 -0
  590. rasa/plugin.py +90 -0
  591. rasa/server.py +1588 -0
  592. rasa/shared/__init__.py +0 -0
  593. rasa/shared/constants.py +311 -0
  594. rasa/shared/core/__init__.py +0 -0
  595. rasa/shared/core/command_payload_reader.py +109 -0
  596. rasa/shared/core/constants.py +180 -0
  597. rasa/shared/core/conversation.py +46 -0
  598. rasa/shared/core/domain.py +2172 -0
  599. rasa/shared/core/events.py +2559 -0
  600. rasa/shared/core/flows/__init__.py +7 -0
  601. rasa/shared/core/flows/flow.py +562 -0
  602. rasa/shared/core/flows/flow_path.py +84 -0
  603. rasa/shared/core/flows/flow_step.py +146 -0
  604. rasa/shared/core/flows/flow_step_links.py +319 -0
  605. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  606. rasa/shared/core/flows/flows_list.py +258 -0
  607. rasa/shared/core/flows/flows_yaml_schema.json +303 -0
  608. rasa/shared/core/flows/nlu_trigger.py +117 -0
  609. rasa/shared/core/flows/steps/__init__.py +24 -0
  610. rasa/shared/core/flows/steps/action.py +56 -0
  611. rasa/shared/core/flows/steps/call.py +64 -0
  612. rasa/shared/core/flows/steps/collect.py +112 -0
  613. rasa/shared/core/flows/steps/constants.py +5 -0
  614. rasa/shared/core/flows/steps/continuation.py +36 -0
  615. rasa/shared/core/flows/steps/end.py +22 -0
  616. rasa/shared/core/flows/steps/internal.py +44 -0
  617. rasa/shared/core/flows/steps/link.py +51 -0
  618. rasa/shared/core/flows/steps/no_operation.py +48 -0
  619. rasa/shared/core/flows/steps/set_slots.py +50 -0
  620. rasa/shared/core/flows/steps/start.py +30 -0
  621. rasa/shared/core/flows/utils.py +39 -0
  622. rasa/shared/core/flows/validation.py +735 -0
  623. rasa/shared/core/flows/yaml_flows_io.py +405 -0
  624. rasa/shared/core/generator.py +908 -0
  625. rasa/shared/core/slot_mappings.py +526 -0
  626. rasa/shared/core/slots.py +654 -0
  627. rasa/shared/core/trackers.py +1183 -0
  628. rasa/shared/core/training_data/__init__.py +0 -0
  629. rasa/shared/core/training_data/loading.py +89 -0
  630. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  631. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  632. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  633. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  634. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  635. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  636. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
  637. rasa/shared/core/training_data/structures.py +858 -0
  638. rasa/shared/core/training_data/visualization.html +146 -0
  639. rasa/shared/core/training_data/visualization.py +603 -0
  640. rasa/shared/data.py +249 -0
  641. rasa/shared/engine/__init__.py +0 -0
  642. rasa/shared/engine/caching.py +26 -0
  643. rasa/shared/exceptions.py +167 -0
  644. rasa/shared/importers/__init__.py +0 -0
  645. rasa/shared/importers/importer.py +770 -0
  646. rasa/shared/importers/multi_project.py +215 -0
  647. rasa/shared/importers/rasa.py +108 -0
  648. rasa/shared/importers/remote_importer.py +196 -0
  649. rasa/shared/importers/utils.py +36 -0
  650. rasa/shared/nlu/__init__.py +0 -0
  651. rasa/shared/nlu/constants.py +53 -0
  652. rasa/shared/nlu/interpreter.py +10 -0
  653. rasa/shared/nlu/training_data/__init__.py +0 -0
  654. rasa/shared/nlu/training_data/entities_parser.py +208 -0
  655. rasa/shared/nlu/training_data/features.py +492 -0
  656. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  657. rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
  658. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  659. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  660. rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
  661. rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
  662. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  663. rasa/shared/nlu/training_data/loading.py +137 -0
  664. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  665. rasa/shared/nlu/training_data/message.py +490 -0
  666. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  667. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  668. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  669. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  670. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  671. rasa/shared/nlu/training_data/training_data.py +729 -0
  672. rasa/shared/nlu/training_data/util.py +223 -0
  673. rasa/shared/providers/__init__.py +0 -0
  674. rasa/shared/providers/_configs/__init__.py +0 -0
  675. rasa/shared/providers/_configs/azure_openai_client_config.py +677 -0
  676. rasa/shared/providers/_configs/client_config.py +59 -0
  677. rasa/shared/providers/_configs/default_litellm_client_config.py +132 -0
  678. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +236 -0
  679. rasa/shared/providers/_configs/litellm_router_client_config.py +222 -0
  680. rasa/shared/providers/_configs/model_group_config.py +173 -0
  681. rasa/shared/providers/_configs/openai_client_config.py +177 -0
  682. rasa/shared/providers/_configs/rasa_llm_client_config.py +75 -0
  683. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +178 -0
  684. rasa/shared/providers/_configs/utils.py +117 -0
  685. rasa/shared/providers/_ssl_verification_utils.py +124 -0
  686. rasa/shared/providers/_utils.py +79 -0
  687. rasa/shared/providers/constants.py +7 -0
  688. rasa/shared/providers/embedding/__init__.py +0 -0
  689. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
  690. rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
  691. rasa/shared/providers/embedding/azure_openai_embedding_client.py +335 -0
  692. rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
  693. rasa/shared/providers/embedding/embedding_client.py +90 -0
  694. rasa/shared/providers/embedding/embedding_response.py +41 -0
  695. rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
  696. rasa/shared/providers/embedding/litellm_router_embedding_client.py +138 -0
  697. rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
  698. rasa/shared/providers/llm/__init__.py +0 -0
  699. rasa/shared/providers/llm/_base_litellm_client.py +265 -0
  700. rasa/shared/providers/llm/azure_openai_llm_client.py +415 -0
  701. rasa/shared/providers/llm/default_litellm_llm_client.py +110 -0
  702. rasa/shared/providers/llm/litellm_router_llm_client.py +202 -0
  703. rasa/shared/providers/llm/llm_client.py +78 -0
  704. rasa/shared/providers/llm/llm_response.py +50 -0
  705. rasa/shared/providers/llm/openai_llm_client.py +161 -0
  706. rasa/shared/providers/llm/rasa_llm_client.py +120 -0
  707. rasa/shared/providers/llm/self_hosted_llm_client.py +276 -0
  708. rasa/shared/providers/mappings.py +94 -0
  709. rasa/shared/providers/router/__init__.py +0 -0
  710. rasa/shared/providers/router/_base_litellm_router_client.py +185 -0
  711. rasa/shared/providers/router/router_client.py +75 -0
  712. rasa/shared/utils/__init__.py +0 -0
  713. rasa/shared/utils/cli.py +102 -0
  714. rasa/shared/utils/common.py +324 -0
  715. rasa/shared/utils/constants.py +4 -0
  716. rasa/shared/utils/health_check/__init__.py +0 -0
  717. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
  718. rasa/shared/utils/health_check/health_check.py +258 -0
  719. rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
  720. rasa/shared/utils/io.py +499 -0
  721. rasa/shared/utils/llm.py +764 -0
  722. rasa/shared/utils/pykwalify_extensions.py +27 -0
  723. rasa/shared/utils/schemas/__init__.py +0 -0
  724. rasa/shared/utils/schemas/config.yml +2 -0
  725. rasa/shared/utils/schemas/domain.yml +145 -0
  726. rasa/shared/utils/schemas/events.py +214 -0
  727. rasa/shared/utils/schemas/model_config.yml +36 -0
  728. rasa/shared/utils/schemas/stories.yml +173 -0
  729. rasa/shared/utils/yaml.py +1068 -0
  730. rasa/studio/__init__.py +0 -0
  731. rasa/studio/auth.py +270 -0
  732. rasa/studio/config.py +136 -0
  733. rasa/studio/constants.py +19 -0
  734. rasa/studio/data_handler.py +368 -0
  735. rasa/studio/download.py +489 -0
  736. rasa/studio/results_logger.py +137 -0
  737. rasa/studio/train.py +134 -0
  738. rasa/studio/upload.py +563 -0
  739. rasa/telemetry.py +1876 -0
  740. rasa/tracing/__init__.py +0 -0
  741. rasa/tracing/config.py +355 -0
  742. rasa/tracing/constants.py +62 -0
  743. rasa/tracing/instrumentation/__init__.py +0 -0
  744. rasa/tracing/instrumentation/attribute_extractors.py +765 -0
  745. rasa/tracing/instrumentation/instrumentation.py +1306 -0
  746. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
  747. rasa/tracing/instrumentation/metrics.py +294 -0
  748. rasa/tracing/metric_instrument_provider.py +205 -0
  749. rasa/utils/__init__.py +0 -0
  750. rasa/utils/beta.py +83 -0
  751. rasa/utils/cli.py +28 -0
  752. rasa/utils/common.py +639 -0
  753. rasa/utils/converter.py +53 -0
  754. rasa/utils/endpoints.py +331 -0
  755. rasa/utils/io.py +252 -0
  756. rasa/utils/json_utils.py +60 -0
  757. rasa/utils/licensing.py +542 -0
  758. rasa/utils/log_utils.py +181 -0
  759. rasa/utils/mapper.py +210 -0
  760. rasa/utils/ml_utils.py +147 -0
  761. rasa/utils/plotting.py +362 -0
  762. rasa/utils/sanic_error_handler.py +32 -0
  763. rasa/utils/singleton.py +23 -0
  764. rasa/utils/tensorflow/__init__.py +0 -0
  765. rasa/utils/tensorflow/callback.py +112 -0
  766. rasa/utils/tensorflow/constants.py +116 -0
  767. rasa/utils/tensorflow/crf.py +492 -0
  768. rasa/utils/tensorflow/data_generator.py +440 -0
  769. rasa/utils/tensorflow/environment.py +161 -0
  770. rasa/utils/tensorflow/exceptions.py +5 -0
  771. rasa/utils/tensorflow/feature_array.py +366 -0
  772. rasa/utils/tensorflow/layers.py +1565 -0
  773. rasa/utils/tensorflow/layers_utils.py +113 -0
  774. rasa/utils/tensorflow/metrics.py +281 -0
  775. rasa/utils/tensorflow/model_data.py +798 -0
  776. rasa/utils/tensorflow/model_data_utils.py +499 -0
  777. rasa/utils/tensorflow/models.py +935 -0
  778. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  779. rasa/utils/tensorflow/transformer.py +640 -0
  780. rasa/utils/tensorflow/types.py +6 -0
  781. rasa/utils/train_utils.py +572 -0
  782. rasa/utils/url_tools.py +53 -0
  783. rasa/utils/yaml.py +54 -0
  784. rasa/validator.py +1644 -0
  785. rasa/version.py +3 -0
  786. rasa_pro-3.12.0.dev1.dist-info/METADATA +199 -0
  787. rasa_pro-3.12.0.dev1.dist-info/NOTICE +5 -0
  788. rasa_pro-3.12.0.dev1.dist-info/RECORD +790 -0
  789. rasa_pro-3.12.0.dev1.dist-info/WHEEL +4 -0
  790. rasa_pro-3.12.0.dev1.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,770 @@
1
+ import logging
2
+ from abc import ABC, abstractmethod
3
+ from functools import reduce
4
+ from typing import (
5
+ Any,
6
+ Dict,
7
+ List,
8
+ Optional,
9
+ Set,
10
+ Text,
11
+ Tuple,
12
+ Type,
13
+ Union,
14
+ cast,
15
+ )
16
+
17
+ import importlib_resources
18
+
19
+ import rasa.shared.constants
20
+ import rasa.shared.core.constants
21
+ import rasa.shared.utils.common
22
+ import rasa.shared.utils.io
23
+ from rasa.shared.core.domain import (
24
+ IS_RETRIEVAL_INTENT_KEY,
25
+ KEY_ACTIONS,
26
+ KEY_E2E_ACTIONS,
27
+ KEY_INTENTS,
28
+ KEY_RESPONSES,
29
+ Domain,
30
+ )
31
+ from rasa.shared.core.events import ActionExecuted, UserUttered
32
+ from rasa.shared.core.flows import FlowsList
33
+ from rasa.shared.core.training_data.structures import StoryGraph
34
+ from rasa.shared.nlu.constants import ACTION_NAME, ENTITIES
35
+ from rasa.shared.nlu.training_data.message import Message
36
+ from rasa.shared.nlu.training_data.training_data import TrainingData
37
+ from rasa.shared.utils.common import cached_method
38
+ from rasa.shared.utils.yaml import read_config_file
39
+
40
+ logger = logging.getLogger(__name__)
41
+
42
+
43
+ class TrainingDataImporter(ABC):
44
+ """Common interface for different mechanisms to load training data."""
45
+
46
+ @abstractmethod
47
+ def __init__(
48
+ self,
49
+ config_file: Optional[Text] = None,
50
+ domain_path: Optional[Text] = None,
51
+ training_data_paths: Optional[Union[List[Text], Text]] = None,
52
+ **kwargs: Any,
53
+ ) -> None:
54
+ """Initialise the importer."""
55
+ ...
56
+
57
+ @abstractmethod
58
+ def get_domain(self) -> Domain:
59
+ """Retrieves the domain of the bot.
60
+
61
+ Returns:
62
+ Loaded `Domain`.
63
+ """
64
+ ...
65
+
66
+ @abstractmethod
67
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
68
+ """Retrieves the stories that should be used for training.
69
+
70
+ Args:
71
+ exclusion_percentage: Amount of training data that should be excluded.
72
+
73
+ Returns:
74
+ `StoryGraph` containing all loaded stories.
75
+ """
76
+ ...
77
+
78
+ def get_flows(self) -> FlowsList:
79
+ """Retrieves the flows that should be used for training.
80
+
81
+ Default implementation returns an empty `FlowsList`. The default
82
+ implementation is required because of backwards compatibility.
83
+
84
+ Returns:
85
+ `FlowsList` containing all loaded flows.
86
+ """
87
+ return FlowsList(underlying_flows=[])
88
+
89
+ def get_conversation_tests(self) -> StoryGraph:
90
+ """Retrieves end-to-end conversation stories for testing.
91
+
92
+ Returns:
93
+ `StoryGraph` containing all loaded stories.
94
+ """
95
+ return self.get_stories()
96
+
97
+ @abstractmethod
98
+ def get_config(self) -> Dict:
99
+ """Retrieves the configuration that should be used for the training.
100
+
101
+ Returns:
102
+ The configuration as dictionary.
103
+ """
104
+ ...
105
+
106
+ @abstractmethod
107
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
108
+ """Returns config file path for auto-config only if there is a single one."""
109
+ ...
110
+
111
+ @abstractmethod
112
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
113
+ """Retrieves the NLU training data that should be used for training.
114
+
115
+ Args:
116
+ language: Can be used to only load training data for a certain language.
117
+
118
+ Returns:
119
+ Loaded NLU `TrainingData`.
120
+ """
121
+ ...
122
+
123
+ @staticmethod
124
+ def load_from_config(
125
+ config_path: Text,
126
+ domain_path: Optional[Text] = None,
127
+ training_data_paths: Optional[List[Text]] = None,
128
+ args: Optional[Dict[Text, Any]] = None,
129
+ ) -> "TrainingDataImporter":
130
+ """Loads a `TrainingDataImporter` instance from a configuration file."""
131
+ config = read_config_file(config_path)
132
+ return TrainingDataImporter.load_from_dict(
133
+ config, config_path, domain_path, training_data_paths, args
134
+ )
135
+
136
+ @staticmethod
137
+ def load_core_importer_from_config(
138
+ config_path: Text,
139
+ domain_path: Optional[Text] = None,
140
+ training_data_paths: Optional[List[Text]] = None,
141
+ args: Optional[Dict[Text, Any]] = None,
142
+ ) -> "TrainingDataImporter":
143
+ """Loads core `TrainingDataImporter` instance.
144
+
145
+ Instance loaded from configuration file will only read Core training data.
146
+ """
147
+ importer = TrainingDataImporter.load_from_config(
148
+ config_path, domain_path, training_data_paths, args
149
+ )
150
+ return importer
151
+
152
+ @staticmethod
153
+ def load_nlu_importer_from_config(
154
+ config_path: Text,
155
+ domain_path: Optional[Text] = None,
156
+ training_data_paths: Optional[List[Text]] = None,
157
+ args: Optional[Dict[Text, Any]] = None,
158
+ ) -> "TrainingDataImporter":
159
+ """Loads nlu `TrainingDataImporter` instance.
160
+
161
+ Instance loaded from configuration file will only read NLU training data.
162
+ """
163
+ importer = TrainingDataImporter.load_from_config(
164
+ config_path, domain_path, training_data_paths, args
165
+ )
166
+
167
+ if isinstance(importer, E2EImporter):
168
+ # When we only train NLU then there is no need to enrich the data with
169
+ # E2E data from Core training data.
170
+ importer = importer._importer
171
+
172
+ return NluDataImporter(importer)
173
+
174
+ @staticmethod
175
+ def load_from_dict(
176
+ config: Optional[Dict] = None,
177
+ config_path: Optional[Text] = None,
178
+ domain_path: Optional[Text] = None,
179
+ training_data_paths: Optional[List[Text]] = None,
180
+ args: Optional[Dict[Text, Any]] = None,
181
+ expand_env_vars: bool = True,
182
+ ) -> "TrainingDataImporter":
183
+ """Loads a `TrainingDataImporter` instance from a dictionary."""
184
+ from rasa.shared.importers.rasa import RasaFileImporter
185
+
186
+ config = config or {}
187
+ importers = config.get("importers", [])
188
+ importers = [
189
+ TrainingDataImporter._importer_from_dict(
190
+ importer, config_path, domain_path, training_data_paths, args
191
+ )
192
+ for importer in importers
193
+ ]
194
+ importers = [importer for importer in importers if importer]
195
+ if not importers:
196
+ importers = [
197
+ RasaFileImporter(
198
+ config_path,
199
+ domain_path,
200
+ training_data_paths,
201
+ expand_env_vars=expand_env_vars,
202
+ )
203
+ ]
204
+
205
+ return E2EImporter(
206
+ FlowSyncImporter(ResponsesSyncImporter(CombinedDataImporter(importers)))
207
+ )
208
+
209
+ @staticmethod
210
+ def _importer_from_dict(
211
+ importer_config: Dict,
212
+ config_path: Text,
213
+ domain_path: Optional[Text] = None,
214
+ training_data_paths: Optional[List[Text]] = None,
215
+ args: Optional[Dict[Text, Any]] = None,
216
+ ) -> Optional["TrainingDataImporter"]:
217
+ from rasa.shared.importers.multi_project import MultiProjectImporter
218
+ from rasa.shared.importers.rasa import RasaFileImporter
219
+ from rasa.shared.importers.remote_importer import RemoteTrainingDataImporter
220
+
221
+ module_path = importer_config.pop("name", None)
222
+ if module_path == RasaFileImporter.__name__:
223
+ importer_class: Type[TrainingDataImporter] = RasaFileImporter
224
+ elif module_path == MultiProjectImporter.__name__:
225
+ importer_class = MultiProjectImporter
226
+ elif module_path == RemoteTrainingDataImporter.__name__:
227
+ importer_class = RemoteTrainingDataImporter
228
+ else:
229
+ try:
230
+ importer_class = rasa.shared.utils.common.class_from_module_path(
231
+ module_path
232
+ )
233
+ except (AttributeError, ImportError):
234
+ logging.warning(f"Importer '{module_path}' not found.")
235
+ return None
236
+
237
+ constructor_arguments = rasa.shared.utils.common.minimal_kwargs(
238
+ {**importer_config, **(args or {})}, importer_class
239
+ )
240
+ return importer_class(
241
+ config_path,
242
+ domain_path,
243
+ training_data_paths,
244
+ **constructor_arguments,
245
+ )
246
+
247
+ @staticmethod
248
+ def fingerprint() -> Text:
249
+ """Returns a random fingerprint as data shouldn't be cached."""
250
+ return rasa.shared.utils.io.random_string(25)
251
+
252
+ def __repr__(self) -> Text:
253
+ """Returns text representation of object."""
254
+ return self.__class__.__name__
255
+
256
+ def get_user_flows(self) -> FlowsList:
257
+ """Retrieves the user-defined flows that should be used for training.
258
+
259
+ Implemented by FlowSyncImporter and E2EImporter only.
260
+
261
+ Returns:
262
+ `FlowsList` containing all loaded flows.
263
+ """
264
+ raise NotImplementedError
265
+
266
+ def get_user_domain(self) -> Domain:
267
+ """Retrieves the user-defined domain that should be used for training.
268
+
269
+ Implemented by FlowSyncImporter and E2EImporter only.
270
+
271
+ Returns:
272
+ `Domain`.
273
+ """
274
+ raise NotImplementedError
275
+
276
+
277
+ class NluDataImporter(TrainingDataImporter):
278
+ """Importer that skips any Core-related file reading."""
279
+
280
+ def __init__(self, actual_importer: TrainingDataImporter):
281
+ """Initializes the NLUDataImporter."""
282
+ self._importer = actual_importer
283
+
284
+ def get_domain(self) -> Domain:
285
+ """Retrieves model domain (see parent class for full docstring)."""
286
+ return Domain.empty()
287
+
288
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
289
+ """Retrieves training stories / rules (see parent class for full docstring)."""
290
+ return StoryGraph([])
291
+
292
+ def get_conversation_tests(self) -> StoryGraph:
293
+ """Retrieves conversation test stories (see parent class for full docstring)."""
294
+ return StoryGraph([])
295
+
296
+ def get_config(self) -> Dict:
297
+ """Retrieves model config (see parent class for full docstring)."""
298
+ return self._importer.get_config()
299
+
300
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
301
+ """Retrieves NLU training data (see parent class for full docstring)."""
302
+ return self._importer.get_nlu_data(language)
303
+
304
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
305
+ """Returns config file path for auto-config only if there is a single one."""
306
+ return self._importer.get_config_file_for_auto_config()
307
+
308
+
309
+ class CombinedDataImporter(TrainingDataImporter):
310
+ """A `TrainingDataImporter` that combines multiple importers.
311
+
312
+ Uses multiple `TrainingDataImporter` instances
313
+ to load the data as if they were a single instance.
314
+ """
315
+
316
+ def __init__(self, importers: List[TrainingDataImporter]):
317
+ self._importers = importers
318
+
319
+ @cached_method
320
+ def get_config(self) -> Dict:
321
+ """Retrieves model config (see parent class for full docstring)."""
322
+ configs = [importer.get_config() for importer in self._importers]
323
+
324
+ return reduce(lambda merged, other: {**merged, **(other or {})}, configs, {})
325
+
326
+ @cached_method
327
+ def get_domain(self) -> Domain:
328
+ """Retrieves model domain (see parent class for full docstring)."""
329
+ domains = [importer.get_domain() for importer in self._importers]
330
+
331
+ return reduce(
332
+ lambda merged, other: merged.merge(other),
333
+ domains,
334
+ Domain.empty(),
335
+ )
336
+
337
+ @cached_method
338
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
339
+ """Retrieves training stories / rules (see parent class for full docstring)."""
340
+ stories = [
341
+ importer.get_stories(exclusion_percentage) for importer in self._importers
342
+ ]
343
+
344
+ return reduce(
345
+ lambda merged, other: merged.merge(other), stories, StoryGraph([])
346
+ )
347
+
348
+ @cached_method
349
+ def get_flows(self) -> FlowsList:
350
+ """Retrieves training stories / rules (see parent class for full docstring)."""
351
+ flow_lists = [importer.get_flows() for importer in self._importers]
352
+
353
+ return reduce(
354
+ lambda merged, other: merged.merge(other),
355
+ flow_lists,
356
+ FlowsList(underlying_flows=[]),
357
+ )
358
+
359
+ @cached_method
360
+ def get_conversation_tests(self) -> StoryGraph:
361
+ """Retrieves conversation test stories (see parent class for full docstring)."""
362
+ stories = [importer.get_conversation_tests() for importer in self._importers]
363
+
364
+ return reduce(
365
+ lambda merged, other: merged.merge(other), stories, StoryGraph([])
366
+ )
367
+
368
+ @cached_method
369
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
370
+ """Retrieves NLU training data (see parent class for full docstring)."""
371
+ nlu_data = [importer.get_nlu_data(language) for importer in self._importers]
372
+
373
+ return reduce(
374
+ lambda merged, other: merged.merge(other), nlu_data, TrainingData()
375
+ )
376
+
377
+ @cached_method
378
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
379
+ """Returns config file path for auto-config only if there is a single one."""
380
+ if len(self._importers) != 1:
381
+ rasa.shared.utils.io.raise_warning(
382
+ "Auto-config for multiple importers is not supported; "
383
+ "using config as is."
384
+ )
385
+ return None
386
+ return self._importers[0].get_config_file_for_auto_config()
387
+
388
+
389
+ class PassThroughImporter(TrainingDataImporter):
390
+ """Importer that passes through all calls to the actual importer."""
391
+
392
+ def __init__(self, importer: TrainingDataImporter):
393
+ """Initializes the FlowSyncImporter."""
394
+ self._importer = importer
395
+
396
+ def get_config(self) -> Dict:
397
+ """Retrieves model config (see parent class for full docstring)."""
398
+ return self._importer.get_config()
399
+
400
+ def get_flows(self) -> FlowsList:
401
+ """Retrieves model flows (see parent class for full docstring)."""
402
+ return self._importer.get_flows()
403
+
404
+ def get_config_file_for_auto_config(self) -> Optional[Text]:
405
+ """Returns config file path for auto-config only if there is a single one."""
406
+ return self._importer.get_config_file_for_auto_config()
407
+
408
+ def get_domain(self) -> Domain:
409
+ """Retrieves model domain (see parent class for full docstring)."""
410
+ return self._importer.get_domain()
411
+
412
+ def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
413
+ """Retrieves training stories / rules (see parent class for full docstring)."""
414
+ return self._importer.get_stories(exclusion_percentage)
415
+
416
+ def get_conversation_tests(self) -> StoryGraph:
417
+ """Retrieves conversation test stories (see parent class for full docstring)."""
418
+ return self._importer.get_conversation_tests()
419
+
420
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
421
+ """Updates NLU data with responses for retrieval intents from domain."""
422
+ return self._importer.get_nlu_data(language)
423
+
424
+
425
+ DEFAULT_PATTERN_FLOWS_FILE_NAME = "default_flows_for_patterns.yml"
426
+
427
+
428
+ class FlowSyncImporter(PassThroughImporter):
429
+ """Importer that syncs `flows` between Domain and flow training data."""
430
+
431
+ @staticmethod
432
+ def load_default_pattern_flows() -> FlowsList:
433
+ """Loads the default flows from the file system."""
434
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
435
+
436
+ flows = YAMLFlowsReader.read_from_file(FlowSyncImporter.default_pattern_path())
437
+ flows.validate()
438
+ return flows
439
+
440
+ @staticmethod
441
+ def default_pattern_path() -> str:
442
+ return str(
443
+ importlib_resources.files("rasa.dialogue_understanding.patterns").joinpath(
444
+ DEFAULT_PATTERN_FLOWS_FILE_NAME
445
+ )
446
+ )
447
+
448
+ @staticmethod
449
+ def load_default_pattern_flows_domain() -> Domain:
450
+ """Loads the default flows from the file system."""
451
+ return Domain.from_path(FlowSyncImporter.default_pattern_path())
452
+
453
+ @classmethod
454
+ def merge_with_default_flows(cls, flows: FlowsList) -> FlowsList:
455
+ """Merges the passed flows with the default flows.
456
+
457
+ If a user defined flow contains a flow with an id of a default flow,
458
+ it will overwrite the default flow.
459
+
460
+ Args:
461
+ flows: user defined flows.
462
+
463
+ Returns:
464
+ Merged flows.
465
+ """
466
+ default_flows = cls.load_default_pattern_flows()
467
+
468
+ user_flow_ids = [flow.id for flow in flows.underlying_flows]
469
+ missing_default_flows = [
470
+ default_flow
471
+ for default_flow in default_flows.underlying_flows
472
+ if default_flow.id not in user_flow_ids
473
+ ]
474
+
475
+ return flows.merge(FlowsList(missing_default_flows))
476
+
477
+ @cached_method
478
+ def get_flows(self) -> FlowsList:
479
+ flows = self._importer.get_flows()
480
+
481
+ if flows.is_empty():
482
+ # if there are no flows, we don't need to add the default flows either
483
+ return flows
484
+
485
+ return self.merge_with_default_flows(flows)
486
+
487
+ @cached_method
488
+ def get_user_flows(self) -> FlowsList:
489
+ return self._importer.get_flows()
490
+
491
+ @cached_method
492
+ def get_domain(self) -> Domain:
493
+ """Merge existing domain with properties of flows."""
494
+ # load domain data from user defined domain files
495
+ user_defined_domain = self._importer.get_domain()
496
+
497
+ # load user defined flows
498
+ flows = self.get_flows()
499
+ if flows.is_empty():
500
+ # if there are no flows, we don't need to add the default flows either
501
+ return user_defined_domain
502
+
503
+ default_flows_domain = self.load_default_pattern_flows_domain()
504
+
505
+ flow_names = [
506
+ rasa.shared.constants.FLOW_PREFIX + flow.id
507
+ for flow in flows.underlying_flows
508
+ ]
509
+ flow_domain = Domain.from_dict({KEY_ACTIONS: flow_names})
510
+
511
+ default_domain = flow_domain.merge(default_flows_domain)
512
+ # we're merging with the default domain which contains default patterns
513
+ # utterances (overrides)
514
+ domain = user_defined_domain.merge(
515
+ default_domain, ignore_warnings_about_duplicates=True
516
+ )
517
+ return domain
518
+
519
+ @rasa.shared.utils.common.cached_method
520
+ def get_user_domain(self) -> Domain:
521
+ """Retrieves only user defined domain."""
522
+ return self._importer.get_domain()
523
+
524
+
525
+ class ResponsesSyncImporter(PassThroughImporter):
526
+ """Importer that syncs `responses` between Domain and NLU training data.
527
+
528
+ Synchronizes responses between Domain and NLU and
529
+ adds retrieval intent properties from the NLU training data
530
+ back to the Domain.
531
+ """
532
+
533
+ @cached_method
534
+ def get_domain(self) -> Domain:
535
+ """Merge existing domain with properties of retrieval intents in NLU data."""
536
+ existing_domain = self._importer.get_domain()
537
+ existing_nlu_data = self._importer.get_nlu_data()
538
+
539
+ # Merge responses from NLU data with responses in the domain.
540
+ # If NLU data has any retrieval intents, then add corresponding
541
+ # retrieval actions with `utter_` prefix automatically to the
542
+ # final domain, update the properties of existing retrieval intents.
543
+ domain_with_retrieval_intents = self._get_domain_with_retrieval_intents(
544
+ existing_nlu_data.retrieval_intents,
545
+ existing_nlu_data.responses,
546
+ existing_domain,
547
+ )
548
+
549
+ existing_domain = existing_domain.merge(
550
+ domain_with_retrieval_intents, override=True
551
+ )
552
+ existing_domain.check_missing_responses()
553
+
554
+ return existing_domain
555
+
556
+ @staticmethod
557
+ def _construct_retrieval_action_names(retrieval_intents: Set[Text]) -> List[Text]:
558
+ """Lists names of all retrieval actions related to passed retrieval intents.
559
+
560
+ Args:
561
+ retrieval_intents: List of retrieval intents defined in the NLU training
562
+ data.
563
+
564
+ Returns: Names of corresponding retrieval actions
565
+ """
566
+ return [
567
+ f"{rasa.shared.constants.UTTER_PREFIX}{intent}"
568
+ for intent in retrieval_intents
569
+ ]
570
+
571
+ @staticmethod
572
+ def _get_domain_with_retrieval_intents(
573
+ retrieval_intents: Set[Text],
574
+ responses: Dict[Text, List[Dict[Text, Any]]],
575
+ existing_domain: Domain,
576
+ ) -> Domain:
577
+ """Construct a domain consisting of retrieval intents.
578
+
579
+ The result domain will have retrieval intents that are listed
580
+ in the NLU training data.
581
+
582
+ Args:
583
+ retrieval_intents: Set of retrieval intents defined in NLU training data.
584
+ responses: Responses defined in NLU training data.
585
+ existing_domain: Domain which is already loaded from the domain file.
586
+
587
+ Returns: Domain with retrieval actions added to action names and properties
588
+ for retrieval intents updated.
589
+ """
590
+ # Get all the properties already defined
591
+ # for each retrieval intent in other domains
592
+ # and add the retrieval intent property to them
593
+ retrieval_intent_properties = []
594
+ for intent in retrieval_intents:
595
+ intent_properties = (
596
+ existing_domain.intent_properties[intent]
597
+ if intent in existing_domain.intent_properties
598
+ else {}
599
+ )
600
+ intent_properties[IS_RETRIEVAL_INTENT_KEY] = True
601
+ retrieval_intent_properties.append({intent: intent_properties})
602
+
603
+ action_names = ResponsesSyncImporter._construct_retrieval_action_names(
604
+ retrieval_intents
605
+ )
606
+
607
+ return Domain.from_dict(
608
+ {
609
+ KEY_INTENTS: retrieval_intent_properties,
610
+ KEY_RESPONSES: responses,
611
+ KEY_ACTIONS: action_names,
612
+ }
613
+ )
614
+
615
+ @cached_method
616
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
617
+ """Updates NLU data with responses for retrieval intents from domain."""
618
+ existing_nlu_data = self._importer.get_nlu_data(language)
619
+ existing_domain = self._importer.get_domain()
620
+
621
+ return existing_nlu_data.merge(
622
+ self._get_nlu_data_with_responses(
623
+ existing_domain.retrieval_intent_responses
624
+ )
625
+ )
626
+
627
+ @staticmethod
628
+ def _get_nlu_data_with_responses(
629
+ responses: Dict[Text, List[Dict[Text, Any]]],
630
+ ) -> TrainingData:
631
+ """Construct training data object with only the responses supplied.
632
+
633
+ Args:
634
+ responses: Responses the NLU data should
635
+ be initialized with.
636
+
637
+ Returns: TrainingData object with responses.
638
+
639
+ """
640
+ return TrainingData(responses=responses)
641
+
642
+
643
+ class E2EImporter(PassThroughImporter):
644
+ """Importer with the following functionality.
645
+
646
+ - enhances the NLU training data with actions / user messages from the stories.
647
+ - adds potential end-to-end bot messages from stories as actions to the domain
648
+ """
649
+
650
+ @cached_method
651
+ def get_user_flows(self) -> FlowsList:
652
+ if not isinstance(self._importer, FlowSyncImporter):
653
+ raise NotImplementedError(
654
+ "Accessing user flows is only supported with FlowSyncImporter."
655
+ )
656
+
657
+ return self._importer.get_user_flows()
658
+
659
+ @cached_method
660
+ def get_domain(self) -> Domain:
661
+ """Merge existing domain with properties of end-to-end actions in stories.
662
+
663
+ Returns: Domain with end-to-end actions added to action names.
664
+ """
665
+ original = self._importer.get_domain()
666
+ e2e_domain = self._get_domain_with_e2e_actions()
667
+
668
+ return original.merge(e2e_domain)
669
+
670
+ @rasa.shared.utils.common.cached_method
671
+ def get_user_domain(self) -> Domain:
672
+ """Retrieves only user defined domain."""
673
+ if not isinstance(self._importer, FlowSyncImporter):
674
+ raise NotImplementedError(
675
+ "Accessing user domain is only supported with FlowSyncImporter."
676
+ )
677
+ return self._importer.get_user_domain()
678
+
679
+ def _get_domain_with_e2e_actions(self) -> Domain:
680
+ stories = self.get_stories()
681
+
682
+ additional_e2e_action_names = set()
683
+ for story_step in stories.story_steps:
684
+ additional_e2e_action_names.update(
685
+ {
686
+ event.action_text
687
+ for event in story_step.events
688
+ if isinstance(event, ActionExecuted) and event.action_text
689
+ }
690
+ )
691
+
692
+ return Domain.from_dict({KEY_E2E_ACTIONS: list(additional_e2e_action_names)})
693
+
694
+ @cached_method
695
+ def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
696
+ """Retrieves NLU training data (see parent class for full docstring)."""
697
+ training_datasets = [
698
+ _additional_training_data_from_default_actions(),
699
+ self._importer.get_nlu_data(language),
700
+ self._additional_training_data_from_stories(),
701
+ ]
702
+
703
+ return reduce(
704
+ lambda merged, other: merged.merge(other), training_datasets, TrainingData()
705
+ )
706
+
707
+ def _additional_training_data_from_stories(self) -> TrainingData:
708
+ stories = self.get_stories()
709
+
710
+ utterances, actions = _unique_events_from_stories(stories)
711
+
712
+ # Sort events to guarantee deterministic behavior and to avoid that the NLU
713
+ # model has to be retrained due to changes in the event order within
714
+ # the stories.
715
+ sorted_utterances = sorted(
716
+ utterances, key=lambda user: user.intent_name or user.text or ""
717
+ )
718
+ sorted_actions = sorted(
719
+ actions, key=lambda action: action.action_name or action.action_text or ""
720
+ )
721
+
722
+ additional_messages_from_stories = [
723
+ _messages_from_action(action) for action in sorted_actions
724
+ ] + [_messages_from_user_utterance(user) for user in sorted_utterances]
725
+
726
+ logger.debug(
727
+ f"Added {len(additional_messages_from_stories)} training data examples "
728
+ f"from the story training data."
729
+ )
730
+ return TrainingData(additional_messages_from_stories)
731
+
732
+
733
+ def _unique_events_from_stories(
734
+ stories: StoryGraph,
735
+ ) -> Tuple[Set[UserUttered], Set[ActionExecuted]]:
736
+ action_events = set()
737
+ user_events = set()
738
+
739
+ for story_step in stories.story_steps:
740
+ for event in story_step.events:
741
+ if isinstance(event, ActionExecuted):
742
+ action_events.add(event)
743
+ elif isinstance(event, UserUttered):
744
+ user_events.add(event)
745
+
746
+ return user_events, action_events
747
+
748
+
749
+ def _messages_from_user_utterance(event: UserUttered) -> Message:
750
+ # sub state correctly encodes intent vs text
751
+ data = cast(Dict[Text, Any], event.as_sub_state())
752
+ # sub state stores entities differently
753
+ if data.get(ENTITIES) and event.entities:
754
+ data[ENTITIES] = event.entities
755
+
756
+ return Message(data=data)
757
+
758
+
759
+ def _messages_from_action(event: ActionExecuted) -> Message:
760
+ # sub state correctly encodes action_name vs action_text
761
+ return Message(data=event.as_sub_state())
762
+
763
+
764
+ def _additional_training_data_from_default_actions() -> TrainingData:
765
+ additional_messages_from_default_actions = [
766
+ Message(data={ACTION_NAME: action_name})
767
+ for action_name in rasa.shared.core.constants.DEFAULT_ACTION_NAMES
768
+ ]
769
+
770
+ return TrainingData(additional_messages_from_default_actions)