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
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import Any, Dict, List, Optional, Text
3
4
 
4
5
  import regex
5
6
 
6
7
  import rasa.shared.utils.io
7
8
  import rasa.utils.io
8
-
9
9
  from rasa.engine.graph import ExecutionContext
10
10
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
11
11
  from rasa.engine.storage.resource import Resource
@@ -1,29 +1,29 @@
1
1
  import logging
2
2
  import operator
3
- from collections import defaultdict, Counter
4
- from typing import List, Tuple, Text, Optional, Dict, Any, TYPE_CHECKING
3
+ from collections import Counter, defaultdict
4
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple
5
5
 
6
6
  from rasa.nlu.constants import (
7
- TOKENS_NAMES,
8
7
  BILOU_ENTITIES,
9
8
  BILOU_ENTITIES_GROUP,
10
9
  BILOU_ENTITIES_ROLE,
10
+ TOKENS_NAMES,
11
11
  )
12
12
  from rasa.shared.nlu.constants import (
13
- TEXT,
14
13
  ENTITIES,
15
- ENTITY_ATTRIBUTE_START,
16
14
  ENTITY_ATTRIBUTE_END,
17
- ENTITY_ATTRIBUTE_TYPE,
18
15
  ENTITY_ATTRIBUTE_GROUP,
19
16
  ENTITY_ATTRIBUTE_ROLE,
17
+ ENTITY_ATTRIBUTE_START,
18
+ ENTITY_ATTRIBUTE_TYPE,
20
19
  NO_ENTITY_TAG,
20
+ TEXT,
21
21
  )
22
22
 
23
23
  if TYPE_CHECKING:
24
24
  from rasa.nlu.tokenizers.tokenizer import Token
25
- from rasa.shared.nlu.training_data.training_data import TrainingData
26
25
  from rasa.shared.nlu.training_data.message import Message
26
+ from rasa.shared.nlu.training_data.training_data import TrainingData
27
27
 
28
28
  logger = logging.getLogger(__name__)
29
29
 
@@ -6,42 +6,42 @@ from typing import Dict, Text, Type
6
6
  logging.getLogger("transformers.file_utils").setLevel(logging.WARNING)
7
7
 
8
8
  from transformers import ( # noqa: E402
9
- TFPreTrainedModel,
9
+ BertTokenizer,
10
+ CamembertTokenizer,
11
+ # XLMTokenizer,
12
+ DistilBertTokenizer,
13
+ GPT2Tokenizer,
14
+ OpenAIGPTTokenizer,
15
+ PreTrainedTokenizer,
16
+ RobertaTokenizer,
10
17
  TFBertModel,
11
- TFOpenAIGPTModel,
12
- TFGPT2Model,
13
- TFXLNetModel,
18
+ TFCamembertModel,
14
19
  # TFXLMModel,
15
20
  TFDistilBertModel,
21
+ TFGPT2Model,
22
+ TFOpenAIGPTModel,
23
+ TFPreTrainedModel,
16
24
  TFRobertaModel,
17
- TFCamembertModel,
18
- PreTrainedTokenizer,
19
- BertTokenizer,
20
- OpenAIGPTTokenizer,
21
- GPT2Tokenizer,
25
+ TFXLNetModel,
22
26
  XLNetTokenizer,
23
- # XLMTokenizer,
24
- DistilBertTokenizer,
25
- RobertaTokenizer,
26
- CamembertTokenizer,
27
27
  )
28
+
28
29
  from rasa.nlu.utils.hugging_face.transformers_pre_post_processors import ( # noqa: E402
30
+ bert_embeddings_post_processor,
31
+ bert_tokens_cleaner,
29
32
  bert_tokens_pre_processor,
33
+ camembert_tokens_pre_processor,
34
+ gpt2_tokens_cleaner,
35
+ gpt_embeddings_post_processor,
30
36
  gpt_tokens_pre_processor,
31
- xlnet_tokens_pre_processor,
37
+ openaigpt_tokens_cleaner,
38
+ roberta_embeddings_post_processor,
32
39
  roberta_tokens_pre_processor,
33
- bert_embeddings_post_processor,
34
- gpt_embeddings_post_processor,
35
40
  xlnet_embeddings_post_processor,
36
- roberta_embeddings_post_processor,
37
- bert_tokens_cleaner,
38
- openaigpt_tokens_cleaner,
39
- gpt2_tokens_cleaner,
40
41
  xlnet_tokens_cleaner,
41
- camembert_tokens_pre_processor,
42
+ xlnet_tokens_pre_processor,
42
43
  )
