rasa-pro 3.13.1a18__py3-none-any.whl → 3.13.1a20__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 (273) hide show
  1. rasa/__main__.py +8 -0
  2. rasa/builder/auth.py +71 -0
  3. rasa/builder/config.py +16 -0
  4. rasa/builder/copilot/constants.py +15 -0
  5. rasa/builder/copilot/copilot.py +342 -0
  6. rasa/builder/copilot/copilot_response_handler.py +471 -0
  7. rasa/builder/copilot/exceptions.py +20 -0
  8. rasa/builder/copilot/models.py +344 -0
  9. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +495 -0
  10. rasa/builder/copilot/telemetry.py +195 -0
  11. rasa/builder/document_retrieval/__init__.py +0 -0
  12. rasa/builder/document_retrieval/constants.py +16 -0
  13. rasa/builder/{inkeep_document_retrieval.py → document_retrieval/inkeep_document_retrieval.py} +53 -44
  14. rasa/builder/document_retrieval/models.py +62 -0
  15. rasa/builder/download.py +140 -0
  16. rasa/builder/guardrails/__init__.py +1 -0
  17. rasa/builder/guardrails/constants.py +4 -0
  18. rasa/builder/guardrails/exceptions.py +4 -0
  19. rasa/builder/guardrails/lakera.py +188 -0
  20. rasa/builder/guardrails/models.py +199 -0
  21. rasa/builder/guardrails/utils.py +305 -0
  22. rasa/builder/job_manager.py +87 -0
  23. rasa/builder/jobs.py +232 -0
  24. rasa/builder/llm_service.py +89 -173
  25. rasa/builder/logging_utils.py +162 -4
  26. rasa/builder/main.py +29 -16
  27. rasa/builder/models.py +93 -121
  28. rasa/builder/project_generator.py +91 -7
  29. rasa/builder/scrape_rasa_docs.py +1 -1
  30. rasa/builder/service.py +650 -452
  31. rasa/builder/shared/tracker_context.py +212 -0
  32. rasa/builder/validation_service.py +4 -4
  33. rasa/cli/data.py +8 -3
  34. rasa/cli/project_templates/basic/actions/action_api.py +15 -0
  35. rasa/cli/project_templates/basic/actions/action_human_handoff.py +44 -0
  36. rasa/cli/project_templates/basic/config.yml +23 -0
  37. rasa/cli/project_templates/{plain → basic}/credentials.yml +8 -7
  38. rasa/cli/project_templates/basic/data/general/feedback.yml +20 -0
  39. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  40. rasa/cli/project_templates/basic/data/general/hello.yml +7 -0
  41. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  42. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  43. rasa/cli/project_templates/basic/data/general/welcome.yml +9 -0
  44. rasa/cli/project_templates/{finance/data/patterns → basic/data/system}/pattern_completed.yml +2 -1
  45. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +7 -0
  46. rasa/cli/project_templates/basic/data/system/pattern_search.yml +8 -0
  47. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +8 -0
  48. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +65 -0
  49. rasa/cli/project_templates/basic/docs/template.txt +7 -0
  50. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +12 -0
  51. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +5 -0
  52. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +5 -0
  53. rasa/cli/project_templates/basic/domain/general/feedback.yml +28 -0
  54. rasa/cli/project_templates/basic/domain/general/goodbye.yml +7 -0
  55. rasa/cli/project_templates/basic/domain/general/help.yml +5 -0
  56. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +35 -0
  57. rasa/cli/project_templates/{finance/domain/default_actions.yml → basic/domain/general/utils.yml} +0 -3
  58. rasa/cli/project_templates/basic/domain/general/welcome.yml +7 -0
  59. rasa/cli/project_templates/{plain → basic}/endpoints.yml +42 -27
  60. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  61. rasa/cli/project_templates/defaults.py +25 -3
  62. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  63. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  64. rasa/cli/project_templates/finance/actions/{action_ask_account.py → accounts/action_ask_account.py} +6 -9
  65. rasa/cli/project_templates/finance/actions/{action_check_balance.py → accounts/action_check_balance.py} +4 -4
  66. rasa/cli/project_templates/finance/actions/action_session_start.py +11 -6
  67. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  68. rasa/cli/project_templates/finance/actions/{action_ask_card.py → cards/action_ask_card.py} +4 -3
  69. rasa/cli/project_templates/finance/actions/{action_check_card_existence.py → cards/action_check_card_existence.py} +4 -3
  70. rasa/cli/project_templates/finance/actions/{action_update_card_status.py → cards/action_update_card_status.py} +18 -9
  71. rasa/cli/project_templates/finance/actions/database.py +1 -0
  72. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  73. rasa/cli/project_templates/finance/actions/{action_add_payee.py → transfers/action_add_payee.py} +8 -3
  74. rasa/cli/project_templates/finance/actions/{action_ask_account_from.py → transfers/action_ask_account_from.py} +5 -4
  75. rasa/cli/project_templates/finance/actions/{action_check_payee_existence.py → transfers/action_check_payee_existence.py} +3 -3
  76. rasa/cli/project_templates/finance/actions/{action_check_sufficient_funds.py → transfers/action_check_sufficient_funds.py} +3 -4
  77. rasa/cli/project_templates/finance/actions/{action_list_payees.py → transfers/action_list_payees.py} +4 -3
  78. rasa/cli/project_templates/finance/actions/{action_remove_payee.py → transfers/action_remove_payee.py} +4 -4
  79. rasa/cli/project_templates/finance/config.yml +8 -19
  80. rasa/cli/project_templates/finance/credentials.yml +6 -7
  81. rasa/cli/project_templates/finance/csvs/cards.csv +10 -10
  82. rasa/cli/project_templates/finance/csvs/payees.csv +10 -9
  83. rasa/cli/project_templates/finance/data/{flows → accounts}/check_balance.yml +2 -1
  84. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  85. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  86. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  87. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  88. rasa/cli/project_templates/finance/data/{flows/welcome.yml → general/help.yml} +2 -7
  89. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  90. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  91. rasa/cli/project_templates/finance/data/{patterns → system/patterns}/pattern_chitchat.yml +0 -2
  92. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  93. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  94. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  95. rasa/cli/project_templates/finance/data/{patterns → system/patterns}/pattern_session_start.yml +0 -1
  96. rasa/cli/project_templates/finance/domain/{check_balance.yml → accounts/check_balance.yml} +2 -0
  97. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
  98. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  99. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  100. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  101. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  102. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  103. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  104. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  105. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  106. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  107. rasa/cli/project_templates/finance/endpoints.yml +1 -0
  108. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +3 -3
  109. rasa/cli/project_templates/telco/actions/actions_billing.py +24 -17
  110. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +6 -1
  111. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +6 -1
  112. rasa/cli/project_templates/telco/actions/actions_session_start.py +6 -1
  113. rasa/cli/project_templates/tutorial/config.yml +2 -1
  114. rasa/cli/scaffold.py +27 -2
  115. rasa/cli/train.py +8 -0
  116. rasa/cli/utils.py +31 -15
  117. rasa/core/actions/action.py +28 -41
  118. rasa/core/actions/action_run_slot_rejections.py +1 -1
  119. rasa/core/channels/development_inspector.py +47 -14
  120. rasa/core/channels/inspector/dist/assets/{arc-371401b1.js → arc-1ddec37b.js} +1 -1
  121. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-3f126156.js → blockDiagram-38ab4fdb-18af387c.js} +1 -1
  122. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-12f22eb7.js → c4Diagram-3d4e48cf-250127a3.js} +1 -1
  123. rasa/core/channels/inspector/dist/assets/channel-59f6d54b.js +1 -0
  124. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-03b1d386.js → classDiagram-70f12bd4-c3388b34.js} +1 -1
  125. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-84f69d63.js → classDiagram-v2-f2320105-9c893a82.js} +1 -1
  126. rasa/core/channels/inspector/dist/assets/clone-26177ddb.js +1 -0
  127. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-ca47fd38.js → createText-2e5e7dd3-c111213b.js} +1 -1
  128. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-f837ca8a.js → edges-e0da2a9e-812a729d.js} +1 -1
  129. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-8717ac54.js → erDiagram-9861fffd-fd5051bc.js} +1 -1
  130. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-94f38b83.js → flowDb-956e92f1-3287ac02.js} +1 -1
  131. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-b616f9fb.js → flowDiagram-66a62f08-692fb0b2.js} +1 -1
  132. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-29c03f5a.js +1 -0
  133. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-f5d24bb8.js → flowchart-elk-definition-4a651766-008376f1.js} +1 -1
  134. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-b43ba8d9.js → ganttDiagram-c361ad54-df330a69.js} +1 -1
  135. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-c3aafaa5.js → gitGraphDiagram-72cf32ee-e03676fb.js} +1 -1
  136. rasa/core/channels/inspector/dist/assets/{graph-0d0a2c10.js → graph-46fad2ba.js} +1 -1
  137. rasa/core/channels/inspector/dist/assets/{index-3862675e-58ea0305.js → index-3862675e-a484ac55.js} +1 -1
  138. rasa/core/channels/inspector/dist/assets/{index-cce6f8a1.js → index-a003633f.js} +179 -179
  139. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-b8f60461.js → infoDiagram-f8f76790-3f9e6ec2.js} +1 -1
  140. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-95be5545.js → journeyDiagram-49397b02-79f72383.js} +1 -1
  141. rasa/core/channels/inspector/dist/assets/{layout-da885b9b.js → layout-aad098e5.js} +1 -1
  142. rasa/core/channels/inspector/dist/assets/{line-f1c817d3.js → line-219ab7ae.js} +1 -1
  143. rasa/core/channels/inspector/dist/assets/{linear-d42801e6.js → linear-2cddbe62.js} +1 -1
  144. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-a38923a6.js → mindmap-definition-fc14e90a-1d41ed99.js} +1 -1
  145. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-ca6e71e9.js → pieDiagram-8a3498a8-cc496ee8.js} +1 -1
  146. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-b290dae9.js → quadrantDiagram-120e2f19-84d32884.js} +1 -1
  147. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-03f02ceb.js → requirementDiagram-deff3bca-c0deb984.js} +1 -1
  148. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-c49eee40.js → sankeyDiagram-04a897e0-b9d7fd62.js} +1 -1
  149. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-b2cd6a3d.js → sequenceDiagram-704730f1-7d517565.js} +1 -1
  150. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-e53a2028.js → stateDiagram-587899a1-98ef9b27.js} +1 -1
  151. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-e1982a03.js → stateDiagram-v2-d93cdb3a-cee70748.js} +1 -1
  152. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-d0226ca5.js → styles-6aaf32cf-3f9d1c96.js} +1 -1
  153. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-0e21dc00.js → styles-9a916d00-67471923.js} +1 -1
  154. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-9588494e.js → styles-c10674c1-bd093fb7.js} +1 -1
  155. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-be478d4f.js → svgDrawCommon-08f97a94-675794e8.js} +1 -1
  156. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-74631749.js → timeline-definition-85554ec2-0ac67617.js} +1 -1
  157. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-a043552f.js → xychartDiagram-e933f94c-c018dc37.js} +1 -1
  158. rasa/core/channels/inspector/dist/index.html +2 -2
  159. rasa/core/channels/inspector/index.html +1 -1
  160. rasa/core/channels/inspector/package.json +4 -3
  161. rasa/core/channels/inspector/src/App.tsx +53 -7
  162. rasa/core/channels/inspector/src/components/Chat.tsx +3 -2
  163. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +1 -1
  164. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +268 -0
  165. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -2
  166. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +8 -3
  167. rasa/core/channels/inspector/src/types.ts +8 -0
  168. rasa/core/channels/inspector/yarn.lock +12 -12
  169. rasa/core/channels/studio_chat.py +119 -34
  170. rasa/core/channels/voice_ready/twilio_voice.py +1 -1
  171. rasa/core/channels/voice_stream/asr/asr_engine.py +5 -1
  172. rasa/core/channels/voice_stream/asr/deepgram.py +5 -0
  173. rasa/core/channels/voice_stream/audiocodes.py +16 -8
  174. rasa/core/channels/voice_stream/browser_audio.py +39 -4
  175. rasa/core/channels/voice_stream/call_state.py +13 -2
  176. rasa/core/channels/voice_stream/genesys.py +16 -13
  177. rasa/core/channels/voice_stream/jambonz.py +14 -12
  178. rasa/core/channels/voice_stream/twilio_media_streams.py +14 -13
  179. rasa/core/channels/voice_stream/util.py +11 -1
  180. rasa/core/channels/voice_stream/voice_channel.py +108 -29
  181. rasa/core/nlg/callback.py +1 -1
  182. rasa/core/nlg/contextual_response_rephraser.py +19 -9
  183. rasa/core/nlg/generator.py +21 -5
  184. rasa/core/nlg/response.py +43 -6
  185. rasa/core/nlg/translate.py +8 -0
  186. rasa/core/policies/enterprise_search_policy.py +16 -21
  187. rasa/dialogue_understanding/commands/correct_slots_command.py +38 -10
  188. rasa/dialogue_understanding/generator/command_generator.py +5 -5
  189. rasa/dialogue_understanding/generator/command_parser.py +9 -13
  190. rasa/dialogue_understanding/processor/command_processor.py +149 -55
  191. rasa/dialogue_understanding/stack/utils.py +13 -3
  192. rasa/dialogue_understanding_test/du_test_schema.yml +3 -3
  193. rasa/dialogue_understanding_test/validation.py +9 -10
  194. rasa/e2e_test/e2e_config.py +18 -11
  195. rasa/e2e_test/e2e_test_schema.yml +3 -3
  196. rasa/e2e_test/utils/validation.py +17 -19
  197. rasa/engine/validation.py +86 -91
  198. rasa/exceptions.py +26 -1
  199. rasa/model_manager/model_api.py +2 -2
  200. rasa/model_manager/socket_bridge.py +8 -2
  201. rasa/shared/providers/_configs/default_litellm_client_config.py +3 -7
  202. rasa/shared/utils/cli.py +2 -0
  203. rasa/shared/utils/common.py +2 -1
  204. rasa/shared/utils/health_check/health_check.py +10 -14
  205. rasa/studio/upload.py +6 -2
  206. rasa/studio/utils.py +33 -22
  207. rasa/telemetry.py +95 -22
  208. rasa/utils/licensing.py +21 -10
  209. rasa/utils/log_utils.py +1 -1
  210. rasa/utils/tensorflow/transformer.py +3 -3
  211. rasa/validator.py +7 -5
  212. rasa/version.py +1 -1
  213. {rasa_pro-3.13.1a18.dist-info → rasa_pro-3.13.1a20.dist-info}/METADATA +7 -7
  214. {rasa_pro-3.13.1a18.dist-info → rasa_pro-3.13.1a20.dist-info}/RECORD +242 -203
  215. rasa/builder/create_openai_vector_store.py +0 -228
  216. rasa/builder/llm-helper-schema.json +0 -69
  217. rasa/builder/llm_context.py +0 -81
  218. rasa/builder/llm_helper_prompt.jinja2 +0 -245
  219. rasa/cli/project_templates/finance/data/nlu.yml +0 -29
  220. rasa/cli/project_templates/finance/data/patterns/pattern_search.yml +0 -5
  221. rasa/cli/project_templates/finance/domain/default_flows.yml +0 -33
  222. rasa/cli/project_templates/finance/prompts/command-generator.jinja2 +0 -57
  223. rasa/cli/project_templates/finance/tests/conversation_repair/cancellations.yml +0 -12
  224. rasa/cli/project_templates/finance/tests/conversation_repair/cannot_handle.yml +0 -7
  225. rasa/cli/project_templates/finance/tests/conversation_repair/chitchat.yml +0 -7
  226. rasa/cli/project_templates/finance/tests/conversation_repair/clarification.yml +0 -9
  227. rasa/cli/project_templates/finance/tests/conversation_repair/completion.yml +0 -18
  228. rasa/cli/project_templates/finance/tests/conversation_repair/corrections.yml +0 -17
  229. rasa/cli/project_templates/finance/tests/conversation_repair/digressions.yml +0 -32
  230. rasa/cli/project_templates/finance/tests/conversation_repair/human_handoff.yml +0 -21
  231. rasa/cli/project_templates/finance/tests/conversation_repair/skipping_collect_steps.yml +0 -16
  232. rasa/cli/project_templates/finance/tests/demo_scripts/main.yml +0 -16
  233. rasa/cli/project_templates/finance/tests/happy_paths/balance_verification.yml +0 -15
  234. rasa/cli/project_templates/finance/tests/happy_paths/banking_questions.yml +0 -12
  235. rasa/cli/project_templates/finance/tests/happy_paths/card_blocking.yml +0 -52
  236. rasa/cli/project_templates/finance/tests/happy_paths/money_transfer.yml +0 -136
  237. rasa/cli/project_templates/finance/tests/happy_paths/payee_management.yml +0 -27
  238. rasa/cli/project_templates/finance/tests/happy_paths/user_greeted.yml +0 -5
  239. rasa/cli/project_templates/plain/config.yml +0 -17
  240. rasa/cli/project_templates/plain/data/patterns/pattern_session_start.yml +0 -7
  241. rasa/cli/project_templates/plain/domain.yml +0 -5
  242. rasa/core/channels/inspector/dist/assets/channel-f1efda17.js +0 -1
  243. rasa/core/channels/inspector/dist/assets/clone-fdf164e2.js +0 -1
  244. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-7d7a1629.js +0 -1
  245. rasa/shared/importers/static.py +0 -63
  246. /rasa/{cli/project_templates/plain/actions → builder/copilot}/__init__.py +0 -0
  247. /rasa/builder/{inkeep-rag-response-schema.json → document_retrieval/inkeep-rag-response-schema.json} +0 -0
  248. /rasa/cli/project_templates/finance/actions/{action_process_immediate_payment.py → transfers/action_process_immediate_payment.py} +0 -0
  249. /rasa/cli/project_templates/finance/actions/{action_schedule_payment.py → transfers/action_schedule_payment.py} +0 -0
  250. /rasa/cli/project_templates/finance/actions/{action_validate_payment_date.py → transfers/action_validate_payment_date.py} +0 -0
  251. /rasa/cli/project_templates/finance/data/{flows → cards}/block_card.yml +0 -0
  252. /rasa/cli/project_templates/finance/data/{flows → cards}/select_card.yml +0 -0
  253. /rasa/cli/project_templates/finance/data/{source → system/source}/accounts.json +0 -0
  254. /rasa/cli/project_templates/finance/data/{source → system/source}/advisors.json +0 -0
  255. /rasa/cli/project_templates/finance/data/{source → system/source}/appointments.json +0 -0
  256. /rasa/cli/project_templates/finance/data/{source → system/source}/branches.json +0 -0
  257. /rasa/cli/project_templates/finance/data/{source → system/source}/cards.json +0 -0
  258. /rasa/cli/project_templates/finance/data/{source → system/source}/payees.json +0 -0
  259. /rasa/cli/project_templates/finance/data/{source → system/source}/transactions.json +0 -0
  260. /rasa/cli/project_templates/finance/data/{source → system/source}/users.json +0 -0
  261. /rasa/cli/project_templates/finance/data/{flows → transfers}/add_payee.yml +0 -0
  262. /rasa/cli/project_templates/finance/data/{flows → transfers}/list_payees.yml +0 -0
  263. /rasa/cli/project_templates/finance/data/{flows → transfers}/remove_payee.yml +0 -0
  264. /rasa/cli/project_templates/finance/data/{flows → transfers}/transfer_money.yml +0 -0
  265. /rasa/cli/project_templates/finance/domain/{block_card.yml → cards/block_card.yml} +0 -0
  266. /rasa/cli/project_templates/finance/domain/{select_card.yml → cards/select_card.yml} +0 -0
  267. /rasa/cli/project_templates/finance/domain/{add_payee.yml → transfers/add_payee.yml} +0 -0
  268. /rasa/cli/project_templates/finance/domain/{list_payees.yml → transfers/list_payees.yml} +0 -0
  269. /rasa/cli/project_templates/finance/domain/{remove_payee.yml → transfers/remove_payee.yml} +0 -0
  270. /rasa/cli/project_templates/finance/domain/{transfer_money.yml → transfers/transfer_money.yml} +0 -0
  271. {rasa_pro-3.13.1a18.dist-info → rasa_pro-3.13.1a20.dist-info}/NOTICE +0 -0
  272. {rasa_pro-3.13.1a18.dist-info → rasa_pro-3.13.1a20.dist-info}/WHEEL +0 -0
  273. {rasa_pro-3.13.1a18.dist-info → rasa_pro-3.13.1a20.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,212 @@
1
+ from typing import Any, Dict, List, Optional
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+ from rasa.builder.copilot.constants import ROLE_ASSISTANT, ROLE_USER
6
+ from rasa.shared.core.constants import DEFAULT_SLOT_NAMES
7
+ from rasa.shared.core.events import (
8
+ ActionExecuted,
9
+ BotUttered,
10
+ FlowCompleted,
11
+ FlowStarted,
12
+ SlotSet,
13
+ UserUttered,
14
+ )
15
+ from rasa.shared.core.trackers import DialogueStateTracker
16
+
17
+
18
+ class AssistantMessage(BaseModel):
19
+ text: str
20
+
21
+
22
+ class UserMessage(BaseModel):
23
+ text: str
24
+ predicted_commands: List[str] = Field(default_factory=list)
25
+
26
+
27
+ class TrackerEvent(BaseModel):
28
+ event: str
29
+ data: Dict[str, Any] = Field(default_factory=dict)
30
+
31
+
32
+ class AssistantConversationTurn(BaseModel):
33
+ user_message: Optional[UserMessage] = None
34
+ assistant_messages: List[AssistantMessage] = Field(default_factory=list)
35
+ context_events: List[TrackerEvent] = Field(default_factory=list)
36
+
37
+
38
+ class CurrentState(BaseModel):
39
+ latest_message: Optional[str] = None
40
+ active_flow: Optional[str] = None
41
+ flow_stack: Optional[List[Dict[str, Any]]] = None
42
+ slots: Optional[Dict[str, Any]] = None
43
+ latest_action: Optional[str] = None
44
+ followup_action: Optional[str] = None
45
+
46
+
47
+ class TrackerContext(BaseModel):
48
+ conversation_turns: List[AssistantConversationTurn]
49
+ current_state: CurrentState
50
+
51
+ def to_openai_format(self) -> List[Dict[str, Any]]:
52
+ """Convert the TrackerContext to a format suitable for OpenAI.
53
+
54
+ Returns:
55
+ A list of user and assistant messages in the format suitable for OpenAI.
56
+ """
57
+ messages: List[Dict[str, Any]] = []
58
+ for turn in self.conversation_turns:
59
+ if turn.user_message:
60
+ messages.append({"role": ROLE_USER, "content": turn.user_message.text})
61
+ for message in turn.assistant_messages:
62
+ messages.append({"role": ROLE_ASSISTANT, "content": message.text})
63
+ return messages
64
+
65
+ @classmethod
66
+ def from_tracker(
67
+ cls, tracker: Optional[DialogueStateTracker], max_turns: int = 10
68
+ ) -> Optional["TrackerContext"]:
69
+ """Convert a tracker to a TrackerContext."""
70
+ if not tracker or not tracker.events:
71
+ return None
72
+
73
+ conversation_turns = cls._build_conversation_turns(tracker)
74
+ conversation_turns = conversation_turns[-max_turns:]
75
+ current_state = cls._build_current_state(tracker)
76
+
77
+ return cls(
78
+ conversation_turns=conversation_turns,
79
+ current_state=current_state,
80
+ )
81
+
82
+ @classmethod
83
+ def _build_conversation_turns(
84
+ cls, tracker: DialogueStateTracker
85
+ ) -> List[AssistantConversationTurn]:
86
+ """Build conversation turns from tracker events."""
87
+ conversation_turns: List[AssistantConversationTurn] = []
88
+ current_user_message: Optional[UserMessage] = None
89
+ current_assistant_messages: List[AssistantMessage] = []
90
+ current_context_events: List[TrackerEvent] = []
91
+
92
+ for event in tracker.applied_events():
93
+ if isinstance(event, UserUttered):
94
+ # Save previous turn if exists and has content. A new turn starts with a
95
+ # user message. However, since it's possible that "turn" started with an
96
+ # assistant message, we save that turn without the user message.
97
+ if (
98
+ current_user_message
99
+ or current_assistant_messages
100
+ or current_context_events
101
+ ):
102
+ conversation_turns.append(
103
+ AssistantConversationTurn(
104
+ user_message=current_user_message,
105
+ assistant_messages=current_assistant_messages,
106
+ context_events=current_context_events,
107
+ )
108
+ )
109
+ current_assistant_messages = []
110
+ current_context_events = []
111
+
112
+ # Start new turn
113
+
114
+ # Fetch the predicted commands for the user message
115
+ predicted_commands = (
116
+ [command.get("command") for command in event.commands]
117
+ if event.commands
118
+ else []
119
+ )
120
+
121
+ current_user_message = UserMessage(
122
+ text=event.text or "",
123
+ predicted_commands=predicted_commands,
124
+ )
125
+
126
+ # Assistant conversation turn can have multiple messages from the assistant
127
+ elif isinstance(event, BotUttered):
128
+ current_assistant_messages.append(
129
+ AssistantMessage(text=event.text or "")
130
+ )
131
+
132
+ # Handle non-user and non-assistant events. These are useful for more
133
+ # adding context to the conversation turn.
134
+ else:
135
+ context_event = cls._process_tracker_event(event)
136
+ if context_event:
137
+ current_context_events.append(context_event)
138
+
139
+ # Add the final turn if there is one
140
+ if current_user_message or current_assistant_messages:
141
+ conversation_turns.append(
142
+ AssistantConversationTurn(
143
+ user_message=current_user_message,
144
+ assistant_messages=current_assistant_messages,
145
+ context_events=current_context_events,
146
+ )
147
+ )
148
+
149
+ return conversation_turns
150
+
151
+ @staticmethod
152
+ def _process_tracker_event(event: Any) -> Optional[TrackerEvent]:
153
+ if isinstance(event, ActionExecuted):
154
+ return TrackerEvent(
155
+ event=ActionExecuted.type_name,
156
+ data={"action_name": event.action_name, "confidence": event.confidence},
157
+ )
158
+
159
+ elif isinstance(event, SlotSet) and event.key not in DEFAULT_SLOT_NAMES:
160
+ return TrackerEvent(
161
+ event=SlotSet.type_name,
162
+ data={"slot_name": event.key, "slot_value": event.value},
163
+ )
164
+
165
+ elif isinstance(event, FlowStarted):
166
+ return TrackerEvent(
167
+ event=FlowStarted.type_name,
168
+ data={"flow_id": event.flow_id},
169
+ )
170
+
171
+ elif isinstance(event, FlowCompleted):
172
+ return TrackerEvent(
173
+ event=FlowCompleted.type_name,
174
+ data={"flow_id": event.flow_id},
175
+ )
176
+ else:
177
+ return None
178
+
179
+ @classmethod
180
+ def _build_current_state(cls, tracker: DialogueStateTracker) -> CurrentState:
181
+ """Build the current state from the tracker."""
182
+ latest_message = tracker.latest_message.text if tracker.latest_message else None
183
+ latest_action = (
184
+ tracker.latest_action.get("action_name") if tracker.latest_action else None
185
+ )
186
+ followup_action = tracker.followup_action
187
+ flow_stack = tracker.stack.as_dict() if tracker.stack else None
188
+ slots = cls._extract_non_default_slots(tracker)
189
+ active_flow = tracker.active_flow
190
+
191
+ return CurrentState(
192
+ latest_message=latest_message,
193
+ active_flow=active_flow,
194
+ flow_stack=flow_stack,
195
+ latest_action=latest_action,
196
+ followup_action=followup_action,
197
+ slots=slots,
198
+ )
199
+
200
+ @classmethod
201
+ def _extract_non_default_slots(
202
+ cls, tracker: DialogueStateTracker
203
+ ) -> Optional[Dict[str, Any]]:
204
+ """Extract non-default slot values from the tracker."""
205
+ if not tracker.slots:
206
+ return None
207
+
208
+ return {
209
+ k: str(v.value)
210
+ for k, v in tracker.slots.items()
211
+ if v is not None and k not in DEFAULT_SLOT_NAMES
212
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import sys
4
4
  from contextlib import contextmanager
5
- from typing import Optional
5
+ from typing import Any, Dict, Generator, Optional
6
6
 
7
7
  import structlog
8
8
  from structlog.testing import capture_logs
@@ -16,15 +16,15 @@ structlogger = structlog.get_logger()
16
16
 
17
17
 
18
18
  @contextmanager
19
- def _mock_sys_exit():
19
+ def _mock_sys_exit() -> Generator[Dict[str, bool], Any, None]:
20
20
  """Context manager to prevent sys.exit from being called during validation."""
21
21
  was_sys_exit_called = {"value": False}
22
22
 
23
- def sys_exit_mock(code: int = 0):
23
+ def sys_exit_mock(code: int = 0) -> None:
24
24
  was_sys_exit_called["value"] = True
25
25
 
26
26
  original_exit = sys.exit
27
- sys.exit = sys_exit_mock
27
+ sys.exit = sys_exit_mock # type: ignore[assignment]
28
28
 
29
29
  try:
30
30
  yield was_sys_exit_called
rasa/cli/data.py CHANGED
@@ -205,9 +205,14 @@ def _build_training_data_importer(args: argparse.Namespace) -> "TrainingDataImpo
205
205
  args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=False
206
206
  )
207
207
 
208
- return TrainingDataImporter.load_from_config(
209
- domain_path=domain, training_data_paths=args.data, config_path=config
210
- )
208
+ if config:
209
+ return TrainingDataImporter.load_from_config(
210
+ domain_path=domain, training_data_paths=args.data, config_path=config
211
+ )
212
+ else:
213
+ return TrainingDataImporter.load_from_dict(
214
+ domain_path=domain, training_data_paths=args.data, config_path=config
215
+ )
211
216
 
212
217
 
213
218
  def _append_story_structure_arguments(parser: argparse.ArgumentParser) -> None:
@@ -0,0 +1,15 @@
1
+ from typing import Any, Dict, List, Text
2
+
3
+ from rasa_sdk import Action, Tracker
4
+ from rasa_sdk.executor import CollectingDispatcher
5
+ from rasa_sdk.types import DomainDict
6
+
7
+
8
+ class ActionAPI(Action):
9
+ def name(self) -> Text:
10
+ return "action_api"
11
+
12
+ async def run(
13
+ self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: DomainDict
14
+ ) -> List[Dict[Text, Any]]:
15
+ return []
@@ -0,0 +1,44 @@
1
+ from typing import Any, Dict, List, Text
2
+
3
+ import openai
4
+ from rasa_sdk import Action, Tracker
5
+ from rasa_sdk.events import BotUttered
6
+ from rasa_sdk.executor import CollectingDispatcher
7
+ from rasa_sdk.types import DomainDict
8
+
9
+
10
+ class ActionHumanHandoff(Action):
11
+ def name(self) -> Text:
12
+ return "action_human_handoff"
13
+
14
+ async def run(
15
+ self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: DomainDict
16
+ ) -> List[Dict[Text, Any]]:
17
+ # Collect conversation
18
+ convo = []
19
+ for event in tracker.events:
20
+ if event.get("event") == "user":
21
+ user_text = f"user - {event.get('text')}"
22
+ convo.append(user_text)
23
+ if event.get("event") == "bot":
24
+ bot_text = f"bot - {event.get('text')}"
25
+ convo.append(bot_text)
26
+ prompt = (
27
+ f"The following is a conversation between a bot and a human user, "
28
+ f"please summarise so that a human agent can easily understand "
29
+ f"the important context. Conversation: {convo}"
30
+ )
31
+ response = openai.chat.completions.create(
32
+ model="gpt-4", # or "gpt-3.5-turbo"
33
+ messages=[{"role": "user", "content": prompt}],
34
+ )
35
+ summarised_conversation = (
36
+ response.choices[0].message.content or "No summary available"
37
+ )
38
+ return [
39
+ BotUttered(
40
+ f"I will transfer the following summary of our conversation "
41
+ f"to the Callback Manager:\n"
42
+ f"{summarised_conversation}"
43
+ )
44
+ ]
@@ -0,0 +1,23 @@
1
+ # This file contains the configuration for the bot.
2
+ # https://rasa.com/docs/reference/config/overview
3
+
4
+ recipe: default.v1
5
+ language: en
6
+ assistant_id: placeholder_default
7
+
8
+ pipeline:
9
+ - name: SearchReadyLLMCommandGenerator
10
+ llm:
11
+ model_group: openai-gpt-4o
12
+ flow_retrieval:
13
+ active: false
14
+
15
+ policies:
16
+ - name: FlowPolicy
17
+ - name: EnterpriseSearchPolicy
18
+ vector_store:
19
+ type: "faiss"
20
+ source: "./docs"
21
+ llm:
22
+ model_group: openai-gpt-4o
23
+ check_relevancy: true
@@ -1,11 +1,15 @@
1
+
1
2
  # This file contains the credentials for the voice & chat platforms
2
3
  # which your bot is using.
3
4
  # https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
4
-
5
5
  rest:
6
- # # you don't need to provide anything here - this channel doesn't
7
- # # require any credentials
6
+ socketio:
7
+ bot_message_evt: bot_uttered
8
+ session_persistence: true
9
+ user_message_evt: user_uttered
8
10
 
11
+ rasa:
12
+ url: "http://localhost:5002/api"
9
13
 
10
14
  #facebook:
11
15
  # verify: "<verify>"
@@ -27,7 +31,4 @@ rest:
27
31
  # token: "<bot token>"
28
32
  # webhook_url: "<callback URL>"
29
33
 
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"
34
+
@@ -0,0 +1,20 @@
1
+ # Simple thumbs up/down feedback flow
2
+ flows:
3
+ leave_feedback:
4
+ description: This flow collects simple thumbs up or thumbs down feedback
5
+ if: False # Flow guard to prevent direct triggering
6
+ steps:
7
+ - collect: feedback_rating
8
+ description: Ask user for thumbs up or thumbs down feedback
9
+ - id: feedback_response
10
+ noop: true
11
+ next:
12
+ - if: slots.feedback_rating == "thumbs_up"
13
+ then: positive_response
14
+ - else: negative_response
15
+ - id: positive_response
16
+ action: utter_thankyou_positive
17
+ next: END
18
+ - id: negative_response
19
+ action: utter_thankyou_negative
20
+ 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,7 @@
1
+ flows:
2
+ hello:
3
+ description: Flow for greeting the user hello
4
+ name: hello
5
+ steps:
6
+ - action: utter_greeting
7
+
@@ -0,0 +1,6 @@
1
+ flows:
2
+ help:
3
+ description: Answer the users question on what the assistant can do to help them
4
+ name: help
5
+ steps:
6
+ - action: utter_help
@@ -0,0 +1,16 @@
1
+ version: "3.1"
2
+ flows:
3
+ human_handoff:
4
+ description: Handles escalation 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,9 @@
1
+ flows:
2
+ welcome:
3
+ if: False
4
+ description: |
5
+ This flow is designed to greet and onboard new users who initiate a welcome intent.
6
+ It begins with an initial greeting message to establish a friendly interaction.
7
+ name: say hello
8
+ steps:
9
+ - action: utter_greeting
@@ -1,6 +1,7 @@
1
- flows:
1
+ flows:
2
2
  pattern_completed:
3
3
  description: A flow has been completed and there is nothing else to be done
4
+ if: False
4
5
  steps:
5
6
  - noop: true
6
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
+ - link: hello
@@ -0,0 +1,65 @@
1
+ 1. Rasa Assistant Capabilities
2
+
3
+ Q: What is a Rasa assistant?
4
+ A: A Rasa assistant is an AI-powered conversational bot built using the Rasa framework. It can understand natural language, manage complex conversations, execute actions, and integrate with external systems to help users accomplish tasks through text or voice interactions.
5
+
6
+ Q: What types of tasks can Rasa assistants handle?
7
+ A: Rasa assistants can handle a wide variety of tasks including customer support, booking appointments, processing transactions, answering FAQs, collecting information through forms, routing calls to human agents, providing personalized recommendations, and integrating with databases and APIs.
8
+
9
+ Q: How does a Rasa assistant understand what users say?
10
+ A: Rasa assistants use Natural Language Understanding (NLU) to interpret user messages. They can extract intents (what the user wants to do) and entities (important information like names, dates, amounts) from text. Rasa Pro also supports LLM-based understanding for more flexible conversation handling.
11
+
12
+ 2. Conversation Management
13
+
14
+ Q: Can Rasa assistants handle complex conversations?
15
+ A: Yes, Rasa assistants excel at managing complex, multi-turn conversations. They use dialogue management to track conversation context, remember previous interactions, and guide users through multi-step processes like filling out forms or completing transactions.
16
+
17
+ Q: What are Rasa flows?
18
+ A: Rasa flows are a powerful feature that allows you to define conversational workflows with branching logic, conditional steps, and data collection. They make it easy to create structured conversations for tasks like onboarding, troubleshooting, or gathering customer information.
19
+
20
+ Q: Can the assistant handle interruptions and context switching?
21
+ A: Absolutely! Rasa assistants can handle conversation repairs, interruptions, clarifications, and context switching. Users can change topics mid-conversation or ask for help, and the assistant will respond appropriately while maintaining conversation state.
22
+
23
+ 3. Integration and Actions
24
+
25
+ Q: Can Rasa assistants connect to external systems?
26
+ A: Yes, Rasa assistants can integrate with virtually any external system through custom actions. They can connect to databases, APIs, CRM systems, payment processors, booking systems, and more to perform real-world tasks on behalf of users.
27
+
28
+ Q: What are custom actions in Rasa?
29
+ A: Custom actions are Python functions that allow your assistant to perform specific tasks like querying databases, calling APIs, processing payments, sending emails, or any other business logic. They bridge the gap between conversation and real-world actions.
30
+
31
+ Q: Can Rasa assistants work with existing business systems?
32
+ A: Yes, Rasa assistants are designed to integrate seamlessly with existing business infrastructure. They can connect to your CRM, ERP, databases, microservices, and other enterprise systems through APIs and custom integrations.
33
+
34
+ 4. Advanced Features
35
+
36
+ Q: Does Rasa support voice interactions?
37
+ A: Yes, Rasa assistants can handle voice interactions through integration with speech-to-text and text-to-speech services. They can be deployed as voice bots for phone systems or voice-enabled applications.
38
+
39
+ Q: Can Rasa assistants learn and improve over time?
40
+ A: Rasa assistants can be continuously improved through conversation analytics, user feedback, and retraining with new data. Rasa X (now part of Rasa Pro) provides tools for reviewing conversations and improving assistant performance.
41
+
42
+ Q: What is CALM in Rasa?
43
+ A: CALM (Conversational AI with Language Models) is Rasa's architecture that combines traditional rule-based dialogue management with large language models. This provides both reliability and flexibility, allowing for structured workflows while handling unexpected user inputs gracefully.
44
+
45
+ 5. Deployment and Scaling
46
+
47
+ Q: Where can Rasa assistants be deployed?
48
+ A: Rasa assistants can be deployed anywhere - on websites as chatbots, in mobile apps, on messaging platforms (WhatsApp, Slack, Facebook Messenger), as voice bots, in call centers, or as standalone applications. They're platform-agnostic and highly flexible.
49
+
50
+ Q: Can Rasa assistants handle multiple languages?
51
+ A: Yes, Rasa supports multilingual assistants. You can train models in different languages and create assistants that can communicate with users in their preferred language.
52
+
53
+ Q: How do Rasa assistants scale for enterprise use?
54
+ A: Rasa assistants are built for enterprise scale with features like clustering, load balancing, conversation analytics, version control for models, A/B testing capabilities, and enterprise-grade security and compliance features.
55
+
56
+ 6. Use Cases and Industries
57
+
58
+ Q: What industries use Rasa assistants?
59
+ A: Rasa assistants are used across many industries including banking and finance, healthcare, e-commerce, telecommunications, insurance, travel and hospitality, education, and government services. Any industry that needs to automate customer interactions can benefit.
60
+
61
+ Q: Can Rasa assistants replace human agents?
62
+ A: Rasa assistants are designed to augment human agents, not replace them. They can handle routine inquiries and tasks, freeing up human agents for complex issues that require empathy, creativity, or specialized knowledge. They can also seamlessly hand off conversations to humans when needed.
63
+
64
+ Q: What's the difference between Rasa and simple chatbots?
65
+ A: Unlike simple rule-based chatbots, Rasa assistants can understand context, handle complex multi-turn conversations, learn from interactions, integrate with business systems, and manage sophisticated workflows. They're true conversational AI rather than basic question-answering systems.
@@ -0,0 +1,7 @@
1
+ 1. General Questions
2
+
3
+ Q: What else can you do?
4
+ A: I can answer questions from docs. Add more txt files to /docs to get started.
5
+
6
+ Q: Can you do RAG?
7
+ A: Yes, you can use Retrieval-Augmented Generation (RAG) with Rasa. Rasa's CALM architecture supports RAG through its Enterprise Search Policy. Right now, I'm just retrieving messages from the /docs folder for demo purposes. Add more txt files to /docs to test it out.
@@ -0,0 +1,12 @@
1
+ slots:
2
+ skills_summary:
3
+ type: text
4
+ initial_value: "general questions or direct you to an available agent"
5
+ mappings:
6
+ - type: controlled
7
+ assistant_name:
8
+ type: text
9
+ initial_value: "Vanessa"
10
+ mappings:
11
+ - type: controlled
12
+
@@ -0,0 +1,5 @@
1
+ responses:
2
+ utter_bot_identity:
3
+ - text: "Yes, I'm an AI assistant designed to help you with your questions. I'm here to provide helpful information and support. How can I assist you today?"
4
+ - text: "I am indeed an AI assistant! I'm programmed to be helpful, accurate, and friendly. What can I help you with?"
5
+ - text: "That's right, I'm an AI bot created to assist you. I aim to provide useful responses and help solve your questions. Is there something specific I can help you with?"
@@ -0,0 +1,5 @@
1
+ responses:
2
+ utter_no_relevant_answer_found:
3
+ - text: I’m sorry, I can’t help with that.
4
+ metadata:
5
+ rephrase: False
@@ -0,0 +1,28 @@
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: "Before you go, how was your experience?"
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! Thank you for your feedback! Have a fantastic day! 🌟"
19
+ - text: "So glad we could help! Thanks for the positive feedback! Take care! 😊"
20
+ - text: "Amazing! We're thrilled you had a great experience. Have a wonderful day! 🎉"
21
+
22
+ utter_thankyou_negative:
23
+ - text: "Thank you for your honest feedback. We're always working to improve our service. Have a good day."
24
+ - text: "We appreciate your feedback and will use it to make our service better. Thank you for your time."
25
+ - text: "Thanks for letting us know. Your feedback helps us improve. Take care!"
26
+
27
+ actions:
28
+ - action_default_fallback
@@ -0,0 +1,7 @@
1
+ responses:
2
+ utter_goodbye:
3
+ - text: "Thanks for stopping by — take care!"
4
+ - text: "Thanks for the chat. Have a great day!"
5
+ - text: "Catch you later! Feel free to reach out anytime."
6
+ - text: "Goodbye for now — we’re here if you need anything."
7
+ - text: "Take care! Let us know if you have any other questions."
@@ -0,0 +1,5 @@
1
+ version: "3.1"
2
+
3
+ responses:
4
+ utter_help:
5
+ - text: "I can help you with {skills_summary}."