rasa-pro 3.14.0.dev6__py3-none-any.whl → 3.14.0.dev8__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 (491) hide show
  1. rasa/agents/agent_manager.py +1 -1
  2. rasa/agents/constants.py +2 -2
  3. rasa/agents/exceptions.py +31 -1
  4. rasa/agents/protocol/a2a/a2a_agent.py +385 -227
  5. rasa/agents/protocol/mcp/mcp_base_agent.py +37 -19
  6. rasa/agents/protocol/mcp/mcp_open_agent.py +31 -8
  7. rasa/agents/protocol/mcp/mcp_task_agent.py +33 -10
  8. rasa/agents/schemas/agent_output.py +1 -1
  9. rasa/agents/utils.py +95 -1
  10. rasa/agents/validation.py +484 -0
  11. rasa/api.py +9 -6
  12. rasa/builder/README.md +120 -0
  13. rasa/builder/__init__.py +0 -0
  14. rasa/builder/auth.py +176 -0
  15. rasa/builder/config.py +92 -0
  16. rasa/builder/copilot/__init__.py +0 -0
  17. rasa/builder/copilot/constants.py +31 -0
  18. rasa/builder/copilot/copilot.py +450 -0
  19. rasa/builder/copilot/copilot_response_handler.py +522 -0
  20. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  21. rasa/builder/copilot/exceptions.py +32 -0
  22. rasa/builder/copilot/models.py +500 -0
  23. rasa/builder/copilot/prompts/__init__.py +0 -0
  24. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +766 -0
  25. rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
  26. rasa/builder/copilot/signing.py +305 -0
  27. rasa/builder/copilot/telemetry.py +210 -0
  28. rasa/builder/copilot/templated_messages/__init__.py +0 -0
  29. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  30. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
  31. rasa/builder/document_retrieval/__init__.py +0 -0
  32. rasa/builder/document_retrieval/constants.py +15 -0
  33. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  34. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  35. rasa/builder/document_retrieval/models.py +62 -0
  36. rasa/builder/download.py +140 -0
  37. rasa/builder/exceptions.py +91 -0
  38. rasa/builder/guardrails/__init__.py +1 -0
  39. rasa/builder/guardrails/constants.py +9 -0
  40. rasa/builder/guardrails/exceptions.py +4 -0
  41. rasa/builder/guardrails/lakera.py +206 -0
  42. rasa/builder/guardrails/models.py +231 -0
  43. rasa/builder/guardrails/store.py +238 -0
  44. rasa/builder/guardrails/utils.py +328 -0
  45. rasa/builder/job_manager.py +87 -0
  46. rasa/builder/jobs.py +282 -0
  47. rasa/builder/llm_service.py +246 -0
  48. rasa/builder/logging_utils.py +265 -0
  49. rasa/builder/main.py +243 -0
  50. rasa/builder/models.py +216 -0
  51. rasa/builder/project_generator.py +458 -0
  52. rasa/builder/project_info.py +72 -0
  53. rasa/builder/scrape_rasa_docs.py +97 -0
  54. rasa/builder/service.py +1345 -0
  55. rasa/builder/shared/tracker_context.py +212 -0
  56. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  57. rasa/builder/template_cache.py +244 -0
  58. rasa/builder/training_service.py +194 -0
  59. rasa/builder/validation_service.py +97 -0
  60. rasa/cli/arguments/train.py +2 -0
  61. rasa/cli/interactive.py +2 -0
  62. rasa/cli/project_templates/basic/README.md +23 -0
  63. rasa/cli/project_templates/basic/actions/__init__ +0 -0
  64. rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
  65. rasa/cli/project_templates/basic/actions/actions.md +10 -0
  66. rasa/cli/project_templates/basic/config.yml +29 -0
  67. rasa/cli/project_templates/basic/credentials.yml +33 -0
  68. rasa/cli/project_templates/basic/data/data.md +9 -0
  69. rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
  70. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  71. rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
  72. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  73. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  74. rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
  75. rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
  76. rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
  77. rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
  78. rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
  79. rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
  80. rasa/cli/project_templates/basic/docs/docs.md +5 -0
  81. rasa/cli/project_templates/basic/docs/template.txt +28 -0
  82. rasa/cli/project_templates/basic/domain/domain.md +8 -0
  83. rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
  84. rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
  85. rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
  86. rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
  87. rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
  88. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
  89. rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
  90. rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
  91. rasa/cli/project_templates/basic/endpoints.yml +67 -0
  92. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  93. rasa/cli/project_templates/default/config.yml +4 -0
  94. rasa/cli/project_templates/default/endpoints.yml +4 -0
  95. rasa/cli/project_templates/finance/README.md +25 -0
  96. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  97. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  98. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  99. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  100. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  101. rasa/cli/project_templates/finance/actions/actions.md +15 -0
  102. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  103. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  104. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  105. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  106. rasa/cli/project_templates/finance/actions/database.py +277 -0
  107. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  108. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  109. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  110. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  111. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  112. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  113. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  114. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  115. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  116. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  117. rasa/cli/project_templates/finance/config.yml +23 -0
  118. rasa/cli/project_templates/finance/credentials.yml +32 -0
  119. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  120. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  121. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  122. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  123. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  124. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  125. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  126. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  127. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  128. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  129. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  130. rasa/cli/project_templates/finance/data/data.md +11 -0
  131. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  132. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  133. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  134. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  135. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  136. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  137. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  138. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  139. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  140. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  141. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  142. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  143. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  144. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  145. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  146. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  147. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  148. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  149. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  150. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  151. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  152. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  153. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  154. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  155. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  156. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  157. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  158. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  159. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  160. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  161. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  162. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  163. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  164. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  165. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  166. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  167. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  168. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  169. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  170. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  171. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  172. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  173. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  174. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  210. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  211. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  212. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  213. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  214. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  215. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  216. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  217. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  218. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  219. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  220. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  221. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  222. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  223. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  224. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  225. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  226. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  227. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  228. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  229. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  230. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  231. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  232. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  233. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  234. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  235. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  236. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  237. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  238. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  239. rasa/cli/project_templates/finance/domain/domain.md +10 -0
  240. rasa/cli/project_templates/finance/domain/general/agent_details.yml +12 -0
  241. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  242. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  243. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  244. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  245. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  246. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  247. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  248. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  249. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  250. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  251. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  252. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  253. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  254. rasa/cli/project_templates/finance/endpoints.yml +66 -0
  255. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  256. rasa/cli/project_templates/telco/README.md +25 -0
  257. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  258. rasa/cli/project_templates/telco/actions/actions.md +12 -0
  259. rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
  260. rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
  261. rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
  262. rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
  263. rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
  264. rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
  265. rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
  266. rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
  267. rasa/cli/project_templates/telco/config.yml +29 -0
  268. rasa/cli/project_templates/telco/credentials.yml +33 -0
  269. rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
  270. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  271. rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
  272. rasa/cli/project_templates/telco/data/data.md +11 -0
  273. rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
  274. rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
  275. rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
  276. rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
  277. rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
  278. rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
  279. rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
  280. rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
  281. rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
  282. rasa/cli/project_templates/telco/docs/docs.md +5 -0
  283. rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
  284. rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
  285. rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
  286. rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
  287. rasa/cli/project_templates/telco/domain/domain.md +14 -0
  288. rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
  289. rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
  290. rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
  291. rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
  292. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
  293. rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
  294. rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
  295. rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
  296. rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
  297. rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +75 -0
  298. rasa/cli/project_templates/telco/domain/shared.yml +129 -0
  299. rasa/cli/project_templates/telco/endpoints.yml +67 -0
  300. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
  301. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
  302. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  303. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
  304. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
  305. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
  306. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  307. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
  308. rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
  309. rasa/cli/project_templates/tutorial/config.yml +2 -1
  310. rasa/cli/scaffold.py +46 -2
  311. rasa/cli/train.py +2 -0
  312. rasa/cli/utils.py +85 -1
  313. rasa/core/actions/action.py +2 -7
  314. rasa/core/available_agents.py +49 -26
  315. rasa/core/available_endpoints.py +17 -2
  316. rasa/core/channels/channel.py +4 -3
  317. rasa/core/channels/constants.py +3 -0
  318. rasa/core/channels/development_inspector.py +2 -22
  319. rasa/core/channels/inspector/README.md +26 -14
  320. rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-edef10dd.js} +1 -1
  321. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-49f6762b.js} +1 -1
  322. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-313c08e6.js} +1 -1
  323. rasa/core/channels/inspector/dist/assets/channel-63aa27d1.js +1 -0
  324. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-35e41ce9.js} +1 -1
  325. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-f346068d.js} +1 -1
  326. rasa/core/channels/inspector/dist/assets/clone-5566bae8.js +1 -0
  327. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-7a44bce8.js} +1 -1
  328. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-d7cf78c7.js} +1 -1
  329. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-9813e81c.js} +1 -1
  330. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-d8ba0870.js} +1 -1
  331. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-51f0db4d.js} +1 -1
  332. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-32936074.js +1 -0
  333. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-ff9ea384.js} +1 -1
  334. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-a8e13b6b.js} +1 -1
  335. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-3b171c6d.js} +1 -1
  336. rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-790ef78b.js} +1 -1
  337. rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-ecdce073.js} +1 -1
  338. rasa/core/channels/inspector/dist/assets/index-d705da80.js +1352 -0
  339. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-f5a422fe.js} +1 -1
  340. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-3185b7ac.js} +1 -1
  341. rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-837fd3aa.js} +1 -1
  342. rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-7e05afcb.js} +1 -1
  343. rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-162eb295.js} +1 -1
  344. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-f4978aee.js} +1 -1
  345. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-b25d0a52.js} +1 -1
  346. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-63db1afa.js} +1 -1
  347. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-1b486cc9.js} +1 -1
  348. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-7e795291.js} +1 -1
  349. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-b8aba159.js} +1 -1
  350. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-41529fd5.js} +1 -1
  351. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-b241043c.js} +1 -1
  352. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-b5b53234.js} +1 -1
  353. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-13d138e5.js} +1 -1
  354. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-94cbde3f.js} +1 -1
  355. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-453ae764.js} +1 -1
  356. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-8dcb88a4.js} +1 -1
  357. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-376af5f0.js} +1 -1
  358. rasa/core/channels/inspector/dist/index.html +2 -2
  359. rasa/core/channels/inspector/index.html +1 -1
  360. rasa/core/channels/inspector/src/App.tsx +42 -44
  361. rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
  362. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  363. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +8 -8
  364. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
  365. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
  366. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +14 -0
  367. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  368. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  369. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  370. rasa/core/channels/inspector/src/types.ts +49 -7
  371. rasa/core/channels/socketio.py +212 -51
  372. rasa/core/channels/studio_chat.py +59 -57
  373. rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
  374. rasa/core/channels/voice_stream/asr/azure.py +6 -3
  375. rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
  376. rasa/core/channels/voice_stream/audiocodes.py +3 -0
  377. rasa/core/channels/voice_stream/browser_audio.py +53 -3
  378. rasa/core/channels/voice_stream/genesys.py +2 -1
  379. rasa/core/channels/voice_stream/jambonz.py +9 -1
  380. rasa/core/channels/voice_stream/twilio_media_streams.py +16 -0
  381. rasa/core/channels/voice_stream/voice_channel.py +66 -3
  382. rasa/core/constants.py +6 -0
  383. rasa/core/iam_credentials_providers/__init__.py +0 -0
  384. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +66 -0
  385. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +89 -0
  386. rasa/core/policies/enterprise_search_policy.py +4 -7
  387. rasa/core/policies/flows/flow_executor.py +66 -36
  388. rasa/core/policies/ted_policy.py +7 -5
  389. rasa/core/processor.py +32 -0
  390. rasa/core/redis_connection_factory.py +411 -0
  391. rasa/core/run.py +13 -3
  392. rasa/core/tracker_stores/redis_tracker_store.py +32 -14
  393. rasa/core/tracker_stores/sql_tracker_store.py +57 -1
  394. rasa/dialogue_understanding/commands/cancel_flow_command.py +2 -81
  395. rasa/dialogue_understanding/commands/start_flow_command.py +18 -113
  396. rasa/dialogue_understanding/commands/utils.py +118 -0
  397. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  398. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +10 -5
  399. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +10 -5
  400. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +20 -12
  401. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +19 -12
  402. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +6 -35
  403. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  404. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  405. rasa/dialogue_understanding/patterns/continue_interrupted.py +185 -114
  406. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +18 -24
  407. rasa/dialogue_understanding/processor/command_processor.py +35 -0
  408. rasa/dialogue_understanding/stack/utils.py +43 -4
  409. rasa/dialogue_understanding/utils.py +24 -4
  410. rasa/engine/graph.py +5 -1
  411. rasa/engine/recipes/default_components.py +78 -10
  412. rasa/engine/recipes/default_recipe.py +41 -1
  413. rasa/engine/storage/local_model_storage.py +83 -3
  414. rasa/graph_components/validators/default_recipe_validator.py +153 -135
  415. rasa/model_manager/model_api.py +4 -5
  416. rasa/model_manager/runner_service.py +1 -1
  417. rasa/model_manager/socket_bridge.py +20 -15
  418. rasa/model_manager/trainer_service.py +12 -9
  419. rasa/model_manager/utils.py +1 -29
  420. rasa/model_manager/warm_rasa_process.py +1 -1
  421. rasa/model_training.py +22 -6
  422. rasa/nlu/classifiers/diet_classifier.py +22 -6
  423. rasa/nlu/classifiers/logistic_regression_classifier.py +18 -0
  424. rasa/nlu/extractors/extractor.py +1 -2
  425. rasa/shared/agents/auth/__init__.py +0 -0
  426. rasa/shared/agents/auth/agent_auth_factory.py +74 -0
  427. rasa/shared/agents/auth/agent_auth_manager.py +86 -0
  428. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  429. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  430. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  431. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  432. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +159 -0
  433. rasa/shared/agents/auth/constants.py +11 -0
  434. rasa/shared/agents/auth/types.py +11 -0
  435. rasa/shared/constants.py +3 -0
  436. rasa/shared/core/constants.py +6 -6
  437. rasa/shared/core/domain.py +58 -11
  438. rasa/shared/core/events.py +2 -0
  439. rasa/shared/core/flows/constants.py +5 -0
  440. rasa/shared/core/flows/flow_step.py +7 -1
  441. rasa/shared/core/flows/flows_list.py +6 -0
  442. rasa/shared/core/flows/steps/call.py +15 -12
  443. rasa/shared/core/flows/validation.py +238 -44
  444. rasa/shared/core/flows/yaml_flows_io.py +15 -6
  445. rasa/shared/core/slots.py +4 -0
  446. rasa/shared/exceptions.py +12 -0
  447. rasa/shared/importers/importer.py +6 -0
  448. rasa/shared/importers/utils.py +77 -1
  449. rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
  450. rasa/shared/providers/_utils.py +60 -44
  451. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  452. rasa/shared/providers/llm/_base_litellm_client.py +2 -2
  453. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  454. rasa/shared/providers/llm/llm_response.py +4 -4
  455. rasa/shared/utils/common.py +24 -0
  456. rasa/shared/utils/health_check/health_check.py +7 -3
  457. rasa/shared/utils/llm.py +2 -1
  458. rasa/shared/utils/mcp/server_connection.py +108 -27
  459. rasa/shared/utils/mcp/utils.py +20 -0
  460. rasa/studio/upload.py +16 -47
  461. rasa/telemetry.py +97 -23
  462. rasa/tracing/config.py +38 -12
  463. rasa/tracing/instrumentation/attribute_extractors.py +5 -1
  464. rasa/tracing/instrumentation/instrumentation.py +85 -8
  465. rasa/utils/common.py +1 -1
  466. rasa/utils/io.py +27 -9
  467. rasa/utils/json_utils.py +6 -1
  468. rasa/utils/log_utils.py +5 -1
  469. rasa/utils/openapi.py +144 -0
  470. rasa/utils/tensorflow/__init__.py +29 -0
  471. rasa/utils/tensorflow/callback.py +1 -1
  472. rasa/utils/tensorflow/crf.py +1 -1
  473. rasa/utils/tensorflow/data_generator.py +21 -8
  474. rasa/utils/tensorflow/layers.py +11 -4
  475. rasa/utils/tensorflow/metrics.py +7 -3
  476. rasa/utils/tensorflow/models.py +41 -6
  477. rasa/utils/tensorflow/rasa_layers.py +6 -4
  478. rasa/utils/tensorflow/transformer.py +2 -3
  479. rasa/utils/train_utils.py +68 -38
  480. rasa/validator.py +18 -16
  481. rasa/version.py +1 -1
  482. rasa_pro-3.14.0.dev8.dist-info/METADATA +199 -0
  483. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/RECORD +486 -173
  484. rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
  485. rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
  486. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
  487. rasa/core/channels/inspector/dist/assets/index-3e293924.js +0 -1353
  488. rasa_pro-3.14.0.dev6.dist-info/METADATA +0 -190
  489. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/NOTICE +0 -0
  490. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/WHEEL +0 -0
  491. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/entry_points.txt +0 -0
