rasa-pro 3.12.0.dev2__py3-none-any.whl → 3.12.0.dev4__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 +121 -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 +291 -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 -11
  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 +54 -0
  463. rasa/tracing/instrumentation/instrumentation.py +25 -5
  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.dev4.dist-info}/METADATA +9 -10
  493. rasa_pro-3.12.0.dev4.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.dev4.dist-info}/NOTICE +0 -0
  501. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/WHEEL +0 -0
  502. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/entry_points.txt +0 -0
@@ -1,18 +1,19 @@
1
- from typing import Dict, Text, Any, Optional, List
1
+ from typing import Any, Dict, List, Optional, Text
2
2
 
3
3
  import structlog
4
4
 
5
5
  from rasa.dialogue_understanding.commands import (
6
6
  Command,
7
- StartFlowCommand,
8
7
  SetSlotCommand,
8
+ StartFlowCommand,
9
9
  )
10
10
  from rasa.dialogue_understanding.commands.set_slot_command import SetSlotExtractor
11
- from rasa.dialogue_understanding.commands.utils import (
11
+ from rasa.dialogue_understanding.generator import CommandGenerator
12
+ from rasa.dialogue_understanding.generator.utils import (
12
13
  triggerable_pattern_to_command_class,
13
14
  )
14
- from rasa.dialogue_understanding.generator import CommandGenerator
15
- from rasa.engine.graph import GraphComponent, ExecutionContext
15
+ from rasa.dialogue_understanding.utils import add_commands_to_message_parse_data
16
+ from rasa.engine.graph import ExecutionContext, GraphComponent
16
17
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
17
18
  from rasa.engine.storage.resource import Resource
18
19
  from rasa.engine.storage.storage import ModelStorage
@@ -20,10 +21,7 @@ from rasa.shared.constants import ROUTE_TO_CALM_SLOT
20
21
  from rasa.shared.core.domain import Domain
21
22
  from rasa.shared.core.flows.flows_list import FlowsList
22
23
  from rasa.shared.core.flows.steps import CollectInformationFlowStep
23
- from rasa.shared.core.slot_mappings import (
24
- SlotFillingManager,
25
- extract_slot_value,
26
- )
24
+ from rasa.shared.core.slot_mappings import SlotFillingManager, extract_slot_value
27
25
  from rasa.shared.core.trackers import DialogueStateTracker
28
26
  from rasa.shared.nlu.constants import ENTITIES, INTENT
29
27
  from rasa.shared.nlu.training_data.message import Message
@@ -205,7 +203,7 @@ class NLUCommandAdapter(GraphComponent, CommandGenerator):
205
203
  commands=commands,
206
204
  )
207
205
 
