rasa-pro 3.9.18__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 (662) hide show
  1. README.md +415 -0
  2. rasa/__init__.py +10 -0
  3. rasa/__main__.py +156 -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 +146 -0
  12. rasa/cli/__init__.py +5 -0
  13. rasa/cli/arguments/__init__.py +0 -0
  14. rasa/cli/arguments/data.py +81 -0
  15. rasa/cli/arguments/default_arguments.py +165 -0
  16. rasa/cli/arguments/evaluate.py +65 -0
  17. rasa/cli/arguments/export.py +51 -0
  18. rasa/cli/arguments/interactive.py +74 -0
  19. rasa/cli/arguments/run.py +204 -0
  20. rasa/cli/arguments/shell.py +13 -0
  21. rasa/cli/arguments/test.py +211 -0
  22. rasa/cli/arguments/train.py +263 -0
  23. rasa/cli/arguments/visualize.py +34 -0
  24. rasa/cli/arguments/x.py +30 -0
  25. rasa/cli/data.py +292 -0
  26. rasa/cli/e2e_test.py +586 -0
  27. rasa/cli/evaluate.py +222 -0
  28. rasa/cli/export.py +250 -0
  29. rasa/cli/inspect.py +63 -0
  30. rasa/cli/interactive.py +164 -0
  31. rasa/cli/license.py +65 -0
  32. rasa/cli/markers.py +78 -0
  33. rasa/cli/project_templates/__init__.py +0 -0
  34. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  35. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  36. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  37. rasa/cli/project_templates/calm/actions/db.py +57 -0
  38. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  39. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  40. rasa/cli/project_templates/calm/config.yml +12 -0
  41. rasa/cli/project_templates/calm/credentials.yml +33 -0
  42. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  43. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  44. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  45. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  46. rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
  47. rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
  48. rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
  49. rasa/cli/project_templates/calm/domain/shared.yml +10 -0
  50. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  51. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  52. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  53. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  54. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  55. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  58. rasa/cli/project_templates/calm/endpoints.yml +45 -0
  59. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  60. rasa/cli/project_templates/default/actions/actions.py +27 -0
  61. rasa/cli/project_templates/default/config.yml +44 -0
  62. rasa/cli/project_templates/default/credentials.yml +33 -0
  63. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  64. rasa/cli/project_templates/default/data/rules.yml +13 -0
  65. rasa/cli/project_templates/default/data/stories.yml +30 -0
  66. rasa/cli/project_templates/default/domain.yml +34 -0
  67. rasa/cli/project_templates/default/endpoints.yml +42 -0
  68. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  69. rasa/cli/project_templates/tutorial/actions.py +22 -0
  70. rasa/cli/project_templates/tutorial/config.yml +11 -0
  71. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  72. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  73. rasa/cli/project_templates/tutorial/data/patterns.yml +6 -0
  74. rasa/cli/project_templates/tutorial/domain.yml +21 -0
  75. rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
  76. rasa/cli/run.py +135 -0
  77. rasa/cli/scaffold.py +269 -0
  78. rasa/cli/shell.py +141 -0
  79. rasa/cli/studio/__init__.py +0 -0
  80. rasa/cli/studio/download.py +62 -0
  81. rasa/cli/studio/studio.py +266 -0
  82. rasa/cli/studio/train.py +59 -0
  83. rasa/cli/studio/upload.py +77 -0
  84. rasa/cli/telemetry.py +102 -0
  85. rasa/cli/test.py +280 -0
  86. rasa/cli/train.py +260 -0
  87. rasa/cli/utils.py +464 -0
  88. rasa/cli/visualize.py +40 -0
  89. rasa/cli/x.py +206 -0
  90. rasa/constants.py +37 -0
  91. rasa/core/__init__.py +17 -0
  92. rasa/core/actions/__init__.py +0 -0
  93. rasa/core/actions/action.py +1225 -0
  94. rasa/core/actions/action_clean_stack.py +59 -0
  95. rasa/core/actions/action_exceptions.py +24 -0
  96. rasa/core/actions/action_run_slot_rejections.py +207 -0
  97. rasa/core/actions/action_trigger_chitchat.py +31 -0
  98. rasa/core/actions/action_trigger_flow.py +109 -0
  99. rasa/core/actions/action_trigger_search.py +31 -0
  100. rasa/core/actions/constants.py +5 -0
  101. rasa/core/actions/custom_action_executor.py +188 -0
  102. rasa/core/actions/forms.py +741 -0
  103. rasa/core/actions/grpc_custom_action_executor.py +251 -0
  104. rasa/core/actions/http_custom_action_executor.py +140 -0
  105. rasa/core/actions/loops.py +114 -0
  106. rasa/core/actions/two_stage_fallback.py +186 -0
  107. rasa/core/agent.py +555 -0
  108. rasa/core/auth_retry_tracker_store.py +122 -0
  109. rasa/core/brokers/__init__.py +0 -0
  110. rasa/core/brokers/broker.py +126 -0
  111. rasa/core/brokers/file.py +58 -0
  112. rasa/core/brokers/kafka.py +322 -0
  113. rasa/core/brokers/pika.py +386 -0
  114. rasa/core/brokers/sql.py +86 -0
  115. rasa/core/channels/__init__.py +55 -0
  116. rasa/core/channels/audiocodes.py +463 -0
  117. rasa/core/channels/botframework.py +338 -0
  118. rasa/core/channels/callback.py +84 -0
  119. rasa/core/channels/channel.py +419 -0
  120. rasa/core/channels/console.py +241 -0
  121. rasa/core/channels/development_inspector.py +93 -0
  122. rasa/core/channels/facebook.py +419 -0
  123. rasa/core/channels/hangouts.py +329 -0
  124. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  125. rasa/core/channels/inspector/.gitignore +23 -0
  126. rasa/core/channels/inspector/README.md +54 -0
  127. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  128. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  129. rasa/core/channels/inspector/custom.d.ts +3 -0
  130. rasa/core/channels/inspector/dist/assets/arc-b6e548fe.js +1 -0
  131. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  132. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-fa03ac9e.js +10 -0
  133. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-ee67392a.js +2 -0
  134. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-9b283fae.js +2 -0
  135. rasa/core/channels/inspector/dist/assets/createText-62fc7601-8b6fcc2a.js +7 -0
  136. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-22e77f4f.js +4 -0
  137. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-60ffc87f.js +51 -0
  138. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9dd802e4.js +6 -0
  139. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-5fa1912f.js +4 -0
  140. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
  141. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-622a1fd2.js +139 -0
  142. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-e285a63a.js +266 -0
  143. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-f237bdca.js +70 -0
  144. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  145. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  146. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  147. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  148. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-4b03d70e.js +1 -0
  149. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  150. rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +1040 -0
  151. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-72a0fa5f.js +7 -0
  152. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  153. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-82218c41.js +139 -0
  154. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  155. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  156. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  157. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  158. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  159. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  160. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  161. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  162. rasa/core/channels/inspector/dist/assets/layout-78cff630.js +1 -0
  163. rasa/core/channels/inspector/dist/assets/line-5038b469.js +1 -0
  164. rasa/core/channels/inspector/dist/assets/linear-c4fc4098.js +1 -0
  165. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-c33c8ea6.js +109 -0
  166. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  167. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  168. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-a8d03059.js +35 -0
  169. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-6a0e56b2.js +7 -0
  170. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-2dc7c7bd.js +52 -0
  171. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-2360fe39.js +8 -0
  172. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-41b9f9ad.js +122 -0
  173. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-0aad326f.js +1 -0
  174. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-9847d984.js +1 -0
  175. rasa/core/channels/inspector/dist/assets/styles-080da4f6-564d890e.js +110 -0
  176. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-38957613.js +159 -0
  177. rasa/core/channels/inspector/dist/assets/styles-9c745c82-f0fc6921.js +207 -0
  178. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-ef3c5a77.js +1 -0
  179. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-bf3e91c1.js +61 -0
  180. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-4d4026c0.js +7 -0
  181. rasa/core/channels/inspector/dist/index.html +41 -0
  182. rasa/core/channels/inspector/index.html +39 -0
  183. rasa/core/channels/inspector/jest.config.ts +13 -0
  184. rasa/core/channels/inspector/package.json +48 -0
  185. rasa/core/channels/inspector/setupTests.ts +2 -0
  186. rasa/core/channels/inspector/src/App.tsx +170 -0
  187. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +107 -0
  188. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  189. rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -0
  190. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  191. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  192. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +19 -0
  193. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  194. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  195. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  196. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  197. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  198. rasa/core/channels/inspector/src/helpers/formatters.test.ts +382 -0
  199. rasa/core/channels/inspector/src/helpers/formatters.ts +240 -0
  200. rasa/core/channels/inspector/src/helpers/utils.ts +42 -0
  201. rasa/core/channels/inspector/src/main.tsx +13 -0
  202. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  203. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  204. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  205. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  206. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  207. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  208. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  209. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  210. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  211. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  212. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  213. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  214. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  215. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  216. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  217. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  218. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  222. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  223. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  224. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  225. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  226. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  227. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  228. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  229. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  230. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  231. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  232. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  233. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  234. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  235. rasa/core/channels/inspector/src/types.ts +64 -0
  236. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  237. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  238. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  239. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  240. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  241. rasa/core/channels/inspector/tsconfig.json +26 -0
  242. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  243. rasa/core/channels/inspector/vite.config.ts +8 -0
  244. rasa/core/channels/inspector/yarn.lock +6156 -0
  245. rasa/core/channels/mattermost.py +229 -0
  246. rasa/core/channels/rasa_chat.py +126 -0
  247. rasa/core/channels/rest.py +225 -0
  248. rasa/core/channels/rocketchat.py +174 -0
  249. rasa/core/channels/slack.py +620 -0
  250. rasa/core/channels/socketio.py +274 -0
  251. rasa/core/channels/telegram.py +298 -0
  252. rasa/core/channels/twilio.py +169 -0
  253. rasa/core/channels/twilio_voice.py +367 -0
  254. rasa/core/channels/vier_cvg.py +374 -0
  255. rasa/core/channels/webexteams.py +134 -0
  256. rasa/core/concurrent_lock_store.py +210 -0
  257. rasa/core/constants.py +107 -0
  258. rasa/core/evaluation/__init__.py +0 -0
  259. rasa/core/evaluation/marker.py +267 -0
  260. rasa/core/evaluation/marker_base.py +923 -0
  261. rasa/core/evaluation/marker_stats.py +293 -0
  262. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  263. rasa/core/exceptions.py +29 -0
  264. rasa/core/exporter.py +284 -0
  265. rasa/core/featurizers/__init__.py +0 -0
  266. rasa/core/featurizers/precomputation.py +410 -0
  267. rasa/core/featurizers/single_state_featurizer.py +421 -0
  268. rasa/core/featurizers/tracker_featurizers.py +1262 -0
  269. rasa/core/http_interpreter.py +89 -0
  270. rasa/core/information_retrieval/__init__.py +7 -0
  271. rasa/core/information_retrieval/faiss.py +121 -0
  272. rasa/core/information_retrieval/information_retrieval.py +129 -0
  273. rasa/core/information_retrieval/milvus.py +52 -0
  274. rasa/core/information_retrieval/qdrant.py +95 -0
  275. rasa/core/jobs.py +63 -0
  276. rasa/core/lock.py +139 -0
  277. rasa/core/lock_store.py +343 -0
  278. rasa/core/migrate.py +403 -0
  279. rasa/core/nlg/__init__.py +3 -0
  280. rasa/core/nlg/callback.py +146 -0
  281. rasa/core/nlg/contextual_response_rephraser.py +270 -0
  282. rasa/core/nlg/generator.py +230 -0
  283. rasa/core/nlg/interpolator.py +143 -0
  284. rasa/core/nlg/response.py +155 -0
  285. rasa/core/nlg/summarize.py +69 -0
  286. rasa/core/policies/__init__.py +0 -0
  287. rasa/core/policies/ensemble.py +329 -0
  288. rasa/core/policies/enterprise_search_policy.py +781 -0
  289. rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
  290. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
  291. rasa/core/policies/flow_policy.py +205 -0
  292. rasa/core/policies/flows/__init__.py +0 -0
  293. rasa/core/policies/flows/flow_exceptions.py +44 -0
  294. rasa/core/policies/flows/flow_executor.py +705 -0
  295. rasa/core/policies/flows/flow_step_result.py +43 -0
  296. rasa/core/policies/intentless_policy.py +922 -0
  297. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  298. rasa/core/policies/memoization.py +538 -0
  299. rasa/core/policies/policy.py +725 -0
  300. rasa/core/policies/rule_policy.py +1273 -0
  301. rasa/core/policies/ted_policy.py +2169 -0
  302. rasa/core/policies/unexpected_intent_policy.py +1022 -0
  303. rasa/core/processor.py +1422 -0
  304. rasa/core/run.py +331 -0
  305. rasa/core/secrets_manager/__init__.py +0 -0
  306. rasa/core/secrets_manager/constants.py +32 -0
  307. rasa/core/secrets_manager/endpoints.py +391 -0
  308. rasa/core/secrets_manager/factory.py +233 -0
  309. rasa/core/secrets_manager/secret_manager.py +262 -0
  310. rasa/core/secrets_manager/vault.py +574 -0
  311. rasa/core/test.py +1335 -0
  312. rasa/core/tracker_store.py +1699 -0
  313. rasa/core/train.py +105 -0
  314. rasa/core/training/__init__.py +89 -0
  315. rasa/core/training/converters/__init__.py +0 -0
  316. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  317. rasa/core/training/interactive.py +1745 -0
  318. rasa/core/training/story_conflict.py +381 -0
  319. rasa/core/training/training.py +93 -0
  320. rasa/core/utils.py +339 -0
  321. rasa/core/visualize.py +70 -0
  322. rasa/dialogue_understanding/__init__.py +0 -0
  323. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  324. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  325. rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
  326. rasa/dialogue_understanding/coexistence/llm_based_router.py +260 -0
  327. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  328. rasa/dialogue_understanding/commands/__init__.py +49 -0
  329. rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
  330. rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
  331. rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
  332. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
  333. rasa/dialogue_understanding/commands/clarify_command.py +86 -0
  334. rasa/dialogue_understanding/commands/command.py +85 -0
  335. rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
  336. rasa/dialogue_understanding/commands/error_command.py +79 -0
  337. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  338. rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
  339. rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
  340. rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
  341. rasa/dialogue_understanding/commands/noop_command.py +54 -0
  342. rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
  343. rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
  344. rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
  345. rasa/dialogue_understanding/generator/__init__.py +21 -0
  346. rasa/dialogue_understanding/generator/command_generator.py +343 -0
  347. rasa/dialogue_understanding/generator/constants.py +18 -0
  348. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  349. rasa/dialogue_understanding/generator/flow_retrieval.py +412 -0
  350. rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -0
  351. rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
  352. rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
  353. rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
  354. rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
  355. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +827 -0
  356. rasa/dialogue_understanding/generator/nlu_command_adapter.py +218 -0
  357. rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
  358. rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +57 -0
  359. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -0
  360. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  361. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  362. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  363. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  364. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  365. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  366. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  367. rasa/dialogue_understanding/patterns/completed.py +40 -0
  368. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  369. rasa/dialogue_understanding/patterns/correction.py +278 -0
  370. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +248 -0
  371. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  372. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  373. rasa/dialogue_understanding/patterns/search.py +37 -0
  374. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  375. rasa/dialogue_understanding/processor/__init__.py +0 -0
  376. rasa/dialogue_understanding/processor/command_processor.py +687 -0
  377. rasa/dialogue_understanding/processor/command_processor_component.py +39 -0
  378. rasa/dialogue_understanding/stack/__init__.py +0 -0
  379. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  380. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  381. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  382. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  383. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  384. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  385. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  386. rasa/dialogue_understanding/stack/utils.py +211 -0
  387. rasa/e2e_test/__init__.py +0 -0
  388. rasa/e2e_test/constants.py +11 -0
  389. rasa/e2e_test/e2e_test_case.py +366 -0
  390. rasa/e2e_test/e2e_test_result.py +34 -0
  391. rasa/e2e_test/e2e_test_runner.py +768 -0
  392. rasa/e2e_test/e2e_test_schema.yml +85 -0
  393. rasa/engine/__init__.py +0 -0
  394. rasa/engine/caching.py +463 -0
  395. rasa/engine/constants.py +17 -0
  396. rasa/engine/exceptions.py +14 -0
  397. rasa/engine/graph.py +637 -0
  398. rasa/engine/loader.py +36 -0
  399. rasa/engine/recipes/__init__.py +0 -0
  400. rasa/engine/recipes/config_files/default_config.yml +44 -0
  401. rasa/engine/recipes/default_components.py +99 -0
  402. rasa/engine/recipes/default_recipe.py +1251 -0
  403. rasa/engine/recipes/graph_recipe.py +79 -0
  404. rasa/engine/recipes/recipe.py +93 -0
  405. rasa/engine/runner/__init__.py +0 -0
  406. rasa/engine/runner/dask.py +250 -0
  407. rasa/engine/runner/interface.py +49 -0
  408. rasa/engine/storage/__init__.py +0 -0
  409. rasa/engine/storage/local_model_storage.py +246 -0
  410. rasa/engine/storage/resource.py +110 -0
  411. rasa/engine/storage/storage.py +203 -0
  412. rasa/engine/training/__init__.py +0 -0
  413. rasa/engine/training/components.py +176 -0
  414. rasa/engine/training/fingerprinting.py +64 -0
  415. rasa/engine/training/graph_trainer.py +256 -0
  416. rasa/engine/training/hooks.py +164 -0
  417. rasa/engine/validation.py +873 -0
  418. rasa/env.py +5 -0
  419. rasa/exceptions.py +69 -0
  420. rasa/graph_components/__init__.py +0 -0
  421. rasa/graph_components/converters/__init__.py +0 -0
  422. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  423. rasa/graph_components/providers/__init__.py +0 -0
  424. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  425. rasa/graph_components/providers/domain_provider.py +71 -0
  426. rasa/graph_components/providers/flows_provider.py +74 -0
  427. rasa/graph_components/providers/forms_provider.py +44 -0
  428. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  429. rasa/graph_components/providers/responses_provider.py +44 -0
  430. rasa/graph_components/providers/rule_only_provider.py +49 -0
  431. rasa/graph_components/providers/story_graph_provider.py +43 -0
  432. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  433. rasa/graph_components/validators/__init__.py +0 -0
  434. rasa/graph_components/validators/default_recipe_validator.py +550 -0
  435. rasa/graph_components/validators/finetuning_validator.py +302 -0
  436. rasa/hooks.py +112 -0
  437. rasa/jupyter.py +63 -0
  438. rasa/markers/__init__.py +0 -0
  439. rasa/markers/marker.py +269 -0
  440. rasa/markers/marker_base.py +828 -0
  441. rasa/markers/upload.py +74 -0
  442. rasa/markers/validate.py +21 -0
  443. rasa/model.py +118 -0
  444. rasa/model_testing.py +457 -0
  445. rasa/model_training.py +536 -0
  446. rasa/nlu/__init__.py +7 -0
  447. rasa/nlu/classifiers/__init__.py +3 -0
  448. rasa/nlu/classifiers/classifier.py +5 -0
  449. rasa/nlu/classifiers/diet_classifier.py +1881 -0
  450. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  451. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  452. rasa/nlu/classifiers/llm_intent_classifier.py +519 -0
  453. rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
  454. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  455. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  456. rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
  457. rasa/nlu/constants.py +77 -0
  458. rasa/nlu/convert.py +40 -0
  459. rasa/nlu/emulators/__init__.py +0 -0
  460. rasa/nlu/emulators/dialogflow.py +55 -0
  461. rasa/nlu/emulators/emulator.py +49 -0
  462. rasa/nlu/emulators/luis.py +86 -0
  463. rasa/nlu/emulators/no_emulator.py +10 -0
  464. rasa/nlu/emulators/wit.py +56 -0
  465. rasa/nlu/extractors/__init__.py +0 -0
  466. rasa/nlu/extractors/crf_entity_extractor.py +715 -0
  467. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  468. rasa/nlu/extractors/entity_synonyms.py +178 -0
  469. rasa/nlu/extractors/extractor.py +470 -0
  470. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  471. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  472. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  473. rasa/nlu/featurizers/__init__.py +0 -0
  474. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  475. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
  476. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  477. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
  478. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  479. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  480. rasa/nlu/featurizers/featurizer.py +89 -0
  481. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  482. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
  483. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
  484. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
  485. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  486. rasa/nlu/model.py +24 -0
  487. rasa/nlu/persistor.py +282 -0
  488. rasa/nlu/run.py +27 -0
  489. rasa/nlu/selectors/__init__.py +0 -0
  490. rasa/nlu/selectors/response_selector.py +987 -0
  491. rasa/nlu/test.py +1940 -0
  492. rasa/nlu/tokenizers/__init__.py +0 -0
  493. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  494. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  495. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  496. rasa/nlu/tokenizers/tokenizer.py +239 -0
  497. rasa/nlu/tokenizers/whitespace_tokenizer.py +106 -0
  498. rasa/nlu/utils/__init__.py +35 -0
  499. rasa/nlu/utils/bilou_utils.py +462 -0
  500. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  501. rasa/nlu/utils/hugging_face/registry.py +108 -0
  502. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  503. rasa/nlu/utils/mitie_utils.py +113 -0
  504. rasa/nlu/utils/pattern_utils.py +168 -0
  505. rasa/nlu/utils/spacy_utils.py +310 -0
  506. rasa/plugin.py +90 -0
  507. rasa/server.py +1551 -0
  508. rasa/shared/__init__.py +0 -0
  509. rasa/shared/constants.py +192 -0
  510. rasa/shared/core/__init__.py +0 -0
  511. rasa/shared/core/command_payload_reader.py +109 -0
  512. rasa/shared/core/constants.py +167 -0
  513. rasa/shared/core/conversation.py +46 -0
  514. rasa/shared/core/domain.py +2107 -0
  515. rasa/shared/core/events.py +2504 -0
  516. rasa/shared/core/flows/__init__.py +7 -0
  517. rasa/shared/core/flows/flow.py +362 -0
  518. rasa/shared/core/flows/flow_step.py +146 -0
  519. rasa/shared/core/flows/flow_step_links.py +319 -0
  520. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  521. rasa/shared/core/flows/flows_list.py +223 -0
  522. rasa/shared/core/flows/flows_yaml_schema.json +217 -0
  523. rasa/shared/core/flows/nlu_trigger.py +117 -0
  524. rasa/shared/core/flows/steps/__init__.py +24 -0
  525. rasa/shared/core/flows/steps/action.py +56 -0
  526. rasa/shared/core/flows/steps/call.py +64 -0
  527. rasa/shared/core/flows/steps/collect.py +112 -0
  528. rasa/shared/core/flows/steps/constants.py +5 -0
  529. rasa/shared/core/flows/steps/continuation.py +36 -0
  530. rasa/shared/core/flows/steps/end.py +22 -0
  531. rasa/shared/core/flows/steps/internal.py +44 -0
  532. rasa/shared/core/flows/steps/link.py +51 -0
  533. rasa/shared/core/flows/steps/no_operation.py +48 -0
  534. rasa/shared/core/flows/steps/set_slots.py +50 -0
  535. rasa/shared/core/flows/steps/start.py +30 -0
  536. rasa/shared/core/flows/validation.py +527 -0
  537. rasa/shared/core/flows/yaml_flows_io.py +278 -0
  538. rasa/shared/core/generator.py +908 -0
  539. rasa/shared/core/slot_mappings.py +526 -0
  540. rasa/shared/core/slots.py +649 -0
  541. rasa/shared/core/trackers.py +1177 -0
  542. rasa/shared/core/training_data/__init__.py +0 -0
  543. rasa/shared/core/training_data/loading.py +89 -0
  544. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  545. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  546. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  547. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  548. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  549. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  550. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
  551. rasa/shared/core/training_data/structures.py +838 -0
  552. rasa/shared/core/training_data/visualization.html +146 -0
  553. rasa/shared/core/training_data/visualization.py +603 -0
  554. rasa/shared/data.py +249 -0
  555. rasa/shared/engine/__init__.py +0 -0
  556. rasa/shared/engine/caching.py +26 -0
  557. rasa/shared/exceptions.py +163 -0
  558. rasa/shared/importers/__init__.py +0 -0
  559. rasa/shared/importers/importer.py +704 -0
  560. rasa/shared/importers/multi_project.py +203 -0
  561. rasa/shared/importers/rasa.py +99 -0
  562. rasa/shared/importers/utils.py +34 -0
  563. rasa/shared/nlu/__init__.py +0 -0
  564. rasa/shared/nlu/constants.py +47 -0
  565. rasa/shared/nlu/interpreter.py +10 -0
  566. rasa/shared/nlu/training_data/__init__.py +0 -0
  567. rasa/shared/nlu/training_data/entities_parser.py +208 -0
  568. rasa/shared/nlu/training_data/features.py +492 -0
  569. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  570. rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
  571. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  572. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  573. rasa/shared/nlu/training_data/formats/rasa_yaml.py +603 -0
  574. rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
  575. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  576. rasa/shared/nlu/training_data/loading.py +137 -0
  577. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  578. rasa/shared/nlu/training_data/message.py +490 -0
  579. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  580. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  581. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  582. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  583. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  584. rasa/shared/nlu/training_data/training_data.py +730 -0
  585. rasa/shared/nlu/training_data/util.py +223 -0
  586. rasa/shared/providers/__init__.py +0 -0
  587. rasa/shared/providers/openai/__init__.py +0 -0
  588. rasa/shared/providers/openai/clients.py +43 -0
  589. rasa/shared/providers/openai/session_handler.py +110 -0
  590. rasa/shared/utils/__init__.py +0 -0
  591. rasa/shared/utils/cli.py +72 -0
  592. rasa/shared/utils/common.py +308 -0
  593. rasa/shared/utils/constants.py +4 -0
  594. rasa/shared/utils/io.py +415 -0
  595. rasa/shared/utils/llm.py +404 -0
  596. rasa/shared/utils/pykwalify_extensions.py +27 -0
  597. rasa/shared/utils/schemas/__init__.py +0 -0
  598. rasa/shared/utils/schemas/config.yml +2 -0
  599. rasa/shared/utils/schemas/domain.yml +145 -0
  600. rasa/shared/utils/schemas/events.py +212 -0
  601. rasa/shared/utils/schemas/model_config.yml +46 -0
  602. rasa/shared/utils/schemas/stories.yml +173 -0
  603. rasa/shared/utils/yaml.py +786 -0
  604. rasa/studio/__init__.py +0 -0
  605. rasa/studio/auth.py +268 -0
  606. rasa/studio/config.py +127 -0
  607. rasa/studio/constants.py +18 -0
  608. rasa/studio/data_handler.py +359 -0
  609. rasa/studio/download.py +483 -0
  610. rasa/studio/results_logger.py +137 -0
  611. rasa/studio/train.py +135 -0
  612. rasa/studio/upload.py +433 -0
  613. rasa/telemetry.py +1737 -0
  614. rasa/tracing/__init__.py +0 -0
  615. rasa/tracing/config.py +353 -0
  616. rasa/tracing/constants.py +62 -0
  617. rasa/tracing/instrumentation/__init__.py +0 -0
  618. rasa/tracing/instrumentation/attribute_extractors.py +672 -0
  619. rasa/tracing/instrumentation/instrumentation.py +1185 -0
  620. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
  621. rasa/tracing/instrumentation/metrics.py +294 -0
  622. rasa/tracing/metric_instrument_provider.py +205 -0
  623. rasa/utils/__init__.py +0 -0
  624. rasa/utils/beta.py +83 -0
  625. rasa/utils/cli.py +28 -0
  626. rasa/utils/common.py +635 -0
  627. rasa/utils/converter.py +53 -0
  628. rasa/utils/endpoints.py +302 -0
  629. rasa/utils/io.py +260 -0
  630. rasa/utils/licensing.py +534 -0
  631. rasa/utils/log_utils.py +174 -0
  632. rasa/utils/mapper.py +210 -0
  633. rasa/utils/ml_utils.py +145 -0
  634. rasa/utils/plotting.py +362 -0
  635. rasa/utils/singleton.py +23 -0
  636. rasa/utils/tensorflow/__init__.py +0 -0
  637. rasa/utils/tensorflow/callback.py +112 -0
  638. rasa/utils/tensorflow/constants.py +116 -0
  639. rasa/utils/tensorflow/crf.py +492 -0
  640. rasa/utils/tensorflow/data_generator.py +440 -0
  641. rasa/utils/tensorflow/environment.py +161 -0
  642. rasa/utils/tensorflow/exceptions.py +5 -0
  643. rasa/utils/tensorflow/feature_array.py +366 -0
  644. rasa/utils/tensorflow/layers.py +1565 -0
  645. rasa/utils/tensorflow/layers_utils.py +113 -0
  646. rasa/utils/tensorflow/metrics.py +281 -0
  647. rasa/utils/tensorflow/model_data.py +798 -0
  648. rasa/utils/tensorflow/model_data_utils.py +499 -0
  649. rasa/utils/tensorflow/models.py +935 -0
  650. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  651. rasa/utils/tensorflow/transformer.py +640 -0
  652. rasa/utils/tensorflow/types.py +6 -0
  653. rasa/utils/train_utils.py +572 -0
  654. rasa/utils/url_tools.py +53 -0
  655. rasa/utils/yaml.py +54 -0
  656. rasa/validator.py +1337 -0
  657. rasa/version.py +3 -0
  658. rasa_pro-3.9.18.dist-info/METADATA +563 -0
  659. rasa_pro-3.9.18.dist-info/NOTICE +5 -0
  660. rasa_pro-3.9.18.dist-info/RECORD +662 -0
  661. rasa_pro-3.9.18.dist-info/WHEEL +4 -0
  662. rasa_pro-3.9.18.dist-info/entry_points.txt +3 -0
