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,32 +1,25 @@
1
1
  import asyncio
2
- import structlog
3
2
  import copy
4
3
  from dataclasses import asdict, dataclass
5
4
  from typing import Any, AsyncIterator, Awaitable, Callable, Dict, List, Optional, Tuple
6
5
 
7
- from rasa.core.channels.voice_stream.util import generate_silence
8
- from rasa.shared.core.constants import SLOT_SILENCE_TIMEOUT
9
- from rasa.shared.utils.common import (
10
- class_from_module_path,
11
- mark_as_beta_feature,
12
- )
13
- from rasa.shared.utils.cli import print_error_and_exit
14
-
6
+ import structlog
7
+ from sanic import Websocket # type: ignore
15
8
  from sanic.exceptions import ServerError, WebsocketClosed
16
9
 
17
10
  from rasa.core.channels import InputChannel, OutputChannel, UserMessage
18
- from rasa.core.channels.voice_ready.utils import CallParameters
19
- from rasa.core.channels.voice_ready.utils import validate_voice_license_scope
11
+ from rasa.core.channels.voice_ready.utils import (
12
+ CallParameters,
13
+ validate_voice_license_scope,
14
+ )
20
15
  from rasa.core.channels.voice_stream.asr.asr_engine import ASREngine
21
16
  from rasa.core.channels.voice_stream.asr.asr_event import (
22
17
  ASREvent,
23
18
  NewTranscript,
24
19
  UserIsSpeaking,
25
20
  )
26
- from sanic import Websocket # type: ignore
27
-
28
- from rasa.core.channels.voice_stream.asr.deepgram import DeepgramASR
29
21
  from rasa.core.channels.voice_stream.asr.azure import AzureASR
22
+ from rasa.core.channels.voice_stream.asr.deepgram import DeepgramASR
30
23
  from rasa.core.channels.voice_stream.audio_bytes import HERTZ, RasaAudioBytes
