rasa-pro 3.11.3__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 (779) 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/e2e_test.py +259 -0
  27. rasa/cli/evaluate.py +222 -0
  28. rasa/cli/export.py +250 -0
  29. rasa/cli/inspect.py +75 -0
  30. rasa/cli/interactive.py +166 -0
  31. rasa/cli/license.py +65 -0
  32. rasa/cli/llm_fine_tuning.py +403 -0
  33. rasa/cli/markers.py +78 -0
  34. rasa/cli/project_templates/__init__.py +0 -0
  35. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  36. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  37. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  38. rasa/cli/project_templates/calm/actions/db.py +57 -0
  39. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  40. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  41. rasa/cli/project_templates/calm/config.yml +10 -0
  42. rasa/cli/project_templates/calm/credentials.yml +33 -0
  43. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  44. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  45. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  46. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  47. rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
  48. rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
  49. rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
  50. rasa/cli/project_templates/calm/domain/shared.yml +10 -0
  51. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  52. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  53. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  54. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  55. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  58. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  59. rasa/cli/project_templates/calm/endpoints.yml +58 -0
  60. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  61. rasa/cli/project_templates/default/actions/actions.py +27 -0
  62. rasa/cli/project_templates/default/config.yml +44 -0
  63. rasa/cli/project_templates/default/credentials.yml +33 -0
  64. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  65. rasa/cli/project_templates/default/data/rules.yml +13 -0
  66. rasa/cli/project_templates/default/data/stories.yml +30 -0
  67. rasa/cli/project_templates/default/domain.yml +34 -0
  68. rasa/cli/project_templates/default/endpoints.yml +42 -0
  69. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  70. rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
  71. rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
  72. rasa/cli/project_templates/tutorial/config.yml +12 -0
  73. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  74. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  75. rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
  76. rasa/cli/project_templates/tutorial/domain.yml +35 -0
  77. rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
  78. rasa/cli/run.py +143 -0
  79. rasa/cli/scaffold.py +273 -0
  80. rasa/cli/shell.py +141 -0
  81. rasa/cli/studio/__init__.py +0 -0
  82. rasa/cli/studio/download.py +62 -0
  83. rasa/cli/studio/studio.py +296 -0
  84. rasa/cli/studio/train.py +59 -0
  85. rasa/cli/studio/upload.py +62 -0
  86. rasa/cli/telemetry.py +102 -0
  87. rasa/cli/test.py +280 -0
  88. rasa/cli/train.py +278 -0
  89. rasa/cli/utils.py +484 -0
  90. rasa/cli/visualize.py +40 -0
  91. rasa/cli/x.py +206 -0
  92. rasa/constants.py +45 -0
  93. rasa/core/__init__.py +17 -0
  94. rasa/core/actions/__init__.py +0 -0
  95. rasa/core/actions/action.py +1318 -0
  96. rasa/core/actions/action_clean_stack.py +59 -0
  97. rasa/core/actions/action_exceptions.py +24 -0
  98. rasa/core/actions/action_hangup.py +29 -0
  99. rasa/core/actions/action_repeat_bot_messages.py +89 -0
  100. rasa/core/actions/action_run_slot_rejections.py +210 -0
  101. rasa/core/actions/action_trigger_chitchat.py +31 -0
  102. rasa/core/actions/action_trigger_flow.py +109 -0
  103. rasa/core/actions/action_trigger_search.py +31 -0
  104. rasa/core/actions/constants.py +5 -0
  105. rasa/core/actions/custom_action_executor.py +191 -0
  106. rasa/core/actions/direct_custom_actions_executor.py +80 -0
  107. rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
  108. rasa/core/actions/forms.py +741 -0
  109. rasa/core/actions/grpc_custom_action_executor.py +251 -0
  110. rasa/core/actions/http_custom_action_executor.py +145 -0
  111. rasa/core/actions/loops.py +114 -0
  112. rasa/core/actions/two_stage_fallback.py +186 -0
  113. rasa/core/agent.py +559 -0
  114. rasa/core/auth_retry_tracker_store.py +122 -0
  115. rasa/core/brokers/__init__.py +0 -0
  116. rasa/core/brokers/broker.py +126 -0
  117. rasa/core/brokers/file.py +58 -0
  118. rasa/core/brokers/kafka.py +324 -0
  119. rasa/core/brokers/pika.py +388 -0
  120. rasa/core/brokers/sql.py +86 -0
  121. rasa/core/channels/__init__.py +61 -0
  122. rasa/core/channels/botframework.py +338 -0
  123. rasa/core/channels/callback.py +84 -0
  124. rasa/core/channels/channel.py +456 -0
  125. rasa/core/channels/console.py +241 -0
  126. rasa/core/channels/development_inspector.py +197 -0
  127. rasa/core/channels/facebook.py +419 -0
  128. rasa/core/channels/hangouts.py +329 -0
  129. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  130. rasa/core/channels/inspector/.gitignore +23 -0
  131. rasa/core/channels/inspector/README.md +54 -0
  132. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  133. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  134. rasa/core/channels/inspector/custom.d.ts +3 -0
  135. rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +1 -0
  136. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  137. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +10 -0
  138. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +2 -0
  139. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +2 -0
  140. rasa/core/channels/inspector/dist/assets/createText-62fc7601-89c73b31.js +7 -0
  141. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +4 -0
  142. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-907e0440.js +51 -0
  143. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +6 -0
  144. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +4 -0
  145. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
  146. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +139 -0
  147. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +266 -0
  148. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +70 -0
  149. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  150. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  151. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  152. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  153. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +1 -0
  154. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  155. rasa/core/channels/inspector/dist/assets/index-e793d777.js +1317 -0
  156. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-8ceba4db.js +7 -0
  157. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  158. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-960d3809.js +139 -0
  159. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  160. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  161. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  162. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  163. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  164. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  165. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  166. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  167. rasa/core/channels/inspector/dist/assets/layout-498807d8.js +1 -0
  168. rasa/core/channels/inspector/dist/assets/line-eeccc4e2.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/linear-8a078617.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +109 -0
  171. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  172. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  173. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-dc9b5e1b.js +35 -0
  174. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-a08cba6d.js +7 -0
  175. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-87242b9e.js +52 -0
  176. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +8 -0
  177. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +122 -0
  178. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +1 -0
  179. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +1 -0
  180. rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +110 -0
  181. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +159 -0
  182. rasa/core/channels/inspector/dist/assets/styles-9c745c82-cef936a6.js +207 -0
  183. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +1 -0
  184. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-0d39bdb2.js +61 -0
  185. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-a03fa445.js +7 -0
  186. rasa/core/channels/inspector/dist/index.html +44 -0
  187. rasa/core/channels/inspector/index.html +42 -0
  188. rasa/core/channels/inspector/jest.config.ts +13 -0
  189. rasa/core/channels/inspector/package.json +52 -0
  190. rasa/core/channels/inspector/setupTests.ts +2 -0
  191. rasa/core/channels/inspector/src/App.tsx +217 -0
  192. rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
  193. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
  194. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  195. rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
  196. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  197. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  198. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
  199. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  200. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  201. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  202. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  203. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  204. rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
  205. rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
  206. rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
  207. rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
  208. rasa/core/channels/inspector/src/main.tsx +13 -0
  209. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  210. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  211. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  212. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  213. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  214. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  215. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  216. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  217. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  218. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  222. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  223. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  224. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  225. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  226. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  227. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  228. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  229. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  230. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  231. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  232. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  233. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  234. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  235. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  236. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  237. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  238. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  239. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  240. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  241. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  242. rasa/core/channels/inspector/src/types.ts +84 -0
  243. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  244. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  245. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  246. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  247. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  248. rasa/core/channels/inspector/tsconfig.json +26 -0
  249. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  250. rasa/core/channels/inspector/vite.config.ts +8 -0
  251. rasa/core/channels/inspector/yarn.lock +6249 -0
  252. rasa/core/channels/mattermost.py +229 -0
  253. rasa/core/channels/rasa_chat.py +126 -0
  254. rasa/core/channels/rest.py +230 -0
  255. rasa/core/channels/rocketchat.py +174 -0
  256. rasa/core/channels/slack.py +620 -0
  257. rasa/core/channels/socketio.py +301 -0
  258. rasa/core/channels/telegram.py +298 -0
  259. rasa/core/channels/twilio.py +169 -0
  260. rasa/core/channels/vier_cvg.py +374 -0
  261. rasa/core/channels/voice_ready/__init__.py +0 -0
  262. rasa/core/channels/voice_ready/audiocodes.py +501 -0
  263. rasa/core/channels/voice_ready/jambonz.py +121 -0
  264. rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
  265. rasa/core/channels/voice_ready/twilio_voice.py +403 -0
  266. rasa/core/channels/voice_ready/utils.py +37 -0
  267. rasa/core/channels/voice_stream/__init__.py +0 -0
  268. rasa/core/channels/voice_stream/asr/__init__.py +0 -0
  269. rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
  270. rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
  271. rasa/core/channels/voice_stream/asr/azure.py +130 -0
  272. rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
  273. rasa/core/channels/voice_stream/audio_bytes.py +8 -0
  274. rasa/core/channels/voice_stream/browser_audio.py +107 -0
  275. rasa/core/channels/voice_stream/call_state.py +23 -0
  276. rasa/core/channels/voice_stream/tts/__init__.py +0 -0
  277. rasa/core/channels/voice_stream/tts/azure.py +106 -0
  278. rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
  279. rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
  280. rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
  281. rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
  282. rasa/core/channels/voice_stream/util.py +57 -0
  283. rasa/core/channels/voice_stream/voice_channel.py +427 -0
  284. rasa/core/channels/webexteams.py +134 -0
  285. rasa/core/concurrent_lock_store.py +210 -0
  286. rasa/core/constants.py +112 -0
  287. rasa/core/evaluation/__init__.py +0 -0
  288. rasa/core/evaluation/marker.py +267 -0
  289. rasa/core/evaluation/marker_base.py +923 -0
  290. rasa/core/evaluation/marker_stats.py +293 -0
  291. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  292. rasa/core/exceptions.py +29 -0
  293. rasa/core/exporter.py +284 -0
  294. rasa/core/featurizers/__init__.py +0 -0
  295. rasa/core/featurizers/precomputation.py +410 -0
  296. rasa/core/featurizers/single_state_featurizer.py +421 -0
  297. rasa/core/featurizers/tracker_featurizers.py +1262 -0
  298. rasa/core/http_interpreter.py +89 -0
  299. rasa/core/information_retrieval/__init__.py +7 -0
  300. rasa/core/information_retrieval/faiss.py +124 -0
  301. rasa/core/information_retrieval/information_retrieval.py +137 -0
  302. rasa/core/information_retrieval/milvus.py +59 -0
  303. rasa/core/information_retrieval/qdrant.py +96 -0
  304. rasa/core/jobs.py +63 -0
  305. rasa/core/lock.py +139 -0
  306. rasa/core/lock_store.py +343 -0
  307. rasa/core/migrate.py +403 -0
  308. rasa/core/nlg/__init__.py +3 -0
  309. rasa/core/nlg/callback.py +146 -0
  310. rasa/core/nlg/contextual_response_rephraser.py +320 -0
  311. rasa/core/nlg/generator.py +230 -0
  312. rasa/core/nlg/interpolator.py +143 -0
  313. rasa/core/nlg/response.py +155 -0
  314. rasa/core/nlg/summarize.py +70 -0
  315. rasa/core/persistor.py +538 -0
  316. rasa/core/policies/__init__.py +0 -0
  317. rasa/core/policies/ensemble.py +329 -0
  318. rasa/core/policies/enterprise_search_policy.py +905 -0
  319. rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
  320. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
  321. rasa/core/policies/flow_policy.py +205 -0
  322. rasa/core/policies/flows/__init__.py +0 -0
  323. rasa/core/policies/flows/flow_exceptions.py +44 -0
  324. rasa/core/policies/flows/flow_executor.py +754 -0
  325. rasa/core/policies/flows/flow_step_result.py +43 -0
  326. rasa/core/policies/intentless_policy.py +1031 -0
  327. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  328. rasa/core/policies/memoization.py +538 -0
  329. rasa/core/policies/policy.py +725 -0
  330. rasa/core/policies/rule_policy.py +1273 -0
  331. rasa/core/policies/ted_policy.py +2169 -0
  332. rasa/core/policies/unexpected_intent_policy.py +1022 -0
  333. rasa/core/processor.py +1465 -0
  334. rasa/core/run.py +342 -0
  335. rasa/core/secrets_manager/__init__.py +0 -0
  336. rasa/core/secrets_manager/constants.py +36 -0
  337. rasa/core/secrets_manager/endpoints.py +391 -0
  338. rasa/core/secrets_manager/factory.py +241 -0
  339. rasa/core/secrets_manager/secret_manager.py +262 -0
  340. rasa/core/secrets_manager/vault.py +584 -0
  341. rasa/core/test.py +1335 -0
  342. rasa/core/tracker_store.py +1703 -0
  343. rasa/core/train.py +105 -0
  344. rasa/core/training/__init__.py +89 -0
  345. rasa/core/training/converters/__init__.py +0 -0
  346. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  347. rasa/core/training/interactive.py +1744 -0
  348. rasa/core/training/story_conflict.py +381 -0
  349. rasa/core/training/training.py +93 -0
  350. rasa/core/utils.py +366 -0
  351. rasa/core/visualize.py +70 -0
  352. rasa/dialogue_understanding/__init__.py +0 -0
  353. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  354. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  355. rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
  356. rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
  357. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  358. rasa/dialogue_understanding/commands/__init__.py +61 -0
  359. rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
  360. rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
  361. rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
  362. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
  363. rasa/dialogue_understanding/commands/clarify_command.py +86 -0
  364. rasa/dialogue_understanding/commands/command.py +85 -0
  365. rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
  366. rasa/dialogue_understanding/commands/error_command.py +79 -0
  367. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  368. rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
  369. rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
  370. rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
  371. rasa/dialogue_understanding/commands/noop_command.py +54 -0
  372. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
  373. rasa/dialogue_understanding/commands/restart_command.py +58 -0
  374. rasa/dialogue_understanding/commands/session_end_command.py +61 -0
  375. rasa/dialogue_understanding/commands/session_start_command.py +59 -0
  376. rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
  377. rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
  378. rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
  379. rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
  380. rasa/dialogue_understanding/commands/utils.py +45 -0
  381. rasa/dialogue_understanding/generator/__init__.py +21 -0
  382. rasa/dialogue_understanding/generator/command_generator.py +343 -0
  383. rasa/dialogue_understanding/generator/constants.py +27 -0
  384. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  385. rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
  386. rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
  387. rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
  388. rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
  389. rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
  390. rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
  391. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +893 -0
  392. rasa/dialogue_understanding/generator/nlu_command_adapter.py +258 -0
  393. rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
  394. rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
  395. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +478 -0
  396. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  397. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  398. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  399. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  400. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  401. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  402. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  403. rasa/dialogue_understanding/patterns/completed.py +40 -0
  404. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  405. rasa/dialogue_understanding/patterns/correction.py +278 -0
  406. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
  407. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  408. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  409. rasa/dialogue_understanding/patterns/repeat.py +37 -0
  410. rasa/dialogue_understanding/patterns/restart.py +37 -0
  411. rasa/dialogue_understanding/patterns/search.py +37 -0
  412. rasa/dialogue_understanding/patterns/session_start.py +37 -0
  413. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  414. rasa/dialogue_understanding/patterns/user_silence.py +37 -0
  415. rasa/dialogue_understanding/processor/__init__.py +0 -0
  416. rasa/dialogue_understanding/processor/command_processor.py +720 -0
  417. rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
  418. rasa/dialogue_understanding/stack/__init__.py +0 -0
  419. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  420. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  421. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  422. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  423. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  424. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  425. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  426. rasa/dialogue_understanding/stack/utils.py +211 -0
  427. rasa/e2e_test/__init__.py +0 -0
  428. rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
  429. rasa/e2e_test/assertions.py +1345 -0
  430. rasa/e2e_test/assertions_schema.yml +129 -0
  431. rasa/e2e_test/constants.py +31 -0
  432. rasa/e2e_test/e2e_config.py +220 -0
  433. rasa/e2e_test/e2e_config_schema.yml +26 -0
  434. rasa/e2e_test/e2e_test_case.py +568 -0
  435. rasa/e2e_test/e2e_test_converter.py +363 -0
  436. rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
  437. rasa/e2e_test/e2e_test_coverage_report.py +364 -0
  438. rasa/e2e_test/e2e_test_result.py +54 -0
  439. rasa/e2e_test/e2e_test_runner.py +1190 -0
  440. rasa/e2e_test/e2e_test_schema.yml +181 -0
  441. rasa/e2e_test/pykwalify_extensions.py +39 -0
  442. rasa/e2e_test/stub_custom_action.py +70 -0
  443. rasa/e2e_test/utils/__init__.py +0 -0
  444. rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
  445. rasa/e2e_test/utils/io.py +598 -0
  446. rasa/e2e_test/utils/validation.py +80 -0
  447. rasa/engine/__init__.py +0 -0
  448. rasa/engine/caching.py +463 -0
  449. rasa/engine/constants.py +17 -0
  450. rasa/engine/exceptions.py +14 -0
  451. rasa/engine/graph.py +642 -0
  452. rasa/engine/loader.py +48 -0
  453. rasa/engine/recipes/__init__.py +0 -0
  454. rasa/engine/recipes/config_files/default_config.yml +41 -0
  455. rasa/engine/recipes/default_components.py +97 -0
  456. rasa/engine/recipes/default_recipe.py +1258 -0
  457. rasa/engine/recipes/graph_recipe.py +78 -0
  458. rasa/engine/recipes/recipe.py +93 -0
  459. rasa/engine/runner/__init__.py +0 -0
  460. rasa/engine/runner/dask.py +250 -0
  461. rasa/engine/runner/interface.py +49 -0
  462. rasa/engine/storage/__init__.py +0 -0
  463. rasa/engine/storage/local_model_storage.py +244 -0
  464. rasa/engine/storage/resource.py +110 -0
  465. rasa/engine/storage/storage.py +199 -0
  466. rasa/engine/training/__init__.py +0 -0
  467. rasa/engine/training/components.py +176 -0
  468. rasa/engine/training/fingerprinting.py +64 -0
  469. rasa/engine/training/graph_trainer.py +256 -0
  470. rasa/engine/training/hooks.py +164 -0
  471. rasa/engine/validation.py +1451 -0
  472. rasa/env.py +14 -0
  473. rasa/exceptions.py +69 -0
  474. rasa/graph_components/__init__.py +0 -0
  475. rasa/graph_components/converters/__init__.py +0 -0
  476. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  477. rasa/graph_components/providers/__init__.py +0 -0
  478. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  479. rasa/graph_components/providers/domain_provider.py +71 -0
  480. rasa/graph_components/providers/flows_provider.py +74 -0
  481. rasa/graph_components/providers/forms_provider.py +44 -0
  482. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  483. rasa/graph_components/providers/responses_provider.py +44 -0
  484. rasa/graph_components/providers/rule_only_provider.py +49 -0
  485. rasa/graph_components/providers/story_graph_provider.py +96 -0
  486. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  487. rasa/graph_components/validators/__init__.py +0 -0
  488. rasa/graph_components/validators/default_recipe_validator.py +550 -0
  489. rasa/graph_components/validators/finetuning_validator.py +302 -0
  490. rasa/hooks.py +112 -0
  491. rasa/jupyter.py +63 -0
  492. rasa/llm_fine_tuning/__init__.py +0 -0
  493. rasa/llm_fine_tuning/annotation_module.py +241 -0
  494. rasa/llm_fine_tuning/conversations.py +144 -0
  495. rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
  496. rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
  497. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
  498. rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
  499. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
  500. rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
  501. rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
  502. rasa/llm_fine_tuning/storage.py +174 -0
  503. rasa/llm_fine_tuning/train_test_split_module.py +441 -0
  504. rasa/markers/__init__.py +0 -0
  505. rasa/markers/marker.py +269 -0
  506. rasa/markers/marker_base.py +828 -0
  507. rasa/markers/upload.py +74 -0
  508. rasa/markers/validate.py +21 -0
  509. rasa/model.py +118 -0
  510. rasa/model_manager/__init__.py +0 -0
  511. rasa/model_manager/config.py +40 -0
  512. rasa/model_manager/model_api.py +559 -0
  513. rasa/model_manager/runner_service.py +286 -0
  514. rasa/model_manager/socket_bridge.py +146 -0
  515. rasa/model_manager/studio_jwt_auth.py +86 -0
  516. rasa/model_manager/trainer_service.py +325 -0
  517. rasa/model_manager/utils.py +87 -0
  518. rasa/model_manager/warm_rasa_process.py +187 -0
  519. rasa/model_service.py +112 -0
  520. rasa/model_testing.py +457 -0
  521. rasa/model_training.py +595 -0
  522. rasa/nlu/__init__.py +7 -0
  523. rasa/nlu/classifiers/__init__.py +3 -0
  524. rasa/nlu/classifiers/classifier.py +5 -0
  525. rasa/nlu/classifiers/diet_classifier.py +1881 -0
  526. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  527. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  528. rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
  529. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  530. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  531. rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
  532. rasa/nlu/constants.py +77 -0
  533. rasa/nlu/convert.py +40 -0
  534. rasa/nlu/emulators/__init__.py +0 -0
  535. rasa/nlu/emulators/dialogflow.py +55 -0
  536. rasa/nlu/emulators/emulator.py +49 -0
  537. rasa/nlu/emulators/luis.py +86 -0
  538. rasa/nlu/emulators/no_emulator.py +10 -0
  539. rasa/nlu/emulators/wit.py +56 -0
  540. rasa/nlu/extractors/__init__.py +0 -0
  541. rasa/nlu/extractors/crf_entity_extractor.py +715 -0
  542. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  543. rasa/nlu/extractors/entity_synonyms.py +178 -0
  544. rasa/nlu/extractors/extractor.py +470 -0
  545. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  546. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  547. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  548. rasa/nlu/featurizers/__init__.py +0 -0
  549. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  550. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
  551. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  552. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
  553. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  554. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  555. rasa/nlu/featurizers/featurizer.py +89 -0
  556. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  557. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
  558. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
  559. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
  560. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  561. rasa/nlu/model.py +24 -0
  562. rasa/nlu/run.py +27 -0
  563. rasa/nlu/selectors/__init__.py +0 -0
  564. rasa/nlu/selectors/response_selector.py +987 -0
  565. rasa/nlu/test.py +1940 -0
  566. rasa/nlu/tokenizers/__init__.py +0 -0
  567. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  568. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  569. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  570. rasa/nlu/tokenizers/tokenizer.py +239 -0
  571. rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
  572. rasa/nlu/utils/__init__.py +35 -0
  573. rasa/nlu/utils/bilou_utils.py +462 -0
  574. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  575. rasa/nlu/utils/hugging_face/registry.py +108 -0
  576. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  577. rasa/nlu/utils/mitie_utils.py +113 -0
  578. rasa/nlu/utils/pattern_utils.py +168 -0
  579. rasa/nlu/utils/spacy_utils.py +310 -0
  580. rasa/plugin.py +90 -0
  581. rasa/server.py +1624 -0
  582. rasa/shared/__init__.py +0 -0
  583. rasa/shared/constants.py +310 -0
  584. rasa/shared/core/__init__.py +0 -0
  585. rasa/shared/core/command_payload_reader.py +109 -0
  586. rasa/shared/core/constants.py +180 -0
  587. rasa/shared/core/conversation.py +46 -0
  588. rasa/shared/core/domain.py +2172 -0
  589. rasa/shared/core/events.py +2559 -0
  590. rasa/shared/core/flows/__init__.py +7 -0
  591. rasa/shared/core/flows/flow.py +562 -0
  592. rasa/shared/core/flows/flow_path.py +84 -0
  593. rasa/shared/core/flows/flow_step.py +146 -0
  594. rasa/shared/core/flows/flow_step_links.py +319 -0
  595. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  596. rasa/shared/core/flows/flows_list.py +258 -0
  597. rasa/shared/core/flows/flows_yaml_schema.json +303 -0
  598. rasa/shared/core/flows/nlu_trigger.py +117 -0
  599. rasa/shared/core/flows/steps/__init__.py +24 -0
  600. rasa/shared/core/flows/steps/action.py +56 -0
  601. rasa/shared/core/flows/steps/call.py +64 -0
  602. rasa/shared/core/flows/steps/collect.py +112 -0
  603. rasa/shared/core/flows/steps/constants.py +5 -0
  604. rasa/shared/core/flows/steps/continuation.py +36 -0
  605. rasa/shared/core/flows/steps/end.py +22 -0
  606. rasa/shared/core/flows/steps/internal.py +44 -0
  607. rasa/shared/core/flows/steps/link.py +51 -0
  608. rasa/shared/core/flows/steps/no_operation.py +48 -0
  609. rasa/shared/core/flows/steps/set_slots.py +50 -0
  610. rasa/shared/core/flows/steps/start.py +30 -0
  611. rasa/shared/core/flows/utils.py +39 -0
  612. rasa/shared/core/flows/validation.py +735 -0
  613. rasa/shared/core/flows/yaml_flows_io.py +405 -0
  614. rasa/shared/core/generator.py +908 -0
  615. rasa/shared/core/slot_mappings.py +526 -0
  616. rasa/shared/core/slots.py +654 -0
  617. rasa/shared/core/trackers.py +1183 -0
  618. rasa/shared/core/training_data/__init__.py +0 -0
  619. rasa/shared/core/training_data/loading.py +89 -0
  620. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  621. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  622. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  623. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  624. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  625. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  626. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
  627. rasa/shared/core/training_data/structures.py +858 -0
  628. rasa/shared/core/training_data/visualization.html +146 -0
  629. rasa/shared/core/training_data/visualization.py +603 -0
  630. rasa/shared/data.py +249 -0
  631. rasa/shared/engine/__init__.py +0 -0
  632. rasa/shared/engine/caching.py +26 -0
  633. rasa/shared/exceptions.py +167 -0
  634. rasa/shared/importers/__init__.py +0 -0
  635. rasa/shared/importers/importer.py +770 -0
  636. rasa/shared/importers/multi_project.py +215 -0
  637. rasa/shared/importers/rasa.py +108 -0
  638. rasa/shared/importers/remote_importer.py +196 -0
  639. rasa/shared/importers/utils.py +36 -0
  640. rasa/shared/nlu/__init__.py +0 -0
  641. rasa/shared/nlu/constants.py +49 -0
  642. rasa/shared/nlu/interpreter.py +10 -0
  643. rasa/shared/nlu/training_data/__init__.py +0 -0
  644. rasa/shared/nlu/training_data/entities_parser.py +208 -0
  645. rasa/shared/nlu/training_data/features.py +492 -0
  646. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  647. rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
  648. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  649. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  650. rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
  651. rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
  652. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  653. rasa/shared/nlu/training_data/loading.py +137 -0
  654. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  655. rasa/shared/nlu/training_data/message.py +490 -0
  656. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  657. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  658. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  659. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  660. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  661. rasa/shared/nlu/training_data/training_data.py +729 -0
  662. rasa/shared/nlu/training_data/util.py +223 -0
  663. rasa/shared/providers/__init__.py +0 -0
  664. rasa/shared/providers/_configs/__init__.py +0 -0
  665. rasa/shared/providers/_configs/azure_openai_client_config.py +183 -0
  666. rasa/shared/providers/_configs/client_config.py +57 -0
  667. rasa/shared/providers/_configs/default_litellm_client_config.py +130 -0
  668. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +234 -0
  669. rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
  670. rasa/shared/providers/_configs/model_group_config.py +167 -0
  671. rasa/shared/providers/_configs/openai_client_config.py +175 -0
  672. rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
  673. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +177 -0
  674. rasa/shared/providers/_configs/utils.py +117 -0
  675. rasa/shared/providers/_ssl_verification_utils.py +124 -0
  676. rasa/shared/providers/_utils.py +79 -0
  677. rasa/shared/providers/embedding/__init__.py +0 -0
  678. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
  679. rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
  680. rasa/shared/providers/embedding/azure_openai_embedding_client.py +310 -0
  681. rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
  682. rasa/shared/providers/embedding/embedding_client.py +90 -0
  683. rasa/shared/providers/embedding/embedding_response.py +41 -0
  684. rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
  685. rasa/shared/providers/embedding/litellm_router_embedding_client.py +135 -0
  686. rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
  687. rasa/shared/providers/llm/__init__.py +0 -0
  688. rasa/shared/providers/llm/_base_litellm_client.py +263 -0
  689. rasa/shared/providers/llm/azure_openai_llm_client.py +359 -0
  690. rasa/shared/providers/llm/default_litellm_llm_client.py +108 -0
  691. rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
  692. rasa/shared/providers/llm/llm_client.py +76 -0
  693. rasa/shared/providers/llm/llm_response.py +50 -0
  694. rasa/shared/providers/llm/openai_llm_client.py +155 -0
  695. rasa/shared/providers/llm/rasa_llm_client.py +112 -0
  696. rasa/shared/providers/llm/self_hosted_llm_client.py +269 -0
  697. rasa/shared/providers/mappings.py +94 -0
  698. rasa/shared/providers/router/__init__.py +0 -0
  699. rasa/shared/providers/router/_base_litellm_router_client.py +183 -0
  700. rasa/shared/providers/router/router_client.py +73 -0
  701. rasa/shared/utils/__init__.py +0 -0
  702. rasa/shared/utils/cli.py +102 -0
  703. rasa/shared/utils/common.py +324 -0
  704. rasa/shared/utils/constants.py +4 -0
  705. rasa/shared/utils/health_check/__init__.py +0 -0
  706. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
  707. rasa/shared/utils/health_check/health_check.py +258 -0
  708. rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
  709. rasa/shared/utils/io.py +499 -0
  710. rasa/shared/utils/llm.py +760 -0
  711. rasa/shared/utils/pykwalify_extensions.py +27 -0
  712. rasa/shared/utils/schemas/__init__.py +0 -0
  713. rasa/shared/utils/schemas/config.yml +2 -0
  714. rasa/shared/utils/schemas/domain.yml +145 -0
  715. rasa/shared/utils/schemas/events.py +214 -0
  716. rasa/shared/utils/schemas/model_config.yml +36 -0
  717. rasa/shared/utils/schemas/stories.yml +173 -0
  718. rasa/shared/utils/yaml.py +1067 -0
  719. rasa/studio/__init__.py +0 -0
  720. rasa/studio/auth.py +270 -0
  721. rasa/studio/config.py +136 -0
  722. rasa/studio/constants.py +19 -0
  723. rasa/studio/data_handler.py +368 -0
  724. rasa/studio/download.py +489 -0
  725. rasa/studio/results_logger.py +137 -0
  726. rasa/studio/train.py +134 -0
  727. rasa/studio/upload.py +549 -0
  728. rasa/telemetry.py +1869 -0
  729. rasa/tracing/__init__.py +0 -0
  730. rasa/tracing/config.py +355 -0
  731. rasa/tracing/constants.py +62 -0
  732. rasa/tracing/instrumentation/__init__.py +0 -0
  733. rasa/tracing/instrumentation/attribute_extractors.py +764 -0
  734. rasa/tracing/instrumentation/instrumentation.py +1306 -0
  735. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
  736. rasa/tracing/instrumentation/metrics.py +294 -0
  737. rasa/tracing/metric_instrument_provider.py +205 -0
  738. rasa/utils/__init__.py +0 -0
  739. rasa/utils/beta.py +83 -0
  740. rasa/utils/cli.py +28 -0
  741. rasa/utils/common.py +639 -0
  742. rasa/utils/converter.py +53 -0
  743. rasa/utils/endpoints.py +331 -0
  744. rasa/utils/io.py +252 -0
  745. rasa/utils/json_utils.py +60 -0
  746. rasa/utils/licensing.py +542 -0
  747. rasa/utils/log_utils.py +181 -0
  748. rasa/utils/mapper.py +210 -0
  749. rasa/utils/ml_utils.py +147 -0
  750. rasa/utils/plotting.py +362 -0
  751. rasa/utils/sanic_error_handler.py +32 -0
  752. rasa/utils/singleton.py +23 -0
  753. rasa/utils/tensorflow/__init__.py +0 -0
  754. rasa/utils/tensorflow/callback.py +112 -0
  755. rasa/utils/tensorflow/constants.py +116 -0
  756. rasa/utils/tensorflow/crf.py +492 -0
  757. rasa/utils/tensorflow/data_generator.py +440 -0
  758. rasa/utils/tensorflow/environment.py +161 -0
  759. rasa/utils/tensorflow/exceptions.py +5 -0
  760. rasa/utils/tensorflow/feature_array.py +366 -0
  761. rasa/utils/tensorflow/layers.py +1565 -0
  762. rasa/utils/tensorflow/layers_utils.py +113 -0
  763. rasa/utils/tensorflow/metrics.py +281 -0
  764. rasa/utils/tensorflow/model_data.py +798 -0
  765. rasa/utils/tensorflow/model_data_utils.py +499 -0
  766. rasa/utils/tensorflow/models.py +935 -0
  767. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  768. rasa/utils/tensorflow/transformer.py +640 -0
  769. rasa/utils/tensorflow/types.py +6 -0
  770. rasa/utils/train_utils.py +572 -0
  771. rasa/utils/url_tools.py +53 -0
  772. rasa/utils/yaml.py +54 -0
  773. rasa/validator.py +1653 -0
  774. rasa/version.py +3 -0
  775. rasa_pro-3.11.3.dist-info/METADATA +198 -0
  776. rasa_pro-3.11.3.dist-info/NOTICE +5 -0
  777. rasa_pro-3.11.3.dist-info/RECORD +779 -0
  778. rasa_pro-3.11.3.dist-info/WHEEL +4 -0
  779. rasa_pro-3.11.3.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,470 @@
