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
@@ -24,7 +24,7 @@ from opentelemetry.sdk.trace import TracerProvider
24
24
  from opentelemetry.trace import SpanKind, Tracer
25
25
  from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
26
26
 
27
- from rasa.core.actions.action import Action, RemoteAction, CustomActionExecutor
27
+ from rasa.core.actions.action import Action, CustomActionExecutor, RemoteAction
28
28
  from rasa.core.actions.custom_action_executor import RetryCustomActionExecutor
29
29
  from rasa.core.actions.grpc_custom_action_executor import GRPCCustomActionExecutor
30
30
  from rasa.core.agent import Agent
@@ -41,6 +41,7 @@ from rasa.core.processor import MessageProcessor
41
41
  from rasa.core.tracker_store import TrackerStore
42
42
  from rasa.dialogue_understanding.commands import Command
43
43
  from rasa.dialogue_understanding.generator import (
44
+ CompactLLMCommandGenerator,
44
45
  LLMCommandGenerator,
45
46
  MultiStepLLMCommandGenerator,
46
47
  SingleStepLLMCommandGenerator,
@@ -63,13 +64,14 @@ from rasa.tracing.instrumentation.intentless_policy_instrumentation import (
63
64
  _instrument_select_response_examples,
64
65
  )
65
66
  from rasa.tracing.instrumentation.metrics import (
67
+ record_callable_duration_metrics,
68
+ record_compact_llm_command_generator_metrics,
66
69
  record_llm_command_generator_metrics,
67
- record_single_step_llm_command_generator_metrics,
68
70
  record_multi_step_llm_command_generator_metrics,
69
- record_callable_duration_metrics,
70
71
  record_request_size_in_bytes,
72
+ record_single_step_llm_command_generator_metrics,
71
73
  )
72
- from rasa.utils.endpoints import concat_url, EndpointConfig
74
+ from rasa.utils.endpoints import EndpointConfig, concat_url
73
75
 
74
76
  # The `TypeVar` representing the return type for a function to be wrapped.
75
77
  S = TypeVar("S")
@@ -84,6 +86,7 @@ COMMAND_PROCESSOR_MODULE_NAME = (
84
86
  "rasa.dialogue_understanding.processor.command_processor"
85
87
  )
86
88
  FLOW_EXECUTOR_MODULE_NAME = "rasa.core.policies.flows.flow_executor"
89
+ DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME = "rasa.dialogue_understanding_test.io"
87
90
 
88
91
 
89
92
  def _check_extractor_argument_list(
@@ -151,7 +154,11 @@ def traceable(
151
154
  )
152
155
 
153
156
  module_name = attrs.pop("module_name", "")
154
- if module_name in ["command_processor", FLOW_EXECUTOR_MODULE_NAME]:
157
+ if module_name in [
158
+ "command_processor",
159
+ FLOW_EXECUTOR_MODULE_NAME,
160
+ DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME,
161
+ ]:
155
162
  span_name = f"{module_name}.{fn.__name__}"
156
163
  else:
157
164
  span_name = f"{self.__class__.__name__}.{fn.__name__}"
@@ -281,6 +288,9 @@ LLMCommandGeneratorType = TypeVar("LLMCommandGeneratorType", bound=LLMCommandGen
281
288
  SingleStepLLMCommandGeneratorType = TypeVar(
282
289
  "SingleStepLLMCommandGeneratorType", bound=SingleStepLLMCommandGenerator
283
290
  )
291
+ CompactLLMCommandGeneratorType = TypeVar(
292
+ "CompactLLMCommandGeneratorType", bound=CompactLLMCommandGenerator
293
+ )
284
294
  MultiStepLLMCommandGeneratorType = TypeVar(
285
295
  "MultiStepLLMCommandGeneratorType", bound=MultiStepLLMCommandGenerator
286
296
  )
@@ -313,6 +323,9 @@ def instrument(
313
323
  single_step_llm_command_generator_class: Optional[
314
324
  Type[SingleStepLLMCommandGeneratorType]
315
325
  ] = None,
326
+ compact_llm_command_generator_class: Optional[
327
+ Type[CompactLLMCommandGeneratorType]
328
+ ] = None,
316
329
  multi_step_llm_command_generator_class: Optional[
317
330
  Type[MultiStepLLMCommandGeneratorType]
318
331
  ] = None,
@@ -363,6 +376,9 @@ def instrument(
363
376
  :param single_step_llm_command_generator_class: The `SingleStepLLMCommandGenerator`
364
377
  to be instrumented. If `None` is given, no `SingleStepLLMCommandGenerator` will
365
378
  be instrumented.
379
+ :param compact_llm_command_generator_class: The `CompactLLMCommandGenerator`
380
+ to be instrumented. If `None` is given, no `CompactLLMCommandGenerator` will
381
+ be instrumented.
366
382
  :param multi_step_llm_command_generator_class: The `MultiStepLLMCommandGenerator`
367
383
  to be instrumented. If `None` is given, no `MultiStepLLMCommandGenerator` will
368
384
  be instrumented.
@@ -487,6 +503,30 @@ def instrument(
487
503
  )
488
504
  mark_class_as_instrumented(single_step_llm_command_generator_class)
489
505
 
506
+ if compact_llm_command_generator_class is not None and not class_is_instrumented(
507
+ compact_llm_command_generator_class
508
+ ):
509
+ _instrument_method(
510
+ tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
511
+ compact_llm_command_generator_class,
512
+ "invoke_llm",
513
+ attribute_extractors.extract_attrs_for_llm_based_command_generator,
514
+ metrics_recorder=record_compact_llm_command_generator_metrics,
515
+ )
516
+ _instrument_method(
517
+ tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
518
+ compact_llm_command_generator_class,
519
+ "_check_commands_against_startable_flows",
520
+ attribute_extractors.extract_attrs_for_check_commands_against_startable_flows,
521
+ )
522
+ _instrument_perform_health_check_method_for_component(
523
+ tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
524
+ compact_llm_command_generator_class,
525
+ "perform_llm_health_check",
526
+ attribute_extractors.extract_attrs_for_performing_health_check,
527
+ )
528
+ mark_class_as_instrumented(compact_llm_command_generator_class)
529
+
490
530
  if multi_step_llm_command_generator_class is not None and not class_is_instrumented(
491
531
  multi_step_llm_command_generator_class
492
532
  ):
@@ -521,6 +561,7 @@ def instrument(
521
561
  for llm_based_command_generator_class in (
522
562
  llm_command_generator_class,
523
563
  single_step_llm_command_generator_class,
564
+ compact_llm_command_generator_class,
524
565
  multi_step_llm_command_generator_class,
525
566
  )
526
567
  )
@@ -583,6 +624,9 @@ def instrument(
583
624
  if not module_is_instrumented(FLOW_EXECUTOR_MODULE_NAME):
584
625
  _instrument_flow_executor_module(tracer_provider)
585
626
 
627
+ if not module_is_instrumented(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME):
628
+ _instrument_dialog_understanding_test_io_module(tracer_provider)
629
+
586
630
  if policy_subclasses:
587
631
  for policy_subclass in policy_subclasses:
588
632
  if policy_subclass is not None and not class_is_instrumented(
@@ -974,6 +1018,18 @@ def _instrument_flow_executor_module(tracer_provider: TracerProvider) -> None:
974
1018
  mark_module_as_instrumented(FLOW_EXECUTOR_MODULE_NAME)
975
1019
 
976
1020
 
1021
+ def _instrument_dialog_understanding_test_io_module(
1022
+ tracer_provider: TracerProvider,
1023
+ ) -> None:
1024
+ _instrument_function(
1025
+ tracer_provider.get_tracer(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME),
1026
+ DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME,
1027
+ "print_test_results",
1028
+ attribute_extractors.extract_attrs_for_du_print_test_results,
1029
+ )
1030
+ mark_module_as_instrumented(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME)
1031
+
1032
+
977
1033
  def _instrument_advance_flows_until_next_action(
978
1034
  tracer: Tracer,
979
1035
  module_name: str,
@@ -1,7 +1,7 @@
1
1
  import functools
2
2
  import json
3
3
  import logging
4
- from typing import Callable, List, Optional, TYPE_CHECKING, Type
4
+ from typing import TYPE_CHECKING, Callable, List, Optional, Type
5
5
 
6
6
  from opentelemetry.trace import Tracer
7
7
 
@@ -1,4 +1,4 @@
1
- from typing import Dict, Any
1
+ from typing import Any, Dict
2
2
 
3
3
  import psutil
4
4
 
@@ -6,30 +6,35 @@ from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephra
6
6
  from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
7
7
  from rasa.core.policies.intentless_policy import IntentlessPolicy
8
8
  from rasa.dialogue_understanding.generator import (
9
+ CompactLLMCommandGenerator,
9
10
  LLMCommandGenerator,
10
- SingleStepLLMCommandGenerator,
11
11
  MultiStepLLMCommandGenerator,
12
+ SingleStepLLMCommandGenerator,
12
13
  )
13
14
  from rasa.tracing.constants import (
15
+ COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
16
+ COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
17
+ COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
18
+ COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
19
+ CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
20
+ ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
21
+ INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
14
22
  LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
23
+ LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
15
24
  LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
16
25
  LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
17
- SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
18
- SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
19
- SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
20
- SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
21
26
  MULTI_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
27
+ MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
22
28
  MULTI_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
23
29
  MULTI_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
24
- MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
25
30
  PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
26
- LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
27
- ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
28
- INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
29
- CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
30
31
  RASA_CLIENT_REQUEST_BODY_SIZE_METRIC_NAME,
31
32
  RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
32
33
  REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
34
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
35
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
36
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
37
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
33
38
  )
34
39
  from rasa.tracing.metric_instrument_provider import MetricInstrumentProvider
35
40
  from rasa.utils.endpoints import EndpointConfig
@@ -170,6 +175,36 @@ def record_single_step_llm_command_generator_metrics(
170
175
  )
171
176
 
172
177
 
178
+ def record_compact_llm_command_generator_metrics(
179
+ attributes: Dict[str, Any],
180
+ ) -> None:
181
+ """
182
+ Record measurements for CompactLLMCommandGenerator specific metrics.
183
+
184
+ The recording is done by the opentelemetry.metrics.Histogram instruments.
185
+ These instruments are registered to the MetricInstrumentProvider internal singleton.
186
+
187
+ :param attributes: Extracted tracing attributes
188
+ :return: None
189
+ """
190
+ instrument_provider = MetricInstrumentProvider()
191
+
192
+ if not instrument_provider.instruments:
193
+ return None
194
+
195
+ record_llm_based_command_generator_cpu_usage(
196
+ instrument_provider, COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME
197
+ )
198
+ record_llm_based_command_generator_memory_usage(
199
+ instrument_provider, COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME
200
+ )
201
+ record_llm_based_command_generator_prompt_token(
202
+ instrument_provider,
203
+ attributes,
204
+ COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
205
+ )
206
+
207
+
173
208
  def record_multi_step_llm_command_generator_metrics(attributes: Dict[str, Any]) -> None:
174
209
  """
175
210
  Record measurements for MultiStepLLMCommandGenerator specific metrics.
@@ -205,6 +240,7 @@ def record_callable_duration_metrics(
205
240
  Record duration of instrumented method calls invoked for the following components:
206
241
  - LLMCommandGenerator
207
242
  - SingleStepLLMCommandGenerator
243
+ - CompactLLMCommandGenerator
208
244
  - MultiStepLLMCommandGenerator
209
245
  - EnterpriseSearchPolicy
210
246
  - IntentlessPolicy
@@ -235,6 +271,11 @@ def record_callable_duration_metrics(
235
271
  SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
236
272
  )
237
273
 
274
+ if type(self) == CompactLLMCommandGenerator:
275
+ metric_instrument = instrument_provider.get_instrument(
276
+ COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
277
+ )
278
+
238
279
  if type(self) == MultiStepLLMCommandGenerator:
239
280
  metric_instrument = instrument_provider.get_instrument(
240
281
  MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
@@ -1,30 +1,34 @@
1
- from typing import ClassVar, Dict, Any
1
+ from typing import Any, ClassVar, Dict
2
2
 
3
3
  from opentelemetry.metrics import get_meter_provider
4
4
  from opentelemetry.sdk.metrics import Meter
5
5
 
6
- from rasa.utils.singleton import Singleton
7
6
  from rasa.tracing.constants import (
7
+ COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
8
+ COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
9
+ COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
10
+ COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
11
+ CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
12
+ DURATION_UNIT_NAME,
13
+ ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
14
+ INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
15
+ LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
8
16
  LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
17
+ LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
9
18
  LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
10
19
  LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
11
- LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
12
- LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
13
- SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
14
- SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
15
- SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
16
- SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
17
20
  MULTI_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
21
+ MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
18
22
  MULTI_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
19
23
  MULTI_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
20
- MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
21
- DURATION_UNIT_NAME,
22
- ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
23
- INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
24
- CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
25
- RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
26
24
  RASA_CLIENT_REQUEST_BODY_SIZE_METRIC_NAME,
25
+ RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
26
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
27
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
28
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
29
+ SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
27
30
  )
31
+ from rasa.utils.singleton import Singleton
28
32
 
29
33
 
30
34
  class MetricInstrumentProvider(metaclass=Singleton):
@@ -43,6 +47,7 @@ class MetricInstrumentProvider(metaclass=Singleton):
43
47
  instruments = {
44
48
  **self._create_llm_command_generator_instruments(meter),
45
49
  **self._create_single_step_llm_command_generator_instruments(meter),
50
+ **self._create_compact_llm_command_generator_instruments(meter),
46
51
  **self._create_multi_step_llm_command_generator_instruments(meter),
47
52
  **self._create_llm_response_duration_instruments(meter),
48
53
  **self._create_client_request_instruments(meter),
@@ -122,6 +127,41 @@ class MetricInstrumentProvider(metaclass=Singleton):
122
127
  SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME: single_step_llm_response_duration_llm_command_generator, # noqa: E501
123
128
  }
124
129
 
130
+ @staticmethod
131
+ def _create_compact_llm_command_generator_instruments(
132
+ meter: Meter,
133
+ ) -> Dict[str, Any]:
134
+ compact_llm_command_generator_cpu_usage = meter.create_histogram(
135
+ name=COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
136
+ description="CPU percentage for CompactLLMCommandGenerator",
137
+ unit=LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
138
+ )
139
+
140
+ compact_llm_command_generator_memory_usage = meter.create_histogram(
141
+ name=COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
142
+ description="RAM memory usage for CompactLLMCommandGenerator",
143
+ unit=LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
144
+ )
145
+
146
+ compact_llm_command_generator_prompt_token_usage = meter.create_histogram(
147
+ name=COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
148
+ description="CompactLLMCommandGenerator prompt token length",
149
+ unit="1",
150
+ )
151
+
152
+ compact_llm_response_duration_llm_command_generator = meter.create_histogram(
153
+ name=COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
154
+ description="The duration of CompactLLMCommandGenerator's LLM call",
155
+ unit=DURATION_UNIT_NAME,
156
+ )
157
+
158
+ return {
159
+ COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME: compact_llm_command_generator_cpu_usage, # noqa: E501
160
+ COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME: compact_llm_command_generator_memory_usage, # noqa: E501
161
+ COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME: compact_llm_command_generator_prompt_token_usage, # noqa: E501
162
+ COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME: compact_llm_response_duration_llm_command_generator, # noqa: E501
163
+ }
164
+
125
165
  @staticmethod
126
166
  def _create_multi_step_llm_command_generator_instruments(
127
167
  meter: Meter,
rasa/utils/common.py CHANGED
@@ -8,38 +8,38 @@ import shutil
8
8
  import tempfile
9
9
  import warnings
10
10
  from pathlib import Path
11
+ from socket import SOCK_DGRAM, SOCK_STREAM
11
12
  from types import TracebackType
12
13
  from typing import (
13
14
  Any,
15
+ ContextManager,
14
16
  Coroutine,
15
17
  Dict,
16
18
  List,
17
19
  Optional,
20
+ Set,
18
21
  Text,
22
+ Tuple,
19
23
  Type,
20
24
  TypeVar,
21
25
  Union,
22
- ContextManager,
23
- Set,
24
- Tuple,
25
26
  )
26
27
 
27
- from socket import SOCK_DGRAM, SOCK_STREAM
28
28
  import numpy as np
29
+
30
+ import rasa.shared.utils.io
29
31
  import rasa.utils.io
30
32
  from rasa.anonymization import ENV_LOG_LEVEL_FAKER, ENV_LOG_LEVEL_PRESIDIO
31
33
  from rasa.constants import (
32
34
  DEFAULT_LOG_LEVEL_LIBRARIES,
35
+ ENV_LOG_LEVEL_KAFKA,
33
36
  ENV_LOG_LEVEL_LIBRARIES,
34
37
  ENV_LOG_LEVEL_MATPLOTLIB,
35
- ENV_LOG_LEVEL_MLFLOW,
36
38
  ENV_LOG_LEVEL_RABBITMQ,
37
- ENV_LOG_LEVEL_KAFKA,
38
39
  )
39
40
  from rasa.shared.constants import DEFAULT_LOG_LEVEL, ENV_LOG_LEVEL, TCP_PROTOCOL
40
41
  from rasa.shared.exceptions import RasaException
41
- import rasa.shared.utils.io
42
- from rasa.shared.utils.yaml import read_yaml_file, write_yaml, read_config_file
42
+ from rasa.shared.utils.yaml import read_config_file, read_yaml_file, write_yaml
43
43
 
44
44
  logger = logging.getLogger(__name__)
45
45
 
@@ -70,7 +70,6 @@ EXPECTED_WARNINGS: List[Tuple[Type[Warning], str]] = [
70
70
  "Converting sparse IndexedSlices.* to a dense Tensor of unknown "
71
71
  "shape. This may consume a large amount of memory.",
72
72
  ),
73
- (UserWarning, "Slot auto-fill has been removed in 3.0 .*"),
74
73
  # Cannot fix this deprecation warning since we need to support two
75
74
  # numpy versions as long as we keep python 37 around
76
75
  (DeprecationWarning, "the `interpolation=` argument to quantile was renamed"),
@@ -146,7 +145,9 @@ def read_global_config(path: Text) -> Dict[Text, Any]:
146
145
  """
147
146
  # noinspection PyBroadException
148
147
  try:
149
- return read_config_file(path)
148
+ # set expand_env_vars to False because this is a global config file
149
+ # used for telemetry, in which case we don't need to expand env vars
150
+ return read_config_file(path, expand_env_vars=False)
150
151
  except Exception:
151
152
  # if things go south we pretend there is no config
152
153
  return {}
@@ -299,7 +300,7 @@ def update_sanic_log_level(
299
300
  syslog_protocol: Optional[Text] = None,
300
301
  ) -> None:
301
302
  """Set the log level to 'LOG_LEVEL_LIBRARIES' environment variable ."""
302
- from sanic.log import logger, error_logger, access_logger
303
+ from sanic.log import access_logger, error_logger, logger
303
304
 
304
305
  log_level = os.environ.get(ENV_LOG_LEVEL_LIBRARIES, DEFAULT_LOG_LEVEL_LIBRARIES)
305
306
 
@@ -393,19 +394,6 @@ def update_faker_log_level(library_log_level: Text) -> None:
393
394
  logging.getLogger("faker").propagate = False
394
395
 
395
396
 
396
- def update_mlflow_log_level() -> None:
397
- """Set the log level of mlflow.
398
-
399
- Uses the library specific log level or the general libraries log level.
400
- """
401
- library_log_level = os.environ.get(
402
- ENV_LOG_LEVEL_LIBRARIES, DEFAULT_LOG_LEVEL_LIBRARIES
403
- )
404
- log_level = os.environ.get(ENV_LOG_LEVEL_MLFLOW, library_log_level)
405
- logging.getLogger("mlflow").setLevel(log_level)
406
- logging.getLogger("mlflow").propagate = False
407
-
408
-
409
397
  def sort_list_of_dicts_by_first_key(dicts: List[Dict]) -> List[Dict]:
410
398
  """Sorts a list of dictionaries by their first key."""
411
399
  return sorted(dicts, key=lambda d: next(iter(d.keys())))
rasa/utils/endpoints.py CHANGED
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import ssl
3
3
  from types import ModuleType
4
- from typing import Any, List, Optional, Text, Dict, Union
4
+ from typing import Any, Dict, List, Optional, Text, Union
5
5
 
6
6
  import aiohttp
7
7
  import structlog
rasa/utils/io.py CHANGED
@@ -2,22 +2,22 @@ import asyncio
2
2
  import filecmp
3
3
  import logging
4
4
  import os
5
+ import re
5
6
  import tempfile
6
7
  import warnings
7
- import re
8
8
  from asyncio import AbstractEventLoop
9
9
  from collections import OrderedDict
10
10
  from io import StringIO
11
11
  from pathlib import Path
12
12
  from typing import (
13
- Optional,
14
- Text,
13
+ TYPE_CHECKING,
15
14
  Any,
16
- Union,
15
+ Callable,
17
16
  List,
17
+ Optional,
18
+ Text,
18
19
  Type,
19
- Callable,
20
- TYPE_CHECKING,
20
+ Union,
21
21
  )
22
22
 
23
23
  from ruamel import yaml
@@ -153,8 +153,8 @@ def create_validator(
153
153
  """Helper method to create `Validator` classes from callable functions. Should be
154
154
  removed when questionary supports `Validator` objects.
155
155
  """
156
- from prompt_toolkit.validation import Validator, ValidationError
157
156
  from prompt_toolkit.document import Document
157
+ from prompt_toolkit.validation import ValidationError, Validator
158
158
 
159
159
  class FunctionValidator(Validator):
160
160
  @staticmethod
rasa/utils/licensing.py CHANGED
@@ -1,4 +1,3 @@
1
- from asyncio import AbstractEventLoop
2
1
  import hashlib
3
2
  import os
4
3
  import random
@@ -6,19 +5,19 @@ import re
6
5
  import time
7
6
  import typing
8
7
  import uuid
8
+ from asyncio import AbstractEventLoop
9
9
  from datetime import datetime, timezone
10
10
  from typing import Any, Callable, Dict, Optional, Set, Text, TypeVar
11
11
 
12
12
  import jwt
13
+ import structlog
13
14
  from dotenv import dotenv_values
14
15
  from sanic import Sanic
15
- import structlog
16
- from rasa import telemetry
17
16
 
17
+ from rasa import telemetry
18
18
  from rasa.core import jobs
19
19
  from rasa.shared.utils.cli import print_error_and_exit
20
20
 
21
-
22
21
  if typing.TYPE_CHECKING:
23
22
  from rasa.core.tracker_store import TrackerStore
24
23
 
rasa/utils/log_utils.py CHANGED
@@ -1,22 +1,23 @@
1
1
  from __future__ import annotations
2
- import os
2
+
3
3
  import logging
4
+ import os
4
5
  import sys
5
6
  from typing import Any, Dict, Optional
6
7
 
7
8
  import structlog
8
- from structlog_sentry import SentryProcessor
9
9
  from structlog.dev import ConsoleRenderer
10
10
  from structlog.typing import EventDict, WrappedLogger
11
+ from structlog_sentry import SentryProcessor
12
+
13
+ from rasa.plugin import plugin_manager
11
14
  from rasa.shared.constants import (
12
- ENV_LOG_LEVEL,
13
15
  DEFAULT_LOG_LEVEL,
16
+ DEFAULT_LOG_LEVEL_LLM,
17
+ ENV_LOG_LEVEL,
14
18
  ENV_LOG_LEVEL_LLM,
15
19
  ENV_LOG_LEVEL_LLM_MODULE_NAMES,
16
- DEFAULT_LOG_LEVEL_LLM,
17
20
  )
18
- from rasa.plugin import plugin_manager
19
-
20
21
 
21
22
  FORCE_JSON_LOGGING = os.environ.get("FORCE_JSON_LOGGING")
22
23
 
rasa/utils/ml_utils.py CHANGED
@@ -5,6 +5,7 @@ import numpy as np
5
5
  import structlog
6
6
  from langchain.schema.embeddings import Embeddings
7
7
  from langchain_community.vectorstores import FAISS
8
+
8
9
  from rasa.shared.constants import REQUIRED_SLOTS_KEY
9
10
  from rasa.shared.core.domain import KEY_RESPONSES_TEXT, Domain
10
11
  from rasa.shared.utils.llm import AI
rasa/utils/plotting.py CHANGED
@@ -1,11 +1,11 @@
1
- import logging
2
1
  import itertools
2
+ import logging
3
3
  import os
4
4
  from functools import wraps
5
+ from typing import Any, Callable, List, Optional, Text, Tuple, TypeVar, Union
5
6
 
6
- import numpy as np
7
- from typing import Any, Callable, List, Optional, Text, TypeVar, Union, Tuple
8
7
  import matplotlib
8
+ import numpy as np
9
9
  from matplotlib.ticker import FormatStrFormatter
10
10
 
11
11
  import rasa.shared.utils.io
@@ -1,7 +1,7 @@
1
1
  from sanic import Sanic
2
+ from sanic.exceptions import ServerError
2
3
  from sanic.handlers import ErrorHandler
3
4
  from sanic.request import Request
4
- from sanic.exceptions import ServerError
5
5
 
6
6
 
7
7
  # TODO: remove custom handler when upgrading to sanic >= 24
@@ -1,7 +1,7 @@
1
+ import logging
1
2
  from pathlib import Path
2
- from typing import Dict, Text, Any, Optional
3
+ from typing import Any, Dict, Optional, Text
3
4
 
4
- import logging
5
5
  import tensorflow as tf
6
6
  from tqdm import tqdm
7
7
 
@@ -1,8 +1,8 @@
1
+ from typing import Any, List, Optional, Tuple, Union
2
+
1
3
  import tensorflow as tf
2
4
  from tensorflow import TensorShape
3
5
  from tensorflow.types.experimental import TensorLike
4
- from typing import Tuple, Any, List, Union, Optional
5
-
6
6
 
7
7
  # original code taken from
8
8
  # https://github.com/tensorflow/addons/blob/b8cab7fd61af4f697a1cdae4f51c37c346b9c6f0/tensorflow_addons/text/crf.py
@@ -1,13 +1,13 @@
1
+ import logging
1
2
  import math
2
- from typing import List, Union, Text, Optional, Any, Tuple, Dict, cast
3
+ from typing import Any, Dict, List, Optional, Text, Tuple, Union, cast
3
4
 
4
- import logging
5
- import scipy.sparse
6
5
  import numpy as np
6
+ import scipy.sparse
7
7
  from tensorflow.keras.utils import Sequence
8
8
 
9
- from rasa.utils.tensorflow.constants import SEQUENCE, BALANCED
10
- from rasa.utils.tensorflow.model_data import RasaModelData, Data, FeatureArray
9
+ from rasa.utils.tensorflow.constants import BALANCED, SEQUENCE
10
+ from rasa.utils.tensorflow.model_data import Data, FeatureArray, RasaModelData
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
@@ -1,16 +1,16 @@
1
1
  import logging
2
2
  import os
3
- from typing import Text, Dict
4
3
  import typing
4
+ from typing import Dict, Text
5
5
 
6
6
  import rasa.shared.utils.io
7
7
  from rasa.constants import (
8
- ENV_GPU_CONFIG,
9
8
  ENV_CPU_INTER_OP_CONFIG,
10
9
  ENV_CPU_INTRA_OP_CONFIG,
10
+ ENV_GPU_CONFIG,
11
11
  )
12
- from rasa.utils.tensorflow.constants import TF_DETERMINISTIC_OPS
13
12
  from rasa.shared.utils import io as shared_io_utils
13
+ from rasa.utils.tensorflow.constants import TF_DETERMINISTIC_OPS
14
14
 
15
15
  if typing.TYPE_CHECKING:
16
16
  from tensorflow import config as tf_config
@@ -1,9 +1,8 @@
1
- from typing import Dict, Any, List, Tuple, Optional, Union
1
+ from typing import Any, Dict, List, Optional, Tuple, Union
2
2
 
3
- from safetensors.numpy import save_file
4
3
  import numpy as np
5
- from safetensors.numpy import load_file
6
4
  import scipy.sparse
5
+ from safetensors.numpy import load_file, save_file
7
6
 
8
7
  import rasa.shared.utils.io
9
8