@@ -1,7 +1,6 @@
1
1
  from typing import Any, Dict, Optional
2
2
 
3
3
  import tensorflow as tf
4
- from tensorflow.keras import backend as K
5
4
  from tensorflow.types.experimental import TensorLike
6
5
 
7
6
  # original code taken from
@@ -118,7 +117,7 @@ class FBetaScore(tf.keras.metrics.Metric):
118
117
 
119
118
  def _zero_wt_init(name: Any) -> Any:
120
119
  return self.add_weight(
121
- name, shape=self.init_shape, initializer="zeros", dtype=self.dtype
120
+ name=name, shape=self.init_shape, initializer="zeros", dtype=self.dtype
122
121
  )
123
122
 
124
123
  self.true_positives = _zero_wt_init("true_positives")
@@ -197,7 +196,12 @@ class FBetaScore(tf.keras.metrics.Metric):
197
196
 
198
197
  def reset_state(self) -> None:
199
198
  reset_value = tf.zeros(self.init_shape, dtype=self.dtype)
200
- K.batch_set_value([(v, reset_value) for v in self.variables])
199
+ # In Keras 3.x, self.variables contains string names, not variable objects,
200
+ # so each metric variable is reset using assign() instead of K.batch_set_value()
201
+ self.true_positives.assign(reset_value)
202
+ self.false_positives.assign(reset_value)
203
+ self.false_negatives.assign(reset_value)
204
+ self.weights_intermediate.assign(reset_value)
201
205
 
