rasa-pro 3.14.0.dev7__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 (471) hide show
  1. rasa/agents/agent_manager.py +1 -1
  2. rasa/agents/constants.py +2 -2
  3. rasa/agents/protocol/a2a/a2a_agent.py +385 -227
  4. rasa/agents/protocol/mcp/mcp_base_agent.py +30 -13
  5. rasa/agents/protocol/mcp/mcp_open_agent.py +31 -8
  6. rasa/agents/protocol/mcp/mcp_task_agent.py +32 -9
  7. rasa/agents/schemas/agent_output.py +1 -1
  8. rasa/agents/utils.py +90 -1
  9. rasa/builder/README.md +120 -0
  10. rasa/builder/__init__.py +0 -0
  11. rasa/builder/auth.py +176 -0
  12. rasa/builder/config.py +92 -0
  13. rasa/builder/copilot/__init__.py +0 -0
  14. rasa/builder/copilot/constants.py +31 -0
  15. rasa/builder/copilot/copilot.py +450 -0
  16. rasa/builder/copilot/copilot_response_handler.py +522 -0
  17. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  18. rasa/builder/copilot/exceptions.py +32 -0
  19. rasa/builder/copilot/models.py +500 -0
  20. rasa/builder/copilot/prompts/__init__.py +0 -0
  21. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +766 -0
  22. rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
  23. rasa/builder/copilot/signing.py +305 -0
  24. rasa/builder/copilot/telemetry.py +210 -0
  25. rasa/builder/copilot/templated_messages/__init__.py +0 -0
  26. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  27. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
  28. rasa/builder/document_retrieval/__init__.py +0 -0
  29. rasa/builder/document_retrieval/constants.py +15 -0
  30. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  31. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  32. rasa/builder/document_retrieval/models.py +62 -0
  33. rasa/builder/download.py +140 -0
  34. rasa/builder/exceptions.py +91 -0
  35. rasa/builder/guardrails/__init__.py +1 -0
  36. rasa/builder/guardrails/constants.py +9 -0
  37. rasa/builder/guardrails/exceptions.py +4 -0
  38. rasa/builder/guardrails/lakera.py +206 -0
  39. rasa/builder/guardrails/models.py +231 -0
  40. rasa/builder/guardrails/store.py +238 -0
  41. rasa/builder/guardrails/utils.py +328 -0
  42. rasa/builder/job_manager.py +87 -0
  43. rasa/builder/jobs.py +282 -0
  44. rasa/builder/llm_service.py +246 -0
  45. rasa/builder/logging_utils.py +265 -0
  46. rasa/builder/main.py +243 -0
  47. rasa/builder/models.py +216 -0
  48. rasa/builder/project_generator.py +458 -0
  49. rasa/builder/project_info.py +72 -0
  50. rasa/builder/scrape_rasa_docs.py +97 -0
  51. rasa/builder/service.py +1345 -0
  52. rasa/builder/shared/tracker_context.py +212 -0
  53. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  54. rasa/builder/template_cache.py +244 -0
  55. rasa/builder/training_service.py +194 -0
  56. rasa/builder/validation_service.py +97 -0
  57. rasa/cli/project_templates/basic/README.md +23 -0
  58. rasa/cli/project_templates/basic/actions/__init__ +0 -0
  59. rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
  60. rasa/cli/project_templates/basic/actions/actions.md +10 -0
  61. rasa/cli/project_templates/basic/config.yml +29 -0
  62. rasa/cli/project_templates/basic/credentials.yml +33 -0
  63. rasa/cli/project_templates/basic/data/data.md +9 -0
  64. rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
  65. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  66. rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
  67. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  68. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  69. rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
  70. rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
  71. rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
  72. rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
  73. rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
  74. rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
  75. rasa/cli/project_templates/basic/docs/docs.md +5 -0
  76. rasa/cli/project_templates/basic/docs/template.txt +28 -0
  77. rasa/cli/project_templates/basic/domain/domain.md +8 -0
  78. rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
  79. rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
  80. rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
  81. rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
  82. rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
  83. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
  84. rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
  85. rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
  86. rasa/cli/project_templates/basic/endpoints.yml +67 -0
  87. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  88. rasa/cli/project_templates/default/config.yml +4 -0
  89. rasa/cli/project_templates/default/endpoints.yml +4 -0
  90. rasa/cli/project_templates/finance/README.md +25 -0
  91. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  92. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  93. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  94. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  95. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  96. rasa/cli/project_templates/finance/actions/actions.md +15 -0
  97. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  98. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  99. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  100. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  101. rasa/cli/project_templates/finance/actions/database.py +277 -0
  102. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  103. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  104. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  105. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  106. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  107. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  108. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  109. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  110. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  111. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  112. rasa/cli/project_templates/finance/config.yml +23 -0
  113. rasa/cli/project_templates/finance/credentials.yml +32 -0
  114. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  115. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  116. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  117. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  118. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  119. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  120. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  121. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  122. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  123. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  124. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  125. rasa/cli/project_templates/finance/data/data.md +11 -0
  126. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  127. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  128. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  129. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  130. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  131. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  132. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  133. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  134. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  135. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  136. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  137. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  138. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  139. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  140. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  141. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  142. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  143. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  144. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  145. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  146. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  147. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  148. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  149. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  150. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  151. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  152. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  153. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  154. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  155. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  156. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  157. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  158. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  159. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  160. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  161. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  162. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  163. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  164. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  165. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  166. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  167. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  168. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  169. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  170. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  171. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  172. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  173. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  174. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  210. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  211. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  212. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  213. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  214. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  215. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  216. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  217. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  218. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  219. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  220. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  221. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  222. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  223. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  224. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  225. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  226. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  227. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  228. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  229. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  230. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  231. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  232. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  233. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  234. rasa/cli/project_templates/finance/domain/domain.md +10 -0
  235. rasa/cli/project_templates/finance/domain/general/agent_details.yml +12 -0
  236. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  237. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  238. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  239. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  240. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  241. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  242. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  243. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  244. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  245. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  246. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  247. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  248. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  249. rasa/cli/project_templates/finance/endpoints.yml +66 -0
  250. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  251. rasa/cli/project_templates/telco/README.md +25 -0
  252. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  253. rasa/cli/project_templates/telco/actions/actions.md +12 -0
  254. rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
  255. rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
  256. rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
  257. rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
  258. rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
  259. rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
  260. rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
  261. rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
  262. rasa/cli/project_templates/telco/config.yml +29 -0
  263. rasa/cli/project_templates/telco/credentials.yml +33 -0
  264. rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
  265. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  266. rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
  267. rasa/cli/project_templates/telco/data/data.md +11 -0
  268. rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
  269. rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
  270. rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
  271. rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
  272. rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
  273. rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
  274. rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
  275. rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
  276. rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
  277. rasa/cli/project_templates/telco/docs/docs.md +5 -0
  278. rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
  279. rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
  280. rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
  281. rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
  282. rasa/cli/project_templates/telco/domain/domain.md +14 -0
  283. rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
  284. rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
  285. rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
  286. rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
  287. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
  288. rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
  289. rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
  290. rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
  291. rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
  292. rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +75 -0
  293. rasa/cli/project_templates/telco/domain/shared.yml +129 -0
  294. rasa/cli/project_templates/telco/endpoints.yml +67 -0
  295. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
  296. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
  297. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  298. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
  299. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
  300. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
  301. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  302. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
  303. rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
  304. rasa/cli/project_templates/tutorial/config.yml +2 -1
  305. rasa/cli/scaffold.py +46 -2
  306. rasa/core/actions/action.py +0 -1
  307. rasa/core/available_agents.py +2 -0
  308. rasa/core/available_endpoints.py +17 -2
  309. rasa/core/channels/channel.py +4 -3
  310. rasa/core/channels/constants.py +3 -0
  311. rasa/core/channels/development_inspector.py +2 -22
  312. rasa/core/channels/inspector/README.md +26 -14
  313. rasa/core/channels/inspector/dist/assets/{arc-cce7e0a8.js β†’ arc-edef10dd.js} +1 -1
  314. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-e2a49be7.js β†’ blockDiagram-38ab4fdb-49f6762b.js} +1 -1
  315. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-3def7895.js β†’ c4Diagram-3d4e48cf-313c08e6.js} +1 -1
  316. rasa/core/channels/inspector/dist/assets/channel-63aa27d1.js +1 -0
  317. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-e66fe4df.js β†’ classDiagram-70f12bd4-35e41ce9.js} +1 -1
  318. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-eb874aaa.js β†’ classDiagram-v2-f2320105-f346068d.js} +1 -1
  319. rasa/core/channels/inspector/dist/assets/clone-5566bae8.js +1 -0
  320. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-cf934643.js β†’ createText-2e5e7dd3-7a44bce8.js} +1 -1
  321. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-8fdf9155.js β†’ edges-e0da2a9e-d7cf78c7.js} +1 -1
  322. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-6106fb96.js β†’ erDiagram-9861fffd-9813e81c.js} +1 -1
  323. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-4c2bb040.js β†’ flowDb-956e92f1-d8ba0870.js} +1 -1
  324. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f0ff96af.js β†’ flowDiagram-66a62f08-51f0db4d.js} +1 -1
  325. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-32936074.js +1 -0
  326. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-a21707ec.js β†’ flowchart-elk-definition-4a651766-ff9ea384.js} +1 -1
  327. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-c165acb1.js β†’ ganttDiagram-c361ad54-a8e13b6b.js} +1 -1
  328. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-b0564cf1.js β†’ gitGraphDiagram-72cf32ee-3b171c6d.js} +1 -1
  329. rasa/core/channels/inspector/dist/assets/{graph-e557e67a.js β†’ graph-790ef78b.js} +1 -1
  330. rasa/core/channels/inspector/dist/assets/{index-3862675e-1ce60e9e.js β†’ index-3862675e-ecdce073.js} +1 -1
  331. rasa/core/channels/inspector/dist/assets/index-d705da80.js +1352 -0
  332. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-893569e2.js β†’ infoDiagram-f8f76790-f5a422fe.js} +1 -1
  333. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c29c864f.js β†’ journeyDiagram-49397b02-3185b7ac.js} +1 -1
  334. rasa/core/channels/inspector/dist/assets/{layout-649a5eae.js β†’ layout-837fd3aa.js} +1 -1
  335. rasa/core/channels/inspector/dist/assets/{line-0e5685ed.js β†’ line-7e05afcb.js} +1 -1
  336. rasa/core/channels/inspector/dist/assets/{linear-eaa320bd.js β†’ linear-162eb295.js} +1 -1
  337. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-f35df9e6.js β†’ mindmap-definition-fc14e90a-f4978aee.js} +1 -1
  338. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78339e96.js β†’ pieDiagram-8a3498a8-b25d0a52.js} +1 -1
  339. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-9b5f2f14.js β†’ quadrantDiagram-120e2f19-63db1afa.js} +1 -1
  340. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-d05ddb3a.js β†’ requirementDiagram-deff3bca-1b486cc9.js} +1 -1
  341. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-d9be5dfd.js β†’ sankeyDiagram-04a897e0-7e795291.js} +1 -1
  342. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0f1c4348.js β†’ sequenceDiagram-704730f1-b8aba159.js} +1 -1
  343. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-9ddf63b3.js β†’ stateDiagram-587899a1-41529fd5.js} +1 -1
  344. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-bc2b81ed.js β†’ stateDiagram-v2-d93cdb3a-b241043c.js} +1 -1
  345. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-0a287936.js β†’ styles-6aaf32cf-b5b53234.js} +1 -1
  346. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-e3941990.js β†’ styles-9a916d00-13d138e5.js} +1 -1
  347. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-ce4eca24.js β†’ styles-c10674c1-94cbde3f.js} +1 -1
  348. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d822b1a8.js β†’ svgDrawCommon-08f97a94-453ae764.js} +1 -1
  349. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e144c7a7.js β†’ timeline-definition-85554ec2-8dcb88a4.js} +1 -1
  350. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-ab7f4e14.js β†’ xychartDiagram-e933f94c-376af5f0.js} +1 -1
  351. rasa/core/channels/inspector/dist/index.html +2 -2
  352. rasa/core/channels/inspector/index.html +1 -1
  353. rasa/core/channels/inspector/src/App.tsx +16 -42
  354. rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
  355. rasa/core/channels/inspector/src/components/DialogueHistoryStack.tsx +1 -0
  356. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
  357. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
  358. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +14 -0
  359. rasa/core/channels/inspector/src/types.ts +32 -7
  360. rasa/core/channels/socketio.py +212 -51
  361. rasa/core/channels/studio_chat.py +59 -57
  362. rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
  363. rasa/core/channels/voice_stream/asr/azure.py +6 -3
  364. rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
  365. rasa/core/channels/voice_stream/audiocodes.py +3 -0
  366. rasa/core/channels/voice_stream/browser_audio.py +53 -3
  367. rasa/core/channels/voice_stream/genesys.py +2 -1
  368. rasa/core/channels/voice_stream/jambonz.py +9 -1
  369. rasa/core/channels/voice_stream/twilio_media_streams.py +16 -0
  370. rasa/core/channels/voice_stream/voice_channel.py +66 -3
  371. rasa/core/constants.py +6 -0
  372. rasa/core/iam_credentials_providers/__init__.py +0 -0
  373. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +66 -0
  374. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +89 -0
  375. rasa/core/policies/enterprise_search_policy.py +4 -7
  376. rasa/core/policies/flows/flow_executor.py +14 -5
  377. rasa/core/policies/ted_policy.py +7 -5
  378. rasa/core/processor.py +32 -0
  379. rasa/core/redis_connection_factory.py +411 -0
  380. rasa/core/run.py +13 -3
  381. rasa/core/tracker_stores/redis_tracker_store.py +32 -14
  382. rasa/core/tracker_stores/sql_tracker_store.py +57 -1
  383. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  384. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +10 -5
  385. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +10 -5
  386. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +20 -12
  387. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +19 -12
  388. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +6 -35
  389. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  390. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +1 -1
  391. rasa/dialogue_understanding/processor/command_processor.py +35 -0
  392. rasa/engine/graph.py +5 -1
  393. rasa/engine/recipes/default_components.py +78 -10
  394. rasa/engine/recipes/default_recipe.py +41 -1
  395. rasa/engine/storage/local_model_storage.py +83 -3
  396. rasa/graph_components/validators/default_recipe_validator.py +153 -135
  397. rasa/model_manager/model_api.py +4 -5
  398. rasa/model_manager/runner_service.py +1 -1
  399. rasa/model_manager/socket_bridge.py +20 -15
  400. rasa/model_manager/trainer_service.py +12 -9
  401. rasa/model_manager/utils.py +1 -29
  402. rasa/model_manager/warm_rasa_process.py +1 -1
  403. rasa/model_training.py +14 -0
  404. rasa/nlu/classifiers/diet_classifier.py +22 -6
  405. rasa/nlu/classifiers/logistic_regression_classifier.py +18 -0
  406. rasa/nlu/extractors/extractor.py +1 -2
  407. rasa/shared/agents/auth/__init__.py +0 -0
  408. rasa/shared/agents/auth/agent_auth_factory.py +74 -0
  409. rasa/shared/agents/auth/agent_auth_manager.py +86 -0
  410. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  411. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  412. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  413. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  414. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +159 -0
  415. rasa/shared/agents/auth/constants.py +11 -0
  416. rasa/shared/agents/auth/types.py +11 -0
  417. rasa/shared/core/constants.py +1 -0
  418. rasa/shared/core/domain.py +58 -11
  419. rasa/shared/core/events.py +2 -0
  420. rasa/shared/core/flows/constants.py +5 -0
  421. rasa/shared/core/flows/flow_step.py +7 -1
  422. rasa/shared/core/flows/flows_list.py +6 -0
  423. rasa/shared/core/flows/steps/call.py +15 -12
  424. rasa/shared/core/flows/validation.py +238 -44
  425. rasa/shared/core/flows/yaml_flows_io.py +15 -6
  426. rasa/shared/core/slots.py +4 -0
  427. rasa/shared/exceptions.py +12 -0
  428. rasa/shared/importers/importer.py +6 -0
  429. rasa/shared/importers/utils.py +77 -1
  430. rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
  431. rasa/shared/providers/_utils.py +60 -44
  432. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  433. rasa/shared/providers/llm/_base_litellm_client.py +2 -2
  434. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  435. rasa/shared/providers/llm/llm_response.py +4 -4
  436. rasa/shared/utils/common.py +24 -0
  437. rasa/shared/utils/llm.py +2 -1
  438. rasa/shared/utils/mcp/server_connection.py +84 -23
  439. rasa/shared/utils/mcp/utils.py +20 -0
  440. rasa/studio/upload.py +16 -47
  441. rasa/telemetry.py +97 -23
  442. rasa/tracing/config.py +38 -12
  443. rasa/tracing/instrumentation/attribute_extractors.py +5 -1
  444. rasa/tracing/instrumentation/instrumentation.py +85 -8
  445. rasa/utils/common.py +1 -1
  446. rasa/utils/io.py +27 -9
  447. rasa/utils/json_utils.py +6 -1
  448. rasa/utils/log_utils.py +5 -1
  449. rasa/utils/openapi.py +144 -0
  450. rasa/utils/tensorflow/__init__.py +29 -0
  451. rasa/utils/tensorflow/callback.py +1 -1
  452. rasa/utils/tensorflow/crf.py +1 -1
  453. rasa/utils/tensorflow/data_generator.py +21 -8
  454. rasa/utils/tensorflow/layers.py +11 -4
  455. rasa/utils/tensorflow/metrics.py +7 -3
  456. rasa/utils/tensorflow/models.py +41 -6
  457. rasa/utils/tensorflow/rasa_layers.py +6 -4
  458. rasa/utils/tensorflow/transformer.py +2 -3
  459. rasa/utils/train_utils.py +68 -38
  460. rasa/validator.py +18 -16
  461. rasa/version.py +1 -1
  462. rasa_pro-3.14.0.dev8.dist-info/METADATA +199 -0
  463. {rasa_pro-3.14.0.dev7.dist-info β†’ rasa_pro-3.14.0.dev8.dist-info}/RECORD +466 -156
  464. rasa/core/channels/inspector/dist/assets/channel-858c2c20.js +0 -1
  465. rasa/core/channels/inspector/dist/assets/clone-4b80996c.js +0 -1
  466. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-16f09b7a.js +0 -1
  467. rasa/core/channels/inspector/dist/assets/index-996fe816.js +0 -1353
  468. rasa_pro-3.14.0.dev7.dist-info/METADATA +0 -190
  469. {rasa_pro-3.14.0.dev7.dist-info β†’ rasa_pro-3.14.0.dev8.dist-info}/NOTICE +0 -0
  470. {rasa_pro-3.14.0.dev7.dist-info β†’ rasa_pro-3.14.0.dev8.dist-info}/WHEEL +0 -0
  471. {rasa_pro-3.14.0.dev7.dist-info β†’ rasa_pro-3.14.0.dev8.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,194 @@
1
+ """Functions for training and loading Rasa models."""
2
+
3
+ import os
4
+ from pathlib import Path
5
+ from typing import Optional
6
+
7
+ import structlog
8
+ from sanic import Sanic
9
+
10
+ from rasa.builder.exceptions import AgentLoadError, TrainingError
11
+ from rasa.builder.models import TrainingInput
12
+ from rasa.core.agent import Agent, load_agent
13
+ from rasa.core.channels.studio_chat import StudioChatInput
14
+ from rasa.core.utils import AvailableEndpoints, read_endpoints_from_path
15
+ from rasa.model import get_latest_model
16
+ from rasa.model_training import TrainingResult, train
17
+ from rasa.shared.importers.importer import TrainingDataImporter
18
+
19
+ structlogger = structlog.get_logger()
20
+
21
+
22
+ def update_agent(agent: Optional[Agent], app: Sanic) -> None:
23
+ """Update the agent in the request context."""
24
+ app.ctx.agent = agent
25
+ if hasattr(app.ctx, "input_channel") and isinstance(
26
+ app.ctx.input_channel, StudioChatInput
27
+ ):
28
+ app.ctx.input_channel.agent = agent
29
+
30
+
31
+ async def train_and_load_agent(input: TrainingInput) -> Agent:
32
+ """Train a model and load an agent.
33
+
34
+ Args:
35
+ input: Training input with importer and endpoints file
36
+
37
+ Returns:
38
+ Loaded and ready agent
39
+
40
+ Raises:
41
+ TrainingError: If training fails
42
+ AgentLoadError: If agent loading fails
43
+ """
44
+ try:
45
+ # Setup endpoints for training validation
46
+ await _setup_endpoints(input.endpoints_file)
47
+
48
+ # Train the model
49
+ training_result = await _train_model(input.importer)
50
+
51
+ # Load the agent
52
+ agent_instance = await _load_agent(training_result.model)
53
+
54
+ # Verify agent is ready
55
+ if not agent_instance.is_ready():
56
+ raise AgentLoadError("Agent failed to load properly - model is not ready")
57
+
58
+ structlogger.info("training.agent_ready", model_path=training_result.model)
59
+
60
+ return agent_instance
61
+
62
+ except (TrainingError, AgentLoadError):
63
+ raise
64
+ except Exception as e:
65
+ raise TrainingError(f"Unexpected error during training: {e}")
66
+ except SystemExit as e:
67
+ raise TrainingError(f"SystemExit during training: {e}")
68
+
69
+
70
+ async def try_load_existing_agent(project_folder: str) -> Optional[Agent]:
71
+ """Try to load an existing agent from the project's models directory.
72
+
73
+ Args:
74
+ project_folder: Path to the project folder
75
+
76
+ Returns:
77
+ Loaded Agent instance if successful, None otherwise
78
+ """
79
+ models_dir = os.path.join(project_folder, "models")
80
+
81
+ if not os.path.exists(models_dir) or not os.path.isdir(models_dir):
82
+ structlogger.debug("No models directory found", models_dir=models_dir)
83
+ return None
84
+
85
+ try:
86
+ # Find the latest model in the models directory
87
+ latest_model_path = get_latest_model(models_dir)
88
+ if not latest_model_path:
89
+ structlogger.debug(
90
+ "No models found in models directory", models_dir=models_dir
91
+ )
92
+ return None
93
+
94
+ structlogger.info(
95
+ "Found existing model, attempting to load", model_path=latest_model_path
96
+ )
97
+
98
+ # Get available endpoints for agent loading
99
+ available_endpoints = AvailableEndpoints.get_instance()
100
+
101
+ # Load the agent
102
+ agent = await load_agent(
103
+ model_path=latest_model_path, endpoints=available_endpoints
104
+ )
105
+
106
+ if agent and agent.is_ready():
107
+ structlogger.info(
108
+ "Successfully loaded existing agent", model_path=latest_model_path
109
+ )
110
+ return agent
111
+ else:
112
+ structlogger.warning(
113
+ "Agent loaded but not ready", model_path=latest_model_path
114
+ )
115
+ return None
116
+
117
+ except Exception as e:
118
+ structlogger.warning(
119
+ "Failed to load existing agent",
120
+ models_dir=models_dir,
121
+ error=str(e),
122
+ exc_info=True,
123
+ )
124
+ return None
125
+
126
+
127
+ async def _setup_endpoints(endpoints_file: Path) -> None:
128
+ """Setup endpoints configuration for training."""
129
+ try:
130
+ # Reset and load endpoints
131
+ AvailableEndpoints.reset_instance()
132
+ read_endpoints_from_path(endpoints_file)
133
+
134
+ structlogger.debug("training.endpoints_setup", endpoints_file=endpoints_file)
135
+
136
+ except Exception as e:
137
+ raise TrainingError(f"Failed to setup endpoints: {e}")
138
+
139
+
140
+ async def _train_model(importer: TrainingDataImporter) -> TrainingResult:
141
+ """Train the Rasa model."""
142
+ try:
143
+ structlogger.info("training.started")
144
+
145
+ training_result = await train(
146
+ domain="",
147
+ config="",
148
+ training_files=None,
149
+ file_importer=importer,
150
+ )
151
+
152
+ if not training_result or not training_result.model:
153
+ raise TrainingError("Training completed but no model was produced")
154
+
155
+ structlogger.info("training.completed", model_path=training_result.model)
156
+
157
+ return training_result
158
+
159
+ except Exception as e:
160
+ raise TrainingError(f"Model training failed: {e}")
161
+
162
+
163
+ async def _load_agent(model_path: str) -> Agent:
164
+ """Load the trained agent."""
165
+ try:
166
+ structlogger.info("training.loading_agent", model_path=model_path)
167
+
168
+ available_endpoints = AvailableEndpoints.get_instance()
169
+ if available_endpoints is None:
170
+ raise AgentLoadError("No endpoints available for agent loading")
171
+
172
+ structlogger.debug(
173
+ "training.loading_agent.cwd",
174
+ cwd=os.getcwd(),
175
+ model_path=model_path,
176
+ )
177
+
178
+ agent_instance = await load_agent(
179
+ model_path=model_path,
180
+ remote_storage=None,
181
+ endpoints=available_endpoints,
182
+ )
183
+
184
+ if agent_instance is None:
185
+ raise AgentLoadError("Agent loading returned None")
186
+
187
+ structlogger.info("training.agent_loaded", model_path=model_path)
188
+
189
+ return agent_instance
190
+
191
+ except AgentLoadError:
192
+ raise
193
+ except Exception as e:
194
+ raise AgentLoadError(f"Failed to load agent: {e}")
@@ -0,0 +1,97 @@
1
+ """Functions for validating Rasa projects."""
2
+
3
+ import sys
4
+ from contextlib import contextmanager
5
+ from typing import Any, Dict, Generator, Optional
6
+
7
+ import structlog
8
+
9
+ from rasa.builder import config
10
+ from rasa.builder.exceptions import ValidationError
11
+ from rasa.builder.logging_utils import capture_validation_logs
12
+ from rasa.cli.utils import validate_files
13
+ from rasa.shared.importers.importer import TrainingDataImporter
14
+
15
+ structlogger = structlog.get_logger()
16
+
17
+
18
+ @contextmanager
19
+ def _mock_sys_exit() -> Generator[Dict[str, bool], Any, None]:
20
+ """Context manager to prevent sys.exit from being called during validation."""
21
+ was_sys_exit_called = {"value": False}
22
+
23
+ def sys_exit_mock(code: int = 0) -> None:
24
+ was_sys_exit_called["value"] = True
25
+
26
+ original_exit = sys.exit
27
+ sys.exit = sys_exit_mock # type: ignore[assignment]
28
+
29
+ try:
30
+ yield was_sys_exit_called
31
+ finally:
32
+ sys.exit = original_exit
33
+
34
+
35
+ async def validate_project(importer: TrainingDataImporter) -> Optional[str]:
36
+ """Validate a Rasa project.
37
+
38
+ Args:
39
+ importer: Training data importer with domain, flows, and config
40
+
41
+ Returns:
42
+ None if validation passes, error message if validation fails.
43
+
44
+ Raises:
45
+ ValidationError: If validation fails
46
+ """
47
+ with capture_validation_logs() as captured_logs:
48
+ try:
49
+ with _mock_sys_exit() as exit_tracker:
50
+ validate_files(
51
+ fail_on_warnings=config.VALIDATION_FAIL_ON_WARNINGS,
52
+ max_history=config.VALIDATION_MAX_HISTORY,
53
+ importer=importer,
54
+ )
55
+
56
+ if exit_tracker["value"]:
57
+ error_logs = [
58
+ log for log in captured_logs if log.get("log_level") != "debug"
59
+ ]
60
+ structlogger.error(
61
+ "validation.failed.sys_exit",
62
+ error_logs=error_logs,
63
+ )
64
+ raise ValidationError(
65
+ "Validation failed with sys.exit", validation_logs=error_logs
66
+ )
67
+
68
+ structlogger.info("validation.success")
69
+ return None
70
+
71
+ except ValidationError:
72
+ raise
73
+
74
+ except Exception as e:
75
+ error_msg = f"Validation failed with exception: {e}"
76
+
77
+ error_logs = [
78
+ log for log in captured_logs if log.get("log_level") != "debug"
79
+ ]
80
+
81
+ structlogger.error(
82
+ "validation.failed.exception", error=str(e), validation_logs=error_logs
83
+ )
84
+ raise ValidationError(error_msg, validation_logs=error_logs)
85
+
86
+ except SystemExit as e:
87
+ error_logs = [
88
+ log for log in captured_logs if log.get("log_level") != "debug"
89
+ ]
90
+
91
+ structlogger.error(
92
+ "validation.failed.sys_exit",
93
+ error_logs=error_logs,
94
+ )
95
+ raise ValidationError(
96
+ f"SystemExit during validation: {e}", validation_logs=error_logs
97
+ )
@@ -0,0 +1,23 @@
1
+ # Basic Rasa Template
2
+
3
+ A simple, general-purpose conversational agent template that provides essential conversational capabilities.
4
+
5
+ ## πŸš€ What's Included
6
+
7
+ This template provides a foundation for building conversational agents with:
8
+ - **Basic conversational flows**: Greetings, help, feedback, and human handoff
9
+ - **Help system**: Users can ask for assistance and get guided responses
10
+ - **Feedback collection**: Gather user feedback to improve the agent
11
+ - **Human handoff**: Seamlessly transfer conversations to human agents when needed
12
+
13
+ ## πŸ“ Directory Structure
14
+
15
+ ```
16
+ β”œβ”€β”€ actions/ # Custom Python logic for agent actions
17
+ β”œβ”€β”€ data/ # Conversational flows and training data
18
+ β”œβ”€β”€ domain/ # Agent configuration (slots, responses, actions)
19
+ β”œβ”€β”€ docs/ # Knowledge base documents (optional)
20
+ β”œβ”€β”€ prompts/ # LLM prompts for enhanced responses
21
+ └── config.yml # Training pipeline configuration
22
+ ```
23
+
File without changes
@@ -0,0 +1,40 @@
1
+ from typing import Any, Dict, List, Text
2
+
3
+ import openai
4
+ from rasa_sdk import Action, Tracker
5
+ from rasa_sdk.executor import CollectingDispatcher
6
+ from rasa_sdk.types import DomainDict
7
+
8
+
9
+ class ActionHumanHandoff(Action):
10
+ def name(self) -> Text:
11
+ return "action_human_handoff"
12
+
13
+ async def run(
14
+ self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: DomainDict
15
+ ) -> List[Dict[Text, Any]]:
16
+ convo: List[str] = []
17
+ for event in tracker.events:
18
+ if event.get("event") == "user":
19
+ user_text = str(event.get("text") or "")
20
+ convo.append(f"user - {user_text}")
21
+ elif event.get("event") == "bot":
22
+ bot_text = str(event.get("text") or "")
23
+ convo.append(f"bot - {bot_text}")
24
+ prompt = (
25
+ f"The following is a conversation between a bot and a human user. "
26
+ f"Please summarise so that a human agent can easily understand the "
27
+ f"important context. Conversation: "
28
+ f"{convo}"
29
+ )
30
+ response = openai.chat.completions.create(
31
+ model="gpt-4o",
32
+ messages=[{"role": "user", "content": prompt}],
33
+ )
34
+ summarised_conversation = (
35
+ response.choices[0].message.content or "No summary available"
36
+ )
37
+ dispatcher.utter_message(
38
+ response="utter_transfer_to_manager", summary=summarised_conversation
39
+ )
40
+ return []
@@ -0,0 +1,10 @@
1
+ ## πŸ“‚ `actions/` – The Agent's Toolkit
2
+
3
+ This folder contains Python files that define custom actions your agent can perform. Actions are pieces of code that run when your agent needs to do something beyond just responding with text.
4
+
5
+ **What you'll find:**
6
+ - `action_human_handoff.py`: Handles transferring the conversation to a human agent when needed.
7
+
8
+ **Edit Python files in this folder** to add new custom logic, integrate with APIs, or perform calculations and data processing.
9
+
10
+ Learn more about custom actions in the [Rasa documentation](https://rasa.com/docs/pro/build/custom-actions).
@@ -0,0 +1,29 @@
1
+ # Rasa Agent Configuration
2
+ # This file controls your agent's language, message processing pipeline, and conversation policies.
3
+ # For full documentation, see: https://rasa.com/docs/pro/build/configuring-assistant
4
+ recipe: default.v1
5
+ language: en
6
+
7
+ # The agent project unique identifier
8
+ # This default value must be replaced with a unique agent name within your deployment
9
+ assistant_id: placeholder_default
10
+
11
+ pipeline:
12
+ - name: SearchReadyLLMCommandGenerator
13
+ llm:
14
+ model_group: openai-gpt-4o
15
+ flow_retrieval:
16
+ active: false
17
+
18
+
19
+ policies:
20
+ - name: FlowPolicy
21
+ - name: EnterpriseSearchPolicy
22
+ vector_store:
23
+ type: "faiss"
24
+ source: "./docs"
25
+ llm:
26
+ model_group: openai-gpt-4o
27
+ embeddings:
28
+ model_group: openai-embeddings
29
+ check_relevancy: true
@@ -0,0 +1,33 @@
1
+ # This file contains the credentials for the voice & chat platforms
2
+ # which your bot is using.
3
+ # https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
4
+
5
+ rest:
6
+ # # you don't need to provide anything here - this channel doesn't
7
+ # # require any credentials
8
+
9
+
10
+ #facebook:
11
+ # verify: "<verify>"
12
+ # secret: "<your secret>"
13
+ # page-access-token: "<your page access token>"
14
+
15
+ #slack:
16
+ # slack_token: "<your slack token>"
17
+ # slack_channel: "<the slack channel>"
18
+ # slack_signing_secret: "<your slack signing secret>"
19
+
20
+ #socketio:
21
+ # user_message_evt: <event name for user message>
22
+ # bot_message_evt: <event name for bot messages>
23
+ # session_persistence: <true/false>
24
+
25
+ #mattermost:
26
+ # url: "https://<mattermost instance>/api/v4"
27
+ # token: "<bot token>"
28
+ # webhook_url: "<callback URL>"
29
+
30
+ # This entry is needed if you are using Rasa Enterprise. The entry represents credentials
31
+ # for the Rasa Enterprise "channel", i.e. Talk to your bot and Share with guest testers.
32
+ rasa:
33
+ url: "http://localhost:5002/api"
@@ -0,0 +1,9 @@
1
+ ## πŸ“‚ `data/` – The agent's Business Logic
2
+
3
+ This folder holds files that define your agent’s skills using "flows". Each flow is a step-by-step conversation pattern (like a recipe) for handling a user goal (e.g., checking a balance, updating an address).
4
+
5
+ **What you’ll find:**
6
+ - Each YAML file = one or more skills.
7
+ - Flows are made of steps: collecting info, calling actions, and responding.
8
+
9
+ **Edit txt files in this folder** to add new skills, change existing flows, or adjust what the agent asks.
@@ -0,0 +1,21 @@
1
+ # Simple thumbs up/down feedback flow
2
+ flows:
3
+ leave_feedback:
4
+ name: leaving feedback
5
+ description: This flow collects simple thumbs up or thumbs down feedback
6
+ if: False # Flow guard to prevent direct triggering
7
+ steps:
8
+ - collect: feedback_rating
9
+ description: Ask user for thumbs up or thumbs down feedback
10
+ - id: feedback_response
11
+ noop: true
12
+ next:
13
+ - if: slots.feedback_rating == "thumbs_up"
14
+ then: positive_response
15
+ - else: negative_response
16
+ - id: positive_response
17
+ action: utter_thankyou_positive
18
+ next: END
19
+ - id: negative_response
20
+ action: utter_thankyou_negative
21
+ next: END
@@ -0,0 +1,6 @@
1
+ flows:
2
+ goodbye_flow:
3
+ description: Handle user goodbye messages, say farewell, and collect feedback
4
+ steps:
5
+ - action: utter_goodbye
6
+ - link: leave_feedback
@@ -0,0 +1,6 @@
1
+ flows:
2
+ hello:
3
+ description: Flow for greeting the user hello
4
+ name: hello
5
+ steps:
6
+ - action: utter_hello
@@ -0,0 +1,6 @@
1
+ flows:
2
+ help:
3
+ description: Answer the users question on what the agent can do to help them
4
+ name: help
5
+ steps:
6
+ - action: utter_what_can_you_do
@@ -0,0 +1,16 @@
1
+ version: "3.1"
2
+ flows:
3
+ human_handoff:
4
+ description: When you are unable to handle the request or the user is frustrated - offers to hand the user over to a live human agent.
5
+ steps:
6
+ - collect: confirm_human_handoff
7
+ ask_before_filling: True
8
+ next:
9
+ - if: slots.confirm_human_handoff is "Yes"
10
+ then:
11
+ - action: utter_transferring_to_human
12
+ - action: action_human_handoff
13
+ next: END
14
+ - else:
15
+ - action: utter_human_handoff_cancelled
16
+ next: END
@@ -0,0 +1,6 @@
1
+ flows:
2
+ show_faqs:
3
+ description: Show users the most frequently asked questions about Rasa and CALM
4
+ name: show_faqs
5
+ steps:
6
+ - action: utter_top_faqs
@@ -0,0 +1,7 @@
1
+ # Flow for handling cases where the agent cannot provide a relevant answer
2
+ flows:
3
+ cannot_handle:
4
+ description: Handle cases where no relevant answer is found
5
+ if: False
6
+ steps:
7
+ - action: utter_no_relevant_answer_found
@@ -0,0 +1,7 @@
1
+ flows:
2
+ pattern_completed:
3
+ description: A flow has been completed and there is nothing else to be done
4
+ if: False
5
+ steps:
6
+ - noop: true
7
+ next: END
@@ -0,0 +1,7 @@
1
+ flows:
2
+ pattern_correction:
3
+ description: Handle a correction of a slot value.
4
+ name: pattern correction
5
+ steps:
6
+ - action: action_correct_flow_slot
7
+ next: "END"
@@ -0,0 +1,8 @@
1
+ flows:
2
+ pattern_search:
3
+ name: pattern_search
4
+ description: Flow for handling knowledge-based questions
5
+ steps:
6
+ - id: 0_action_trigger_search
7
+ next: END
8
+ action: action_trigger_search
@@ -0,0 +1,8 @@
1
+ flows:
2
+ pattern_session_start:
3
+ description: Flow for starting the conversation
4
+ name: pattern session start
5
+ nlu_trigger:
6
+ - intent: session_start
7
+ steps:
8
+ - action: utter_welcome
@@ -0,0 +1,5 @@
1
+ ## πŸ“‚ `docs/` – The Agent's Knowledge Base (optional)
2
+
3
+ If your agent answers knowledge-based questions (FAQs, policies, etc.), you can put markdown, PDFs, or text files in this folder. Rasa can use this content for retrieval-augmented responses if set up with a vector store [2](https://rasa.com/docs/pro/build/retrieval-actions).
4
+
5
+ **Edit here** to update what your agent can retrieve and summarize for users.
@@ -0,0 +1,28 @@
1
+ 1. General Questions
2
+
3
+ Q: What is Rasa and what can I build with it?
4
+ A: Rasa is a conversational AI framework that lets you build agents using flows and large language models (LLMs). You can create agents for customer support, automation, or any use case that needs reliable, multi-step conversations.
5
+
6
+ Q: What is CALM in Rasa?
7
+ A: CALM (Conversational AI with Language Models) is Rasa’s architecture for building agents that combine LLM-powered language understanding with deterministic business logic, defined in flows.
8
+
9
+ Q: What is a flow in Rasa?
10
+ A: A flow is a step-by-step definition of a business process or conversation path. Flows specify what information to collect, what actions to perform, and how to branch or complete the conversation.
11
+
12
+ Q: How do I customize what my agent asks or does?
13
+ A: You can edit or add flows in the flows.yml file, providing clear descriptions for each flow and for each step. Slot descriptions help the agent extract the right information from the user.
14
+
15
+ Q: How does Rasa use LLMs?
16
+ A: Rasa uses LLMs to interpret user messages and generate high-level commands. These commands are then executed through flows and actions, ensuring reliable and controlled conversations.
17
+
18
+ Q: What files are important in a CALM-based Rasa project?
19
+ A: Key files include flows.yml (flows and their descriptions), domain.yml (slots, responses, and actions), and actions.py (custom business logic or integrations).
20
+
21
+ Q: How do I test my agent?
22
+ A: You can test your agent using the Rasa shell or Rasa Inspector, which lets you interact with your agent and debug flow execution.
23
+
24
+ Q: Can I extend my agent with custom logic?
25
+ A: Yes, you can implement custom actions in Python in actions.py. These can be used for API calls, database checks, or any other business logic.
26
+
27
+ Q: Do I need to define intents or entities?
28
+ A: No, with CALM and flows, you do not need to define intents or entities unless you have a specific use case for them.
@@ -0,0 +1,8 @@
1
+ ## πŸ“‚ `domain/` – The Agent's Brain
2
+
3
+ This folder contains YAML files that define the agent's:
4
+ - **Slots**: The agent's memory (e.g., user's name, account number, address) [1](https://rasa.com/docs/reference/primitives/slots/).
5
+ - **Responses**: The messages your agent can say to users (e.g., greetings, confirmations) [2](https://rasa.com/docs/reference/primitives/responses).
6
+ - **Actions**: Custom logic your agent can run (e.g., checking a balance) [3](https://rasa.com/docs/reference/primitives/custom-actions).
7
+
8
+ You can organize the domain as one big file or many small ones. Rasa will automatically merge everything during training [1](https://rasa.com/docs/reference/config/domain).
@@ -0,0 +1,25 @@
1
+ slots:
2
+ feedback_rating:
3
+ type: categorical
4
+ values: [thumbs_up, thumbs_down]
5
+ mappings:
6
+ - type: from_llm
7
+
8
+ responses:
9
+ utter_ask_feedback_rating:
10
+ - text: "We'd love to hear about your experience! How are we doing?"
11
+ buttons:
12
+ - title: "πŸ‘ Great"
13
+ payload: "/SetSlots(feedback_rating=thumbs_up)"
14
+ - title: "πŸ‘Ž Could be better"
15
+ payload: "/SetSlots(feedback_rating=thumbs_down)"
16
+
17
+ utter_thankyou_positive:
18
+ - text: "That's wonderful to hear! We appreciate you taking the time to provide us with feedback. 🌟"
19
+ - text: "So glad we could help! Thanks for the positive feedback! 😊"
20
+ - text: "Amazing! We're thrilled you had a great experience. Thank you for your feedback! πŸŽ‰"
21
+
22
+ utter_thankyou_negative:
23
+ - text: "We appreciate you taking the time to provide us with feedback. We're always working to improve our service."
24
+ - text: "Thank you for your honest feedback. We'll use it to make our service better."
25
+ - text: "Thanks for letting us know. Your feedback helps us improve our agent."
@@ -0,0 +1,9 @@
1
+ version: "3.1"
2
+
3
+ responses:
4
+ utter_goodbye:
5
+ - text: "Thanks for stopping by β€” take care!"
6
+ - text: "Thanks for the chat. Have a great day!"
7
+ - text: "Catch you later! Feel free to reach out anytime."
8
+ - text: "Goodbye for now β€” we're here if you need anything."
9
+ - text: "Take care! Let us know if you have any other questions."
@@ -0,0 +1,7 @@
1
+ version: "3.1"
2
+
3
+ responses:
4
+ utter_hello:
5
+ - text: "Hi there! Nice to meet you!"
6
+ metadata:
7
+ rephrase: True