rasa-pro 3.12.0.dev2__py3-none-any.whl → 3.12.0.dev3__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 (502) hide show
  1. rasa/__main__.py +7 -7
  2. rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
  3. rasa/anonymization/anonymization_pipeline.py +3 -3
  4. rasa/anonymization/anonymization_rule_executor.py +1 -1
  5. rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
  6. rasa/cli/arguments/data.py +2 -2
  7. rasa/cli/arguments/evaluate.py +2 -1
  8. rasa/cli/arguments/interactive.py +1 -1
  9. rasa/cli/arguments/run.py +1 -1
  10. rasa/cli/arguments/test.py +7 -5
  11. rasa/cli/arguments/train.py +3 -3
  12. rasa/cli/arguments/visualize.py +2 -2
  13. rasa/cli/arguments/x.py +1 -0
  14. rasa/cli/data.py +4 -3
  15. rasa/cli/dialogue_understanding_test.py +116 -18
  16. rasa/cli/evaluate.py +1 -1
  17. rasa/cli/export.py +6 -6
  18. rasa/cli/interactive.py +4 -5
  19. rasa/cli/llm_fine_tuning.py +5 -5
  20. rasa/cli/markers.py +1 -2
  21. rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
  22. rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
  23. rasa/cli/shell.py +2 -3
  24. rasa/cli/studio/download.py +1 -2
  25. rasa/cli/studio/studio.py +2 -3
  26. rasa/cli/studio/train.py +0 -1
  27. rasa/cli/telemetry.py +2 -2
  28. rasa/cli/test.py +11 -11
  29. rasa/cli/utils.py +7 -5
  30. rasa/core/__init__.py +0 -1
  31. rasa/core/actions/action.py +42 -21
  32. rasa/core/actions/action_hangup.py +1 -1
  33. rasa/core/actions/action_repeat_bot_messages.py +2 -2
  34. rasa/core/actions/action_run_slot_rejections.py +2 -2
  35. rasa/core/actions/action_trigger_chitchat.py +1 -1
  36. rasa/core/actions/action_trigger_flow.py +5 -5
  37. rasa/core/actions/action_trigger_search.py +1 -1
  38. rasa/core/actions/forms.py +14 -12
  39. rasa/core/actions/http_custom_action_executor.py +8 -1
  40. rasa/core/actions/loops.py +3 -3
  41. rasa/core/actions/two_stage_fallback.py +13 -13
  42. rasa/core/auth_retry_tracker_store.py +1 -2
  43. rasa/core/brokers/broker.py +2 -1
  44. rasa/core/brokers/file.py +1 -1
  45. rasa/core/brokers/kafka.py +8 -8
  46. rasa/core/brokers/pika.py +8 -9
  47. rasa/core/brokers/sql.py +4 -3
  48. rasa/core/channels/__init__.py +3 -0
  49. rasa/core/channels/botframework.py +2 -2
  50. rasa/core/channels/callback.py +4 -4
  51. rasa/core/channels/channel.py +11 -11
  52. rasa/core/channels/console.py +0 -1
  53. rasa/core/channels/development_inspector.py +6 -6
  54. rasa/core/channels/facebook.py +5 -5
  55. rasa/core/channels/hangouts.py +7 -8
  56. rasa/core/channels/inspector/dist/assets/{arc-861ddd57.js → arc-632a63ec.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-921f02db.js → c4Diagram-d0fbc5ce-081e0df4.js} +1 -1
  58. rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-b436c4f8.js → classDiagram-936ed81e-3df0afc2.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-511a23cb.js → classDiagram-v2-c3cb15f1-8c5ed31e.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-ef476ecd.js → createText-62fc7601-89c73b31.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-f1878e0a.js → edges-f2ad444c-4fc48c3e.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-fac75185.js → erDiagram-9d236eb7-907e0440.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-201c5bbc.js → flowDb-1972c806-9ec53a3c.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-f904ae41.js → flowDiagram-7ea5b25a-41da787a.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
  66. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-1813da66.js → flowchart-elk-definition-abe16c3d-ce370633.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-872af172.js → ganttDiagram-9b5ea136-90a36523.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-34a0af5a.js → gitGraphDiagram-99d0ae7c-41e1aa3f.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-42ba3e3d.js → index-2c4b9a3b-e6f2af62.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{index-37817b51.js → index-e793d777.js} +3 -3
  71. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-6b731386.js → infoDiagram-736b4530-8ceba4db.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-e8579ac6.js → journeyDiagram-df861f2b-960d3809.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{layout-89e6403a.js → layout-498807d8.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{line-dc73d3fc.js → line-eeccc4e2.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{linear-f5b1d2bc.js → linear-8a078617.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-82cb74fa.js → mindmap-definition-beec6740-396d17dd.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-bdf5f29b.js → pieDiagram-dbbf0591-dc9b5e1b.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-c7a0cbe4.js → quadrantDiagram-4d7f4fd6-a08cba6d.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-7ec5410f.js → requirementDiagram-6fc4c22a-87242b9e.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-caee5554.js → sankeyDiagram-8f13d901-53f6f391.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-2935f8db.js → sequenceDiagram-b655622a-715c9c20.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-8f5d9693.js → stateDiagram-59f0c015-2e8fb31f.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-d565d1de.js → stateDiagram-v2-2b26beab-7e2d2aa0.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{styles-080da4f6-75ad421d.js → styles-080da4f6-4420cea6.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-7e764226.js → styles-3dcbcfbf-28676cf4.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-7a4e0e61.js → styles-9c745c82-cef936a6.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-4019d1bf.js → svgDrawCommon-4835440b-151251e9.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-01ea12df.js → timeline-definition-5b62e21b-0d39bdb2.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-89407137.js → xychartDiagram-2b33534f-a03fa445.js} +1 -1
  90. rasa/core/channels/inspector/dist/index.html +3 -1
  91. rasa/core/channels/inspector/index.html +2 -0
  92. rasa/core/channels/inspector/src/App.tsx +1 -4
  93. rasa/core/channels/mattermost.py +4 -4
  94. rasa/core/channels/rasa_chat.py +4 -4
  95. rasa/core/channels/rest.py +11 -12
  96. rasa/core/channels/rocketchat.py +4 -3
  97. rasa/core/channels/slack.py +6 -5
  98. rasa/core/channels/socketio.py +7 -28
  99. rasa/core/channels/studio_chat.py +193 -0
  100. rasa/core/channels/telegram.py +73 -41
  101. rasa/core/channels/twilio.py +3 -3
  102. rasa/core/channels/vier_cvg.py +2 -2
  103. rasa/core/channels/voice_ready/audiocodes.py +8 -8
  104. rasa/core/channels/voice_ready/jambonz.py +5 -5
  105. rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
  106. rasa/core/channels/voice_ready/twilio_voice.py +9 -8
  107. rasa/core/channels/voice_ready/utils.py +1 -1
  108. rasa/core/channels/voice_stream/asr/asr_engine.py +2 -2
  109. rasa/core/channels/voice_stream/asr/azure.py +2 -2
  110. rasa/core/channels/voice_stream/asr/deepgram.py +57 -16
  111. rasa/core/channels/voice_stream/browser_audio.py +9 -6
  112. rasa/core/channels/voice_stream/call_state.py +2 -1
  113. rasa/core/channels/voice_stream/tts/azure.py +1 -2
  114. rasa/core/channels/voice_stream/tts/cartesia.py +5 -4
  115. rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
  116. rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
  117. rasa/core/channels/voice_stream/twilio_media_streams.py +10 -7
  118. rasa/core/channels/voice_stream/util.py +1 -1
  119. rasa/core/channels/voice_stream/voice_channel.py +15 -15
  120. rasa/core/channels/webexteams.py +3 -4
  121. rasa/core/evaluation/marker.py +7 -6
  122. rasa/core/evaluation/marker_base.py +15 -16
  123. rasa/core/evaluation/marker_stats.py +3 -4
  124. rasa/core/evaluation/marker_tracker_loader.py +5 -4
  125. rasa/core/exporter.py +4 -4
  126. rasa/core/featurizers/precomputation.py +8 -8
  127. rasa/core/featurizers/single_state_featurizer.py +7 -7
  128. rasa/core/featurizers/tracker_featurizers.py +13 -13
  129. rasa/core/http_interpreter.py +3 -4
  130. rasa/core/information_retrieval/__init__.py +1 -1
  131. rasa/core/information_retrieval/faiss.py +4 -4
  132. rasa/core/information_retrieval/information_retrieval.py +2 -2
  133. rasa/core/information_retrieval/milvus.py +3 -3
  134. rasa/core/information_retrieval/qdrant.py +3 -3
  135. rasa/core/jobs.py +1 -0
  136. rasa/core/lock.py +2 -3
  137. rasa/core/lock_store.py +3 -3
  138. rasa/core/migrate.py +11 -8
  139. rasa/core/nlg/__init__.py +1 -1
  140. rasa/core/nlg/callback.py +2 -3
  141. rasa/core/nlg/contextual_response_rephraser.py +63 -13
  142. rasa/core/nlg/generator.py +2 -2
  143. rasa/core/nlg/interpolator.py +4 -3
  144. rasa/core/nlg/response.py +3 -4
  145. rasa/core/nlg/summarize.py +1 -0
  146. rasa/core/persistor.py +3 -3
  147. rasa/core/policies/ensemble.py +10 -9
  148. rasa/core/policies/enterprise_search_policy.py +86 -21
  149. rasa/core/policies/flow_policy.py +13 -14
  150. rasa/core/policies/flows/flow_executor.py +35 -11
  151. rasa/core/policies/intentless_policy.py +6 -7
  152. rasa/core/policies/memoization.py +22 -20
  153. rasa/core/policies/policy.py +24 -22
  154. rasa/core/policies/rule_policy.py +37 -36
  155. rasa/core/policies/ted_policy.py +87 -85
  156. rasa/core/policies/unexpected_intent_policy.py +77 -75
  157. rasa/core/processor.py +96 -65
  158. rasa/core/run.py +1 -1
  159. rasa/core/secrets_manager/endpoints.py +2 -3
  160. rasa/core/secrets_manager/factory.py +2 -3
  161. rasa/core/secrets_manager/secret_manager.py +2 -3
  162. rasa/core/secrets_manager/vault.py +2 -2
  163. rasa/core/test.py +30 -30
  164. rasa/core/tracker_store.py +15 -15
  165. rasa/core/train.py +1 -1
  166. rasa/core/training/__init__.py +2 -2
  167. rasa/core/training/converters/responses_prefix_converter.py +1 -2
  168. rasa/core/training/interactive.py +13 -13
  169. rasa/core/training/story_conflict.py +4 -5
  170. rasa/core/training/training.py +3 -5
  171. rasa/core/utils.py +5 -5
  172. rasa/core/visualize.py +1 -1
  173. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
  174. rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
  175. rasa/dialogue_understanding/commands/__init__.py +22 -22
  176. rasa/dialogue_understanding/commands/can_not_handle_command.py +20 -1
  177. rasa/dialogue_understanding/commands/cancel_flow_command.py +18 -7
  178. rasa/dialogue_understanding/commands/change_flow_command.py +18 -2
  179. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +18 -4
  180. rasa/dialogue_understanding/commands/clarify_command.py +19 -3
  181. rasa/dialogue_understanding/commands/command.py +19 -3
  182. rasa/dialogue_understanding/commands/correct_slots_command.py +3 -3
  183. rasa/dialogue_understanding/commands/error_command.py +1 -1
  184. rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
  185. rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
  186. rasa/dialogue_understanding/commands/human_handoff_command.py +16 -4
  187. rasa/dialogue_understanding/commands/knowledge_answer_command.py +18 -4
  188. rasa/dialogue_understanding/commands/noop_command.py +2 -1
  189. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +16 -4
  190. rasa/dialogue_understanding/commands/restart_command.py +2 -5
  191. rasa/dialogue_understanding/commands/session_end_command.py +3 -5
  192. rasa/dialogue_understanding/commands/session_start_command.py +3 -5
  193. rasa/dialogue_understanding/commands/set_slot_command.py +27 -3
  194. rasa/dialogue_understanding/commands/skip_question_command.py +16 -4
  195. rasa/dialogue_understanding/commands/start_flow_command.py +17 -2
  196. rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
  197. rasa/dialogue_understanding/commands/utils.py +64 -45
  198. rasa/dialogue_understanding/constants.py +1 -0
  199. rasa/dialogue_understanding/generator/command_generator.py +2 -119
  200. rasa/dialogue_understanding/generator/command_parser.py +201 -0
  201. rasa/dialogue_understanding/generator/constants.py +2 -2
  202. rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
  203. rasa/dialogue_understanding/generator/llm_based_command_generator.py +11 -57
  204. rasa/dialogue_understanding/generator/llm_command_generator.py +2 -1
  205. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +67 -120
  206. rasa/dialogue_understanding/generator/nlu_command_adapter.py +8 -10
  207. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +32 -93
  208. rasa/dialogue_understanding/generator/utils.py +45 -0
  209. rasa/dialogue_understanding/patterns/cancel.py +2 -1
  210. rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
  211. rasa/dialogue_understanding/patterns/chitchat.py +1 -1
  212. rasa/dialogue_understanding/patterns/clarify.py +2 -1
  213. rasa/dialogue_understanding/patterns/code_change.py +2 -0
  214. rasa/dialogue_understanding/patterns/collect_information.py +6 -3
  215. rasa/dialogue_understanding/patterns/completed.py +1 -1
  216. rasa/dialogue_understanding/patterns/continue_interrupted.py +10 -1
  217. rasa/dialogue_understanding/patterns/correction.py +4 -2
  218. rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
  219. rasa/dialogue_understanding/patterns/internal_error.py +1 -0
  220. rasa/dialogue_understanding/patterns/search.py +1 -1
  221. rasa/dialogue_understanding/patterns/session_start.py +1 -1
  222. rasa/dialogue_understanding/patterns/skip_question.py +1 -0
  223. rasa/dialogue_understanding/patterns/user_silence.py +1 -1
  224. rasa/dialogue_understanding/processor/command_processor.py +13 -9
  225. rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
  226. rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
  227. rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
  228. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
  229. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
  230. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
  231. rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
  232. rasa/dialogue_understanding/stack/utils.py +8 -4
  233. rasa/dialogue_understanding/utils.py +121 -2
  234. rasa/dialogue_understanding_test/README.md +379 -0
  235. rasa/dialogue_understanding_test/command_comparison.py +60 -0
  236. rasa/dialogue_understanding_test/command_metric_calculation.py +110 -4
  237. rasa/dialogue_understanding_test/constants.py +6 -1
  238. rasa/dialogue_understanding_test/du_test_case.py +252 -38
  239. rasa/dialogue_understanding_test/du_test_result.py +281 -2
  240. rasa/dialogue_understanding_test/du_test_runner.py +239 -10
  241. rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
  242. rasa/dialogue_understanding_test/io.py +338 -20
  243. rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
  244. rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
  245. rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
  246. rasa/dialogue_understanding_test/utils.py +70 -0
  247. rasa/dialogue_understanding_test/validation.py +59 -4
  248. rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
  249. rasa/e2e_test/assertions.py +1 -1
  250. rasa/e2e_test/e2e_config.py +1 -1
  251. rasa/e2e_test/e2e_test_case.py +3 -4
  252. rasa/e2e_test/e2e_test_converter.py +2 -3
  253. rasa/e2e_test/e2e_test_coverage_report.py +6 -6
  254. rasa/e2e_test/e2e_test_result.py +1 -1
  255. rasa/e2e_test/e2e_test_runner.py +134 -31
  256. rasa/e2e_test/stub_custom_action.py +1 -1
  257. rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
  258. rasa/e2e_test/utils/io.py +132 -65
  259. rasa/e2e_test/utils/validation.py +1 -1
  260. rasa/engine/caching.py +5 -7
  261. rasa/engine/constants.py +1 -1
  262. rasa/engine/graph.py +2 -2
  263. rasa/engine/recipes/default_components.py +13 -15
  264. rasa/engine/recipes/recipe.py +2 -2
  265. rasa/engine/runner/dask.py +2 -2
  266. rasa/engine/runner/interface.py +1 -0
  267. rasa/engine/storage/local_model_storage.py +5 -4
  268. rasa/engine/storage/resource.py +2 -1
  269. rasa/engine/storage/storage.py +5 -3
  270. rasa/engine/training/components.py +2 -1
  271. rasa/engine/training/fingerprinting.py +4 -2
  272. rasa/engine/training/graph_trainer.py +4 -4
  273. rasa/engine/training/hooks.py +2 -2
  274. rasa/engine/validation.py +34 -33
  275. rasa/exceptions.py +3 -2
  276. rasa/graph_components/converters/nlu_message_converter.py +3 -3
  277. rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
  278. rasa/graph_components/providers/domain_provider.py +3 -2
  279. rasa/graph_components/providers/flows_provider.py +2 -3
  280. rasa/graph_components/providers/forms_provider.py +4 -4
  281. rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
  282. rasa/graph_components/providers/responses_provider.py +4 -4
  283. rasa/graph_components/providers/rule_only_provider.py +3 -2
  284. rasa/graph_components/providers/story_graph_provider.py +8 -8
  285. rasa/graph_components/providers/training_tracker_provider.py +3 -2
  286. rasa/graph_components/validators/default_recipe_validator.py +16 -16
  287. rasa/graph_components/validators/finetuning_validator.py +10 -8
  288. rasa/hooks.py +18 -12
  289. rasa/jupyter.py +2 -2
  290. rasa/llm_fine_tuning/annotation_module.py +4 -4
  291. rasa/llm_fine_tuning/conversations.py +6 -6
  292. rasa/llm_fine_tuning/llm_data_preparation_module.py +1 -1
  293. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
  294. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +1 -1
  295. rasa/llm_fine_tuning/paraphrasing_module.py +1 -1
  296. rasa/llm_fine_tuning/storage.py +3 -3
  297. rasa/markers/marker.py +2 -3
  298. rasa/markers/marker_base.py +1 -2
  299. rasa/markers/upload.py +2 -2
  300. rasa/markers/validate.py +2 -3
  301. rasa/model.py +3 -5
  302. rasa/model_manager/config.py +1 -1
  303. rasa/model_manager/model_api.py +5 -4
  304. rasa/model_manager/runner_service.py +6 -6
  305. rasa/model_manager/socket_bridge.py +8 -3
  306. rasa/model_manager/studio_jwt_auth.py +1 -0
  307. rasa/model_manager/trainer_service.py +9 -7
  308. rasa/model_manager/utils.py +1 -1
  309. rasa/model_manager/warm_rasa_process.py +14 -8
  310. rasa/model_service.py +5 -6
  311. rasa/model_testing.py +13 -15
  312. rasa/nlu/classifiers/diet_classifier.py +72 -73
  313. rasa/nlu/classifiers/fallback_classifier.py +9 -8
  314. rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
  315. rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
  316. rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
  317. rasa/nlu/classifiers/regex_message_handler.py +3 -2
  318. rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
  319. rasa/nlu/convert.py +2 -2
  320. rasa/nlu/emulators/dialogflow.py +3 -3
  321. rasa/nlu/emulators/luis.py +5 -5
  322. rasa/nlu/emulators/no_emulator.py +1 -0
  323. rasa/nlu/emulators/wit.py +4 -4
  324. rasa/nlu/extractors/crf_entity_extractor.py +11 -11
  325. rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
  326. rasa/nlu/extractors/entity_synonyms.py +10 -9
  327. rasa/nlu/extractors/extractor.py +16 -16
  328. rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
  329. rasa/nlu/extractors/regex_entity_extractor.py +11 -10
  330. rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
  331. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
  332. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
  333. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
  334. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
  335. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
  336. rasa/nlu/featurizers/featurizer.py +5 -4
  337. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
  338. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
  339. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
  340. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
  341. rasa/nlu/model.py +0 -1
  342. rasa/nlu/selectors/response_selector.py +67 -68
  343. rasa/nlu/test.py +38 -38
  344. rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
  345. rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
  346. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
  347. rasa/nlu/tokenizers/tokenizer.py +6 -7
  348. rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
  349. rasa/nlu/utils/bilou_utils.py +7 -7
  350. rasa/nlu/utils/hugging_face/registry.py +22 -22
  351. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
  352. rasa/nlu/utils/mitie_utils.py +2 -1
  353. rasa/nlu/utils/pattern_utils.py +1 -1
  354. rasa/nlu/utils/spacy_utils.py +3 -3
  355. rasa/plugin.py +12 -1
  356. rasa/server.py +37 -1
  357. rasa/shared/constants.py +22 -2
  358. rasa/shared/core/command_payload_reader.py +15 -7
  359. rasa/shared/core/constants.py +4 -1
  360. rasa/shared/core/conversation.py +1 -2
  361. rasa/shared/core/events.py +47 -37
  362. rasa/shared/core/flows/__init__.py +0 -1
  363. rasa/shared/core/flows/flow.py +11 -11
  364. rasa/shared/core/flows/flow_step.py +19 -13
  365. rasa/shared/core/flows/flow_step_links.py +21 -14
  366. rasa/shared/core/flows/flow_step_sequence.py +6 -4
  367. rasa/shared/core/flows/flows_list.py +3 -3
  368. rasa/shared/core/flows/nlu_trigger.py +1 -1
  369. rasa/shared/core/flows/steps/__init__.py +2 -2
  370. rasa/shared/core/flows/steps/action.py +4 -3
  371. rasa/shared/core/flows/steps/call.py +4 -4
  372. rasa/shared/core/flows/steps/collect.py +7 -4
  373. rasa/shared/core/flows/steps/continuation.py +3 -1
  374. rasa/shared/core/flows/steps/end.py +3 -1
  375. rasa/shared/core/flows/steps/internal.py +3 -2
  376. rasa/shared/core/flows/steps/link.py +6 -4
  377. rasa/shared/core/flows/steps/no_operation.py +7 -5
  378. rasa/shared/core/flows/steps/set_slots.py +4 -3
  379. rasa/shared/core/flows/steps/start.py +3 -1
  380. rasa/shared/core/flows/utils.py +1 -0
  381. rasa/shared/core/flows/validation.py +3 -5
  382. rasa/shared/core/generator.py +20 -21
  383. rasa/shared/core/slot_mappings.py +15 -15
  384. rasa/shared/core/slots.py +3 -3
  385. rasa/shared/core/trackers.py +31 -31
  386. rasa/shared/core/training_data/loading.py +1 -1
  387. rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
  388. rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
  389. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
  390. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
  391. rasa/shared/core/training_data/structures.py +11 -12
  392. rasa/shared/core/training_data/visualization.py +10 -10
  393. rasa/shared/data.py +6 -6
  394. rasa/shared/engine/caching.py +0 -1
  395. rasa/shared/exceptions.py +2 -2
  396. rasa/shared/importers/rasa.py +5 -6
  397. rasa/shared/importers/utils.py +1 -1
  398. rasa/shared/nlu/constants.py +3 -0
  399. rasa/shared/nlu/training_data/entities_parser.py +6 -6
  400. rasa/shared/nlu/training_data/features.py +3 -3
  401. rasa/shared/nlu/training_data/formats/__init__.py +1 -1
  402. rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
  403. rasa/shared/nlu/training_data/formats/luis.py +7 -8
  404. rasa/shared/nlu/training_data/formats/rasa.py +4 -5
  405. rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
  406. rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
  407. rasa/shared/nlu/training_data/formats/wit.py +3 -4
  408. rasa/shared/nlu/training_data/loading.py +4 -4
  409. rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
  410. rasa/shared/nlu/training_data/message.py +13 -14
  411. rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
  412. rasa/shared/nlu/training_data/schemas/responses.yml +1 -0
  413. rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
  414. rasa/shared/nlu/training_data/training_data.py +12 -13
  415. rasa/shared/nlu/training_data/util.py +11 -10
  416. rasa/shared/providers/_configs/azure_openai_client_config.py +3 -119
  417. rasa/shared/providers/_configs/client_config.py +1 -3
  418. rasa/shared/providers/_configs/default_litellm_client_config.py +1 -3
  419. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -3
  420. rasa/shared/providers/_configs/litellm_router_client_config.py +1 -3
  421. rasa/shared/providers/_configs/model_group_config.py +2 -7
  422. rasa/shared/providers/_configs/openai_client_config.py +1 -3
  423. rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -3
  424. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -3
  425. rasa/shared/providers/_configs/utils.py +1 -0
  426. rasa/shared/providers/_ssl_verification_utils.py +5 -6
  427. rasa/shared/providers/_utils.py +5 -5
  428. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
  429. rasa/shared/providers/embedding/azure_openai_embedding_client.py +3 -26
  430. rasa/shared/providers/embedding/embedding_client.py +1 -1
  431. rasa/shared/providers/embedding/litellm_router_embedding_client.py +1 -3
  432. rasa/shared/providers/llm/_base_litellm_client.py +1 -3
  433. rasa/shared/providers/llm/azure_openai_llm_client.py +25 -79
  434. rasa/shared/providers/llm/default_litellm_llm_client.py +1 -3
  435. rasa/shared/providers/llm/litellm_router_llm_client.py +2 -21
  436. rasa/shared/providers/llm/llm_client.py +1 -3
  437. rasa/shared/providers/llm/llm_response.py +41 -2
  438. rasa/shared/providers/llm/openai_llm_client.py +3 -9
  439. rasa/shared/providers/llm/rasa_llm_client.py +6 -20
  440. rasa/shared/providers/llm/self_hosted_llm_client.py +3 -9
  441. rasa/shared/providers/mappings.py +18 -19
  442. rasa/shared/providers/router/_base_litellm_router_client.py +1 -3
  443. rasa/shared/providers/router/router_client.py +1 -3
  444. rasa/shared/utils/cli.py +1 -1
  445. rasa/shared/utils/common.py +1 -1
  446. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
  447. rasa/shared/utils/health_check/health_check.py +3 -3
  448. rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
  449. rasa/shared/utils/io.py +1 -1
  450. rasa/shared/utils/llm.py +5 -9
  451. rasa/shared/utils/pykwalify_extensions.py +1 -1
  452. rasa/shared/utils/schemas/events.py +1 -1
  453. rasa/shared/utils/yaml.py +29 -26
  454. rasa/studio/auth.py +3 -3
  455. rasa/studio/config.py +1 -2
  456. rasa/studio/data_handler.py +3 -3
  457. rasa/studio/download.py +1 -1
  458. rasa/studio/results_logger.py +3 -3
  459. rasa/studio/upload.py +2 -0
  460. rasa/telemetry.py +31 -0
  461. rasa/tracing/config.py +3 -3
  462. rasa/tracing/instrumentation/attribute_extractors.py +2 -0
  463. rasa/tracing/instrumentation/instrumentation.py +4 -4
  464. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
  465. rasa/tracing/instrumentation/metrics.py +11 -11
  466. rasa/tracing/metric_instrument_provider.py +14 -14
  467. rasa/utils/common.py +12 -9
  468. rasa/utils/endpoints.py +1 -1
  469. rasa/utils/io.py +7 -7
  470. rasa/utils/licensing.py +3 -4
  471. rasa/utils/log_utils.py +7 -6
  472. rasa/utils/ml_utils.py +1 -0
  473. rasa/utils/plotting.py +3 -3
  474. rasa/utils/sanic_error_handler.py +1 -1
  475. rasa/utils/tensorflow/callback.py +2 -2
  476. rasa/utils/tensorflow/crf.py +2 -2
  477. rasa/utils/tensorflow/data_generator.py +5 -5
  478. rasa/utils/tensorflow/environment.py +3 -3
  479. rasa/utils/tensorflow/feature_array.py +2 -3
  480. rasa/utils/tensorflow/layers.py +18 -12
  481. rasa/utils/tensorflow/layers_utils.py +2 -1
  482. rasa/utils/tensorflow/metrics.py +2 -2
  483. rasa/utils/tensorflow/model_data.py +7 -7
  484. rasa/utils/tensorflow/model_data_utils.py +10 -9
  485. rasa/utils/tensorflow/models.py +31 -32
  486. rasa/utils/tensorflow/rasa_layers.py +20 -19
  487. rasa/utils/tensorflow/types.py +2 -1
  488. rasa/utils/train_utils.py +23 -21
  489. rasa/utils/url_tools.py +1 -1
  490. rasa/validator.py +17 -1
  491. rasa/version.py +1 -1
  492. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/METADATA +8 -9
  493. rasa_pro-3.12.0.dev3.dist-info/RECORD +800 -0
  494. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +0 -1
  495. rasa/shared/providers/_configs/azure_entra_id_client_creds.py +0 -40
  496. rasa/shared/providers/_configs/azure_entra_id_config.py +0 -533
  497. rasa/shared/providers/_configs/oauth_config.py +0 -33
  498. rasa/shared/providers/constants.py +0 -6
  499. rasa_pro-3.12.0.dev2.dist-info/RECORD +0 -793
  500. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/NOTICE +0 -0
  501. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/WHEEL +0 -0
  502. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/entry_points.txt +0 -0
rasa/core/processor.py CHANGED
@@ -1,62 +1,77 @@
1
- import inspect
2
1
  import copy
2
+ import inspect
3
3
  import logging
4
- import structlog
5
4
  import os
6
5
  import re
7
- from pathlib import Path
8
6
  import tarfile
9
7
  import time
8
+ from pathlib import Path
10
9
  from types import LambdaType
11
- from typing import Any, Dict, List, Optional, TYPE_CHECKING, Text, Tuple, Union
10
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
11
+
12
+ import structlog
13
+
14
+ import rasa.core.actions.action
15
+ import rasa.core.tracker_store
16
+ import rasa.core.utils
17
+ import rasa.shared.core.trackers
18
+ import rasa.shared.utils.io
19
+ from rasa.core import jobs
20
+ from rasa.core.actions.action import Action
12
21
  from rasa.core.actions.action_exceptions import ActionExecutionRejection
13
22
  from rasa.core.actions.forms import FormAction
23
+ from rasa.core.channels.channel import (
24
+ CollectingOutputChannel,
25
+ OutputChannel,
26
+ UserMessage,
27
+ )
14
28
  from rasa.core.http_interpreter import RasaNLUHttpInterpreter
29
+ from rasa.core.lock_store import LockStore
30
+ from rasa.core.nlg import NaturalLanguageGenerator
31
+ from rasa.core.policies.policy import PolicyPrediction
15
32
  from rasa.dialogue_understanding.commands import (
33
+ CannotHandleCommand,
16
34
  Command,
17
35
  NoopCommand,
18
36
  SetSlotCommand,
19
- CannotHandleCommand,
20
37
  )
38
+ from rasa.dialogue_understanding.utils import add_commands_to_message_parse_data
21
39
  from rasa.engine import loader
22
40
  from rasa.engine.constants import (
41
+ PLACEHOLDER_ENDPOINTS,
23
42
  PLACEHOLDER_MESSAGE,
24
43
  PLACEHOLDER_TRACKER,
25
- PLACEHOLDER_ENDPOINTS,
26
44
  )
27
45
  from rasa.engine.runner.dask import DaskGraphRunner
46
+ from rasa.engine.runner.interface import GraphRunner
28
47
  from rasa.engine.storage.local_model_storage import LocalModelStorage
29
48
  from rasa.engine.storage.storage import ModelMetadata
49
+ from rasa.exceptions import ActionLimitReached, ModelNotFound
30
50
  from rasa.model import get_latest_model
31
51
  from rasa.plugin import plugin_manager
32
- from rasa.shared.core.flows import FlowsList
33
- from rasa.shared.data import TrainingType, create_regex_pattern_reader
34
- import rasa.shared.utils.io
35
- import rasa.core.actions.action
36
- from rasa.core import jobs
37
- from rasa.core.actions.action import Action
38
- from rasa.core.channels.channel import (
39
- CollectingOutputChannel,
40
- OutputChannel,
41
- UserMessage,
52
+ from rasa.shared.constants import (
53
+ ASSISTANT_ID_KEY,
54
+ DEFAULT_SENDER_ID,
55
+ DOCS_URL_DOMAINS,
56
+ DOCS_URL_NLU_BASED_POLICIES,
57
+ RASA_PATTERN_CANNOT_HANDLE_INVALID_INTENT,
58
+ ROUTE_TO_CALM_SLOT,
59
+ UTTER_PREFIX,
42
60
  )
43
- import rasa.core.utils
44
- from rasa.core.policies.policy import PolicyPrediction
45
- from rasa.engine.runner.interface import GraphRunner
46
- from rasa.exceptions import ActionLimitReached, ModelNotFound
47
61
  from rasa.shared.core.constants import (
48
62
  ACTION_CORRECT_FLOW_SLOT,
49
- SLOT_CONSECUTIVE_SILENCE_TIMEOUTS,
50
- SLOT_SILENCE_TIMEOUT,
51
- USER_INTENT_RESTART,
63
+ ACTION_EXTRACT_SLOTS,
52
64
  ACTION_LISTEN_NAME,
53
65
  ACTION_SESSION_START_NAME,
54
66
  FOLLOWUP_ACTION,
55
67
  SESSION_START_METADATA_SLOT,
56
- ACTION_EXTRACT_SLOTS,
68
+ SLOT_CONSECUTIVE_SILENCE_TIMEOUTS,
69
+ SLOT_SILENCE_TIMEOUT,
70
+ USER_INTENT_RESTART,
57
71
  USER_INTENT_SILENCE_TIMEOUT,
58
72
  )
59
73
  from rasa.shared.core.events import (
74
+ ActionExecuted,
60
75
  ActionExecutionRejected,
61
76
  BotUttered,
62
77
  Event,
@@ -64,37 +79,25 @@ from rasa.shared.core.events import (
64
79
  ReminderScheduled,
65
80
  SlotSet,
66
81
  UserUttered,
67
- ActionExecuted,
68
- )
69
- from rasa.shared.constants import (
70
- ASSISTANT_ID_KEY,
71
- DOCS_URL_DOMAINS,
72
- DEFAULT_SENDER_ID,
73
- ROUTE_TO_CALM_SLOT,
74
- DOCS_URL_NLU_BASED_POLICIES,
75
- UTTER_PREFIX,
76
- RASA_PATTERN_CANNOT_HANDLE_INVALID_INTENT,
77
82
  )
78
- from rasa.core.nlg import NaturalLanguageGenerator
79
- from rasa.core.lock_store import LockStore
80
- from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
81
- import rasa.core.tracker_store
82
- import rasa.core.actions.action
83
- import rasa.shared.core.trackers
83
+ from rasa.shared.core.flows import FlowsList
84
84
  from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
85
+ from rasa.shared.data import TrainingType, create_regex_pattern_reader
85
86
  from rasa.shared.nlu.constants import (
86
87
  COMMANDS,
87
88
  ENTITIES,
89
+ FULL_RETRIEVAL_INTENT_NAME_KEY,
88
90
  INTENT,
89
91
  INTENT_NAME_KEY,
90
92
  INTENT_RESPONSE_KEY,
93
+ PREDICTED_COMMANDS,
91
94
  PREDICTED_CONFIDENCE_KEY,
92
- FULL_RETRIEVAL_INTENT_NAME_KEY,
93
- RESPONSE_SELECTOR,
94
95
  RESPONSE,
96
+ RESPONSE_SELECTOR,
95
97
  TEXT,
96
98
  )
97
99
  from rasa.shared.nlu.training_data.message import Message
100
+ from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
98
101
  from rasa.utils.endpoints import EndpointConfig
99
102
 
100
103
  if TYPE_CHECKING:
@@ -818,9 +821,7 @@ class MessageProcessor:
818
821
  return parse_data
819
822
 
820
823
  def _sanitize_message(self, message: UserMessage) -> UserMessage:
821
- """Sanitize user message by removing prepended slashes before the
822
- actual content.
823
- """
824
+ """Sanitize user message by removing prepended slashes before the content."""
824
825
  # Regex pattern to match leading slashes and any whitespace before
825
826
  # actual content
826
827
  pattern = r"^[/\s]+"
@@ -898,9 +899,14 @@ class MessageProcessor:
898
899
  NLUCommandAdapter,
899
900
  )
900
901
 
902
+ message = Message(parse_data)
901
903
  commands = NLUCommandAdapter.convert_nlu_to_commands(
902
- Message(parse_data), tracker, await self.get_flows(), self.domain
904
+ message, tracker, await self.get_flows(), self.domain
905
+ )
906
+ add_commands_to_message_parse_data(
907
+ message, NLUCommandAdapter.__name__, commands
903
908
  )
909
+ parse_data[PREDICTED_COMMANDS] = message.get(PREDICTED_COMMANDS, [])
904
910
 
905
911
  # if there are no converted commands and parsed data contains invalid intent
906
912
  # add CannotHandleCommand as fallback
@@ -921,9 +927,7 @@ class MessageProcessor:
921
927
  return [command.as_dict() for command in commands]
922
928
 
923
929
  def _contains_undefined_intent(self, message: Message) -> bool:
924
- """Checks if the message contains an intent that is undefined
925
- in the domain.
926
- """
930
+ """Checks if the message contains an undefined intent."""
927
931
  intent_name = message.get(INTENT, {}).get("name")
928
932
  return intent_name is not None and intent_name not in self.domain.intents
929
933
 
@@ -987,6 +991,8 @@ class MessageProcessor:
987
991
  if parse_data["entities"]:
988
992
  self._log_slots(tracker)
989
993
 
994
+ plugin_manager().hook.after_new_user_message(tracker=tracker)
995
+
990
996
  logger.debug(
991
997
  f"Logged UserUtterance - tracker now has {len(tracker.events)} events."
992
998
  )
@@ -1270,6 +1276,7 @@ class MessageProcessor:
1270
1276
  events = await action.run(
1271
1277
  output_channel, nlg, temporary_tracker, self.domain
1272
1278
  )
1279
+ self._log_action_and_events_on_tracker(tracker, action, events, prediction)
1273
1280
  except ActionExecutionRejection:
1274
1281
  events = [
1275
1282
  ActionExecutionRejected(
@@ -1278,7 +1285,7 @@ class MessageProcessor:
1278
1285
  ]
1279
1286
  tracker.update(events[0])
1280
1287
  return self.should_predict_another_action(action.name())
1281
- except Exception:
1288
+ except Exception as e:
1282
1289
  structlogger.exception(
1283
1290
  "rasa.core.processor.run_action.exception",
1284
1291
  event_info=f"Encountered an exception while "
@@ -1287,9 +1294,15 @@ class MessageProcessor:
1287
1294
  f"Please check the logs of your action server for "
1288
1295
  f"more information.",
1289
1296
  )
1297
+ error_messge = str(e)
1290
1298
  events = []
1291
-
1292
- self._log_action_on_tracker(tracker, action, events, prediction)
1299
+ self._log_action_prediction_on_tracker(
1300
+ tracker,
1301
+ action,
1302
+ prediction,
1303
+ was_successful=False,
1304
+ error_message=error_messge,
1305
+ )
1293
1306
 
1294
1307
  if any(isinstance(e, UserUttered) for e in events):
1295
1308
  logger.debug(
@@ -1305,10 +1318,10 @@ class MessageProcessor:
1305
1318
  self._log_slots(tracker)
1306
1319
 
1307
1320
  await self.execute_side_effects(events, tracker, output_channel)
1308
-
1321
+ plugin_manager().hook.after_action_executed(tracker=tracker)
1309
1322
  return self.should_predict_another_action(action.name())
1310
1323
 
1311
- def _log_action_on_tracker(
1324
+ def _log_action_and_events_on_tracker(
1312
1325
  self,
1313
1326
  tracker: DialogueStateTracker,
1314
1327
  action: Action,
@@ -1325,16 +1338,9 @@ class MessageProcessor:
1325
1338
  isinstance(event, ActionExecutionRejected) for event in events
1326
1339
  )
1327
1340
  if not action_was_rejected_manually:
1328
- structlogger.debug(
1329
- "processor.actions.policy_prediction",
1330
- prediction_events=copy.deepcopy(prediction.events),
1331
- policy_name=prediction.policy_name,
1332
- action_name=action.name(),
1341
+ self._log_action_prediction_on_tracker(
1342
+ tracker, action, prediction, was_successful=True, error_message=None
1333
1343
  )
1334
- tracker.update_with_events(prediction.events)
1335
-
1336
- # log the action and its produced events
1337
- tracker.update(action.event_for_successful_execution(prediction))
1338
1344
 
1339
1345
  structlogger.debug(
1340
1346
  "processor.actions.log",
@@ -1343,6 +1349,29 @@ class MessageProcessor:
1343
1349
  )
1344
1350
  tracker.update_with_events(events)
1345
1351
 
1352
+ def _log_action_prediction_on_tracker(
1353
+ self,
1354
+ tracker: DialogueStateTracker,
1355
+ action: Action,
1356
+ prediction: PolicyPrediction,
1357
+ was_successful: bool,
1358
+ error_message: Optional[str],
1359
+ ) -> None:
1360
+ structlogger.debug(
1361
+ "processor.actions.policy_prediction",
1362
+ prediction_events=copy.deepcopy(prediction.events),
1363
+ policy_name=prediction.policy_name,
1364
+ action_name=action.name(),
1365
+ )
1366
+ tracker.update_with_events(prediction.events)
1367
+
1368
+ # log the action and its produced events
1369
+ tracker.update(
1370
+ action.event_for_successful_execution(
1371
+ prediction, was_successful, error_message
1372
+ )
1373
+ )
1374
+
1346
1375
  def _has_session_expired(self, tracker: DialogueStateTracker) -> bool:
1347
1376
  """Determine whether the latest session in `tracker` has expired.
1348
1377
 
@@ -1441,8 +1470,10 @@ class MessageProcessor:
1441
1470
  return len(filtered_commands) > 0
1442
1471
 
1443
1472
  def _is_calm_assistant(self) -> bool:
1444
- """Inspects the nodes of the graph schema to determine whether
1445
- any node is associated with the `FlowPolicy`, which is indicative of a
1473
+ """Inspects the nodes of the graph schema to decide if we are in CALM.
1474
+
1475
+ To determine whether we are in CALM mode, we check if any node is
1476
+ associated with the `FlowPolicy`, which is indicative of a
1446
1477
  CALM assistant setup.
1447
1478
 
1448
1479
  Returns:
rasa/core/run.py CHANGED
@@ -19,7 +19,6 @@ from typing import (
19
19
 
20
20
  from sanic import Sanic
21
21
  from sanic.worker.loader import AppLoader
22
- from rasa.core.channels.development_inspector import DevelopmentInspectProxy
23
22
 
24
23
  import rasa.core.utils
25
24
  import rasa.shared.utils.common
@@ -33,6 +32,7 @@ from rasa.core import agent, channels, constants
33
32
  from rasa.core.agent import Agent
34
33
  from rasa.core.channels import console
35
34
  from rasa.core.channels.channel import InputChannel
35
+ from rasa.core.channels.development_inspector import DevelopmentInspectProxy
36
36
  from rasa.core.persistor import StorageType
37
37
  from rasa.core.utils import AvailableEndpoints
38
38
  from rasa.plugin import plugin_manager
@@ -2,15 +2,14 @@ import logging
2
2
  from dataclasses import dataclass
3
3
  from typing import Any, Dict, List, Optional, Text, Union, cast
4
4
 
5
- from rasa.shared.exceptions import RasaException
6
- from rasa.utils.endpoints import EndpointConfig
7
-
8
5
  from rasa.core.secrets_manager.constants import (
9
6
  SECRET_KEY_LABEL,
10
7
  SECRET_MANAGER_PREFIX,
11
8
  SOURCE_KEY_LABEL,
12
9
  SUPPORTED_SECRET_MANAGERS,
13
10
  )
11
+ from rasa.shared.exceptions import RasaException
12
+ from rasa.utils.endpoints import EndpointConfig
14
13
 
15
14
  logger = logging.getLogger(__name__)
16
15
 
@@ -1,9 +1,6 @@
1
1
  import os
2
2
  from typing import Optional, Text, cast
3
3
 
4
- from rasa.shared.exceptions import RasaException
5
- from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
6
-
7
4
  from rasa.core.secrets_manager.constants import (
8
5
  SECRET_MANAGER_ENV_NAME,
9
6
  VAULT_DEFAULT_RASA_SECRETS_PATH,
@@ -29,6 +26,8 @@ from rasa.core.secrets_manager.vault import (
29
26
  VaultSecretManagerNonStrictConfig,
30
27
  VaultSecretsManager,
31
28
  )
29
+ from rasa.shared.exceptions import RasaException
30
+ from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
32
31
 
33
32
 
34
33
  def create(config: SecretManagerConfig) -> Optional[SecretsManager]:
@@ -5,14 +5,13 @@ import copy
5
5
  import logging
6
6
  from typing import Any, ClassVar, Dict, List, Optional, Text, cast
7
7
 
8
- from rasa.shared.exceptions import RasaException
9
- from rasa.utils.endpoints import EndpointConfig
10
-
11
8
  from rasa.core.secrets_manager.endpoints import (
12
9
  CredentialsLocation,
13
10
  EndpointReader,
14
11
  EndpointTrait,
15
12
  )
13
+ from rasa.shared.exceptions import RasaException
14
+ from rasa.utils.endpoints import EndpointConfig
16
15
  from rasa.utils.singleton import Singleton
17
16
 
18
17
  logger = logging.getLogger(__name__)
@@ -9,8 +9,6 @@ from typing import Any, Dict, Optional, Text, Union, cast
9
9
  import hvac.exceptions
10
10
  from apscheduler.schedulers.background import BackgroundScheduler
11
11
  from apscheduler.triggers.interval import IntervalTrigger
12
- from rasa.shared.exceptions import RasaException
13
- from rasa.utils.endpoints import EndpointConfig
14
12
 
15
13
  from rasa.core.secrets_manager.constants import (
16
14
  TRACKER_STORE_ENDPOINT_TYPE,
@@ -25,6 +23,8 @@ from rasa.core.secrets_manager.endpoints import (
25
23
  TrackerStoreEndpointValidator,
26
24
  )
27
25
  from rasa.core.secrets_manager.secret_manager import SecretManagerConfig, SecretsManager
26
+ from rasa.shared.exceptions import RasaException
27
+ from rasa.utils.endpoints import EndpointConfig
28
28
 
29
29
  logger = logging.getLogger(__name__)
30
30
 
rasa/core/test.py CHANGED
@@ -1,73 +1,72 @@
1
1
  import logging
2
2
  import os
3
- from pathlib import Path
4
3
  import tempfile
5
4
  import warnings as pywarnings
6
5
  from collections import defaultdict, namedtuple
7
- from typing import Any, Dict, List, Optional, Text, Tuple, TYPE_CHECKING, cast
6
+ from pathlib import Path
7
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, cast
8
8
 
9
+ import rasa.shared.utils.io
9
10
  from rasa import telemetry
11
+ from rasa.constants import PERCENTAGE_KEY, RESULTS_FILE
12
+ from rasa.core.actions.action import ActionRetrieveResponse
13
+ from rasa.core.channels import UserMessage
10
14
  from rasa.core.constants import (
11
15
  CONFUSION_MATRIX_STORIES_FILE,
12
- REPORT_STORIES_FILE,
13
16
  FAILED_STORIES_FILE,
14
- SUCCESSFUL_STORIES_FILE,
17
+ REPORT_STORIES_FILE,
15
18
  STORIES_WITH_WARNINGS_FILE,
19
+ SUCCESSFUL_STORIES_FILE,
16
20
  )
17
- from rasa.core.channels import UserMessage
18
21
  from rasa.core.policies.policy import PolicyPrediction
22
+ from rasa.exceptions import ActionLimitReached
23
+ from rasa.nlu.constants import (
24
+ RESPONSE_SELECTOR_DEFAULT_INTENT,
25
+ RESPONSE_SELECTOR_PROPERTY_NAME,
26
+ RESPONSE_SELECTOR_RETRIEVAL_INTENTS,
27
+ TOKENS_NAMES,
28
+ )
19
29
  from rasa.nlu.test import EntityEvaluationResult, evaluate_entities
20
30
  from rasa.nlu.tokenizers.tokenizer import Token
21
31
  from rasa.shared.constants import ROUTE_TO_CALM_SLOT
22
32
  from rasa.shared.core.constants import (
23
- POLICIES_THAT_EXTRACT_ENTITIES,
24
33
  ACTION_UNLIKELY_INTENT_NAME,
34
+ POLICIES_THAT_EXTRACT_ENTITIES,
25
35
  )
26
- from rasa.shared.exceptions import RasaException
27
- import rasa.shared.utils.io
36
+ from rasa.shared.core.domain import Domain
37
+ from rasa.shared.core.events import ActionExecuted, EntitiesAdded, SlotSet, UserUttered
38
+ from rasa.shared.core.trackers import DialogueStateTracker
28
39
  from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
29
40
  YAMLStoryWriter,
30
41
  )
31
42
  from rasa.shared.core.training_data.structures import StoryStep
32
- from rasa.shared.core.domain import Domain
33
- from rasa.nlu.constants import (
34
- RESPONSE_SELECTOR_DEFAULT_INTENT,
35
- RESPONSE_SELECTOR_RETRIEVAL_INTENTS,
36
- TOKENS_NAMES,
37
- RESPONSE_SELECTOR_PROPERTY_NAME,
38
- )
43
+ from rasa.shared.exceptions import RasaException
44
+ from rasa.shared.importers.importer import TrainingDataImporter
39
45
  from rasa.shared.nlu.constants import (
40
- INTENT,
41
46
  ENTITIES,
42
- ENTITY_ATTRIBUTE_VALUE,
43
- ENTITY_ATTRIBUTE_START,
44
47
  ENTITY_ATTRIBUTE_END,
45
- EXTRACTOR,
48
+ ENTITY_ATTRIBUTE_START,
49
+ ENTITY_ATTRIBUTE_TEXT,
46
50
  ENTITY_ATTRIBUTE_TYPE,
47
- INTENT_RESPONSE_KEY,
51
+ ENTITY_ATTRIBUTE_VALUE,
52
+ EXTRACTOR,
53
+ FULL_RETRIEVAL_INTENT_NAME_KEY,
54
+ INTENT,
48
55
  INTENT_NAME_KEY,
56
+ INTENT_RESPONSE_KEY,
49
57
  RESPONSE,
50
58
  RESPONSE_SELECTOR,
51
- FULL_RETRIEVAL_INTENT_NAME_KEY,
52
59
  TEXT,
53
- ENTITY_ATTRIBUTE_TEXT,
54
60
  )
55
- from rasa.constants import RESULTS_FILE, PERCENTAGE_KEY
56
- from rasa.shared.core.events import ActionExecuted, EntitiesAdded, UserUttered, SlotSet
57
- from rasa.shared.core.trackers import DialogueStateTracker
58
61
  from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
59
- from rasa.shared.importers.importer import TrainingDataImporter
60
62
  from rasa.shared.utils.io import DEFAULT_ENCODING
61
63
  from rasa.utils.tensorflow.constants import QUERY_INTENT_KEY, SEVERITY_KEY
62
- from rasa.exceptions import ActionLimitReached
63
-
64
- from rasa.core.actions.action import ActionRetrieveResponse
65
64
 
66
65
  if TYPE_CHECKING:
67
66
  from rasa.core.agent import Agent
68
67
  from rasa.core.processor import MessageProcessor
68
+ from rasa.shared.core.events import EntityPrediction, Event
69
69
  from rasa.shared.core.generator import TrainingDataGenerator
70
- from rasa.shared.core.events import Event, EntityPrediction
71
70
 
72
71
  logger = logging.getLogger(__name__)
73
72
 
@@ -1226,6 +1225,7 @@ def _plot_story_evaluation(
1226
1225
  """Plot a confusion matrix of story evaluation."""
1227
1226
  from sklearn.metrics import confusion_matrix
1228
1227
  from sklearn.utils.multiclass import unique_labels
1228
+
1229
1229
  from rasa.utils.plotting import plot_confusion_matrix
1230
1230
 
1231
1231
  confusion_matrix_filename = CONFUSION_MATRIX_STORIES_FILE
@@ -1,28 +1,29 @@
1
1
  from __future__ import annotations
2
+
2
3
  import contextlib
3
4
  import itertools
4
5
  import json
5
6
  import logging
6
7
  import os
7
8
  from inspect import isawaitable, iscoroutinefunction
8
-
9
9
  from time import sleep
10
10
  from typing import (
11
+ TYPE_CHECKING,
11
12
  Any,
12
13
  Callable,
13
14
  Dict,
15
+ Generator,
16
+ Generic,
14
17
  Iterable,
15
18
  Iterator,
16
19
  List,
17
20
  Optional,
18
21
  Text,
19
- Union,
20
- TYPE_CHECKING,
21
- Generator,
22
22
  TypeVar,
23
- Generic,
23
+ Union,
24
24
  )
25
25
 
26
+ import sqlalchemy as sa
26
27
  from boto3.dynamodb.conditions import Key
27
28
  from pymongo.collection import Collection
28
29
 
@@ -30,17 +31,17 @@ import rasa.shared.utils.cli
30
31
  import rasa.shared.utils.common
31
32
  import rasa.shared.utils.io
32
33
  import rasa.utils.json_utils
33
- from rasa.plugin import plugin_manager
34
- from rasa.shared.core.constants import ACTION_LISTEN_NAME
35
34
  from rasa.core.brokers.broker import EventBroker
36
35
  from rasa.core.constants import (
37
- POSTGRESQL_SCHEMA,
38
36
  POSTGRESQL_MAX_OVERFLOW,
39
37
  POSTGRESQL_POOL_SIZE,
38
+ POSTGRESQL_SCHEMA,
40
39
  )
40
+ from rasa.plugin import plugin_manager
41
+ from rasa.shared.core.constants import ACTION_LISTEN_NAME
41
42
  from rasa.shared.core.conversation import Dialogue
42
43
  from rasa.shared.core.domain import Domain
43
- from rasa.shared.core.events import SessionStarted, Event
44
+ from rasa.shared.core.events import Event, SessionStarted
44
45
  from rasa.shared.core.trackers import (
45
46
  ActionExecuted,
46
47
  DialogueStateTracker,
@@ -50,14 +51,13 @@ from rasa.shared.core.trackers import (
50
51
  from rasa.shared.exceptions import ConnectionException, RasaException
51
52
  from rasa.shared.nlu.constants import INTENT_NAME_KEY
52
53
  from rasa.utils.endpoints import EndpointConfig
53
- import sqlalchemy as sa
54
54
 
55
55
  if TYPE_CHECKING:
56
56
  import boto3.resources.factory.dynamodb.Table
57
- from sqlalchemy.engine.url import URL
58
- from sqlalchemy.engine.base import Engine
59
- from sqlalchemy.orm import Session, Query
60
57
  from sqlalchemy import Sequence
58
+ from sqlalchemy.engine.base import Engine
59
+ from sqlalchemy.engine.url import URL
60
+ from sqlalchemy.orm import Query, Session
61
61
 
62
62
  logger = logging.getLogger(__name__)
63
63
 
@@ -158,9 +158,9 @@ class TrackerStore:
158
158
  if isinstance(obj, TrackerStore):
159
159
  return obj
160
160
 
161
- from botocore.exceptions import BotoCoreError
162
161
  import pymongo.errors
163
162
  import sqlalchemy.exc
163
+ from botocore.exceptions import BotoCoreError
164
164
 
165
165
  try:
166
166
  _tracker_store = plugin_manager().hook.create_tracker_store(
@@ -799,8 +799,8 @@ class MongoTrackerStore(TrackerStore, SerializedTrackerAsText):
799
799
  event_broker: Optional[EventBroker] = None,
800
800
  **kwargs: Dict[Text, Any],
801
801
  ) -> None:
802
- from pymongo.database import Database
803
802
  from pymongo import MongoClient
803
+ from pymongo.database import Database
804
804
 
805
805
  self.client: MongoClient = MongoClient(
806
806
  host,
rasa/core/train.py CHANGED
@@ -2,7 +2,7 @@ import argparse
2
2
  import logging
3
3
  import os
4
4
  from pathlib import Path
5
- from typing import Dict, Optional, Text, List
5
+ from typing import Dict, List, Optional, Text
6
6
 
7
7
  import rasa.shared.utils.io
8
8
  import rasa.utils.io
@@ -1,4 +1,4 @@
1
- from typing import Text, List, Optional, Union, TYPE_CHECKING
1
+ from typing import TYPE_CHECKING, List, Optional, Text, Union
2
2
 
3
3
  if TYPE_CHECKING:
4
4
  from rasa.shared.core.domain import Domain
@@ -21,8 +21,8 @@ def extract_story_graph(
21
21
  Returns:
22
22
  The loaded training data as graph.
23
23
  """
24
- from rasa.shared.core.training_data.structures import StoryGraph
25
24
  import rasa.shared.core.training_data.loading as core_loading
25
+ from rasa.shared.core.training_data.structures import StoryGraph
26
26
 
27
27
  story_steps = core_loading.load_data_from_resource(
28
28
  resource_name, domain, exclusion_percentage=exclusion_percentage
@@ -1,6 +1,7 @@
1
1
  from pathlib import Path
2
2
  from typing import Text
3
3
 
4
+ from rasa.shared.constants import UTTER_PREFIX
4
5
  from rasa.shared.core.domain import Domain, InvalidDomain
5
6
  from rasa.shared.core.events import ActionExecuted
6
7
  from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
@@ -9,10 +10,8 @@ from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
9
10
  from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
10
11
  YAMLStoryWriter,
11
12
  )
12
- from rasa.shared.constants import UTTER_PREFIX
13
13
  from rasa.utils.converter import TrainingDataConverter
14
14
 
15
-
16
15
  OBSOLETE_RESPOND_PREFIX = "respond_"
17
16
 
18
17