rasa-pro 3.11.5__py3-none-any.whl → 3.12.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

Files changed (559) hide show
  1. README.md +10 -13
  2. rasa/__main__.py +7 -7
  3. rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
  4. rasa/anonymization/anonymization_pipeline.py +3 -3
  5. rasa/anonymization/anonymization_rule_executor.py +17 -11
  6. rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
  7. rasa/cli/arguments/data.py +2 -2
  8. rasa/cli/arguments/default_arguments.py +1 -1
  9. rasa/cli/arguments/evaluate.py +2 -1
  10. rasa/cli/arguments/interactive.py +1 -1
  11. rasa/cli/arguments/run.py +1 -1
  12. rasa/cli/arguments/test.py +7 -5
  13. rasa/cli/arguments/train.py +3 -3
  14. rasa/cli/arguments/visualize.py +2 -2
  15. rasa/cli/arguments/x.py +1 -0
  16. rasa/cli/data.py +20 -3
  17. rasa/cli/dialogue_understanding_test.py +386 -0
  18. rasa/cli/evaluate.py +1 -1
  19. rasa/cli/export.py +6 -6
  20. rasa/cli/inspect.py +20 -1
  21. rasa/cli/interactive.py +4 -5
  22. rasa/cli/llm_fine_tuning.py +51 -16
  23. rasa/cli/markers.py +1 -2
  24. rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
  25. rasa/cli/project_templates/calm/config.yml +2 -2
  26. rasa/cli/project_templates/calm/domain/list_contacts.yml +1 -2
  27. rasa/cli/project_templates/calm/domain/remove_contact.yml +1 -2
  28. rasa/cli/project_templates/calm/domain/shared.yml +1 -4
  29. rasa/cli/project_templates/calm/endpoints.yml +2 -2
  30. rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
  31. rasa/cli/shell.py +5 -6
  32. rasa/cli/studio/download.py +1 -2
  33. rasa/cli/studio/studio.py +2 -3
  34. rasa/cli/studio/train.py +0 -1
  35. rasa/cli/telemetry.py +2 -2
  36. rasa/cli/test.py +11 -11
  37. rasa/cli/train.py +3 -0
  38. rasa/cli/utils.py +25 -5
  39. rasa/constants.py +0 -1
  40. rasa/core/__init__.py +0 -1
  41. rasa/core/actions/action.py +135 -208
  42. rasa/core/actions/action_handle_digressions.py +164 -0
  43. rasa/core/actions/action_hangup.py +1 -1
  44. rasa/core/actions/action_repeat_bot_messages.py +2 -2
  45. rasa/core/actions/action_run_slot_rejections.py +18 -6
  46. rasa/core/actions/action_trigger_chitchat.py +1 -1
  47. rasa/core/actions/action_trigger_flow.py +5 -5
  48. rasa/core/actions/action_trigger_search.py +1 -1
  49. rasa/core/actions/custom_action_executor.py +1 -1
  50. rasa/core/actions/direct_custom_actions_executor.py +1 -0
  51. rasa/core/actions/forms.py +22 -15
  52. rasa/core/actions/http_custom_action_executor.py +8 -1
  53. rasa/core/actions/loops.py +3 -3
  54. rasa/core/actions/two_stage_fallback.py +13 -13
  55. rasa/core/auth_retry_tracker_store.py +1 -2
  56. rasa/core/brokers/broker.py +2 -1
  57. rasa/core/brokers/file.py +1 -1
  58. rasa/core/brokers/kafka.py +8 -8
  59. rasa/core/brokers/pika.py +8 -9
  60. rasa/core/brokers/sql.py +4 -3
  61. rasa/core/channels/__init__.py +7 -0
  62. rasa/core/channels/botframework.py +2 -2
  63. rasa/core/channels/callback.py +4 -4
  64. rasa/core/channels/channel.py +11 -11
  65. rasa/core/channels/console.py +0 -1
  66. rasa/core/channels/development_inspector.py +80 -24
  67. rasa/core/channels/facebook.py +5 -5
  68. rasa/core/channels/hangouts.py +7 -8
  69. rasa/core/channels/inspector/dist/assets/{arc-f0f8bd46.js → arc-9f1365dc.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7162c77d.js → blockDiagram-38ab4fdb-e0f81b12.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-b1d0d098.js → c4Diagram-3d4e48cf-9deaee1c.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/channel-44956714.js +1 -0
  73. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-807a1b27.js → classDiagram-70f12bd4-20450a96.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-5238dcdb.js → classDiagram-v2-f2320105-749d2abf.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/clone-a9475142.js +1 -0
  76. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-75dfaa67.js → createText-2e5e7dd3-bef0b38c.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-df20501d.js → edges-e0da2a9e-943801a7.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-13cf4797.js → erDiagram-9861fffd-d523a948.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-a4991264.js → flowDb-956e92f1-54e4cf19.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-ccecf773.js → flowDiagram-66a62f08-48bfbbe8.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-43fa749a.js +1 -0
  82. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b5801783.js → flowchart-elk-definition-4a651766-17c30827.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-161e079a.js → ganttDiagram-c361ad54-43086f2d.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-f38e86a4.js → gitGraphDiagram-72cf32ee-5c8b693e.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{graph-be6ef5d8.js → graph-41a90d26.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{index-3862675e-d9ce8994.js → index-3862675e-b43eeae9.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{index-7794b245.js → index-e8affe45.js} +155 -155
  88. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-5000a3dc.js → infoDiagram-f8f76790-0b20676b.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-8ef0a17a.js → journeyDiagram-49397b02-39bce7b5.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{layout-d649bc98.js → layout-dc8eeea4.js} +1 -1
  91. rasa/core/channels/inspector/dist/assets/{line-95add810.js → line-c4d2e756.js} +1 -1
  92. rasa/core/channels/inspector/dist/assets/{linear-f6025094.js → linear-86f6f2d9.js} +1 -1
  93. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-2e8531c4.js → mindmap-definition-fc14e90a-4216f771.js} +1 -1
  94. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-918adfdb.js → pieDiagram-8a3498a8-1a0cfa96.js} +1 -1
  95. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-cbd01797.js → quadrantDiagram-120e2f19-f91e67cf.js} +1 -1
  96. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6a8b877b.js → requirementDiagram-deff3bca-d4046bed.js} +1 -1
  97. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-c377c3fe.js → sankeyDiagram-04a897e0-2cf6d1d7.js} +1 -1
  98. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-ab9e9b7f.js → sequenceDiagram-704730f1-751ac4f5.js} +1 -1
  99. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-5e6ae67d.js → stateDiagram-587899a1-f734f4d4.js} +1 -1
  100. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-40643476.js → stateDiagram-v2-d93cdb3a-91c65710.js} +1 -1
  101. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-afb8d108.js → styles-6aaf32cf-e0cff7be.js} +1 -1
  102. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-7edc9423.js → styles-9a916d00-c8029e5d.js} +1 -1
  103. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-c1d8f7e9.js → styles-c10674c1-114f312a.js} +1 -1
  104. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f494b2ef.js → svgDrawCommon-08f97a94-b7b9dc00.js} +1 -1
  105. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-11c7cdd0.js → timeline-definition-85554ec2-9536d189.js} +1 -1
  106. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-3f191ec1.js → xychartDiagram-e933f94c-bf3b0f36.js} +1 -1
  107. rasa/core/channels/inspector/dist/index.html +1 -1
  108. rasa/core/channels/inspector/package.json +1 -0
  109. rasa/core/channels/inspector/src/App.tsx +15 -2
  110. rasa/core/channels/inspector/src/components/RasaLogo.tsx +31 -0
  111. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +68 -0
  112. rasa/core/channels/inspector/src/components/Welcome.tsx +19 -13
  113. rasa/core/channels/inspector/yarn.lock +5 -0
  114. rasa/core/channels/mattermost.py +4 -4
  115. rasa/core/channels/rasa_chat.py +4 -4
  116. rasa/core/channels/rest.py +11 -12
  117. rasa/core/channels/rocketchat.py +4 -3
  118. rasa/core/channels/slack.py +6 -5
  119. rasa/core/channels/socketio.py +8 -28
  120. rasa/core/channels/studio_chat.py +212 -0
  121. rasa/core/channels/telegram.py +105 -55
  122. rasa/core/channels/twilio.py +3 -3
  123. rasa/core/channels/vier_cvg.py +2 -2
  124. rasa/core/channels/voice_ready/audiocodes.py +9 -9
  125. rasa/core/channels/voice_ready/jambonz.py +5 -5
  126. rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
  127. rasa/core/channels/voice_ready/twilio_voice.py +9 -8
  128. rasa/core/channels/voice_ready/utils.py +2 -2
  129. rasa/core/channels/voice_stream/asr/asr_engine.py +12 -6
  130. rasa/core/channels/voice_stream/asr/asr_event.py +5 -0
  131. rasa/core/channels/voice_stream/asr/azure.py +16 -3
  132. rasa/core/channels/voice_stream/asr/deepgram.py +76 -19
  133. rasa/core/channels/voice_stream/audiocodes.py +292 -0
  134. rasa/core/channels/voice_stream/browser_audio.py +14 -7
  135. rasa/core/channels/voice_stream/call_state.py +6 -2
  136. rasa/core/channels/voice_stream/genesys.py +320 -0
  137. rasa/core/channels/voice_stream/tts/azure.py +13 -5
  138. rasa/core/channels/voice_stream/tts/cartesia.py +34 -14
  139. rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
  140. rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
  141. rasa/core/channels/voice_stream/twilio_media_streams.py +12 -8
  142. rasa/core/channels/voice_stream/util.py +1 -1
  143. rasa/core/channels/voice_stream/voice_channel.py +100 -56
  144. rasa/core/channels/webexteams.py +3 -4
  145. rasa/core/constants.py +2 -0
  146. rasa/core/evaluation/marker.py +7 -6
  147. rasa/core/evaluation/marker_base.py +15 -16
  148. rasa/core/evaluation/marker_stats.py +3 -4
  149. rasa/core/evaluation/marker_tracker_loader.py +5 -4
  150. rasa/core/exporter.py +4 -4
  151. rasa/core/featurizers/precomputation.py +8 -8
  152. rasa/core/featurizers/single_state_featurizer.py +7 -7
  153. rasa/core/featurizers/tracker_featurizers.py +13 -13
  154. rasa/core/http_interpreter.py +3 -4
  155. rasa/core/information_retrieval/__init__.py +1 -1
  156. rasa/core/information_retrieval/faiss.py +4 -4
  157. rasa/core/information_retrieval/information_retrieval.py +2 -2
  158. rasa/core/information_retrieval/milvus.py +3 -3
  159. rasa/core/information_retrieval/qdrant.py +3 -3
  160. rasa/core/jobs.py +1 -0
  161. rasa/core/lock.py +2 -3
  162. rasa/core/lock_store.py +3 -3
  163. rasa/core/migrate.py +12 -9
  164. rasa/core/nlg/__init__.py +1 -1
  165. rasa/core/nlg/callback.py +2 -3
  166. rasa/core/nlg/contextual_response_rephraser.py +82 -14
  167. rasa/core/nlg/generator.py +85 -17
  168. rasa/core/nlg/interpolator.py +4 -3
  169. rasa/core/nlg/response.py +9 -7
  170. rasa/core/nlg/summarize.py +1 -0
  171. rasa/core/nlg/translate.py +55 -0
  172. rasa/core/persistor.py +3 -3
  173. rasa/core/policies/ensemble.py +10 -9
  174. rasa/core/policies/enterprise_search_policy.py +87 -21
  175. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +1 -1
  176. rasa/core/policies/flow_policy.py +13 -14
  177. rasa/core/policies/flows/flow_executor.py +85 -55
  178. rasa/core/policies/intentless_policy.py +6 -7
  179. rasa/core/policies/memoization.py +22 -20
  180. rasa/core/policies/policy.py +24 -22
  181. rasa/core/policies/rule_policy.py +37 -36
  182. rasa/core/policies/ted_policy.py +87 -85
  183. rasa/core/policies/unexpected_intent_policy.py +77 -75
  184. rasa/core/processor.py +167 -74
  185. rasa/core/run.py +5 -4
  186. rasa/core/secrets_manager/endpoints.py +2 -3
  187. rasa/core/secrets_manager/factory.py +2 -3
  188. rasa/core/secrets_manager/secret_manager.py +2 -3
  189. rasa/core/secrets_manager/vault.py +2 -2
  190. rasa/core/test.py +30 -30
  191. rasa/core/tracker_store.py +138 -49
  192. rasa/core/train.py +1 -1
  193. rasa/core/training/__init__.py +2 -2
  194. rasa/core/training/converters/responses_prefix_converter.py +1 -2
  195. rasa/core/training/interactive.py +13 -13
  196. rasa/core/training/story_conflict.py +4 -5
  197. rasa/core/training/training.py +3 -5
  198. rasa/core/utils.py +5 -5
  199. rasa/core/visualize.py +1 -1
  200. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
  201. rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
  202. rasa/dialogue_understanding/commands/__init__.py +22 -22
  203. rasa/dialogue_understanding/commands/can_not_handle_command.py +38 -1
  204. rasa/dialogue_understanding/commands/cancel_flow_command.py +96 -9
  205. rasa/dialogue_understanding/commands/change_flow_command.py +36 -2
  206. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +36 -4
  207. rasa/dialogue_understanding/commands/clarify_command.py +46 -4
  208. rasa/dialogue_understanding/commands/command.py +3 -2
  209. rasa/dialogue_understanding/commands/command_syntax_manager.py +55 -0
  210. rasa/dialogue_understanding/commands/correct_slots_command.py +14 -5
  211. rasa/dialogue_understanding/commands/error_command.py +1 -1
  212. rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
  213. rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
  214. rasa/dialogue_understanding/commands/handle_digressions_command.py +144 -0
  215. rasa/dialogue_understanding/commands/human_handoff_command.py +34 -4
  216. rasa/dialogue_understanding/commands/knowledge_answer_command.py +36 -4
  217. rasa/dialogue_understanding/commands/noop_command.py +2 -1
  218. rasa/dialogue_understanding/commands/prompt_command.py +94 -0
  219. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +34 -4
  220. rasa/dialogue_understanding/commands/restart_command.py +2 -5
  221. rasa/dialogue_understanding/commands/session_end_command.py +3 -5
  222. rasa/dialogue_understanding/commands/session_start_command.py +3 -5
  223. rasa/dialogue_understanding/commands/set_slot_command.py +55 -16
  224. rasa/dialogue_understanding/commands/skip_question_command.py +34 -4
  225. rasa/dialogue_understanding/commands/start_flow_command.py +78 -2
  226. rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
  227. rasa/dialogue_understanding/commands/utils.py +126 -43
  228. rasa/dialogue_understanding/constants.py +2 -0
  229. rasa/dialogue_understanding/generator/__init__.py +2 -0
  230. rasa/dialogue_understanding/generator/command_generator.py +120 -79
  231. rasa/dialogue_understanding/generator/command_parser.py +245 -0
  232. rasa/dialogue_understanding/generator/constants.py +12 -4
  233. rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
  234. rasa/dialogue_understanding/generator/llm_based_command_generator.py +187 -59
  235. rasa/dialogue_understanding/generator/llm_command_generator.py +6 -3
  236. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +106 -110
  237. rasa/dialogue_understanding/generator/nlu_command_adapter.py +53 -11
  238. rasa/dialogue_understanding/generator/prompt_templates/__init__.py +0 -0
  239. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +58 -0
  240. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +57 -0
  241. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +574 -0
  242. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +41 -386
  243. rasa/dialogue_understanding/generator/utils.py +76 -0
  244. rasa/dialogue_understanding/patterns/cancel.py +2 -1
  245. rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
  246. rasa/dialogue_understanding/patterns/chitchat.py +1 -1
  247. rasa/dialogue_understanding/patterns/clarify.py +2 -1
  248. rasa/dialogue_understanding/patterns/code_change.py +2 -0
  249. rasa/dialogue_understanding/patterns/collect_information.py +7 -4
  250. rasa/dialogue_understanding/patterns/completed.py +1 -1
  251. rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -1
  252. rasa/dialogue_understanding/patterns/correction.py +17 -3
  253. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +78 -2
  254. rasa/dialogue_understanding/patterns/handle_digressions.py +81 -0
  255. rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
  256. rasa/dialogue_understanding/patterns/internal_error.py +1 -0
  257. rasa/dialogue_understanding/patterns/search.py +1 -1
  258. rasa/dialogue_understanding/patterns/session_start.py +1 -1
  259. rasa/dialogue_understanding/patterns/skip_question.py +1 -0
  260. rasa/dialogue_understanding/patterns/user_silence.py +1 -1
  261. rasa/dialogue_understanding/patterns/validate_slot.py +65 -0
  262. rasa/dialogue_understanding/processor/command_processor.py +193 -43
  263. rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
  264. rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
  265. rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
  266. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
  267. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
  268. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
  269. rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
  270. rasa/dialogue_understanding/stack/utils.py +56 -10
  271. rasa/dialogue_understanding/utils.py +164 -0
  272. rasa/dialogue_understanding_test/README.md +429 -0
  273. rasa/dialogue_understanding_test/__init__.py +0 -0
  274. rasa/dialogue_understanding_test/command_comparison.py +60 -0
  275. rasa/dialogue_understanding_test/command_metric_calculation.py +122 -0
  276. rasa/dialogue_understanding_test/constants.py +22 -0
  277. rasa/dialogue_understanding_test/du_test_case.py +448 -0
  278. rasa/dialogue_understanding_test/du_test_result.py +390 -0
  279. rasa/dialogue_understanding_test/du_test_runner.py +322 -0
  280. rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
  281. rasa/dialogue_understanding_test/io.py +443 -0
  282. rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
  283. rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
  284. rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
  285. rasa/dialogue_understanding_test/utils.py +70 -0
  286. rasa/dialogue_understanding_test/validation.py +77 -0
  287. rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
  288. rasa/e2e_test/assertions.py +202 -175
  289. rasa/e2e_test/assertions_schema.yml +6 -0
  290. rasa/e2e_test/constants.py +16 -1
  291. rasa/e2e_test/e2e_config.py +102 -41
  292. rasa/e2e_test/e2e_config_schema.yml +28 -10
  293. rasa/e2e_test/e2e_test_case.py +5 -5
  294. rasa/e2e_test/e2e_test_converter.py +2 -3
  295. rasa/e2e_test/e2e_test_coverage_report.py +6 -6
  296. rasa/e2e_test/e2e_test_result.py +1 -1
  297. rasa/e2e_test/e2e_test_runner.py +143 -38
  298. rasa/e2e_test/llm_judge_prompts/answer_relevance_prompt_template.jinja2 +93 -0
  299. rasa/e2e_test/llm_judge_prompts/groundedness_prompt_template.jinja2 +169 -0
  300. rasa/e2e_test/stub_custom_action.py +1 -1
  301. rasa/e2e_test/utils/generative_assertions.py +243 -0
  302. rasa/e2e_test/utils/io.py +123 -93
  303. rasa/e2e_test/utils/validation.py +101 -3
  304. rasa/engine/caching.py +5 -7
  305. rasa/engine/constants.py +1 -1
  306. rasa/engine/graph.py +3 -2
  307. rasa/engine/language.py +182 -0
  308. rasa/engine/recipes/config_files/default_config.yml +4 -0
  309. rasa/engine/recipes/default_components.py +13 -15
  310. rasa/engine/recipes/default_recipe.py +65 -49
  311. rasa/engine/recipes/graph_recipe.py +10 -7
  312. rasa/engine/recipes/recipe.py +2 -2
  313. rasa/engine/runner/dask.py +2 -2
  314. rasa/engine/runner/interface.py +1 -0
  315. rasa/engine/storage/local_model_storage.py +6 -4
  316. rasa/engine/storage/resource.py +2 -1
  317. rasa/engine/storage/storage.py +8 -3
  318. rasa/engine/training/components.py +2 -1
  319. rasa/engine/training/fingerprinting.py +4 -2
  320. rasa/engine/training/graph_trainer.py +4 -4
  321. rasa/engine/training/hooks.py +2 -2
  322. rasa/engine/validation.py +36 -33
  323. rasa/exceptions.py +3 -2
  324. rasa/graph_components/converters/nlu_message_converter.py +3 -3
  325. rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
  326. rasa/graph_components/providers/domain_provider.py +3 -2
  327. rasa/graph_components/providers/flows_provider.py +2 -3
  328. rasa/graph_components/providers/forms_provider.py +4 -4
  329. rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
  330. rasa/graph_components/providers/responses_provider.py +4 -4
  331. rasa/graph_components/providers/rule_only_provider.py +3 -2
  332. rasa/graph_components/providers/story_graph_provider.py +8 -8
  333. rasa/graph_components/providers/training_tracker_provider.py +3 -2
  334. rasa/graph_components/validators/default_recipe_validator.py +16 -16
  335. rasa/graph_components/validators/finetuning_validator.py +10 -8
  336. rasa/hooks.py +19 -14
  337. rasa/jupyter.py +2 -2
  338. rasa/llm_fine_tuning/annotation_module.py +4 -4
  339. rasa/llm_fine_tuning/conversations.py +5 -33
  340. rasa/llm_fine_tuning/llm_data_preparation_module.py +6 -4
  341. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
  342. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +18 -13
  343. rasa/llm_fine_tuning/paraphrasing_module.py +6 -2
  344. rasa/llm_fine_tuning/storage.py +3 -3
  345. rasa/llm_fine_tuning/train_test_split_module.py +27 -27
  346. rasa/llm_fine_tuning/utils.py +7 -0
  347. rasa/markers/marker.py +2 -3
  348. rasa/markers/marker_base.py +1 -2
  349. rasa/markers/upload.py +2 -2
  350. rasa/markers/validate.py +2 -3
  351. rasa/model.py +3 -5
  352. rasa/model_manager/config.py +1 -1
  353. rasa/model_manager/model_api.py +5 -4
  354. rasa/model_manager/runner_service.py +13 -10
  355. rasa/model_manager/socket_bridge.py +15 -9
  356. rasa/model_manager/studio_jwt_auth.py +1 -0
  357. rasa/model_manager/trainer_service.py +9 -7
  358. rasa/model_manager/utils.py +1 -1
  359. rasa/model_manager/warm_rasa_process.py +14 -9
  360. rasa/model_service.py +5 -6
  361. rasa/model_testing.py +13 -15
  362. rasa/model_training.py +29 -29
  363. rasa/nlu/classifiers/diet_classifier.py +72 -73
  364. rasa/nlu/classifiers/fallback_classifier.py +9 -8
  365. rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
  366. rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
  367. rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
  368. rasa/nlu/classifiers/regex_message_handler.py +3 -2
  369. rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
  370. rasa/nlu/convert.py +2 -2
  371. rasa/nlu/emulators/dialogflow.py +3 -3
  372. rasa/nlu/emulators/luis.py +5 -5
  373. rasa/nlu/emulators/no_emulator.py +1 -0
  374. rasa/nlu/emulators/wit.py +4 -4
  375. rasa/nlu/extractors/crf_entity_extractor.py +11 -11
  376. rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
  377. rasa/nlu/extractors/entity_synonyms.py +10 -9
  378. rasa/nlu/extractors/extractor.py +16 -16
  379. rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
  380. rasa/nlu/extractors/regex_entity_extractor.py +11 -10
  381. rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
  382. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
  383. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
  384. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
  385. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
  386. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
  387. rasa/nlu/featurizers/featurizer.py +5 -4
  388. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
  389. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
  390. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
  391. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
  392. rasa/nlu/model.py +0 -1
  393. rasa/nlu/selectors/response_selector.py +67 -68
  394. rasa/nlu/test.py +38 -38
  395. rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
  396. rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
  397. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
  398. rasa/nlu/tokenizers/tokenizer.py +6 -7
  399. rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
  400. rasa/nlu/utils/bilou_utils.py +7 -7
  401. rasa/nlu/utils/hugging_face/registry.py +22 -22
  402. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
  403. rasa/nlu/utils/mitie_utils.py +2 -1
  404. rasa/nlu/utils/pattern_utils.py +1 -1
  405. rasa/nlu/utils/spacy_utils.py +3 -3
  406. rasa/plugin.py +12 -1
  407. rasa/server.py +3 -2
  408. rasa/shared/constants.py +45 -18
  409. rasa/shared/core/command_payload_reader.py +15 -7
  410. rasa/shared/core/constants.py +34 -4
  411. rasa/shared/core/conversation.py +1 -2
  412. rasa/shared/core/domain.py +19 -20
  413. rasa/shared/core/events.py +60 -39
  414. rasa/shared/core/flows/__init__.py +0 -1
  415. rasa/shared/core/flows/constants.py +11 -0
  416. rasa/shared/core/flows/flow.py +107 -26
  417. rasa/shared/core/flows/flow_step.py +4 -3
  418. rasa/shared/core/flows/flow_step_links.py +1 -2
  419. rasa/shared/core/flows/flow_step_sequence.py +1 -1
  420. rasa/shared/core/flows/flows_list.py +3 -3
  421. rasa/shared/core/flows/flows_yaml_schema.json +69 -3
  422. rasa/shared/core/flows/nlu_trigger.py +1 -1
  423. rasa/shared/core/flows/steps/__init__.py +2 -2
  424. rasa/shared/core/flows/steps/action.py +1 -1
  425. rasa/shared/core/flows/steps/call.py +1 -1
  426. rasa/shared/core/flows/steps/collect.py +22 -40
  427. rasa/shared/core/flows/steps/internal.py +1 -1
  428. rasa/shared/core/flows/steps/link.py +1 -1
  429. rasa/shared/core/flows/steps/no_operation.py +2 -2
  430. rasa/shared/core/flows/steps/set_slots.py +1 -1
  431. rasa/shared/core/flows/utils.py +44 -4
  432. rasa/shared/core/flows/validation.py +4 -6
  433. rasa/shared/core/generator.py +20 -21
  434. rasa/shared/core/slot_mappings.py +360 -121
  435. rasa/shared/core/slots.py +163 -6
  436. rasa/shared/core/trackers.py +108 -33
  437. rasa/shared/core/training_data/loading.py +1 -1
  438. rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
  439. rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
  440. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
  441. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
  442. rasa/shared/core/training_data/structures.py +11 -12
  443. rasa/shared/core/training_data/visualization.py +10 -10
  444. rasa/shared/data.py +6 -6
  445. rasa/shared/engine/caching.py +0 -1
  446. rasa/shared/exceptions.py +2 -2
  447. rasa/shared/importers/importer.py +58 -2
  448. rasa/shared/importers/rasa.py +5 -6
  449. rasa/shared/importers/utils.py +1 -1
  450. rasa/shared/nlu/constants.py +9 -0
  451. rasa/shared/nlu/training_data/entities_parser.py +6 -6
  452. rasa/shared/nlu/training_data/features.py +3 -3
  453. rasa/shared/nlu/training_data/formats/__init__.py +1 -1
  454. rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
  455. rasa/shared/nlu/training_data/formats/luis.py +7 -8
  456. rasa/shared/nlu/training_data/formats/rasa.py +4 -5
  457. rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
  458. rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
  459. rasa/shared/nlu/training_data/formats/wit.py +3 -4
  460. rasa/shared/nlu/training_data/loading.py +4 -4
  461. rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
  462. rasa/shared/nlu/training_data/message.py +13 -14
  463. rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
  464. rasa/shared/nlu/training_data/schemas/responses.yml +19 -11
  465. rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
  466. rasa/shared/nlu/training_data/training_data.py +12 -13
  467. rasa/shared/nlu/training_data/util.py +11 -10
  468. rasa/shared/providers/_configs/azure_entra_id_config.py +541 -0
  469. rasa/shared/providers/_configs/azure_openai_client_config.py +150 -15
  470. rasa/shared/providers/_configs/client_config.py +3 -1
  471. rasa/shared/providers/_configs/default_litellm_client_config.py +9 -7
  472. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +13 -11
  473. rasa/shared/providers/_configs/litellm_router_client_config.py +12 -10
  474. rasa/shared/providers/_configs/model_group_config.py +8 -5
  475. rasa/shared/providers/_configs/oauth_config.py +33 -0
  476. rasa/shared/providers/_configs/openai_client_config.py +14 -12
  477. rasa/shared/providers/_configs/rasa_llm_client_config.py +5 -3
  478. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +12 -11
  479. rasa/shared/providers/_configs/utils.py +1 -0
  480. rasa/shared/providers/_ssl_verification_utils.py +5 -6
  481. rasa/shared/providers/_utils.py +5 -5
  482. rasa/shared/providers/constants.py +6 -0
  483. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
  484. rasa/shared/providers/embedding/azure_openai_embedding_client.py +32 -7
  485. rasa/shared/providers/embedding/embedding_client.py +1 -1
  486. rasa/shared/providers/embedding/litellm_router_embedding_client.py +5 -2
  487. rasa/shared/providers/llm/_base_litellm_client.py +43 -18
  488. rasa/shared/providers/llm/azure_openai_llm_client.py +90 -34
  489. rasa/shared/providers/llm/default_litellm_llm_client.py +4 -2
  490. rasa/shared/providers/llm/litellm_router_llm_client.py +32 -9
  491. rasa/shared/providers/llm/llm_client.py +24 -8
  492. rasa/shared/providers/llm/llm_response.py +61 -2
  493. rasa/shared/providers/llm/openai_llm_client.py +11 -5
  494. rasa/shared/providers/llm/rasa_llm_client.py +17 -14
  495. rasa/shared/providers/llm/self_hosted_llm_client.py +35 -15
  496. rasa/shared/providers/mappings.py +18 -19
  497. rasa/shared/providers/router/_base_litellm_router_client.py +48 -15
  498. rasa/shared/providers/router/router_client.py +3 -1
  499. rasa/shared/utils/cli.py +1 -1
  500. rasa/shared/utils/common.py +15 -1
  501. rasa/shared/utils/constants.py +3 -0
  502. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
  503. rasa/shared/utils/health_check/health_check.py +3 -3
  504. rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
  505. rasa/shared/utils/io.py +1 -1
  506. rasa/shared/utils/llm.py +100 -18
  507. rasa/shared/utils/pykwalify_extensions.py +25 -1
  508. rasa/shared/utils/schemas/domain.yml +26 -1
  509. rasa/shared/utils/schemas/events.py +1 -1
  510. rasa/shared/utils/yaml.py +24 -20
  511. rasa/studio/auth.py +3 -3
  512. rasa/studio/config.py +1 -2
  513. rasa/studio/data_handler.py +3 -3
  514. rasa/studio/download.py +1 -1
  515. rasa/studio/results_logger.py +3 -3
  516. rasa/studio/upload.py +21 -5
  517. rasa/telemetry.py +127 -48
  518. rasa/tracing/config.py +5 -3
  519. rasa/tracing/constants.py +12 -0
  520. rasa/tracing/instrumentation/attribute_extractors.py +92 -14
  521. rasa/tracing/instrumentation/instrumentation.py +61 -5
  522. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
  523. rasa/tracing/instrumentation/metrics.py +52 -11
  524. rasa/tracing/metric_instrument_provider.py +54 -14
  525. rasa/utils/common.py +12 -24
  526. rasa/utils/endpoints.py +1 -1
  527. rasa/utils/io.py +7 -7
  528. rasa/utils/licensing.py +3 -4
  529. rasa/utils/log_utils.py +7 -6
  530. rasa/utils/ml_utils.py +1 -0
  531. rasa/utils/plotting.py +3 -3
  532. rasa/utils/sanic_error_handler.py +1 -1
  533. rasa/utils/tensorflow/callback.py +2 -2
  534. rasa/utils/tensorflow/crf.py +2 -2
  535. rasa/utils/tensorflow/data_generator.py +5 -5
  536. rasa/utils/tensorflow/environment.py +3 -3
  537. rasa/utils/tensorflow/feature_array.py +2 -3
  538. rasa/utils/tensorflow/layers.py +18 -12
  539. rasa/utils/tensorflow/layers_utils.py +2 -1
  540. rasa/utils/tensorflow/metrics.py +2 -2
  541. rasa/utils/tensorflow/model_data.py +7 -7
  542. rasa/utils/tensorflow/model_data_utils.py +10 -9
  543. rasa/utils/tensorflow/models.py +31 -32
  544. rasa/utils/tensorflow/rasa_layers.py +20 -19
  545. rasa/utils/tensorflow/types.py +2 -1
  546. rasa/utils/train_utils.py +23 -21
  547. rasa/utils/url_tools.py +1 -1
  548. rasa/validator.py +594 -115
  549. rasa/version.py +1 -1
  550. {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/METADATA +23 -26
  551. rasa_pro-3.12.0.dist-info/RECORD +829 -0
  552. rasa/core/channels/inspector/dist/assets/channel-e265ea59.js +0 -1
  553. rasa/core/channels/inspector/dist/assets/clone-21f8a43d.js +0 -1
  554. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-5c8ce12d.js +0 -1
  555. rasa_pro-3.11.5.dist-info/RECORD +0 -785
  556. /rasa/dialogue_understanding/generator/{single_step → prompt_templates}/command_prompt_template.jinja2 +0 -0
  557. {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/NOTICE +0 -0
  558. {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/WHEEL +0 -0
  559. {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/entry_points.txt +0 -0
rasa/engine/validation.py CHANGED
@@ -5,31 +5,32 @@ import re
5
5
  import sys
6
6
  import typing
7
7
  from typing import (
8
- Optional,
8
+ Any,
9
9
  Callable,
10
+ Dict,
11
+ List,
12
+ Literal,
13
+ Optional,
14
+ Set,
10
15
  Text,
11
16
  Tuple,
12
- Dict,
13
17
  Type,
14
- Any,
15
- Set,
16
- Union,
17
18
  TypeVar,
18
- List,
19
- Literal,
19
+ Union,
20
20
  )
21
21
 
22
- import rasa.utils.common
23
22
  import structlog
24
23
  import typing_utils
25
- from rasa.core import IntentlessPolicy, ContextualResponseRephraser
24
+
25
+ import rasa.utils.common
26
+ from rasa.core import ContextualResponseRephraser, IntentlessPolicy
26
27
  from rasa.core.policies.policy import PolicyPrediction
27
28
  from rasa.core.utils import AvailableEndpoints
28
29
  from rasa.dialogue_understanding.coexistence.constants import (
29
- NLU_ENTRY,
30
30
  CALM_ENTRY,
31
- STICKY,
31
+ NLU_ENTRY,
32
32
  NON_STICKY,
33
+ STICKY,
33
34
  )
34
35
  from rasa.dialogue_understanding.coexistence.intent_based_router import (
35
36
  IntentBasedRouter,
@@ -39,55 +40,56 @@ from rasa.dialogue_understanding.generator import (
39
40
  LLMBasedCommandGenerator,
40
41
  )
41
42
  from rasa.dialogue_understanding.generator.constants import (
42
- LLM_CONFIG_KEY,
43
43
  FLOW_RETRIEVAL_KEY,
44
+ LLM_CONFIG_KEY,
44
45
  )
45
46
  from rasa.dialogue_understanding.patterns.chitchat import FLOW_PATTERN_CHITCHAT
46
47
  from rasa.engine.constants import RESERVED_PLACEHOLDERS
47
48
  from rasa.engine.exceptions import GraphSchemaValidationException
48
49
  from rasa.engine.graph import (
49
- GraphSchema,
50
- GraphComponent,
51
- SchemaNode,
52
50
  ExecutionContext,
51
+ GraphComponent,
53
52
  GraphModelConfiguration,
53
+ GraphSchema,
54
+ SchemaNode,
54
55
  )
55
56
  from rasa.engine.storage.resource import Resource
56
- from rasa.engine.storage.storage import ModelStorage, ModelMetadata
57
+ from rasa.engine.storage.storage import ModelMetadata, ModelStorage
57
58
  from rasa.engine.training.fingerprinting import Fingerprintable
58
59
  from rasa.shared.constants import (
59
- DOCS_URL_GRAPH_COMPONENTS,
60
- ROUTE_TO_CALM_SLOT,
61
- EMBEDDINGS_CONFIG_KEY,
62
60
  API_BASE_CONFIG_KEY,
63
- DEPLOYMENT_CONFIG_KEY,
64
- API_VERSION_CONFIG_KEY,
65
61
  API_KEY,
62
+ API_TYPE_CONFIG_KEY,
63
+ API_VERSION_CONFIG_KEY,
64
+ AWS_ACCESS_KEY_ID_CONFIG_KEY,
66
65
  AWS_REGION_NAME_CONFIG_KEY,
66
+ AWS_SECRET_ACCESS_KEY_CONFIG_KEY,
67
+ AWS_SESSION_TOKEN_CONFIG_KEY,
68
+ DEPLOYMENT_CONFIG_KEY,
69
+ DOCS_URL_GRAPH_COMPONENTS,
70
+ EMBEDDINGS_CONFIG_KEY,
71
+ MODEL_GROUP_CONFIG_KEY,
67
72
  MODEL_GROUP_ID_CONFIG_KEY,
68
- ROUTER_CONFIG_KEY,
69
73
  MODELS_CONFIG_KEY,
70
- MODEL_GROUP_CONFIG_KEY,
71
- ROUTING_STRATEGY_CONFIG_KEY,
72
- VALID_ROUTING_STRATEGIES,
73
- ROUTING_STRATEGIES_REQUIRING_REDIS_CACHE,
74
- ROUTING_STRATEGIES_NOT_REQUIRING_CACHE,
74
+ PROVIDER_CONFIG_KEY,
75
75
  REDIS_HOST_CONFIG_KEY,
76
- AWS_ACCESS_KEY_ID_CONFIG_KEY,
77
- AWS_SECRET_ACCESS_KEY_CONFIG_KEY,
78
- AWS_SESSION_TOKEN_CONFIG_KEY,
76
+ ROUTE_TO_CALM_SLOT,
77
+ ROUTER_CONFIG_KEY,
78
+ ROUTING_STRATEGIES_NOT_REQUIRING_CACHE,
79
+ ROUTING_STRATEGIES_REQUIRING_REDIS_CACHE,
80
+ ROUTING_STRATEGY_CONFIG_KEY,
79
81
  SENSITIVE_DATA,
80
82
  USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY,
81
- API_TYPE_CONFIG_KEY,
82
83
  VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY,
83
- PROVIDER_CONFIG_KEY,
84
+ VALID_ROUTING_STRATEGIES,
84
85
  )
85
86
  from rasa.shared.core.constants import ACTION_RESET_ROUTING, ACTION_TRIGGER_CHITCHAT
86
87
  from rasa.shared.core.domain import Domain
87
- from rasa.shared.core.flows import FlowsList, Flow
88
+ from rasa.shared.core.flows import Flow, FlowsList
88
89
  from rasa.shared.core.slots import Slot
89
90
  from rasa.shared.exceptions import RasaException
90
91
  from rasa.shared.nlu.training_data.message import Message
92
+ from rasa.shared.utils.common import display_research_study_prompt
91
93
 
92
94
  TypeAnnotation = Union[TypeVar, Text, Type, Optional[AvailableEndpoints]]
93
95
 
@@ -1448,4 +1450,5 @@ def validate_api_type_config_key_usage(
1448
1450
  f"For other providers, please use the '{PROVIDER_CONFIG_KEY}' key."
1449
1451
  ),
1450
1452
  )
1453
+ display_research_study_prompt()
1451
1454
  sys.exit(1)
rasa/exceptions.py CHANGED
@@ -1,9 +1,10 @@
1
+ from dataclasses import dataclass
1
2
  from typing import Text
3
+
2
4
  from packaging import version
3
- from dataclasses import dataclass
4
5
 
5
- from rasa.shared.exceptions import RasaException
6
6
  from rasa.constants import MINIMUM_COMPATIBLE_VERSION
7
+ from rasa.shared.exceptions import RasaException
7
8
 
8
9
 
9
10
  @dataclass
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any, List
3
2
 
4
- from rasa.core.channels.channel import UserMessage
3
+ from typing import Any, Dict, List, Text
5
4
 
6
- from rasa.engine.graph import GraphComponent, ExecutionContext
5
+ from rasa.core.channels.channel import UserMessage
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
9
9
  from rasa.shared.nlu.constants import TEXT, TEXT_TOKENS
@@ -1,13 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import copy
4
- from typing import Dict, Text, Any
4
+ from typing import Any, Dict, Text
5
5
 
6
- from rasa.engine.graph import GraphComponent, ExecutionContext
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
9
9
  from rasa.shared.constants import REQUIRED_SLOTS_KEY
10
- from rasa.shared.core.domain import KEY_RESPONSES, Domain, SESSION_CONFIG_KEY, KEY_FORMS
10
+ from rasa.shared.core.domain import KEY_FORMS, KEY_RESPONSES, SESSION_CONFIG_KEY, Domain
11
11
 
12
12
 
13
13
  class DomainForCoreTrainingProvider(GraphComponent):
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any, Optional
3
2
 
4
- from rasa.engine.graph import GraphComponent, ExecutionContext
3
+ from typing import Any, Dict, Optional, Text
4
+
5
+ from rasa.engine.graph import ExecutionContext, GraphComponent
5
6
  from rasa.engine.storage.resource import Resource
6
7
  from rasa.engine.storage.storage import ModelStorage
7
8
  from rasa.shared.core.domain import Domain
@@ -5,10 +5,9 @@ from typing import Any, Dict, Text
5
5
  from rasa.engine.graph import ExecutionContext, GraphComponent
6
6
  from rasa.engine.storage.resource import Resource
7
7
  from rasa.engine.storage.storage import ModelStorage
8
- from rasa.shared.importers.importer import TrainingDataImporter
9
- from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
10
-
11
8
  from rasa.shared.core.flows import FlowsList
9
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
10
+ from rasa.shared.importers.importer import TrainingDataImporter
12
11
 
13
12
  FLOWS_PERSISTENCE_FILE_NAME = "flows.yml"
14
13
 
@@ -1,13 +1,13 @@
1
1
  from __future__ import annotations
2
- import dataclasses
3
2
 
4
- from typing import Dict, Text, Any
3
+ import dataclasses
4
+ from typing import Any, Dict, Text
5
5
 
6
- from rasa.engine.graph import GraphComponent, ExecutionContext
6
+ import rasa.shared.utils.io
7
+ from rasa.engine.graph import ExecutionContext, GraphComponent
7
8
  from rasa.engine.storage.resource import Resource
8
9
  from rasa.engine.storage.storage import ModelStorage
9
10
  from rasa.shared.core.domain import Domain
10
- import rasa.shared.utils.io
11
11
 
12
12
 
13
13
  @dataclasses.dataclass
@@ -1,12 +1,14 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any
3
- from rasa.engine.graph import GraphComponent, ExecutionContext
2
+
3
+ from typing import Any, Dict, Text
4
+
5
+ from rasa.engine.graph import ExecutionContext, GraphComponent
4
6
  from rasa.engine.storage.resource import Resource
5
7
  from rasa.engine.storage.storage import ModelStorage
6
8
  from rasa.shared.importers.importer import TrainingDataImporter
7
9
  from rasa.shared.nlu.training_data.training_data import (
8
- TrainingData,
9
10
  DEFAULT_TRAINING_DATA_OUTPUT_PATH,
11
+ TrainingData,
10
12
  )
11
13
 
12
14
 
@@ -1,13 +1,13 @@
1
1
  from __future__ import annotations
2
- import dataclasses
3
2
 
4
- from typing import Dict, List, Text, Any
3
+ import dataclasses
4
+ from typing import Any, Dict, List, Text
5
5
 
6
- from rasa.engine.graph import GraphComponent, ExecutionContext
6
+ import rasa.shared.utils.io
7
+ from rasa.engine.graph import ExecutionContext, GraphComponent
7
8
  from rasa.engine.storage.resource import Resource
8
9
  from rasa.engine.storage.storage import ModelStorage
9
10
  from rasa.shared.core.domain import Domain
10
- import rasa.shared.utils.io
11
11
 
12
12
 
13
13
  @dataclasses.dataclass
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  import dataclasses
3
4
  import logging
4
- from typing import Dict, Text, Any
5
+ from typing import Any, Dict, Text
5
6
 
6
7
  import rasa.shared.utils.io
7
- from rasa.engine.graph import GraphComponent, ExecutionContext
8
+ from rasa.engine.graph import ExecutionContext, GraphComponent
8
9
  from rasa.engine.storage.resource import Resource
9
10
  from rasa.engine.storage.storage import ModelStorage
10
11
 
@@ -1,18 +1,18 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any, List
3
2
 
4
- from rasa.engine.graph import GraphComponent, ExecutionContext
3
+ from typing import Any, Dict, List, Text
4
+
5
+ from rasa.engine.graph import ExecutionContext, GraphComponent
5
6
  from rasa.engine.storage.resource import Resource
6
7
  from rasa.engine.storage.storage import ModelStorage
7
- from rasa.shared.core.training_data.structures import StoryGraph, StoryStep
8
- from rasa.shared.importers.importer import TrainingDataImporter
9
- from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
10
- YAMLStoryWriter,
11
- )
12
8
  from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
13
9
  YAMLStoryReader,
14
10
  )
15
-
11
+ from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
12
+ YAMLStoryWriter,
13
+ )
14
+ from rasa.shared.core.training_data.structures import StoryGraph, StoryStep
15
+ from rasa.shared.importers.importer import TrainingDataImporter
16
16
 
17
17
  STORIES_PERSISTENCE_FILE_NAME = "stories.yml"
18
18
 
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any, List
3
2
 
4
- from rasa.engine.graph import GraphComponent, ExecutionContext
3
+ from typing import Any, Dict, List, Text
4
+
5
+ from rasa.engine.graph import ExecutionContext, GraphComponent
5
6
  from rasa.engine.storage.resource import Resource
6
7
  from rasa.engine.storage.storage import ModelStorage
7
8
  from rasa.shared.core.domain import Domain
@@ -1,31 +1,32 @@
1
1
  from __future__ import annotations
2
+
2
3
  from collections import defaultdict
3
- from typing import Iterable, List, Dict, Text, Any, Set, Type, cast
4
+ from typing import Any, Dict, Iterable, List, Set, Text, Type, cast
4
5
 
6
+ import rasa.shared.utils.io
7
+ from rasa.core.constants import POLICY_PRIORITY
5
8
  from rasa.core.featurizers.precomputation import CoreFeaturizationInputConverter
9
+ from rasa.core.policies.flow_policy import FlowPolicy
10
+ from rasa.core.policies.memoization import AugmentedMemoizationPolicy, MemoizationPolicy
11
+ from rasa.core.policies.policy import Policy, SupportedData
12
+ from rasa.core.policies.rule_policy import RulePolicy
13
+ from rasa.core.policies.ted_policy import TEDPolicy
6
14
  from rasa.core.policies.unexpected_intent_policy import UnexpecTEDIntentPolicy
7
15
  from rasa.engine.graph import ExecutionContext, GraphComponent, GraphSchema, SchemaNode
8
- from rasa.engine.storage.storage import ModelStorage
9
16
  from rasa.engine.storage.resource import Resource
10
- from rasa.nlu.featurizers.featurizer import Featurizer
11
- from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
12
- from rasa.nlu.extractors.regex_entity_extractor import RegexEntityExtractor
17
+ from rasa.engine.storage.storage import ModelStorage
18
+ from rasa.nlu.classifiers.diet_classifier import DIETClassifier
13
19
  from rasa.nlu.extractors.crf_entity_extractor import (
14
20
  CRFEntityExtractor,
15
21
  CRFEntityExtractorOptions,
16
22
  )
17
23
  from rasa.nlu.extractors.entity_synonyms import EntitySynonymMapper
24
+ from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
25
+ from rasa.nlu.extractors.regex_entity_extractor import RegexEntityExtractor
26
+ from rasa.nlu.featurizers.featurizer import Featurizer
18
27
  from rasa.nlu.featurizers.sparse_featurizer.regex_featurizer import RegexFeaturizer
19
- from rasa.nlu.classifiers.diet_classifier import DIETClassifier
20
28
  from rasa.nlu.selectors.response_selector import ResponseSelector
21
29
  from rasa.nlu.tokenizers.tokenizer import Tokenizer
22
- from rasa.core.policies.rule_policy import RulePolicy
23
- from rasa.core.policies.policy import Policy, SupportedData
24
- from rasa.core.policies.memoization import AugmentedMemoizationPolicy, MemoizationPolicy
25
- from rasa.core.policies.ted_policy import TEDPolicy
26
- from rasa.core.policies.flow_policy import FlowPolicy
27
- from rasa.core.constants import POLICY_PRIORITY
28
- from rasa.shared.core.training_data.structures import RuleStep, StoryGraph
29
30
  from rasa.shared.constants import (
30
31
  DEFAULT_CONFIG_PATH,
31
32
  DOCS_URL_COMPONENTS,
@@ -33,18 +34,17 @@ from rasa.shared.constants import (
33
34
  DOCS_URL_NLU_BASED_POLICIES,
34
35
  DOCS_URL_RULES,
35
36
  )
36
- from rasa.shared.core.domain import Domain, InvalidDomain
37
37
  from rasa.shared.core.constants import (
38
38
  ACTION_BACK_NAME,
39
39
  ACTION_RESTART_NAME,
40
40
  USER_INTENT_BACK,
41
41
  USER_INTENT_RESTART,
42
42
  )
43
+ from rasa.shared.core.domain import Domain, InvalidDomain
44
+ from rasa.shared.core.training_data.structures import RuleStep, StoryGraph
43
45
  from rasa.shared.exceptions import InvalidConfigException
44
46
  from rasa.shared.importers.importer import TrainingDataImporter
45
47
  from rasa.shared.nlu.training_data.training_data import TrainingData
46
- import rasa.shared.utils.io
47
-
48
48
 
49
49
  # TODO: Can we replace this with the registered types from the regitry?
50
50
  TRAINABLE_EXTRACTORS = [MitieEntityExtractor, CRFEntityExtractor, DIETClassifier]
@@ -1,21 +1,23 @@
1
1
  from __future__ import annotations
2
- from typing import Dict, Text, Any, Optional
2
+
3
3
  import copy
4
4
  import logging
5
+ from typing import Any, Dict, Optional, Text
5
6
 
6
7
  from packaging import version
8
+
9
+ import rasa.shared.utils.io
7
10
  from rasa.constants import MINIMUM_COMPATIBLE_VERSION
8
- from rasa.engine.graph import GraphComponent, ExecutionContext
9
- from rasa.engine.storage.storage import ModelStorage
11
+ from rasa.engine.graph import ExecutionContext, GraphComponent
10
12
  from rasa.engine.storage.resource import Resource
11
- from rasa.shared.exceptions import InvalidConfigException
12
- from rasa.shared.core.domain import Domain
13
- from rasa.shared.importers.importer import TrainingDataImporter
14
- import rasa.shared.utils.io
15
- from rasa.utils.tensorflow.constants import EPOCHS
13
+ from rasa.engine.storage.storage import ModelStorage
16
14
  from rasa.graph_components.providers.domain_for_core_training_provider import (
17
15
  DomainForCoreTrainingProvider,
18
16
  )
17
+ from rasa.shared.core.domain import Domain
18
+ from rasa.shared.exceptions import InvalidConfigException
19
+ from rasa.shared.importers.importer import TrainingDataImporter
20
+ from rasa.utils.tensorflow.constants import EPOCHS
19
21
 
20
22
  FINGERPRINT_CONFIG = "fingerprint-config"
21
23
  FINGERPRINT_CORE = "fingerprint-core"
rasa/hooks.py CHANGED
@@ -1,23 +1,20 @@
1
1
  import argparse
2
2
  import logging
3
- from typing import Optional, TYPE_CHECKING, List, Text, Union
3
+ from typing import TYPE_CHECKING, List, Optional, Text, Union
4
4
 
5
5
  import pluggy
6
- from rasa.cli import SubParsersAction
7
6
 
8
- from rasa.cli import x as rasa_x
9
- from rasa.utils.endpoints import EndpointConfig
10
-
11
- from rasa.core.auth_retry_tracker_store import AuthRetryTrackerStore
12
- from rasa.core.secrets_manager.factory import load_secret_manager
13
-
14
- from rasa.tracing import config
7
+ # IMPORTANT: do not import anything from rasa here - use scoped imports
8
+ # this avoids circular imports, as the hooks are used in different places
9
+ # across the codebase.
15
10
 
16
11
  if TYPE_CHECKING:
12
+ from rasa.anonymization.anonymization_pipeline import AnonymizationPipeline
13
+ from rasa.cli import SubParsersAction
17
14
  from rasa.core.brokers.broker import EventBroker
18
15
  from rasa.core.tracker_store import TrackerStore
19
16
  from rasa.shared.core.domain import Domain
20
- from rasa.anonymization.anonymization_pipeline import AnonymizationPipeline
17
+ from rasa.utils.endpoints import EndpointConfig
21
18
 
22
19
  hookimpl = pluggy.HookimplMarker("rasa")
23
20
  logger = logging.getLogger(__name__)
@@ -25,15 +22,15 @@ logger = logging.getLogger(__name__)
25
22
 
26
23
  @hookimpl # type: ignore[misc]
27
24
  def refine_cli(
28
- subparsers: SubParsersAction,
25
+ subparsers: "SubParsersAction",
29
26
  parent_parsers: List[argparse.ArgumentParser],
30
27
  ) -> None:
31
- from rasa.cli import e2e_test, inspect, markers
32
- from rasa.cli.studio import studio
33
-
28
+ from rasa.cli import dialogue_understanding_test, e2e_test, inspect, markers
34
29
  from rasa.cli import license as license_cli
30
+ from rasa.cli.studio import studio
35
31
 
36
32
  e2e_test.add_subparser(subparsers, parent_parsers)
33
+ dialogue_understanding_test.add_subparser(subparsers, parent_parsers)
37
34
  studio.add_subparser(subparsers, parent_parsers)
38
35
  license_cli.add_subparser(subparsers, parent_parsers)
39
36
  markers.add_subparser(subparsers, parent_parsers)
@@ -43,6 +40,9 @@ def refine_cli(
43
40
 
44
41
  @hookimpl # type: ignore[misc]
45
42
  def configure_commandline(cmdline_arguments: argparse.Namespace) -> Optional[Text]:
43
+ from rasa.cli import x as rasa_x
44
+ from rasa.tracing import config
45
+
46
46
  endpoints_file = None
47
47
 
48
48
  if cmdline_arguments.func.__name__ == "rasa_x":
@@ -69,6 +69,8 @@ def init_telemetry(endpoints_file: Optional[Text]) -> None:
69
69
 
70
70
  @hookimpl # type: ignore[misc]
71
71
  def init_managers(endpoints_file: Optional[Text]) -> None:
72
+ from rasa.core.secrets_manager.factory import load_secret_manager
73
+
72
74
  load_secret_manager(endpoints_file)
73
75
 
74
76
 
@@ -78,6 +80,9 @@ def create_tracker_store(
78
80
  domain: "Domain",
79
81
  event_broker: Optional["EventBroker"],
80
82
  ) -> "TrackerStore":
83
+ from rasa.core.auth_retry_tracker_store import AuthRetryTrackerStore
84
+ from rasa.utils.endpoints import EndpointConfig
85
+
81
86
  if isinstance(endpoint_config, EndpointConfig):
82
87
  return AuthRetryTrackerStore(
83
88
  endpoint_config=endpoint_config, domain=domain, event_broker=event_broker
rasa/jupyter.py CHANGED
@@ -3,10 +3,10 @@ import pprint as pretty_print
3
3
  import typing
4
4
  from typing import Any, Dict, Optional, Text
5
5
 
6
- from rasa.shared.exceptions import RasaException
7
- from rasa.shared.utils.cli import print_success
8
6
  import rasa.core.agent
9
7
  import rasa.utils.common
8
+ from rasa.shared.exceptions import RasaException
9
+ from rasa.shared.utils.cli import print_success
10
10
 
11
11
  if typing.TYPE_CHECKING:
12
12
  from rasa.core.agent import Agent
@@ -1,17 +1,17 @@
1
1
  import asyncio
2
2
  from contextlib import contextmanager
3
- from typing import List, Generator, Optional, Tuple, Union
3
+ from typing import Generator, List, Optional, Tuple, Union
4
4
 
5
5
  import structlog
6
6
 
7
7
  from rasa.dialogue_understanding.commands import Command
8
- from rasa.e2e_test.e2e_test_case import TestSuite, TestCase, ActualStepOutput, TestStep
9
- from rasa.e2e_test.e2e_test_runner import E2ETestRunner, TEST_TURNS_TYPE
8
+ from rasa.e2e_test.e2e_test_case import ActualStepOutput, TestCase, TestStep, TestSuite
9
+ from rasa.e2e_test.e2e_test_runner import TEST_TURNS_TYPE, E2ETestRunner
10
10
  from rasa.llm_fine_tuning.conversations import Conversation, ConversationStep
11
11
  from rasa.llm_fine_tuning.storage import StorageContext
12
12
  from rasa.shared.core.constants import USER
13
13
  from rasa.shared.core.trackers import DialogueStateTracker
14
- from rasa.shared.nlu.constants import LLM_PROMPT, LLM_COMMANDS
14
+ from rasa.shared.nlu.constants import LLM_COMMANDS, LLM_PROMPT
15
15
  from rasa.shared.utils.llm import tracker_as_readable_transcript
16
16
 
17
17
  ANNOTATION_MODULE_STORAGE_LOCATION = "1_command_annotations"
@@ -1,17 +1,7 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import List, Union, Iterator, Any, Dict, Optional
3
-
4
- from rasa.dialogue_understanding.commands import (
5
- Command,
6
- StartFlowCommand,
7
- SetSlotCommand,
8
- CancelFlowCommand,
9
- ChitChatAnswerCommand,
10
- SkipQuestionCommand,
11
- HumanHandoffCommand,
12
- KnowledgeAnswerCommand,
13
- ClarifyCommand,
14
- )
2
+ from typing import Any, Dict, Iterator, List, Optional, Union
3
+
4
+ from rasa.dialogue_understanding.commands.prompt_command import PromptCommand
15
5
  from rasa.e2e_test.e2e_test_case import TestCase, TestStep
16
6
  from rasa.shared.core.constants import USER
17
7
 
@@ -19,7 +9,7 @@ from rasa.shared.core.constants import USER
19
9
  @dataclass
20
10
  class ConversationStep:
21
11
  original_test_step: TestStep
22
- llm_commands: List[Command]
12
+ llm_commands: List[PromptCommand]
23
13
  llm_prompt: str
24
14
  failed_rephrasings: List[str] = field(default_factory=list)
25
15
  passed_rephrasings: List[str] = field(default_factory=list)
@@ -38,25 +28,7 @@ class ConversationStep:
38
28
  return data
39
29
 
40
30
  def _commands_to_str(self) -> List[str]:
41
- output = []
42
- for command in self.llm_commands:
43
- if isinstance(command, StartFlowCommand):
44
- output.append(f"StartFlow({command.flow})")
45
- elif isinstance(command, SetSlotCommand):
46
- output.append(f"SetSlot({command.name}, {command.value})")
47
- elif isinstance(command, ClarifyCommand):
48
- output.append(f"Clarify({command.options})")
49
- elif isinstance(command, CancelFlowCommand):
50
- output.append("CancelFlow()")
51
- elif isinstance(command, ChitChatAnswerCommand):
52
- output.append("ChitChat()")
53
- elif isinstance(command, SkipQuestionCommand):
54
- output.append("SkipQuestion()")
55
- elif isinstance(command, KnowledgeAnswerCommand):
56
- output.append("SearchAndReply()")
57
- elif isinstance(command, HumanHandoffCommand):
58
- output.append("HumanHandoff()")
59
- return output
31
+ return [command.to_dsl() for command in self.llm_commands]
60
32
 
61
33
  def commands_as_string(self) -> str:
62
34
  return "\n".join(self._commands_to_str())
@@ -1,11 +1,13 @@
1
1
  from dataclasses import dataclass
2
- from typing import List, Dict, Any, Optional
2
+ from typing import Any, Dict, List, Optional
3
3
 
4
4
  import structlog
5
5
  from tqdm import tqdm
6
6
 
7
+ from rasa.dialogue_understanding.commands.prompt_command import PromptCommand
7
8
  from rasa.llm_fine_tuning.conversations import Conversation, ConversationStep
8
9
  from rasa.llm_fine_tuning.storage import StorageContext
10
+ from rasa.llm_fine_tuning.utils import commands_as_string
9
11
 
10
12
  LLM_DATA_PREPARATION_MODULE_STORAGE_LOCATION = "3_llm_finetune_data/llm_ft_data.jsonl"
11
13
 
@@ -15,7 +17,7 @@ structlogger = structlog.get_logger()
15
17
  @dataclass
16
18
  class LLMDataExample:
17
19
  prompt: str
18
- output: str
20
+ output: List[PromptCommand]
19
21
  original_test_name: str
20
22
  original_user_utterance: str
21
23
  rephrased_user_utterance: str
@@ -23,7 +25,7 @@ class LLMDataExample:
23
25
  def as_dict(self) -> Dict[str, Any]:
24
26
  return {
25
27
  "prompt": self.prompt,
26
- "output": self.output,
28
+ "output": commands_as_string(self.output),
27
29
  "original_test_name": self.original_test_name,
28
30
  "original_user_utterance": self.original_user_utterance,
29
31
  "rephrased_user_utterance": self.rephrased_user_utterance,
@@ -38,7 +40,7 @@ def _create_data_point(
38
40
  ) -> LLMDataExample:
39
41
  return LLMDataExample(
40
42
  prompt,
41
- step.commands_as_string(),
43
+ step.llm_commands,
42
44
  conversation.get_full_name(),
43
45
  step.original_test_step.text,
44
46
  rephrased_user_message,
@@ -1,6 +1,6 @@
1
1
  import importlib.resources
2
2
  import re
3
- from typing import Dict, Any, List, Tuple, Optional
3
+ from typing import Any, Dict, List, Optional, Tuple
4
4
 
5
5
  import structlog
6
6
  from jinja2 import Template
@@ -10,9 +10,9 @@ from rasa.llm_fine_tuning.paraphrasing.rephrased_user_message import (
10
10
  RephrasedUserMessage,
11
11
  )
12
12
  from rasa.shared.constants import (
13
- MODEL_NAME_CONFIG_KEY,
14
- MODEL_CONFIG_KEY,
15
13
  LLM_CONFIG_KEY,
14
+ MODEL_CONFIG_KEY,
15
+ MODEL_NAME_CONFIG_KEY,
16
16
  PROMPT_TEMPLATE_CONFIG_KEY,
17
17
  PROVIDER_CONFIG_KEY,
18
18
  TIMEOUT_CONFIG_KEY,
@@ -20,9 +20,9 @@ from rasa.shared.constants import (
20
20
  from rasa.shared.exceptions import ProviderClientAPIException
21
21
  from rasa.shared.providers.mappings import OPENAI_PROVIDER
22
22
  from rasa.shared.utils.llm import (
23
+ USER,
23
24
  get_prompt_template,
24
25
  llm_factory,
25
- USER,
26
26
  )
27
27
 
28
28
  SEPARATOR = "\n\n"