208
- CommandGenerator._add_commands_to_message_parse_data(
206
+ add_commands_to_message_parse_data(
209
207
  message, NLUCommandAdapter.__name__, commands
210
208
  )
211
209
  return commands
@@ -1,59 +1,57 @@
1
1
  import importlib.resources
2
- import re
3
- from typing import Dict, Any, List, Optional, Text
2
+ from typing import Any, Dict, List, Optional, Text
4
3
 
5
4
  import structlog
6
5
 
7
6
  import rasa.shared.utils.io
8
7
  from rasa.dialogue_understanding.commands import (
8
+ CannotHandleCommand,
9
9
  Command,
10
10
  ErrorCommand,
11
11
  SetSlotCommand,
12
- CancelFlowCommand,
13
- HumanHandoffCommand,
14
- ChitChatAnswerCommand,
15
- SkipQuestionCommand,
16
- KnowledgeAnswerCommand,
17
- ClarifyCommand,
18
- CannotHandleCommand,
19
- RepeatBotMessagesCommand,
12
+ )
13
+ from rasa.dialogue_understanding.generator.command_parser import (
14
+ parse_commands as parse_commands_using_command_parsers,
20
15
  )
21
16
  from rasa.dialogue_understanding.generator.constants import (
17
+ DEFAULT_LLM_CONFIG,
18
+ FLOW_RETRIEVAL_KEY,
22
19
  LLM_CONFIG_KEY,
23
20
  USER_INPUT_CONFIG_KEY,
24
- FLOW_RETRIEVAL_KEY,
25
- DEFAULT_LLM_CONFIG,
26
- )
27
- from rasa.dialogue_understanding.generator.flow_retrieval import (
28
- FlowRetrieval,
29
21
  )
22
+ from rasa.dialogue_understanding.generator.flow_retrieval import FlowRetrieval
30
23
  from rasa.dialogue_understanding.generator.llm_based_command_generator import (
31
24
  LLMBasedCommandGenerator,
32
25
  )
33
26
  from rasa.dialogue_understanding.stack.utils import top_flow_frame
27
+ from rasa.dialogue_understanding.utils import (
28
+ add_commands_to_message_parse_data,
29
+ add_prompt_to_message_parse_data,
30
+ )
34
31
  from rasa.engine.graph import ExecutionContext
35
32
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
36
33
  from rasa.engine.storage.resource import Resource
37
34
  from rasa.engine.storage.storage import ModelStorage
38
35
  from rasa.shared.constants import (
39
- ROUTE_TO_CALM_SLOT,
36
+ EMBEDDINGS_CONFIG_KEY,
40
37
  PROMPT_CONFIG_KEY,
41
38
  PROMPT_TEMPLATE_CONFIG_KEY,
42
- EMBEDDINGS_CONFIG_KEY,
39
+ ROUTE_TO_CALM_SLOT,
43
40
  )
44
41
  from rasa.shared.core.flows import FlowsList
45
42
  from rasa.shared.core.trackers import DialogueStateTracker
46
43
  from rasa.shared.exceptions import ProviderClientAPIException
47
- from rasa.shared.nlu.constants import TEXT, LLM_COMMANDS, LLM_PROMPT
44
+ from rasa.shared.nlu.constants import LLM_COMMANDS, LLM_PROMPT, TEXT
48
45
  from rasa.shared.nlu.training_data.message import Message
46
+ from rasa.shared.providers.llm.llm_response import LLMResponse
49
47
  from rasa.shared.utils.io import deep_container_fingerprint
50
48
  from rasa.shared.utils.llm import (
51
49
  get_prompt_template,
52
- tracker_as_readable_transcript,
53
- sanitize_message_for_prompt,
54
50
  resolve_model_client_config,
51
+ sanitize_message_for_prompt,
52
+ tracker_as_readable_transcript,
55
53
  )
56
- from rasa.utils.beta import ensure_beta_feature_is_enabled, BetaNotEnabledException
54
+ from rasa.utils.beta import BetaNotEnabledException, ensure_beta_feature_is_enabled
57
55
  from rasa.utils.log_utils import log_llm
58
56
 
59
57
  COMMAND_PROMPT_FILE_NAME = "command_prompt.jinja2"
@@ -264,13 +262,16 @@ class SingleStepLLMCommandGenerator(LLMBasedCommandGenerator):
264
262
  prompt=flow_prompt,
265
263
  )
266
264
 
267
- action_list = await self.invoke_llm(flow_prompt)
265
+ response = await self.invoke_llm(flow_prompt)
266
+ llm_response = LLMResponse.ensure_llm_response(response)
268
267
  # The check for 'None' maintains compatibility with older versions
269
268
  # of LLMCommandGenerator. In previous implementations, 'invoke_llm'
270
269
  # might return 'None' to indicate a failure to generate actions.
271
- if action_list is None:
270
+ if llm_response is None or not llm_response.choices:
272
271
  return [ErrorCommand()]
273
272
 