1
+ import abc
2
+ from typing import Any, Dict, List, NamedTuple, Text, Tuple, Optional
3
+
4
+ import rasa.shared.utils.io
5
+ from rasa.shared.constants import DOCS_URL_TRAINING_DATA_NLU
6
+ from rasa.shared.nlu.training_data.training_data import TrainingData
7
+ from rasa.shared.nlu.training_data.message import Message
8
+ from rasa.nlu.tokenizers.tokenizer import Token
9
+ from rasa.nlu.constants import (
10
+ TOKENS_NAMES,
11
+ ENTITY_ATTRIBUTE_CONFIDENCE_TYPE,
12
+ ENTITY_ATTRIBUTE_CONFIDENCE_ROLE,
13
+ ENTITY_ATTRIBUTE_CONFIDENCE_GROUP,
14
+ )
15
+ from rasa.shared.nlu.constants import (
16
+ TEXT,
17
+ INTENT,
18
+ ENTITIES,
19
+ ENTITY_ATTRIBUTE_VALUE,
20
+ ENTITY_ATTRIBUTE_START,
21
+ ENTITY_ATTRIBUTE_END,
22
+ EXTRACTOR,
23
+ ENTITY_ATTRIBUTE_TYPE,
24
+ ENTITY_ATTRIBUTE_GROUP,
25
+ ENTITY_ATTRIBUTE_ROLE,
26
+ NO_ENTITY_TAG,
27
+ SPLIT_ENTITIES_BY_COMMA,
28
+ SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET,
29
+ )
30
+ import rasa.utils.train_utils
31
+
32
+
33
+ class EntityTagSpec(NamedTuple):
34
+ """Specification of an entity tag present in the training data."""
35
+
36
+ tag_name: Text
37
+ ids_to_tags: Dict[int, Text]
38
+ tags_to_ids: Dict[Text, int]
39
+ num_tags: int
40
+
41
+
42
+ class EntityExtractorMixin(abc.ABC):
43
+ """Provides functionality for components that do entity extraction.
44
+
45
+ Inheriting from this class will add utility functions for entity extraction.
46
+ Entity extraction is the process of identifying and extracting entities like a
47
+ person's name, or a location from a message.
48
+ """
49
+
50
+ @property
51
+ def name(self) -> Text:
52
+ """Returns the name of the class."""
53
+ return self.__class__.__name__
54
+
55
+ def add_extractor_name(
56
+ self, entities: List[Dict[Text, Any]]
57
+ ) -> List[Dict[Text, Any]]:
58
+ """Adds this extractor's name to a list of entities.
59
+
60
+ Args:
61
+ entities: the extracted entities.
62
+
63
+ Returns:
64
+ the modified entities.
65
+ """
66
+ for entity in entities:
67
+ entity[EXTRACTOR] = self.name
68
+ return entities
69
+
70
+ def add_processor_name(self, entity: Dict[Text, Any]) -> Dict[Text, Any]:
71
+ """Adds this extractor's name to the list of processors for this entity.
72
+
73
+ Args:
74
+ entity: the extracted entity and its metadata.
75
+
76
+ Returns:
77
+ the modified entity.
78
+ """
79
+ if "processors" in entity:
80
+ entity["processors"].append(self.name)
81
+ else:
82
+ entity["processors"] = [self.name]
83
+
84
+ return entity
85
+
86
+ @staticmethod
87
+ def filter_irrelevant_entities(extracted: list, requested_dimensions: set) -> list:
88
+ """Only return dimensions the user configured."""
89
+ if requested_dimensions:
90
+ return [
91
+ entity
92
+ for entity in extracted
93
+ if entity[ENTITY_ATTRIBUTE_TYPE] in requested_dimensions
94
+ ]
95
+ return extracted
96
+
97
+ @staticmethod
98
+ def find_entity(
99
+ entity: Dict[Text, Any], text: Text, tokens: List[Token]
100
+ ) -> Tuple[int, int]:
101
+ offsets = [token.start for token in tokens]
102
+ ends = [token.end for token in tokens]
103
+
104
+ if entity[ENTITY_ATTRIBUTE_START] not in offsets:
105
+ message = (
106
+ "Invalid entity {} in example '{}': "
107
+ "entities must span whole tokens. "
108
+ "Wrong entity start.".format(entity, text)
109
+ )
110
+ raise ValueError(message)
111
+
112
+ if entity[ENTITY_ATTRIBUTE_END] not in ends:
113
+ message = (
114
+ "Invalid entity {} in example '{}': "
115
+ "entities must span whole tokens. "
116
+ "Wrong entity end.".format(entity, text)
117
+ )
118
+ raise ValueError(message)
119
+
120
+ start = offsets.index(entity[ENTITY_ATTRIBUTE_START])
121
+ end = ends.index(entity[ENTITY_ATTRIBUTE_END]) + 1
122
+ return start, end
123
+
124
+ def filter_trainable_entities(
125
+ self, entity_examples: List[Message]
126
+ ) -> List[Message]:
127
+ """Filters out untrainable entity annotations.
128
+
129
+ Creates a copy of entity_examples in which entities that have
130
+ `extractor` set to something other than
131
+ self.name (e.g. 'CRFEntityExtractor') are removed.
132
+ """
133
+ filtered = []
134
+ for message in entity_examples:
135
+ entities = []
136
+ for ent in message.get(ENTITIES, []):
137
+ extractor = ent.get(EXTRACTOR)
138
+ if not extractor or extractor == self.name:
139
+ entities.append(ent)
140
+ data = message.data.copy()
141
+ data[ENTITIES] = entities
142
+ filtered.append(
143
+ Message(
144
+ text=message.get(TEXT),
145
+ data=data,
146
+ output_properties=message.output_properties,
147
+ time=message.time,
148
+ features=message.features,
149
+ )
150
+ )
151
+
152
+ return filtered
153
+
154
+ @staticmethod
155
+ def convert_predictions_into_entities(
156
+ text: Text,
157
+ tokens: List[Token],
158
+ tags: Dict[Text, List[Text]],
159
+ split_entities_config: Optional[Dict[Text, bool]] = None,
160
+ confidences: Optional[Dict[Text, List[float]]] = None,
161
+ ) -> List[Dict[Text, Any]]:
162
+ """Convert predictions into entities.
163
+
164
+ Args:
165
+ text: The text message.
166
+ tokens: Message tokens without CLS token.
167
+ tags: Predicted tags.
168
+ split_entities_config: config for handling splitting a list of entities
169
+ confidences: Confidences of predicted tags.
170
+
171
+ Returns:
172
+ Entities.
173
+ """
174
+ import rasa.nlu.utils.bilou_utils as bilou_utils
175
+
176
+ entities = []
177
+
178
+ last_entity_tag = NO_ENTITY_TAG
179
+ last_role_tag = NO_ENTITY_TAG
180
+ last_group_tag = NO_ENTITY_TAG
181
+ last_token_end = -1
182
+
183
+ for idx, token in enumerate(tokens):
184
+ current_entity_tag = EntityExtractorMixin.get_tag_for(
185
+ tags, ENTITY_ATTRIBUTE_TYPE, idx
186
+ )
187
+
188
+ if current_entity_tag == NO_ENTITY_TAG:
189
+ last_entity_tag = NO_ENTITY_TAG
190
+ last_token_end = token.end
191
+ continue
192
+
193
+ current_group_tag = EntityExtractorMixin.get_tag_for(
194
+ tags, ENTITY_ATTRIBUTE_GROUP, idx
195
+ )
196
+ current_group_tag = bilou_utils.tag_without_prefix(current_group_tag)
197
+ current_role_tag = EntityExtractorMixin.get_tag_for(
198
+ tags, ENTITY_ATTRIBUTE_ROLE, idx
199
+ )
200
+ current_role_tag = bilou_utils.tag_without_prefix(current_role_tag)
201
+
202
+ group_or_role_changed = (
203
+ last_group_tag != current_group_tag or last_role_tag != current_role_tag
204
+ )
205
+
206
+ if bilou_utils.bilou_prefix_from_tag(current_entity_tag):
207
+ # checks for new bilou tag
208
+ # new bilou tag begins are not with I- , L- tags
209
+ new_bilou_tag_starts = last_entity_tag != current_entity_tag and (
210
+ bilou_utils.LAST
211
+ != bilou_utils.bilou_prefix_from_tag(current_entity_tag)
212
+ and bilou_utils.INSIDE
213
+ != bilou_utils.bilou_prefix_from_tag(current_entity_tag)
214
+ )
215
+
216
+ # to handle bilou tags such as only I-, L- tags without B-tag
217
+ # and handle multiple U-tags consecutively
218
+ new_unigram_bilou_tag_starts = (
219
+ last_entity_tag == NO_ENTITY_TAG
220
+ or bilou_utils.UNIT
221
+ == bilou_utils.bilou_prefix_from_tag(current_entity_tag)
222
+ )
223
+
224
+ new_tag_found = (
225
+ new_bilou_tag_starts
226
+ or new_unigram_bilou_tag_starts
227
+ or group_or_role_changed
228
+ )
229
+ last_entity_tag = current_entity_tag
230
+ current_entity_tag = bilou_utils.tag_without_prefix(current_entity_tag)
231
+ else:
232
+ new_tag_found = (
233
+ last_entity_tag != current_entity_tag or group_or_role_changed
234
+ )
235
+ last_entity_tag = current_entity_tag
236
+
237
+ if new_tag_found:
238
+ # new entity found
239
+ entity = EntityExtractorMixin._create_new_entity(
240
+ list(tags.keys()),
241
+ current_entity_tag,
242
+ current_group_tag,
243
+ current_role_tag,
244
+ token,
245
+ idx,
246
+ confidences,
247
+ )
248
+ entities.append(entity)
249
+ elif EntityExtractorMixin._check_is_single_entity(
250
+ text, token, last_token_end, split_entities_config, current_entity_tag
251
+ ):
252
+ # current token has the same entity tag as the token before and
253
+ # the two tokens are separated by at most 3 symbols, where each
254
+ # of the symbols has to be either punctuation (e.g. "." or ",")
255
+ # and a whitespace.
256
+ entities[-1][ENTITY_ATTRIBUTE_END] = token.end
257
+ if confidences is not None:
258
+ EntityExtractorMixin._update_confidence_values(
259
+ entities, confidences, idx
260
+ )
261
+
262
+ else:
263
+ # the token has the same entity tag as the token before but the two
264
+ # tokens are separated by at least 2 symbols (e.g. multiple spaces,
265
+ # a comma and a space, etc.) and also shouldn't be represented as a
266
+ # single entity
267
+ entity = EntityExtractorMixin._create_new_entity(
268
+ list(tags.keys()),
269
+ current_entity_tag,
270
+ current_group_tag,
271
+ current_role_tag,
272
+ token,
273
+ idx,
274
+ confidences,
275
+ )
276
+ entities.append(entity)
277
+
278
+ last_group_tag = current_group_tag
279
+ last_role_tag = current_role_tag
280
+ last_token_end = token.end
281
+
282
+ for entity in entities:
283
+ entity[ENTITY_ATTRIBUTE_VALUE] = text[
284
+ entity[ENTITY_ATTRIBUTE_START] : entity[ENTITY_ATTRIBUTE_END]
285
+ ]
286
+
287
+ return entities
288
+
289
+ @staticmethod
290
+ def _update_confidence_values(
291
+ entities: List[Dict[Text, Any]], confidences: Dict[Text, List[float]], idx: int
292
+ ) -> None:
293
+ # use the lower confidence value
294
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_TYPE] = min(
295
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_TYPE],
296
+ confidences[ENTITY_ATTRIBUTE_TYPE][idx],
297
+ )
298
+ if ENTITY_ATTRIBUTE_ROLE in entities[-1]:
299
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_ROLE] = min(
300
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_ROLE],
301
+ confidences[ENTITY_ATTRIBUTE_ROLE][idx],
302
+ )
303
+ if ENTITY_ATTRIBUTE_GROUP in entities[-1]:
304
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_GROUP] = min(
305
+ entities[-1][ENTITY_ATTRIBUTE_CONFIDENCE_GROUP],
306
+ confidences[ENTITY_ATTRIBUTE_GROUP][idx],
307
+ )
308
+
309
+ @staticmethod
310
+ def _check_is_single_entity(
311
+ text: Text,
312
+ token: Token,
313
+ last_token_end: int,
314
+ split_entities_config: Dict[Text, bool],
315
+ current_entity_tag: Text,
316
+ ) -> bool:
317
+ # current token has the same entity tag as the token before and
318
+ # the two tokens are only separated by at most one symbol (e.g. space,
319
+ # dash, etc.)
320
+ if token.start - last_token_end <= 1:
321
+ return True
322
+
323
+ # Tokens need to be no further than 3 positions apart
324
+ # The magic number 3 is chosen such that the following two cases can be
325
+ # extracted
326
+ # - Schönhauser Allee 175, 10119 Berlin
327
+ # (address compounds separated by 2 tokens (", "))
328
+ # - 22 Powderhall Rd., EH7 4GB
329
+ # (abbreviated "Rd." results in a separation of 3 tokens ("., "))
330
+ # More than 3 might already introduce cases that shouldn't be considered by
331
+ # this logic
332
+ tokens_within_range = token.start - last_token_end <= 3
333
+
334
+ # The interleaving tokens *must* be a full stop, a comma, or a whitespace
335
+ interleaving_text = text[last_token_end : token.start]
336
+ tokens_separated_by_allowed_chars = all(
337
+ filter(
338
+ lambda char: True
339
+ if char in SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET
340
+ else False,
341
+ interleaving_text,
342
+ )
343
+ )
344
+
345
+ # The current entity type must match with the config (default value is True)
346
+ default_value = split_entities_config[SPLIT_ENTITIES_BY_COMMA]
347
+ split_current_entity_type = split_entities_config.get(
348
+ current_entity_tag, default_value
349
+ )
350
+
351
+ return (
352
+ tokens_within_range
353
+ and tokens_separated_by_allowed_chars
354
+ and not split_current_entity_type
355
+ )
356
+
357
+ @staticmethod
358
+ def get_tag_for(tags: Dict[Text, List[Text]], tag_name: Text, idx: int) -> Text:
359
+ """Get the value of the given tag name from the list of tags.
360
+
361
+ Args:
362
+ tags: Mapping of tag name to list of tags;
363
+ tag_name: The tag name of interest.
364
+ idx: The index position of the tag.
365
+
366
+ Returns:
367
+ The tag value.
368
+ """
369
+ if tag_name in tags:
370
+ return tags[tag_name][idx]
371
+ return NO_ENTITY_TAG
372
+
373
+ @staticmethod
374
+ def _create_new_entity(
375
+ tag_names: List[Text],
376
+ entity_tag: Text,
377
+ group_tag: Text,
378
+ role_tag: Text,
379
+ token: Token,
380
+ idx: int,
381
+ confidences: Optional[Dict[Text, List[float]]] = None,
382
+ ) -> Dict[Text, Any]:
383
+ """Create a new entity.
384
+
385
+ Args:
386
+ tag_names: The tag names to include in the entity.
387
+ entity_tag: The entity type value.
388
+ group_tag: The entity group value.
389
+ role_tag: The entity role value.
390
+ token: The token.
391
+ confidence: The confidence value.
392
+
393
+ Returns:
394
+ Created entity.
395
+ """
396
+ entity = {
397
+ ENTITY_ATTRIBUTE_TYPE: entity_tag,
398
+ ENTITY_ATTRIBUTE_START: token.start,
399
+ ENTITY_ATTRIBUTE_END: token.end,
400
+ }
401
+
402
+ if confidences is not None:
403
+ entity[ENTITY_ATTRIBUTE_CONFIDENCE_TYPE] = confidences[
404
+ ENTITY_ATTRIBUTE_TYPE
405
+ ][idx]
406
+
407
+ if ENTITY_ATTRIBUTE_ROLE in tag_names and role_tag != NO_ENTITY_TAG:
408
+ entity[ENTITY_ATTRIBUTE_ROLE] = role_tag
409
+ if confidences is not None:
410
+ entity[ENTITY_ATTRIBUTE_CONFIDENCE_ROLE] = confidences[
411
+ ENTITY_ATTRIBUTE_ROLE
412
+ ][idx]
413
+ if ENTITY_ATTRIBUTE_GROUP in tag_names and group_tag != NO_ENTITY_TAG:
414
+ entity[ENTITY_ATTRIBUTE_GROUP] = group_tag
415
+ if confidences is not None:
416
+ entity[ENTITY_ATTRIBUTE_CONFIDENCE_GROUP] = confidences[
417
+ ENTITY_ATTRIBUTE_GROUP
418
+ ][idx]
419
+
420
+ return entity
421
+
422
+ @staticmethod
423
+ def check_correct_entity_annotations(training_data: TrainingData) -> None:
424
+ """Check if entities are correctly annotated in the training data.
425
+
426
+ If the start and end values of an entity do not match any start and end values
427
+ of the respected token, we define an entity as misaligned and log a warning.
428
+
429
+ Args:
430
+ training_data: The training data.
431
+ """
432
+ for example in training_data.entity_examples:
433
+ entity_boundaries = [
434
+ (entity[ENTITY_ATTRIBUTE_START], entity[ENTITY_ATTRIBUTE_END])
435
+ for entity in example.get(ENTITIES)
436
+ ]
437
+ token_start_positions = [t.start for t in example.get(TOKENS_NAMES[TEXT])]
438
+ token_end_positions = [t.end for t in example.get(TOKENS_NAMES[TEXT])]
439
+
440
+ for entity_start, entity_end in entity_boundaries:
441
+ if (
442
+ entity_start not in token_start_positions
443
+ or entity_end not in token_end_positions
444
+ ):
445
+ entities_repr = [
446
+ (
447
+ entity[ENTITY_ATTRIBUTE_START],
448
+ entity[ENTITY_ATTRIBUTE_END],
449
+ entity[ENTITY_ATTRIBUTE_VALUE],
450
+ )
451
+ for entity in example.get(ENTITIES)
452
+ ]
453
+ tokens_repr = [
454
+ (t.start, t.end, t.text)
455
+ for t in example.get(TOKENS_NAMES[TEXT])
456
+ ]
457
+ rasa.shared.utils.io.raise_warning(
458
+ f"Misaligned entity annotation in message "
459
+ f"'{example.get(TEXT)}' with intent '{example.get(INTENT)}'. "
460
+ f"Make sure the start and end values of entities "
461
+ f"({entities_repr}) in the training "
462
+ f"data match the token boundaries ({tokens_repr}). "
463
+ "Common causes: \n 1) entities include trailing whitespaces "
464
+ "or punctuation"
465
+ "\n 2) the tokenizer gives an unexpected result, due to "
466
+ "languages such as Chinese that don't use whitespace for word "
467
+ "separation",
468
+ docs=DOCS_URL_TRAINING_DATA_NLU,
469
+ )
470
+ break