rasa-pro 3.11.4__py3-none-any.whl → 3.12.0__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 (580) hide show
  1. README.md +10 -13
  2. rasa/__main__.py +7 -7
  3. rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
  4. rasa/anonymization/anonymization_pipeline.py +3 -3
  5. rasa/anonymization/anonymization_rule_executor.py +17 -11
  6. rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
  7. rasa/cli/arguments/data.py +2 -2
  8. rasa/cli/arguments/default_arguments.py +1 -1
  9. rasa/cli/arguments/evaluate.py +2 -1
  10. rasa/cli/arguments/interactive.py +1 -1
  11. rasa/cli/arguments/run.py +1 -1
  12. rasa/cli/arguments/test.py +7 -5
  13. rasa/cli/arguments/train.py +3 -3
  14. rasa/cli/arguments/visualize.py +2 -2
  15. rasa/cli/arguments/x.py +1 -0
  16. rasa/cli/data.py +20 -3
  17. rasa/cli/dialogue_understanding_test.py +386 -0
  18. rasa/cli/evaluate.py +1 -1
  19. rasa/cli/export.py +6 -6
  20. rasa/cli/inspect.py +20 -1
  21. rasa/cli/interactive.py +4 -5
  22. rasa/cli/llm_fine_tuning.py +51 -16
  23. rasa/cli/markers.py +1 -2
  24. rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
  25. rasa/cli/project_templates/calm/config.yml +2 -2
  26. rasa/cli/project_templates/calm/domain/list_contacts.yml +1 -2
  27. rasa/cli/project_templates/calm/domain/remove_contact.yml +1 -2
  28. rasa/cli/project_templates/calm/domain/shared.yml +1 -4
  29. rasa/cli/project_templates/calm/endpoints.yml +2 -2
  30. rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
  31. rasa/cli/shell.py +5 -6
  32. rasa/cli/studio/download.py +1 -2
  33. rasa/cli/studio/studio.py +2 -3
  34. rasa/cli/studio/train.py +0 -1
  35. rasa/cli/telemetry.py +2 -2
  36. rasa/cli/test.py +11 -11
  37. rasa/cli/train.py +3 -0
  38. rasa/cli/utils.py +25 -5
  39. rasa/constants.py +0 -1
  40. rasa/core/__init__.py +0 -1
  41. rasa/core/actions/action.py +137 -208
  42. rasa/core/actions/action_handle_digressions.py +164 -0
  43. rasa/core/actions/action_hangup.py +1 -1
  44. rasa/core/actions/action_repeat_bot_messages.py +2 -2
  45. rasa/core/actions/action_run_slot_rejections.py +18 -6
  46. rasa/core/actions/action_trigger_chitchat.py +1 -1
  47. rasa/core/actions/action_trigger_flow.py +5 -5
  48. rasa/core/actions/action_trigger_search.py +1 -1
  49. rasa/core/actions/custom_action_executor.py +1 -1
  50. rasa/core/actions/direct_custom_actions_executor.py +1 -0
  51. rasa/core/actions/forms.py +22 -15
  52. rasa/core/actions/http_custom_action_executor.py +8 -1
  53. rasa/core/actions/loops.py +3 -3
  54. rasa/core/actions/two_stage_fallback.py +13 -13
  55. rasa/core/auth_retry_tracker_store.py +1 -2
  56. rasa/core/brokers/broker.py +2 -1
  57. rasa/core/brokers/file.py +1 -1
  58. rasa/core/brokers/kafka.py +8 -8
  59. rasa/core/brokers/pika.py +8 -9
  60. rasa/core/brokers/sql.py +4 -3
  61. rasa/core/channels/__init__.py +7 -0
  62. rasa/core/channels/botframework.py +2 -2
  63. rasa/core/channels/callback.py +4 -4
  64. rasa/core/channels/channel.py +11 -11
  65. rasa/core/channels/console.py +0 -1
  66. rasa/core/channels/development_inspector.py +80 -24
  67. rasa/core/channels/facebook.py +5 -5
  68. rasa/core/channels/hangouts.py +7 -8
  69. rasa/core/channels/inspector/dist/assets/Tableau10-1b767f5e.js +1 -0
  70. rasa/core/channels/inspector/dist/assets/arc-9f1365dc.js +1 -0
  71. rasa/core/channels/inspector/dist/assets/blockDiagram-38ab4fdb-e0f81b12.js +118 -0
  72. rasa/core/channels/inspector/dist/assets/c4Diagram-3d4e48cf-9deaee1c.js +10 -0
  73. rasa/core/channels/inspector/dist/assets/channel-44956714.js +1 -0
  74. rasa/core/channels/inspector/dist/assets/classDiagram-70f12bd4-20450a96.js +2 -0
  75. rasa/core/channels/inspector/dist/assets/classDiagram-v2-f2320105-749d2abf.js +2 -0
  76. rasa/core/channels/inspector/dist/assets/clone-a9475142.js +1 -0
  77. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-89c73b31.js → createText-2e5e7dd3-bef0b38c.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/edges-e0da2a9e-943801a7.js +4 -0
  79. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-907e0440.js → erDiagram-9861fffd-d523a948.js} +4 -4
  80. rasa/core/channels/inspector/dist/assets/flowDb-956e92f1-54e4cf19.js +10 -0
  81. rasa/core/channels/inspector/dist/assets/flowDiagram-66a62f08-48bfbbe8.js +4 -0
  82. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-43fa749a.js +1 -0
  83. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-4a651766-17c30827.js +139 -0
  84. rasa/core/channels/inspector/dist/assets/ganttDiagram-c361ad54-43086f2d.js +257 -0
  85. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-72cf32ee-5c8b693e.js +70 -0
  86. rasa/core/channels/inspector/dist/assets/graph-41a90d26.js +1 -0
  87. rasa/core/channels/inspector/dist/assets/index-3862675e-b43eeae9.js +1 -0
  88. rasa/core/channels/inspector/dist/assets/{index-e793d777.js → index-e8affe45.js} +201 -196
  89. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-8ceba4db.js → infoDiagram-f8f76790-0b20676b.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-960d3809.js → journeyDiagram-49397b02-39bce7b5.js} +4 -4
  91. rasa/core/channels/inspector/dist/assets/katex-498eb57e.js +261 -0
  92. rasa/core/channels/inspector/dist/assets/layout-dc8eeea4.js +1 -0
  93. rasa/core/channels/inspector/dist/assets/{line-eeccc4e2.js → line-c4d2e756.js} +1 -1
  94. rasa/core/channels/inspector/dist/assets/linear-86f6f2d9.js +1 -0
  95. rasa/core/channels/inspector/dist/assets/mindmap-definition-fc14e90a-4216f771.js +312 -0
  96. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-dc9b5e1b.js → pieDiagram-8a3498a8-1a0cfa96.js} +7 -7
  97. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-a08cba6d.js → quadrantDiagram-120e2f19-f91e67cf.js} +1 -1
  98. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-87242b9e.js → requirementDiagram-deff3bca-d4046bed.js} +2 -2
  99. rasa/core/channels/inspector/dist/assets/sankeyDiagram-04a897e0-2cf6d1d7.js +8 -0
  100. rasa/core/channels/inspector/dist/assets/sequenceDiagram-704730f1-751ac4f5.js +122 -0
  101. rasa/core/channels/inspector/dist/assets/stateDiagram-587899a1-f734f4d4.js +1 -0
  102. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-d93cdb3a-91c65710.js +1 -0
  103. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-cef936a6.js → styles-6aaf32cf-e0cff7be.js} +1 -1
  104. rasa/core/channels/inspector/dist/assets/styles-9a916d00-c8029e5d.js +160 -0
  105. rasa/core/channels/inspector/dist/assets/styles-c10674c1-114f312a.js +116 -0
  106. rasa/core/channels/inspector/dist/assets/svgDrawCommon-08f97a94-b7b9dc00.js +1 -0
  107. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-0d39bdb2.js → timeline-definition-85554ec2-9536d189.js} +3 -3
  108. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-a03fa445.js → xychartDiagram-e933f94c-bf3b0f36.js} +3 -3
  109. rasa/core/channels/inspector/dist/index.html +1 -1
  110. rasa/core/channels/inspector/package.json +11 -3
  111. rasa/core/channels/inspector/src/App.tsx +15 -2
  112. rasa/core/channels/inspector/src/components/RasaLogo.tsx +31 -0
  113. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +68 -0
  114. rasa/core/channels/inspector/src/components/Welcome.tsx +19 -13
  115. rasa/core/channels/inspector/yarn.lock +94 -99
  116. rasa/core/channels/mattermost.py +4 -4
  117. rasa/core/channels/rasa_chat.py +4 -4
  118. rasa/core/channels/rest.py +11 -12
  119. rasa/core/channels/rocketchat.py +4 -3
  120. rasa/core/channels/slack.py +6 -5
  121. rasa/core/channels/socketio.py +8 -28
  122. rasa/core/channels/studio_chat.py +212 -0
  123. rasa/core/channels/telegram.py +105 -55
  124. rasa/core/channels/twilio.py +3 -3
  125. rasa/core/channels/vier_cvg.py +2 -2
  126. rasa/core/channels/voice_ready/audiocodes.py +51 -32
  127. rasa/core/channels/voice_ready/jambonz.py +5 -5
  128. rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
  129. rasa/core/channels/voice_ready/twilio_voice.py +9 -8
  130. rasa/core/channels/voice_ready/utils.py +2 -2
  131. rasa/core/channels/voice_stream/asr/asr_engine.py +12 -6
  132. rasa/core/channels/voice_stream/asr/asr_event.py +5 -0
  133. rasa/core/channels/voice_stream/asr/azure.py +16 -3
  134. rasa/core/channels/voice_stream/asr/deepgram.py +76 -19
  135. rasa/core/channels/voice_stream/audiocodes.py +292 -0
  136. rasa/core/channels/voice_stream/browser_audio.py +14 -7
  137. rasa/core/channels/voice_stream/call_state.py +6 -2
  138. rasa/core/channels/voice_stream/genesys.py +320 -0
  139. rasa/core/channels/voice_stream/tts/azure.py +13 -5
  140. rasa/core/channels/voice_stream/tts/cartesia.py +34 -14
  141. rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
  142. rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
  143. rasa/core/channels/voice_stream/twilio_media_streams.py +12 -8
  144. rasa/core/channels/voice_stream/util.py +1 -1
  145. rasa/core/channels/voice_stream/voice_channel.py +100 -56
  146. rasa/core/channels/webexteams.py +3 -4
  147. rasa/core/constants.py +2 -0
  148. rasa/core/evaluation/marker.py +7 -6
  149. rasa/core/evaluation/marker_base.py +15 -16
  150. rasa/core/evaluation/marker_stats.py +3 -4
  151. rasa/core/evaluation/marker_tracker_loader.py +5 -4
  152. rasa/core/exporter.py +4 -4
  153. rasa/core/featurizers/precomputation.py +8 -8
  154. rasa/core/featurizers/single_state_featurizer.py +7 -7
  155. rasa/core/featurizers/tracker_featurizers.py +13 -13
  156. rasa/core/http_interpreter.py +3 -4
  157. rasa/core/information_retrieval/__init__.py +1 -1
  158. rasa/core/information_retrieval/faiss.py +4 -4
  159. rasa/core/information_retrieval/information_retrieval.py +2 -2
  160. rasa/core/information_retrieval/milvus.py +3 -3
  161. rasa/core/information_retrieval/qdrant.py +3 -3
  162. rasa/core/jobs.py +1 -0
  163. rasa/core/lock.py +2 -3
  164. rasa/core/lock_store.py +3 -3
  165. rasa/core/migrate.py +12 -9
  166. rasa/core/nlg/__init__.py +1 -1
  167. rasa/core/nlg/callback.py +2 -3
  168. rasa/core/nlg/contextual_response_rephraser.py +82 -14
  169. rasa/core/nlg/generator.py +85 -17
  170. rasa/core/nlg/interpolator.py +4 -3
  171. rasa/core/nlg/response.py +9 -7
  172. rasa/core/nlg/summarize.py +1 -0
  173. rasa/core/nlg/translate.py +55 -0
  174. rasa/core/persistor.py +3 -3
  175. rasa/core/policies/ensemble.py +10 -9
  176. rasa/core/policies/enterprise_search_policy.py +87 -21
  177. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +1 -1
  178. rasa/core/policies/flow_policy.py +13 -14
  179. rasa/core/policies/flows/flow_executor.py +85 -55
  180. rasa/core/policies/intentless_policy.py +6 -7
  181. rasa/core/policies/memoization.py +22 -20
  182. rasa/core/policies/policy.py +24 -22
  183. rasa/core/policies/rule_policy.py +37 -36
  184. rasa/core/policies/ted_policy.py +87 -85
  185. rasa/core/policies/unexpected_intent_policy.py +77 -75
  186. rasa/core/processor.py +167 -74
  187. rasa/core/run.py +5 -4
  188. rasa/core/secrets_manager/endpoints.py +2 -3
  189. rasa/core/secrets_manager/factory.py +2 -3
  190. rasa/core/secrets_manager/secret_manager.py +2 -3
  191. rasa/core/secrets_manager/vault.py +2 -2
  192. rasa/core/test.py +30 -30
  193. rasa/core/tracker_store.py +138 -49
  194. rasa/core/train.py +1 -1
  195. rasa/core/training/__init__.py +2 -2
  196. rasa/core/training/converters/responses_prefix_converter.py +1 -2
  197. rasa/core/training/interactive.py +13 -13
  198. rasa/core/training/story_conflict.py +4 -5
  199. rasa/core/training/training.py +3 -5
  200. rasa/core/utils.py +5 -5
  201. rasa/core/visualize.py +1 -1
  202. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
  203. rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
  204. rasa/dialogue_understanding/commands/__init__.py +22 -22
  205. rasa/dialogue_understanding/commands/can_not_handle_command.py +38 -1
  206. rasa/dialogue_understanding/commands/cancel_flow_command.py +96 -9
  207. rasa/dialogue_understanding/commands/change_flow_command.py +36 -2
  208. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +36 -4
  209. rasa/dialogue_understanding/commands/clarify_command.py +46 -4
  210. rasa/dialogue_understanding/commands/command.py +3 -2
  211. rasa/dialogue_understanding/commands/command_syntax_manager.py +55 -0
  212. rasa/dialogue_understanding/commands/correct_slots_command.py +14 -5
  213. rasa/dialogue_understanding/commands/error_command.py +1 -1
  214. rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
  215. rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
  216. rasa/dialogue_understanding/commands/handle_digressions_command.py +144 -0
  217. rasa/dialogue_understanding/commands/human_handoff_command.py +34 -4
  218. rasa/dialogue_understanding/commands/knowledge_answer_command.py +36 -4
  219. rasa/dialogue_understanding/commands/noop_command.py +2 -1
  220. rasa/dialogue_understanding/commands/prompt_command.py +94 -0
  221. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +34 -4
  222. rasa/dialogue_understanding/commands/restart_command.py +2 -5
  223. rasa/dialogue_understanding/commands/session_end_command.py +3 -5
  224. rasa/dialogue_understanding/commands/session_start_command.py +3 -5
  225. rasa/dialogue_understanding/commands/set_slot_command.py +55 -16
  226. rasa/dialogue_understanding/commands/skip_question_command.py +34 -4
  227. rasa/dialogue_understanding/commands/start_flow_command.py +78 -2
  228. rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
  229. rasa/dialogue_understanding/commands/utils.py +126 -43
  230. rasa/dialogue_understanding/constants.py +2 -0
  231. rasa/dialogue_understanding/generator/__init__.py +2 -0
  232. rasa/dialogue_understanding/generator/command_generator.py +120 -79
  233. rasa/dialogue_understanding/generator/command_parser.py +245 -0
  234. rasa/dialogue_understanding/generator/constants.py +12 -4
  235. rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
  236. rasa/dialogue_understanding/generator/llm_based_command_generator.py +187 -59
  237. rasa/dialogue_understanding/generator/llm_command_generator.py +6 -3
  238. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +106 -110
  239. rasa/dialogue_understanding/generator/nlu_command_adapter.py +53 -11
  240. rasa/dialogue_understanding/generator/prompt_templates/__init__.py +0 -0
  241. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +58 -0
  242. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +57 -0
  243. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +574 -0
  244. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +41 -386
  245. rasa/dialogue_understanding/generator/utils.py +76 -0
  246. rasa/dialogue_understanding/patterns/cancel.py +2 -1
  247. rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
  248. rasa/dialogue_understanding/patterns/chitchat.py +1 -1
  249. rasa/dialogue_understanding/patterns/clarify.py +2 -1
  250. rasa/dialogue_understanding/patterns/code_change.py +2 -0
  251. rasa/dialogue_understanding/patterns/collect_information.py +7 -4
  252. rasa/dialogue_understanding/patterns/completed.py +1 -1
  253. rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -1
  254. rasa/dialogue_understanding/patterns/correction.py +17 -3
  255. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +78 -2
  256. rasa/dialogue_understanding/patterns/handle_digressions.py +81 -0
  257. rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
  258. rasa/dialogue_understanding/patterns/internal_error.py +1 -0
  259. rasa/dialogue_understanding/patterns/search.py +1 -1
  260. rasa/dialogue_understanding/patterns/session_start.py +1 -1
  261. rasa/dialogue_understanding/patterns/skip_question.py +1 -0
  262. rasa/dialogue_understanding/patterns/user_silence.py +1 -1
  263. rasa/dialogue_understanding/patterns/validate_slot.py +65 -0
  264. rasa/dialogue_understanding/processor/command_processor.py +193 -43
  265. rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
  266. rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
  267. rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
  268. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
  269. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
  270. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
  271. rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
  272. rasa/dialogue_understanding/stack/utils.py +56 -10
  273. rasa/dialogue_understanding/utils.py +164 -0
  274. rasa/dialogue_understanding_test/README.md +429 -0
  275. rasa/dialogue_understanding_test/__init__.py +0 -0
  276. rasa/dialogue_understanding_test/command_comparison.py +60 -0
  277. rasa/dialogue_understanding_test/command_metric_calculation.py +122 -0
  278. rasa/dialogue_understanding_test/constants.py +22 -0
  279. rasa/dialogue_understanding_test/du_test_case.py +448 -0
  280. rasa/dialogue_understanding_test/du_test_result.py +390 -0
  281. rasa/dialogue_understanding_test/du_test_runner.py +322 -0
  282. rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
  283. rasa/dialogue_understanding_test/io.py +443 -0
  284. rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
  285. rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
  286. rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
  287. rasa/dialogue_understanding_test/utils.py +70 -0
  288. rasa/dialogue_understanding_test/validation.py +77 -0
  289. rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
  290. rasa/e2e_test/assertions.py +202 -175
  291. rasa/e2e_test/assertions_schema.yml +6 -0
  292. rasa/e2e_test/constants.py +16 -1
  293. rasa/e2e_test/e2e_config.py +102 -41
  294. rasa/e2e_test/e2e_config_schema.yml +28 -10
  295. rasa/e2e_test/e2e_test_case.py +5 -5
  296. rasa/e2e_test/e2e_test_converter.py +2 -3
  297. rasa/e2e_test/e2e_test_coverage_report.py +6 -6
  298. rasa/e2e_test/e2e_test_result.py +1 -1
  299. rasa/e2e_test/e2e_test_runner.py +143 -38
  300. rasa/e2e_test/llm_judge_prompts/answer_relevance_prompt_template.jinja2 +93 -0
  301. rasa/e2e_test/llm_judge_prompts/groundedness_prompt_template.jinja2 +169 -0
  302. rasa/e2e_test/stub_custom_action.py +1 -1
  303. rasa/e2e_test/utils/generative_assertions.py +243 -0
  304. rasa/e2e_test/utils/io.py +123 -93
  305. rasa/e2e_test/utils/validation.py +101 -3
  306. rasa/engine/caching.py +5 -7
  307. rasa/engine/constants.py +1 -1
  308. rasa/engine/graph.py +3 -2
  309. rasa/engine/language.py +182 -0
  310. rasa/engine/recipes/config_files/default_config.yml +4 -0
  311. rasa/engine/recipes/default_components.py +13 -15
  312. rasa/engine/recipes/default_recipe.py +65 -49
  313. rasa/engine/recipes/graph_recipe.py +10 -7
  314. rasa/engine/recipes/recipe.py +2 -2
  315. rasa/engine/runner/dask.py +2 -2
  316. rasa/engine/runner/interface.py +1 -0
  317. rasa/engine/storage/local_model_storage.py +6 -4
  318. rasa/engine/storage/resource.py +2 -1
  319. rasa/engine/storage/storage.py +8 -3
  320. rasa/engine/training/components.py +2 -1
  321. rasa/engine/training/fingerprinting.py +4 -2
  322. rasa/engine/training/graph_trainer.py +4 -4
  323. rasa/engine/training/hooks.py +2 -2
  324. rasa/engine/validation.py +36 -33
  325. rasa/exceptions.py +3 -2
  326. rasa/graph_components/converters/nlu_message_converter.py +3 -3
  327. rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
  328. rasa/graph_components/providers/domain_provider.py +3 -2
  329. rasa/graph_components/providers/flows_provider.py +2 -3
  330. rasa/graph_components/providers/forms_provider.py +4 -4
  331. rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
  332. rasa/graph_components/providers/responses_provider.py +4 -4
  333. rasa/graph_components/providers/rule_only_provider.py +3 -2
  334. rasa/graph_components/providers/story_graph_provider.py +8 -8
  335. rasa/graph_components/providers/training_tracker_provider.py +3 -2
  336. rasa/graph_components/validators/default_recipe_validator.py +16 -16
  337. rasa/graph_components/validators/finetuning_validator.py +10 -8
  338. rasa/hooks.py +19 -14
  339. rasa/jupyter.py +2 -2
  340. rasa/llm_fine_tuning/annotation_module.py +4 -4
  341. rasa/llm_fine_tuning/conversations.py +5 -33
  342. rasa/llm_fine_tuning/llm_data_preparation_module.py +6 -4
  343. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
  344. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +18 -13
  345. rasa/llm_fine_tuning/paraphrasing_module.py +6 -2
  346. rasa/llm_fine_tuning/storage.py +3 -3
  347. rasa/llm_fine_tuning/train_test_split_module.py +27 -27
  348. rasa/llm_fine_tuning/utils.py +7 -0
  349. rasa/markers/marker.py +2 -3
  350. rasa/markers/marker_base.py +1 -2
  351. rasa/markers/upload.py +2 -2
  352. rasa/markers/validate.py +2 -3
  353. rasa/model.py +3 -5
  354. rasa/model_manager/config.py +1 -1
  355. rasa/model_manager/model_api.py +5 -4
  356. rasa/model_manager/runner_service.py +13 -10
  357. rasa/model_manager/socket_bridge.py +15 -9
  358. rasa/model_manager/studio_jwt_auth.py +1 -0
  359. rasa/model_manager/trainer_service.py +9 -7
  360. rasa/model_manager/utils.py +1 -1
  361. rasa/model_manager/warm_rasa_process.py +14 -9
  362. rasa/model_service.py +5 -6
  363. rasa/model_testing.py +13 -15
  364. rasa/model_training.py +29 -29
  365. rasa/nlu/classifiers/diet_classifier.py +72 -73
  366. rasa/nlu/classifiers/fallback_classifier.py +9 -8
  367. rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
  368. rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
  369. rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
  370. rasa/nlu/classifiers/regex_message_handler.py +3 -2
  371. rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
  372. rasa/nlu/convert.py +2 -2
  373. rasa/nlu/emulators/dialogflow.py +3 -3
  374. rasa/nlu/emulators/luis.py +5 -5
  375. rasa/nlu/emulators/no_emulator.py +1 -0
  376. rasa/nlu/emulators/wit.py +4 -4
  377. rasa/nlu/extractors/crf_entity_extractor.py +11 -11
  378. rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
  379. rasa/nlu/extractors/entity_synonyms.py +10 -9
  380. rasa/nlu/extractors/extractor.py +16 -16
  381. rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
  382. rasa/nlu/extractors/regex_entity_extractor.py +11 -10
  383. rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
  384. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
  385. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
  386. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
  387. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
  388. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
  389. rasa/nlu/featurizers/featurizer.py +5 -4
  390. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
  391. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
  392. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
  393. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
  394. rasa/nlu/model.py +0 -1
  395. rasa/nlu/selectors/response_selector.py +67 -68
  396. rasa/nlu/test.py +38 -38
  397. rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
  398. rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
  399. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
  400. rasa/nlu/tokenizers/tokenizer.py +6 -7
  401. rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
  402. rasa/nlu/utils/bilou_utils.py +7 -7
  403. rasa/nlu/utils/hugging_face/registry.py +22 -22
  404. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
  405. rasa/nlu/utils/mitie_utils.py +2 -1
  406. rasa/nlu/utils/pattern_utils.py +1 -1
  407. rasa/nlu/utils/spacy_utils.py +3 -3
  408. rasa/plugin.py +12 -1
  409. rasa/server.py +6 -3
  410. rasa/shared/constants.py +45 -18
  411. rasa/shared/core/command_payload_reader.py +15 -7
  412. rasa/shared/core/constants.py +34 -4
  413. rasa/shared/core/conversation.py +1 -2
  414. rasa/shared/core/domain.py +19 -20
  415. rasa/shared/core/events.py +60 -39
  416. rasa/shared/core/flows/__init__.py +0 -1
  417. rasa/shared/core/flows/constants.py +11 -0
  418. rasa/shared/core/flows/flow.py +107 -26
  419. rasa/shared/core/flows/flow_step.py +4 -3
  420. rasa/shared/core/flows/flow_step_links.py +1 -2
  421. rasa/shared/core/flows/flow_step_sequence.py +1 -1
  422. rasa/shared/core/flows/flows_list.py +3 -3
  423. rasa/shared/core/flows/flows_yaml_schema.json +69 -3
  424. rasa/shared/core/flows/nlu_trigger.py +1 -1
  425. rasa/shared/core/flows/steps/__init__.py +2 -2
  426. rasa/shared/core/flows/steps/action.py +1 -1
  427. rasa/shared/core/flows/steps/call.py +1 -1
  428. rasa/shared/core/flows/steps/collect.py +22 -40
  429. rasa/shared/core/flows/steps/internal.py +1 -1
  430. rasa/shared/core/flows/steps/link.py +1 -1
  431. rasa/shared/core/flows/steps/no_operation.py +2 -2
  432. rasa/shared/core/flows/steps/set_slots.py +1 -1
  433. rasa/shared/core/flows/utils.py +44 -4
  434. rasa/shared/core/flows/validation.py +4 -6
  435. rasa/shared/core/generator.py +20 -21
  436. rasa/shared/core/slot_mappings.py +360 -121
  437. rasa/shared/core/slots.py +163 -6
  438. rasa/shared/core/trackers.py +108 -33
  439. rasa/shared/core/training_data/loading.py +1 -1
  440. rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
  441. rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
  442. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
  443. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
  444. rasa/shared/core/training_data/structures.py +11 -12
  445. rasa/shared/core/training_data/visualization.py +10 -10
  446. rasa/shared/data.py +6 -6
  447. rasa/shared/engine/caching.py +0 -1
  448. rasa/shared/exceptions.py +2 -2
  449. rasa/shared/importers/importer.py +58 -2
  450. rasa/shared/importers/rasa.py +5 -6
  451. rasa/shared/importers/utils.py +1 -1
  452. rasa/shared/nlu/constants.py +9 -0
  453. rasa/shared/nlu/training_data/entities_parser.py +6 -6
  454. rasa/shared/nlu/training_data/features.py +3 -3
  455. rasa/shared/nlu/training_data/formats/__init__.py +1 -1
  456. rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
  457. rasa/shared/nlu/training_data/formats/luis.py +7 -8
  458. rasa/shared/nlu/training_data/formats/rasa.py +4 -5
  459. rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
  460. rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
  461. rasa/shared/nlu/training_data/formats/wit.py +3 -4
  462. rasa/shared/nlu/training_data/loading.py +4 -4
  463. rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
  464. rasa/shared/nlu/training_data/message.py +13 -14
  465. rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
  466. rasa/shared/nlu/training_data/schemas/responses.yml +19 -11
  467. rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
  468. rasa/shared/nlu/training_data/training_data.py +12 -13
  469. rasa/shared/nlu/training_data/util.py +11 -10
  470. rasa/shared/providers/_configs/azure_entra_id_config.py +541 -0
  471. rasa/shared/providers/_configs/azure_openai_client_config.py +150 -15
  472. rasa/shared/providers/_configs/client_config.py +3 -1
  473. rasa/shared/providers/_configs/default_litellm_client_config.py +9 -7
  474. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +13 -11
  475. rasa/shared/providers/_configs/litellm_router_client_config.py +12 -10
  476. rasa/shared/providers/_configs/model_group_config.py +8 -5
  477. rasa/shared/providers/_configs/oauth_config.py +33 -0
  478. rasa/shared/providers/_configs/openai_client_config.py +14 -12
  479. rasa/shared/providers/_configs/rasa_llm_client_config.py +5 -3
  480. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +12 -11
  481. rasa/shared/providers/_configs/utils.py +1 -0
  482. rasa/shared/providers/_ssl_verification_utils.py +5 -6
  483. rasa/shared/providers/_utils.py +5 -5
  484. rasa/shared/providers/constants.py +6 -0
  485. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
  486. rasa/shared/providers/embedding/azure_openai_embedding_client.py +32 -7
  487. rasa/shared/providers/embedding/embedding_client.py +1 -1
  488. rasa/shared/providers/embedding/litellm_router_embedding_client.py +5 -2
  489. rasa/shared/providers/llm/_base_litellm_client.py +43 -18
  490. rasa/shared/providers/llm/azure_openai_llm_client.py +90 -34
  491. rasa/shared/providers/llm/default_litellm_llm_client.py +4 -2
  492. rasa/shared/providers/llm/litellm_router_llm_client.py +32 -9
  493. rasa/shared/providers/llm/llm_client.py +24 -8
  494. rasa/shared/providers/llm/llm_response.py +61 -2
  495. rasa/shared/providers/llm/openai_llm_client.py +11 -5
  496. rasa/shared/providers/llm/rasa_llm_client.py +17 -14
  497. rasa/shared/providers/llm/self_hosted_llm_client.py +35 -15
  498. rasa/shared/providers/mappings.py +18 -19
  499. rasa/shared/providers/router/_base_litellm_router_client.py +48 -15
  500. rasa/shared/providers/router/router_client.py +3 -1
  501. rasa/shared/utils/cli.py +1 -1
  502. rasa/shared/utils/common.py +15 -1
  503. rasa/shared/utils/constants.py +3 -0
  504. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
  505. rasa/shared/utils/health_check/health_check.py +3 -3
  506. rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
  507. rasa/shared/utils/io.py +1 -1
  508. rasa/shared/utils/llm.py +100 -18
  509. rasa/shared/utils/pykwalify_extensions.py +25 -1
  510. rasa/shared/utils/schemas/domain.yml +26 -1
  511. rasa/shared/utils/schemas/events.py +1 -1
  512. rasa/shared/utils/yaml.py +24 -20
  513. rasa/studio/auth.py +3 -3
  514. rasa/studio/config.py +1 -2
  515. rasa/studio/data_handler.py +3 -3
  516. rasa/studio/download.py +1 -1
  517. rasa/studio/results_logger.py +3 -3
  518. rasa/studio/upload.py +21 -5
  519. rasa/telemetry.py +127 -48
  520. rasa/tracing/config.py +5 -3
  521. rasa/tracing/constants.py +12 -0
  522. rasa/tracing/instrumentation/attribute_extractors.py +92 -14
  523. rasa/tracing/instrumentation/instrumentation.py +61 -5
  524. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
  525. rasa/tracing/instrumentation/metrics.py +52 -11
  526. rasa/tracing/metric_instrument_provider.py +54 -14
  527. rasa/utils/common.py +12 -24
  528. rasa/utils/endpoints.py +1 -1
  529. rasa/utils/io.py +7 -7
  530. rasa/utils/licensing.py +3 -4
  531. rasa/utils/log_utils.py +7 -6
  532. rasa/utils/ml_utils.py +1 -0
  533. rasa/utils/plotting.py +3 -3
  534. rasa/utils/sanic_error_handler.py +1 -1
  535. rasa/utils/tensorflow/callback.py +2 -2
  536. rasa/utils/tensorflow/crf.py +2 -2
  537. rasa/utils/tensorflow/data_generator.py +5 -5
  538. rasa/utils/tensorflow/environment.py +3 -3
  539. rasa/utils/tensorflow/feature_array.py +2 -3
  540. rasa/utils/tensorflow/layers.py +18 -12
  541. rasa/utils/tensorflow/layers_utils.py +2 -1
  542. rasa/utils/tensorflow/metrics.py +2 -2
  543. rasa/utils/tensorflow/model_data.py +7 -7
  544. rasa/utils/tensorflow/model_data_utils.py +10 -9
  545. rasa/utils/tensorflow/models.py +31 -32
  546. rasa/utils/tensorflow/rasa_layers.py +20 -19
  547. rasa/utils/tensorflow/types.py +2 -1
  548. rasa/utils/train_utils.py +23 -21
  549. rasa/utils/url_tools.py +1 -1
  550. rasa/validator.py +594 -115
  551. rasa/version.py +1 -1
  552. {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/METADATA +23 -26
  553. rasa_pro-3.12.0.dist-info/RECORD +829 -0
  554. rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +0 -1
  555. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +0 -10
  556. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +0 -2
  557. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +0 -2
  558. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +0 -4
  559. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +0 -6
  560. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +0 -4
  561. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +0 -1
  562. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +0 -139
  563. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +0 -266
  564. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +0 -70
  565. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +0 -1
  566. rasa/core/channels/inspector/dist/assets/layout-498807d8.js +0 -1
  567. rasa/core/channels/inspector/dist/assets/linear-8a078617.js +0 -1
  568. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +0 -109
  569. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +0 -8
  570. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +0 -122
  571. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +0 -1
  572. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +0 -1
  573. rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +0 -110
  574. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +0 -159
  575. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +0 -1
  576. rasa_pro-3.11.4.dist-info/RECORD +0 -779
  577. /rasa/dialogue_understanding/generator/{single_step → prompt_templates}/command_prompt_template.jinja2 +0 -0
  578. {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/NOTICE +0 -0
  579. {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/WHEEL +0 -0
  580. {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/entry_points.txt +0 -0
@@ -1,17 +1,21 @@
1
1
  from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
2
2
  from rasa.core.policies.flow_policy import FlowPolicy
3
+ from rasa.core.policies.intentless_policy import IntentlessPolicy
4
+ from rasa.core.policies.memoization import AugmentedMemoizationPolicy, MemoizationPolicy
5
+ from rasa.core.policies.rule_policy import RulePolicy
6
+ from rasa.core.policies.ted_policy import TEDPolicy
7
+ from rasa.core.policies.unexpected_intent_policy import UnexpecTEDIntentPolicy
3
8
  from rasa.dialogue_understanding.coexistence.intent_based_router import (
4
9
  IntentBasedRouter,
5
10
  )
6
11
  from rasa.dialogue_understanding.coexistence.llm_based_router import LLMBasedRouter
7
- from rasa.core.policies.intentless_policy import IntentlessPolicy
12
+ from rasa.dialogue_understanding.generator import (
13
+ LLMCommandGenerator,
14
+ )
8
15
  from rasa.dialogue_understanding.generator.nlu_command_adapter import NLUCommandAdapter
9
16
  from rasa.nlu.classifiers.diet_classifier import DIETClassifier
10
17
  from rasa.nlu.classifiers.fallback_classifier import FallbackClassifier
11
18
  from rasa.nlu.classifiers.keyword_intent_classifier import KeywordIntentClassifier
12
- from rasa.dialogue_understanding.generator import (
13
- LLMCommandGenerator,
14
- )
15
19
  from rasa.nlu.classifiers.logistic_regression_classifier import (
16
20
  LogisticRegressionClassifier,
17
21
  )
@@ -21,18 +25,18 @@ from rasa.nlu.extractors.crf_entity_extractor import CRFEntityExtractor
21
25
  from rasa.nlu.extractors.duckling_entity_extractor import DucklingEntityExtractor
22
26
  from rasa.nlu.extractors.entity_synonyms import EntitySynonymMapper
23
27
  from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
24
- from rasa.nlu.extractors.spacy_entity_extractor import SpacyEntityExtractor
25
28
  from rasa.nlu.extractors.regex_entity_extractor import RegexEntityExtractor
26
- from rasa.nlu.featurizers.sparse_featurizer.lexical_syntactic_featurizer import (
27
- LexicalSyntacticFeaturizer,
28
- )
29
+ from rasa.nlu.extractors.spacy_entity_extractor import SpacyEntityExtractor
29
30
  from rasa.nlu.featurizers.dense_featurizer.convert_featurizer import ConveRTFeaturizer
31
+ from rasa.nlu.featurizers.dense_featurizer.lm_featurizer import LanguageModelFeaturizer
30
32
  from rasa.nlu.featurizers.dense_featurizer.mitie_featurizer import MitieFeaturizer
31
33
  from rasa.nlu.featurizers.dense_featurizer.spacy_featurizer import SpacyFeaturizer
32
34
  from rasa.nlu.featurizers.sparse_featurizer.count_vectors_featurizer import (
33
35
  CountVectorsFeaturizer,
34
36
  )
35
- from rasa.nlu.featurizers.dense_featurizer.lm_featurizer import LanguageModelFeaturizer
37
+ from rasa.nlu.featurizers.sparse_featurizer.lexical_syntactic_featurizer import (
38
+ LexicalSyntacticFeaturizer,
39
+ )
36
40
  from rasa.nlu.featurizers.sparse_featurizer.regex_featurizer import RegexFeaturizer
37
41
  from rasa.nlu.selectors.response_selector import ResponseSelector
38
42
  from rasa.nlu.tokenizers.jieba_tokenizer import JiebaTokenizer
@@ -42,12 +46,6 @@ from rasa.nlu.tokenizers.whitespace_tokenizer import WhitespaceTokenizer
42
46
  from rasa.nlu.utils.mitie_utils import MitieNLP
43
47
  from rasa.nlu.utils.spacy_utils import SpacyNLP
44
48
 
45
-
46
- from rasa.core.policies.ted_policy import TEDPolicy
47
- from rasa.core.policies.memoization import MemoizationPolicy, AugmentedMemoizationPolicy
48
- from rasa.core.policies.rule_policy import RulePolicy
49
- from rasa.core.policies.unexpected_intent_policy import UnexpecTEDIntentPolicy
50
-
51
49
  DEFAULT_COMPONENTS = [
52
50
  # Message Classifiers
53
51
  DIETClassifier,
@@ -1,65 +1,72 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import copy
4
+ import dataclasses
4
5
  import enum
5
6
  import logging
6
7
  import math
7
8
  from enum import Enum
8
- from typing import Dict, Text, Any, Tuple, Type, Optional, List, Callable, Set, Union
9
-
10
- import dataclasses
9
+ from typing import Any, Callable, Dict, List, Optional, Set, Text, Tuple, Type, Union
11
10
 
11
+ import rasa.shared.constants
12
12
  from rasa.core.featurizers.precomputation import (
13
- CoreFeaturizationInputConverter,
14
13
  CoreFeaturizationCollector,
14
+ CoreFeaturizationInputConverter,
15
15
  )
16
- from rasa.graph_components.providers.flows_provider import FlowsProvider
16
+ from rasa.core.policies.ensemble import DefaultPolicyPredictionEnsemble
17
17
  from rasa.dialogue_understanding.processor.command_processor_component import (
18
18
  CommandProcessorComponent,
19
19
  )
20
- from rasa.shared.exceptions import FileNotFoundException
21
- from rasa.core.policies.ensemble import DefaultPolicyPredictionEnsemble
22
-
23
- from rasa.engine.graph import (
24
- GraphSchema,
25
- GraphComponent,
26
- SchemaNode,
27
- GraphModelConfiguration,
28
- )
29
20
  from rasa.engine.constants import (
21
+ PLACEHOLDER_ENDPOINTS,
30
22
  PLACEHOLDER_IMPORTER,
31
23
  PLACEHOLDER_MESSAGE,
32
24
  PLACEHOLDER_TRACKER,
33
- PLACEHOLDER_ENDPOINTS,
25
+ )
26
+ from rasa.engine.graph import (
27
+ GraphComponent,
28
+ GraphModelConfiguration,
29
+ GraphSchema,
30
+ SchemaNode,
34
31
  )
35
32
  from rasa.engine.recipes.recipe import Recipe
36
33
  from rasa.engine.storage.resource import Resource
37
34
  from rasa.graph_components.converters.nlu_message_converter import NLUMessageConverter
38
- from rasa.graph_components.providers.domain_provider import DomainProvider
39
- from rasa.graph_components.providers.forms_provider import FormsProvider
40
- from rasa.graph_components.providers.responses_provider import ResponsesProvider
41
35
  from rasa.graph_components.providers.domain_for_core_training_provider import (
42
36
  DomainForCoreTrainingProvider,
43
37
  )
38
+ from rasa.graph_components.providers.domain_provider import DomainProvider
39
+ from rasa.graph_components.providers.flows_provider import FlowsProvider
40
+ from rasa.graph_components.providers.forms_provider import FormsProvider
44
41
  from rasa.graph_components.providers.nlu_training_data_provider import (
45
42
  NLUTrainingDataProvider,
46
43
  )
44
+ from rasa.graph_components.providers.responses_provider import ResponsesProvider
47
45
  from rasa.graph_components.providers.rule_only_provider import RuleOnlyDataProvider
48
46
  from rasa.graph_components.providers.story_graph_provider import StoryGraphProvider
49
47
  from rasa.graph_components.providers.training_tracker_provider import (
50
48
  TrainingTrackerProvider,
51
49
  )
52
- import rasa.shared.constants
53
- from rasa.shared.exceptions import RasaException, InvalidConfigException
54
- from rasa.shared.constants import ASSISTANT_ID_KEY
50
+ from rasa.shared.constants import (
51
+ ASSISTANT_ID_KEY,
52
+ CONFIG_ADDITIONAL_LANGUAGES_KEY,
53
+ CONFIG_LANGUAGE_KEY,
54
+ CONFIG_NAME_KEY,
55
+ CONFIG_PIPELINE_KEY,
56
+ CONFIG_POLICIES_KEY,
57
+ )
55
58
  from rasa.shared.data import TrainingType
56
- from rasa.shared.utils.yaml import read_config_file
57
-
58
- from rasa.utils.tensorflow.constants import EPOCHS
59
+ from rasa.shared.exceptions import (
60
+ FileNotFoundException,
61
+ InvalidConfigException,
62
+ RasaException,
63
+ )
59
64
  from rasa.shared.utils.common import (
60
65
  class_from_module_path,
61
66
  transform_collection_to_sentence,
62
67
  )
68
+ from rasa.shared.utils.yaml import read_config_file
69
+ from rasa.utils.tensorflow.constants import EPOCHS
63
70
 
64
71
  logger = logging.getLogger(__name__)
65
72
 
@@ -67,13 +74,13 @@ logger = logging.getLogger(__name__)
67
74
  DEFAULT_PREDICT_KWARGS = dict(constructor_name="load", eager=True, is_target=False)
68
75
 
69
76
  COMMENTS_FOR_KEYS = {
70
- "pipeline": (
77
+ CONFIG_PIPELINE_KEY: (
71
78
  f"# # No configuration for the NLU pipeline was provided. The following "
72
79
  f"default pipeline was used to train your model.\n"
73
80
  f"# # If you'd like to customize it, uncomment and adjust the pipeline.\n"
74
81
  f"# # See {rasa.shared.constants.DOCS_URL_PIPELINE} for more information.\n"
75
82
  ),
76
- "policies": (
83
+ CONFIG_POLICIES_KEY: (
77
84
  f"# # No configuration for policies was provided. The following default "
78
85
  f"policies were used to train your model.\n"
79
86
  f"# # If you'd like to customize them, uncomment and adjust the policies.\n"
@@ -82,6 +89,10 @@ COMMENTS_FOR_KEYS = {
82
89
  }
83
90
 
84
91
 
92
+ GRAPH_NODE_RUN_PREFIX = "run_"
93
+ GRAPH_NODE_TRAIN_PREFIX = "train_"
94
+
95
+
85
96
  class DefaultV1RecipeRegisterException(RasaException):
86
97
  """If you register a class which is not of type `GraphComponent`."""
87
98
 
@@ -194,10 +205,12 @@ class DefaultV1Recipe(Recipe):
194
205
  ) -> GraphModelConfiguration:
195
206
  """Converts the default config to graphs (see interface for full docstring)."""
196
207
  self._use_core = (
197
- bool(config.get("policies")) and not training_type == TrainingType.NLU
208
+ bool(config.get(CONFIG_POLICIES_KEY))
209
+ and not training_type == TrainingType.NLU
198
210
  )
199
211
  self._use_nlu = (
200
- bool(config.get("pipeline")) and not training_type == TrainingType.CORE
212
+ bool(config.get(CONFIG_PIPELINE_KEY))
213
+ and not training_type == TrainingType.CORE
201
214
  )
202
215
 
203
216
  if not self._use_nlu and training_type == TrainingType.NLU:
@@ -232,9 +245,10 @@ class DefaultV1Recipe(Recipe):
232
245
  predict_schema=GraphSchema(predict_nodes),
233
246
  training_type=training_type,
234
247
  assistant_id=config.get(ASSISTANT_ID_KEY),
235
- language=config.get("language"),
248
+ language=config.get(CONFIG_LANGUAGE_KEY),
236
249
  core_target=core_target,
237
- nlu_target=f"run_{RegexMessageHandler.__name__}",
250
+ nlu_target=f"{GRAPH_NODE_RUN_PREFIX}{RegexMessageHandler.__name__}",
251
+ additional_languages=config.get(CONFIG_ADDITIONAL_LANGUAGES_KEY),
238
252
  )
239
253
 
240
254
  def _create_train_nodes(
@@ -317,7 +331,7 @@ class DefaultV1Recipe(Recipe):
317
331
  constructor_name="create",
318
332
  fn="provide",
319
333
  config={
320
- "language": train_config.get("language"),
334
+ "language": train_config.get(CONFIG_LANGUAGE_KEY),
321
335
  "persist": persist_nlu_data,
322
336
  },
323
337
  is_target=persist_nlu_data,
@@ -327,8 +341,8 @@ class DefaultV1Recipe(Recipe):
327
341
  last_run_node = "nlu_training_data_provider"
328
342
  preprocessors: List[Text] = []
329
343
 
330
- for idx, config in enumerate(train_config["pipeline"]):
331
- component_name = config.pop("name")
344
+ for idx, config in enumerate(train_config[CONFIG_PIPELINE_KEY]):
345
+ component_name = config.pop(CONFIG_NAME_KEY)
332
346
  component = self._from_registry(component_name)
333
347
  component_name = f"{component_name}{idx}"
334
348
 
@@ -451,7 +465,7 @@ class DefaultV1Recipe(Recipe):
451
465
  needs.update(self._get_model_provider_needs(train_nodes, component))
452
466
  needs["training_data"] = last_run_node
453
467
 
454
- train_node_name = f"train_{component_name}"
468
+ train_node_name = f"{GRAPH_NODE_TRAIN_PREFIX}{component_name}"
455
469
  train_nodes[train_node_name] = SchemaNode(
456
470
  needs=needs,
457
471
  uses=component,
@@ -469,10 +483,10 @@ class DefaultV1Recipe(Recipe):
469
483
  component_config: Dict[Text, Any],
470
484
  ) -> Dict[Text, Any]:
471
485
  from rasa.nlu.classifiers.mitie_intent_classifier import MitieIntentClassifier
472
- from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
473
486
  from rasa.nlu.classifiers.sklearn_intent_classifier import (
474
487
  SklearnIntentClassifier,
475
488
  )
489
+ from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
476
490
 
477
491
  cli_args_mapping: Dict[Type[GraphComponent], List[Text]] = {
478
492
  MitieIntentClassifier: ["num_threads"],
@@ -520,7 +534,7 @@ class DefaultV1Recipe(Recipe):
520
534
 
521
535
  needs["training_data"] = last_run_node
522
536
 
523
- node_name = f"run_{component_name}"
537
+ node_name = f"{GRAPH_NODE_RUN_PREFIX}{component_name}"
524
538
  train_nodes[node_name] = SchemaNode(
525
539
  needs=needs,
526
540
  uses=component_class,
@@ -627,8 +641,8 @@ class DefaultV1Recipe(Recipe):
627
641
  )
628
642
 
629
643
  policy_with_end_to_end_support_used = False
630
- for idx, config in enumerate(train_config["policies"]):
631
- component_name = config.pop("name")
644
+ for idx, config in enumerate(train_config[CONFIG_POLICIES_KEY]):
645
+ component_name = config.pop(CONFIG_NAME_KEY)
632
646
  component = self._from_registry(component_name)
633
647
 
634
648
  extra_config_from_cli = self._extra_config_from_cli(
@@ -647,7 +661,7 @@ class DefaultV1Recipe(Recipe):
647
661
  needs["precomputations"] = "end_to_end_features_provider"
648
662
  # during core training we use a stripped down version of the domain
649
663
  needs["domain"] = "domain_for_core_training_provider"
650
- train_nodes[f"train_{component_name}{idx}"] = SchemaNode(
664
+ train_nodes[f"{GRAPH_NODE_TRAIN_PREFIX}{component_name}{idx}"] = SchemaNode(
651
665
  needs=needs,
652
666
  uses=component.clazz,
653
667
  constructor_name="load" if self._is_finetuning else "create",
@@ -722,7 +736,9 @@ class DefaultV1Recipe(Recipe):
722
736
  if self._use_core:
723
737
  domain_needs["domain"] = "domain_provider"
724
738
 
725
- regex_handler_node_name = f"run_{RegexMessageHandler.__name__}"
739
+ regex_handler_node_name = (
740
+ f"{GRAPH_NODE_RUN_PREFIX}{RegexMessageHandler.__name__}"
741
+ )
726
742
  predict_nodes[regex_handler_node_name] = SchemaNode(
727
743
  **DEFAULT_PREDICT_KWARGS,
728
744
  needs={"messages": last_run_nlu_node, **domain_needs},
@@ -762,8 +778,8 @@ class DefaultV1Recipe(Recipe):
762
778
  resource=Resource("domain_provider"),
763
779
  )
764
780
 
765
- for idx, config in enumerate(predict_config["pipeline"]):
766
- component_name = config.pop("name")
781
+ for idx, config in enumerate(predict_config[CONFIG_PIPELINE_KEY]):
782
+ component_name = config.pop(CONFIG_NAME_KEY)
767
783
  component = self._from_registry(component_name)
768
784
  component_name = f"{component_name}{idx}"
769
785
  if self.ComponentType.MODEL_LOADER in component.types:
@@ -830,10 +846,10 @@ class DefaultV1Recipe(Recipe):
830
846
  item_config: Dict[Text, Any],
831
847
  from_resource: bool = False,
832
848
  ) -> Text:
833
- train_node_name = f"run_{node_name}"
849
+ train_node_name = f"{GRAPH_NODE_RUN_PREFIX}{node_name}"
834
850
  resource = None
835
851
  if from_resource:
836
- train_node_name = f"train_{node_name}"
852
+ train_node_name = f"{GRAPH_NODE_TRAIN_PREFIX}{node_name}"
837
853
  resource = Resource(train_node_name)
838
854
 
839
855
  return self._add_nlu_predict_node(
@@ -852,7 +868,7 @@ class DefaultV1Recipe(Recipe):
852
868
  component_name: Text,
853
869
  last_run_node: Text,
854
870
  ) -> Text:
855
- node_name = f"run_{component_name}"
871
+ node_name = f"{GRAPH_NODE_RUN_PREFIX}{component_name}"
856
872
 
857
873
  needs = self._get_needs_from_args(node.uses, "process")
858
874
  needs.update(self._get_model_provider_needs(predict_nodes, node.uses))
@@ -919,12 +935,12 @@ class DefaultV1Recipe(Recipe):
919
935
  rule_policy_resource = None
920
936
  policies: List[Text] = []
921
937
 
922
- for idx, config in enumerate(predict_config["policies"]):
923
- component_name = config.pop("name")
938
+ for idx, config in enumerate(predict_config[CONFIG_POLICIES_KEY]):
939
+ component_name = config.pop(CONFIG_NAME_KEY)
924
940
  component = self._from_registry(component_name)
925
941
 
926
- train_node_name = f"train_{component_name}{idx}"
927
- node_name = f"run_{component_name}{idx}"
942
+ train_node_name = f"{GRAPH_NODE_TRAIN_PREFIX}{component_name}{idx}"
943
+ node_name = f"{GRAPH_NODE_RUN_PREFIX}{component_name}{idx}"
928
944
 
929
945
  from rasa.core.policies.rule_policy import RulePolicy
930
946
 
@@ -1,16 +1,18 @@
1
1
  import logging
2
+ from typing import Any, Dict, Text, Tuple
2
3
 
4
+ from rasa.engine.graph import GraphModelConfiguration, GraphSchema
3
5
  from rasa.engine.recipes.recipe import Recipe
4
- from rasa.engine.graph import GraphModelConfiguration
5
- from rasa.shared.constants import DOCS_URL_GRAPH_RECIPE, ASSISTANT_ID_KEY
6
+ from rasa.shared.constants import (
7
+ ASSISTANT_ID_KEY,
8
+ CONFIG_ADDITIONAL_LANGUAGES_KEY,
9
+ CONFIG_LANGUAGE_KEY,
10
+ DOCS_URL_GRAPH_RECIPE,
11
+ )
6
12
  from rasa.shared.data import TrainingType
7
13
  from rasa.shared.exceptions import InvalidConfigException
8
14
  from rasa.shared.utils.common import mark_as_experimental_feature
9
15
  from rasa.shared.utils.io import raise_warning
10
- from rasa.engine.graph import GraphSchema
11
-
12
- from typing import Dict, Text, Any, Tuple
13
-
14
16
 
15
17
  logger = logging.getLogger(__name__)
16
18
 
@@ -72,7 +74,8 @@ class GraphV1Recipe(Recipe):
72
74
  predict_schema=GraphSchema.from_dict(config.get("predict_schema")),
73
75
  training_type=training_type,
74
76
  assistant_id=config.get(ASSISTANT_ID_KEY),
75
- language=config.get("language"),
77
+ language=config.get(CONFIG_LANGUAGE_KEY),
76
78
  core_target=core_target,
77
79
  nlu_target=nlu_target,
80
+ additional_languages=config.get(CONFIG_ADDITIONAL_LANGUAGES_KEY),
78
81
  )
@@ -1,12 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import abc
4
- from typing import Text, Dict, Any, Optional, Tuple, Set
4
+ from typing import Any, Dict, Optional, Set, Text, Tuple
5
5
 
6
6
  import rasa.shared.utils.io
7
7
  from rasa.engine.graph import GraphModelConfiguration
8
- from rasa.shared.exceptions import RasaException
9
8
  from rasa.shared.data import TrainingType
9
+ from rasa.shared.exceptions import RasaException
10
10
 
11
11
 
12
12
  class InvalidRecipeException(RasaException):
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import asyncio
3
4
  import logging
4
5
  from typing import Any, Dict, List, Optional, Text
5
6
 
6
- import dask.local
7
7
  import dask.core
8
- import asyncio
8
+ import dask.local
9
9
 
10
10
  from rasa.engine.exceptions import GraphRunError
11
11
  from rasa.engine.graph import ExecutionContext, GraphNode, GraphNodeHook, GraphSchema
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from abc import ABC, abstractmethod
3
4
  from typing import Any, Dict, List, Optional, Text
4
5
 
@@ -8,17 +8,18 @@ import uuid
8
8
  from contextlib import contextmanager
9
9
  from datetime import datetime
10
10
  from pathlib import Path
11
- from tarsafe import TarSafe
12
11
  from typing import Generator, Optional, Text, Tuple, Union
13
12
 
14
- import rasa.utils.common
13
+ from tarsafe import TarSafe
14
+
15
+ import rasa.model
15
16
  import rasa.shared.utils.io
16
- from rasa.engine.storage.storage import ModelMetadata, ModelStorage
17
+ import rasa.utils.common
17
18
  from rasa.engine.graph import GraphModelConfiguration
18
19
  from rasa.engine.storage.resource import Resource
20
+ from rasa.engine.storage.storage import ModelMetadata, ModelStorage
19
21
  from rasa.exceptions import UnsupportedModelVersionError
20
22
  from rasa.shared.core.domain import Domain
21
- import rasa.model
22
23
 
23
24
  logger = logging.getLogger(__name__)
24
25
 
@@ -239,6 +240,7 @@ class LocalModelStorage(ModelStorage):
239
240
  training_type=model_configuration.training_type,
240
241
  project_fingerprint=rasa.model.project_fingerprint(),
241
242
  language=model_configuration.language,
243
+ additional_languages=model_configuration.additional_languages,
242
244
  core_target=model_configuration.core_target,
243
245
  nlu_target=model_configuration.nlu_target,
244
246
  )
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  import logging
3
4
  import typing
5
+ import uuid
4
6
  from dataclasses import dataclass, field
5
7
  from pathlib import Path
6
8
  from typing import Text
7
- import uuid
8
9
 
9
10
  import rasa.utils.common
10
11
  import rasa.utils.io
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  import abc
3
4
  import logging
4
5
  import typing
@@ -6,17 +7,18 @@ from contextlib import contextmanager
6
7
  from dataclasses import dataclass
7
8
  from datetime import datetime
8
9
  from pathlib import Path
9
- from typing import Tuple, Union, Text, Generator, Dict, Any, Optional
10
+ from typing import Any, Dict, Generator, List, Optional, Text, Tuple, Union
11
+
10
12
  from packaging import version
11
13
 
12
14
  from rasa.constants import MINIMUM_COMPATIBLE_VERSION
13
- from rasa.exceptions import UnsupportedModelVersionError
14
15
  from rasa.engine.storage.resource import Resource
16
+ from rasa.exceptions import UnsupportedModelVersionError
15
17
  from rasa.shared.core.domain import Domain
16
18
  from rasa.shared.data import TrainingType
17
19
 
18
20
  if typing.TYPE_CHECKING:
19
- from rasa.engine.graph import GraphSchema, GraphModelConfiguration
21
+ from rasa.engine.graph import GraphModelConfiguration, GraphSchema
20
22
 
21
23
  logger = logging.getLogger(__name__)
22
24
 
@@ -140,6 +142,7 @@ class ModelMetadata:
140
142
  core_target: Optional[Text]
141
143
  nlu_target: Text
142
144
  language: Optional[Text]
145
+ additional_languages: Optional[List[Text]]
143
146
  training_type: TrainingType = TrainingType.BOTH
144
147
 
145
148
  def __post_init__(self) -> None:
@@ -169,6 +172,7 @@ class ModelMetadata:
169
172
  "core_target": self.core_target,
170
173
  "nlu_target": self.nlu_target,
171
174
  "language": self.language,
175
+ "additional_languages": self.additional_languages,
172
176
  }
173
177
 
174
178
  @classmethod
@@ -196,4 +200,5 @@ class ModelMetadata:
196
200
  core_target=serialized["core_target"],
197
201
  nlu_target=serialized["nlu_target"],
198
202
  language=serialized["language"],
203
+ additional_languages=serialized.get("additional_languages"),
199
204
  )
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
- from typing import Any, Dict, Optional, Text, Type
2
+
3
3
  import dataclasses
4
4
  import uuid
5
+ from typing import Any, Dict, Optional, Text, Type
5
6
 
6
7
  from rasa.engine.caching import Cacheable, TrainingCache
7
8
  from rasa.engine.graph import ExecutionContext, GraphComponent, SchemaNode
@@ -1,10 +1,12 @@
1
1
  import inspect
2
2
  import logging
3
3
  from typing import Any, Dict, Text, Type
4
- from typing_extensions import Protocol, runtime_checkable
4
+
5
5
  import importlib_metadata
6
- import rasa.utils.common
6
+ from typing_extensions import Protocol, runtime_checkable
7
+
7
8
  import rasa.shared.utils.io
9
+ import rasa.utils.common
8
10
  from rasa.engine.graph import GraphComponent
9
11
 
10
12
  logger = logging.getLogger(__name__)
@@ -4,16 +4,16 @@ from pathlib import Path
4
4
  from typing import Any, Dict, Text, Type, Union
5
5
 
6
6
  from rasa.engine.caching import TrainingCache
7
- from rasa.engine.graph import ExecutionContext, GraphSchema, GraphModelConfiguration
8
7
  from rasa.engine.constants import PLACEHOLDER_IMPORTER
8
+ from rasa.engine.graph import ExecutionContext, GraphModelConfiguration, GraphSchema
9
9
  from rasa.engine.runner.interface import GraphRunner
10
- from rasa.engine.storage.storage import ModelStorage, ModelMetadata
10
+ from rasa.engine.storage.storage import ModelMetadata, ModelStorage
11
11
  from rasa.engine.training.components import (
12
- PrecomputedValueProvider,
13
12
  FingerprintComponent,
14
13
  FingerprintStatus,
14
+ PrecomputedValueProvider,
15
15
  )
16
- from rasa.engine.training.hooks import TrainingHook, LoggingHook
16
+ from rasa.engine.training.hooks import LoggingHook, TrainingHook
17
17
  from rasa.shared.importers.importer import TrainingDataImporter
18
18
 
19
19
  logger = logging.getLogger(__name__)
@@ -1,12 +1,12 @@
1
1
  import logging
2
2
  from typing import Any, Dict, Text, Type
3
3
 
4
+ import rasa.shared.utils.io
4
5
  from rasa.engine.caching import TrainingCache
5
6
  from rasa.engine.graph import ExecutionContext, GraphNodeHook, GraphSchema, SchemaNode
6
7
  from rasa.engine.storage.storage import ModelStorage
7
- from rasa.engine.training.components import PrecomputedValueProvider
8
- import rasa.shared.utils.io
9
8
  from rasa.engine.training import fingerprinting
9
+ from rasa.engine.training.components import PrecomputedValueProvider
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12