rasa-pro 3.11.3__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 (779) hide show
  1. README.md +41 -0
  2. rasa/__init__.py +9 -0
  3. rasa/__main__.py +177 -0
  4. rasa/anonymization/__init__.py +2 -0
  5. rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
  6. rasa/anonymization/anonymization_pipeline.py +286 -0
  7. rasa/anonymization/anonymization_rule_executor.py +260 -0
  8. rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
  9. rasa/anonymization/schemas/config.yml +47 -0
  10. rasa/anonymization/utils.py +118 -0
  11. rasa/api.py +160 -0
  12. rasa/cli/__init__.py +5 -0
  13. rasa/cli/arguments/__init__.py +0 -0
  14. rasa/cli/arguments/data.py +106 -0
  15. rasa/cli/arguments/default_arguments.py +207 -0
  16. rasa/cli/arguments/evaluate.py +65 -0
  17. rasa/cli/arguments/export.py +51 -0
  18. rasa/cli/arguments/interactive.py +74 -0
  19. rasa/cli/arguments/run.py +219 -0
  20. rasa/cli/arguments/shell.py +17 -0
  21. rasa/cli/arguments/test.py +211 -0
  22. rasa/cli/arguments/train.py +279 -0
  23. rasa/cli/arguments/visualize.py +34 -0
  24. rasa/cli/arguments/x.py +30 -0
  25. rasa/cli/data.py +354 -0
  26. rasa/cli/e2e_test.py +259 -0
  27. rasa/cli/evaluate.py +222 -0
  28. rasa/cli/export.py +250 -0
  29. rasa/cli/inspect.py +75 -0
  30. rasa/cli/interactive.py +166 -0
  31. rasa/cli/license.py +65 -0
  32. rasa/cli/llm_fine_tuning.py +403 -0
  33. rasa/cli/markers.py +78 -0
  34. rasa/cli/project_templates/__init__.py +0 -0
  35. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  36. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  37. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  38. rasa/cli/project_templates/calm/actions/db.py +57 -0
  39. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  40. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  41. rasa/cli/project_templates/calm/config.yml +10 -0
  42. rasa/cli/project_templates/calm/credentials.yml +33 -0
  43. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  44. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  45. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  46. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  47. rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
  48. rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
  49. rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
  50. rasa/cli/project_templates/calm/domain/shared.yml +10 -0
  51. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  52. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  53. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  54. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  55. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  58. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  59. rasa/cli/project_templates/calm/endpoints.yml +58 -0
  60. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  61. rasa/cli/project_templates/default/actions/actions.py +27 -0
  62. rasa/cli/project_templates/default/config.yml +44 -0
  63. rasa/cli/project_templates/default/credentials.yml +33 -0
  64. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  65. rasa/cli/project_templates/default/data/rules.yml +13 -0
  66. rasa/cli/project_templates/default/data/stories.yml +30 -0
  67. rasa/cli/project_templates/default/domain.yml +34 -0
  68. rasa/cli/project_templates/default/endpoints.yml +42 -0
  69. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  70. rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
  71. rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
  72. rasa/cli/project_templates/tutorial/config.yml +12 -0
  73. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  74. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  75. rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
  76. rasa/cli/project_templates/tutorial/domain.yml +35 -0
  77. rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
  78. rasa/cli/run.py +143 -0
  79. rasa/cli/scaffold.py +273 -0
  80. rasa/cli/shell.py +141 -0
  81. rasa/cli/studio/__init__.py +0 -0
  82. rasa/cli/studio/download.py +62 -0
  83. rasa/cli/studio/studio.py +296 -0
  84. rasa/cli/studio/train.py +59 -0
  85. rasa/cli/studio/upload.py +62 -0
  86. rasa/cli/telemetry.py +102 -0
  87. rasa/cli/test.py +280 -0
  88. rasa/cli/train.py +278 -0
  89. rasa/cli/utils.py +484 -0
  90. rasa/cli/visualize.py +40 -0
  91. rasa/cli/x.py +206 -0
  92. rasa/constants.py +45 -0
  93. rasa/core/__init__.py +17 -0
  94. rasa/core/actions/__init__.py +0 -0
  95. rasa/core/actions/action.py +1318 -0
  96. rasa/core/actions/action_clean_stack.py +59 -0
  97. rasa/core/actions/action_exceptions.py +24 -0
  98. rasa/core/actions/action_hangup.py +29 -0
  99. rasa/core/actions/action_repeat_bot_messages.py +89 -0
  100. rasa/core/actions/action_run_slot_rejections.py +210 -0
  101. rasa/core/actions/action_trigger_chitchat.py +31 -0
  102. rasa/core/actions/action_trigger_flow.py +109 -0
  103. rasa/core/actions/action_trigger_search.py +31 -0
  104. rasa/core/actions/constants.py +5 -0
  105. rasa/core/actions/custom_action_executor.py +191 -0
  106. rasa/core/actions/direct_custom_actions_executor.py +80 -0
  107. rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
  108. rasa/core/actions/forms.py +741 -0
  109. rasa/core/actions/grpc_custom_action_executor.py +251 -0
  110. rasa/core/actions/http_custom_action_executor.py +145 -0
  111. rasa/core/actions/loops.py +114 -0
  112. rasa/core/actions/two_stage_fallback.py +186 -0
  113. rasa/core/agent.py +559 -0
  114. rasa/core/auth_retry_tracker_store.py +122 -0
  115. rasa/core/brokers/__init__.py +0 -0
  116. rasa/core/brokers/broker.py +126 -0
  117. rasa/core/brokers/file.py +58 -0
  118. rasa/core/brokers/kafka.py +324 -0
  119. rasa/core/brokers/pika.py +388 -0
  120. rasa/core/brokers/sql.py +86 -0
  121. rasa/core/channels/__init__.py +61 -0
  122. rasa/core/channels/botframework.py +338 -0
  123. rasa/core/channels/callback.py +84 -0
  124. rasa/core/channels/channel.py +456 -0
  125. rasa/core/channels/console.py +241 -0
  126. rasa/core/channels/development_inspector.py +197 -0
  127. rasa/core/channels/facebook.py +419 -0
  128. rasa/core/channels/hangouts.py +329 -0
  129. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  130. rasa/core/channels/inspector/.gitignore +23 -0
  131. rasa/core/channels/inspector/README.md +54 -0
  132. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  133. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  134. rasa/core/channels/inspector/custom.d.ts +3 -0
  135. rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +1 -0
  136. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  137. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +10 -0
  138. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +2 -0
  139. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +2 -0
  140. rasa/core/channels/inspector/dist/assets/createText-62fc7601-89c73b31.js +7 -0
  141. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +4 -0
  142. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-907e0440.js +51 -0
  143. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +6 -0
  144. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +4 -0
  145. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
  146. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +139 -0
  147. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +266 -0
  148. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +70 -0
  149. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  150. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  151. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  152. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  153. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +1 -0
  154. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  155. rasa/core/channels/inspector/dist/assets/index-e793d777.js +1317 -0
  156. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-8ceba4db.js +7 -0
  157. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  158. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-960d3809.js +139 -0
  159. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  160. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  161. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  162. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  163. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  164. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  165. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  166. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  167. rasa/core/channels/inspector/dist/assets/layout-498807d8.js +1 -0
  168. rasa/core/channels/inspector/dist/assets/line-eeccc4e2.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/linear-8a078617.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +109 -0
  171. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  172. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  173. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-dc9b5e1b.js +35 -0
  174. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-a08cba6d.js +7 -0
  175. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-87242b9e.js +52 -0
  176. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +8 -0
  177. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +122 -0
  178. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +1 -0
  179. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +1 -0
  180. rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +110 -0
  181. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +159 -0
  182. rasa/core/channels/inspector/dist/assets/styles-9c745c82-cef936a6.js +207 -0
  183. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +1 -0
  184. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-0d39bdb2.js +61 -0
  185. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-a03fa445.js +7 -0
  186. rasa/core/channels/inspector/dist/index.html +44 -0
  187. rasa/core/channels/inspector/index.html +42 -0
  188. rasa/core/channels/inspector/jest.config.ts +13 -0
  189. rasa/core/channels/inspector/package.json +52 -0
  190. rasa/core/channels/inspector/setupTests.ts +2 -0
  191. rasa/core/channels/inspector/src/App.tsx +217 -0
  192. rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
  193. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
  194. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  195. rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
  196. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  197. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  198. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
  199. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  200. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  201. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  202. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  203. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  204. rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
  205. rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
  206. rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
  207. rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
  208. rasa/core/channels/inspector/src/main.tsx +13 -0
  209. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  210. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  211. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  212. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  213. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  214. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  215. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  216. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  217. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  218. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  222. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  223. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  224. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  225. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  226. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  227. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  228. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  229. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  230. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  231. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  232. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  233. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  234. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  235. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  236. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  237. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  238. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  239. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  240. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  241. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  242. rasa/core/channels/inspector/src/types.ts +84 -0
  243. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  244. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  245. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  246. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  247. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  248. rasa/core/channels/inspector/tsconfig.json +26 -0
  249. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  250. rasa/core/channels/inspector/vite.config.ts +8 -0
  251. rasa/core/channels/inspector/yarn.lock +6249 -0
  252. rasa/core/channels/mattermost.py +229 -0
  253. rasa/core/channels/rasa_chat.py +126 -0
  254. rasa/core/channels/rest.py +230 -0
  255. rasa/core/channels/rocketchat.py +174 -0
  256. rasa/core/channels/slack.py +620 -0
  257. rasa/core/channels/socketio.py +301 -0
  258. rasa/core/channels/telegram.py +298 -0
  259. rasa/core/channels/twilio.py +169 -0
  260. rasa/core/channels/vier_cvg.py +374 -0
  261. rasa/core/channels/voice_ready/__init__.py +0 -0
  262. rasa/core/channels/voice_ready/audiocodes.py +501 -0
  263. rasa/core/channels/voice_ready/jambonz.py +121 -0
  264. rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
  265. rasa/core/channels/voice_ready/twilio_voice.py +403 -0
  266. rasa/core/channels/voice_ready/utils.py +37 -0
  267. rasa/core/channels/voice_stream/__init__.py +0 -0
  268. rasa/core/channels/voice_stream/asr/__init__.py +0 -0
  269. rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
  270. rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
  271. rasa/core/channels/voice_stream/asr/azure.py +130 -0
  272. rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
  273. rasa/core/channels/voice_stream/audio_bytes.py +8 -0
  274. rasa/core/channels/voice_stream/browser_audio.py +107 -0
  275. rasa/core/channels/voice_stream/call_state.py +23 -0
  276. rasa/core/channels/voice_stream/tts/__init__.py +0 -0
  277. rasa/core/channels/voice_stream/tts/azure.py +106 -0
  278. rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
  279. rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
  280. rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
  281. rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
  282. rasa/core/channels/voice_stream/util.py +57 -0
  283. rasa/core/channels/voice_stream/voice_channel.py +427 -0
  284. rasa/core/channels/webexteams.py +134 -0
  285. rasa/core/concurrent_lock_store.py +210 -0
  286. rasa/core/constants.py +112 -0
  287. rasa/core/evaluation/__init__.py +0 -0
  288. rasa/core/evaluation/marker.py +267 -0
  289. rasa/core/evaluation/marker_base.py +923 -0
  290. rasa/core/evaluation/marker_stats.py +293 -0
  291. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  292. rasa/core/exceptions.py +29 -0
  293. rasa/core/exporter.py +284 -0
  294. rasa/core/featurizers/__init__.py +0 -0
  295. rasa/core/featurizers/precomputation.py +410 -0
  296. rasa/core/featurizers/single_state_featurizer.py +421 -0
  297. rasa/core/featurizers/tracker_featurizers.py +1262 -0
  298. rasa/core/http_interpreter.py +89 -0
  299. rasa/core/information_retrieval/__init__.py +7 -0
  300. rasa/core/information_retrieval/faiss.py +124 -0
  301. rasa/core/information_retrieval/information_retrieval.py +137 -0
  302. rasa/core/information_retrieval/milvus.py +59 -0
  303. rasa/core/information_retrieval/qdrant.py +96 -0
  304. rasa/core/jobs.py +63 -0
  305. rasa/core/lock.py +139 -0
  306. rasa/core/lock_store.py +343 -0
  307. rasa/core/migrate.py +403 -0
  308. rasa/core/nlg/__init__.py +3 -0
  309. rasa/core/nlg/callback.py +146 -0
  310. rasa/core/nlg/contextual_response_rephraser.py +320 -0
  311. rasa/core/nlg/generator.py +230 -0
  312. rasa/core/nlg/interpolator.py +143 -0
  313. rasa/core/nlg/response.py +155 -0
  314. rasa/core/nlg/summarize.py +70 -0
  315. rasa/core/persistor.py +538 -0
  316. rasa/core/policies/__init__.py +0 -0
  317. rasa/core/policies/ensemble.py +329 -0
  318. rasa/core/policies/enterprise_search_policy.py +905 -0
  319. rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
  320. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
  321. rasa/core/policies/flow_policy.py +205 -0
  322. rasa/core/policies/flows/__init__.py +0 -0
  323. rasa/core/policies/flows/flow_exceptions.py +44 -0
  324. rasa/core/policies/flows/flow_executor.py +754 -0
  325. rasa/core/policies/flows/flow_step_result.py +43 -0
  326. rasa/core/policies/intentless_policy.py +1031 -0
  327. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  328. rasa/core/policies/memoization.py +538 -0
  329. rasa/core/policies/policy.py +725 -0
  330. rasa/core/policies/rule_policy.py +1273 -0
  331. rasa/core/policies/ted_policy.py +2169 -0
  332. rasa/core/policies/unexpected_intent_policy.py +1022 -0
  333. rasa/core/processor.py +1465 -0
  334. rasa/core/run.py +342 -0
  335. rasa/core/secrets_manager/__init__.py +0 -0
  336. rasa/core/secrets_manager/constants.py +36 -0
  337. rasa/core/secrets_manager/endpoints.py +391 -0
  338. rasa/core/secrets_manager/factory.py +241 -0
  339. rasa/core/secrets_manager/secret_manager.py +262 -0
  340. rasa/core/secrets_manager/vault.py +584 -0
  341. rasa/core/test.py +1335 -0
  342. rasa/core/tracker_store.py +1703 -0
  343. rasa/core/train.py +105 -0
  344. rasa/core/training/__init__.py +89 -0
  345. rasa/core/training/converters/__init__.py +0 -0
  346. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  347. rasa/core/training/interactive.py +1744 -0
  348. rasa/core/training/story_conflict.py +381 -0
  349. rasa/core/training/training.py +93 -0
  350. rasa/core/utils.py +366 -0
  351. rasa/core/visualize.py +70 -0
  352. rasa/dialogue_understanding/__init__.py +0 -0
  353. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  354. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  355. rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
  356. rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
  357. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  358. rasa/dialogue_understanding/commands/__init__.py +61 -0
  359. rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
  360. rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
  361. rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
  362. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
  363. rasa/dialogue_understanding/commands/clarify_command.py +86 -0
  364. rasa/dialogue_understanding/commands/command.py +85 -0
  365. rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
  366. rasa/dialogue_understanding/commands/error_command.py +79 -0
  367. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  368. rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
  369. rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
  370. rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
  371. rasa/dialogue_understanding/commands/noop_command.py +54 -0
  372. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
  373. rasa/dialogue_understanding/commands/restart_command.py +58 -0
  374. rasa/dialogue_understanding/commands/session_end_command.py +61 -0
  375. rasa/dialogue_understanding/commands/session_start_command.py +59 -0
  376. rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
  377. rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
  378. rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
  379. rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
  380. rasa/dialogue_understanding/commands/utils.py +45 -0
  381. rasa/dialogue_understanding/generator/__init__.py +21 -0
  382. rasa/dialogue_understanding/generator/command_generator.py +343 -0
  383. rasa/dialogue_understanding/generator/constants.py +27 -0
  384. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  385. rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
  386. rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
  387. rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
  388. rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
  389. rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
  390. rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
  391. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +893 -0
  392. rasa/dialogue_understanding/generator/nlu_command_adapter.py +258 -0
  393. rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
  394. rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
  395. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +478 -0
  396. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  397. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  398. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  399. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  400. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  401. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  402. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  403. rasa/dialogue_understanding/patterns/completed.py +40 -0
  404. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  405. rasa/dialogue_understanding/patterns/correction.py +278 -0
  406. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
  407. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  408. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  409. rasa/dialogue_understanding/patterns/repeat.py +37 -0
  410. rasa/dialogue_understanding/patterns/restart.py +37 -0
  411. rasa/dialogue_understanding/patterns/search.py +37 -0
  412. rasa/dialogue_understanding/patterns/session_start.py +37 -0
  413. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  414. rasa/dialogue_understanding/patterns/user_silence.py +37 -0
  415. rasa/dialogue_understanding/processor/__init__.py +0 -0
  416. rasa/dialogue_understanding/processor/command_processor.py +720 -0
  417. rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
  418. rasa/dialogue_understanding/stack/__init__.py +0 -0
  419. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  420. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  421. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  422. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  423. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  424. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  425. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  426. rasa/dialogue_understanding/stack/utils.py +211 -0
  427. rasa/e2e_test/__init__.py +0 -0
  428. rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
  429. rasa/e2e_test/assertions.py +1345 -0
  430. rasa/e2e_test/assertions_schema.yml +129 -0
  431. rasa/e2e_test/constants.py +31 -0
  432. rasa/e2e_test/e2e_config.py +220 -0
  433. rasa/e2e_test/e2e_config_schema.yml +26 -0
  434. rasa/e2e_test/e2e_test_case.py +568 -0
  435. rasa/e2e_test/e2e_test_converter.py +363 -0
  436. rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
  437. rasa/e2e_test/e2e_test_coverage_report.py +364 -0
  438. rasa/e2e_test/e2e_test_result.py +54 -0
  439. rasa/e2e_test/e2e_test_runner.py +1190 -0
  440. rasa/e2e_test/e2e_test_schema.yml +181 -0
  441. rasa/e2e_test/pykwalify_extensions.py +39 -0
  442. rasa/e2e_test/stub_custom_action.py +70 -0
  443. rasa/e2e_test/utils/__init__.py +0 -0
  444. rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
  445. rasa/e2e_test/utils/io.py +598 -0
  446. rasa/e2e_test/utils/validation.py +80 -0
  447. rasa/engine/__init__.py +0 -0
  448. rasa/engine/caching.py +463 -0
  449. rasa/engine/constants.py +17 -0
  450. rasa/engine/exceptions.py +14 -0
  451. rasa/engine/graph.py +642 -0
  452. rasa/engine/loader.py +48 -0
  453. rasa/engine/recipes/__init__.py +0 -0
  454. rasa/engine/recipes/config_files/default_config.yml +41 -0
  455. rasa/engine/recipes/default_components.py +97 -0
  456. rasa/engine/recipes/default_recipe.py +1258 -0
  457. rasa/engine/recipes/graph_recipe.py +78 -0
  458. rasa/engine/recipes/recipe.py +93 -0
  459. rasa/engine/runner/__init__.py +0 -0
  460. rasa/engine/runner/dask.py +250 -0
  461. rasa/engine/runner/interface.py +49 -0
  462. rasa/engine/storage/__init__.py +0 -0
  463. rasa/engine/storage/local_model_storage.py +244 -0
  464. rasa/engine/storage/resource.py +110 -0
  465. rasa/engine/storage/storage.py +199 -0
  466. rasa/engine/training/__init__.py +0 -0
  467. rasa/engine/training/components.py +176 -0
  468. rasa/engine/training/fingerprinting.py +64 -0
  469. rasa/engine/training/graph_trainer.py +256 -0
  470. rasa/engine/training/hooks.py +164 -0
  471. rasa/engine/validation.py +1451 -0
  472. rasa/env.py +14 -0
  473. rasa/exceptions.py +69 -0
  474. rasa/graph_components/__init__.py +0 -0
  475. rasa/graph_components/converters/__init__.py +0 -0
  476. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  477. rasa/graph_components/providers/__init__.py +0 -0
  478. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  479. rasa/graph_components/providers/domain_provider.py +71 -0
  480. rasa/graph_components/providers/flows_provider.py +74 -0
  481. rasa/graph_components/providers/forms_provider.py +44 -0
  482. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  483. rasa/graph_components/providers/responses_provider.py +44 -0
  484. rasa/graph_components/providers/rule_only_provider.py +49 -0
  485. rasa/graph_components/providers/story_graph_provider.py +96 -0
  486. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  487. rasa/graph_components/validators/__init__.py +0 -0
  488. rasa/graph_components/validators/default_recipe_validator.py +550 -0
  489. rasa/graph_components/validators/finetuning_validator.py +302 -0
  490. rasa/hooks.py +112 -0
  491. rasa/jupyter.py +63 -0
  492. rasa/llm_fine_tuning/__init__.py +0 -0
  493. rasa/llm_fine_tuning/annotation_module.py +241 -0
  494. rasa/llm_fine_tuning/conversations.py +144 -0
  495. rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
  496. rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
  497. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
  498. rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
  499. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
  500. rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
  501. rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
  502. rasa/llm_fine_tuning/storage.py +174 -0
  503. rasa/llm_fine_tuning/train_test_split_module.py +441 -0
  504. rasa/markers/__init__.py +0 -0
  505. rasa/markers/marker.py +269 -0
  506. rasa/markers/marker_base.py +828 -0
  507. rasa/markers/upload.py +74 -0
  508. rasa/markers/validate.py +21 -0
  509. rasa/model.py +118 -0
  510. rasa/model_manager/__init__.py +0 -0
  511. rasa/model_manager/config.py +40 -0
  512. rasa/model_manager/model_api.py +559 -0
  513. rasa/model_manager/runner_service.py +286 -0
  514. rasa/model_manager/socket_bridge.py +146 -0
  515. rasa/model_manager/studio_jwt_auth.py +86 -0
  516. rasa/model_manager/trainer_service.py +325 -0
  517. rasa/model_manager/utils.py +87 -0
  518. rasa/model_manager/warm_rasa_process.py +187 -0
  519. rasa/model_service.py +112 -0
  520. rasa/model_testing.py +457 -0
  521. rasa/model_training.py +595 -0
  522. rasa/nlu/__init__.py +7 -0
  523. rasa/nlu/classifiers/__init__.py +3 -0
  524. rasa/nlu/classifiers/classifier.py +5 -0
  525. rasa/nlu/classifiers/diet_classifier.py +1881 -0
  526. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  527. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  528. rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
  529. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  530. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  531. rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
  532. rasa/nlu/constants.py +77 -0
  533. rasa/nlu/convert.py +40 -0
  534. rasa/nlu/emulators/__init__.py +0 -0
  535. rasa/nlu/emulators/dialogflow.py +55 -0
  536. rasa/nlu/emulators/emulator.py +49 -0
  537. rasa/nlu/emulators/luis.py +86 -0
  538. rasa/nlu/emulators/no_emulator.py +10 -0
  539. rasa/nlu/emulators/wit.py +56 -0
  540. rasa/nlu/extractors/__init__.py +0 -0
  541. rasa/nlu/extractors/crf_entity_extractor.py +715 -0
  542. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  543. rasa/nlu/extractors/entity_synonyms.py +178 -0
  544. rasa/nlu/extractors/extractor.py +470 -0
  545. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  546. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  547. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  548. rasa/nlu/featurizers/__init__.py +0 -0
  549. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  550. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
  551. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  552. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
  553. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  554. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  555. rasa/nlu/featurizers/featurizer.py +89 -0
  556. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  557. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
  558. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
  559. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
  560. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  561. rasa/nlu/model.py +24 -0
  562. rasa/nlu/run.py +27 -0
  563. rasa/nlu/selectors/__init__.py +0 -0
  564. rasa/nlu/selectors/response_selector.py +987 -0
  565. rasa/nlu/test.py +1940 -0
  566. rasa/nlu/tokenizers/__init__.py +0 -0
  567. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  568. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  569. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  570. rasa/nlu/tokenizers/tokenizer.py +239 -0
  571. rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
  572. rasa/nlu/utils/__init__.py +35 -0
  573. rasa/nlu/utils/bilou_utils.py +462 -0
  574. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  575. rasa/nlu/utils/hugging_face/registry.py +108 -0
  576. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  577. rasa/nlu/utils/mitie_utils.py +113 -0
  578. rasa/nlu/utils/pattern_utils.py +168 -0
  579. rasa/nlu/utils/spacy_utils.py +310 -0
  580. rasa/plugin.py +90 -0
  581. rasa/server.py +1624 -0
  582. rasa/shared/__init__.py +0 -0
  583. rasa/shared/constants.py +310 -0
  584. rasa/shared/core/__init__.py +0 -0
  585. rasa/shared/core/command_payload_reader.py +109 -0
  586. rasa/shared/core/constants.py +180 -0
  587. rasa/shared/core/conversation.py +46 -0
  588. rasa/shared/core/domain.py +2172 -0
  589. rasa/shared/core/events.py +2559 -0
  590. rasa/shared/core/flows/__init__.py +7 -0
  591. rasa/shared/core/flows/flow.py +562 -0
  592. rasa/shared/core/flows/flow_path.py +84 -0
  593. rasa/shared/core/flows/flow_step.py +146 -0
  594. rasa/shared/core/flows/flow_step_links.py +319 -0
  595. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  596. rasa/shared/core/flows/flows_list.py +258 -0
  597. rasa/shared/core/flows/flows_yaml_schema.json +303 -0
  598. rasa/shared/core/flows/nlu_trigger.py +117 -0
  599. rasa/shared/core/flows/steps/__init__.py +24 -0
  600. rasa/shared/core/flows/steps/action.py +56 -0
  601. rasa/shared/core/flows/steps/call.py +64 -0
  602. rasa/shared/core/flows/steps/collect.py +112 -0
  603. rasa/shared/core/flows/steps/constants.py +5 -0
  604. rasa/shared/core/flows/steps/continuation.py +36 -0
  605. rasa/shared/core/flows/steps/end.py +22 -0
  606. rasa/shared/core/flows/steps/internal.py +44 -0
  607. rasa/shared/core/flows/steps/link.py +51 -0
  608. rasa/shared/core/flows/steps/no_operation.py +48 -0
  609. rasa/shared/core/flows/steps/set_slots.py +50 -0
  610. rasa/shared/core/flows/steps/start.py +30 -0
  611. rasa/shared/core/flows/utils.py +39 -0
  612. rasa/shared/core/flows/validation.py +735 -0
  613. rasa/shared/core/flows/yaml_flows_io.py +405 -0
  614. rasa/shared/core/generator.py +908 -0
  615. rasa/shared/core/slot_mappings.py +526 -0
  616. rasa/shared/core/slots.py +654 -0
  617. rasa/shared/core/trackers.py +1183 -0
  618. rasa/shared/core/training_data/__init__.py +0 -0
  619. rasa/shared/core/training_data/loading.py +89 -0
  620. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  621. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  622. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  623. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  624. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  625. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  626. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
  627. rasa/shared/core/training_data/structures.py +858 -0
  628. rasa/shared/core/training_data/visualization.html +146 -0
  629. rasa/shared/core/training_data/visualization.py +603 -0
  630. rasa/shared/data.py +249 -0
  631. rasa/shared/engine/__init__.py +0 -0
  632. rasa/shared/engine/caching.py +26 -0
  633. rasa/shared/exceptions.py +167 -0
  634. rasa/shared/importers/__init__.py +0 -0
  635. rasa/shared/importers/importer.py +770 -0
  636. rasa/shared/importers/multi_project.py +215 -0
  637. rasa/shared/importers/rasa.py +108 -0
  638. rasa/shared/importers/remote_importer.py +196 -0
  639. rasa/shared/importers/utils.py +36 -0
  640. rasa/shared/nlu/__init__.py +0 -0
  641. rasa/shared/nlu/constants.py +49 -0
  642. rasa/shared/nlu/interpreter.py +10 -0
  643. rasa/shared/nlu/training_data/__init__.py +0 -0
  644. rasa/shared/nlu/training_data/entities_parser.py +208 -0
  645. rasa/shared/nlu/training_data/features.py +492 -0
  646. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  647. rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
  648. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  649. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  650. rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
  651. rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
  652. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  653. rasa/shared/nlu/training_data/loading.py +137 -0
  654. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  655. rasa/shared/nlu/training_data/message.py +490 -0
  656. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  657. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  658. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  659. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  660. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  661. rasa/shared/nlu/training_data/training_data.py +729 -0
  662. rasa/shared/nlu/training_data/util.py +223 -0
  663. rasa/shared/providers/__init__.py +0 -0
  664. rasa/shared/providers/_configs/__init__.py +0 -0
  665. rasa/shared/providers/_configs/azure_openai_client_config.py +183 -0
  666. rasa/shared/providers/_configs/client_config.py +57 -0
  667. rasa/shared/providers/_configs/default_litellm_client_config.py +130 -0
  668. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +234 -0
  669. rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
  670. rasa/shared/providers/_configs/model_group_config.py +167 -0
  671. rasa/shared/providers/_configs/openai_client_config.py +175 -0
  672. rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
  673. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +177 -0
  674. rasa/shared/providers/_configs/utils.py +117 -0
  675. rasa/shared/providers/_ssl_verification_utils.py +124 -0
  676. rasa/shared/providers/_utils.py +79 -0
  677. rasa/shared/providers/embedding/__init__.py +0 -0
  678. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
  679. rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
  680. rasa/shared/providers/embedding/azure_openai_embedding_client.py +310 -0
  681. rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
  682. rasa/shared/providers/embedding/embedding_client.py +90 -0
  683. rasa/shared/providers/embedding/embedding_response.py +41 -0
  684. rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
  685. rasa/shared/providers/embedding/litellm_router_embedding_client.py +135 -0
  686. rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
  687. rasa/shared/providers/llm/__init__.py +0 -0
  688. rasa/shared/providers/llm/_base_litellm_client.py +263 -0
  689. rasa/shared/providers/llm/azure_openai_llm_client.py +359 -0
  690. rasa/shared/providers/llm/default_litellm_llm_client.py +108 -0
  691. rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
  692. rasa/shared/providers/llm/llm_client.py +76 -0
  693. rasa/shared/providers/llm/llm_response.py +50 -0
  694. rasa/shared/providers/llm/openai_llm_client.py +155 -0
  695. rasa/shared/providers/llm/rasa_llm_client.py +112 -0
  696. rasa/shared/providers/llm/self_hosted_llm_client.py +269 -0
  697. rasa/shared/providers/mappings.py +94 -0
  698. rasa/shared/providers/router/__init__.py +0 -0
  699. rasa/shared/providers/router/_base_litellm_router_client.py +183 -0
  700. rasa/shared/providers/router/router_client.py +73 -0
  701. rasa/shared/utils/__init__.py +0 -0
  702. rasa/shared/utils/cli.py +102 -0
  703. rasa/shared/utils/common.py +324 -0
  704. rasa/shared/utils/constants.py +4 -0
  705. rasa/shared/utils/health_check/__init__.py +0 -0
  706. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
  707. rasa/shared/utils/health_check/health_check.py +258 -0
  708. rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
  709. rasa/shared/utils/io.py +499 -0
  710. rasa/shared/utils/llm.py +760 -0
  711. rasa/shared/utils/pykwalify_extensions.py +27 -0
  712. rasa/shared/utils/schemas/__init__.py +0 -0
  713. rasa/shared/utils/schemas/config.yml +2 -0
  714. rasa/shared/utils/schemas/domain.yml +145 -0
  715. rasa/shared/utils/schemas/events.py +214 -0
  716. rasa/shared/utils/schemas/model_config.yml +36 -0
  717. rasa/shared/utils/schemas/stories.yml +173 -0
  718. rasa/shared/utils/yaml.py +1067 -0
  719. rasa/studio/__init__.py +0 -0
  720. rasa/studio/auth.py +270 -0
  721. rasa/studio/config.py +136 -0
  722. rasa/studio/constants.py +19 -0
  723. rasa/studio/data_handler.py +368 -0
  724. rasa/studio/download.py +489 -0
  725. rasa/studio/results_logger.py +137 -0
  726. rasa/studio/train.py +134 -0
  727. rasa/studio/upload.py +549 -0
  728. rasa/telemetry.py +1869 -0
  729. rasa/tracing/__init__.py +0 -0
  730. rasa/tracing/config.py +355 -0
  731. rasa/tracing/constants.py +62 -0
  732. rasa/tracing/instrumentation/__init__.py +0 -0
  733. rasa/tracing/instrumentation/attribute_extractors.py +764 -0
  734. rasa/tracing/instrumentation/instrumentation.py +1306 -0
  735. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
  736. rasa/tracing/instrumentation/metrics.py +294 -0
  737. rasa/tracing/metric_instrument_provider.py +205 -0
  738. rasa/utils/__init__.py +0 -0
  739. rasa/utils/beta.py +83 -0
  740. rasa/utils/cli.py +28 -0
  741. rasa/utils/common.py +639 -0
  742. rasa/utils/converter.py +53 -0
  743. rasa/utils/endpoints.py +331 -0
  744. rasa/utils/io.py +252 -0
  745. rasa/utils/json_utils.py +60 -0
  746. rasa/utils/licensing.py +542 -0
  747. rasa/utils/log_utils.py +181 -0
  748. rasa/utils/mapper.py +210 -0
  749. rasa/utils/ml_utils.py +147 -0
  750. rasa/utils/plotting.py +362 -0
  751. rasa/utils/sanic_error_handler.py +32 -0
  752. rasa/utils/singleton.py +23 -0
  753. rasa/utils/tensorflow/__init__.py +0 -0
  754. rasa/utils/tensorflow/callback.py +112 -0
  755. rasa/utils/tensorflow/constants.py +116 -0
  756. rasa/utils/tensorflow/crf.py +492 -0
  757. rasa/utils/tensorflow/data_generator.py +440 -0
  758. rasa/utils/tensorflow/environment.py +161 -0
  759. rasa/utils/tensorflow/exceptions.py +5 -0
  760. rasa/utils/tensorflow/feature_array.py +366 -0
  761. rasa/utils/tensorflow/layers.py +1565 -0
  762. rasa/utils/tensorflow/layers_utils.py +113 -0
  763. rasa/utils/tensorflow/metrics.py +281 -0
  764. rasa/utils/tensorflow/model_data.py +798 -0
  765. rasa/utils/tensorflow/model_data_utils.py +499 -0
  766. rasa/utils/tensorflow/models.py +935 -0
  767. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  768. rasa/utils/tensorflow/transformer.py +640 -0
  769. rasa/utils/tensorflow/types.py +6 -0
  770. rasa/utils/train_utils.py +572 -0
  771. rasa/utils/url_tools.py +53 -0
  772. rasa/utils/yaml.py +54 -0
  773. rasa/validator.py +1653 -0
  774. rasa/version.py +3 -0
  775. rasa_pro-3.11.3.dist-info/METADATA +198 -0
  776. rasa_pro-3.11.3.dist-info/NOTICE +5 -0
  777. rasa_pro-3.11.3.dist-info/RECORD +779 -0
  778. rasa_pro-3.11.3.dist-info/WHEEL +4 -0
  779. rasa_pro-3.11.3.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,764 @@