273
+ action_list = llm_response.choices[0]
274
+
274
275
  log_llm(
275
276
  logger=structlogger,
276
277
  log_module="SingleStepLLMCommandGenerator",
@@ -281,14 +282,15 @@ class SingleStepLLMCommandGenerator(LLMBasedCommandGenerator):
281
282
  commands = self.parse_commands(action_list, tracker, flows)
282
283
 
283
284
  self._update_message_parse_data_for_fine_tuning(message, commands, flow_prompt)
284
- self._add_commands_to_message_parse_data(
285
+ add_commands_to_message_parse_data(
285
286
  message, SingleStepLLMCommandGenerator.__name__, commands
286
287
  )
287
- self._add_prompt_to_message_parse_data(
288
- message,
289
- SingleStepLLMCommandGenerator.__name__,
290
- "command_generator_prompt",
291
- flow_prompt,
288
+ add_prompt_to_message_parse_data(
289
+ message=message,
290
+ component_name=SingleStepLLMCommandGenerator.__name__,
291
+ prompt_name="command_generator_prompt",
292
+ user_prompt=flow_prompt,
293
+ llm_response=llm_response,
292
294
  )
293
295
 
294
296
  return commands
@@ -323,70 +325,7 @@ class SingleStepLLMCommandGenerator(LLMBasedCommandGenerator):
323
325
  Returns:
324
326
  The parsed commands.
325
327
  """
326
- if actions is None:
327
- return []
328
-
329
- commands: List[Command] = []
330
-
331
- slot_set_re = re.compile(
332
- r"""SetSlot\(['"]?([a-zA-Z_][a-zA-Z0-9_-]*)['"]?, ?['"]?(.*)['"]?\)"""
333
- )
334
- start_flow_re = re.compile(r"StartFlow\(['\"]?([a-zA-Z0-9_-]+)['\"]?\)")
335
- cancel_flow_re = re.compile(r"CancelFlow\(\)")
336
- chitchat_re = re.compile(r"ChitChat\(\)")
337
- skip_question_re = re.compile(r"SkipQuestion\(\)")
338
- knowledge_re = re.compile(r"SearchAndReply\(\)")
339
- humand_handoff_re = re.compile(r"HumanHandoff\(\)")
340
- clarify_re = re.compile(r"Clarify\(([\"\'a-zA-Z0-9_, ]+)\)")
341
- repeat_re = re.compile(r"RepeatLastBotMessages\(\)")
342
-
343
- for action in actions.strip().splitlines():
344
- if match := slot_set_re.search(action):
345
- slot_name = match.group(1).strip()
346
- slot_value = cls.clean_extracted_value(match.group(2))
347
- # error case where the llm tries to start a flow using a slot set
348
- if slot_name == "flow_name":
349
- commands.extend(cls.start_flow_by_name(slot_value, flows))
350
- else:
351
- typed_slot_value = cls.get_nullable_slot_value(slot_value)
352
- commands.append(
353
- SetSlotCommand(name=slot_name, value=typed_slot_value)
354
- )
355
- elif match := start_flow_re.search(action):
356
- flow_name = match.group(1).strip()
357
- commands.extend(cls.start_flow_by_name(flow_name, flows))
358
- elif cancel_flow_re.search(action):
359
- commands.append(CancelFlowCommand())
360
- elif chitchat_re.search(action):
361
- commands.append(ChitChatAnswerCommand())
362
- elif skip_question_re.search(action):
363
- commands.append(SkipQuestionCommand())
364
- elif knowledge_re.search(action):
365
- commands.append(KnowledgeAnswerCommand())
366
- elif humand_handoff_re.search(action):
367
- commands.append(HumanHandoffCommand())
368
- elif repeat_re.search(action):
369
- commands.append(RepeatBotMessagesCommand())
370
- elif match := clarify_re.search(action):
371
- options = sorted([opt.strip() for opt in match.group(1).split(",")])
372
- # Remove surrounding quotes if present
373
- cleaned_options = []
374
- for flow in options:
375
- if (flow.startswith('"') and flow.endswith('"')) or (
376
- flow.startswith("'") and flow.endswith("'")
377
- ):
378
- cleaned_options.append(flow[1:-1])
379
- else:
380
- cleaned_options.append(flow)
381
- # check if flow is valid
382
- valid_options = [
383
- flow for flow in cleaned_options if flow in flows.user_flow_ids
384
- ]
385
- if len(set(valid_options)) == 1:
386
- commands.extend(cls.start_flow_by_name(valid_options[0], flows))
387
- elif len(valid_options) > 1:
388
- commands.append(ClarifyCommand(valid_options))
389
-
328
+ commands = parse_commands_using_command_parsers(actions, flows)
390
329
  if not commands:
391
330
  structlogger.debug(
392
331
  "single_step_llm_command_generator.parse_commands",
@@ -0,0 +1,45 @@
1
+ from typing import Dict, Type
2
+
3
+ from rasa.dialogue_understanding.commands import (
4
+ CancelFlowCommand,
5
+ CannotHandleCommand,
6
+ ChitChatAnswerCommand,
7
+ Command,
8
+ HumanHandoffCommand,
9
+ KnowledgeAnswerCommand,
10
+ RestartCommand,
11
+ SessionStartCommand,
12
+ SkipQuestionCommand,
13
+ )
14
+ from rasa.dialogue_understanding.commands.user_silence_command import UserSilenceCommand
15
+ from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
16
+ from rasa.dialogue_understanding.patterns.cannot_handle import (
17
+ CannotHandlePatternFlowStackFrame,
18
+ )
19
+ from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
20
+ from rasa.dialogue_understanding.patterns.human_handoff import (
21
+ HumanHandoffPatternFlowStackFrame,
22
+ )
23
+ from rasa.dialogue_understanding.patterns.restart import RestartPatternFlowStackFrame
24
+ from rasa.dialogue_understanding.patterns.search import SearchPatternFlowStackFrame
25
+ from rasa.dialogue_understanding.patterns.session_start import (
26
+ SessionStartPatternFlowStackFrame,
27
+ )
28
+ from rasa.dialogue_understanding.patterns.skip_question import (
29
+ SkipQuestionPatternFlowStackFrame,
30
+ )
31
+ from rasa.dialogue_understanding.patterns.user_silence import (
32
+ UserSilencePatternFlowStackFrame,
33
+ )
34
+
35
+ triggerable_pattern_to_command_class: Dict[str, Type[Command]] = {
36
+ SessionStartPatternFlowStackFrame.flow_id: SessionStartCommand,
37
+ UserSilencePatternFlowStackFrame.flow_id: UserSilenceCommand,
38
+ CancelPatternFlowStackFrame.flow_id: CancelFlowCommand,
39
+ ChitchatPatternFlowStackFrame.flow_id: ChitChatAnswerCommand,
40
+ HumanHandoffPatternFlowStackFrame.flow_id: HumanHandoffCommand,
41
+ SearchPatternFlowStackFrame.flow_id: KnowledgeAnswerCommand,
42
+ SkipQuestionPatternFlowStackFrame.flow_id: SkipQuestionCommand,
43
+ CannotHandlePatternFlowStackFrame.flow_id: CannotHandleCommand,
44
+ RestartPatternFlowStackFrame.flow_id: RestartCommand,
45
+ }
@@ -1,8 +1,10 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass, field
3
4
  from typing import Any, Dict, List, Optional
4
5
 
5
6
  import structlog
7
+
6
8
  from rasa.core.actions import action
7
9
  from rasa.core.channels.channel import OutputChannel
8
10
  from rasa.core.nlg.generator import NaturalLanguageGenerator
@@ -18,7 +20,6 @@ from rasa.shared.core.flows.steps.constants import END_STEP
18
20
  from rasa.shared.core.flows.steps.continuation import ContinueFlowStep
19
21
  from rasa.shared.core.trackers import DialogueStateTracker
20
22
 
21
-
22
23
  structlogger = structlog.get_logger()
23
24
 
24
25
  FLOW_PATTERN_CANCEL = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "cancel_flow"
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict, Optional, Text
4
5
 
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_CHITCHAT = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "chitchat"
10
10
 
11
11
 
@@ -1,8 +1,10 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass, field
3
4
  from typing import Any, Dict, List, Optional
4
5
 
5
6
  import structlog
7
+
6
8
  from rasa.core.actions import action
7
9
  from rasa.core.channels.channel import OutputChannel
8
10
  from rasa.core.nlg.generator import NaturalLanguageGenerator
@@ -13,7 +15,6 @@ from rasa.shared.core.domain import Domain
13
15
  from rasa.shared.core.events import Event
14
16
  from rasa.shared.core.trackers import DialogueStateTracker
15
17
 
16
-
17
18
  structlogger = structlog.get_logger()
18
19
 
19
20
  FLOW_PATTERN_CLARIFICATION = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "clarification"
@@ -1,8 +1,10 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  import structlog
7
+
6
8
  from rasa.dialogue_understanding.stack.frames import (
7
9
  PatternFlowStackFrame,
8
10
  )
@@ -1,12 +1,15 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict, List, Optional
4
- from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
5
- from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
5
+
6
+ from rasa.dialogue_understanding.stack.frames import (
7
+ DialogueStackFrame,
8
+ PatternFlowStackFrame,
9
+ )
6
10
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
11
  from rasa.shared.core.flows.steps.collect import SlotRejection
8
12
 
9
-
10
13
  FLOW_PATTERN_COLLECT_INFORMATION = (
11
14
  RASA_DEFAULT_FLOW_PATTERN_PREFIX + "collect_information"
12
15
  )
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_COMPLETED = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "completed"
10
10
 
11
11
 
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_CONTINUE_INTERRUPTED = (
10
10
  RASA_DEFAULT_FLOW_PATTERN_PREFIX + "continue_interrupted"
11
11
  )
@@ -40,3 +40,12 @@ class ContinueInterruptedPatternFlowStackFrame(PatternFlowStackFrame):
40
40
  step_id=data["step_id"],
41
41
  previous_flow_name=data["previous_flow_name"],
42
42
  )
43
+
44
+ def __eq__(self, other: Any) -> bool:
45
+ if not isinstance(other, ContinueInterruptedPatternFlowStackFrame):
46
+ return False
47
+ return (
48
+ self.flow_id == other.flow_id
49
+ and self.step_id == other.step_id
50
+ and self.previous_flow_name == other.previous_flow_name
51
+ )
@@ -1,8 +1,10 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass, field
3
- from typing import Any, Dict, Text, List, Optional
4
+ from typing import Any, Dict, List, Optional, Text
4
5
 
5
6
  import structlog
7
+
6
8
  from rasa.core.actions import action
7
9
  from rasa.core.channels import OutputChannel
8
10
  from rasa.core.nlg import NaturalLanguageGenerator
@@ -26,7 +28,7 @@ from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
26
28
  from rasa.shared.core.constants import ACTION_CORRECT_FLOW_SLOT
27
29
  from rasa.shared.core.domain import Domain
28
30
  from rasa.shared.core.events import Event, SlotSet
29
- from rasa.shared.core.flows.flow import ContinueFlowStep, END_STEP, START_STEP
31
+ from rasa.shared.core.flows.flow import END_STEP, START_STEP, ContinueFlowStep
30
32
  from rasa.shared.core.trackers import DialogueStateTracker
31
33
 
32
34
  structlogger = structlog.get_logger()
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_HUMAN_HANDOFF = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "human_handoff"
10
10
 
11
11
 
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass, field
3
4
  from typing import Any, Dict, Optional, Text
4
5
 
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_SEARCH = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "search"
10
10
 
11
11
 
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_SESSION_START = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "session_start"
10
10
 
11
11
 
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
6
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
7
8
 
8
-
9
9
  FLOW_PATTERN_USER_SILENCE = RASA_DEFAULT_FLOW_PATTERN_PREFIX + "user_silence"
10
10
 
11
11
 
@@ -1,19 +1,19 @@
1
- from typing import List, Optional, Type, Set, Dict
1
+ from typing import Dict, List, Optional, Set, Type
2
2
 
3
3
  import structlog
4
- from rasa.shared.core.training_data.structures import StoryGraph
4
+
5
5
  from rasa.dialogue_understanding.commands import (
6
6
  CancelFlowCommand,
7
+ CannotHandleCommand,
8
+ ChitChatAnswerCommand,
7
9
  ClarifyCommand,
8
10
  Command,
9
- CorrectSlotsCommand,
10
11
  CorrectedSlot,
12
+ CorrectSlotsCommand,
13
+ FreeFormAnswerCommand,
11
14
  RepeatBotMessagesCommand,
12
15
  SetSlotCommand,
13
16
  StartFlowCommand,
14
- FreeFormAnswerCommand,
15
- ChitChatAnswerCommand,
16
- CannotHandleCommand,
17
17
  )
18
18
  from rasa.dialogue_understanding.commands.handle_code_change_command import (
19
19
  HandleCodeChangeCommand,
@@ -36,16 +36,20 @@ from rasa.dialogue_understanding.stack.utils import (
36
36
  )
37
37
  from rasa.engine.graph import ExecutionContext
38
38
  from rasa.shared.constants import (
39
- ROUTE_TO_CALM_SLOT,
40
39
  RASA_PATTERN_CANNOT_HANDLE_CHITCHAT,
40
+ ROUTE_TO_CALM_SLOT,
41
+ )
42
+ from rasa.shared.core.constants import (
43
+ ACTION_TRIGGER_CHITCHAT,
44
+ FLOW_HASHES_SLOT,
45
+ SlotMappingType,
41
46
  )
42
- from rasa.shared.core.constants import ACTION_TRIGGER_CHITCHAT, SlotMappingType
43
- from rasa.shared.core.constants import FLOW_HASHES_SLOT
44
47
  from rasa.shared.core.events import Event, SlotSet
45
48
  from rasa.shared.core.flows import FlowsList
46
49
  from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
47
50
  from rasa.shared.core.slots import Slot
48
51
  from rasa.shared.core.trackers import DialogueStateTracker
52
+ from rasa.shared.core.training_data.structures import StoryGraph
49
53
  from rasa.shared.nlu.constants import COMMANDS
50
54
 
51
55
  structlogger = structlog.get_logger()
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from typing import Any, Dict, List, Text
4
- import rasa.dialogue_understanding.processor.command_processor
5
4
 
5
+ import rasa.dialogue_understanding.processor.command_processor
6
6
  from rasa.engine.graph import ExecutionContext, GraphComponent
7
7
  from rasa.engine.storage.resource import Resource
8
8
  from rasa.engine.storage.storage import ModelStorage
@@ -1,11 +1,12 @@
1
1
  from __future__ import annotations
2
- import copy
3
2
 
3
+ import copy
4
+ import typing
4
5
  from dataclasses import dataclass
5
6
  from typing import Any, Callable, Dict, List, Optional
6
- import structlog
7
- import typing
7
+
8
8
  import jsonpatch
9
+ import structlog
9
10
 
10
11
  if typing.TYPE_CHECKING:
11
12
  from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
@@ -1,13 +1,13 @@
1
+ from rasa.dialogue_understanding.stack.frames.chit_chat_frame import ChitChatStackFrame
1
2
  from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
2
3
  DialogueStackFrame,
3
4
  )
4
5
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
5
- UserFlowStackFrame,
6
6
  BaseFlowStackFrame,
7
+ UserFlowStackFrame,
7
8
  )
8
9
  from rasa.dialogue_understanding.stack.frames.pattern_frame import PatternFlowStackFrame
9
10
  from rasa.dialogue_understanding.stack.frames.search_frame import SearchStackFrame
10
- from rasa.dialogue_understanding.stack.frames.chit_chat_frame import ChitChatStackFrame
11
11
 
12
12
  __all__ = [
13
13
  "DialogueStackFrame",
@@ -2,7 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
  from typing import Any, Dict
5
- from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
5
+
6
+ from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
7
+ DialogueStackFrame,
8
+ )
6
9
 
7
10
 
8
11
  @dataclass
@@ -1,19 +1,18 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import dataclasses
3
4
  import inspect
4
5
  from dataclasses import dataclass, field
5
- import dataclasses
6
6
  from enum import Enum
7
7
  from functools import lru_cache
8
8
  from typing import Any, Dict, List, Tuple, Type
9
9
 
10
10
  import structlog
11
- from rasa.shared.exceptions import RasaException
12
11
 
13
12
  import rasa.shared.utils.common
13
+ from rasa.shared.exceptions import RasaException
14
14
  from rasa.shared.utils.io import random_string
15
15
 
16
-
17
16
  structlogger = structlog.get_logger()
18
17
 
19
18
 
@@ -1,11 +1,14 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from enum import Enum
4
5
  from typing import Any, Dict, Optional
5
6
 
6
- from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
7
- from rasa.shared.core.flows.steps.constants import START_STEP
7
+ from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
8
+ DialogueStackFrame,
9
+ )
8
10
  from rasa.shared.core.flows import Flow, FlowsList, FlowStep
11
+ from rasa.shared.core.flows.steps.constants import START_STEP
9
12
  from rasa.shared.exceptions import RasaException
10
13
 
11
14
 
@@ -1,8 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Dict
4
5
 
5
- from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
6
+ from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
7
+ DialogueStackFrame,
8
+ )
6
9
 
7
10
 
8
11
  @dataclass