43
44
 
44
-
45
45
  model_class_dict: Dict[Text, Type[TFPreTrainedModel]] = {
46
46
  "bert": TFBertModel,
47
47
  "gpt": TFOpenAIGPTModel,
@@ -1,4 +1,5 @@
1
- from typing import List, Tuple, Text
1
+ from typing import List, Text, Tuple
2
+
2
3
  import numpy as np
3
4
 
4
5
 
@@ -1,9 +1,10 @@
1
1
  from __future__ import annotations
2
+
2
3
  import typing
3
4
  from pathlib import Path
4
5
  from typing import Any, Dict, List, Optional, Text
5
6
 
6
- from rasa.engine.graph import GraphComponent, ExecutionContext
7
+ from rasa.engine.graph import ExecutionContext, GraphComponent
7
8
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
8
9
  from rasa.engine.storage.resource import Resource
9
10
  from rasa.engine.storage.storage import ModelStorage
@@ -2,8 +2,8 @@ import re
2
2
  from typing import Dict, List, Text, Union
3
3
 
4
4
  import rasa.shared.utils.io
5
- from rasa.shared.nlu.training_data.training_data import TrainingData
6
5
  from rasa.shared.exceptions import InvalidConfigException
6
+ from rasa.shared.nlu.training_data.training_data import TrainingData
7
7
 
8
8
 
9
9
  def _convert_lookup_tables_to_regex(
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- import typing
5
4
  import logging
5
+ import typing
6
6
  from typing import Any, Dict, List, Optional, Text, Tuple
7
7
 
8
8
  from rasa.engine.graph import ExecutionContext, GraphComponent
@@ -10,10 +10,10 @@ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
10
10
  from rasa.engine.storage.resource import Resource
11
11
  from rasa.engine.storage.storage import ModelStorage
12
12
  from rasa.nlu.constants import DENSE_FEATURIZABLE_ATTRIBUTES, SPACY_DOCS
13
- from rasa.shared.nlu.training_data.message import Message
14
- from rasa.shared.nlu.training_data.training_data import TrainingData
15
13
  from rasa.nlu.model import InvalidModelError
16
14
  from rasa.shared.constants import DOCS_URL_COMPONENTS
15
+ from rasa.shared.nlu.training_data.message import Message
16
+ from rasa.shared.nlu.training_data.training_data import TrainingData
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
rasa/plugin.py CHANGED
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import argparse
4
4
  import functools
5
5
  import sys
6
- from typing import Any, List, Optional, TYPE_CHECKING, Text, Union
6
+ from typing import TYPE_CHECKING, Any, List, Optional, Text, Union
7
7
 
8
8
  import pluggy
9
9
 
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
13
13
  from rasa.core.brokers.broker import EventBroker
14
14
  from rasa.core.tracker_store import TrackerStore
15
15
  from rasa.shared.core.domain import Domain
16
+ from rasa.shared.core.trackers import DialogueStateTracker
16
17
  from rasa.utils.endpoints import EndpointConfig
17
18
 
18
19
 
@@ -88,3 +89,13 @@ def after_server_stop() -> None:
88
89
  Use this hook to de-initialize any resources that require explicit cleanup like,
89
90
  thread shutdown, closing connections, etc.
90
91
  """
92
+
93
+
94
+ @hookspec # type: ignore[misc]
95
+ def after_new_user_message(tracker: "DialogueStateTracker") -> None:
96
+ """Hook specification for after a new user message is received."""
97
+
98
+
99
+ @hookspec # type: ignore[misc]
100
+ def after_action_executed(tracker: "DialogueStateTracker") -> None:
101
+ """Hook specification for after an action is executed."""
rasa/server.py CHANGED
@@ -60,11 +60,13 @@ from rasa.shared.constants import (
60
60
  DEFAULT_MODELS_PATH,
61
61
  DEFAULT_SENDER_ID,
62
62
  DOCS_BASE_URL,
63
+ DOCS_URL_FLOWS,
63
64
  DOCS_URL_TRAINING_DATA,
64
65
  TEST_STORIES_FILE_PREFIX,
65
66
  )
66
67
  from rasa.shared.core.domain import Domain, InvalidDomain
67
68
  from rasa.shared.core.events import Event
69
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
68
70
  from rasa.shared.core.trackers import (
69
71
  DialogueStateTracker,
70
72
  EventVerbosity,
@@ -72,6 +74,7 @@ from rasa.shared.core.trackers import (
72
74
  from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
73
75
  YAMLStoryWriter,
74
76
  )
77
+ from rasa.shared.exceptions import RasaException, YamlException
75
78
  from rasa.shared.importers.importer import TrainingDataImporter
76
79
  from rasa.shared.nlu.training_data.formats import RasaYAMLReader
77
80
  from rasa.shared.utils.schemas.events import EVENTS_SCHEMA
@@ -1566,7 +1569,8 @@ def _nlu_training_payload_from_json(
1566
1569
  )
1567
1570
 
1568
1571
 
1569
- def _validate_yaml_training_payload(yaml_text: Text) -> None:
1572
+ def _validate_nlu_training_data_payload(yaml_text: str) -> None:
1573
+ """Validate the NLU training data payload of the request body."""
1570
1574
  try:
1571
1575
  RasaYAMLReader().validate(yaml_text)
1572
1576
  except Exception as e:
@@ -1578,6 +1582,38 @@ def _validate_yaml_training_payload(yaml_text: Text) -> None:
1578
1582
  )
1579
1583
 
1580
1584
 
1585
+ def _validate_flows_payload(yaml_text: str) -> None:
1586
+ """Validate the flows payload of the request body."""
1587
+ try:
1588
+ YAMLFlowsReader().read_from_string(yaml_text)
1589
+ except (YamlException, RasaException) as exc:
1590
+ # if the payload does not contain any flows, we can ignore the error
1591
+ if (
1592
+ hasattr(exc, "validation_errors")
1593
+ and exc.validation_errors is not None
1594
+ and any(
1595
+ [
1596
+ "'flows' is a required property" in error.message
1597
+ for error in exc.validation_errors
1598
+ ]
1599
+ )
1600
+ ):
1601
+ return None
1602
+
1603
+ raise ErrorResponse(
1604
+ HTTPStatus.BAD_REQUEST,
1605
+ "BadRequest",
1606
+ f"The request body does not contain valid YAML. Error: {exc}",
1607
+ help_url=DOCS_URL_FLOWS,
1608
+ )
1609
+
1610
+
1611
+ def _validate_yaml_training_payload(yaml_text: str) -> None:
1612
+ """Validate the YAML training payload of the request body."""
1613
+ _validate_nlu_training_data_payload(yaml_text)
1614
+ _validate_flows_payload(yaml_text)
1615
+
1616
+
1581
1617
  def _extract_core_additional_arguments(request: Request) -> Dict[Text, Any]:
1582
1618
  return {
1583
1619
  "augmentation_factor": rasa.utils.endpoints.int_arg(request, "augmentation", 50)
rasa/shared/constants.py CHANGED
@@ -19,6 +19,7 @@ DOCS_URL_GRAPH_COMPONENTS = DOCS_URL_CONCEPTS + "/components/custom-graph-compon
19
19
  DOCS_URL_GRAPH_RECIPE = DOCS_URL_CONCEPTS + "/components/graph-recipe"
20
20
  DOCS_URL_CATEGORICAL_SLOTS = DOCS_URL_CONCEPTS + "/domain#categorical-slot"
21
21
  DOCS_URL_DOMAIN = DOCS_URL_CONCEPTS + "/domain"
22
+ DOCS_URL_FLOWS = DOCS_URL_CONCEPTS + "/flows"
22
23
 
23
24
  # Docs URLs for NLU-based assistants
24
25
  DOCS_URL_TRAINING_DATA = DOCS_URL_NLU_BASED + "/training-data-format"
@@ -161,7 +162,6 @@ AZURE_AD_TOKEN_ENV_VAR = "AZURE_AD_TOKEN"
161
162
  AZURE_API_BASE_ENV_VAR = "AZURE_API_BASE"
162
163
  AZURE_API_VERSION_ENV_VAR = "AZURE_API_VERSION"
163
164
  AZURE_API_TYPE_ENV_VAR = "AZURE_API_TYPE"
164
- AZURE_AD_SCOPES_ENV_VAR = "AZURE_AD_SCOPES"
165
165
  AZURE_SPEECH_API_KEY_ENV_VAR = "AZURE_SPEECH_API_KEY"
166
166
 
167
167
  DEEPGRAM_API_KEY_ENV_VAR = "DEEPGRAM_API_KEY"
@@ -198,6 +198,7 @@ MODEL_CONFIG_KEY = "model"
198
198
  MODEL_NAME_CONFIG_KEY = "model_name"
199
199
  PROMPT_CONFIG_KEY = "prompt"
200
200
  PROMPT_TEMPLATE_CONFIG_KEY = "prompt_template"
201
+
201
202
  STREAM_CONFIG_KEY = "stream"
202
203
  N_REPHRASES_CONFIG_KEY = "n"
203
204
  USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY = "use_chat_completions_endpoint"
@@ -231,6 +232,12 @@ LITELLM_PARAMS_KEY = "litellm_params"
231
232
  LLM_API_HEALTH_CHECK_ENV_VAR = "LLM_API_HEALTH_CHECK"
232
233
  LLM_API_HEALTH_CHECK_DEFAULT_VALUE = "false"
233
234
 
235
+ AZURE_API_KEY_ENV_VAR = "AZURE_API_KEY"
236
+ AZURE_AD_TOKEN_ENV_VAR = "AZURE_AD_TOKEN"
237
+ AZURE_API_BASE_ENV_VAR = "AZURE_API_BASE"
238
+ AZURE_API_VERSION_ENV_VAR = "AZURE_API_VERSION"
239
+ AZURE_API_TYPE_ENV_VAR = "AZURE_API_TYPE"
240
+
234
241
  AWS_REGION_NAME_CONFIG_KEY = "aws_region_name"
235
242
  AWS_ACCESS_KEY_ID_CONFIG_KEY = "aws_access_key_id"
236
243
  AWS_SECRET_ACCESS_KEY_CONFIG_KEY = "aws_secret_access_key"
@@ -266,11 +273,17 @@ RASA_PROVIDER = "rasa"
266
273
  SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
267
274
  SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
268
275
 
276
+ SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
277
+ SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
278
+
269
279
  VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY = [
270
280
  OPENAI_PROVIDER,
271
281
  AZURE_OPENAI_PROVIDER,
272
282
  ]
273
283
 
284
+ SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
285
+ SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
286
+
274
287
  AZURE_API_TYPE = "azure"
275
288
  OPENAI_API_TYPE = "openai"
276
289
 
@@ -308,4 +321,11 @@ SENSITIVE_DATA = [
308
321
  AWS_SESSION_TOKEN_CONFIG_KEY,
309
322
  ]
310
323
 
311
- AZURE_AD_KEY = "azure_ad"
324
+ # Used for key values in BotUtterance.data
325
+ TEXT = "text"
326
+ ELEMENTS = "elements"
327
+ QUICK_REPLIES = "quick_replies"
328
+ BUTTONS = "buttons"
329
+ ATTACHMENT = "attachment"
330
+ IMAGE = "image"
331
+ CUSTOM = "custom"
@@ -4,7 +4,9 @@ from typing import List, Optional
4
4
 
5
5
  import structlog
6
6
 
7
+ from rasa.dialogue_understanding.commands import Command
7
8
  from rasa.dialogue_understanding.commands.set_slot_command import SetSlotExtractor
9
+ from rasa.dialogue_understanding.utils import add_commands_to_message_parse_data
8
10
  from rasa.shared.core.domain import Domain
9
11
  from rasa.shared.nlu.constants import COMMANDS, SET_SLOT_COMMAND, TEXT
10
12
  from rasa.shared.nlu.training_data.message import Message
@@ -78,13 +80,18 @@ class CommandPayloadReader:
78
80
  )
79
81
 
80
82
  # Create new SetSlot commands from the extracted attributes.
81
- commands.append(
82
- {
83
- "command": SET_SLOT_COMMAND,
84
- "name": slot_name,
85
- "value": slot_value,
86
- "extractor": entity_extractor_name,
87
- }
83
+ command = {
84
+ "command": SET_SLOT_COMMAND,
85
+ "name": slot_name,
86
+ "value": slot_value,
87
+ "extractor": entity_extractor_name,
88
+ }
89
+ commands.append(command)
90
+
91
+ add_commands_to_message_parse_data(
92
+ message,
93
+ CommandPayloadReader.__name__,
94
+ [Command.command_from_json(command)],
88
95
  )
89
96
 
90
97
  structlogger.debug(
@@ -94,6 +101,7 @@ class CommandPayloadReader:
94
101
 
95
102
  # set the command(s) on the Message object
96
103
  message.set(COMMANDS, commands, add_to_output=True)
104
+
97
105
  return message
98
106
 
99
107
  @staticmethod
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
+
2
3
  from enum import Enum
3
4
 
4
5
  import rasa.shared.constants as constants
5
6
 
6
-
7
7
  DEFAULT_CATEGORICAL_SLOT_VALUE = "__other__"
8
8
 
9
9
  USER_INTENT_RESTART = "restart"
@@ -52,6 +52,9 @@ ACTION_RESET_ROUTING = "action_reset_routing"
52
52
  ACTION_HANGUP = "action_hangup"
53
53
  ACTION_REPEAT_BOT_MESSAGES = "action_repeat_bot_messages"
54
54
 
55
+ ACTION_METADATA_EXECUTION_SUCCESS = "execution_success"
56
+ ACTION_METADATA_EXECUTION_ERROR_MESSAGE = "execution_error_message"
57
+
55
58
 
56
59
  DEFAULT_ACTION_NAMES = [
57
60
  ACTION_LISTEN_NAME,
@@ -1,8 +1,7 @@
1
- from typing import Dict, List, Text, Any, TYPE_CHECKING
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Text
2
2
 
3
3
  import rasa.shared.core.events
4
4
 
5
-
6
5
  if TYPE_CHECKING:
7
6
  from rasa.shared.core.events import Event
8
7
 
@@ -2,68 +2,69 @@ import abc
2
2
  import copy
3
3
  import json
4
4
  import logging
5
- import structlog
6
5
  import re
7
- from abc import ABC
8
-
9
- import jsonpickle
10
6
  import time
11
7
  import uuid
12
- from dateutil import parser
8
+ from abc import ABC
13
9
  from datetime import datetime
14
10
  from typing import (
15
- List,
16
- Dict,
17
- Text,
18
- Any,
19
- Type,
20
- Optional,
21
11
  TYPE_CHECKING,
12
+ Any,
13
+ Dict,
22
14
  Iterable,
23
- cast,
15
+ List,
16
+ Optional,
17
+ Text,
24
18
  Tuple,
19
+ Type,
25
20
  TypeVar,
21
+ Union,
22
+ cast,
26
23
  )
27
24
 
25
+ import jsonpickle
26
+ import structlog
27
+ from dateutil import parser
28
+
28
29
  import rasa.shared.utils.common
29
30
  import rasa.shared.utils.io
30
- from typing import Union
31
-
32
31
  from rasa.shared.constants import DOCS_URL_TRAINING_DATA
33
32
  from rasa.shared.core.constants import (
34
- LOOP_NAME,
35
- EXTERNAL_MESSAGE_PREFIX,
33
+ ACTION_LISTEN_NAME,
34
+ ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
35
+ ACTION_METADATA_EXECUTION_SUCCESS,
36
36
  ACTION_NAME_SENDER_ID_CONNECTOR_STR,
37
+ ACTION_SESSION_START_NAME,
38
+ ENTITY_LABEL_SEPARATOR,
39
+ EXTERNAL_MESSAGE_PREFIX,
37
40
  IS_EXTERNAL,
38
- USE_TEXT_FOR_FEATURIZATION,
39
41
  LOOP_INTERRUPTED,
40
- ENTITY_LABEL_SEPARATOR,
41
- ACTION_SESSION_START_NAME,
42
- ACTION_LISTEN_NAME,
42
+ LOOP_NAME,
43
+ USE_TEXT_FOR_FEATURIZATION,
43
44
  )
44
45
  from rasa.shared.exceptions import UnsupportedFeatureException
45
46
  from rasa.shared.nlu.constants import (
46
- ENTITY_ATTRIBUTE_TYPE,
47
- INTENT,
48
- TEXT,
49
- ENTITIES,
50
- COMMANDS,
51
- ENTITY_ATTRIBUTE_VALUE,
52
- ACTION_TEXT,
53
47
  ACTION_NAME,
54
- INTENT_NAME_KEY,
55
- ENTITY_ATTRIBUTE_ROLE,
56
- ENTITY_ATTRIBUTE_GROUP,
57
- PREDICTED_CONFIDENCE_KEY,
58
- INTENT_RANKING_KEY,
59
- ENTITY_ATTRIBUTE_TEXT,
60
- ENTITY_ATTRIBUTE_START,
48
+ ACTION_TEXT,
49
+ COMMANDS,
50
+ ENTITIES,
61
51
  ENTITY_ATTRIBUTE_CONFIDENCE,
62
52
  ENTITY_ATTRIBUTE_END,
53
+ ENTITY_ATTRIBUTE_GROUP,
54
+ ENTITY_ATTRIBUTE_ROLE,
55
+ ENTITY_ATTRIBUTE_START,
56
+ ENTITY_ATTRIBUTE_TEXT,
57
+ ENTITY_ATTRIBUTE_TYPE,
58
+ ENTITY_ATTRIBUTE_VALUE,
63
59
  FULL_RETRIEVAL_INTENT_NAME_KEY,
60
+ INTENT,
61
+ INTENT_NAME_KEY,
62
+ INTENT_RANKING_KEY,
63
+ PREDICTED_CONFIDENCE_KEY,
64
+ PROMPTS,
65
+ TEXT,
64
66
  )
65
67
 
66
-
67
68
  if TYPE_CHECKING:
68
69
  from typing_extensions import TypedDict
69
70
 
@@ -98,6 +99,7 @@ if TYPE_CHECKING:
98
99
  ENTITIES: List[EntityPrediction],
99
100
  "message_id": Optional[Text],
100
101
  "metadata": Dict,
102
+ PROMPTS: Dict,
101
103
  },
102
104
  total=False,
103
105
  )
@@ -147,8 +149,8 @@ def format_message(
147
149
  Message with entities annotated inline, e.g.
148
150
  `I am from [Berlin]{`"`entity`"`: `"`city`"`}`.
149
151
  """
150
- from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
151
152
  from rasa.shared.nlu.training_data import entities_parser
153
+ from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
152
154
 
153
155
  message_from_md = entities_parser.parse_training_example(text, intent)
154
156
  deserialised_entities = deserialise_entities(entities)
@@ -1704,7 +1706,15 @@ class ActionExecuted(Event):
1704
1706
  super().__init__(timestamp, metadata)
1705
1707
 
1706
1708
  def __members__(self) -> Tuple[Optional[Text], Optional[Text], Text]:
1707
- meta_no_nones = {k: v for k, v in self.metadata.items() if v is not None}
1709
+ items_to_ignore = [
1710
+ ACTION_METADATA_EXECUTION_SUCCESS,
1711
+ ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
1712
+ ]
1713
+ meta_no_nones = {
1714
+ k: v
1715
+ for k, v in self.metadata.items()
1716
+ if v is not None and k not in items_to_ignore
1717
+ }
1708
1718
  return (self.action_name, self.action_text, jsonpickle.encode(meta_no_nones))
1709
1719
 
1710
1720
  def __repr__(self) -> Text:
@@ -2,6 +2,5 @@ from .flow import Flow
2
2
  from .flow_step import FlowStep
3
3
  from .flows_list import FlowsList
4
4
 
5
-
6
5
  # to make ruff happy and use the imported names
7
6
  all_classes = [FlowStep, Flow, FlowsList]
@@ -4,33 +4,33 @@ import copy
4
4
  from dataclasses import dataclass, field
5
5
  from functools import cached_property
6
6
  from pathlib import Path
7
- from typing import Text, Optional, Dict, Any, List, Set, Union
7
+ from typing import Any, Dict, List, Optional, Set, Text, Union
8
8
 
9
9
  import structlog
10
10
  from pypred import Predicate
11
11
 
12
12
  import rasa.shared.utils.io
13
13
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
14
- from rasa.shared.core.flows.flow_path import PathNode, FlowPath, FlowPathsList
14
+ from rasa.shared.core.flows.flow_path import FlowPath, FlowPathsList, PathNode
15
15
  from rasa.shared.core.flows.flow_step import FlowStep
16
16
  from rasa.shared.core.flows.flow_step_links import (
17
+ ElseFlowStepLink,
17
18
  FlowStepLink,
18
- StaticFlowStepLink,
19
19
  IfFlowStepLink,
20
- ElseFlowStepLink,
20
+ StaticFlowStepLink,
21
21
  )
22
22
  from rasa.shared.core.flows.flow_step_sequence import FlowStepSequence
23
23
  from rasa.shared.core.flows.nlu_trigger import NLUTriggers
24
24
  from rasa.shared.core.flows.steps import (
25
+ ActionFlowStep,
25
26
  CollectInformationFlowStep,
26
27
  EndFlowStep,
27
28
  StartFlowStep,
28
- ActionFlowStep,
29
29
  )
30
30
  from rasa.shared.core.flows.steps.constants import (
31
31
  CONTINUE_STEP_PREFIX,
32
- START_STEP,
33
32
  END_STEP,
33
+ START_STEP,
34
34
  )
35
35
  from rasa.shared.core.flows.steps.continuation import ContinueFlowStep
36
36
  from rasa.shared.core.slots import Slot
@@ -79,7 +79,7 @@ class Flow:
79
79
  Returns:
80
80
  A Flow object.
81
81
  """
82
- step_sequence = FlowStepSequence.from_json(data.get("steps"))
82
+ step_sequence = FlowStepSequence.from_json(flow_id, data.get("steps"))
83
83
  nlu_triggers = NLUTriggers.from_json(data.get("nlu_trigger"))
84
84
 
85
85
  if file_path and isinstance(file_path, Path):
@@ -185,13 +185,13 @@ class Flow:
185
185
  return None
186
186
 
187
187
  if step_id == START_STEP:
188
- return StartFlowStep(self.first_step_in_flow().id)
188
+ return StartFlowStep(self.id, self.first_step_in_flow().id)
189
189
 
190
190
  if step_id == END_STEP:
191
- return EndFlowStep()
191
+ return EndFlowStep(self.id)
192
192
 
193
193
  if step_id.startswith(CONTINUE_STEP_PREFIX):
194
- return ContinueFlowStep(step_id[len(CONTINUE_STEP_PREFIX) :])
194
+ return ContinueFlowStep(self.id, step_id[len(CONTINUE_STEP_PREFIX) :])
195
195
 
196
196
  for step in self.steps_with_calls_resolved:
197
197
  if step.id == step_id:
@@ -371,7 +371,7 @@ class Flow:
371
371
  True if dynamic literals are present, False otherwise.
372
372
  """
373
373
  from pypred import ast
374
- from pypred.tiler import tile, SimplePattern
374
+ from pypred.tiler import SimplePattern, tile
375
375
 
376
376
  if not self.guard_condition:
377
377
  return False