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,572 @@
1
+ from pathlib import Path
2
+ import numpy as np
3
+ from typing import Optional, Text, Dict, Any, Union, List, Tuple, TYPE_CHECKING
4
+
5
+ import rasa.shared.utils.common
6
+ import rasa.shared.utils.io
7
+ import rasa.nlu.utils.bilou_utils
8
+ from rasa.shared.constants import NEXT_MAJOR_VERSION_FOR_DEPRECATIONS
9
+ from rasa.nlu.constants import NUMBER_OF_SUB_TOKENS
10
+ import rasa.utils.io as io_utils
11
+ from rasa.utils.tensorflow.constants import (
12
+ LOSS_TYPE,
13
+ RANKING_LENGTH,
14
+ RENORMALIZE_CONFIDENCES,
15
+ SIMILARITY_TYPE,
16
+ EVAL_NUM_EXAMPLES,
17
+ EVAL_NUM_EPOCHS,
18
+ EPOCHS,
19
+ SOFTMAX,
20
+ MARGIN,
21
+ AUTO,
22
+ INNER,
23
+ COSINE,
24
+ SEQUENCE,
25
+ CROSS_ENTROPY,
26
+ CONSTRAIN_SIMILARITIES,
27
+ MODEL_CONFIDENCE,
28
+ TOLERANCE,
29
+ CHECKPOINT_MODEL,
30
+ )
31
+ from rasa.utils.tensorflow.callback import RasaTrainingLogger, RasaModelCheckpoint
32
+ from rasa.utils.tensorflow.data_generator import RasaBatchDataGenerator
33
+ from rasa.utils.tensorflow.model_data import RasaModelData
34
+ from rasa.shared.nlu.constants import SPLIT_ENTITIES_BY_COMMA
35
+ from rasa.shared.exceptions import InvalidConfigException
36
+
37
+ if TYPE_CHECKING:
38
+ from rasa.nlu.extractors.extractor import EntityTagSpec
39
+ from rasa.nlu.tokenizers.tokenizer import Token
40
+ from tensorflow.keras.callbacks import Callback
41
+
42
+
43
+ def rank_and_mask(
44
+ confidences: np.ndarray, ranking_length: int = 0, renormalize: bool = False
45
+ ) -> Tuple[np.ndarray, np.ndarray]:
46
+ """Computes a ranking of the given confidences.
47
+
48
+ First, it computes a list containing the indices that would sort all the given
49
+ confidences in decreasing order.
50
+ If a `ranking_length` is specified, then only the indices for the `ranking_length`
51
+ largest confidences will be returned and all other confidences (i.e. whose indices
52
+ we do not return) will be masked by setting them to 0.
53
+ Moreover, if `renormalize` is set to `True`, then the confidences will
54
+ additionally be renormalised by dividing them by their sum.
55
+
56
+ We assume that the given confidences sum up to 1 and, if the
57
+ `ranking_length` is 0 or larger than the given number of confidences,
58
+ we set the `ranking_length` to the number of confidences.
59
+ Hence, in this case the confidences won't be modified.
60
+
61
+ Args:
62
+ confidences: a 1-d array of confidences that are non-negative and sum up to 1
63
+ ranking_length: the size of the ranking to be computed. If set to 0 or
64
+ something larger than the number of given confidences, then this is set
65
+ to the exact number of given confidences.
66
+ renormalize: determines whether the masked confidences should be renormalised.
67
+ return_indices:
68
+ Returns:
69
+ indices of the top `ranking_length` confidences and an array of the same
70
+ shape as the given confidences that contains the possibly masked and
71
+ renormalized confidence values
72
+ """
73
+ indices = confidences.argsort()[::-1]
74
+ confidences = confidences.copy()
75
+
76
+ if 0 < ranking_length < len(confidences):
77
+ confidences[indices[ranking_length:]] = 0
78
+
79
+ if renormalize and np.sum(confidences) > 0:
80
+ confidences = confidences / np.sum(confidences)
81
+
82
+ indices = indices[:ranking_length]
83
+
84
+ return indices, confidences
85
+
86
+
87
+ def update_similarity_type(config: Dict[Text, Any]) -> Dict[Text, Any]:
88
+ """If SIMILARITY_TYPE is set to 'auto', update the SIMILARITY_TYPE depending
89
+ on the LOSS_TYPE.
90
+
91
+ Args:
92
+ config: model configuration
93
+
94
+ Returns: updated model configuration
95
+ """
96
+ if config.get(SIMILARITY_TYPE) == AUTO:
97
+ if config[LOSS_TYPE] == CROSS_ENTROPY:
98
+ config[SIMILARITY_TYPE] = INNER
99
+ elif config[LOSS_TYPE] == MARGIN:
100
+ config[SIMILARITY_TYPE] = COSINE
101
+
102
+ return config
103
+
104
+
105
+ def align_token_features(
106
+ list_of_tokens: List[List["Token"]],
107
+ in_token_features: np.ndarray,
108
+ shape: Optional[Tuple] = None,
109
+ ) -> np.ndarray:
110
+ """Align token features to match tokens.
111
+
112
+ ConveRTFeaturizer and LanguageModelFeaturizer might split up tokens into sub-tokens.
113
+ We need to take the mean of the sub-token vectors and take that as token vector.
114
+
115
+ Args:
116
+ list_of_tokens: tokens for examples
117
+ in_token_features: token features from ConveRT
118
+ shape: shape of feature matrix
119
+
120
+ Returns:
121
+ Token features.
122
+ """
123
+ if shape is None:
124
+ shape = in_token_features.shape
125
+ out_token_features = np.zeros(shape)
126
+
127
+ for example_idx, example_tokens in enumerate(list_of_tokens):
128
+ offset = 0
129
+ for token_idx, token in enumerate(example_tokens):
130
+ number_sub_words = token.get(NUMBER_OF_SUB_TOKENS, 1)
131
+
132
+ if number_sub_words > 1:
133
+ token_start_idx = token_idx + offset
134
+ token_end_idx = token_idx + offset + number_sub_words
135
+
136
+ mean_vec = np.mean(
137
+ in_token_features[example_idx][token_start_idx:token_end_idx],
138
+ axis=0,
139
+ )
140
+
141
+ offset += number_sub_words - 1
142
+
143
+ out_token_features[example_idx][token_idx] = mean_vec
144
+ else:
145
+ out_token_features[example_idx][token_idx] = in_token_features[
146
+ example_idx
147
+ ][token_idx + offset]
148
+
149
+ return out_token_features
150
+
151
+
152
+ def update_evaluation_parameters(config: Dict[Text, Any]) -> Dict[Text, Any]:
153
+ """If EVAL_NUM_EPOCHS is set to -1, evaluate at the end of the training.
154
+
155
+ Args:
156
+ config: model configuration
157
+
158
+ Returns: updated model configuration
159
+ """
160
+ if config[EVAL_NUM_EPOCHS] == -1:
161
+ config[EVAL_NUM_EPOCHS] = config[EPOCHS]
162
+ elif config[EVAL_NUM_EPOCHS] < 1:
163
+ raise InvalidConfigException(
164
+ f"'{EVAL_NUM_EPOCHS}' is set to "
165
+ f"'{config[EVAL_NUM_EPOCHS]}'. "
166
+ "Only values either equal to -1 or greater than 0 are allowed for this "
167
+ "parameter."
168
+ )
169
+ if config[CHECKPOINT_MODEL] and config[EVAL_NUM_EXAMPLES] == 0:
170
+ config[CHECKPOINT_MODEL] = False
171
+ return config
172
+
173
+
174
+ def load_tf_hub_model(model_url: Text) -> Any:
175
+ """Load model from cache if possible, otherwise from TFHub."""
176
+ import os
177
+ from tensorflow_hub.module_v2 import load as tfhub_load
178
+
179
+ # needed to load the ConveRT model
180
+ # noinspection PyUnresolvedReferences
181
+ import tensorflow_text # noqa: F401
182
+
183
+ # required to take care of cases when other files are already
184
+ # stored in the default TFHUB_CACHE_DIR
185
+ try:
186
+ return tfhub_load(model_url)
187
+ except OSError:
188
+ directory = io_utils.create_temporary_directory()
189
+ os.environ["TFHUB_CACHE_DIR"] = directory
190
+ return tfhub_load(model_url)
191
+
192
+
193
+ def _replace_deprecated_option(
194
+ old_option: Text,
195
+ new_option: Union[Text, List[Text]],
196
+ config: Dict[Text, Any],
197
+ warn_until_version: Text = NEXT_MAJOR_VERSION_FOR_DEPRECATIONS,
198
+ ) -> Dict[Text, Any]:
199
+ if old_option not in config:
200
+ return {}
201
+
202
+ if isinstance(new_option, str):
203
+ rasa.shared.utils.io.raise_deprecation_warning(
204
+ f"Option '{old_option}' got renamed to '{new_option}'. "
205
+ f"Please update your configuration file.",
206
+ warn_until_version=warn_until_version,
207
+ )
208
+ return {new_option: config[old_option]}
209
+
210
+ rasa.shared.utils.io.raise_deprecation_warning(
211
+ f"Option '{old_option}' got renamed to "
212
+ f"a dictionary '{new_option[0]}' with a key '{new_option[1]}'. "
213
+ f"Please update your configuration file.",
214
+ warn_until_version=warn_until_version,
215
+ )
216
+ return {new_option[0]: {new_option[1]: config[old_option]}}
217
+
218
+
219
+ def check_deprecated_options(config: Dict[Text, Any]) -> Dict[Text, Any]:
220
+ """Update the config according to changed config params.
221
+
222
+ If old model configuration parameters are present in the provided config, replace
223
+ them with the new parameters and log a warning.
224
+
225
+ Args:
226
+ config: model configuration
227
+
228
+ Returns: updated model configuration
229
+ """
230
+ # note: call _replace_deprecated_option() here when there are options to deprecate
231
+
232
+ return config
233
+
234
+
235
+ def check_core_deprecated_options(config: Dict[Text, Any]) -> Dict[Text, Any]:
236
+ """Update the core config according to changed config params.
237
+
238
+ If old model configuration parameters are present in the provided config, replace
239
+ them with the new parameters and log a warning.
240
+
241
+ Args:
242
+ config: model configuration
243
+
244
+ Returns: updated model configuration
245
+ """
246
+ # note: call _replace_deprecated_option() here when there are options to deprecate
247
+
248
+ return config
249
+
250
+
251
+ def entity_label_to_tags(
252
+ model_predictions: Dict[Text, Any],
253
+ entity_tag_specs: List["EntityTagSpec"],
254
+ bilou_flag: bool = False,
255
+ prediction_index: int = 0,
256
+ ) -> Tuple[Dict[Text, List[Text]], Dict[Text, List[float]]]:
257
+ """Convert the output predictions for entities to the actual entity tags.
258
+
259
+ Args:
260
+ model_predictions: the output predictions using the entity tag indices
261
+ entity_tag_specs: the entity tag specifications
262
+ bilou_flag: if 'True', the BILOU tagging schema was used
263
+ prediction_index: the index in the batch of predictions
264
+ to use for entity extraction
265
+
266
+ Returns:
267
+ A map of entity tag type, e.g. entity, role, group, to actual entity tags and
268
+ confidences.
269
+ """
270
+ predicted_tags = {}
271
+ confidence_values = {}
272
+
273
+ for tag_spec in entity_tag_specs:
274
+ predictions = model_predictions[f"e_{tag_spec.tag_name}_ids"]
275
+ confidences = model_predictions[f"e_{tag_spec.tag_name}_scores"]
276
+
277
+ if not np.any(predictions):
278
+ continue
279
+
280
+ confidences = [float(c) for c in confidences[prediction_index]]
281
+ tags = [tag_spec.ids_to_tags[p] for p in predictions[prediction_index]]
282
+
283
+ if bilou_flag:
284
+ (
285
+ tags,
286
+ confidences,
287
+ ) = rasa.nlu.utils.bilou_utils.ensure_consistent_bilou_tagging(
288
+ tags, confidences
289
+ )
290
+
291
+ predicted_tags[tag_spec.tag_name] = tags
292
+ confidence_values[tag_spec.tag_name] = confidences
293
+
294
+ return predicted_tags, confidence_values
295
+
296
+
297
+ def create_data_generators(
298
+ model_data: RasaModelData,
299
+ batch_sizes: Union[int, List[int]],
300
+ epochs: int,
301
+ batch_strategy: Text = SEQUENCE,
302
+ eval_num_examples: int = 0,
303
+ random_seed: Optional[int] = None,
304
+ shuffle: bool = True,
305
+ drop_small_last_batch: bool = False,
306
+ ) -> Tuple[RasaBatchDataGenerator, Optional[RasaBatchDataGenerator]]:
307
+ """Create data generators for train and optional validation data.
308
+
309
+ Args:
310
+ model_data: The model data to use.
311
+ batch_sizes: The batch size(s).
312
+ epochs: The number of epochs to train.
313
+ batch_strategy: The batch strategy to use.
314
+ eval_num_examples: Number of examples to use for validation data.
315
+ random_seed: The random seed.
316
+ shuffle: Whether to shuffle data inside the data generator.
317
+ drop_small_last_batch: whether to drop the last batch if it has fewer than half
318
+ a batch size of examples
319
+
320
+ Returns:
321
+ The training data generator and optional validation data generator.
322
+ """
323
+ validation_data_generator = None
324
+ if eval_num_examples > 0:
325
+ model_data, evaluation_model_data = model_data.split(
326
+ eval_num_examples, random_seed
327
+ )
328
+ validation_data_generator = RasaBatchDataGenerator(
329
+ evaluation_model_data,
330
+ batch_size=batch_sizes,
331
+ epochs=epochs,
332
+ batch_strategy=batch_strategy,
333
+ shuffle=shuffle,
334
+ drop_small_last_batch=drop_small_last_batch,
335
+ )
336
+
337
+ data_generator = RasaBatchDataGenerator(
338
+ model_data,
339
+ batch_size=batch_sizes,
340
+ epochs=epochs,
341
+ batch_strategy=batch_strategy,
342
+ shuffle=shuffle,
343
+ drop_small_last_batch=drop_small_last_batch,
344
+ )
345
+
346
+ return data_generator, validation_data_generator
347
+
348
+
349
+ def create_common_callbacks(
350
+ epochs: int,
351
+ tensorboard_log_dir: Optional[Text] = None,
352
+ tensorboard_log_level: Optional[Text] = None,
353
+ checkpoint_dir: Optional[Path] = None,
354
+ ) -> List["Callback"]:
355
+ """Create common callbacks.
356
+
357
+ The following callbacks are created:
358
+ - RasaTrainingLogger callback
359
+ - Optional TensorBoard callback
360
+ - Optional RasaModelCheckpoint callback
361
+
362
+ Args:
363
+ epochs: the number of epochs to train
364
+ tensorboard_log_dir: optional directory that should be used for tensorboard
365
+ tensorboard_log_level: defines when training metrics for tensorboard should be
366
+ logged. Valid values: 'epoch' and 'batch'.
367
+ checkpoint_dir: optional directory that should be used for model checkpointing
368
+
369
+ Returns:
370
+ A list of callbacks.
371
+ """
372
+ import tensorflow as tf
373
+
374
+ callbacks = [RasaTrainingLogger(epochs, silent=False)]
375
+
376
+ if tensorboard_log_dir:
377
+ callbacks.append(
378
+ tf.keras.callbacks.TensorBoard(
379
+ log_dir=tensorboard_log_dir,
380
+ update_freq=tensorboard_log_level,
381
+ write_graph=True,
382
+ write_images=True,
383
+ histogram_freq=10,
384
+ )
385
+ )
386
+
387
+ if checkpoint_dir:
388
+ callbacks.append(RasaModelCheckpoint(checkpoint_dir))
389
+
390
+ return callbacks
391
+
392
+
393
+ def update_confidence_type(component_config: Dict[Text, Any]) -> Dict[Text, Any]:
394
+ """Set model confidence to auto if margin loss is used.
395
+
396
+ Option `auto` is reserved for margin loss type. It will be removed once margin loss
397
+ is deprecated.
398
+
399
+ Args:
400
+ component_config: model configuration
401
+
402
+ Returns:
403
+ updated model configuration
404
+ """
405
+ if component_config[LOSS_TYPE] == MARGIN:
406
+ rasa.shared.utils.io.raise_warning(
407
+ f"Overriding defaults by setting {MODEL_CONFIDENCE} to "
408
+ f"{AUTO} as {LOSS_TYPE} is set to {MARGIN} in the configuration. "
409
+ f"This means that model's confidences will be computed "
410
+ f"as cosine similarities. Users are encouraged to shift to "
411
+ f"cross entropy loss by setting `{LOSS_TYPE}={CROSS_ENTROPY}`."
412
+ )
413
+ component_config[MODEL_CONFIDENCE] = AUTO
414
+ return component_config
415
+
416
+
417
+ def validate_configuration_settings(component_config: Dict[Text, Any]) -> None:
418
+ """Validates that combination of parameters in the configuration are correctly set.
419
+
420
+ Args:
421
+ component_config: Configuration to validate.
422
+ """
423
+ _check_loss_setting(component_config)
424
+ _check_confidence_setting(component_config)
425
+ _check_similarity_loss_setting(component_config)
426
+ _check_tolerance_setting(component_config)
427
+ _check_evaluation_setting(component_config)
428
+
429
+
430
+ def _check_tolerance_setting(component_config: Dict[Text, Any]) -> None:
431
+ if not (0.0 <= component_config.get(TOLERANCE, 0.0) <= 1.0):
432
+ raise InvalidConfigException(
433
+ f"`{TOLERANCE}` was set to `{component_config.get(TOLERANCE)}` "
434
+ f"which is an invalid setting. Please set it to a value "
435
+ f"between 0.0 and 1.0 inclusive."
436
+ )
437
+
438
+
439
+ def _check_evaluation_setting(component_config: Dict[Text, Any]) -> None:
440
+ if (
441
+ EVAL_NUM_EPOCHS in component_config
442
+ and component_config[EVAL_NUM_EPOCHS] != -1
443
+ and component_config[EVAL_NUM_EPOCHS] > component_config[EPOCHS]
444
+ ):
445
+ warning = (
446
+ f"'{EVAL_NUM_EPOCHS}={component_config[EVAL_NUM_EPOCHS]}' is "
447
+ f"greater than '{EPOCHS}={component_config[EPOCHS]}'."
448
+ f" No evaluation will occur."
449
+ )
450
+ if component_config[CHECKPOINT_MODEL]:
451
+ warning = (
452
+ f"You have opted to save the best model, but {warning} "
453
+ f"No checkpoint model will be saved."
454
+ )
455
+ rasa.shared.utils.io.raise_warning(warning)
456
+ if component_config.get(CHECKPOINT_MODEL):
457
+ if (
458
+ component_config[EVAL_NUM_EPOCHS] != -1
459
+ and component_config[EVAL_NUM_EPOCHS] < 1
460
+ ):
461
+ rasa.shared.utils.io.raise_warning(
462
+ f"You have opted to save the best model, but the value of "
463
+ f"'{EVAL_NUM_EPOCHS}' is not -1 or greater than 0. Training will fail."
464
+ )
465
+ if (
466
+ EVAL_NUM_EXAMPLES in component_config
467
+ and component_config[EVAL_NUM_EXAMPLES] <= 0
468
+ ):
469
+ rasa.shared.utils.io.raise_warning(
470
+ f"You have opted to save the best model, but the value of "
471
+ f"'{EVAL_NUM_EXAMPLES}' is not greater than 0. No checkpoint model "
472
+ f"will be saved."
473
+ )
474
+
475
+
476
+ def _check_confidence_setting(component_config: Dict[Text, Any]) -> None:
477
+ if component_config[MODEL_CONFIDENCE] == COSINE:
478
+ raise InvalidConfigException(
479
+ f"{MODEL_CONFIDENCE}={COSINE} was introduced in Rasa Open Source 2.3.0 "
480
+ f"but post-release experiments revealed that using cosine similarity can "
481
+ f"change the order of predicted labels. "
482
+ f"Since this is not ideal, using `{MODEL_CONFIDENCE}={COSINE}` has been "
483
+ f"removed in versions post `2.3.3`. "
484
+ f"Please use `{MODEL_CONFIDENCE}={SOFTMAX}` instead."
485
+ )
486
+ if component_config[MODEL_CONFIDENCE] == INNER:
487
+ raise InvalidConfigException(
488
+ f"{MODEL_CONFIDENCE}={INNER} is deprecated as it produces an unbounded "
489
+ f"range of confidences which can break the logic of assistants in various "
490
+ f"other places. "
491
+ f"Please use `{MODEL_CONFIDENCE}={SOFTMAX}` instead. "
492
+ )
493
+ if component_config[MODEL_CONFIDENCE] not in [SOFTMAX, AUTO]:
494
+ raise InvalidConfigException(
495
+ f"{MODEL_CONFIDENCE}={component_config[MODEL_CONFIDENCE]} is not a valid "
496
+ f"setting. Please use `{MODEL_CONFIDENCE}={SOFTMAX}` instead."
497
+ )
498
+ if component_config[MODEL_CONFIDENCE] == SOFTMAX:
499
+ if component_config[LOSS_TYPE] != CROSS_ENTROPY:
500
+ raise InvalidConfigException(
501
+ f"{LOSS_TYPE}={component_config[LOSS_TYPE]} and "
502
+ f"{MODEL_CONFIDENCE}={SOFTMAX} is not a valid "
503
+ f"combination. You can use {MODEL_CONFIDENCE}={SOFTMAX} "
504
+ f"only with {LOSS_TYPE}={CROSS_ENTROPY}."
505
+ )
506
+ if component_config[SIMILARITY_TYPE] not in [INNER, AUTO]:
507
+ raise InvalidConfigException(
508
+ f"{SIMILARITY_TYPE}={component_config[SIMILARITY_TYPE]} and "
509
+ f"{MODEL_CONFIDENCE}={SOFTMAX} is not a valid "
510
+ f"combination. You can use {MODEL_CONFIDENCE}={SOFTMAX} "
511
+ f"only with {SIMILARITY_TYPE}={INNER}."
512
+ )
513
+ if component_config.get(RENORMALIZE_CONFIDENCES) and component_config.get(
514
+ RANKING_LENGTH
515
+ ):
516
+ if component_config[MODEL_CONFIDENCE] != SOFTMAX:
517
+ raise InvalidConfigException(
518
+ f"Renormalizing the {component_config[RANKING_LENGTH]} top "
519
+ f"predictions should only be done if {MODEL_CONFIDENCE}={SOFTMAX} "
520
+ f"Please use {RENORMALIZE_CONFIDENCES}={True} "
521
+ f"only with {MODEL_CONFIDENCE}={SOFTMAX}."
522
+ )
523
+
524
+
525
+ def _check_loss_setting(component_config: Dict[Text, Any]) -> None:
526
+ if (
527
+ not component_config[CONSTRAIN_SIMILARITIES]
528
+ and component_config[LOSS_TYPE] == CROSS_ENTROPY
529
+ ):
530
+ rasa.shared.utils.io.raise_warning(
531
+ f"{CONSTRAIN_SIMILARITIES} is set to `False`. It is recommended "
532
+ f"to set it to `True` when using cross-entropy loss.",
533
+ category=UserWarning,
534
+ )
535
+
536
+
537
+ def _check_similarity_loss_setting(component_config: Dict[Text, Any]) -> None:
538
+ if (
539
+ component_config[SIMILARITY_TYPE] == COSINE
540
+ and component_config[LOSS_TYPE] == CROSS_ENTROPY
541
+ or component_config[SIMILARITY_TYPE] == INNER
542
+ and component_config[LOSS_TYPE] == MARGIN
543
+ ):
544
+ rasa.shared.utils.io.raise_warning(
545
+ f"`{SIMILARITY_TYPE}={component_config[SIMILARITY_TYPE]}`"
546
+ f" and `{LOSS_TYPE}={component_config[LOSS_TYPE]}` "
547
+ f"is not a recommended setting as it may not lead to best results."
548
+ f"Ideally use `{SIMILARITY_TYPE}={INNER}`"
549
+ f" and `{LOSS_TYPE}={CROSS_ENTROPY}` or"
550
+ f"`{SIMILARITY_TYPE}={COSINE}` and `{LOSS_TYPE}={MARGIN}`.",
551
+ category=UserWarning,
552
+ )
553
+
554
+
555
+ def init_split_entities(
556
+ split_entities_config: Union[bool, Dict[Text, Any]], default_split_entity: bool
557
+ ) -> Dict[Text, bool]:
558
+ """Initialise the behaviour for splitting entities by comma (or not).
559
+
560
+ Returns:
561
+ Defines desired behaviour for splitting specific entity types and
562
+ default behaviour for splitting any entity types for which no behaviour
563
+ is defined.
564
+ """
565
+ if isinstance(split_entities_config, bool):
566
+ # All entities will be split according to `split_entities_config`
567
+ split_entities_config = {SPLIT_ENTITIES_BY_COMMA: split_entities_config}
568
+ else:
569
+ # All entities not named in split_entities_config will be split
570
+ # according to `split_entities_config`
571
+ split_entities_config[SPLIT_ENTITIES_BY_COMMA] = default_split_entity
572
+ return split_entities_config
@@ -0,0 +1,53 @@
1
+ from __future__ import annotations
2
+ import enum
3
+ from typing import Dict
4
+
5
+ from urllib.parse import urlparse
6
+
7
+ import structlog
8
+
9
+ structlogger = structlog.get_logger()
10
+
11
+
12
+ class UrlSchema(enum.Enum):
13
+ HTTP = "http"
14
+ HTTPS = "https"
15
+ FILE = "file"
16
+ FTP = "ftp"
17
+ SFTP = "sftp"
18
+ GRPC = "grpc"
19
+ UNKNOWN = "unknown"
20
+ NOT_SPECIFIED = "not_specified"
21
+
22
+ @property
23
+ def available_schemas(self) -> Dict[str, UrlSchema]:
24
+ """Get all available URL schemas except for the unknown schema."""
25
+ return {
26
+ schema.value: schema for schema in UrlSchema if schema != UrlSchema.UNKNOWN
27
+ }
28
+
29
+
30
+ def get_url_schema(url: str) -> UrlSchema:
31
+ """Get the schema of a URL.
32
+
33
+ Args:
34
+ url: The URL to parse.
35
+
36
+ Returns:
37
+ The schema of the URL.
38
+ """
39
+ parsed_url = urlparse(url)
40
+
41
+ if parsed_url.scheme == "":
42
+ return UrlSchema.NOT_SPECIFIED
43
+
44
+ try:
45
+ return UrlSchema(parsed_url.scheme)
46
+ except ValueError:
47
+ structlogger.warn(
48
+ "rasa.utils.url_tools.get_url_schema.unknown_schema",
49
+ event_info=f"Unknown URL schema '{parsed_url.scheme}'. "
50
+ f"Returning 'unknown'.",
51
+ )
52
+
53
+ return UrlSchema.UNKNOWN
rasa/utils/yaml.py ADDED
@@ -0,0 +1,54 @@
1
+ import os
2
+ from pathlib import Path
3
+ from typing import Any, Dict, List, Text, Union
4
+
5
+ from rasa.shared.data import is_likely_yaml_file
6
+ from rasa.shared.exceptions import RasaException, YamlSyntaxException
7
+ from rasa.shared.utils.yaml import read_yaml_file
8
+
9
+
10
+ def collect_yaml_files_from_path(path: Union[Text, Path]) -> List[Text]:
11
+ path = os.path.abspath(path)
12
+ if os.path.isfile(path):
13
+ yaml_files = [
14
+ yaml_file for yaml_file in [path] if is_likely_yaml_file(yaml_file)
15
+ ]
16
+ if not yaml_files:
17
+ raise FileNotFoundError(f"Could not find a yaml file at '{path}'.")
18
+ elif os.path.isdir(path):
19
+ yaml_files = [
20
+ os.path.join(root, file)
21
+ for root, _, files in os.walk(path, followlinks=True)
22
+ for file in files
23
+ if is_likely_yaml_file(file)
24
+ ]
25
+ if not yaml_files:
26
+ raise FileNotFoundError(
27
+ f"Could not find any yaml in the directory tree rooted at '{path}'."
28
+ )
29
+ else:
30
+ raise RasaException(
31
+ f"The given path ({path}) is neither pointing to a directory "
32
+ f"nor a file. Please specify the location of a yaml file or a "
33
+ f"root directory (all yaml configs found in the directories "
34
+ f"under that root directory will be loaded). "
35
+ )
36
+ return yaml_files
37
+
38
+
39
+ YAML_CONFIG = Dict[Text, Any]
40
+ YAML_CONFIGS = Dict[Text, Dict[Text, YAML_CONFIG]]
41
+
42
+
43
+ def collect_configs_from_yaml_files(yaml_files: List[Text]) -> YAML_CONFIGS:
44
+ loaded_configs: YAML_CONFIGS = {}
45
+ for yaml_file in yaml_files:
46
+ loaded_config = read_yaml_file(yaml_file)
47
+ if not isinstance(loaded_config, dict):
48
+ raise YamlSyntaxException(
49
+ f"Expected the loaded configurations to be a "
50
+ f"valid YAML dictionary but found a "
51
+ f"{type(loaded_config)} in {yaml_file}. "
52
+ )
53
+ loaded_configs[yaml_file] = loaded_config
54
+ return loaded_configs