1
+ import json
2
+ import logging
3
+ from pathlib import Path
4
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
5
+
6
+ import tiktoken
7
+ from numpy import ndarray
8
+ from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
9
+ from rasa_sdk.grpc_py import action_webhook_pb2
10
+
11
+ from rasa.core.actions.action import DirectCustomActionExecutor
12
+ from rasa.core.actions.grpc_custom_action_executor import GRPCCustomActionExecutor
13
+ from rasa.core.actions.http_custom_action_executor import HTTPCustomActionExecutor
14
+ from rasa.core.agent import Agent
15
+ from rasa.core.brokers.broker import EventBroker
16
+ from rasa.core.channels import UserMessage
17
+ from rasa.core.lock_store import LOCK_LIFETIME, LockStore
18
+ from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
19
+ from rasa.core.processor import MessageProcessor
20
+ from rasa.core.tracker_store import TrackerStore
21
+ from rasa.dialogue_understanding.commands import Command
22
+ from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
23
+ from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
24
+ from rasa.engine.graph import ExecutionContext, GraphModelConfiguration, GraphNode
25
+ from rasa.engine.training.graph_trainer import GraphTrainer
26
+ from rasa.shared.constants import (
27
+ EMBEDDINGS_CONFIG_KEY,
28
+ MODEL_CONFIG_KEY,
29
+ PROVIDER_CONFIG_KEY,
30
+ TIMEOUT_CONFIG_KEY,
31
+ DEPLOYMENT_CONFIG_KEY,
32
+ MODEL_GROUP_ID_CONFIG_KEY,
33
+ LLM_CONFIG_KEY,
34
+ )
35
+ from rasa.shared.core.constants import REQUESTED_SLOT
36
+ from rasa.shared.core.domain import Domain
37
+ from rasa.shared.core.events import DialogueStackUpdated, Event
38
+ from rasa.shared.core.flows import Flow, FlowsList, FlowStep
39
+ from rasa.shared.core.trackers import DialogueStateTracker
40
+ from rasa.shared.importers.importer import TrainingDataImporter
41
+ from rasa.shared.nlu.constants import INTENT_NAME_KEY, SET_SLOT_COMMAND
42
+ from rasa.shared.utils.llm import (
43
+ combine_custom_and_default_config,
44
+ )
45
+ from rasa.tracing.constants import (
46
+ PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
47
+ REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
48
+ )
49
+ from rasa.shared.core.training_data.structures import StoryGraph
50
+
51
+ if TYPE_CHECKING:
52
+ from langchain.llms.base import BaseLLM
53
+
54
+ from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
55
+ from rasa.core.policies.intentless_policy import IntentlessPolicy
56
+ from rasa.core.policies.policy import PolicyPrediction
57
+ from rasa.dialogue_understanding.generator import CommandGenerator
58
+
59
+ # This file contains all attribute extractors for tracing instrumentation.
60
+ # These are functions that are applied to the arguments of the wrapped function to be
61
+ # traced to extract the attributes that we want to forward to our tracing backend.
62
+ # Note that we always mirror the argument lists of the wrapped functions, as our
63
+ # wrapping mechanism always passes in the original arguments unchanged for further
64
+ # processing.
65
+
66
+ logger = logging.getLogger(__name__)
67
+
68
+
69
+ def extract_attrs_for_agent(
70
+ self: Agent,
71
+ message: UserMessage,
72
+ ) -> Dict[str, Any]:
73
+ """Extract the attributes for `Agent.handle_message`.
74
+
75
+ :param self: The `Agent` on which `handle_message` is called.
76
+ :param message: The `UserMessage` argument.
77
+ :return: A dictionary containing the attributes.
78
+ """
79
+ return {
80
+ "input_channel": str(message.input_channel),
81
+ "sender_id": message.sender_id,
82
+ "model_id": str(self.model_id),
83
+ "model_name": self.processor.model_filename if self.processor else "None",
84
+ }
85
+
86
+
87
+ def extract_llm_command_generator_attrs(
88
+ attributes: Dict[str, Any], commands: List[Dict[str, Any]]
89
+ ) -> None:
90
+ """Extract more attributes for `GraphNode` type `LLMCommandGenerator`.
91
+
92
+ :param attributes: A dictionary containing attributes.
93
+ :param commands: The commands to execute.
94
+ """
95
+ commands_list = []
96
+
97
+ for command in commands:
98
+ command_name = command.get("command")
99
+ commands_list.append(command_name)
100
+
101
+ if command_name == SET_SLOT_COMMAND:
102
+ attributes["slot_name"] = command.get("name")
103
+
104
+ if command_name == "start flow":
105
+ attributes["flow_name"] = command.get("flow")
106
+
107
+ attributes["commands"] = str(commands_list)
108
+
109
+
110
+ def extract_flow_policy_attrs(
111
+ attributes: Dict[str, Any], policy_prediction: "PolicyPrediction"
112
+ ) -> None:
113
+ """Extract more attributes for `GraphNode` type `FlowPolicy`.
114
+
115
+ :param attributes: A dictionary containing attributes.
116
+ :param policy_prediction: The PolicyPrediction to use.
117
+ """
118
+ attributes["policy"] = policy_prediction.policy_name
119
+
120
+ if policy_prediction.events:
121
+ attributes["events"] = str(
122
+ [event.__class__.__name__ for event in policy_prediction.events]
123
+ )
124
+
125
+ if policy_prediction.optional_events:
126
+ optional_events_name = []
127
+ flows = []
128
+ utters = []
129
+
130
+ for optional_event in policy_prediction.optional_events:
131
+ optional_events_name.append(optional_event.__class__.__name__)
132
+
133
+ if (
134
+ isinstance(optional_event, DialogueStackUpdated)
135
+ and "value" in optional_event.update
136
+ ):
137
+ updates = json.loads(optional_event.update)
138
+ for update in updates:
139
+ value = update.get("value", {})
140
+ if isinstance(value, dict):
141
+ flow = value.get("flow_id", "")
142
+ utter = value.get("utter", "")
143
+ if flow:
144
+ flows.append(flow)
145
+ if utter:
146
+ utters.append(utter)
147
+ else:
148
+ if hasattr(optional_event, "flow_id") and optional_event.flow_id:
149
+ flows.append(optional_event.flow_id)
150
+ if hasattr(optional_event, "utter") and optional_event.utter:
151
+ utters.append(optional_event.utter)
152
+
153
+ attributes["optional_events"] = str(set(optional_events_name))
154
+
155
+ if flows:
156
+ attributes["flows"] = str(set(flows))
157
+ if utters:
158
+ attributes["utters"] = str(set(utters))
159
+
160
+
161
+ def extract_attrs_for_graph_node(
162
+ self: GraphNode, *inputs_from_previous_nodes: Tuple[Text, Any]
163
+ ) -> Dict[str, Any]:
164
+ """Extract the attributes for `GraphNode.__call__`.
165
+
166
+ :param self: The `GraphNode` on which `__call__` is called.
167
+ :param inputs_from_previous_nodes: Unused outputs of all parent nodes.
168
+ :return: A dictionary containing the attributes.
169
+ """
170
+ attributes = {
171
+ "node_name": self._node_name,
172
+ "component_class": self._component_class.__name__,
173
+ "fn_name": self._fn_name,
174
+ }
175
+
176
+ for node_input in inputs_from_previous_nodes:
177
+ if "LLMCommandGenerator" in node_input[0]:
178
+ commands = node_input[1][0].data.get("commands")
179
+ extract_llm_command_generator_attrs(attributes, commands)
180
+
181
+ if "FlowPolicy" in node_input[0]:
182
+ policy_prediction = node_input[1]
183
+ extract_flow_policy_attrs(attributes, policy_prediction)
184
+
185
+ return attributes
186
+
187
+
188
+ def extract_number_of_events(
189
+ self: MessageProcessor, tracker: DialogueStateTracker
190
+ ) -> Dict[str, Any]:
191
+ """Extract the attributes for `MessageProcessor.save_tracker`.
192
+
193
+ :param self: The `MessageProcessor` on which `save_tracker` is called.
194
+ :param tracker: The `DialogueStateTracker` argument.
195
+ :return: A dictionary containing the attributes.
196
+ """
197
+ return {"number_of_events": len(tracker.events)}
198
+
199
+
200
+ def extract_attrs_for_tracker_store(
201
+ self: TrackerStore,
202
+ event_broker: EventBroker,
203
+ new_events: List[Event],
204
+ sender_id: Text,
205
+ ) -> Dict[str, Any]:
206
+ """Extract the attributes for `TrackerStore.stream_events`.
207
+
208
+ :param self: The `TrackerStore` on which `stream_events` is called.
209
+ :param event_broker: The `EventBroker` on which the new events are published.
210
+ :param new_events: List of new events to stream.
211
+ :param sender_id: The sender id of the tracker to which the new events were added.
212
+ """
213
+ return {
214
+ "number_of_streamed_events": len(new_events),
215
+ "broker_class": self.event_broker.__class__.__name__,
216
+ }
217
+
218
+
219
+ def extract_attrs_for_lock_store(
220
+ self: LockStore,
221
+ conversation_id: Text,
222
+ lock_lifetime: float = LOCK_LIFETIME,
223
+ wait_time_in_seconds: float = 1,
224
+ ) -> Dict[str, Any]:
225
+ """Extract the attributes for `LockStore.lock`.
226
+
227
+ :param self: the `LockStore` on which `lock` is called.
228
+ :param conversation_id: The conversation id for which the lock is acquired.
229
+ :param lock_lifetime: The lifetime of the lock.
230
+ :param wait_time_in_seconds: The time to wait for the lock.
231
+ :return: A dictionary containing the attributes.
232
+ """
233
+ return {"lock_store_class": self.__class__.__name__}
234
+
235
+
236
+ def extract_attrs_for_graph_trainer(
237
+ self: GraphTrainer,
238
+ model_configuration: GraphModelConfiguration,
239
+ importer: TrainingDataImporter,
240
+ output_filename: Path,
241
+ is_finetuning: bool = False,
242
+ force_retraining: bool = False,
243
+ ) -> Dict[str, Any]:
244
+ """Extract the attributes for `GraphTrainer.train`.
245
+
246
+ :param self: the `GraphTrainer` on which `train` is called.
247
+ :param model_configuration: The model configuration (training_type, language etc.).
248
+ :param importer: The importer which provides the training data for the training.
249
+ :param output_filename: The location where the packaged model is saved.
250
+ :param is_finetuning: Boolean argument, if `True` enables incremental training.
251
+ :param force_retraining: Unused boolean argument,i.e, if `True` then the cache
252
+ is skipped and all components are retrained.
253
+ :return: A dictionary containing the attributes.
254
+ """
255
+ return {
256
+ "training_type": model_configuration.training_type.model_type,
257
+ "language": model_configuration.language,
258
+ "recipe_name": importer.get_config().get("recipe"),
259
+ "output_filename": output_filename.name,
260
+ "is_finetuning": is_finetuning,
261
+ }
262
+
263
+
264
+ def extract_headers(message: UserMessage, **kwargs: Any) -> Any:
265
+ """Extract the headers from the `UserMessage`."""
266
+ if message.headers:
267
+ return message.headers
268
+ return {}
269
+
270
+
271
+ def extract_intent_name_and_slots(
272
+ self: MessageProcessor, tracker: DialogueStateTracker
273
+ ) -> Dict[str, Any]:
274
+ """Extract the attributes for `MessageProcessor._predict_next_with_tracker`.
275
+
276
+ :param self: The `MessageProcessor` on which `_predict_next_with_tracker` is called.
277
+ :param tracker: The `DialogueStateTracker` argument.
278
+ :return: A dictionary containing the attributes.
279
+ """
280
+ slots = {}
281
+ for slot_name, slot_value in tracker.slots.items():
282
+ if slot_name == REQUESTED_SLOT and slot_value.value:
283
+ slots[slot_name] = slot_value.value
284
+ break
285
+ return {
286
+ "intent_name": str(tracker.latest_message.intent.get(INTENT_NAME_KEY)), # type: ignore[union-attr]
287
+ **slots,
288
+ }
289
+
290
+
291
+ def extract_attrs_for_command(
292
+ self: Command,
293
+ tracker: DialogueStateTracker,
294
+ all_flows: FlowsList,
295
+ original_tracker: DialogueStateTracker,
296
+ ) -> Dict[str, Any]:
297
+ return {
298
+ "class_name": self.__class__.__name__,
299
+ "number_of_events": len(tracker.events),
300
+ "sender_id": tracker.sender_id,
301
+ }
302
+
303
+
304
+ def extract_llm_config(
305
+ self: Any,
306
+ default_llm_config: Dict[str, Any],
307
+ default_embeddings_config: Dict[str, Any],
308
+ ) -> Dict[str, Any]:
309
+ if isinstance(self, ContextualResponseRephraser):
310
+ # ContextualResponseRephraser is not a graph component, so it's
311
+ # not having a full config.
312
+ config = {"llm": self.llm_config}
313
+ else:
314
+ config = self.config
315
+
316
+ llm_property = combine_custom_and_default_config(
317
+ config.get(LLM_CONFIG_KEY), default_llm_config
318
+ )
319
+
320
+ if isinstance(self, LLMBasedCommandGenerator):
321
+ flow_retrieval_config = config.get(FLOW_RETRIEVAL_KEY, {}) or {}
322
+ embeddings_property = combine_custom_and_default_config(
323
+ flow_retrieval_config.get(EMBEDDINGS_CONFIG_KEY),
324
+ default_embeddings_config,
325
+ )
326
+ else:
327
+ embeddings_property = combine_custom_and_default_config(
328
+ config.get(EMBEDDINGS_CONFIG_KEY), default_embeddings_config
329
+ )
330
+
331
+ attributes = {
332
+ "class_name": self.__class__.__name__,
333
+ # llm client attributes
334
+ "llm_model": str(llm_property.get(MODEL_CONFIG_KEY)),
335
+ "llm_type": str(llm_property.get(PROVIDER_CONFIG_KEY)),
336
+ "llm_model_group_id": str(llm_property.get(MODEL_GROUP_ID_CONFIG_KEY)),
337
+ "llm_temperature": str(llm_property.get("temperature")),
338
+ "llm_request_timeout": str(llm_property.get(TIMEOUT_CONFIG_KEY)),
339
+ # embedding client attributes
340
+ "embeddings_model": str(embeddings_property.get(MODEL_CONFIG_KEY)),
341
+ "embeddings_type": str(embeddings_property.get(PROVIDER_CONFIG_KEY)),
342
+ "embeddings_model_group_id": str(
343
+ embeddings_property.get(MODEL_GROUP_ID_CONFIG_KEY)
344
+ ),
345
+ # TODO: Keeping this to avoid potential breaking changes
346
+ "embeddings": json.dumps(embeddings_property, sort_keys=True),
347
+ "request_timeout": str(llm_property.get(TIMEOUT_CONFIG_KEY)),
348
+ }
349
+
350
+ if DEPLOYMENT_CONFIG_KEY in llm_property:
351
+ attributes["llm_engine"] = str(llm_property.get(DEPLOYMENT_CONFIG_KEY))
352
+
353
+ return attributes
354
+
355
+
356
+ def extract_attrs_for_llm_based_command_generator(
357
+ self: "LLMBasedCommandGenerator",
358
+ prompt: str,
359
+ ) -> Dict[str, Any]:
360
+ from rasa.dialogue_understanding.generator.constants import DEFAULT_LLM_CONFIG
361
+ from rasa.dialogue_understanding.generator.flow_retrieval import (
362
+ DEFAULT_EMBEDDINGS_CONFIG,
363
+ )
364
+
365
+ attributes = extract_llm_config(
366
+ self,
367
+ default_llm_config=DEFAULT_LLM_CONFIG,
368
+ default_embeddings_config=DEFAULT_EMBEDDINGS_CONFIG,
369
+ )
370
+
371
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
372
+
373
+
374
+ def extract_attrs_for_contextual_response_rephraser(
375
+ self: Any,
376
+ prompt: str,
377
+ ) -> Dict[str, Any]:
378
+ from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
379
+
380
+ attributes = extract_llm_config(
381
+ self,
382
+ default_llm_config=DEFAULT_LLM_CONFIG,
383
+ # rephraser is not using embeddings
384
+ default_embeddings_config={},
385
+ )
386
+
387
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
388
+
389
+
390
+ def extract_attrs_for_create_history(
391
+ self: Any,
392
+ tracker: DialogueStateTracker,
393
+ ) -> Dict[str, Any]:
394
+ from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
395
+
396
+ return extract_llm_config(
397
+ self,
398
+ default_llm_config=DEFAULT_LLM_CONFIG,
399
+ # rephraser is not using embeddings
400
+ default_embeddings_config={},
401
+ )
402
+
403
+
404
+ def extract_attrs_for_generate(
405
+ self: Any,
406
+ utter_action: Text,
407
+ tracker: DialogueStateTracker,
408
+ output_channel: Text,
409
+ **kwargs: Any,
410
+ ) -> Optional[Dict[Text, Any]]:
411
+ return {
412
+ "class_name": self.__class__.__name__,
413
+ "utter": utter_action,
414
+ }
415
+
416
+
417
+ def extract_attrs_for_performing_health_check(
418
+ custom_config: Optional[Dict[str, Any]],
419
+ default_config: Dict[str, Any],
420
+ log_source_method: str,
421
+ log_source_component: str,
422
+ ) -> Dict[str, Any]:
423
+ from rasa.shared.utils.health_check.health_check import is_api_health_check_enabled
424
+
425
+ attrs = {
426
+ "api_health_check_enabled": is_api_health_check_enabled(),
427
+ "health_check_trigger_component": log_source_component,
428
+ "health_check_trigger_method": log_source_method,
429
+ }
430
+ if is_api_health_check_enabled():
431
+ attrs["config"] = json.dumps(
432
+ combine_custom_and_default_config(custom_config, default_config)
433
+ )
434
+ return attrs
435
+
436
+
437
+ def extract_attrs_for_execute_commands(
438
+ tracker: DialogueStateTracker,
439
+ all_flows: FlowsList,
440
+ execution_context: ExecutionContext,
441
+ story_graph: Optional[StoryGraph] = None,
442
+ ) -> Dict[str, Any]:
443
+ return {
444
+ "number_of_events": len(tracker.events),
445
+ "sender_id": tracker.sender_id,
446
+ "module_name": "command_processor",
447
+ }
448
+
449
+
450
+ def extract_attrs_for_validate_state_of_commands(
451
+ commands: List[Command],
452
+ ) -> Dict[str, Any]:
453
+ commands_list = []
454
+
455
+ for command in commands:
456
+ command_type = command.command()
457
+ command_as_dict = command.as_dict()
458
+
459
+ if command_type == SET_SLOT_COMMAND:
460
+ command_as_dict.pop("value", None)
461
+
462
+ if command_type == "correct slot":
463
+ corrected_slots = command_as_dict.get("corrected_slots", [])
464
+ updated_corrected_slots = []
465
+ for corrected_slot in corrected_slots:
466
+ corrected_slot.pop("value", None)
467
+ updated_corrected_slots.append(corrected_slot)
468
+
469
+ command_as_dict["corrected_slots"] = updated_corrected_slots
470
+
471
+ commands_list.append(command_as_dict)
472
+
473
+ return {
474
+ "cleaned_up_commands": str(commands_list),
475
+ "module_name": "command_processor",
476
+ }
477
+
478
+
479
+ def extract_attrs_for_clean_up_commands(
480
+ commands: List[Command],
481
+ tracker: DialogueStateTracker,
482
+ all_flows: FlowsList,
483
+ execution_context: ExecutionContext,
484
+ story_graph: Optional[StoryGraph] = None,
485
+ ) -> Dict[str, Any]:
486
+ commands_list = []
487
+
488
+ for command in commands:
489
+ command_type = command.command()
490
+ command_as_dict = command.as_dict()
491
+
492
+ if command_type == SET_SLOT_COMMAND:
493
+ command_as_dict.pop("value", None)
494
+
495
+ commands_list.append(command_as_dict)
496
+
497
+ current_context = extract_current_context_attribute(tracker.stack)
498
+
499
+ return {
500
+ "commands": str(commands_list),
501
+ "module_name": "command_processor",
502
+ "current_context": json.dumps(current_context),
503
+ }
504
+
505
+
506
+ def extract_attrs_for_remove_duplicated_set_slots(
507
+ events: List[Event],
508
+ ) -> Dict[str, Any]:
509
+ resulting_events = []
510
+
511
+ for event in events:
512
+ event_as_dict = event.as_dict()
513
+
514
+ if event_as_dict.get("event") == "stack":
515
+ update = event_as_dict.pop("update", "")
516
+ if update:
517
+ update = json.loads(update)
518
+ for update_dict in update:
519
+ value = update_dict.pop("value", {})
520
+ value.pop("corrected_slots", None)
521
+ update_dict["value"] = json.dumps(value)
522
+ event_as_dict["update"] = str([update_dict])
523
+ break
524
+
525
+ elif event_as_dict.get("event") == "slot":
526
+ event_as_dict.pop("value", None)
527
+
528
+ resulting_events.append(event_as_dict)
529
+
530
+ return {
531
+ "resulting_events": str(resulting_events),
532
+ "module_name": "command_processor",
533
+ }
534
+
535
+
536
+ def extract_attrs_for_check_commands_against_startable_flows(
537
+ self: "CommandGenerator", commands: List[Command], startable_flows: FlowsList
538
+ ) -> Dict[str, Any]:
539
+ commands_list = []
540
+
541
+ for command in commands:
542
+ command_as_dict = command.as_dict()
543
+ command_type = command.command()
544
+
545
+ if command_type == SET_SLOT_COMMAND:
546
+ slot_value = command_as_dict.pop("value", None)
547
+ command_as_dict["is_slot_value_missing_or_none"] = slot_value is None
548
+
549
+ commands_list.append(command_as_dict)
550
+
551
+ startable_flow_ids = [flow.id for flow in startable_flows.underlying_flows]
552
+
553
+ return {
554
+ "commands": json.dumps(commands_list),
555
+ "startable_flow_ids": json.dumps(startable_flow_ids),
556
+ }
557
+
558
+
559
+ def extract_attrs_for_advance_flows(
560
+ tracker: DialogueStateTracker, available_actions: List[str], flows: FlowsList
561
+ ) -> Dict[str, Any]:
562
+ from rasa.tracing.instrumentation.instrumentation import FLOW_EXECUTOR_MODULE_NAME
563
+
564
+ current_context = extract_current_context_attribute(tracker.stack)
565
+
566
+ return {
567
+ "module_name": FLOW_EXECUTOR_MODULE_NAME,
568
+ "available_actions": json.dumps(available_actions),
569
+ "current_context": json.dumps(current_context),
570
+ }
571
+
572
+
573
+ def extract_attrs_for_run_step(
574
+ step: FlowStep,
575
+ flow: Flow,
576
+ stack: DialogueStack,
577
+ tracker: DialogueStateTracker,
578
+ available_actions: List[str],
579
+ flows: FlowsList,
580
+ ) -> Dict[str, Any]:
581
+ current_context = extract_current_context_attribute(stack)
582
+
583
+ return {
584
+ "step_custom_id": step.custom_id if step.custom_id else "None",
585
+ "step_description": step.description if step.description else "None",
586
+ "current_flow_id": flow.id,
587
+ "current_context": json.dumps(current_context),
588
+ }
589
+
590
+
591
+ def extract_attrs_for_policy_prediction(
592
+ self: Any,
593
+ probabilities: List[float],
594
+ events: Optional[List[Event]] = None,
595
+ optional_events: Optional[List[Event]] = None,
596
+ is_end_to_end_prediction: bool = False,
597
+ is_no_user_prediction: bool = False,
598
+ diagnostic_data: Optional[Dict[Text, Any]] = None,
599
+ action_metadata: Optional[Dict[Text, Any]] = None,
600
+ ) -> Dict[str, Any]:
601
+ # diagnostic_data can contain ndarray type values which need to be converted
602
+ # into a list since the returning values have to be JSON serializable.
603
+ if isinstance(diagnostic_data, dict):
604
+ diagnostic_data = {
605
+ key: value.tolist() if isinstance(value, ndarray) else value
606
+ for key, value in diagnostic_data.items()
607
+ }
608
+
609
+ return {
610
+ "priority": self.priority,
611
+ "events": [event.__class__.__name__ for event in events] if events else "None",
612
+ "optional_events": [event.__class__.__name__ for event in optional_events]
613
+ if optional_events
614
+ else "None",
615
+ "is_end_to_end_prediction": is_end_to_end_prediction,
616
+ "is_no_user_prediction": is_no_user_prediction,
617
+ "diagnostic_data": json.dumps(diagnostic_data),
618
+ "action_metadata": json.dumps(action_metadata),
619
+ }
620
+
621
+
622
+ def extract_attrs_for_intentless_policy_prediction_result(
623
+ self: "IntentlessPolicy",
624
+ action_name: Optional[Text],
625
+ domain: Domain,
626
+ score: Optional[float] = 1.0,
627
+ ) -> Dict[str, Any]:
628
+ return {
629
+ "action_name": action_name if action_name else "null",
630
+ "score": score if score else 0.0,
631
+ }
632
+
633
+
634
+ def extract_attrs_for_intentless_policy_find_closest_response(
635
+ self: "IntentlessPolicy",
636
+ tracker: DialogueStateTracker,
637
+ ) -> Dict[str, Any]:
638
+ return {
639
+ "current_context": json.dumps(tracker.stack.current_context()),
640
+ }
641
+
642
+
643
+ def extract_attrs_for_intentless_policy_generate_llm_answer(
644
+ self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
645
+ ) -> Dict[str, Any]:
646
+ from rasa.core.policies.intentless_policy import (
647
+ DEFAULT_LLM_CONFIG,
648
+ DEFAULT_EMBEDDINGS_CONFIG,
649
+ )
650
+
651
+ attributes = extract_llm_config(
652
+ self,
653
+ default_llm_config=DEFAULT_LLM_CONFIG,
654
+ default_embeddings_config=DEFAULT_EMBEDDINGS_CONFIG,
655
+ )
656
+
657
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
658
+
659
+
660
+ def extract_attrs_for_enterprise_search_generate_llm_answer(
661
+ self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
662
+ ) -> Dict[str, Any]:
663
+ from rasa.core.policies.enterprise_search_policy import (
664
+ DEFAULT_LLM_CONFIG,
665
+ DEFAULT_EMBEDDINGS_CONFIG,
666
+ )
667
+
668
+ attributes = extract_llm_config(
669
+ self,
670
+ default_llm_config=DEFAULT_LLM_CONFIG,
671
+ default_embeddings_config=DEFAULT_EMBEDDINGS_CONFIG,
672
+ )
673
+
674
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
675
+
676
+
677
+ def extract_current_context_attribute(stack: DialogueStack) -> Dict[str, Any]:
678
+ """Utility function to extract the current context from the dialogue stack."""
679
+ current_context = stack.current_context()
680
+
681
+ if "corrected_slots" in current_context:
682
+ current_context["corrected_slots"] = list(
683
+ current_context["corrected_slots"].keys()
684
+ )
685
+
686
+ return current_context
687
+
688
+
689
+ def compute_prompt_tokens_length(
690
+ model_type: str, model_name: str, prompt: str
691
+ ) -> Optional[int]:
692
+ """Utility function to compute the length of the prompt tokens for OpenAI models."""
693
+ if model_type != "openai":
694
+ logger.warning(
695
+ "Tracing prompt tokens is only supported for OpenAI models. Skipping."
696
+ )
697
+ return None
698
+
699
+ if model_name in ["gpt-3.5-turbo", "gpt-4"]:
700
+ logger.debug(
701
+ f"Model {model_name} may update over time. "
702
+ f"Returning num tokens assuming model '{model_name}-0613.'"
703
+ )
704
+ model_name = f"{model_name}-0613"
705
+
706
+ encoding = tiktoken.encoding_for_model(model_name)
707
+ return len(encoding.encode(prompt))
708
+
709
+
710
+ def extend_attributes_with_prompt_tokens_length(
711
+ self: Any,
712
+ attributes: Dict[str, Any],
713
+ prompt: str,
714
+ ) -> Dict[str, Any]:
715
+ if not self.trace_prompt_tokens:
716
+ return attributes
717
+
718
+ len_prompt_tokens = compute_prompt_tokens_length(
719
+ model_type=attributes["llm_type"],
720
+ model_name=attributes["llm_model"],
721
+ prompt=prompt,
722
+ )
723
+
724
+ attributes[PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME] = str(len_prompt_tokens)
725
+
726
+ return attributes
727
+
728
+
729
+ def extract_attrs_for_custom_action_executor_run(
730
+ self: Union[
731
+ HTTPCustomActionExecutor, GRPCCustomActionExecutor, DirectCustomActionExecutor
732
+ ],
733
+ tracker: DialogueStateTracker,
734
+ domain: Domain,
735
+ include_domain: bool = False,
736
+ ) -> Dict[str, Any]:
737
+ actions_module, url = None, None
738
+ if hasattr(self, "action_endpoint"):
739
+ url = self.action_endpoint.url
740
+ actions_module = self.action_endpoint.actions_module
741
+
742
+ attrs: Dict[str, Any] = {
743
+ "class_name": self.__class__.__name__,
744
+ "action_name": self.action_name if hasattr(self, "action_name") else "None",
745
+ "sender_id": tracker.sender_id,
746
+ "url": str(url),
747
+ "actions_module": str(actions_module),
748
+ }
749
+ return attrs
750
+
751
+
752
+ def extract_attrs_for_grpc_custom_action_executor_request(
753
+ self: GRPCCustomActionExecutor,
754
+ request: action_webhook_pb2.WebhookRequest,
755
+ ) -> Dict[str, Any]:
756
+ attrs: Dict[str, Any] = {"url": self.action_endpoint.url}
757
+
758
+ attrs.update(
759
+ {
760
+ REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME: request.ByteSize(),
761
+ }
762
+ )
763
+
764
+ return attrs