31
24
  from rasa.core.channels.voice_stream.call_state import (
32
25
  CallState,
@@ -34,9 +27,16 @@ from rasa.core.channels.voice_stream.call_state import (
34
27
  call_state,
35
28
  )
36
29
  from rasa.core.channels.voice_stream.tts.azure import AzureTTS
37
- from rasa.core.channels.voice_stream.tts.tts_engine import TTSEngine, TTSError
38
30
  from rasa.core.channels.voice_stream.tts.cartesia import CartesiaTTS
39
31
  from rasa.core.channels.voice_stream.tts.tts_cache import TTSCache
32
+ from rasa.core.channels.voice_stream.tts.tts_engine import TTSEngine, TTSError
33
+ from rasa.core.channels.voice_stream.util import generate_silence
34
+ from rasa.shared.core.constants import SLOT_SILENCE_TIMEOUT
35
+ from rasa.shared.utils.cli import print_error_and_exit
36
+ from rasa.shared.utils.common import (
37
+ class_from_module_path,
38
+ mark_as_beta_feature,
39
+ )
40
40
  from rasa.utils.io import remove_emojis
41
41
 
42
42
  logger = structlog.get_logger(__name__)
@@ -1,13 +1,12 @@
1
1
  import logging
2
+ from typing import Any, Awaitable, Callable, Dict, Optional, Text
3
+
2
4
  from sanic import Blueprint, response
3
5
  from sanic.request import Request
4
- from typing import Text, Optional, Dict, Any, Callable, Awaitable
5
-
6
6
  from sanic.response import HTTPResponse
7
7
  from webexteamssdk import WebexTeamsAPI, Webhook
8
8
 
9
- from rasa.core.channels.channel import InputChannel
10
- from rasa.core.channels.channel import UserMessage, OutputChannel
9
+ from rasa.core.channels.channel import InputChannel, OutputChannel, UserMessage
11
10
 
12
11
  logger = logging.getLogger(__name__)
13
12
 
@@ -1,13 +1,14 @@
1
- from rasa.shared.core.domain import Domain
2
- from typing import Optional, Text, List
1
+ import logging
2
+ from typing import List, Optional, Text
3
+
3
4
  from rasa.core.evaluation.marker_base import (
4
- OperatorMarker,
5
5
  ConditionMarker,
6
- MarkerRegistry,
7
6
  Marker,
7
+ MarkerRegistry,
8
+ OperatorMarker,
8
9
  )
9
- from rasa.shared.core.events import ActionExecuted, SlotSet, UserUttered, Event
10
- import logging
10
+ from rasa.shared.core.domain import Domain
11
+ from rasa.shared.core.events import ActionExecuted, Event, SlotSet, UserUttered
11
12
 
12
13
  logger = logging.getLogger(__name__)
13
14
 
@@ -1,42 +1,41 @@
1
1
  from __future__ import annotations
2
+
3
+ import csv
4
+ import logging
2
5
  import os
6
+ import os.path
3
7
  from abc import ABC, abstractmethod
8
+ from dataclasses import dataclass
9
+ from pathlib import Path
4
10
  from typing import (
11
+ TYPE_CHECKING,
12
+ Any,
13
+ AsyncIterator,
5
14
  Dict,
6
15
  Iterator,
16
+ List,
7
17
  Optional,
8
18
  Set,
9
19
  Text,
10
- List,
11
20
  Tuple,
12
21
  Type,
13
22
  TypeVar,
14
- TYPE_CHECKING,
15
23
  Union,
16
- Any,
17
- AsyncIterator,
18
24
  )
19
25
 
20
- from pathlib import Path
21
- from dataclasses import dataclass
22
-
23
26
  import rasa.shared.core.constants
24
27
  import rasa.shared.nlu.constants
25
- import rasa.shared.utils.io
26
28
  import rasa.shared.utils.common
27
- from rasa.shared.data import is_likely_yaml_file
28
- from rasa.shared.exceptions import InvalidConfigException, RasaException
29
- from rasa.shared.core.events import ActionExecuted, UserUttered, Event
29
+ import rasa.shared.utils.io
30
30
  from rasa import telemetry
31
+ from rasa.shared.constants import DOCS_URL_MARKERS
31
32
  from rasa.shared.core.domain import Domain
33
+ from rasa.shared.core.events import ActionExecuted, Event, UserUttered
32
34
  from rasa.shared.core.trackers import DialogueStateTracker
35
+ from rasa.shared.data import is_likely_yaml_file
36
+ from rasa.shared.exceptions import InvalidConfigException, RasaException
33
37
  from rasa.shared.utils.yaml import read_yaml_file
34
38
  from rasa.utils.io import WriteRow
35
- from rasa.shared.constants import DOCS_URL_MARKERS
36
-
37
- import logging
38
- import csv
39
- import os.path
40
39
 
41
40
  if TYPE_CHECKING:
42
41
  from rasa.core.evaluation.marker import OrMarker
@@ -1,14 +1,13 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Union, List, Tuple
3
2
 
4
- from rasa.utils.io import WriteRow
5
- from pathlib import Path
6
3
  import csv
4
+ from pathlib import Path
5
+ from typing import Dict, List, Text, Tuple, Union
7
6
 
8
7
  import numpy as np
9
8
 
10
-
11
9
  from rasa.core.evaluation.marker_base import EventMetaData
10
+ from rasa.utils.io import WriteRow
12
11
 
13
12
 
14
13
  def compute_statistics(
@@ -1,9 +1,10 @@
1
1
  import random
2
- from rasa.shared.exceptions import RasaException
3
- from rasa.shared.core.trackers import DialogueStateTracker
4
- from typing import Any, Iterable, List, Text, Optional, AsyncIterator
5
- from rasa.core.tracker_store import TrackerStore
2
+ from typing import Any, AsyncIterator, Iterable, List, Optional, Text
3
+
6
4
  import rasa.shared.utils.io
5
+ from rasa.core.tracker_store import TrackerStore
6
+ from rasa.shared.core.trackers import DialogueStateTracker
7
+ from rasa.shared.exceptions import RasaException
7
8
 
8
9
  STRATEGY_ALL = "all"
9
10
  STRATEGY_FIRST_N = "first_n"
rasa/core/exporter.py CHANGED
@@ -1,7 +1,7 @@
1
+ import datetime
1
2
  import logging
2
3
  import uuid
3
- import datetime
4
- from typing import AsyncIterator, Text, Optional, List, Set, Dict, Any
4
+ from typing import Any, AsyncIterator, Dict, List, Optional, Set, Text
5
5
 
6
6
  from tqdm import tqdm
7
7
 
@@ -11,12 +11,12 @@ from rasa.core.brokers.broker import EventBroker
11
11
  from rasa.core.brokers.pika import PikaEventBroker
12
12
  from rasa.core.constants import RASA_EXPORT_PROCESS_ID_HEADER_NAME
13
13
  from rasa.core.tracker_store import TrackerStore
14
- from rasa.shared.core.trackers import EventVerbosity
15
14
  from rasa.exceptions import (
16
- NoEventsToMigrateError,
17
15
  NoConversationsInTrackerStoreError,
16
+ NoEventsToMigrateError,
18
17
  PublishingError,
19
18
  )
19
+ from rasa.shared.core.trackers import EventVerbosity
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
22
 
@@ -1,20 +1,20 @@
1
1
  from __future__ import annotations
2
- from typing import Optional, Text, Dict, List, Union, Iterable, Any
3
- from collections.abc import ValuesView, KeysView
4
2
 
5
- from rasa.engine.graph import GraphComponent
6
- from rasa.engine.storage.storage import ModelStorage
3
+ from collections.abc import KeysView, ValuesView
4
+ from typing import Any, Dict, Iterable, List, Optional, Text, Union
5
+
6
+ import rasa.shared.utils.io
7
+ from rasa.engine.graph import ExecutionContext, GraphComponent
7
8
  from rasa.engine.storage.resource import Resource
8
- from rasa.engine.graph import ExecutionContext
9
+ from rasa.engine.storage.storage import ModelStorage
9
10
  from rasa.shared.core.domain import Domain, SubState
10
- from rasa.shared.core.events import ActionExecuted, UserUttered, Event
11
+ from rasa.shared.core.events import ActionExecuted, Event, UserUttered
11
12
  from rasa.shared.core.trackers import DialogueStateTracker
12
13
  from rasa.shared.core.training_data.structures import StoryGraph
13
14
  from rasa.shared.nlu.constants import ACTION_NAME, ACTION_TEXT, INTENT, TEXT
15
+ from rasa.shared.nlu.training_data.features import Features
14
16
  from rasa.shared.nlu.training_data.message import Message
15
17
  from rasa.shared.nlu.training_data.training_data import TrainingData
16
- from rasa.shared.nlu.training_data.features import Features
17
- import rasa.shared.utils.io
18
18
 
19
19
  # TODO: make precomputations (MessageContainerForCoreFeaturization) cacheable
20
20
 
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import List, Optional, Dict, Text, Set, Any
2
+ from typing import Any, Dict, List, Optional, Set, Text
3
3
 
4
4
  import numpy as np
5
5
  import scipy.sparse
@@ -8,18 +8,18 @@ from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturiz
8
8
  from rasa.nlu.extractors.extractor import EntityTagSpec
9
9
  from rasa.nlu.utils import bilou_utils
10
10
  from rasa.nlu.utils.bilou_utils import BILOU_PREFIXES
11
- from rasa.shared.core.domain import SubState, State, Domain
12
- from rasa.shared.core.constants import PREVIOUS_ACTION, ACTIVE_LOOP, USER, SLOTS
11
+ from rasa.shared.core.constants import ACTIVE_LOOP, PREVIOUS_ACTION, SLOTS, USER
12
+ from rasa.shared.core.domain import Domain, State, SubState
13
13
  from rasa.shared.core.trackers import is_prev_action_listen_in_state
14
14
  from rasa.shared.nlu.constants import (
15
+ ACTION_NAME,
16
+ ACTION_TEXT,
15
17
  ENTITIES,
18
+ ENTITY_ATTRIBUTE_TYPE,
19
+ ENTITY_TAGS,
16
20
  FEATURE_TYPE_SENTENCE,
17
- ACTION_TEXT,
18
- ACTION_NAME,
19
21
  INTENT,
20
22
  NO_ENTITY_TAG,
21
- ENTITY_ATTRIBUTE_TYPE,
22
- ENTITY_TAGS,
23
23
  TEXT,
24
24
  )
25
25
  from rasa.shared.nlu.training_data.features import Features
@@ -5,20 +5,20 @@ from abc import abstractmethod
5
5
  from collections import defaultdict
6
6
  from pathlib import Path
7
7
  from typing import (
8
- Tuple,
8
+ Any,
9
+ Callable,
10
+ ClassVar,
11
+ DefaultDict,
12
+ Dict,
13
+ Iterator,
9
14
  List,
10
15
  Optional,
11
- Dict,
16
+ Set,
12
17
  Text,
18
+ Tuple,
19
+ Type,
13
20
  Union,
14
- Any,
15
- Iterator,
16
- Set,
17
- DefaultDict,
18
21
  cast,
19
- Type,
20
- Callable,
21
- ClassVar,
22
22
  )
23
23
 
24
24
  import numpy as np
@@ -30,15 +30,15 @@ from rasa.core.exceptions import InvalidTrackerFeaturizerUsageError
30
30
  from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturization
31
31
  from rasa.core.featurizers.single_state_featurizer import SingleStateFeaturizer
32
32
  from rasa.shared.core.constants import (
33
- USER,
34
33
  ACTION_UNLIKELY_INTENT_NAME,
35
34
  PREVIOUS_ACTION,
35
+ USER,
36
36
  )
37
- from rasa.shared.core.domain import State, Domain
38
- from rasa.shared.core.events import Event, ActionExecuted, UserUttered
37
+ from rasa.shared.core.domain import Domain, State
38
+ from rasa.shared.core.events import ActionExecuted, Event, UserUttered
39
39
  from rasa.shared.core.trackers import DialogueStateTracker
40
40
  from rasa.shared.exceptions import RasaException
41
- from rasa.shared.nlu.constants import TEXT, INTENT, ENTITIES, ACTION_NAME
41
+ from rasa.shared.nlu.constants import ACTION_NAME, ENTITIES, INTENT, TEXT
42
42
  from rasa.shared.nlu.training_data.features import Features
43
43
  from rasa.utils.tensorflow.constants import LABEL_PAD_ID
44
44
  from rasa.utils.tensorflow.model_data import ragged_array_to_ndarray
@@ -1,10 +1,9 @@
1
- import aiohttp
2
-
3
1
  import copy
4
2
  import logging
5
- import structlog
3
+ from typing import Any, Dict, Optional, Text
6
4
 
7
- from typing import Text, Dict, Any, Optional
5
+ import aiohttp
6
+ import structlog
8
7
 
9
8
  from rasa.core import constants
10
9
  from rasa.core.channels import UserMessage
@@ -1,7 +1,7 @@
1
1
  from rasa.core.information_retrieval.information_retrieval import ( # noqa: F401
2
2
  InformationRetrieval,
3
+ InformationRetrievalException,
3
4
  SearchResult,
4
5
  SearchResultList,
5
- InformationRetrievalException,
6
6
  create_from_endpoint_config,
7
7
  )
@@ -1,18 +1,18 @@
1
1
  from pathlib import Path
2
- from typing import TYPE_CHECKING, List, Optional, Text, Any, Dict
2
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text
3
3
 
4
4
  import structlog
5
5
  from langchain.text_splitter import RecursiveCharacterTextSplitter
6
- from langchain_community.document_loaders.text import TextLoader
7
6
  from langchain_community.document_loaders.directory import DirectoryLoader
7
+ from langchain_community.document_loaders.text import TextLoader
8
8
  from langchain_community.vectorstores.faiss import FAISS
9
- from rasa.utils.endpoints import EndpointConfig
10
9
 
11
10
  from rasa.core.information_retrieval import (
12
- SearchResultList,
13
11
  InformationRetrieval,
14
12
  InformationRetrievalException,
13
+ SearchResultList,
15
14
  )
15
+ from rasa.utils.endpoints import EndpointConfig
16
16
  from rasa.utils.ml_utils import persist_faiss_vector_store
17
17
 
18
18
  if TYPE_CHECKING:
@@ -1,13 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import importlib
3
4
  from dataclasses import dataclass
4
- from typing import TYPE_CHECKING, List, Text, Any, Optional
5
+ from typing import TYPE_CHECKING, Any, List, Optional, Text
5
6
 
6
7
  import structlog
7
8
 
8
9
  from rasa.shared.exceptions import RasaException
9
10
  from rasa.utils.endpoints import EndpointConfig
10
- import importlib
11
11
 
12
12
  if TYPE_CHECKING:
13
13
  from langchain.schema import Document
@@ -1,14 +1,14 @@
1
- from typing import Text, Any, Dict
1
+ from typing import Any, Dict, Text
2
2
 
3
3
  import structlog
4
4
  from langchain_community.vectorstores.milvus import Milvus
5
- from rasa.utils.endpoints import EndpointConfig
6
5
 
7
6
  from rasa.core.information_retrieval import (
8
- SearchResultList,
9
7
  InformationRetrieval,
10
8
  InformationRetrievalException,
9
+ SearchResultList,
11
10
  )
11
+ from rasa.utils.endpoints import EndpointConfig
12
12
 
13
13
  logger = structlog.get_logger()
14
14
 
@@ -1,16 +1,16 @@
1
- from typing import Text, Any, Dict
1
+ from typing import Any, Dict, Text
2
2
 
3
3
  import structlog
4
4
  from langchain_community.vectorstores.qdrant import Qdrant
5
5
  from pydantic import ValidationError
6
6
  from qdrant_client import QdrantClient
7
- from rasa.utils.endpoints import EndpointConfig
8
7
 
9
8
  from rasa.core.information_retrieval import (
10
- SearchResultList,
11
9
  InformationRetrieval,
12
10
  InformationRetrievalException,
11
+ SearchResultList,
13
12
  )
13
+ from rasa.utils.endpoints import EndpointConfig
14
14
 
15
15
  logger = structlog.get_logger()
16
16
 
rasa/core/jobs.py CHANGED
@@ -3,6 +3,7 @@ import logging
3
3
 
4
4
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
5
5
  from pytz import UnknownTimeZoneError, utc
6
+
6
7
  import rasa.shared.utils.io
7
8
 
8
9
  __scheduler = None
rasa/core/lock.py CHANGED
@@ -1,9 +1,8 @@
1
1
  import json
2
2
  import logging
3
- from collections import deque
4
-
5
3
  import time
6
- from typing import Text, Optional, Union, Deque, Dict, Any
4
+ from collections import deque
5
+ from typing import Any, Deque, Dict, Optional, Text, Union
7
6
 
8
7
  logger = logging.getLogger(__name__)
9
8
 
rasa/core/lock_store.py CHANGED
@@ -1,16 +1,16 @@
1
1
  from __future__ import annotations
2
+
2
3
  import asyncio
3
- from contextlib import asynccontextmanager
4
4
  import json
5
5
  import logging
6
6
  import os
7
-
7
+ from contextlib import asynccontextmanager
8
8
  from typing import AsyncGenerator, Dict, Optional, Text, Union
9
9
 
10
- from rasa.shared.exceptions import RasaException, ConnectionException
11
10
  import rasa.shared.utils.common
12
11
  from rasa.core.constants import DEFAULT_LOCK_LIFETIME
13
12
  from rasa.core.lock import TicketLock
13
+ from rasa.shared.exceptions import ConnectionException, RasaException
14
14
  from rasa.utils.endpoints import EndpointConfig
15
15
 
16
16
  logger = logging.getLogger(__name__)
rasa/core/migrate.py CHANGED
@@ -1,28 +1,31 @@
1
1
  import copy
2
2
  import shutil
3
3
  from pathlib import Path
4
- from typing import List, Dict, Text, Any, Tuple, Optional, Union
4
+ from typing import Any, Dict, List, Optional, Text, Tuple, Union
5
5
 
6
6
  from ruamel.yaml.scalarstring import DoubleQuotedScalarString
7
7
 
8
- import rasa.shared.utils.io
9
8
  import rasa.shared.utils.cli
10
- from rasa.shared.constants import REQUIRED_SLOTS_KEY, IGNORED_INTENTS
9
+ import rasa.shared.utils.io
10
+ from rasa.shared.constants import (
11
+ IGNORED_INTENTS,
12
+ LATEST_TRAINING_DATA_FORMAT_VERSION,
13
+ REQUIRED_SLOTS_KEY,
14
+ )
11
15
  from rasa.shared.core.constants import (
12
16
  ACTIVE_LOOP,
13
- REQUESTED_SLOT,
14
- SlotMappingType,
15
17
  MAPPING_TYPE,
18
+ REQUESTED_SLOT,
16
19
  SLOT_MAPPINGS,
20
+ SlotMappingType,
17
21
  )
18
- from rasa.shared.constants import LATEST_TRAINING_DATA_FORMAT_VERSION
19
- from rasa.shared.core.domain import KEY_ENTITIES, KEY_SLOTS, KEY_FORMS, Domain
22
+ from rasa.shared.core.domain import KEY_ENTITIES, KEY_FORMS, KEY_SLOTS, Domain
20
23
  from rasa.shared.exceptions import RasaException
21
24
  from rasa.shared.utils.yaml import (
22
25
  KEY_TRAINING_DATA_FORMAT_VERSION,
23
26
  read_yaml,
24
- write_yaml,
25
27
  read_yaml_file,
28
+ write_yaml,
26
29
  )
27
30
 
28
31
  ORIGINAL_DOMAIN = "original_domain" # not a default, fixed
rasa/core/nlg/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
+ from rasa.core.nlg.callback import CallbackNaturalLanguageGenerator # noqa: F401
1
2
  from rasa.core.nlg.generator import NaturalLanguageGenerator # noqa: F401
2
3
  from rasa.core.nlg.response import TemplatedNaturalLanguageGenerator # noqa: F401
3
- from rasa.core.nlg.callback import CallbackNaturalLanguageGenerator # noqa: F401
rasa/core/nlg/callback.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import List, Text, Any, Dict, Optional
3
+ from typing import Any, Dict, List, Optional, Text
4
4
 
5
5
  from rasa.core.constants import DEFAULT_REQUEST_TIMEOUT
6
6
  from rasa.core.nlg.generator import NaturalLanguageGenerator, ResponseVariationFilter
@@ -100,8 +100,7 @@ class CallbackNaturalLanguageGenerator(NaturalLanguageGenerator):
100
100
  @staticmethod
101
101
  def validate_response(content: Optional[Dict[Text, Any]]) -> bool:
102
102
  """Validate the NLG response. Raises exception on failure."""
103
- from jsonschema import validate
104
- from jsonschema import ValidationError
103
+ from jsonschema import ValidationError, validate
105
104
 
106
105
  try:
107
106
  if content is None or content == "":
@@ -2,22 +2,31 @@ from typing import Any, Dict, Optional, Text
2
2
 
3
3
  import structlog
4
4
  from jinja2 import Template
5
+
5
6
  from rasa import telemetry
6
7
  from rasa.core.nlg.response import TemplatedNaturalLanguageGenerator
7
8
  from rasa.core.nlg.summarize import summarize_conversation
8
9
  from rasa.shared.constants import (
9
10
  LLM_CONFIG_KEY,
10
11
  MODEL_CONFIG_KEY,
12
+ MODEL_GROUP_ID_CONFIG_KEY,
11
13
  MODEL_NAME_CONFIG_KEY,
14
+ OPENAI_PROVIDER,
12
15
  PROMPT_CONFIG_KEY,
13
16
  PROVIDER_CONFIG_KEY,
14
- OPENAI_PROVIDER,
15
17
  TIMEOUT_CONFIG_KEY,
16
- MODEL_GROUP_ID_CONFIG_KEY,
17
18
  )
18
19
  from rasa.shared.core.domain import KEY_RESPONSES_TEXT, Domain
19
20
  from rasa.shared.core.events import BotUttered, UserUttered
20
21
  from rasa.shared.core.trackers import DialogueStateTracker
22
+ from rasa.shared.nlu.constants import (
23
+ KEY_COMPONENT_NAME,
24
+ KEY_LLM_RESPONSE_METADATA,
25
+ KEY_PROMPT_NAME,
26
+ KEY_USER_PROMPT,
27
+ PROMPTS,
28
+ )
29
+ from rasa.shared.providers.llm.llm_response import LLMResponse
21
30
  from rasa.shared.utils.health_check.llm_health_check_mixin import LLMHealthCheckMixin
22
31
  from rasa.shared.utils.llm import (
23
32
  DEFAULT_OPENAI_GENERATE_MODEL_NAME,
@@ -27,8 +36,6 @@ from rasa.shared.utils.llm import (
27
36
  get_prompt_template,
28
37
  llm_factory,
29
38
  resolve_model_client_config,
30
- )
31
- from rasa.shared.utils.llm import (
32
39
  tracker_as_readable_transcript,
33
40
  )
34
41
  from rasa.utils.endpoints import EndpointConfig
@@ -124,6 +131,39 @@ class ContextualResponseRephraser(
124
131
  ContextualResponseRephraser.__name__,
125
132
  )
126
133
 
134
+ @classmethod
135
+ def _add_prompt_and_llm_metadata_to_response(
136
+ cls,
137
+ response: Dict[str, Any],
138
+ prompt_name: str,
139
+ user_prompt: str,
140
+ llm_response: Optional["LLMResponse"] = None,
141
+ ) -> Dict[str, Any]:
142
+ """Stores the prompt and LLMResponse metadata to response.
143
+
144
+ Args:
145
+ response: The response to add the prompt and LLMResponse metadata to.
146
+ prompt_name: A name identifying prompt usage.
147
+ user_prompt: The user prompt that was sent to the LLM.
148
+ llm_response: The response object from the LLM (None if no response).
149
+ """
150
+ from rasa.dialogue_understanding.utils import record_commands_and_prompts
151
+
152
+ if not record_commands_and_prompts:
153
+ return response
154
+
155
+ prompt_data: Dict[Text, Any] = {
156
+ KEY_COMPONENT_NAME: cls.__name__,
157
+ KEY_PROMPT_NAME: prompt_name,
158
+ KEY_USER_PROMPT: user_prompt,
159
+ KEY_LLM_RESPONSE_METADATA: llm_response.to_dict() if llm_response else None,
160
+ }
161
+
162
+ prompts = response.get(PROMPTS, [])
163
+ prompts.append(prompt_data)
164
+ response[PROMPTS] = prompts
165
+ return response
166
+
127
167
  def _last_message_if_human(self, tracker: DialogueStateTracker) -> Optional[str]:
128
168
  """Returns the latest message from the tracker.
129
169
 
@@ -142,20 +182,20 @@ class ContextualResponseRephraser(
142
182
  return None
143
183
  return None
144
184
 
145
- async def _generate_llm_response(self, prompt: str) -> Optional[str]:
146
- """Use LLM to generate a response.
185
+ async def _generate_llm_response(self, prompt: str) -> Optional[LLMResponse]:
186
+ """Use LLM to generate a response, returning an LLMResponse object
187
+ containing both the generated text (choices) and metadata.
147
188
 
148
189
  Args:
149
- prompt: the prompt to send to the LLM
190
+ prompt: The prompt to send to the LLM.
150
191
 
151
192
  Returns:
152
- generated text
193
+ An LLMResponse object if successful, otherwise None.
153
194
  """
154
195
  llm = llm_factory(self.llm_config, DEFAULT_LLM_CONFIG)
155
196
 
156
197
  try:
157
- llm_response = await llm.acompletion(prompt)
158
- return llm_response.choices[0]
198
+ return await llm.acompletion(prompt)
159
199
  except Exception as e:
160
200
  # unfortunately, langchain does not wrap LLM exceptions which means
161
201
  # we have to catch all exceptions here
@@ -255,11 +295,21 @@ class ContextualResponseRephraser(
255
295
  or self.llm_property(MODEL_NAME_CONFIG_KEY),
256
296
  llm_model_group_id=self.llm_property(MODEL_GROUP_ID_CONFIG_KEY),
257
297
  )
258
- if not (updated_text := await self._generate_llm_response(prompt)):
259
- # If the LLM fails to generate a response, we
260
- # return the original response.
298
+ llm_response = await self._generate_llm_response(prompt)
299
+ llm_response = LLMResponse.ensure_llm_response(llm_response)
300
+
301
+ response = self._add_prompt_and_llm_metadata_to_response(
302
+ response=response,
303
+ prompt_name="rephrase_prompt",
304
+ user_prompt=prompt,
305
+ llm_response=llm_response,
306
+ )
307
+
308
+ if not (llm_response and llm_response.choices and llm_response.choices[0]):
309
+ # If the LLM fails to generate a response, return the original response.
261
310
  return response
262
311
 
312
+ updated_text = llm_response.choices[0]
263
313
  structlogger.debug(
264
314
  "nlg.rewrite.complete",
265
315
  response_text=response_text,