202
206
  def reset_states(self) -> None:
203
207
  # Backwards compatibility alias of `reset_state`. New classes should
@@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
8
8
  import numpy as np
9
9
  import tensorflow as tf
10
10
  from keras import Model
11
- from keras.src.utils import tf_utils
12
11
 
13
12
  import rasa.utils.train_utils
14
13
  from rasa.shared.constants import DIAGNOSTIC_DATA
@@ -78,6 +77,7 @@ class RasaModel(Model):
78
77
 
79
78
  Args:
80
79
  random_seed: set the random seed to get reproducible results
80
+ **kwargs: Additional keyword arguments passed to the parent class
81
81
  """
82
82
  # make sure that keras releases resources from previously trained model
83
83
  tf.keras.backend.clear_session()
@@ -273,7 +273,8 @@ class RasaModel(Model):
273
273
  if self._run_eagerly:
274
274
  # Once we take advantage of TF's distributed training, this is where
275
275
  # scheduled functions will be forced to execute and return actual values.
276
- outputs = tf_utils.sync_to_numpy_or_python_type(self.predict_step(batch_in))
276
+ step_output = self.predict_step(batch_in)
277
+ outputs = self._convert_tensors_to_numpy(step_output)
277
278
  if DIAGNOSTIC_DATA in outputs:
278
279
  outputs[DIAGNOSTIC_DATA] = self._empty_lists_to_none_in_dict(
279
280
  outputs[DIAGNOSTIC_DATA]
@@ -287,9 +288,8 @@ class RasaModel(Model):
287
288
 
288
289
  # Once we take advantage of TF's distributed training, this is where
289
290
  # scheduled functions will be forced to execute and return actual values.
290
- outputs = tf_utils.sync_to_numpy_or_python_type(
291
- self._tf_predict_step(list(batch_in))
292
- )
291
+ step_output = self._tf_predict_step(list(batch_in))
292
+ outputs = self._convert_tensors_to_numpy(step_output)
293
293
  if DIAGNOSTIC_DATA in outputs:
294
294
  outputs[DIAGNOSTIC_DATA] = self._empty_lists_to_none_in_dict(
295
295
  outputs[DIAGNOSTIC_DATA]
@@ -388,6 +388,23 @@ class RasaModel(Model):
388
388
 
389
389
  return {k: _recurse(v) for k, v in input_dict.items()}
390
390
 
391
+ def _convert_tensors_to_numpy(
392
+ self, step_output: Dict[Text, Any]
393
+ ) -> Dict[Text, Any]:
394
+ """Convert TensorFlow tensors to numpy arrays for Keras 3.x compatibility.
395
+
396
+ Replaces the deprecated tf_utils.sync_to_numpy_or_python_type() function.
397
+ Converts tensors (objects with 'numpy' method) to numpy arrays,
398
+ leaves others unchanged.
399
+ """
400
+ outputs = {}
401
+ for key, value in step_output.items():
402
+ if hasattr(value, "numpy"):
403
+ outputs[key] = value.numpy()
404
+ else:
405
+ outputs[key] = value
406
+ return outputs
407
+
391
408
  def _get_metric_results(self, prefix: Optional[Text] = "") -> Dict[Text, float]:
392
409
  return {
393
410
  f"{prefix}{metric.name}": metric.result()
@@ -403,7 +420,18 @@ class RasaModel(Model):
403
420
  overwrite: If 'True' an already existing model with the same file name will
404
421
  be overwritten.
405
422
  """
