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
File without changes
@@ -0,0 +1,148 @@
1
+ from __future__ import annotations
2
+ import glob
3
+ import logging
4
+ import os
5
+ import shutil
6
+ from typing import Any, Dict, List, Optional, Text
7
+
8
+ from rasa.engine.graph import ExecutionContext
9
+ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
10
+ from rasa.engine.storage.resource import Resource
11
+ from rasa.engine.storage.storage import ModelStorage
12
+
13
+ from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
14
+ from rasa.shared.nlu.training_data.message import Message
15
+
16
+ from rasa.shared.nlu.training_data.training_data import TrainingData
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+
21
+ @DefaultV1Recipe.register(
22
+ DefaultV1Recipe.ComponentType.MESSAGE_TOKENIZER, is_trainable=True
23
+ )
24
+ class JiebaTokenizer(Tokenizer):
25
+ """This tokenizer is a wrapper for Jieba (https://github.com/fxsjy/jieba)."""
26
+
27
+ @staticmethod
28
+ def supported_languages() -> Optional[List[Text]]:
29
+ """Supported languages (see parent class for full docstring)."""
30
+ return ["zh"]
31
+
32
+ @staticmethod
33
+ def get_default_config() -> Dict[Text, Any]:
34
+ """Returns default config (see parent class for full docstring)."""
35
+ return {
36
+ # default don't load custom dictionary
37
+ "dictionary_path": None,
38
+ # Flag to check whether to split intents
39
+ "intent_tokenization_flag": False,
40
+ # Symbol on which intent should be split
41
+ "intent_split_symbol": "_",
42
+ # Regular expression to detect tokens
43
+ "token_pattern": None,
44
+ # Symbol on which prefix should be split
45
+ "prefix_separator_symbol": None,
46
+ }
47
+
48
+ def __init__(
49
+ self, config: Dict[Text, Any], model_storage: ModelStorage, resource: Resource
50
+ ) -> None:
51
+ """Initialize the tokenizer."""
52
+ super().__init__(config)
53
+ self._model_storage = model_storage
54
+ self._resource = resource
55
+
56
+ @classmethod
57
+ def create(
58
+ cls,
59
+ config: Dict[Text, Any],
60
+ model_storage: ModelStorage,
61
+ resource: Resource,
62
+ execution_context: ExecutionContext,
63
+ ) -> JiebaTokenizer:
64
+ """Creates a new component (see parent class for full docstring)."""
65
+ # Path to the dictionaries on the local filesystem.
66
+ dictionary_path = config["dictionary_path"]
67
+
68
+ if dictionary_path is not None:
69
+ cls._load_custom_dictionary(dictionary_path)
70
+ return cls(config, model_storage, resource)
71
+
72
+ @staticmethod
73
+ def required_packages() -> List[Text]:
74
+ """Any extra python dependencies required for this component to run."""
75
+ return ["jieba"]
76
+
77
+ @staticmethod
78
+ def _load_custom_dictionary(path: Text) -> None:
79
+ """Load all the custom dictionaries stored in the path.
80
+
81
+ More information about the dictionaries file format can
82
+ be found in the documentation of jieba.
83
+ https://github.com/fxsjy/jieba#load-dictionary
84
+ """
85
+ import jieba
86
+
87
+ jieba_userdicts = glob.glob(f"{path}/*")
88
+ for jieba_userdict in jieba_userdicts:
89
+ logger.info(f"Loading Jieba User Dictionary at {jieba_userdict}")
90
+ jieba.load_userdict(jieba_userdict)
91
+
92
+ def train(self, training_data: TrainingData) -> Resource:
93
+ """Copies the dictionary to the model storage."""
94
+ self.persist()
95
+ return self._resource
96
+
97
+ def tokenize(self, message: Message, attribute: Text) -> List[Token]:
98
+ """Tokenizes the text of the provided attribute of the incoming message."""
99
+ import jieba
100
+
101
+ text = message.get(attribute)
102
+
103
+ tokenized = jieba.tokenize(text)
104
+ tokens = [Token(word, start) for (word, start, end) in tokenized]
105
+
106
+ return self._apply_token_pattern(tokens)
107
+
108
+ @classmethod
109
+ def load(
110
+ cls,
111
+ config: Dict[Text, Any],
112
+ model_storage: ModelStorage,
113
+ resource: Resource,
114
+ execution_context: ExecutionContext,
115
+ **kwargs: Any,
116
+ ) -> JiebaTokenizer:
117
+ """Loads a custom dictionary from model storage."""
118
+ dictionary_path = config["dictionary_path"]
119
+
120
+ # If a custom dictionary path is in the config we know that it should have
121
+ # been saved to the model storage.
122
+ if dictionary_path is not None:
123
+ try:
124
+ with model_storage.read_from(resource) as resource_directory:
125
+ cls._load_custom_dictionary(str(resource_directory))
126
+ except ValueError:
127
+ logger.debug(
128
+ f"Failed to load {cls.__name__} from model storage. "
129
+ f"Resource '{resource.name}' doesn't exist."
130
+ )
131
+ return cls(config, model_storage, resource)
132
+
133
+ @staticmethod
134
+ def _copy_files_dir_to_dir(input_dir: Text, output_dir: Text) -> None:
135
+ # make sure target path exists
136
+ if not os.path.exists(output_dir):
137
+ os.makedirs(output_dir)
138
+
139
+ target_file_list = glob.glob(f"{input_dir}/*")
140
+ for target_file in target_file_list:
141
+ shutil.copy2(target_file, output_dir)
142
+
143
+ def persist(self) -> None:
144
+ """Persist the custom dictionaries."""
145
+ dictionary_path = self._config["dictionary_path"]
146
+ if dictionary_path is not None:
147
+ with self._model_storage.write_to(self._resource) as resource_directory:
148
+ self._copy_files_dir_to_dir(dictionary_path, str(resource_directory))
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+ from typing import List, Text, Dict, Any
3
+
4
+ from rasa.engine.graph import ExecutionContext
5
+ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
6
+ from rasa.engine.storage.resource import Resource
7
+ from rasa.engine.storage.storage import ModelStorage
8
+ from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
9
+ from rasa.shared.nlu.training_data.message import Message
10
+
11
+ from rasa.shared.utils.io import DEFAULT_ENCODING
12
+
13
+
14
+ @DefaultV1Recipe.register(
15
+ DefaultV1Recipe.ComponentType.MESSAGE_TOKENIZER, is_trainable=False
16
+ )
17
+ class MitieTokenizer(Tokenizer):
18
+ """Tokenizes messages using the `mitie` library.."""
19
+
20
+ @staticmethod
21
+ def get_default_config() -> Dict[Text, Any]:
22
+ """Returns default config (see parent class for full docstring)."""
23
+ return {
24
+ # Flag to check whether to split intents
25
+ "intent_tokenization_flag": False,
26
+ # Symbol on which intent should be split
27
+ "intent_split_symbol": "_",
28
+ # Regular expression to detect tokens
29
+ "token_pattern": None,
30
+ # Symbol on which prefix should be split
31
+ "prefix_separator_symbol": None,
32
+ }
33
+
34
+ @staticmethod
35
+ def required_packages() -> List[Text]:
36
+ """Any extra python dependencies required for this component to run."""
37
+ return ["mitie"]
38
+
39
+ @classmethod
40
+ def create(
41
+ cls,
42
+ config: Dict[Text, Any],
43
+ model_storage: ModelStorage,
44
+ resource: Resource,
45
+ execution_context: ExecutionContext,
46
+ ) -> MitieTokenizer:
47
+ """Creates a new component (see parent class for full docstring)."""
48
+ return cls(config)
49
+
50
+ def tokenize(self, message: Message, attribute: Text) -> List[Token]:
51
+ """Tokenizes the text of the provided attribute of the incoming message."""
52
+ import mitie
53
+
54
+ text = message.get(attribute)
55
+
56
+ encoded_sentence = text.encode(DEFAULT_ENCODING)
57
+ tokenized = mitie.tokenize_with_offsets(encoded_sentence)
58
+ tokens = [
59
+ self._token_from_offset(token, offset, encoded_sentence)
60
+ for token, offset in tokenized
61
+ ]
62
+
63
+ return self._apply_token_pattern(tokens)
64
+
65
+ def _token_from_offset(
66
+ self, text: bytes, offset: int, encoded_sentence: bytes
67
+ ) -> Token:
68
+ return Token(
69
+ text.decode(DEFAULT_ENCODING),
70
+ self._byte_to_char_offset(encoded_sentence, offset),
71
+ )
72
+
73
+ @staticmethod
74
+ def _byte_to_char_offset(text: bytes, byte_offset: int) -> int:
75
+ return len(text[:byte_offset].decode(DEFAULT_ENCODING))
@@ -0,0 +1,72 @@
1
+ import typing
2
+ from typing import Dict, Text, List, Any, Optional, Type
3
+
4
+ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
5
+ from rasa.nlu.utils.spacy_utils import SpacyNLP
6
+ from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
7
+ from rasa.nlu.constants import SPACY_DOCS
8
+ from rasa.shared.nlu.training_data.message import Message
9
+
10
+ if typing.TYPE_CHECKING:
11
+ from spacy.tokens.doc import Doc
12
+
13
+ POS_TAG_KEY = "pos"
14
+
15
+
16
+ @DefaultV1Recipe.register(
17
+ DefaultV1Recipe.ComponentType.MESSAGE_TOKENIZER, is_trainable=False
18
+ )
19
+ class SpacyTokenizer(Tokenizer):
20
+ """Tokenizer that uses SpaCy."""
21
+
22
+ @classmethod
23
+ def required_components(cls) -> List[Type]:
24
+ """Components that should be included in the pipeline before this component."""
25
+ return [SpacyNLP]
26
+
27
+ @staticmethod
28
+ def get_default_config() -> Dict[Text, Any]:
29
+ """The component's default config (see parent class for full docstring)."""
30
+ return {
31
+ # Flag to check whether to split intents
32
+ "intent_tokenization_flag": False,
33
+ # Symbol on which intent should be split
34
+ "intent_split_symbol": "_",
35
+ # Regular expression to detect tokens
36
+ "token_pattern": None,
37
+ # Symbol on which prefix should be split
38
+ "prefix_separator_symbol": None,
39
+ }
40
+
41
+ @staticmethod
42
+ def required_packages() -> List[Text]:
43
+ """Any extra python dependencies required for this component to run."""
44
+ return ["spacy"]
45
+
46
+ def _get_doc(self, message: Message, attribute: Text) -> Optional["Doc"]:
47
+ return message.get(SPACY_DOCS[attribute])
48
+
49
+ def tokenize(self, message: Message, attribute: Text) -> List[Token]:
50
+ """Tokenizes the text of the provided attribute of the incoming message."""
51
+ doc = self._get_doc(message, attribute)
52
+ if not doc:
53
+ return []
54
+
55
+ tokens = [
56
+ Token(
57
+ t.text, t.idx, lemma=t.lemma_, data={POS_TAG_KEY: self._tag_of_token(t)}
58
+ )
59
+ for t in doc
60
+ if t.text and t.text.strip()
61
+ ]
62
+
63
+ return self._apply_token_pattern(tokens)
64
+
65
+ @staticmethod
66
+ def _tag_of_token(token: Any) -> Text:
67
+ import spacy
68
+
69
+ if spacy.about.__version__ > "2" and token._.has("tag"):
70
+ return token._.get("tag")
71
+ else:
72
+ return token.tag_
@@ -0,0 +1,239 @@
1
+ import abc
2
+ import logging
3
+ import re
4
+
5
+ from typing import Text, List, Dict, Any, Optional
6
+
7
+ from rasa.engine.graph import ExecutionContext, GraphComponent
8
+ from rasa.engine.storage.resource import Resource
9
+ from rasa.engine.storage.storage import ModelStorage
10
+ from rasa.shared.nlu.training_data.training_data import TrainingData
11
+ from rasa.shared.nlu.training_data.message import Message
12
+ from rasa.nlu.constants import TOKENS_NAMES, MESSAGE_ATTRIBUTES
13
+ from rasa.shared.nlu.constants import (
14
+ INTENT,
15
+ INTENT_RESPONSE_KEY,
16
+ RESPONSE_IDENTIFIER_DELIMITER,
17
+ ACTION_NAME,
18
+ )
19
+ import rasa.shared.utils.io
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+
24
+ class Token:
25
+ """Used by `Tokenizers` which split a single message into multiple `Token`s."""
26
+
27
+ def __init__(
28
+ self,
29
+ text: Text,
30
+ start: int,
31
+ end: Optional[int] = None,
32
+ data: Optional[Dict[Text, Any]] = None,
33
+ lemma: Optional[Text] = None,
34
+ ) -> None:
35
+ """Create a `Token`.
36
+
37
+ Args:
38
+ text: The token text.
39
+ start: The start index of the token within the entire message.
40
+ end: The end index of the token within the entire message.
41
+ data: Additional token data.
42
+ lemma: An optional lemmatized version of the token text.
43
+ """
44
+ self.text = text
45
+ self.start = start
46
+ self.end = end if end else start + len(text)
47
+
48
+ self.data = data if data else {}
49
+ self.lemma = lemma or text
50
+
51
+ def set(self, prop: Text, info: Any) -> None:
52
+ """Set property value."""
53
+ self.data[prop] = info
54
+
55
+ def get(self, prop: Text, default: Optional[Any] = None) -> Any:
56
+ """Returns token value."""
57
+ return self.data.get(prop, default)
58
+
59
+ def __eq__(self, other: Any) -> bool:
60
+ if not isinstance(other, Token):
61
+ return NotImplemented
62
+ return (self.start, self.end, self.text, self.lemma) == (
63
+ other.start,
64
+ other.end,
65
+ other.text,
66
+ other.lemma,
67
+ )
68
+
69
+ def __lt__(self, other: Any) -> bool:
70
+ if not isinstance(other, Token):
71
+ return NotImplemented
72
+ return (self.start, self.end, self.text, self.lemma) < (
73
+ other.start,
74
+ other.end,
75
+ other.text,
76
+ other.lemma,
77
+ )
78
+
79
+ def __repr__(self) -> Text:
80
+ return f"<Token object value='{self.text}' start={self.start} end={self.end} \
81
+ at {hex(id(self))}>"
82
+
83
+ def fingerprint(self) -> Text:
84
+ """Returns a stable hash for this Token."""
85
+ return rasa.shared.utils.io.deep_container_fingerprint(
86
+ [self.text, self.start, self.end, self.lemma, self.data]
87
+ )
88
+
89
+
90
+ class Tokenizer(GraphComponent, abc.ABC):
91
+ """Base class for tokenizers."""
92
+
93
+ def __init__(self, config: Dict[Text, Any]) -> None:
94
+ """Construct a new tokenizer."""
95
+ self._config = config
96
+ # flag to check whether to split intents
97
+ self.intent_tokenization_flag = config["intent_tokenization_flag"]
98
+ # split symbol for intents
99
+ self.intent_split_symbol = config["intent_split_symbol"]
100
+ # token pattern to further split tokens
101
+ token_pattern = config.get("token_pattern")
102
+ self.token_pattern_regex = None
103
+ if token_pattern:
104
+ self.token_pattern_regex = re.compile(token_pattern)
105
+ # split intent to prefix and suffix greedily, None means don't split
106
+ self.prefix_separator_symbol = config.get("prefix_separator_symbol")
107
+
108
+ @classmethod
109
+ def create(
110
+ cls,
111
+ config: Dict[Text, Any],
112
+ model_storage: ModelStorage,
113
+ resource: Resource,
114
+ execution_context: ExecutionContext,
115
+ ) -> GraphComponent:
116
+ """Creates a new component (see parent class for full docstring)."""
117
+ return cls(config)
118
+
119
+ @abc.abstractmethod
120
+ def tokenize(self, message: Message, attribute: Text) -> List[Token]:
121
+ """Tokenizes the text of the provided attribute of the incoming message."""
122
+ ...
123
+
124
+ def process_training_data(self, training_data: TrainingData) -> TrainingData:
125
+ """Tokenize all training data."""
126
+ for example in training_data.training_examples:
127
+ for attribute in MESSAGE_ATTRIBUTES:
128
+ if (
129
+ example.get(attribute) is not None
130
+ and not example.get(attribute) == ""
131
+ ):
132
+ if attribute in [INTENT, ACTION_NAME, INTENT_RESPONSE_KEY]:
133
+ tokens = self._split_name(example, attribute)
134
+ else:
135
+ tokens = self.tokenize(example, attribute)
136
+ example.set(TOKENS_NAMES[attribute], tokens)
137
+ return training_data
138
+
139
+ def process(self, messages: List[Message]) -> List[Message]:
140
+ """Tokenize the incoming messages."""
141
+ for message in messages:
142
+ for attribute in MESSAGE_ATTRIBUTES:
143
+ if isinstance(message.get(attribute), str):
144
+ if attribute in [
145
+ INTENT,
146
+ ACTION_NAME,
147
+ RESPONSE_IDENTIFIER_DELIMITER,
148
+ ]:
149
+ tokens = self._split_name(message, attribute)
150
+ else:
151
+ tokens = self.tokenize(message, attribute)
152
+
153
+ message.set(TOKENS_NAMES[attribute], tokens)
154
+ return messages
155
+
156
+ def _tokenize_on_split_symbol(self, text: Text) -> List[Text]:
157
+ words = (
158
+ text.split(self.intent_split_symbol)
159
+ if self.intent_tokenization_flag
160
+ else [text]
161
+ )
162
+
163
+ return words
164
+
165
+ def _split_name(self, message: Message, attribute: Text = INTENT) -> List[Token]:
166
+ orig_text = message.get(attribute)
167
+
168
+ if (
169
+ self.prefix_separator_symbol is not None
170
+ and self.prefix_separator_symbol in orig_text
171
+ ):
172
+ prefix, text = orig_text.split(self.prefix_separator_symbol, maxsplit=1)
173
+ else:
174
+ prefix, text = None, orig_text
175
+
176
+ # for INTENT_RESPONSE_KEY attribute,
177
+ # first split by RESPONSE_IDENTIFIER_DELIMITER
178
+ if attribute == INTENT_RESPONSE_KEY:
179
+ intent, response_key = text.split(RESPONSE_IDENTIFIER_DELIMITER)
180
+ words = self._tokenize_on_split_symbol(
181
+ intent
182
+ ) + self._tokenize_on_split_symbol(response_key)
183
+
184
+ else:
185
+ words = self._tokenize_on_split_symbol(text)
186
+
187
+ if prefix is not None:
188
+ words = self._tokenize_on_split_symbol(prefix) + words
189
+
190
+ return self._convert_words_to_tokens(words, orig_text)
191
+
192
+ def _apply_token_pattern(self, tokens: List[Token]) -> List[Token]:
193
+ """Apply the token pattern to the given tokens.
194
+
195
+ Args:
196
+ tokens: list of tokens to split
197
+
198
+ Returns:
199
+ List of tokens.
200
+ """
201
+ if not self.token_pattern_regex:
202
+ return tokens
203
+
204
+ final_tokens = []
205
+ for token in tokens:
206
+ new_tokens = self.token_pattern_regex.findall(token.text)
207
+ new_tokens = [t for t in new_tokens if t]
208
+
209
+ if not new_tokens:
210
+ final_tokens.append(token)
211
+
212
+ running_offset = 0
213
+ for new_token in new_tokens:
214
+ word_offset = token.text.index(new_token, running_offset)
215
+ word_len = len(new_token)
216
+ running_offset = word_offset + word_len
217
+ final_tokens.append(
218
+ Token(
219
+ new_token,
220
+ token.start + word_offset,
221
+ data=token.data,
222
+ lemma=token.lemma,
223
+ )
224
+ )
225
+
226
+ return final_tokens
227
+
228
+ @staticmethod
229
+ def _convert_words_to_tokens(words: List[Text], text: Text) -> List[Token]:
230
+ running_offset = 0
231
+ tokens = []
232
+
233
+ for word in words:
234
+ word_offset = text.index(word, running_offset)
235
+ word_len = len(word)
236
+ running_offset = word_offset + word_len
237
+ tokens.append(Token(word, word_offset))
238
+
239
+ return tokens
@@ -0,0 +1,95 @@
1
+ from __future__ import annotations
2
+ from typing import Any, Dict, List, Optional, Text
3
+
4
+ import regex
5
+
6
+ import rasa.shared.utils.io
7
+ import rasa.utils.io
8
+
9
+ from rasa.engine.graph import ExecutionContext
10
+ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
11
+ from rasa.engine.storage.resource import Resource
12
+ from rasa.engine.storage.storage import ModelStorage
13
+ from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
14
+ from rasa.shared.constants import DOCS_URL_COMPONENTS
15
+ from rasa.shared.nlu.training_data.message import Message
16
+
17
+
18
+ @DefaultV1Recipe.register(
19
+ DefaultV1Recipe.ComponentType.MESSAGE_TOKENIZER, is_trainable=False
20
+ )
21
+ class WhitespaceTokenizer(Tokenizer):
22
+ """Creates features for entity extraction."""
23
+
24
+ @staticmethod
25
+ def not_supported_languages() -> Optional[List[Text]]:
26
+ """The languages that are not supported."""
27
+ return ["zh", "ja", "th"]
28
+
29
+ @staticmethod
30
+ def get_default_config() -> Dict[Text, Any]:
31
+ """Returns the component's default config."""
32
+ return {
33
+ # Flag to check whether to split intents
34
+ "intent_tokenization_flag": False,
35
+ # Symbol on which intent should be split
36
+ "intent_split_symbol": "_",
37
+ # Regular expression to detect tokens
38
+ "token_pattern": None,
39
+ # Symbol on which prefix should be split
40
+ "prefix_separator_symbol": None,
41
+ }
42
+
43
+ def __init__(self, config: Dict[Text, Any]) -> None:
44
+ """Initialize the tokenizer."""
45
+ super().__init__(config)
46
+ if "case_sensitive" in self._config:
47
+ rasa.shared.utils.io.raise_warning(
48
+ "The option 'case_sensitive' was moved from the tokenizers to the "
49
+ "featurizers.",
50
+ docs=DOCS_URL_COMPONENTS,
51
+ )
52
+
53
+ @classmethod
54
+ def create(
55
+ cls,
56
+ config: Dict[Text, Any],
57
+ model_storage: ModelStorage,
58
+ resource: Resource,
59
+ execution_context: ExecutionContext,
60
+ ) -> WhitespaceTokenizer:
61
+ """Creates a new component (see parent class for full docstring)."""
62
+ # Path to the dictionaries on the local filesystem.
63
+ return cls(config)
64
+
65
+ def tokenize(self, message: Message, attribute: Text) -> List[Token]:
66
+ original_text = message.get(attribute)
67
+ text = rasa.utils.io.remove_emojis(original_text)
68
+ # we need to use regex instead of re, because of
69
+ # https://stackoverflow.com/questions/12746458/python-unicode-regular-expression-matching-failing-with-some-unicode-characters
70
+
71
+ # remove 'not a word character' if
72
+ words = regex.sub(
73
+ # there is a space or an end of a string after it
74
+ r"[^\w#@&]+(?=\s|$)|"
75
+ # there is a space or beginning of a string before it
76
+ # not followed by a number
77
+ r"(\s|^)[^\w#@&]+(?=[^0-9\s])|"
78
+ # not in between numbers and not . or @ or & or - or #
79
+ # e.g. 10'000.00 or blabla@gmail.com
80
+ # and not url characters
81
+ r"(?<=[^0-9\s])[^\w._~:/?#\[\]()@!$&*+,;=-]+(?=[^0-9\s])",
82
+ " ",
83
+ text,
84
+ ).split()
85
+
86
+ words = [w for w in words if w]
87
+
88
+ # if we removed everything like smiles `:)`, use the whole text as 1 token
89
+ if not words:
90
+ text = original_text
91
+ words = [text]
92
+
93
+ tokens = self._convert_words_to_tokens(words, text)
94
+
95
+ return self._apply_token_pattern(tokens)
@@ -0,0 +1,35 @@
1
+ from typing import Any, Text
2
+
3
+ import rasa.shared.utils.io
4
+
5
+
6
+ def write_json_to_file(filename: Text, obj: Any, **kwargs: Any) -> None:
7
+ """Write an object as a json string to a file."""
8
+ write_to_file(filename, rasa.shared.utils.io.json_to_string(obj, **kwargs))
9
+
10
+
11
+ def write_to_file(filename: Text, text: Any) -> None:
12
+ """Write a text to a file."""
13
+ rasa.shared.utils.io.write_text_file(str(text), filename)
14
+
15
+
16
+ def is_url(resource_name: Text) -> bool:
17
+ """Check whether the url specified is a well formed one.
18
+
19
+ Args:
20
+ resource_name: Remote URL to validate
21
+
22
+ Returns:
23
+ `True` if valid, otherwise `False`.
24
+ """
25
+ from urllib import parse
26
+
27
+ try:
28
+ result = parse.urlparse(resource_name)
29
+ except Exception:
30
+ return False
31
+
32
+ if result.scheme == "file":
33
+ return bool(result.path)
34
+
35
+ return bool(result.scheme in ["http", "https", "ftp", "ftps"] and result.netloc)