rasa/cli/evaluate.py ADDED
@@ -0,0 +1,222 @@
1
+ import argparse
2
+ from typing import List, Text, Optional
3
+ from pathlib import Path
4
+
5
+ from rasa import telemetry
6
+ from rasa.core.utils import AvailableEndpoints
7
+ from rasa.core.tracker_store import TrackerStore
8
+ from rasa.core.evaluation.marker_tracker_loader import MarkerTrackerLoader
9
+ from rasa.core.evaluation.marker_base import Marker, OperatorMarker
10
+ from rasa.shared.core.domain import Domain
11
+ from rasa.cli import SubParsersAction
12
+ import rasa.cli.arguments.evaluate as arguments
13
+ import rasa.shared.utils.cli
14
+
15
+ STATS_OVERALL_SUFFIX = "-overall.csv"
16
+ STATS_SESSION_SUFFIX = "-per-session.csv"
17
+
18
+
19
+ def add_subparser(
20
+ subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
21
+ ) -> None:
22
+ """Add all evaluate parsers.
23
+
24
+ Args:
25
+ subparsers: subparser we are going to attach to
26
+ parents: Parent parsers, needed to ensure tree structure in argparse
27
+ """
28
+ evaluate_parser = subparsers.add_parser(
29
+ "evaluate",
30
+ parents=parents,
31
+ conflict_handler="resolve",
32
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
33
+ help="Tools for evaluating models.",
34
+ )
35
+
36
+ evaluate_subparsers = evaluate_parser.add_subparsers()
37
+
38
+ marker_parser = evaluate_subparsers.add_parser(
39
+ "markers",
40
+ parents=parents,
41
+ conflict_handler="resolve",
42
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
43
+ help="Applies marker conditions to existing trackers.",
44
+ )
45
+
46
+ markers_subparser = marker_parser.add_subparsers(dest="strategy")
47
+
48
+ markers_first_n_subparser = markers_subparser.add_parser(
49
+ "first_n",
50
+ parents=parents,
51
+ conflict_handler="resolve",
52
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
53
+ help="Select trackers sequentially until N are taken.",
54
+ )
55
+ arguments.set_markers_first_n_arguments(markers_first_n_subparser)
56
+
57
+ arguments.set_markers_arguments(markers_first_n_subparser)
58
+
59
+ markers_sample_subparser = markers_subparser.add_parser(
60
+ "sample_n",
61
+ parents=parents,
62
+ conflict_handler="resolve",
63
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
64
+ help="Select trackers by sampling N.",
65
+ )
66
+ arguments.set_markers_sample_arguments(markers_sample_subparser)
67
+
68
+ arguments.set_markers_arguments(markers_sample_subparser)
69
+
70
+ markers_all_subparser = markers_subparser.add_parser(
71
+ "all",
72
+ parents=parents,
73
+ conflict_handler="resolve",
74
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
75
+ help="Select all trackers.",
76
+ )
77
+
78
+ arguments.set_markers_arguments(markers_all_subparser)
79
+
80
+ marker_parser.set_defaults(func=_run_markers_cli)
81
+
82
+
83
+ def _run_markers_cli(args: argparse.Namespace) -> None:
84
+ """Run markers algorithm using parameters from CLI.
85
+
86
+ Args:
87
+ args: The arguments passed in from the CLI.
88
+ """
89
+ seed = args.seed if "seed" in args else None
90
+ count = args.count if "count" in args else None
91
+
92
+ stats_file_prefix = args.stats_file_prefix if args.stats else None
93
+
94
+ _run_markers(
95
+ seed,
96
+ count,
97
+ args.endpoints,
98
+ args.domain,
99
+ args.strategy,
100
+ args.config,
101
+ args.output_filename,
102
+ stats_file_prefix,
103
+ )
104
+
105
+
106
+ def _run_markers(
107
+ seed: Optional[int],
108
+ count: Optional[int],
109
+ endpoint_config: Path,
110
+ domain_path: Optional[Text],
111
+ strategy: Text,
112
+ config: Path,
113
+ output_filename: Path,
114
+ stats_file_prefix: Optional[Path] = None,
115
+ ) -> None:
116
+ """Run markers algorithm over specified config and tracker store.
117
+
118
+ Args:
119
+ seed: (Optional) The seed to initialise the random number generator for
120
+ use with the 'sample' strategy.
121
+ count: (Optional) Number of trackers to extract from (for any strategy
122
+ except 'all').
123
+ endpoint_config: Path to the endpoint configuration defining the tracker
124
+ store to use.
125
+ domain_path: Path to the domain specification to use when validating the
126
+ marker definitions.
127
+ strategy: Strategy to use when selecting trackers to extract from.
128
+ config: Path to the markers definition file to use.
129
+ output_filename: Path to write out the extracted markers.
130
+ stats_file_prefix: (Optional) A prefix used to create paths where files with
131
+ statistics on the marker extraction results will be written.
132
+ It must consists of the path to the where those files should be stored
133
+ and the common file prefix, e.g. '<path-to-stats-folder>/statistics'.
134
+ Statistics derived from all marker extractions will be stored in
135
+ '<path-to-stats-folder>/statistics-overall.csv', while the statistics
136
+ computed per session will be stored in
137
+ '<path-to-stats-folder>/statistics-per-session.csv'.
138
+ """
139
+ telemetry.track_markers_extraction_initiated(
140
+ strategy=strategy,
141
+ only_extract=stats_file_prefix is not None,
142
+ seed=seed is not None,
143
+ count=count,
144
+ )
145
+
146
+ domain = Domain.load(domain_path) if domain_path else None
147
+ markers = Marker.from_path(config)
148
+ if domain and not markers.validate_against_domain(domain):
149
+ rasa.shared.utils.cli.print_error_and_exit(
150
+ "Validation errors were found in the markers definition. "
151
+ "Please see errors listed above and fix before running again."
152
+ )
153
+
154
+ # Calculate telemetry
155
+ # All loaded markers are combined with one virtual OR over all markers
156
+ num_markers = len(markers.sub_markers)
157
+ max_depth = markers.max_depth() - 1
158
+ # Find maximum branching of marker
159
+ branching_factor = max(
160
+ (
161
+ len(sub_marker.sub_markers)
162
+ for marker in markers.sub_markers
163
+ for sub_marker in marker.flatten()
164
+ if isinstance(sub_marker, OperatorMarker)
165
+ ),
166
+ default=0,
167
+ )
168
+
169
+ telemetry.track_markers_parsed_count(num_markers, max_depth, branching_factor)
170
+
171
+ tracker_loader = _create_tracker_loader(
172
+ endpoint_config, strategy, domain, count, seed
173
+ )
174
+
175
+ def _append_suffix(path: Optional[Path], suffix: Text) -> Optional[Path]:
176
+ return path.parent / (path.name + suffix) if path else None
177
+
178
+ try:
179
+ import asyncio
180
+
181
+ asyncio.run(
182
+ markers.evaluate_trackers(
183
+ trackers=tracker_loader.load(),
184
+ output_file=output_filename,
185
+ session_stats_file=_append_suffix(
186
+ stats_file_prefix, STATS_SESSION_SUFFIX
187
+ ),
188
+ overall_stats_file=_append_suffix(
189
+ stats_file_prefix, STATS_OVERALL_SUFFIX
190
+ ),
191
+ )
192
+ )
193
+ except (FileExistsError, NotADirectoryError) as e:
194
+ rasa.shared.utils.cli.print_error_and_exit(message=str(e))
195
+
196
+
197
+ def _create_tracker_loader(
198
+ endpoint_config: Text,
199
+ strategy: Text,
200
+ domain: Domain,
201
+ count: Optional[int],
202
+ seed: Optional[int],
203
+ ) -> MarkerTrackerLoader:
204
+ """Create a tracker loader against the configured tracker store.
205
+
206
+ Args:
207
+ endpoint_config: Path to the endpoint configuration defining the tracker
208
+ store to use.
209
+ strategy: Strategy to use when selecting trackers to extract from.
210
+ domain: The domain to use when connecting to the tracker store.
211
+ count: (Optional) Number of trackers to extract from (for any strategy
212
+ except 'all').
213
+ seed: (Optional) The seed to initialise the random number generator for
214
+ use with the 'sample_n' strategy.
215
+
216
+ Returns:
217
+ A MarkerTrackerLoader object configured with the specified strategy against
218
+ the configured tracker store.
219
+ """
220
+ endpoints = AvailableEndpoints.read_endpoints(endpoint_config)
221
+ tracker_store = TrackerStore.create(endpoints.tracker_store, domain=domain)
222
+ return MarkerTrackerLoader(tracker_store, strategy, count, seed)
rasa/cli/export.py ADDED
@@ -0,0 +1,250 @@
1
+ import argparse
2
+ import asyncio
3
+ import logging
4
+ import typing
5
+ from typing import List, Text, Optional
6
+
7
+ from rasa import telemetry
8
+ from rasa.cli import SubParsersAction
9
+ import rasa.core.utils
10
+ import rasa.shared.utils.cli
11
+ import rasa.utils.common
12
+ from rasa.cli.arguments import export as arguments
13
+ from rasa.shared.constants import DOCS_URL_EVENT_BROKERS, DOCS_URL_TRACKER_STORES
14
+ from rasa.exceptions import PublishingError
15
+ from rasa.shared.exceptions import RasaException
16
+ from rasa.core.brokers.pika import PikaEventBroker
17
+
18
+ if typing.TYPE_CHECKING:
19
+ from rasa.core.brokers.broker import EventBroker
20
+ from rasa.core.tracker_store import TrackerStore
21
+ from rasa.core.exporter import Exporter
22
+ from rasa.core.utils import AvailableEndpoints
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+
27
+ def add_subparser(
28
+ subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
29
+ ) -> None:
30
+ """Add subparser for `rasa export`.
31
+
32
+ Args:
33
+ subparsers: Subparsers action object to which `argparse.ArgumentParser`
34
+ objects can be added.
35
+ parents: `argparse.ArgumentParser` objects whose arguments should also be
36
+ included.
37
+ """
38
+ export_parser = subparsers.add_parser(
39
+ "export",
40
+ parents=parents,
41
+ conflict_handler="resolve",
42
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
43
+ help="Export conversations using an event broker.",
44
+ )
45
+ export_parser.set_defaults(func=export_trackers)
46
+
47
+ arguments.set_export_arguments(export_parser)
48
+
49
+
50
+ def _get_tracker_store(endpoints: "AvailableEndpoints") -> "TrackerStore":
51
+ """Get `TrackerStore` from `endpoints`.
52
+
53
+ Prints an error and exits if no tracker store could be loaded.
54
+
55
+ Args:
56
+ endpoints: `AvailableEndpoints` to initialize the tracker store from.
57
+
58
+ Returns:
59
+ Initialized tracker store.
60
+
61
+ """
62
+ if not endpoints.tracker_store:
63
+ rasa.shared.utils.cli.print_error_and_exit(
64
+ f"Could not find a `tracker_store` section in the supplied "
65
+ f"endpoints file. Instructions on how to configure a tracker store "
66
+ f"can be found here: {DOCS_URL_TRACKER_STORES}. "
67
+ f"Exiting. "
68
+ )
69
+
70
+ from rasa.core.tracker_store import TrackerStore
71
+
72
+ return TrackerStore.create(endpoints.tracker_store)
73
+
74
+
75
+ async def _get_event_broker(endpoints: "AvailableEndpoints") -> "EventBroker":
76
+ """Get `EventBroker` from `endpoints`.
77
+
78
+ Prints an error and exits if no event broker could be loaded.
79
+
80
+ Args:
81
+ endpoints: `AvailableEndpoints` to initialize the event broker from.
82
+
83
+ Returns:
84
+ Initialized event broker.
85
+
86
+ """
87
+ from rasa.core.brokers.broker import EventBroker
88
+
89
+ broker = await EventBroker.create(endpoints.event_broker)
90
+
91
+ if not broker:
92
+ rasa.shared.utils.cli.print_error_and_exit(
93
+ f"Could not find an `event_broker` section in the supplied "
94
+ f"endpoints file. Instructions on how to configure an event broker "
95
+ f"can be found here: {DOCS_URL_EVENT_BROKERS}. Exiting."
96
+ )
97
+ return broker
98
+
99
+
100
+ def _get_requested_conversation_ids(
101
+ conversation_ids_arg: Optional[Text] = None,
102
+ ) -> Optional[List[Text]]:
103
+ """Get list of conversation IDs requested as a command-line argument.
104
+
105
+ Args:
106
+ conversation_ids_arg: Value of `--conversation-ids` command-line argument.
107
+ If provided, this is a string of comma-separated conversation IDs.
108
+
109
+ Return:
110
+ List of conversation IDs requested as a command-line argument.
111
+ `None` if that argument was left unspecified.
112
+
113
+ """
114
+ if not conversation_ids_arg:
115
+ return None
116
+
117
+ return conversation_ids_arg.split(",")
118
+
119
+
120
+ def _assert_max_timestamp_is_greater_than_min_timestamp(
121
+ args: argparse.Namespace,
122
+ ) -> None:
123
+ """Inspect CLI timestamp parameters.
124
+
125
+ Prints an error and exits if a maximum timestamp is provided that is smaller
126
+ than the provided minimum timestamp.
127
+
128
+ Args:
129
+ args: Command-line arguments to process.
130
+
131
+ """
132
+ min_timestamp = args.minimum_timestamp
133
+ max_timestamp = args.maximum_timestamp
134
+
135
+ if (
136
+ min_timestamp is not None
137
+ and max_timestamp is not None
138
+ and max_timestamp < min_timestamp
139
+ ):
140
+ rasa.shared.utils.cli.print_error_and_exit(
141
+ f"Maximum timestamp '{max_timestamp}' is smaller than minimum "
142
+ f"timestamp '{min_timestamp}'. Exiting."
143
+ )
144
+
145
+
146
+ def _prepare_event_broker(event_broker: "EventBroker") -> None:
147
+ """Prepares event broker to export tracker events.
148
+
149
+ Sets `should_keep_unpublished_messages` flag to `False` if
150
+ `self.event_broker` is a `PikaEventBroker`.
151
+
152
+ If publishing of events fails, the `PikaEventBroker` instance should not keep a
153
+ list of unpublished messages, so we can retry publishing them. This is because
154
+ the instance is launched as part of this short-lived export script, meaning the
155
+ object is destroyed before it might be published.
156
+
157
+ In addition, wait until the event broker reports a `ready` state.
158
+
159
+ """
160
+ if isinstance(event_broker, PikaEventBroker):
161
+ event_broker.should_keep_unpublished_messages = False
162
+ event_broker.raise_on_failure = True
163
+
164
+ if not event_broker.is_ready():
165
+ rasa.shared.utils.cli.print_error_and_exit(
166
+ f"Event broker of type '{type(event_broker)}' is not ready. Exiting."
167
+ )
168
+
169
+
170
+ def export_trackers(args: argparse.Namespace) -> None:
171
+ """Export events for a connected tracker store using an event broker.
172
+
173
+ Args:
174
+ args: Command-line arguments to process.
175
+ """
176
+ asyncio.run(_export_trackers(args))
177
+
178
+
179
+ async def _export_trackers(args: argparse.Namespace) -> None:
180
+ _assert_max_timestamp_is_greater_than_min_timestamp(args)
181
+
182
+ endpoints = rasa.core.utils.read_endpoints_from_path(args.endpoints)
183
+ tracker_store = _get_tracker_store(endpoints)
184
+ event_broker = await _get_event_broker(endpoints)
185
+ _prepare_event_broker(event_broker)
186
+ requested_conversation_ids = _get_requested_conversation_ids(args.conversation_ids)
187
+
188
+ from rasa.core.exporter import Exporter
189
+
190
+ exporter = Exporter(
191
+ tracker_store,
192
+ event_broker,
193
+ args.endpoints,
194
+ requested_conversation_ids,
195
+ args.minimum_timestamp,
196
+ args.maximum_timestamp,
197
+ args.offset_timestamps_by_seconds,
198
+ )
199
+
200
+ try:
201
+ published_events = await exporter.publish_events()
202
+ telemetry.track_tracker_export(published_events, tracker_store, event_broker)
203
+ rasa.shared.utils.cli.print_success(
204
+ f"Done! Successfully published {published_events} events 🎉"
205
+ )
206
+
207
+ except PublishingError as e:
208
+ command = _get_continuation_command(exporter, e.timestamp)
209
+ rasa.shared.utils.cli.print_error_and_exit(
210
+ f"Encountered error while publishing event with timestamp '{e}'. To "
211
+ f"continue where I left off, run the following command:"
212
+ f"\n\n\t{command}\n\nExiting."
213
+ )
214
+
215
+ except RasaException as e:
216
+ rasa.shared.utils.cli.print_error_and_exit(str(e))
217
+
218
+
219
+ def _get_continuation_command(exporter: "Exporter", timestamp: float) -> Text:
220
+ """Build CLI command to continue 'rasa export' where it was interrupted.
221
+
222
+ Called when event publishing stops due to an error.
223
+
224
+ Args:
225
+ exporter: Exporter object containing objects relevant for this export.
226
+ timestamp: Timestamp of the last event attempted to be published.
227
+
228
+ """
229
+ # build CLI command command based on supplied timestamp and options
230
+ command = "rasa export"
231
+
232
+ if exporter.endpoints_path is not None:
233
+ command += f" --endpoints {exporter.endpoints_path}"
234
+
235
+ command += f" --minimum-timestamp {timestamp}"
236
+
237
+ if exporter.maximum_timestamp is not None:
238
+ command += f" --maximum-timestamp {exporter.maximum_timestamp}"
239
+
240
+ if exporter.requested_conversation_ids:
241
+ command += (
242
+ f" --conversation-ids {','.join(exporter.requested_conversation_ids)}"
243
+ )
244
+
245
+ if exporter.offset_timestamps_by_seconds is not None:
246
+ command += (
247
+ f" --offset-timestamps-by-seconds {exporter.offset_timestamps_by_seconds}"
248
+ )
249
+
250
+ return command
rasa/cli/inspect.py ADDED
@@ -0,0 +1,63 @@
1
+ import argparse
2
+ import webbrowser
3
+ from asyncio import AbstractEventLoop
4
+ from typing import List, Text
5
+
6
+ from rasa.cli import SubParsersAction
7
+ from rasa.cli.arguments import shell as arguments
8
+ from rasa.core import constants
9
+ from sanic import Sanic
10
+
11
+ from rasa.utils.cli import remove_argument_from_parser
12
+
13
+
14
+ def add_subparser(
15
+ subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
16
+ ) -> None:
17
+ """Add all inspect parsers.
18
+
19
+ Args:
20
+ subparsers: subparser we are going to attach to
21
+ parents: Parent parsers, needed to ensure tree structure in argparse
22
+ """
23
+ inspect_parser = subparsers.add_parser(
24
+ "inspect",
25
+ parents=parents,
26
+ conflict_handler="resolve",
27
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
28
+ help=(
29
+ "Loads your trained model and lets you talk to your "
30
+ "assistant in the browser."
31
+ ),
32
+ )
33
+ inspect_parser.set_defaults(func=inspect)
34
+
35
+ arguments.set_shell_arguments(inspect_parser)
36
+ # it'd be confusing to expose those arguments to the user,
37
+ # so we remove them
38
+ remove_argument_from_parser(inspect_parser, "--credentials")
39
+ remove_argument_from_parser(inspect_parser, "--connector")
40
+ remove_argument_from_parser(inspect_parser, "--enable-api")
41
+
42
+
43
+ async def open_inspector_in_browser(server_url: Text) -> None:
44
+ """Opens the rasa inspector in the default browser."""
45
+ webbrowser.open(f"{server_url}/webhooks/inspector/inspect.html")
46
+
47
+
48
+ def inspect(args: argparse.Namespace) -> None:
49
+ """Inspect the bot using the most recent model."""
50
+ import rasa.cli.run
51
+
52
+ async def after_start_hook_open_inspector(_: Sanic, __: AbstractEventLoop) -> None:
53
+ """Hook to open the browser on server start."""
54
+ server_url = constants.DEFAULT_SERVER_FORMAT.format("http", args.port)
55
+ await open_inspector_in_browser(server_url)
56
+
57
+ # the following arguments are not exposed to the user
58
+ args.connector = "rasa.core.channels.development_inspector.DevelopmentInspectInput"
59
+ args.enable_api = True
60
+ args.credentials = None
61
+ args.server_listeners = [(after_start_hook_open_inspector, "after_server_start")]
62
+
63
+ rasa.cli.run.run(args)
@@ -0,0 +1,164 @@
1
+ import argparse
2
+ import logging
3
+ import os
4
+ from pathlib import Path
5
+ from typing import List, Optional, Text, Union
6
+
7
+ from rasa import model
8
+ from rasa.cli import SubParsersAction
9
+ from rasa.cli.arguments import interactive as arguments
10
+ import rasa.cli.train as train
11
+ import rasa.cli.utils
12
+ from rasa.engine.storage.local_model_storage import LocalModelStorage
13
+ from rasa.shared.constants import (
14
+ ASSISTANT_ID_DEFAULT_VALUE,
15
+ ASSISTANT_ID_KEY,
16
+ DEFAULT_ENDPOINTS_PATH,
17
+ DEFAULT_MODELS_PATH,
18
+ )
19
+ from rasa.shared.data import TrainingType
20
+ from rasa.shared.importers.importer import TrainingDataImporter
21
+ import rasa.shared.utils.cli
22
+ import rasa.utils.common
23
+
24
+
25
+ logger = logging.getLogger(__name__)
26
+
27
+
28
+ def add_subparser(
29
+ subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
30
+ ) -> None:
31
+ """Add all interactive cli parsers.
32
+
33
+ Args:
34
+ subparsers: subparser we are going to attach to
35
+ parents: Parent parsers, needed to ensure tree structure in argparse
36
+ """
37
+ interactive_parser = subparsers.add_parser(
38
+ "interactive",
39
+ conflict_handler="resolve",
40
+ parents=parents,
41
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
42
+ help="Starts an interactive learning session to create new training data for a "
43
+ "Rasa model by chatting.",
44
+ )
45
+ interactive_parser.set_defaults(func=interactive, core_only=False)
46
+
47
+ interactive_subparsers = interactive_parser.add_subparsers()
48
+ interactive_core_parser = interactive_subparsers.add_parser(
49
+ "core",
50
+ conflict_handler="resolve",
51
+ parents=parents,
52
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
53
+ help="Starts an interactive learning session model to create new training data "
54
+ "for a Rasa Core model by chatting. Uses the 'RegexMessageHandler', i.e. "
55
+ "`/<intent>` input format.",
56
+ )
57
+ interactive_core_parser.set_defaults(func=interactive, core_only=True)
58
+
59
+ arguments.set_interactive_arguments(interactive_parser)
60
+ arguments.set_interactive_core_arguments(interactive_core_parser)
61
+
62
+
63
+ def interactive(args: argparse.Namespace) -> None:
64
+ _set_not_required_args(args)
65
+ file_importer = TrainingDataImporter.load_from_config(
66
+ args.config, args.domain, args.data if not args.core_only else [args.stories]
67
+ )
68
+
69
+ if args.model is None:
70
+ story_graph = file_importer.get_stories()
71
+ if not story_graph or story_graph.is_empty():
72
+ rasa.shared.utils.cli.print_error_and_exit(
73
+ "Could not run interactive learning without either core "
74
+ "data or a model containing core data."
75
+ )
76
+
77
+ zipped_model: Optional[Union[Text, Path]] = (
78
+ train.run_core_training(args)
79
+ if args.core_only
80
+ else train.run_training(args)
81
+ )
82
+ if not zipped_model:
83
+ rasa.shared.utils.cli.print_error_and_exit(
84
+ "Could not train an initial model. Either pass paths "
85
+ "to the relevant training files (`--data`, `--config`, `--domain`), "
86
+ "or use 'rasa train' to train a model."
87
+ )
88
+ else:
89
+ validate_assistant_id_key_in_config(file_importer)
90
+
91
+ zipped_model = get_provided_model(args.model)
92
+ if not (zipped_model and os.path.exists(zipped_model)):
93
+ rasa.shared.utils.cli.print_error_and_exit(
94
+ f"Interactive learning process cannot be started as no "
95
+ f"initial model was found at path '{args.model}'. "
96
+ f"Use 'rasa train' to train a model."
97
+ )
98
+ if not args.skip_visualization:
99
+ logger.info(f"Loading visualization data from {args.data}.")
100
+
101
+ perform_interactive_learning(args, zipped_model, file_importer)
102
+
103
+
104
+ def _set_not_required_args(args: argparse.Namespace) -> None:
105
+ args.fixed_model_name = None
106
+ args.store_uncompressed = False
107
+ args.dry_run = False
108
+ args.skip_validation = True
109
+ args.fail_on_validation_warnings = False
110
+ args.validation_max_history = None
111
+
112
+
113
+ def perform_interactive_learning(
114
+ args: argparse.Namespace,
115
+ zipped_model: Union[Text, "Path"],
116
+ file_importer: TrainingDataImporter,
117
+ ) -> None:
118
+ """Performs interactive learning.
119
+
120
+ Args:
121
+ args: Namespace arguments.
122
+ zipped_model: Path to zipped model.
123
+ file_importer: File importer which provides the training data and model config.
124
+ """
125
+ from rasa.core.train import do_interactive_learning
126
+
127
+ args.model = str(zipped_model)
128
+
129
+ metadata = LocalModelStorage.metadata_from_archive(zipped_model)
130
+ if metadata.training_type == TrainingType.NLU:
131
+ rasa.shared.utils.cli.print_error_and_exit(
132
+ "Can not run interactive learning on an NLU-only model."
133
+ )
134
+
135
+ args.endpoints = rasa.cli.utils.get_validated_path(
136
+ args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
137
+ )
138
+
139
+ do_interactive_learning(args, file_importer)
140
+
141
+
142
+ def get_provided_model(arg_model: Text) -> Optional[Union[Text, Path]]:
143
+ """Checks model path input and selects model from it."""
144
+ model_path = rasa.cli.utils.get_validated_path(
145
+ arg_model, "model", DEFAULT_MODELS_PATH
146
+ )
147
+
148
+ return (
149
+ model.get_latest_model(model_path) if os.path.isdir(model_path) else model_path
150
+ )
151
+
152
+
153
+ def validate_assistant_id_key_in_config(file_importer: TrainingDataImporter) -> None:
154
+ """Verifies that config contains a unique value for assistant identifier."""
155
+ config_data = file_importer.get_config()
156
+ assistant_id = config_data.get(ASSISTANT_ID_KEY)
157
+
158
+ if assistant_id is None or assistant_id == ASSISTANT_ID_DEFAULT_VALUE:
159
+ rasa.shared.utils.cli.print_error_and_exit(
160
+ f"The '{ASSISTANT_ID_KEY}' key in the config file is either missing or "
161
+ f"is set to the default value. Please replace the placeholder default "
162
+ f"value and re-train the model."
163
+ )
164
+ return None