406
- self.save_weights(model_file_name, overwrite=overwrite, save_format="tf")
423
+ # Ensure filename ends with .weights.h5 and model is built for Keras 3.x
424
+ # compatibility
425
+ model_file_name = str(model_file_name)
426
+ if not model_file_name.endswith(".weights.h5"):
427
+ model_file_name += ".weights.h5"
428
+
429
+ if not self.built:
430
+ import tensorflow as tf
431
+
432
+ _ = self(tf.zeros((1, 1)))
433
+
434
+ self.save_weights(model_file_name, overwrite=overwrite)
407
435
 
408
436
  @classmethod
409
437
  def load(
@@ -444,6 +472,13 @@ class RasaModel(Model):
444
472
  )
445
473
  data_generator = RasaBatchDataGenerator(model_data_example, batch_size=1)
446
474
  model.fit(data_generator, verbose=False)
475
+
476
+ # Ensure model is built before loading weights (Keras 3 compatibility)
477
+ if not model.built:
478
+ # Build the model by calling it on sample data
479
+ sample_batch = next(iter(data_generator))
480
+ _ = model(sample_batch)
481
+
447
482
  # load trained weights
448
483
  model.load_weights(model_file_name)
449
484
 
@@ -301,12 +301,12 @@ class ConcatenateSparseDenseFeatures(RasaCustomLayer):
301
301
  ) -> tf.Tensor:
302
302
  """Turns sparse tensor into dense, possibly adds dropout before and/or after."""
303
303
  if self.SPARSE_DROPOUT in self._tf_layers:
304
- feature = self._tf_layers[self.SPARSE_DROPOUT](feature, training)
304
+ feature = self._tf_layers[self.SPARSE_DROPOUT](feature, training=training)
305
305
 
306
306
  feature = self._tf_layers[self.SPARSE_TO_DENSE](feature)
307
307
 
308
308
  if self.DENSE_DROPOUT in self._tf_layers:
309
- feature = self._tf_layers[self.DENSE_DROPOUT](feature, training)
309
+ feature = self._tf_layers[self.DENSE_DROPOUT](feature, training=training)
310
310
 
311
311
  return feature
312
312
 
@@ -1002,7 +1002,9 @@ class RasaSequenceLayer(RasaCustomLayer):
1002
1002
  ]((sequence_features, sentence_features, sequence_feature_lengths))
1003
1003
 
1004
1004
  # Apply one or more dense layers.
1005
- seq_sent_features = self._tf_layers[self.FFNN](seq_sent_features, training)
1005
+ seq_sent_features = self._tf_layers[self.FFNN](
1006
+ seq_sent_features, training=training
1007
+ )
1006
1008
 
1007
1009
  # If using masked language modeling, mask the transformer inputs and get labels
1008
1010
  # for the masked tokens and a boolean mask. Note that TED does not use MLM loss,
@@ -1031,7 +1033,7 @@ class RasaSequenceLayer(RasaCustomLayer):
1031
1033
  if self._has_transformer:
1032
1034
  mask_padding = 1 - mask_combined_sequence_sentence
1033
1035
  outputs, attention_weights = self._tf_layers[self.TRANSFORMER](
1034
- seq_sent_features_masked, mask_padding, training
1036
+ seq_sent_features_masked, mask_padding, training=training
1035
1037
  )
1036
1038
  outputs = tf.nn.gelu(outputs)
1037
1039
  else:
@@ -2,10 +2,8 @@ from typing import Optional, Text, Tuple, Union
2
2
 
3
3
  import numpy as np
4
4
  import tensorflow as tf
5
-
6
- # TODO: The following is not (yet) available via tf.keras
7
- from keras.src.utils.control_flow_util import smart_cond
8
5
  from tensorflow.keras import backend as K
6
+ from tensorflow.python.keras.utils.control_flow_util import smart_cond
9
7
 
10
8
  from rasa.utils.tensorflow.exceptions import TFLayerConfigException
11
9
  from rasa.utils.tensorflow.layers import RandomlyConnectedDense
