rasa-pro 3.13.12__py3-none-any.whl → 3.14.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 (586) hide show
  1. rasa/__main__.py +15 -3
  2. rasa/agents/__init__.py +0 -0
  3. rasa/agents/agent_factory.py +122 -0
  4. rasa/agents/agent_manager.py +213 -0
  5. rasa/agents/constants.py +43 -0
  6. rasa/agents/core/__init__.py +0 -0
  7. rasa/agents/core/agent_protocol.py +107 -0
  8. rasa/agents/core/types.py +81 -0
  9. rasa/agents/exceptions.py +38 -0
  10. rasa/agents/protocol/__init__.py +5 -0
  11. rasa/agents/protocol/a2a/__init__.py +0 -0
  12. rasa/agents/protocol/a2a/a2a_agent.py +889 -0
  13. rasa/agents/protocol/mcp/__init__.py +0 -0
  14. rasa/agents/protocol/mcp/mcp_base_agent.py +778 -0
  15. rasa/agents/protocol/mcp/mcp_open_agent.py +327 -0
  16. rasa/agents/protocol/mcp/mcp_task_agent.py +522 -0
  17. rasa/agents/schemas/__init__.py +13 -0
  18. rasa/agents/schemas/agent_input.py +38 -0
  19. rasa/agents/schemas/agent_output.py +26 -0
  20. rasa/agents/schemas/agent_tool_result.py +65 -0
  21. rasa/agents/schemas/agent_tool_schema.py +186 -0
  22. rasa/agents/templates/__init__.py +0 -0
  23. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +20 -0
  24. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +22 -0
  25. rasa/agents/utils.py +228 -0
  26. rasa/agents/validation.py +538 -0
  27. rasa/api.py +23 -9
  28. rasa/builder/README.md +120 -0
  29. rasa/builder/__init__.py +0 -0
  30. rasa/builder/auth.py +176 -0
  31. rasa/builder/config.py +96 -0
  32. rasa/builder/copilot/__init__.py +0 -0
  33. rasa/builder/copilot/constants.py +38 -0
  34. rasa/builder/copilot/copilot.py +562 -0
  35. rasa/builder/copilot/copilot_response_handler.py +522 -0
  36. rasa/builder/copilot/copilot_templated_message_provider.py +81 -0
  37. rasa/builder/copilot/exceptions.py +32 -0
  38. rasa/builder/copilot/models.py +690 -0
  39. rasa/builder/copilot/prompts/__init__.py +0 -0
  40. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +787 -0
  41. rasa/builder/copilot/prompts/copilot_training_error_handler_prompt.jinja2 +53 -0
  42. rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +91 -0
  43. rasa/builder/copilot/signing.py +305 -0
  44. rasa/builder/copilot/telemetry.py +234 -0
  45. rasa/builder/copilot/templated_messages/__init__.py +0 -0
  46. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  47. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +41 -0
  48. rasa/builder/copilot/templated_messages/copilot_welcome_messages.yml +56 -0
  49. rasa/builder/document_retrieval/__init__.py +0 -0
  50. rasa/builder/document_retrieval/constants.py +15 -0
  51. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  52. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  53. rasa/builder/document_retrieval/models.py +62 -0
  54. rasa/builder/download.py +140 -0
  55. rasa/builder/exceptions.py +91 -0
  56. rasa/builder/guardrails/__init__.py +1 -0
  57. rasa/builder/guardrails/clients.py +256 -0
  58. rasa/builder/guardrails/constants.py +12 -0
  59. rasa/builder/guardrails/exceptions.py +4 -0
  60. rasa/builder/guardrails/models.py +266 -0
  61. rasa/builder/guardrails/policy_checker.py +324 -0
  62. rasa/builder/guardrails/store.py +238 -0
  63. rasa/builder/guardrails/utils.py +94 -0
  64. rasa/builder/job_manager.py +87 -0
  65. rasa/builder/jobs.py +609 -0
  66. rasa/builder/llm_service.py +273 -0
  67. rasa/builder/logging_utils.py +265 -0
  68. rasa/builder/main.py +234 -0
  69. rasa/builder/models.py +229 -0
  70. rasa/builder/project_generator.py +463 -0
  71. rasa/builder/project_info.py +72 -0
  72. rasa/builder/service.py +1367 -0
  73. rasa/builder/shared/tracker_context.py +212 -0
  74. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  75. rasa/builder/template_cache.py +69 -0
  76. rasa/builder/training_service.py +188 -0
  77. rasa/builder/validation_service.py +101 -0
  78. rasa/cli/arguments/data.py +9 -0
  79. rasa/cli/arguments/default_arguments.py +12 -0
  80. rasa/cli/arguments/run.py +2 -0
  81. rasa/cli/arguments/train.py +2 -0
  82. rasa/cli/data.py +78 -10
  83. rasa/cli/dialogue_understanding_test.py +11 -7
  84. rasa/cli/e2e_test.py +10 -6
  85. rasa/cli/evaluate.py +4 -2
  86. rasa/cli/export.py +5 -2
  87. rasa/cli/inspect.py +9 -4
  88. rasa/cli/interactive.py +8 -4
  89. rasa/cli/llm_fine_tuning.py +12 -6
  90. rasa/cli/project_templates/basic/README.md +23 -0
  91. rasa/cli/project_templates/basic/actions/__init__ +0 -0
  92. rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
  93. rasa/cli/project_templates/basic/actions/actions.md +10 -0
  94. rasa/cli/project_templates/basic/config.yml +29 -0
  95. rasa/cli/project_templates/basic/credentials.yml +33 -0
  96. rasa/cli/project_templates/basic/data/data.md +8 -0
  97. rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
  98. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  99. rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
  100. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  101. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  102. rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
  103. rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
  104. rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
  105. rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
  106. rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
  107. rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
  108. rasa/cli/project_templates/basic/docs/docs.md +5 -0
  109. rasa/cli/project_templates/basic/docs/template.txt +28 -0
  110. rasa/cli/project_templates/basic/domain/domain.md +11 -0
  111. rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
  112. rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
  113. rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
  114. rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
  115. rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
  116. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
  117. rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
  118. rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
  119. rasa/cli/project_templates/basic/endpoints.yml +67 -0
  120. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  121. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
  122. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
  123. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
  124. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/help.yml +8 -0
  125. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/human_handoff.yml +41 -0
  126. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/patterns.yml +32 -0
  127. rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/show_faqs.yml +8 -0
  128. rasa/cli/project_templates/default/config.yml +4 -0
  129. rasa/cli/project_templates/default/endpoints.yml +4 -0
  130. rasa/cli/project_templates/defaults.py +1 -0
  131. rasa/cli/project_templates/finance/README.md +26 -0
  132. rasa/cli/project_templates/finance/actions/__init__.py +0 -0
  133. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  134. rasa/cli/project_templates/finance/actions/accounts/check_balance.py +18 -0
  135. rasa/cli/project_templates/finance/actions/actions.md +15 -0
  136. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  137. rasa/cli/project_templates/finance/actions/cards/check_that_card_exists.py +21 -0
  138. rasa/cli/project_templates/finance/actions/cards/list_cards.py +22 -0
  139. rasa/cli/project_templates/finance/actions/contacts/__init__.py +0 -0
  140. rasa/cli/project_templates/finance/actions/contacts/add_contact.py +30 -0
  141. rasa/cli/project_templates/finance/actions/contacts/list_contacts.py +22 -0
  142. rasa/cli/project_templates/finance/actions/contacts/remove_contact.py +35 -0
  143. rasa/cli/project_templates/finance/actions/db.py +117 -0
  144. rasa/cli/project_templates/finance/actions/general/__init__.py +0 -0
  145. rasa/cli/project_templates/finance/actions/general/action_human_handoff.py +49 -0
  146. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  147. rasa/cli/project_templates/finance/actions/transfers/check_transfer_funds.py +27 -0
  148. rasa/cli/project_templates/finance/actions/transfers/check_transfer_limit.py +36 -0
  149. rasa/cli/project_templates/finance/actions/transfers/execute_recurrent_payment.py +20 -0
  150. rasa/cli/project_templates/finance/actions/transfers/execute_transfer.py +45 -0
  151. rasa/cli/project_templates/finance/actions/transfers/list_transactions.py +32 -0
  152. rasa/cli/project_templates/finance/config.yml +29 -0
  153. rasa/cli/project_templates/finance/credentials.yml +33 -0
  154. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +9 -0
  155. rasa/cli/project_templates/finance/data/accounts/download_statements.yml +26 -0
  156. rasa/cli/project_templates/finance/data/bills/bill_pay_reminder.yml +25 -0
  157. rasa/cli/project_templates/finance/data/cards/activate_card.yml +35 -0
  158. rasa/cli/project_templates/finance/data/cards/block_card.yml +45 -0
  159. rasa/cli/project_templates/finance/data/cards/list_cards.yml +14 -0
  160. rasa/cli/project_templates/finance/data/cards/replace_card.yml +16 -0
  161. rasa/cli/project_templates/finance/data/cards/replace_eligible_card.yml +29 -0
  162. rasa/cli/project_templates/finance/data/contacts/add_contact.yml +33 -0
  163. rasa/cli/project_templates/finance/data/contacts/list_contacts.yml +14 -0
  164. rasa/cli/project_templates/finance/data/contacts/remove_contact.yml +31 -0
  165. rasa/cli/project_templates/finance/data/data.md +14 -0
  166. rasa/cli/project_templates/finance/data/general/bot_challenge.yml +6 -0
  167. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  168. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  169. rasa/cli/project_templates/finance/data/general/hello.yml +6 -0
  170. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  171. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  172. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  173. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  174. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  175. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  176. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  177. rasa/cli/project_templates/finance/data/transfers/check_transfer_limit.yml +18 -0
  178. rasa/cli/project_templates/finance/data/transfers/list_transactions.yml +46 -0
  179. rasa/cli/project_templates/finance/data/transfers/move_money_between_accounts.yml +51 -0
  180. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +34 -0
  181. rasa/cli/project_templates/finance/data/transfers/transfer_money_to_a_third_party.yml +175 -0
  182. rasa/cli/project_templates/finance/db/cards.json +18 -0
  183. rasa/cli/project_templates/finance/db/contacts.json +10 -0
  184. rasa/cli/project_templates/finance/db/my_account.json +6 -0
  185. rasa/cli/project_templates/finance/db/transactions.json +22 -0
  186. rasa/cli/project_templates/finance/docs/docs.md +8 -0
  187. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/budgeting_analytics.txt +22 -0
  188. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/multi_currency_accounts.txt +19 -0
  189. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/premium_benefits.txt +19 -0
  190. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/contactless_limits.txt +16 -0
  191. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/freeze_unfreeze_card.txt +16 -0
  192. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/lost_stolen_card.txt +19 -0
  193. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/instant_payments.txt +19 -0
  194. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/international_transfers.txt +19 -0
  195. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/fraud_protection.txt +22 -0
  196. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/secure_payments.txt +22 -0
  197. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +15 -0
  198. rasa/cli/project_templates/finance/domain/accounts/download_statements.yml +40 -0
  199. rasa/cli/project_templates/finance/domain/bills/bill_pay_reminder.yml +49 -0
  200. rasa/cli/project_templates/finance/domain/cards/activate_card.yml +24 -0
  201. rasa/cli/project_templates/finance/domain/cards/block_card.yml +44 -0
  202. rasa/cli/project_templates/finance/domain/cards/list_cards.yml +16 -0
  203. rasa/cli/project_templates/finance/domain/cards/replace_card.yml +43 -0
  204. rasa/cli/project_templates/finance/domain/cards/shared.yml +15 -0
  205. rasa/cli/project_templates/finance/domain/contacts/add_contact.yml +37 -0
  206. rasa/cli/project_templates/finance/domain/contacts/list_contacts.yml +16 -0
  207. rasa/cli/project_templates/finance/domain/contacts/remove_contact.yml +32 -0
  208. rasa/cli/project_templates/finance/domain/domain.md +18 -0
  209. rasa/cli/project_templates/finance/domain/general/_shared.yml +39 -0
  210. rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
  211. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +8 -0
  212. rasa/cli/project_templates/finance/domain/general/feedback.yml +25 -0
  213. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  214. rasa/cli/project_templates/finance/domain/general/help.yml +0 -0
  215. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +31 -0
  216. rasa/cli/project_templates/finance/domain/general/welcome.yml +39 -0
  217. rasa/cli/project_templates/finance/domain/transfers/check_transfer_limit.yml +32 -0
  218. rasa/cli/project_templates/finance/domain/transfers/list_transactions.yml +44 -0
  219. rasa/cli/project_templates/finance/domain/transfers/shared.yml +17 -0
  220. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +221 -0
  221. rasa/cli/project_templates/finance/endpoints.yml +67 -0
  222. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  223. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/accounts/check_balance.yml +9 -0
  224. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/accounts/download_statements.yml +43 -0
  225. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/cards/block_card.yml +55 -0
  226. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/bot_challenge.yml +8 -0
  227. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
  228. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
  229. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
  230. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/human_handoff.yml +35 -0
  231. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/patterns.yml +22 -0
  232. rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/transfers/transfer_money.yml +56 -0
  233. rasa/cli/project_templates/telco/README.md +25 -0
  234. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  235. rasa/cli/project_templates/telco/actions/actions.md +12 -0
  236. rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
  237. rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
  238. rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
  239. rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
  240. rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
  241. rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
  242. rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
  243. rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
  244. rasa/cli/project_templates/telco/config.yml +29 -0
  245. rasa/cli/project_templates/telco/credentials.yml +33 -0
  246. rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
  247. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  248. rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
  249. rasa/cli/project_templates/telco/data/data.md +11 -0
  250. rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
  251. rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
  252. rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
  253. rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
  254. rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
  255. rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
  256. rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
  257. rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
  258. rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
  259. rasa/cli/project_templates/telco/docs/docs.md +8 -0
  260. rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
  261. rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
  262. rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
  263. rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
  264. rasa/cli/project_templates/telco/domain/domain.md +13 -0
  265. rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
  266. rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
  267. rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
  268. rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
  269. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
  270. rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
  271. rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
  272. rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
  273. rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
  274. rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +74 -0
  275. rasa/cli/project_templates/telco/domain/shared.yml +129 -0
  276. rasa/cli/project_templates/telco/endpoints.yml +67 -0
  277. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
  278. rasa/cli/project_templates/telco/tests/e2e_test_cases/with_stub/network/solve_internet_not_slow.yml +33 -0
  279. rasa/cli/project_templates/telco/tests/e2e_test_cases/with_stub/network/solve_internet_slow.yml +47 -0
  280. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/billing/understand_bill.yml +67 -0
  281. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/bot_challenge.yml +8 -0
  282. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
  283. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
  284. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
  285. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/human_handoff.yml +35 -0
  286. rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/patterns.yml +23 -0
  287. rasa/cli/project_templates/tutorial/config.yml +2 -1
  288. rasa/cli/project_templates/tutorial/credentials.yml +10 -0
  289. rasa/cli/run.py +8 -10
  290. rasa/cli/scaffold.py +50 -6
  291. rasa/cli/shell.py +10 -5
  292. rasa/cli/studio/studio.py +1 -1
  293. rasa/cli/test.py +34 -14
  294. rasa/cli/train.py +44 -30
  295. rasa/cli/utils.py +1 -393
  296. rasa/cli/validation/__init__.py +0 -0
  297. rasa/cli/validation/bot_config.py +232 -0
  298. rasa/cli/validation/config_path_validation.py +257 -0
  299. rasa/cli/x.py +8 -4
  300. rasa/constants.py +7 -1
  301. rasa/core/actions/action.py +53 -13
  302. rasa/core/actions/action_exceptions.py +1 -1
  303. rasa/core/actions/action_run_slot_rejections.py +1 -1
  304. rasa/core/actions/grpc_custom_action_executor.py +1 -1
  305. rasa/core/agent.py +22 -2
  306. rasa/core/available_agents.py +239 -0
  307. rasa/core/brokers/broker.py +1 -1
  308. rasa/core/brokers/kafka.py +56 -8
  309. rasa/core/channels/__init__.py +82 -35
  310. rasa/core/channels/channel.py +4 -3
  311. rasa/core/channels/constants.py +3 -0
  312. rasa/core/channels/development_inspector.py +29 -16
  313. rasa/core/channels/hangouts.py +2 -2
  314. rasa/core/channels/inspector/README.md +25 -13
  315. rasa/core/channels/inspector/dist/assets/{arc-0b11fe30.js → arc-6177260a.js} +1 -1
  316. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-9eef30a7.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
  317. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-03e94f28.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
  318. rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
  319. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-95c09eba.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
  320. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-38e8446c.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
  321. rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
  322. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-57dc3038.js → createText-2e5e7dd3-088372e2.js} +1 -1
  323. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-4bac0545.js → edges-e0da2a9e-58676240.js} +1 -1
  324. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-81795c90.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
  325. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-89489ae6.js → flowDb-956e92f1-ea63f85c.js} +1 -1
  326. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-cd152627.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
  327. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
  328. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-3da369bc.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
  329. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-85ec16f8.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
  330. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-495bc140.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
  331. rasa/core/channels/inspector/dist/assets/{graph-1ec4d266.js → graph-0a6f8466.js} +1 -1
  332. rasa/core/channels/inspector/dist/assets/{index-3862675e-0a0e97c9.js → index-3862675e-7610671a.js} +1 -1
  333. rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
  334. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-4d54bcde.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
  335. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-dc097114.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
  336. rasa/core/channels/inspector/dist/assets/{layout-1a08981e.js → layout-e7fbc2bf.js} +1 -1
  337. rasa/core/channels/inspector/dist/assets/{line-95f7f1d3.js → line-a8aa457c.js} +1 -1
  338. rasa/core/channels/inspector/dist/assets/{linear-97e69543.js → linear-3351e0d2.js} +1 -1
  339. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-8c71ff03.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
  340. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-f14c71c7.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
  341. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-f1d3c9ff.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
  342. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-bfa2412f.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
  343. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-53f2c97b.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
  344. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-319d7c0e.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
  345. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-76a09418.js → stateDiagram-587899a1-0e770395.js} +1 -1
  346. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-a67f15d4.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
  347. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-0654e7c3.js → styles-6aaf32cf-36a9e70d.js} +1 -1
  348. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-1394bb9d.js → styles-9a916d00-884a8b5b.js} +1 -1
  349. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-e4c5bdae.js → styles-c10674c1-dc097813.js} +1 -1
  350. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-50957104.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
  351. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-b0885a6a.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
  352. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-79e6541a.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
  353. rasa/core/channels/inspector/dist/index.html +1 -1
  354. rasa/core/channels/inspector/package.json +18 -18
  355. rasa/core/channels/inspector/src/App.tsx +56 -12
  356. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +1 -1
  357. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  358. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
  359. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
  360. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +296 -0
  361. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -2
  362. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +26 -4
  363. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  364. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  365. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  366. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  367. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  368. rasa/core/channels/inspector/src/types.ts +55 -1
  369. rasa/core/channels/inspector/yarn.lock +336 -189
  370. rasa/core/channels/socketio.py +212 -51
  371. rasa/core/channels/studio_chat.py +82 -32
  372. rasa/core/channels/telegram.py +4 -9
  373. rasa/core/channels/voice_ready/twilio_voice.py +1 -1
  374. rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
  375. rasa/core/channels/voice_stream/asr/azure.py +6 -3
  376. rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
  377. rasa/core/channels/voice_stream/audiocodes.py +11 -6
  378. rasa/core/channels/voice_stream/browser_audio.py +91 -4
  379. rasa/core/channels/voice_stream/call_state.py +13 -2
  380. rasa/core/channels/voice_stream/genesys.py +19 -15
  381. rasa/core/channels/voice_stream/jambonz.py +22 -12
  382. rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
  383. rasa/core/channels/voice_stream/twilio_media_streams.py +35 -14
  384. rasa/core/channels/voice_stream/util.py +11 -1
  385. rasa/core/channels/voice_stream/voice_channel.py +170 -32
  386. rasa/core/concurrent_lock_store.py +83 -16
  387. rasa/core/config/__init__.py +0 -0
  388. rasa/core/{available_endpoints.py → config/available_endpoints.py} +56 -18
  389. rasa/core/config/configuration.py +295 -0
  390. rasa/core/config/credentials.py +19 -0
  391. rasa/core/config/message_procesing_config.py +34 -0
  392. rasa/core/constants.py +17 -0
  393. rasa/core/exceptions.py +1 -1
  394. rasa/core/featurizers/tracker_featurizers.py +3 -2
  395. rasa/core/iam_credentials_providers/__init__.py +0 -0
  396. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +291 -0
  397. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +91 -0
  398. rasa/core/lock_store.py +50 -10
  399. rasa/core/nlg/contextual_response_rephraser.py +5 -0
  400. rasa/core/nlg/generator.py +1 -1
  401. rasa/core/persistor.py +7 -7
  402. rasa/core/policies/enterprise_search_policy.py +9 -10
  403. rasa/core/policies/flow_policy.py +4 -4
  404. rasa/core/policies/flows/agent_executor.py +720 -0
  405. rasa/core/policies/flows/flow_exceptions.py +5 -2
  406. rasa/core/policies/flows/flow_executor.py +146 -77
  407. rasa/core/policies/flows/mcp_tool_executor.py +304 -0
  408. rasa/core/policies/intentless_policy.py +1 -1
  409. rasa/core/policies/rule_policy.py +1 -1
  410. rasa/core/policies/ted_policy.py +20 -12
  411. rasa/core/policies/unexpected_intent_policy.py +6 -0
  412. rasa/core/processor.py +100 -44
  413. rasa/core/redis_connection_factory.py +474 -0
  414. rasa/core/run.py +49 -10
  415. rasa/core/test.py +4 -0
  416. rasa/core/tracker_stores/redis_tracker_store.py +36 -14
  417. rasa/core/tracker_stores/sql_tracker_store.py +59 -1
  418. rasa/core/tracker_stores/tracker_store.py +3 -7
  419. rasa/core/train.py +1 -1
  420. rasa/core/training/interactive.py +20 -18
  421. rasa/core/training/story_conflict.py +5 -5
  422. rasa/core/utils.py +22 -23
  423. rasa/dialogue_understanding/commands/__init__.py +8 -0
  424. rasa/dialogue_understanding/commands/cancel_flow_command.py +20 -6
  425. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
  426. rasa/dialogue_understanding/commands/clarify_command.py +20 -2
  427. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  428. rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
  429. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  430. rasa/dialogue_understanding/commands/start_flow_command.py +75 -7
  431. rasa/dialogue_understanding/commands/utils.py +135 -2
  432. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  433. rasa/dialogue_understanding/generator/flow_retrieval.py +0 -9
  434. rasa/dialogue_understanding/generator/llm_based_command_generator.py +52 -12
  435. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  436. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  437. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
  438. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
  439. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
  440. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
  441. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
  442. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
  443. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
  444. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  445. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  446. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  447. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +49 -9
  448. rasa/dialogue_understanding/processor/command_processor.py +136 -15
  449. rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
  450. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  451. rasa/dialogue_understanding/stack/utils.py +57 -3
  452. rasa/dialogue_understanding/utils.py +24 -4
  453. rasa/dialogue_understanding_test/du_test_runner.py +8 -3
  454. rasa/e2e_test/e2e_test_runner.py +13 -3
  455. rasa/engine/caching.py +2 -2
  456. rasa/engine/constants.py +1 -1
  457. rasa/engine/graph.py +5 -1
  458. rasa/engine/loader.py +12 -0
  459. rasa/engine/recipes/default_components.py +138 -49
  460. rasa/engine/recipes/default_recipe.py +108 -11
  461. rasa/engine/runner/dask.py +8 -5
  462. rasa/engine/validation.py +25 -8
  463. rasa/graph_components/validators/default_recipe_validator.py +86 -28
  464. rasa/hooks.py +5 -5
  465. rasa/llm_fine_tuning/utils.py +2 -2
  466. rasa/model_manager/model_api.py +4 -5
  467. rasa/model_manager/runner_service.py +2 -2
  468. rasa/model_manager/socket_bridge.py +21 -17
  469. rasa/model_manager/trainer_service.py +12 -9
  470. rasa/model_manager/utils.py +1 -29
  471. rasa/model_manager/warm_rasa_process.py +13 -3
  472. rasa/model_training.py +60 -47
  473. rasa/nlu/classifiers/diet_classifier.py +198 -98
  474. rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
  475. rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
  476. rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
  477. rasa/nlu/extractors/crf_entity_extractor.py +9 -10
  478. rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
  479. rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
  480. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
  481. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
  482. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
  483. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
  484. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
  485. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
  486. rasa/nlu/selectors/response_selector.py +10 -2
  487. rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
  488. rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
  489. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
  490. rasa/nlu/utils/mitie_utils.py +3 -0
  491. rasa/nlu/utils/spacy_utils.py +3 -2
  492. rasa/plugin.py +8 -8
  493. rasa/privacy/privacy_config.py +1 -1
  494. rasa/privacy/privacy_manager.py +12 -3
  495. rasa/server.py +15 -3
  496. rasa/shared/agents/__init__.py +0 -0
  497. rasa/shared/agents/auth/__init__.py +0 -0
  498. rasa/shared/agents/auth/agent_auth_factory.py +105 -0
  499. rasa/shared/agents/auth/agent_auth_manager.py +92 -0
  500. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  501. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  502. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  503. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  504. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +170 -0
  505. rasa/shared/agents/auth/constants.py +13 -0
  506. rasa/shared/agents/auth/types.py +12 -0
  507. rasa/shared/agents/auth/utils.py +85 -0
  508. rasa/shared/agents/utils.py +35 -0
  509. rasa/shared/constants.py +11 -0
  510. rasa/shared/core/constants.py +17 -1
  511. rasa/shared/core/domain.py +62 -22
  512. rasa/shared/core/events.py +329 -0
  513. rasa/shared/core/flows/constants.py +5 -0
  514. rasa/shared/core/flows/flow.py +1 -1
  515. rasa/shared/core/flows/flow_step.py +7 -1
  516. rasa/shared/core/flows/flows_list.py +21 -5
  517. rasa/shared/core/flows/flows_yaml_schema.json +119 -184
  518. rasa/shared/core/flows/steps/call.py +57 -6
  519. rasa/shared/core/flows/steps/collect.py +98 -13
  520. rasa/shared/core/flows/validation.py +372 -8
  521. rasa/shared/core/flows/yaml_flows_io.py +19 -10
  522. rasa/shared/core/slots.py +6 -2
  523. rasa/shared/core/trackers.py +5 -2
  524. rasa/shared/core/training_data/story_reader/story_reader.py +1 -1
  525. rasa/shared/exceptions.py +39 -2
  526. rasa/shared/importers/importer.py +6 -0
  527. rasa/shared/importers/rasa.py +1 -1
  528. rasa/shared/importers/utils.py +86 -4
  529. rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
  530. rasa/shared/providers/llm/_base_litellm_client.py +41 -9
  531. rasa/shared/providers/llm/litellm_router_llm_client.py +10 -6
  532. rasa/shared/providers/llm/llm_client.py +7 -3
  533. rasa/shared/providers/llm/llm_response.py +66 -0
  534. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  535. rasa/shared/utils/common.py +26 -1
  536. rasa/shared/utils/health_check/health_check.py +7 -3
  537. rasa/shared/utils/llm.py +92 -19
  538. rasa/shared/utils/mcp/__init__.py +0 -0
  539. rasa/shared/utils/mcp/server_connection.py +250 -0
  540. rasa/shared/utils/mcp/utils.py +20 -0
  541. rasa/shared/utils/schemas/events.py +42 -0
  542. rasa/shared/utils/yaml.py +3 -1
  543. rasa/studio/download.py +3 -0
  544. rasa/studio/prompts.py +1 -0
  545. rasa/studio/pull/pull.py +3 -2
  546. rasa/studio/train.py +8 -7
  547. rasa/studio/upload.py +19 -52
  548. rasa/telemetry.py +166 -28
  549. rasa/tracing/config.py +45 -12
  550. rasa/tracing/constants.py +14 -0
  551. rasa/tracing/instrumentation/attribute_extractors.py +142 -9
  552. rasa/tracing/instrumentation/instrumentation.py +626 -21
  553. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  554. rasa/tracing/instrumentation/metrics.py +32 -0
  555. rasa/tracing/metric_instrument_provider.py +68 -0
  556. rasa/utils/common.py +92 -1
  557. rasa/utils/endpoints.py +11 -2
  558. rasa/utils/io.py +27 -9
  559. rasa/utils/json_utils.py +6 -1
  560. rasa/utils/log_utils.py +121 -7
  561. rasa/utils/ml_utils.py +1 -1
  562. rasa/utils/openapi.py +144 -0
  563. rasa/utils/plotting.py +1 -1
  564. rasa/utils/pypred.py +45 -0
  565. rasa/utils/tensorflow/__init__.py +7 -0
  566. rasa/utils/tensorflow/callback.py +136 -101
  567. rasa/utils/tensorflow/crf.py +1 -1
  568. rasa/utils/tensorflow/data_generator.py +21 -8
  569. rasa/utils/tensorflow/layers.py +21 -11
  570. rasa/utils/tensorflow/metrics.py +7 -3
  571. rasa/utils/tensorflow/models.py +56 -8
  572. rasa/utils/tensorflow/rasa_layers.py +8 -6
  573. rasa/utils/tensorflow/transformer.py +2 -3
  574. rasa/utils/train_utils.py +54 -24
  575. rasa/validator.py +149 -16
  576. rasa/version.py +1 -1
  577. rasa_pro-3.14.0.dist-info/METADATA +212 -0
  578. {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/RECORD +581 -269
  579. rasa/core/channels/inspector/dist/assets/channel-51d02e9e.js +0 -1
  580. rasa/core/channels/inspector/dist/assets/clone-cc738fa6.js +0 -1
  581. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-0c716443.js +0 -1
  582. rasa/core/channels/inspector/dist/assets/index-c804b295.js +0 -1335
  583. rasa_pro-3.13.12.dist-info/METADATA +0 -192
  584. {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/NOTICE +0 -0
  585. {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/WHEEL +0 -0
  586. {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/entry_points.txt +0 -0
@@ -3,8 +3,6 @@ from rasa.core.policies.flow_policy import FlowPolicy
3
3
  from rasa.core.policies.intentless_policy import IntentlessPolicy
4
4
  from rasa.core.policies.memoization import AugmentedMemoizationPolicy, MemoizationPolicy
5
5
  from rasa.core.policies.rule_policy import RulePolicy
6
- from rasa.core.policies.ted_policy import TEDPolicy
7
- from rasa.core.policies.unexpected_intent_policy import UnexpecTEDIntentPolicy
8
6
  from rasa.dialogue_understanding.coexistence.intent_based_router import (
9
7
  IntentBasedRouter,
10
8
  )
@@ -13,79 +11,116 @@ from rasa.dialogue_understanding.generator import (
13
11
  LLMCommandGenerator,
14
12
  )
15
13
  from rasa.dialogue_understanding.generator.nlu_command_adapter import NLUCommandAdapter
16
- from rasa.nlu.classifiers.diet_classifier import DIETClassifier
17
14
  from rasa.nlu.classifiers.fallback_classifier import FallbackClassifier
18
15
  from rasa.nlu.classifiers.keyword_intent_classifier import KeywordIntentClassifier
19
- from rasa.nlu.classifiers.logistic_regression_classifier import (
20
- LogisticRegressionClassifier,
21
- )
22
- from rasa.nlu.classifiers.mitie_intent_classifier import MitieIntentClassifier
23
- from rasa.nlu.classifiers.sklearn_intent_classifier import SklearnIntentClassifier
24
- from rasa.nlu.extractors.crf_entity_extractor import CRFEntityExtractor
25
16
  from rasa.nlu.extractors.duckling_entity_extractor import DucklingEntityExtractor
26
17
  from rasa.nlu.extractors.entity_synonyms import EntitySynonymMapper
27
- from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
28
18
  from rasa.nlu.extractors.regex_entity_extractor import RegexEntityExtractor
29
- from rasa.nlu.extractors.spacy_entity_extractor import SpacyEntityExtractor
30
- from rasa.nlu.featurizers.dense_featurizer.convert_featurizer import ConveRTFeaturizer
31
- from rasa.nlu.featurizers.dense_featurizer.lm_featurizer import LanguageModelFeaturizer
32
- from rasa.nlu.featurizers.dense_featurizer.mitie_featurizer import MitieFeaturizer
33
- from rasa.nlu.featurizers.dense_featurizer.spacy_featurizer import SpacyFeaturizer
34
19
  from rasa.nlu.featurizers.sparse_featurizer.count_vectors_featurizer import (
35
20
  CountVectorsFeaturizer,
36
21
  )
37
- from rasa.nlu.featurizers.sparse_featurizer.lexical_syntactic_featurizer import (
38
- LexicalSyntacticFeaturizer,
39
- )
40
22
  from rasa.nlu.featurizers.sparse_featurizer.regex_featurizer import RegexFeaturizer
41
- from rasa.nlu.selectors.response_selector import ResponseSelector
42
- from rasa.nlu.tokenizers.jieba_tokenizer import JiebaTokenizer
43
- from rasa.nlu.tokenizers.mitie_tokenizer import MitieTokenizer
44
- from rasa.nlu.tokenizers.spacy_tokenizer import SpacyTokenizer
45
23
  from rasa.nlu.tokenizers.whitespace_tokenizer import WhitespaceTokenizer
46
- from rasa.nlu.utils.mitie_utils import MitieNLP
47
- from rasa.nlu.utils.spacy_utils import SpacyNLP
24
+ from rasa.shared.utils.common import conditional_import
25
+
26
+ # Conditional imports for components with external dependencies
27
+
28
+ # components dependent on tensorflow
29
+ TEDPolicy, TED_POLICY_AVAILABLE = conditional_import(
30
+ "rasa.core.policies.ted_policy", "TEDPolicy"
31
+ )
32
+ UnexpecTEDIntentPolicy, UNEXPECTED_INTENT_POLICY_AVAILABLE = conditional_import(
33
+ "rasa.core.policies.unexpected_intent_policy", "UnexpecTEDIntentPolicy"
34
+ )
35
+ DIETClassifier, DIET_CLASSIFIER_AVAILABLE = conditional_import(
36
+ "rasa.nlu.classifiers.diet_classifier", "DIETClassifier"
37
+ )
38
+ ConveRTFeaturizer, CONVERT_FEATURIZER_AVAILABLE = conditional_import(
39
+ "rasa.nlu.featurizers.dense_featurizer.convert_featurizer", "ConveRTFeaturizer"
40
+ )
41
+ LanguageModelFeaturizer, LANGUAGE_MODEL_FEATURIZER_AVAILABLE = conditional_import(
42
+ "rasa.nlu.featurizers.dense_featurizer.lm_featurizer", "LanguageModelFeaturizer"
43
+ )
44
+ ResponseSelector, RESPONSE_SELECTOR_AVAILABLE = conditional_import(
45
+ "rasa.nlu.selectors.response_selector", "ResponseSelector"
46
+ )
47
+
48
+ # components dependent on skops
49
+ LogisticRegressionClassifier, LOGISTIC_REGRESSION_CLASSIFIER_AVAILABLE = (
50
+ conditional_import(
51
+ "rasa.nlu.classifiers.logistic_regression_classifier",
52
+ "LogisticRegressionClassifier",
53
+ )
54
+ )
55
+ SklearnIntentClassifier, SKLEARN_INTENT_CLASSIFIER_AVAILABLE = conditional_import(
56
+ "rasa.nlu.classifiers.sklearn_intent_classifier", "SklearnIntentClassifier"
57
+ )
58
+
59
+ # components dependent on spacy
60
+ LexicalSyntacticFeaturizer, LEXICAL_SYNTACTIC_FEATURIZER_AVAILABLE = conditional_import(
61
+ "rasa.nlu.featurizers.sparse_featurizer.lexical_syntactic_featurizer",
62
+ "LexicalSyntacticFeaturizer",
63
+ )
64
+ SpacyFeaturizer, SPACY_FEATURIZER_AVAILABLE = conditional_import(
65
+ "rasa.nlu.featurizers.dense_featurizer.spacy_featurizer", "SpacyFeaturizer"
66
+ )
67
+ SpacyTokenizer, SPACY_TOKENIZER_AVAILABLE = conditional_import(
68
+ "rasa.nlu.tokenizers.spacy_tokenizer", "SpacyTokenizer"
69
+ )
70
+ SpacyEntityExtractor, SPACY_ENTITY_EXTRACTOR_AVAILABLE = conditional_import(
71
+ "rasa.nlu.extractors.spacy_entity_extractor", "SpacyEntityExtractor"
72
+ )
73
+ SpacyNLP, SPACY_NLP_AVAILABLE = conditional_import(
74
+ "rasa.nlu.utils.spacy_utils", "SpacyNLP"
75
+ )
76
+
77
+ # components dependent on sklearn_crfsuite
78
+ CRFEntityExtractor, CRF_ENTITY_EXTRACTOR_AVAILABLE = conditional_import(
79
+ "rasa.nlu.extractors.crf_entity_extractor", "CRFEntityExtractor"
80
+ )
81
+
82
+ # components dependent on mitie
83
+ MitieFeaturizer, MITIE_FEATURIZER_AVAILABLE = conditional_import(
84
+ "rasa.nlu.featurizers.dense_featurizer.mitie_featurizer", "MitieFeaturizer"
85
+ )
86
+ MitieTokenizer, MITIE_TOKENIZER_AVAILABLE = conditional_import(
87
+ "rasa.nlu.tokenizers.mitie_tokenizer", "MitieTokenizer"
88
+ )
89
+ MitieIntentClassifier, MITIE_INTENT_CLASSIFIER_AVAILABLE = conditional_import(
90
+ "rasa.nlu.classifiers.mitie_intent_classifier", "MitieIntentClassifier"
91
+ )
92
+ MitieEntityExtractor, MITIE_ENTITY_EXTRACTOR_AVAILABLE = conditional_import(
93
+ "rasa.nlu.extractors.mitie_entity_extractor", "MitieEntityExtractor"
94
+ )
95
+ MitieNLP, MITIE_NLP_AVAILABLE = conditional_import(
96
+ "rasa.nlu.utils.mitie_utils", "MitieNLP"
97
+ )
48
98
 
99
+ # components dependent on jieba
100
+ JiebaTokenizer, JIEBA_TOKENIZER_AVAILABLE = conditional_import(
101
+ "rasa.nlu.tokenizers.jieba_tokenizer", "JiebaTokenizer"
102
+ )
103
+
104
+ # Base components that are always available (no external dependencies)
49
105
  DEFAULT_COMPONENTS = [
50
- # Message Classifiers
51
- DIETClassifier,
106
+ # Classifiers
52
107
  FallbackClassifier,
53
108
  KeywordIntentClassifier,
54
- MitieIntentClassifier,
55
- SklearnIntentClassifier,
56
- LogisticRegressionClassifier,
57
109
  NLUCommandAdapter,
58
110
  LLMCommandGenerator,
59
111
  LLMBasedRouter,
60
112
  IntentBasedRouter,
61
- # Response Selectors
62
- ResponseSelector,
63
- # Message Entity Extractors
64
- CRFEntityExtractor,
113
+ # Entity Extractors
65
114
  DucklingEntityExtractor,
66
115
  EntitySynonymMapper,
67
- MitieEntityExtractor,
68
- SpacyEntityExtractor,
69
116
  RegexEntityExtractor,
70
- # Message Feauturizers
71
- LexicalSyntacticFeaturizer,
72
- ConveRTFeaturizer,
73
- MitieFeaturizer,
74
- SpacyFeaturizer,
117
+ # Featurizers
75
118
  CountVectorsFeaturizer,
76
- LanguageModelFeaturizer,
77
119
  RegexFeaturizer,
78
120
  # Tokenizers
79
- JiebaTokenizer,
80
- MitieTokenizer,
81
- SpacyTokenizer,
82
121
  WhitespaceTokenizer,
83
122
  # Language Model Providers
84
- MitieNLP,
85
- SpacyNLP,
86
- # Dialogue Management Policies
87
- TEDPolicy,
88
- UnexpecTEDIntentPolicy,
123
+ # Policies
89
124
  RulePolicy,
90
125
  MemoizationPolicy,
91
126
  AugmentedMemoizationPolicy,
@@ -93,3 +128,57 @@ DEFAULT_COMPONENTS = [
93
128
  EnterpriseSearchPolicy,
94
129
  IntentlessPolicy,
95
130
  ]
131
+
132
+ # Conditionally add components based on dependencies
133
+
134
+ # components dependent on tensorflow
135
+ if DIET_CLASSIFIER_AVAILABLE:
136
+ DEFAULT_COMPONENTS.append(DIETClassifier)
137
+ if CONVERT_FEATURIZER_AVAILABLE:
138
+ DEFAULT_COMPONENTS.append(ConveRTFeaturizer)
139
+ if LANGUAGE_MODEL_FEATURIZER_AVAILABLE:
140
+ DEFAULT_COMPONENTS.append(LanguageModelFeaturizer)
141
+ if RESPONSE_SELECTOR_AVAILABLE:
142
+ DEFAULT_COMPONENTS.append(ResponseSelector)
143
+ if TED_POLICY_AVAILABLE:
144
+ DEFAULT_COMPONENTS.append(TEDPolicy)
145
+ if UNEXPECTED_INTENT_POLICY_AVAILABLE:
146
+ DEFAULT_COMPONENTS.append(UnexpecTEDIntentPolicy)
147
+
148
+ # components dependent on skops
149
+ if LOGISTIC_REGRESSION_CLASSIFIER_AVAILABLE:
150
+ DEFAULT_COMPONENTS.append(LogisticRegressionClassifier)
151
+ if SKLEARN_INTENT_CLASSIFIER_AVAILABLE:
152
+ DEFAULT_COMPONENTS.append(SklearnIntentClassifier)
153
+
154
+ # components dependent on spacy
155
+ if LEXICAL_SYNTACTIC_FEATURIZER_AVAILABLE:
156
+ DEFAULT_COMPONENTS.append(LexicalSyntacticFeaturizer)
157
+ if SPACY_FEATURIZER_AVAILABLE:
158
+ DEFAULT_COMPONENTS.append(SpacyFeaturizer)
159
+ if SPACY_TOKENIZER_AVAILABLE:
160
+ DEFAULT_COMPONENTS.append(SpacyTokenizer)
161
+ if SPACY_ENTITY_EXTRACTOR_AVAILABLE:
162
+ DEFAULT_COMPONENTS.append(SpacyEntityExtractor)
163
+ if SPACY_NLP_AVAILABLE:
164
+ DEFAULT_COMPONENTS.append(SpacyNLP)
165
+
166
+ # components dependent on mitie
167
+ if MITIE_FEATURIZER_AVAILABLE:
168
+ DEFAULT_COMPONENTS.append(MitieFeaturizer)
169
+ if MITIE_TOKENIZER_AVAILABLE:
170
+ DEFAULT_COMPONENTS.append(MitieTokenizer)
171
+ if MITIE_INTENT_CLASSIFIER_AVAILABLE:
172
+ DEFAULT_COMPONENTS.append(MitieIntentClassifier)
173
+ if MITIE_ENTITY_EXTRACTOR_AVAILABLE:
174
+ DEFAULT_COMPONENTS.append(MitieEntityExtractor)
175
+ if MITIE_NLP_AVAILABLE:
176
+ DEFAULT_COMPONENTS.append(MitieNLP)
177
+
178
+ # components dependent on jieba
179
+ if JIEBA_TOKENIZER_AVAILABLE:
180
+ DEFAULT_COMPONENTS.append(JiebaTokenizer)
181
+
182
+ # components dependent on sklearn_crfsuite
183
+ if CRF_ENTITY_EXTRACTOR_AVAILABLE:
184
+ DEFAULT_COMPONENTS.append(CRFEntityExtractor)
@@ -5,6 +5,7 @@ import dataclasses
5
5
  import enum
6
6
  import logging
7
7
  import math
8
+ import sys
8
9
  from enum import Enum
9
10
  from typing import Any, Callable, Dict, List, Optional, Set, Text, Tuple, Type, Union
10
11
 
@@ -180,7 +181,28 @@ class DefaultV1Recipe(Recipe):
180
181
  @classmethod
181
182
  def _from_registry(cls, name: Text) -> RegisteredComponent:
182
183
  # Importing all the default Rasa components will automatically register them
183
- from rasa.engine.recipes.default_components import DEFAULT_COMPONENTS # noqa
184
+ from rasa.engine.recipes.default_components import (
185
+ CONVERT_FEATURIZER_AVAILABLE,
186
+ CRF_ENTITY_EXTRACTOR_AVAILABLE,
187
+ DIET_CLASSIFIER_AVAILABLE,
188
+ JIEBA_TOKENIZER_AVAILABLE,
189
+ LANGUAGE_MODEL_FEATURIZER_AVAILABLE,
190
+ LEXICAL_SYNTACTIC_FEATURIZER_AVAILABLE,
191
+ LOGISTIC_REGRESSION_CLASSIFIER_AVAILABLE,
192
+ MITIE_ENTITY_EXTRACTOR_AVAILABLE,
193
+ MITIE_FEATURIZER_AVAILABLE,
194
+ MITIE_INTENT_CLASSIFIER_AVAILABLE,
195
+ MITIE_NLP_AVAILABLE,
196
+ MITIE_TOKENIZER_AVAILABLE,
197
+ RESPONSE_SELECTOR_AVAILABLE,
198
+ SKLEARN_INTENT_CLASSIFIER_AVAILABLE,
199
+ SPACY_ENTITY_EXTRACTOR_AVAILABLE,
200
+ SPACY_FEATURIZER_AVAILABLE,
201
+ SPACY_NLP_AVAILABLE,
202
+ SPACY_TOKENIZER_AVAILABLE,
203
+ TED_POLICY_AVAILABLE,
204
+ UNEXPECTED_INTENT_POLICY_AVAILABLE,
205
+ )
184
206
 
185
207
  if name in cls._registered_components:
186
208
  return cls._registered_components[name]
@@ -190,6 +212,56 @@ class DefaultV1Recipe(Recipe):
190
212
  if clazz.__name__ in cls._registered_components:
191
213
  return cls._registered_components[clazz.__name__]
192
214
 
215
+ # Check Python version compatibility for TensorFlow components
216
+ # TensorFlow support was removed for Python 3.12+ due to compatibility issues
217
+ if sys.version_info >= (3, 12):
218
+ raise InvalidConfigException(
219
+ f"{name} is not available on Python 3.12+. "
220
+ "TensorFlow support has been removed for Python 3.12+ versions. "
221
+ "Please use Python 3.11 or earlier for TensorFlow-based components. "
222
+ )
223
+
224
+ # Check for nlu components that failed to load
225
+ # because conditional module import of those components did not succeed
226
+ nlu_components = {
227
+ # tensorflow-dependent components
228
+ "DIETClassifier": DIET_CLASSIFIER_AVAILABLE,
229
+ "TEDPolicy": TED_POLICY_AVAILABLE,
230
+ "UnexpecTEDIntentPolicy": UNEXPECTED_INTENT_POLICY_AVAILABLE,
231
+ "ResponseSelector": RESPONSE_SELECTOR_AVAILABLE,
232
+ "ConveRTFeaturizer": CONVERT_FEATURIZER_AVAILABLE,
233
+ "LanguageModelFeaturizer": LANGUAGE_MODEL_FEATURIZER_AVAILABLE,
234
+ # nlu components dependent on other dependencies than tensorflow
235
+ "LogisticRegressionClassifier": LOGISTIC_REGRESSION_CLASSIFIER_AVAILABLE,
236
+ "SklearnIntentClassifier": SKLEARN_INTENT_CLASSIFIER_AVAILABLE,
237
+ "LexicalSyntacticFeaturizer": LEXICAL_SYNTACTIC_FEATURIZER_AVAILABLE,
238
+ "MitieFeaturizer": MITIE_FEATURIZER_AVAILABLE,
239
+ "SpacyFeaturizer": SPACY_FEATURIZER_AVAILABLE,
240
+ "JiebaTokenizer": JIEBA_TOKENIZER_AVAILABLE,
241
+ "MitieTokenizer": MITIE_TOKENIZER_AVAILABLE,
242
+ "SpacyTokenizer": SPACY_TOKENIZER_AVAILABLE,
243
+ "MitieIntentClassifier": MITIE_INTENT_CLASSIFIER_AVAILABLE,
244
+ "MitieEntityExtractor": MITIE_ENTITY_EXTRACTOR_AVAILABLE,
245
+ "SpacyEntityExtractor": SPACY_ENTITY_EXTRACTOR_AVAILABLE,
246
+ "MitieNLP": MITIE_NLP_AVAILABLE,
247
+ "SpacyNLP": SPACY_NLP_AVAILABLE,
248
+ "CRFEntityExtractor": CRF_ENTITY_EXTRACTOR_AVAILABLE,
249
+ }
250
+
251
+ if name in nlu_components:
252
+ # nlu-dependent component failed to load
253
+ # because nlu dependency group not installed
254
+ if not nlu_components[name]:
255
+ from rasa.exceptions import MissingDependencyException
256
+
257
+ raise MissingDependencyException(
258
+ f"The {name} component requires additional dependencies "
259
+ f"which are not installed. "
260
+ f"Please install the required extra by running: "
261
+ f"pip install 'rasa-pro[nlu]' OR "
262
+ f"poetry add 'rasa-pro[nlu]'"
263
+ )
264
+
193
265
  raise InvalidConfigException(
194
266
  f"Can't load class for name '{name}'. Please make sure to provide "
195
267
  f"a valid name or module path and to register it using the "
@@ -485,17 +557,42 @@ class DefaultV1Recipe(Recipe):
485
557
  component: Type[GraphComponent],
486
558
  component_config: Dict[Text, Any],
487
559
  ) -> Dict[Text, Any]:
488
- from rasa.nlu.classifiers.mitie_intent_classifier import MitieIntentClassifier
489
- from rasa.nlu.classifiers.sklearn_intent_classifier import (
490
- SklearnIntentClassifier,
491
- )
492
- from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
560
+ # Try to import MitieIntentClassifier, but handle ImportError gracefully
561
+ # since the dependencies for it may not be installed
562
+ try:
563
+ from rasa.nlu.classifiers.mitie_intent_classifier import (
564
+ MitieIntentClassifier,
565
+ )
566
+ except ImportError:
567
+ MitieIntentClassifier = None # type: ignore
493
568
 
494
- cli_args_mapping: Dict[Type[GraphComponent], List[Text]] = {
495
- MitieIntentClassifier: ["num_threads"],
496
- MitieEntityExtractor: ["num_threads"],
497
- SklearnIntentClassifier: ["num_threads"],
498
- }
569
+ # Try to import MitieEntityExtractor, but handle ImportError gracefully
570
+ # since the dependencies for it may not be installed
571
+ try:
572
+ from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
573
+ except ImportError:
574
+ MitieEntityExtractor = None # type: ignore
575
+
576
+ # Try to import SklearnIntentClassifier, but handle ImportError gracefully
577
+ # since the dependencies for it may not be installed
578
+ try:
579
+ from rasa.nlu.classifiers.sklearn_intent_classifier import (
580
+ SklearnIntentClassifier,
581
+ )
582
+ except ImportError:
583
+ SklearnIntentClassifier = None # type: ignore
584
+
585
+ cli_args_mapping: Dict[Type[GraphComponent], List[Text]] = {}
586
+
587
+ # Only add components if they were successfully imported
588
+ if MitieIntentClassifier is not None:
589
+ cli_args_mapping[MitieIntentClassifier] = ["num_threads"]
590
+
591
+ if MitieEntityExtractor is not None:
592
+ cli_args_mapping[MitieEntityExtractor] = ["num_threads"]
593
+
594
+ if SklearnIntentClassifier is not None:
595
+ cli_args_mapping[SklearnIntentClassifier] = ["num_threads"]
499
596
 
500
597
  config_from_cli = {
501
598
  param: cli_parameters[param]
@@ -1,18 +1,18 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import logging
5
4
  from typing import Any, Dict, List, Optional, Text
6
5
 
7
6
  import dask.core
8
7
  import dask.local
8
+ import structlog
9
9
 
10
10
  from rasa.engine.exceptions import GraphRunError
11
11
  from rasa.engine.graph import ExecutionContext, GraphNode, GraphNodeHook, GraphSchema
12
12
  from rasa.engine.runner.interface import GraphRunner
13
13
  from rasa.engine.storage.storage import ModelStorage
14
14
 
15
- logger = logging.getLogger(__name__)
15
+ structlogger = structlog.get_logger()
16
16
 
17
17
 
18
18
  class DaskGraphRunner(GraphRunner):
@@ -94,9 +94,12 @@ class DaskGraphRunner(GraphRunner):
94
94
  if inputs:
95
95
  self._add_inputs_to_graph(inputs, run_graph)
96
96
 
97
- logger.debug(
98
- f"Running graph with inputs: {inputs}, targets: {targets} "
99
- f"and {self._execution_context}."
97
+ structlogger.debug(
98
+ "rasa.engine.runner.dask.run",
99
+ event_info="Running graph with inputs, targets and execution context.",
100
+ inputs=inputs,
101
+ targets=targets,
102
+ execution_context=self._execution_context,
100
103
  )
101
104
 
102
105
  try:
rasa/engine/validation.py CHANGED
@@ -23,7 +23,8 @@ import structlog
23
23
  import typing_utils
24
24
 
25
25
  import rasa.utils.common
26
- from rasa.core.available_endpoints import AvailableEndpoints
26
+ from rasa.core.config.available_endpoints import AvailableEndpoints
27
+ from rasa.core.config.configuration import Configuration
27
28
  from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
28
29
  from rasa.core.policies.intentless_policy import IntentlessPolicy
29
30
  from rasa.core.policies.policy import PolicyPrediction
@@ -80,6 +81,7 @@ from rasa.shared.constants import (
80
81
  ROUTING_STRATEGIES_NOT_REQUIRING_CACHE,
81
82
  ROUTING_STRATEGIES_REQUIRING_REDIS_CACHE,
82
83
  ROUTING_STRATEGY_CONFIG_KEY,
84
+ SECRET_DATA_FORMAT_PATTERN,
83
85
  SENSITIVE_DATA,
84
86
  USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY,
85
87
  VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY,
@@ -1039,7 +1041,7 @@ def validate_model_client_configuration_setup_during_training_time(
1039
1041
  )
1040
1042
 
1041
1043
  # also include the ContextualResponseRephraser component
1042
- endpoints = AvailableEndpoints.get_instance()
1044
+ endpoints = Configuration.get_instance().endpoints
1043
1045
  if endpoints.nlg is not None:
1044
1046
  _validate_component_model_client_config(
1045
1047
  endpoints.nlg.kwargs,
@@ -1075,7 +1077,7 @@ def validate_model_client_configuration_setup_during_training_time(
1075
1077
  ),
1076
1078
  )
1077
1079
 
1078
- endpoints = AvailableEndpoints.get_instance()
1080
+ endpoints = Configuration.get_instance().endpoints
1079
1081
  if len(model_group_ids) > 0 and endpoints.model_groups is None:
1080
1082
  raise ValidationError(
1081
1083
  code="engine.validation.validate_model_client_configuration_setup"
@@ -1138,7 +1140,7 @@ def _validate_component_model_client_config_has_references_to_endpoints(
1138
1140
  # no llm/embeddings configuration present
1139
1141
  return
1140
1142
 
1141
- endpoints = AvailableEndpoints.get_instance()
1143
+ endpoints = Configuration.get_instance().endpoints
1142
1144
 
1143
1145
  if MODEL_GROUP_CONFIG_KEY in component_config[key]:
1144
1146
  referencing_model_group_id = component_config[key][MODEL_GROUP_CONFIG_KEY]
@@ -1213,7 +1215,7 @@ def validate_model_client_configuration_setup_during_inference_time(
1213
1215
  )
1214
1216
 
1215
1217
  # also include the ContextualResponseRephraser component
1216
- endpoints = AvailableEndpoints.get_instance()
1218
+ endpoints = Configuration.get_instance().endpoints
1217
1219
  if endpoints.nlg is not None:
1218
1220
  _validate_component_model_client_config_has_references_to_endpoints(
1219
1221
  component_config=endpoints.nlg.kwargs,
@@ -1224,6 +1226,12 @@ def validate_model_client_configuration_setup_during_inference_time(
1224
1226
 
1225
1227
  def _validate_unique_model_group_ids(model_groups: List[Dict[str, Any]]) -> None:
1226
1228
  # Each model id must be unique within the model_groups
1229
+ structlogger.debug(
1230
+ "engine.validation.validate_unique_model_group_ids",
1231
+ event_info="Validating that model group IDs are unique.",
1232
+ model_groups=model_groups,
1233
+ )
1234
+
1227
1235
  model_ids = [model_group[MODEL_GROUP_ID_CONFIG_KEY] for model_group in model_groups]
1228
1236
  if len(model_ids) != len(set(model_ids)):
1229
1237
  counts = Counter(model_ids)
@@ -1352,7 +1360,10 @@ def _validate_usage_of_environment_variables_in_model_group_config(
1352
1360
  for model_config in model_group[MODELS_CONFIG_KEY]:
1353
1361
  for key, value in model_config.items():
1354
1362
  if isinstance(value, str):
1355
- if re.match(r"\${(\w+)}", value) and key not in allowed_env_vars:
1363
+ if (
1364
+ re.match(SECRET_DATA_FORMAT_PATTERN, value)
1365
+ and key not in allowed_env_vars
1366
+ ):
1356
1367
  raise ValidationError(
1357
1368
  code="engine.validation.validate_model_group_configuration_setup"
1358
1369
  ".invalid_use_of_environment_variables",
@@ -1379,7 +1390,7 @@ def _validate_sensitive_keys_are_an_environment_variables_for_model_groups(
1379
1390
  for key, value in model_config.items():
1380
1391
  if key in SENSITIVE_DATA:
1381
1392
  if isinstance(value, str):
1382
- if not re.match(r"\${(\w+)}", value):
1393
+ if not re.match(SECRET_DATA_FORMAT_PATTERN, value):
1383
1394
  raise ValidationError(
1384
1395
  code="engine.validation.validate_model_group_configuration_setup"
1385
1396
  ".sensitive_key_string_value_must_be_set_as_env_var",
@@ -1410,11 +1421,17 @@ def _validate_sensitive_keys_are_an_environment_variables_for_model_groups(
1410
1421
 
1411
1422
  def validate_model_group_configuration_setup() -> None:
1412
1423
  """Validates the model group configuration setup in endpoints.yml."""
1413
- endpoints = AvailableEndpoints.get_instance()
1424
+ endpoints = Configuration.get_instance().endpoints
1414
1425
 
1415
1426
  if endpoints.model_groups is None:
1416
1427
  return
1417
1428
 
1429
+ structlogger.debug(
1430
+ "engine.validation.validate_model_group_configuration_setup",
1431
+ event_info="Validating the model group configuration setup.",
1432
+ model_groups=endpoints.model_groups,
1433
+ path=endpoints.config_file_path,
1434
+ )
1418
1435
  _validate_unique_model_group_ids(endpoints.model_groups)
1419
1436
  _validate_model_group_with_multiple_models(endpoints.model_groups)
1420
1437
  _validate_usage_of_environment_variables_in_model_group_config(