@@ -280,6 +278,7 @@ class MultiHeadAttention(tf.keras.layers.Layer):
280
278
  value: A tensor with shape (..., length, depth).
281
279
  pad_mask: Float tensor with shape broadcastable
282
280
  to (..., length, length). Defaults to None.
281
+ training: A tensor
283
282
 
284
283
  Returns:
285
284
  output: A tensor with shape (..., length, depth).
rasa/utils/train_utils.py CHANGED
@@ -11,29 +11,57 @@ from rasa.nlu.constants import NUMBER_OF_SUB_TOKENS
11
11
  from rasa.shared.constants import NEXT_MAJOR_VERSION_FOR_DEPRECATIONS
12
12
  from rasa.shared.exceptions import InvalidConfigException
13
13
  from rasa.shared.nlu.constants import SPLIT_ENTITIES_BY_COMMA
14
- from rasa.utils.tensorflow.callback import RasaModelCheckpoint
15
- from rasa.utils.tensorflow.constants import (
16
- AUTO,
17
- CHECKPOINT_MODEL,
18
- CONSTRAIN_SIMILARITIES,
19
- COSINE,
20
- CROSS_ENTROPY,
21
- EPOCHS,
22
- EVAL_NUM_EPOCHS,
23
- EVAL_NUM_EXAMPLES,
24
- INNER,
25
- LOSS_TYPE,
26
- MARGIN,
27
- MODEL_CONFIDENCE,
28
- RANKING_LENGTH,
29
- RENORMALIZE_CONFIDENCES,
30
- SEQUENCE,
31
- SIMILARITY_TYPE,
32
- SOFTMAX,
33
- TOLERANCE,
34
- )
35
- from rasa.utils.tensorflow.data_generator import RasaBatchDataGenerator
36
- from rasa.utils.tensorflow.model_data import RasaModelData
14
+ from rasa.utils.tensorflow import TENSORFLOW_AVAILABLE
15
+
16
+ # Conditional imports for TensorFlow-dependent modules
17
+ if TENSORFLOW_AVAILABLE:
18
+ from rasa.utils.tensorflow.callback import RasaModelCheckpoint, RasaTrainingLogger
19
+ from rasa.utils.tensorflow.constants import (
20
+ AUTO,
21
+ CHECKPOINT_MODEL,
22
+ CONSTRAIN_SIMILARITIES,
23
+ COSINE,
24
+ CROSS_ENTROPY,
25
+ EPOCHS,
26
+ EVAL_NUM_EPOCHS,
27
+ EVAL_NUM_EXAMPLES,
28
+ INNER,
29
+ LOSS_TYPE,
30
+ MARGIN,
31
+ MODEL_CONFIDENCE,
32
+ RANKING_LENGTH,
33
+ RENORMALIZE_CONFIDENCES,
34
+ SEQUENCE,
35
+ SIMILARITY_TYPE,
36
+ SOFTMAX,
37
+ TOLERANCE,
38
+ )
39
+ from rasa.utils.tensorflow.data_generator import RasaBatchDataGenerator
40
+ from rasa.utils.tensorflow.model_data import RasaModelData
41
+ else:
42
+ # Placeholder values when TensorFlow is not available
43
+ RasaModelCheckpoint = None # type: ignore
44
+ RasaTrainingLogger = None # type: ignore
45
+ RasaBatchDataGenerator = None # type: ignore
46
+ RasaModelData = None # type: ignore
47
+ AUTO = "auto"
48
+ CHECKPOINT_MODEL = "checkpoint_model"
49
+ CONSTRAIN_SIMILARITIES = "constrain_similarities"
50
+ COSINE = "cosine"
51
+ CROSS_ENTROPY = "cross_entropy"
52
+ EPOCHS = "epochs"
53
+ EVAL_NUM_EPOCHS = "eval_num_epochs"
54
+ EVAL_NUM_EXAMPLES = "eval_num_examples"
55
+ INNER = "inner"
56
+ LOSS_TYPE = "loss_type"
57
+ MARGIN = "margin"
58
+ MODEL_CONFIDENCE = "model_confidence"
59
+ RANKING_LENGTH = "ranking_length"
60
+ RENORMALIZE_CONFIDENCES = "renormalize_confidences"
61
+ SEQUENCE = "sequence"
62
+ SIMILARITY_TYPE = "similarity_type"
63
+ SOFTMAX = "softmax"
64
+ TOLERANCE = "tolerance"
37
65
 
38
66
  if TYPE_CHECKING:
39
67
  from tensorflow.keras.callbacks import Callback
@@ -87,7 +115,9 @@ def rank_and_mask(
87
115
 
88
116
 
89
117
  def update_similarity_type(config: Dict[Text, Any]) -> Dict[Text, Any]:
90
- """If SIMILARITY_TYPE is set to 'auto', update the SIMILARITY_TYPE depending
118
+ """Function to update the similarity type in the model configuration.
119
+
120
+ If SIMILARITY_TYPE is set to 'auto', update the SIMILARITY_TYPE depending
91
121
  on the LOSS_TYPE.
92
122
 
93
123
  Args:
@@ -371,20 +401,20 @@ def create_common_callbacks(
371
401
  Returns:
372
402
  A list of callbacks.
373
403
  """
374
- # import tensorflow as tf
375
-
376
- callbacks = []
377
-
378
- # if tensorboard_log_dir:
379
- # callbacks.append(
380
- # tf.keras.callbacks.TensorBoard(
381
- # log_dir=tensorboard_log_dir,
382
- # update_freq=tensorboard_log_level,
383
- # write_graph=True,
384
- # write_images=True,
385
- # histogram_freq=10,
386
- # )
387
- # )
404
+ import tensorflow as tf
405
+
406
+ callbacks = [RasaTrainingLogger(epochs, silent=False)]
407
+
408
+ if tensorboard_log_dir:
409
+ callbacks.append(
410
+ tf.keras.callbacks.TensorBoard(
411
+ log_dir=tensorboard_log_dir,
412
+ update_freq=tensorboard_log_level,
413
+ write_graph=True,
414
+ write_images=True,
415
+ histogram_freq=10,
416
+ )
417
+ )
388
418
 
389
419
  if checkpoint_dir:
390
420
  callbacks.append(RasaModelCheckpoint(checkpoint_dir))
rasa/validator.py CHANGED
@@ -9,7 +9,7 @@ from jinja2 import Template
9
9
  from pypred import Predicate
10
10
  from pypred.ast import CompareOperator, Literal, NegateOperator
11
11
 
12
- # import rasa.core.training.story_conflict
12
+ import rasa.core.training.story_conflict
13
13
  import rasa.shared.nlu.constants
14
14
  import rasa.shared.utils.cli
15
15
  import rasa.shared.utils.io
@@ -60,8 +60,7 @@ from rasa.shared.core.flows.utils import (
60
60
  get_invalid_slot_persistence_config_error_message,
61
61
  warn_deprecated_collect_step_config,
62
62
  )
63
-
64
- # from rasa.shared.core.generator import TrainingDataGenerator
63
+ from rasa.shared.core.generator import TrainingDataGenerator
65
64
  from rasa.shared.core.slot_mappings import CoexistenceSystemType
66
65
  from rasa.shared.core.slots import BooleanSlot, CategoricalSlot, ListSlot, Slot
67
66
  from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
@@ -447,18 +446,17 @@ class Validator:
447
446
  event_info="Story structure validation...",
448
447
  )
449
448
 
450
- # trackers = TrainingDataGenerator(
451
- # self.story_graph,
452
- # domain=self.domain,
453
- # remove_duplicates=False,
454
- # augmentation_factor=0,
455
- # ).generate_story_trackers()
449
+ trackers = TrainingDataGenerator(
450
+ self.story_graph,
451
+ domain=self.domain,
452
+ remove_duplicates=False,
453
+ augmentation_factor=0,
454
+ ).generate_story_trackers()
456
455
 
457
456
  # Create a list of `StoryConflict` objects
458
- # conflicts = rasa.core.training.story_conflict.find_story_conflicts(
459
- # trackers, self.domain, max_history
460
- # )
461
- conflicts = None
457
+ conflicts = rasa.core.training.story_conflict.find_story_conflicts(
458
+ trackers, self.domain, max_history
459
+ )
462
460
 
463
461
  if not conflicts:
464
462
  structlogger.info(
@@ -631,11 +629,14 @@ class Validator:
631
629
  flow_id: str,
632
630
  ) -> bool:
633
631
  """Validates that a collect step can have either an action or an utterance.
632
+
634
633
  Also logs an error if neither an action nor an utterance is defined.
635
634
 
636
635
  Args:
637
636
  collect: the name of the slot to collect
638
637
  all_good: boolean value indicating the validation status
638
+ domain_slots: dictionary of domain slots
639
+ flow_id: the ID of the flow being validated
639
640
 
640
641
  Returns:
641
642
  False, if validation failed, true, otherwise
@@ -684,9 +685,10 @@ class Validator:
684
685
  has_action_defined=has_action_defined,
685
686
  flow=flow_id,
686
687
  event_info=(
687
- f"The collect step '{collect.collect}' has neither an utterance "
688
- f"nor an action defined, or an initial value defined in the domain."
689
- f"You need to define either an utterance or an action."
688
+ f"The collect step '{collect.collect}' has neither a response "
689
+ f"nor an action defined, nor an initial value defined in the "
690
+ f"domain. You can fix this by adding a response named "
691
+ f"'{collect.utter}' used in the collect step."
690
692
  ),
691
693
  )
692
694
  all_good = False
rasa/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  # this file will automatically be changed,
2
2
  # do not add anything but the version number here!
3
- __version__ = "3.14.0.dev6"
3
+ __version__ = "3.14.0.dev8"
@@ -0,0 +1,199 @@
1
+ Metadata-Version: 2.3
2
+ Name: rasa-pro
3
+ Version: 3.14.0.dev8
4
+ Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
5
+ Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
6
+ Author: Rasa Technologies GmbH
7
+ Author-email: hi@rasa.com
8
+ Maintainer: Tom Bocklisch
9
+ Maintainer-email: tom@rasa.com
10
+ Requires-Python: >=3.10.0,<3.14
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Provides-Extra: agents
20
+ Provides-Extra: agents-a2a
21
+ Provides-Extra: agents-mcp
22
+ Provides-Extra: full
23
+ Provides-Extra: gh-release-notes
24
+ Provides-Extra: jieba
25
+ Provides-Extra: pii
26
+ Provides-Extra: psycopg2-binary
27
+ Provides-Extra: qdrant-client
28
+ Provides-Extra: redis
29
+ Provides-Extra: skops
30
+ Provides-Extra: spacy
31
+ Provides-Extra: tensorflow
32
+ Requires-Dist: CacheControl (>=0.14.2,<0.15.0)
33
+ Requires-Dist: PyJWT[crypto] (>=2.8.0,<3.0.0)
34
+ Requires-Dist: SQLAlchemy (>=2.0.42,<2.1.0) ; extra == "full"
35
+ Requires-Dist: a2a-sdk (>=0.3.4,<0.4.0) ; extra == "agents" or extra == "agents-a2a" or extra == "full"
36
+ Requires-Dist: absl-py (>=2.0,<2.1) ; extra == "full"
37
+ Requires-Dist: aio-pika (>=8.2.3,<9.4.4)
38
+ Requires-Dist: aiogram (>=3.22.0,<4.0.0) ; extra == "full"
39
+ Requires-Dist: aiohttp (>=3.10,<3.11)
40
+ Requires-Dist: apscheduler (>=3.10,<3.11)
41
+ Requires-Dist: attrs (>=23.1,<25.0) ; extra == "full"
42
+ Requires-Dist: azure-identity (>=1.24.0,<1.25.0)
43
+ Requires-Dist: azure-storage-blob (>=12.26.0,<12.27.0) ; extra == "full"
44
+ Requires-Dist: boto3 (>=1.40.21,<1.41.0)
45
+ Requires-Dist: certifi (>=2024.07.04) ; extra == "full"
46
+ Requires-Dist: colorama (>=0.4.6,<0.5.0) ; sys_platform == "win32"
47
+ Requires-Dist: colorclass (>=2.2,<2.3) ; extra == "full"
48
+ Requires-Dist: coloredlogs (>=15,<16) ; extra == "full"
49
+ Requires-Dist: colorhash (>=2.0,<2.1.0) ; extra == "full"
50
+ Requires-Dist: confluent-kafka (>=2.11.0,<3.0.0) ; extra == "full"
51
+ Requires-Dist: cryptography (>=45.0.6,<45.1.0) ; extra == "full"
52
+ Requires-Dist: cvg-python-sdk (>=0.5.1,<0.6.0)
53
+ Requires-Dist: dask (>=2024.8.0,<2024.9.0)
54
+ Requires-Dist: demoji (>=1.1.0,<2.0.0)
55
+ Requires-Dist: diskcache (>=5.6.3,<5.7.0)
56
+ Requires-Dist: dnspython (==2.6.1) ; extra == "full"
57
+ Requires-Dist: faiss-cpu (>=1.11.0,<1.12.0)
58
+ Requires-Dist: fbmessenger (>=6.0.0,<6.1.0)
59
+ Requires-Dist: github3.py (>=3.2.0,<3.3.0) ; extra == "gh-release-notes" or extra == "full"
60
+ Requires-Dist: gitpython (>=3.1.41,<3.2.0) ; extra == "full"
61
+ Requires-Dist: gliner (>=0.2.20,<0.3.0) ; extra == "pii" or extra == "full"
62
+ Requires-Dist: google-auth (>=2.40.3,<2.41.0)
63
+ Requires-Dist: google-cloud-storage (>=2.14.0,<2.15.0) ; extra == "full"
64
+ Requires-Dist: hvac (>=2.3.0,<2.4.0)
65
+ Requires-Dist: importlib-metadata (>=8.5.0,<8.6.0)
66
+ Requires-Dist: importlib-resources (>=6.5.2,<7.0.0)
67
+ Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
68
+ Requires-Dist: jinja2 (>=3.1.6,<3.2.0) ; extra == "full"
69
+ Requires-Dist: jsonpatch (>=1.33,<2.0) ; extra == "full"
70
+ Requires-Dist: jsonpickle (>=3.3.0,<3.4)
71
+ Requires-Dist: jsonschema (>=4.22)
72
+ Requires-Dist: langchain (>=0.3.27,<0.4.0)
73
+ Requires-Dist: langchain-community (>=0.3.29,<0.4.0)
74
+ Requires-Dist: langcodes (>=3.5.0,<4.0.0)
75
+ Requires-Dist: litellm (>=1.69.0,<1.70.0)
76
+ Requires-Dist: matplotlib (>=3.9.4,<3.10.0)
77
+ Requires-Dist: mattermostwrapper (>=2.2,<2.3) ; extra == "full"
78
+ Requires-Dist: mcp (>=1.14.0,<1.15.0) ; extra == "agents" or extra == "agents-mcp" or extra == "full"
79
+ Requires-Dist: networkx (>=3.1,<3.2) ; extra == "full"
80
+ Requires-Dist: numpy (>=2.1.3,<2.2.0)
81
+ Requires-Dist: onnxruntime (==1.22.1) ; extra == "pii" or extra == "full"
82
+ Requires-Dist: openai (>=1.68.2,<1.69.0)
83
+ Requires-Dist: openpyxl (>=3.1.5,<4.0.0) ; extra == "full"
84
+ Requires-Dist: opentelemetry-api (>=1.33.0,<1.34.0) ; extra == "full"
85
+ Requires-Dist: opentelemetry-exporter-otlp (>=1.33.0,<1.34.0) ; extra == "full"
86
+ Requires-Dist: opentelemetry-sdk (>=1.33.0,<1.34.0) ; extra == "full"
87
+ Requires-Dist: packaging (>=23.2,<23.3) ; extra == "full"
88
+ Requires-Dist: pep440-version-utils (>=1.1.0,<1.2.0) ; (python_version < "3.13") and (extra == "full")
89
+ Requires-Dist: pluggy (>=1.2.0,<2.0.0) ; extra == "full"
90
+ Requires-Dist: portalocker (>=2.7.0,<3.0.0)
91
+ Requires-Dist: prompt-toolkit (>=3.0.28,<3.0.29) ; extra == "full"
92
+ Requires-Dist: protobuf (>=5.29.5,<5.30.0) ; extra == "full"
93
+ Requires-Dist: psutil (>=5.9.5,<6.0.0)
94
+ Requires-Dist: psycopg2-binary (>=2.9.10,<2.10.0) ; extra == "psycopg2-binary" or extra == "full"
95
+ Requires-Dist: pydot (>=1.4,<1.5) ; extra == "full"
96
+ Requires-Dist: pykwalify (>=1.8,<1.9)
97
+ Requires-Dist: pymilvus (>=2.6.1,<3.0.0)
98
+ Requires-Dist: pymongo (>=4.10.1,<4.11.0)
99
+ Requires-Dist: pypred (>=0.4.0,<0.5.0)
100
+ Requires-Dist: python-dateutil (>=2.8.2,<2.9.0) ; extra == "full"
101
+ Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
102
+ Requires-Dist: python-engineio (>=4.12.2,<4.13.0) ; extra == "full"
103
+ Requires-Dist: python-keycloak (>=5.8.1,<5.9.0)
104
+ Requires-Dist: python-socketio (>=5.13,<6)
105
+ Requires-Dist: pytz (>=2022.7.1,<2023.0) ; extra == "full"
106
+ Requires-Dist: pyyaml (>=6.0.2,<6.1.0) ; extra == "full"
107
+ Requires-Dist: qdrant-client (>=1.9.1,<1.10.0) ; extra == "qdrant-client" or extra == "full"
108
+ Requires-Dist: questionary (>=1.10.0,<2.1.0)
109
+ Requires-Dist: randomname (>=0.2.1,<0.3.0)
110
+ Requires-Dist: rasa-sdk (==3.14.0.dev5)
111
+ Requires-Dist: redis (>=4.6.0,<6.0) ; extra == "redis" or extra == "full"
112
+ Requires-Dist: regex (>=2024.7.24,<2024.8.0)
113
+ Requires-Dist: requests (>=2.32.5,<2.33.0) ; extra == "full"
114
+ Requires-Dist: rich (>=13.4.2,<14.0.0)
115
+ Requires-Dist: rocketchat_API (>=1.32.0,<1.33.0) ; extra == "full"
116
+ Requires-Dist: ruamel.yaml (>=0.17.21,<0.17.22) ; extra == "full"
117
+ Requires-Dist: safetensors (>=0.4.5,<0.5.0)
118
+ Requires-Dist: sanic (>=22.12,<22.13) ; extra == "full"
119
+ Requires-Dist: sanic-cors (>=2.2.0,<2.3.0) ; extra == "full"
120
+ Requires-Dist: sanic-jwt (>=1.8.0,<2.0.0)
121
+ Requires-Dist: sanic-openapi (>=21.12.0,<22.0.0) ; extra == "full"
122
+ Requires-Dist: sanic-routing (>=22.8.0,<23.0.0) ; extra == "full"
123
+ Requires-Dist: scikit-learn (>=1.6.1,<1.7.0) ; extra == "full"
124
+ Requires-Dist: scipy (>=1.13.1,<1.14.0) ; python_version < "3.12"
125
+ Requires-Dist: scipy (>=1.14.0,<1.15.0) ; python_version >= "3.12"
126
+ Requires-Dist: sentencepiece (>=0.1.99,<0.2.0) ; (python_version < "3.12") and (extra == "tensorflow" or extra == "full")
127
+ Requires-Dist: sentry-sdk (>=2.8.0,<3) ; extra == "full"
128
+ Requires-Dist: setuptools (>=78.1.1,<78.2.0) ; extra == "full"
129
+ Requires-Dist: sklearn-crfsuite (>=0.5.0,<0.6.0)
130
+ Requires-Dist: skops (>=0.13.0,<0.14.0) ; extra == "skops" or extra == "full"
131
+ Requires-Dist: slack-sdk (>=3.36.0,<3.37.0)
132
+ Requires-Dist: spacy (>=3.5.4,<4.0.0) ; extra == "spacy" or extra == "full"
133
+ Requires-Dist: structlog (>=25.4.0,<25.5.0)
134
+ Requires-Dist: structlog-sentry (>=2.0.3,<2.1.0)
135
+ Requires-Dist: tarsafe (>=0.0.5,<0.0.6)
136
+ Requires-Dist: tenacity (>=8.4.1,<8.5.0) ; extra == "full"
137
+ Requires-Dist: tensorflow (>=2.19.0,<3.0.0) ; (python_version < "3.12") and (extra == "tensorflow" or extra == "full")
138
+ Requires-Dist: tensorflow-hub (>=0.13.0,<0.14.0) ; (python_version < "3.12") and (extra == "tensorflow" or extra == "full")
139
+ Requires-Dist: tensorflow-io-gcs-filesystem (==0.31) ; (sys_platform == "win32" and python_version < "3.12") and (extra == "tensorflow" or extra == "full")
140
+ Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; (sys_platform == "darwin" and platform_machine != "arm64" and python_version < "3.12") and (extra == "tensorflow" or extra == "full")
141
+ Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; (sys_platform == "linux" and python_version < "3.12") and (extra == "tensorflow" or extra == "full")
142
+ Requires-Dist: tensorflow-metal (>=1.2.0,<2.0.0) ; (sys_platform == "darwin" and platform_machine == "arm64" and python_version < "3.12") and (extra == "tensorflow" or extra == "full")
143
+ Requires-Dist: tensorflow-text (>=2.19.0,<3.0.0) ; (sys_platform != "win32" and platform_machine != "arm64" and platform_machine != "aarch64" and python_version < "3.12") and (extra == "tensorflow" or extra == "full")
144
+ Requires-Dist: terminaltables (>=3.1.10,<3.2.0)
145
+ Requires-Dist: tf-keras (>=2.15.0,<3.0.0) ; (python_version < "3.12") and (extra == "tensorflow" or extra == "full")
146
+ Requires-Dist: tiktoken (>=0.9.0,<0.10.0)
147
+ Requires-Dist: tqdm (>=4.66.2,<5.0.0) ; extra == "full"
148
+ Requires-Dist: transformers (>=4.38.2,<4.39.0) ; extra == "tensorflow" or extra == "full"
149
+ Requires-Dist: twilio (>=9.7.2,<9.8.0)
150
+ Requires-Dist: types-protobuf (==4.25.0.20240417) ; extra == "full"
151
+ Requires-Dist: typing-extensions (>=4.7.1,<5.0.0) ; extra == "full"
152
+ Requires-Dist: typing-utils (>=0.1.0,<0.2.0)
153
+ Requires-Dist: ujson (>=5.8,<6.0) ; extra == "full"
154
+ Requires-Dist: webexteamssdk (>=1.6.1,<1.7.0)
155
+ Requires-Dist: websockets (>=10.4,<11.0) ; extra == "full"
156
+ Requires-Dist: werkzeug (>=3.0.0,<3.1.0)
157
+ Requires-Dist: wheel (>=0.40.0) ; extra == "full"
158
+ Project-URL: Documentation, https://rasa.com/docs
159
+ Project-URL: Homepage, https://rasa.com
160
+ Project-URL: Repository, https://github.com/rasahq/rasa
161
+ Description-Content-Type: text/markdown
162
+
163
+ <h1 align="center">Rasa</h1>
164
+
165
+ <div align="center">
166
+
167
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=RasaHQ_rasa&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=RasaHQ_rasa)
168
+ [![Documentation Status](https://img.shields.io/badge/docs-stable-brightgreen.svg)](https://rasa.com/docs/docs/pro/intro)
169
+ ![Python version support](https://img.shields.io/pypi/pyversions/rasa-pro)
170
+
171
+ </div>
172
+
173
+ <hr />
174
+
175
+ Rasa is a framework for building scalable, dynamic conversational AI assistants that integrate large language models (LLMs) to enable more contextually aware and agentic interactions. Whether you’re new to conversational AI or an experienced developer, Rasa offers enhanced flexibility, control, and performance for mission-critical applications.
176
+
177
+ **Key Features:**
178
+
179
+ - **Flows for Business Logic:** Easily define business logic through Flows, a simplified way to describe how your AI assistant should handle conversations. Flows help streamline the development process, focusing on key tasks and reducing the complexity involved in managing conversations.
180
+ - **Automatic Conversation Repair:** Ensure seamless interactions by automatically handling interruptions or unexpected inputs. Developers have full control to customize these repairs based on specific use cases.
181
+ - **Customizable and Open:** Fully customizable code that allows developers to modify Rasa to meet specific requirements, ensuring flexibility and adaptability to various conversational AI needs.
182
+ - **Robustness and Control:** Maintain strict adherence to business logic, preventing unwanted behaviors like prompt injection and hallucinations, leading to more reliable responses and secure interactions.
183
+ - **Built-in Security:** Safeguard sensitive data, control access, and ensure secure deployment, essential for production environments that demand high levels of security and compliance.
184
+
185
+ A [free developer license](https://rasa.com/docs/pro/intro/#who-rasa-pro-is-for) is available so you can explore and get to know Rasa. It allows you to take your assistant live in production a limited capacity. A paid license is required for larger-scale production use, but all code is visible and can be customized as needed.
186
+
187
+ To get started right now, you can
188
+
189
+ `pip install rasa-pro`
190
+
191
+ Check out our
192
+
193
+ - [Rasa Quickstart](https://rasa.com/docs/learn/quickstart/pro),
194
+ - [Conversational AI with Language Models (CALM) conceptual rundown](https://rasa.com/docs/learn/concepts/calm),
195
+ - [Rasa tutorial](https://rasa.com/docs/pro/tutorial), and
196
+ - [Changelog](https://rasa.com/docs/reference/changelogs/rasa-pro-changelog)
197
+
198
+ for more. Also feel free to reach out to us on the [Rasa forum](https://forum.rasa.com/).
199
+