rasa-pro 3.8.16__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 (644) hide show
  1. README.md +380 -0
  2. rasa/__init__.py +10 -0
  3. rasa/__main__.py +151 -0
  4. rasa/anonymization/__init__.py +2 -0
  5. rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
  6. rasa/anonymization/anonymization_pipeline.py +287 -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 +117 -0
  11. rasa/api.py +146 -0
  12. rasa/cli/__init__.py +5 -0
  13. rasa/cli/arguments/__init__.py +0 -0
  14. rasa/cli/arguments/data.py +81 -0
  15. rasa/cli/arguments/default_arguments.py +165 -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 +204 -0
  20. rasa/cli/arguments/shell.py +13 -0
  21. rasa/cli/arguments/test.py +211 -0
  22. rasa/cli/arguments/train.py +263 -0
  23. rasa/cli/arguments/visualize.py +34 -0
  24. rasa/cli/arguments/x.py +30 -0
  25. rasa/cli/data.py +292 -0
  26. rasa/cli/e2e_test.py +566 -0
  27. rasa/cli/evaluate.py +222 -0
  28. rasa/cli/export.py +251 -0
  29. rasa/cli/inspect.py +63 -0
  30. rasa/cli/interactive.py +164 -0
  31. rasa/cli/license.py +65 -0
  32. rasa/cli/markers.py +78 -0
  33. rasa/cli/project_templates/__init__.py +0 -0
  34. rasa/cli/project_templates/calm/actions/__init__.py +0 -0
  35. rasa/cli/project_templates/calm/actions/action_template.py +27 -0
  36. rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
  37. rasa/cli/project_templates/calm/actions/db.py +57 -0
  38. rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
  39. rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
  40. rasa/cli/project_templates/calm/config.yml +12 -0
  41. rasa/cli/project_templates/calm/credentials.yml +33 -0
  42. rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
  43. rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
  44. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
  45. rasa/cli/project_templates/calm/db/contacts.json +10 -0
  46. rasa/cli/project_templates/calm/domain/add_contact.yml +33 -0
  47. rasa/cli/project_templates/calm/domain/list_contacts.yml +14 -0
  48. rasa/cli/project_templates/calm/domain/remove_contact.yml +31 -0
  49. rasa/cli/project_templates/calm/domain/shared.yml +5 -0
  50. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
  51. rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
  52. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
  53. rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
  54. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
  55. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
  56. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
  57. rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
  58. rasa/cli/project_templates/calm/endpoints.yml +45 -0
  59. rasa/cli/project_templates/default/actions/__init__.py +0 -0
  60. rasa/cli/project_templates/default/actions/actions.py +27 -0
  61. rasa/cli/project_templates/default/config.yml +44 -0
  62. rasa/cli/project_templates/default/credentials.yml +33 -0
  63. rasa/cli/project_templates/default/data/nlu.yml +91 -0
  64. rasa/cli/project_templates/default/data/rules.yml +13 -0
  65. rasa/cli/project_templates/default/data/stories.yml +30 -0
  66. rasa/cli/project_templates/default/domain.yml +34 -0
  67. rasa/cli/project_templates/default/endpoints.yml +42 -0
  68. rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
  69. rasa/cli/project_templates/tutorial/actions.py +22 -0
  70. rasa/cli/project_templates/tutorial/config.yml +11 -0
  71. rasa/cli/project_templates/tutorial/credentials.yml +33 -0
  72. rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
  73. rasa/cli/project_templates/tutorial/domain.yml +17 -0
  74. rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
  75. rasa/cli/run.py +136 -0
  76. rasa/cli/scaffold.py +268 -0
  77. rasa/cli/shell.py +141 -0
  78. rasa/cli/studio/__init__.py +0 -0
  79. rasa/cli/studio/download.py +51 -0
  80. rasa/cli/studio/studio.py +110 -0
  81. rasa/cli/studio/train.py +59 -0
  82. rasa/cli/studio/upload.py +85 -0
  83. rasa/cli/telemetry.py +90 -0
  84. rasa/cli/test.py +280 -0
  85. rasa/cli/train.py +260 -0
  86. rasa/cli/utils.py +453 -0
  87. rasa/cli/visualize.py +40 -0
  88. rasa/cli/x.py +205 -0
  89. rasa/constants.py +37 -0
  90. rasa/core/__init__.py +17 -0
  91. rasa/core/actions/__init__.py +0 -0
  92. rasa/core/actions/action.py +1450 -0
  93. rasa/core/actions/action_clean_stack.py +59 -0
  94. rasa/core/actions/action_run_slot_rejections.py +207 -0
  95. rasa/core/actions/action_trigger_chitchat.py +31 -0
  96. rasa/core/actions/action_trigger_flow.py +109 -0
  97. rasa/core/actions/action_trigger_search.py +31 -0
  98. rasa/core/actions/constants.py +2 -0
  99. rasa/core/actions/forms.py +737 -0
  100. rasa/core/actions/loops.py +111 -0
  101. rasa/core/actions/two_stage_fallback.py +186 -0
  102. rasa/core/agent.py +557 -0
  103. rasa/core/auth_retry_tracker_store.py +122 -0
  104. rasa/core/brokers/__init__.py +0 -0
  105. rasa/core/brokers/broker.py +126 -0
  106. rasa/core/brokers/file.py +58 -0
  107. rasa/core/brokers/kafka.py +322 -0
  108. rasa/core/brokers/pika.py +387 -0
  109. rasa/core/brokers/sql.py +86 -0
  110. rasa/core/channels/__init__.py +55 -0
  111. rasa/core/channels/audiocodes.py +463 -0
  112. rasa/core/channels/botframework.py +339 -0
  113. rasa/core/channels/callback.py +85 -0
  114. rasa/core/channels/channel.py +419 -0
  115. rasa/core/channels/console.py +243 -0
  116. rasa/core/channels/development_inspector.py +93 -0
  117. rasa/core/channels/facebook.py +422 -0
  118. rasa/core/channels/hangouts.py +335 -0
  119. rasa/core/channels/inspector/.eslintrc.cjs +25 -0
  120. rasa/core/channels/inspector/.gitignore +23 -0
  121. rasa/core/channels/inspector/README.md +54 -0
  122. rasa/core/channels/inspector/assets/favicon.ico +0 -0
  123. rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
  124. rasa/core/channels/inspector/custom.d.ts +3 -0
  125. rasa/core/channels/inspector/dist/assets/arc-5623b6dc.js +1 -0
  126. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  127. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-685c106a.js +10 -0
  128. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-8cbed007.js +2 -0
  129. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-5889cf12.js +2 -0
  130. rasa/core/channels/inspector/dist/assets/createText-62fc7601-24c249d7.js +7 -0
  131. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-7dd06a75.js +4 -0
  132. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-62c1e54c.js +51 -0
  133. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-ce49b86f.js +6 -0
  134. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-4067e48f.js +4 -0
  135. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-85583a23.js +1 -0
  136. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-59fe4051.js +139 -0
  137. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-47e3a43b.js +266 -0
  138. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-5a2ac0d9.js +70 -0
  139. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
  140. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
  141. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
  142. rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
  143. rasa/core/channels/inspector/dist/assets/index-268a75c0.js +1040 -0
  144. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-dfb8efc4.js +1 -0
  145. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  146. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-b0c470f2.js +7 -0
  147. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  148. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-2edb829a.js +139 -0
  149. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
  150. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
  151. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
  152. rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
  153. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
  154. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
  155. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
  156. rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
  157. rasa/core/channels/inspector/dist/assets/layout-b6873d69.js +1 -0
  158. rasa/core/channels/inspector/dist/assets/line-1efc5781.js +1 -0
  159. rasa/core/channels/inspector/dist/assets/linear-661e9b94.js +1 -0
  160. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-2d2e727f.js +109 -0
  161. rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
  162. rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
  163. rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-9d3ea93d.js +35 -0
  164. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-06a178a2.js +7 -0
  165. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-0bfedffc.js +52 -0
  166. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-d76d0a04.js +8 -0
  167. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-37bb4341.js +122 -0
  168. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-f52f7f57.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-4a986a20.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/styles-080da4f6-7dd9ae12.js +110 -0
  171. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-46e1ca14.js +159 -0
  172. rasa/core/channels/inspector/dist/assets/styles-9c745c82-4a97439a.js +207 -0
  173. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-823917a3.js +1 -0
  174. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-9ea72896.js +61 -0
  175. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-b631a8b6.js +7 -0
  176. rasa/core/channels/inspector/dist/index.html +39 -0
  177. rasa/core/channels/inspector/index.html +37 -0
  178. rasa/core/channels/inspector/jest.config.ts +13 -0
  179. rasa/core/channels/inspector/package.json +48 -0
  180. rasa/core/channels/inspector/setupTests.ts +2 -0
  181. rasa/core/channels/inspector/src/App.tsx +170 -0
  182. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +97 -0
  183. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
  184. rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -0
  185. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
  186. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
  187. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +19 -0
  188. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
  189. rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
  190. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
  191. rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
  192. rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
  193. rasa/core/channels/inspector/src/helpers/formatters.test.ts +385 -0
  194. rasa/core/channels/inspector/src/helpers/formatters.ts +239 -0
  195. rasa/core/channels/inspector/src/helpers/utils.ts +42 -0
  196. rasa/core/channels/inspector/src/main.tsx +13 -0
  197. rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
  198. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
  199. rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
  200. rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
  201. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
  202. rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
  203. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
  204. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
  205. rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
  206. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
  207. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
  208. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
  209. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
  210. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
  211. rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
  212. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
  213. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
  214. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
  215. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
  216. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
  217. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
  218. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
  219. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
  220. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
  221. rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
  222. rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
  223. rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
  224. rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
  225. rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
  226. rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
  227. rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
  228. rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
  229. rasa/core/channels/inspector/src/theme/index.ts +101 -0
  230. rasa/core/channels/inspector/src/types.ts +64 -0
  231. rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
  232. rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
  233. rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
  234. rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
  235. rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
  236. rasa/core/channels/inspector/tsconfig.json +26 -0
  237. rasa/core/channels/inspector/tsconfig.node.json +10 -0
  238. rasa/core/channels/inspector/vite.config.ts +8 -0
  239. rasa/core/channels/inspector/yarn.lock +6156 -0
  240. rasa/core/channels/mattermost.py +229 -0
  241. rasa/core/channels/rasa_chat.py +126 -0
  242. rasa/core/channels/rest.py +210 -0
  243. rasa/core/channels/rocketchat.py +175 -0
  244. rasa/core/channels/slack.py +620 -0
  245. rasa/core/channels/socketio.py +274 -0
  246. rasa/core/channels/telegram.py +298 -0
  247. rasa/core/channels/twilio.py +169 -0
  248. rasa/core/channels/twilio_voice.py +367 -0
  249. rasa/core/channels/vier_cvg.py +374 -0
  250. rasa/core/channels/webexteams.py +135 -0
  251. rasa/core/concurrent_lock_store.py +210 -0
  252. rasa/core/constants.py +107 -0
  253. rasa/core/evaluation/__init__.py +0 -0
  254. rasa/core/evaluation/marker.py +267 -0
  255. rasa/core/evaluation/marker_base.py +925 -0
  256. rasa/core/evaluation/marker_stats.py +294 -0
  257. rasa/core/evaluation/marker_tracker_loader.py +103 -0
  258. rasa/core/exceptions.py +29 -0
  259. rasa/core/exporter.py +284 -0
  260. rasa/core/featurizers/__init__.py +0 -0
  261. rasa/core/featurizers/precomputation.py +410 -0
  262. rasa/core/featurizers/single_state_featurizer.py +402 -0
  263. rasa/core/featurizers/tracker_featurizers.py +1172 -0
  264. rasa/core/http_interpreter.py +89 -0
  265. rasa/core/information_retrieval/__init__.py +0 -0
  266. rasa/core/information_retrieval/faiss.py +116 -0
  267. rasa/core/information_retrieval/information_retrieval.py +72 -0
  268. rasa/core/information_retrieval/milvus.py +59 -0
  269. rasa/core/information_retrieval/qdrant.py +102 -0
  270. rasa/core/jobs.py +63 -0
  271. rasa/core/lock.py +139 -0
  272. rasa/core/lock_store.py +344 -0
  273. rasa/core/migrate.py +404 -0
  274. rasa/core/nlg/__init__.py +3 -0
  275. rasa/core/nlg/callback.py +147 -0
  276. rasa/core/nlg/contextual_response_rephraser.py +270 -0
  277. rasa/core/nlg/generator.py +230 -0
  278. rasa/core/nlg/interpolator.py +143 -0
  279. rasa/core/nlg/response.py +155 -0
  280. rasa/core/nlg/summarize.py +69 -0
  281. rasa/core/policies/__init__.py +0 -0
  282. rasa/core/policies/ensemble.py +329 -0
  283. rasa/core/policies/enterprise_search_policy.py +717 -0
  284. rasa/core/policies/enterprise_search_prompt_template.jinja2 +62 -0
  285. rasa/core/policies/flow_policy.py +205 -0
  286. rasa/core/policies/flows/__init__.py +0 -0
  287. rasa/core/policies/flows/flow_exceptions.py +44 -0
  288. rasa/core/policies/flows/flow_executor.py +582 -0
  289. rasa/core/policies/flows/flow_step_result.py +43 -0
  290. rasa/core/policies/intentless_policy.py +924 -0
  291. rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
  292. rasa/core/policies/memoization.py +538 -0
  293. rasa/core/policies/policy.py +716 -0
  294. rasa/core/policies/rule_policy.py +1276 -0
  295. rasa/core/policies/ted_policy.py +2146 -0
  296. rasa/core/policies/unexpected_intent_policy.py +1015 -0
  297. rasa/core/processor.py +1331 -0
  298. rasa/core/run.py +315 -0
  299. rasa/core/secrets_manager/__init__.py +0 -0
  300. rasa/core/secrets_manager/constants.py +32 -0
  301. rasa/core/secrets_manager/endpoints.py +391 -0
  302. rasa/core/secrets_manager/factory.py +233 -0
  303. rasa/core/secrets_manager/secret_manager.py +262 -0
  304. rasa/core/secrets_manager/vault.py +576 -0
  305. rasa/core/test.py +1337 -0
  306. rasa/core/tracker_store.py +1664 -0
  307. rasa/core/train.py +107 -0
  308. rasa/core/training/__init__.py +89 -0
  309. rasa/core/training/converters/__init__.py +0 -0
  310. rasa/core/training/converters/responses_prefix_converter.py +119 -0
  311. rasa/core/training/interactive.py +1742 -0
  312. rasa/core/training/story_conflict.py +381 -0
  313. rasa/core/training/training.py +93 -0
  314. rasa/core/utils.py +344 -0
  315. rasa/core/visualize.py +70 -0
  316. rasa/dialogue_understanding/__init__.py +0 -0
  317. rasa/dialogue_understanding/coexistence/__init__.py +0 -0
  318. rasa/dialogue_understanding/coexistence/constants.py +4 -0
  319. rasa/dialogue_understanding/coexistence/intent_based_router.py +189 -0
  320. rasa/dialogue_understanding/coexistence/llm_based_router.py +261 -0
  321. rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
  322. rasa/dialogue_understanding/commands/__init__.py +45 -0
  323. rasa/dialogue_understanding/commands/can_not_handle_command.py +61 -0
  324. rasa/dialogue_understanding/commands/cancel_flow_command.py +116 -0
  325. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +48 -0
  326. rasa/dialogue_understanding/commands/clarify_command.py +77 -0
  327. rasa/dialogue_understanding/commands/command.py +85 -0
  328. rasa/dialogue_understanding/commands/correct_slots_command.py +288 -0
  329. rasa/dialogue_understanding/commands/error_command.py +67 -0
  330. rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
  331. rasa/dialogue_understanding/commands/handle_code_change_command.py +64 -0
  332. rasa/dialogue_understanding/commands/human_handoff_command.py +57 -0
  333. rasa/dialogue_understanding/commands/knowledge_answer_command.py +48 -0
  334. rasa/dialogue_understanding/commands/noop_command.py +45 -0
  335. rasa/dialogue_understanding/commands/set_slot_command.py +125 -0
  336. rasa/dialogue_understanding/commands/skip_question_command.py +66 -0
  337. rasa/dialogue_understanding/commands/start_flow_command.py +98 -0
  338. rasa/dialogue_understanding/generator/__init__.py +6 -0
  339. rasa/dialogue_understanding/generator/command_generator.py +257 -0
  340. rasa/dialogue_understanding/generator/command_prompt_template.jinja2 +57 -0
  341. rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
  342. rasa/dialogue_understanding/generator/flow_retrieval.py +410 -0
  343. rasa/dialogue_understanding/generator/llm_command_generator.py +637 -0
  344. rasa/dialogue_understanding/generator/nlu_command_adapter.py +157 -0
  345. rasa/dialogue_understanding/patterns/__init__.py +0 -0
  346. rasa/dialogue_understanding/patterns/cancel.py +111 -0
  347. rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
  348. rasa/dialogue_understanding/patterns/chitchat.py +37 -0
  349. rasa/dialogue_understanding/patterns/clarify.py +97 -0
  350. rasa/dialogue_understanding/patterns/code_change.py +41 -0
  351. rasa/dialogue_understanding/patterns/collect_information.py +90 -0
  352. rasa/dialogue_understanding/patterns/completed.py +40 -0
  353. rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
  354. rasa/dialogue_understanding/patterns/correction.py +278 -0
  355. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +243 -0
  356. rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
  357. rasa/dialogue_understanding/patterns/internal_error.py +47 -0
  358. rasa/dialogue_understanding/patterns/search.py +37 -0
  359. rasa/dialogue_understanding/patterns/skip_question.py +38 -0
  360. rasa/dialogue_understanding/processor/__init__.py +0 -0
  361. rasa/dialogue_understanding/processor/command_processor.py +578 -0
  362. rasa/dialogue_understanding/processor/command_processor_component.py +39 -0
  363. rasa/dialogue_understanding/stack/__init__.py +0 -0
  364. rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
  365. rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
  366. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
  367. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
  368. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
  369. rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
  370. rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
  371. rasa/dialogue_understanding/stack/utils.py +211 -0
  372. rasa/e2e_test/__init__.py +0 -0
  373. rasa/e2e_test/constants.py +10 -0
  374. rasa/e2e_test/e2e_test_case.py +322 -0
  375. rasa/e2e_test/e2e_test_result.py +34 -0
  376. rasa/e2e_test/e2e_test_runner.py +659 -0
  377. rasa/e2e_test/e2e_test_schema.yml +67 -0
  378. rasa/engine/__init__.py +0 -0
  379. rasa/engine/caching.py +464 -0
  380. rasa/engine/constants.py +17 -0
  381. rasa/engine/exceptions.py +14 -0
  382. rasa/engine/graph.py +625 -0
  383. rasa/engine/loader.py +36 -0
  384. rasa/engine/recipes/__init__.py +0 -0
  385. rasa/engine/recipes/config_files/default_config.yml +44 -0
  386. rasa/engine/recipes/default_components.py +99 -0
  387. rasa/engine/recipes/default_recipe.py +1252 -0
  388. rasa/engine/recipes/graph_recipe.py +79 -0
  389. rasa/engine/recipes/recipe.py +93 -0
  390. rasa/engine/runner/__init__.py +0 -0
  391. rasa/engine/runner/dask.py +256 -0
  392. rasa/engine/runner/interface.py +49 -0
  393. rasa/engine/storage/__init__.py +0 -0
  394. rasa/engine/storage/local_model_storage.py +248 -0
  395. rasa/engine/storage/resource.py +110 -0
  396. rasa/engine/storage/storage.py +203 -0
  397. rasa/engine/training/__init__.py +0 -0
  398. rasa/engine/training/components.py +176 -0
  399. rasa/engine/training/fingerprinting.py +64 -0
  400. rasa/engine/training/graph_trainer.py +256 -0
  401. rasa/engine/training/hooks.py +164 -0
  402. rasa/engine/validation.py +839 -0
  403. rasa/env.py +5 -0
  404. rasa/exceptions.py +69 -0
  405. rasa/graph_components/__init__.py +0 -0
  406. rasa/graph_components/converters/__init__.py +0 -0
  407. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  408. rasa/graph_components/providers/__init__.py +0 -0
  409. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  410. rasa/graph_components/providers/domain_provider.py +71 -0
  411. rasa/graph_components/providers/flows_provider.py +74 -0
  412. rasa/graph_components/providers/forms_provider.py +44 -0
  413. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  414. rasa/graph_components/providers/responses_provider.py +44 -0
  415. rasa/graph_components/providers/rule_only_provider.py +49 -0
  416. rasa/graph_components/providers/story_graph_provider.py +43 -0
  417. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  418. rasa/graph_components/validators/__init__.py +0 -0
  419. rasa/graph_components/validators/default_recipe_validator.py +552 -0
  420. rasa/graph_components/validators/finetuning_validator.py +302 -0
  421. rasa/hooks.py +113 -0
  422. rasa/jupyter.py +63 -0
  423. rasa/keys +1 -0
  424. rasa/markers/__init__.py +0 -0
  425. rasa/markers/marker.py +269 -0
  426. rasa/markers/marker_base.py +828 -0
  427. rasa/markers/upload.py +74 -0
  428. rasa/markers/validate.py +21 -0
  429. rasa/model.py +118 -0
  430. rasa/model_testing.py +457 -0
  431. rasa/model_training.py +535 -0
  432. rasa/nlu/__init__.py +7 -0
  433. rasa/nlu/classifiers/__init__.py +3 -0
  434. rasa/nlu/classifiers/classifier.py +5 -0
  435. rasa/nlu/classifiers/diet_classifier.py +1874 -0
  436. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  437. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  438. rasa/nlu/classifiers/llm_intent_classifier.py +519 -0
  439. rasa/nlu/classifiers/logistic_regression_classifier.py +240 -0
  440. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  441. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  442. rasa/nlu/classifiers/sklearn_intent_classifier.py +309 -0
  443. rasa/nlu/constants.py +77 -0
  444. rasa/nlu/convert.py +40 -0
  445. rasa/nlu/emulators/__init__.py +0 -0
  446. rasa/nlu/emulators/dialogflow.py +55 -0
  447. rasa/nlu/emulators/emulator.py +49 -0
  448. rasa/nlu/emulators/luis.py +86 -0
  449. rasa/nlu/emulators/no_emulator.py +10 -0
  450. rasa/nlu/emulators/wit.py +56 -0
  451. rasa/nlu/extractors/__init__.py +0 -0
  452. rasa/nlu/extractors/crf_entity_extractor.py +672 -0
  453. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  454. rasa/nlu/extractors/entity_synonyms.py +178 -0
  455. rasa/nlu/extractors/extractor.py +470 -0
  456. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  457. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  458. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  459. rasa/nlu/featurizers/__init__.py +0 -0
  460. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  461. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +449 -0
  462. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  463. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +772 -0
  464. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  465. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  466. rasa/nlu/featurizers/featurizer.py +89 -0
  467. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  468. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +840 -0
  469. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +539 -0
  470. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +269 -0
  471. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  472. rasa/nlu/model.py +24 -0
  473. rasa/nlu/persistor.py +240 -0
  474. rasa/nlu/run.py +27 -0
  475. rasa/nlu/selectors/__init__.py +0 -0
  476. rasa/nlu/selectors/response_selector.py +990 -0
  477. rasa/nlu/test.py +1943 -0
  478. rasa/nlu/tokenizers/__init__.py +0 -0
  479. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  480. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  481. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  482. rasa/nlu/tokenizers/tokenizer.py +239 -0
  483. rasa/nlu/tokenizers/whitespace_tokenizer.py +106 -0
  484. rasa/nlu/utils/__init__.py +35 -0
  485. rasa/nlu/utils/bilou_utils.py +462 -0
  486. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  487. rasa/nlu/utils/hugging_face/registry.py +108 -0
  488. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  489. rasa/nlu/utils/mitie_utils.py +113 -0
  490. rasa/nlu/utils/pattern_utils.py +168 -0
  491. rasa/nlu/utils/spacy_utils.py +312 -0
  492. rasa/plugin.py +90 -0
  493. rasa/server.py +1536 -0
  494. rasa/shared/__init__.py +0 -0
  495. rasa/shared/constants.py +181 -0
  496. rasa/shared/core/__init__.py +0 -0
  497. rasa/shared/core/constants.py +168 -0
  498. rasa/shared/core/conversation.py +46 -0
  499. rasa/shared/core/domain.py +2106 -0
  500. rasa/shared/core/events.py +2507 -0
  501. rasa/shared/core/flows/__init__.py +7 -0
  502. rasa/shared/core/flows/flow.py +353 -0
  503. rasa/shared/core/flows/flow_step.py +146 -0
  504. rasa/shared/core/flows/flow_step_links.py +319 -0
  505. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  506. rasa/shared/core/flows/flows_list.py +211 -0
  507. rasa/shared/core/flows/flows_yaml_schema.json +217 -0
  508. rasa/shared/core/flows/nlu_trigger.py +117 -0
  509. rasa/shared/core/flows/steps/__init__.py +24 -0
  510. rasa/shared/core/flows/steps/action.py +51 -0
  511. rasa/shared/core/flows/steps/call.py +64 -0
  512. rasa/shared/core/flows/steps/collect.py +112 -0
  513. rasa/shared/core/flows/steps/constants.py +5 -0
  514. rasa/shared/core/flows/steps/continuation.py +36 -0
  515. rasa/shared/core/flows/steps/end.py +22 -0
  516. rasa/shared/core/flows/steps/internal.py +44 -0
  517. rasa/shared/core/flows/steps/link.py +51 -0
  518. rasa/shared/core/flows/steps/no_operation.py +48 -0
  519. rasa/shared/core/flows/steps/set_slots.py +50 -0
  520. rasa/shared/core/flows/steps/start.py +30 -0
  521. rasa/shared/core/flows/validation.py +527 -0
  522. rasa/shared/core/flows/yaml_flows_io.py +278 -0
  523. rasa/shared/core/generator.py +907 -0
  524. rasa/shared/core/slot_mappings.py +235 -0
  525. rasa/shared/core/slots.py +647 -0
  526. rasa/shared/core/trackers.py +1159 -0
  527. rasa/shared/core/training_data/__init__.py +0 -0
  528. rasa/shared/core/training_data/loading.py +90 -0
  529. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  530. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  531. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  532. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  533. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  534. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  535. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +442 -0
  536. rasa/shared/core/training_data/structures.py +838 -0
  537. rasa/shared/core/training_data/visualization.html +146 -0
  538. rasa/shared/core/training_data/visualization.py +603 -0
  539. rasa/shared/data.py +192 -0
  540. rasa/shared/engine/__init__.py +0 -0
  541. rasa/shared/engine/caching.py +26 -0
  542. rasa/shared/exceptions.py +129 -0
  543. rasa/shared/importers/__init__.py +0 -0
  544. rasa/shared/importers/importer.py +705 -0
  545. rasa/shared/importers/multi_project.py +203 -0
  546. rasa/shared/importers/rasa.py +100 -0
  547. rasa/shared/importers/utils.py +34 -0
  548. rasa/shared/nlu/__init__.py +0 -0
  549. rasa/shared/nlu/constants.py +45 -0
  550. rasa/shared/nlu/interpreter.py +10 -0
  551. rasa/shared/nlu/training_data/__init__.py +0 -0
  552. rasa/shared/nlu/training_data/entities_parser.py +209 -0
  553. rasa/shared/nlu/training_data/features.py +374 -0
  554. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  555. rasa/shared/nlu/training_data/formats/dialogflow.py +162 -0
  556. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  557. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  558. rasa/shared/nlu/training_data/formats/rasa_yaml.py +605 -0
  559. rasa/shared/nlu/training_data/formats/readerwriter.py +245 -0
  560. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  561. rasa/shared/nlu/training_data/loading.py +137 -0
  562. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  563. rasa/shared/nlu/training_data/message.py +477 -0
  564. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  565. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  566. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  567. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  568. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  569. rasa/shared/nlu/training_data/training_data.py +732 -0
  570. rasa/shared/nlu/training_data/util.py +223 -0
  571. rasa/shared/providers/__init__.py +0 -0
  572. rasa/shared/providers/openai/__init__.py +0 -0
  573. rasa/shared/providers/openai/clients.py +43 -0
  574. rasa/shared/providers/openai/session_handler.py +110 -0
  575. rasa/shared/utils/__init__.py +0 -0
  576. rasa/shared/utils/cli.py +72 -0
  577. rasa/shared/utils/common.py +308 -0
  578. rasa/shared/utils/constants.py +1 -0
  579. rasa/shared/utils/io.py +403 -0
  580. rasa/shared/utils/llm.py +405 -0
  581. rasa/shared/utils/pykwalify_extensions.py +26 -0
  582. rasa/shared/utils/schemas/__init__.py +0 -0
  583. rasa/shared/utils/schemas/config.yml +2 -0
  584. rasa/shared/utils/schemas/domain.yml +142 -0
  585. rasa/shared/utils/schemas/events.py +212 -0
  586. rasa/shared/utils/schemas/model_config.yml +46 -0
  587. rasa/shared/utils/schemas/stories.yml +173 -0
  588. rasa/shared/utils/yaml.py +777 -0
  589. rasa/studio/__init__.py +0 -0
  590. rasa/studio/auth.py +252 -0
  591. rasa/studio/config.py +127 -0
  592. rasa/studio/constants.py +16 -0
  593. rasa/studio/data_handler.py +352 -0
  594. rasa/studio/download.py +350 -0
  595. rasa/studio/train.py +136 -0
  596. rasa/studio/upload.py +408 -0
  597. rasa/telemetry.py +1583 -0
  598. rasa/tracing/__init__.py +0 -0
  599. rasa/tracing/config.py +338 -0
  600. rasa/tracing/constants.py +38 -0
  601. rasa/tracing/instrumentation/__init__.py +0 -0
  602. rasa/tracing/instrumentation/attribute_extractors.py +663 -0
  603. rasa/tracing/instrumentation/instrumentation.py +939 -0
  604. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +142 -0
  605. rasa/tracing/instrumentation/metrics.py +206 -0
  606. rasa/tracing/metric_instrument_provider.py +125 -0
  607. rasa/utils/__init__.py +0 -0
  608. rasa/utils/beta.py +83 -0
  609. rasa/utils/cli.py +27 -0
  610. rasa/utils/common.py +635 -0
  611. rasa/utils/converter.py +53 -0
  612. rasa/utils/endpoints.py +303 -0
  613. rasa/utils/io.py +326 -0
  614. rasa/utils/licensing.py +319 -0
  615. rasa/utils/log_utils.py +174 -0
  616. rasa/utils/mapper.py +210 -0
  617. rasa/utils/ml_utils.py +145 -0
  618. rasa/utils/plotting.py +362 -0
  619. rasa/utils/singleton.py +23 -0
  620. rasa/utils/tensorflow/__init__.py +0 -0
  621. rasa/utils/tensorflow/callback.py +112 -0
  622. rasa/utils/tensorflow/constants.py +116 -0
  623. rasa/utils/tensorflow/crf.py +492 -0
  624. rasa/utils/tensorflow/data_generator.py +440 -0
  625. rasa/utils/tensorflow/environment.py +161 -0
  626. rasa/utils/tensorflow/exceptions.py +5 -0
  627. rasa/utils/tensorflow/layers.py +1565 -0
  628. rasa/utils/tensorflow/layers_utils.py +113 -0
  629. rasa/utils/tensorflow/metrics.py +281 -0
  630. rasa/utils/tensorflow/model_data.py +991 -0
  631. rasa/utils/tensorflow/model_data_utils.py +500 -0
  632. rasa/utils/tensorflow/models.py +936 -0
  633. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  634. rasa/utils/tensorflow/transformer.py +640 -0
  635. rasa/utils/tensorflow/types.py +6 -0
  636. rasa/utils/train_utils.py +572 -0
  637. rasa/utils/yaml.py +54 -0
  638. rasa/validator.py +1035 -0
  639. rasa/version.py +3 -0
  640. rasa_pro-3.8.16.dist-info/METADATA +528 -0
  641. rasa_pro-3.8.16.dist-info/NOTICE +5 -0
  642. rasa_pro-3.8.16.dist-info/RECORD +644 -0
  643. rasa_pro-3.8.16.dist-info/WHEEL +4 -0
  644. rasa_pro-3.8.16.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,663 @@
1
+ import json
2
+ import logging
3
+ from pathlib import Path
4
+ from typing import Any, Dict, List, Optional, TYPE_CHECKING, Text, Tuple
5
+
6
+ import tiktoken
7
+ from numpy import ndarray
8
+
9
+ from rasa.core.agent import Agent
10
+ from rasa.core.brokers.broker import EventBroker
11
+ from rasa.core.channels import UserMessage
12
+ from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
13
+ from rasa.core.lock_store import LOCK_LIFETIME, LockStore
14
+ from rasa.core.processor import MessageProcessor
15
+ from rasa.core.tracker_store import TrackerStore
16
+ from rasa.dialogue_understanding.commands import Command
17
+ from rasa.dialogue_understanding.generator.llm_command_generator import (
18
+ LLMCommandGenerator,
19
+ )
20
+ from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
21
+ from rasa.engine.graph import GraphModelConfiguration, GraphNode, ExecutionContext
22
+ from rasa.engine.training.graph_trainer import GraphTrainer
23
+ from rasa.shared.core.constants import REQUESTED_SLOT
24
+ from rasa.shared.core.domain import Domain
25
+ from rasa.shared.core.events import DialogueStackUpdated, Event
26
+ from rasa.shared.core.flows import Flow, FlowStep, FlowsList
27
+ from rasa.shared.core.trackers import DialogueStateTracker
28
+ from rasa.shared.importers.importer import TrainingDataImporter
29
+ from rasa.shared.nlu.constants import INTENT_NAME_KEY
30
+ from rasa.shared.utils.llm import combine_custom_and_default_config
31
+ from rasa.tracing.constants import (
32
+ PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
33
+ ENDPOINT_REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
34
+ )
35
+ from rasa.utils.endpoints import concat_url
36
+
37
+ if TYPE_CHECKING:
38
+ from langchain.llms.base import BaseLLM
39
+ from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
40
+ from rasa.core.policies.intentless_policy import IntentlessPolicy
41
+ from rasa.core.policies.policy import PolicyPrediction
42
+ from rasa.dialogue_understanding.generator.command_generator import CommandGenerator
43
+ from rasa.utils.endpoints import EndpointConfig
44
+
45
+ # This file contains all attribute extractors for tracing instrumentation.
46
+ # These are functions that are applied to the arguments of the wrapped function to be
47
+ # traced to extract the attributes that we want to forward to our tracing backend.
48
+ # Note that we always mirror the argument lists of the wrapped functions, as our
49
+ # wrapping mechanism always passes in the original arguments unchanged for further
50
+ # processing.
51
+
52
+ logger = logging.getLogger(__name__)
53
+
54
+
55
+ def extract_attrs_for_agent(
56
+ self: Agent,
57
+ message: UserMessage,
58
+ ) -> Dict[str, Any]:
59
+ """Extract the attributes for `Agent.handle_message`.
60
+
61
+ :param self: The `Agent` on which `handle_message` is called.
62
+ :param message: The `UserMessage` argument.
63
+ :return: A dictionary containing the attributes.
64
+ """
65
+ return {
66
+ "input_channel": str(message.input_channel),
67
+ "sender_id": message.sender_id,
68
+ "model_id": str(self.model_id),
69
+ "model_name": self.processor.model_filename if self.processor else "None",
70
+ }
71
+
72
+
73
+ def extract_llm_command_generator_attrs(
74
+ attributes: Dict[str, Any], commands: List[Dict[str, Any]]
75
+ ) -> None:
76
+ """Extract more attributes for `GraphNode` type `LLMCommandGenerator`.
77
+
78
+ :param attributes: A dictionary containing attributes.
79
+ :param commands: The commands to execute.
80
+ """
81
+ commands_list = []
82
+
83
+ for command in commands:
84
+ command_name = command.get("command")
85
+ commands_list.append(command_name)
86
+
87
+ if command_name == "set slot":
88
+ attributes["slot_name"] = command.get("name")
89
+
90
+ if command_name == "start flow":
91
+ attributes["flow_name"] = command.get("flow")
92
+
93
+ attributes["commands"] = str(commands_list)
94
+
95
+
96
+ def extract_flow_policy_attrs(
97
+ attributes: Dict[str, Any], policy_prediction: "PolicyPrediction"
98
+ ) -> None:
99
+ """Extract more attributes for `GraphNode` type `FlowPolicy`.
100
+
101
+ :param attributes: A dictionary containing attributes.
102
+ :param policy_prediction: The PolicyPrediction to use.
103
+ """
104
+ attributes["policy"] = policy_prediction.policy_name
105
+
106
+ if policy_prediction.events:
107
+ attributes["events"] = str(
108
+ [event.__class__.__name__ for event in policy_prediction.events]
109
+ )
110
+
111
+ if policy_prediction.optional_events:
112
+ optional_events_name = []
113
+ flows = []
114
+ utters = []
115
+
116
+ for optional_event in policy_prediction.optional_events:
117
+ optional_events_name.append(optional_event.__class__.__name__)
118
+
119
+ if (
120
+ isinstance(optional_event, DialogueStackUpdated)
121
+ and "value" in optional_event.update
122
+ ):
123
+ updates = json.loads(optional_event.update)
124
+ for update in updates:
125
+ value = update.get("value", {})
126
+ if isinstance(value, dict):
127
+ flow = value.get("flow_id", "")
128
+ utter = value.get("utter", "")
129
+ if flow:
130
+ flows.append(flow)
131
+ if utter:
132
+ utters.append(utter)
133
+ else:
134
+ if hasattr(optional_event, "flow_id") and optional_event.flow_id:
135
+ flows.append(optional_event.flow_id)
136
+ if hasattr(optional_event, "utter") and optional_event.utter:
137
+ utters.append(optional_event.utter)
138
+
139
+ attributes["optional_events"] = str(set(optional_events_name))
140
+
141
+ if flows:
142
+ attributes["flows"] = str(set(flows))
143
+ if utters:
144
+ attributes["utters"] = str(set(utters))
145
+
146
+
147
+ def extract_attrs_for_graph_node(
148
+ self: GraphNode, *inputs_from_previous_nodes: Tuple[Text, Any]
149
+ ) -> Dict[str, Any]:
150
+ """Extract the attributes for `GraphNode.__call__`.
151
+
152
+ :param self: The `GraphNode` on which `__call__` is called.
153
+ :param inputs_from_previous_nodes: Unused outputs of all parent nodes.
154
+ :return: A dictionary containing the attributes.
155
+ """
156
+ attributes = {
157
+ "node_name": self._node_name,
158
+ "component_class": self._component_class.__name__,
159
+ "fn_name": self._fn_name,
160
+ }
161
+
162
+ for node_input in inputs_from_previous_nodes:
163
+ if "LLMCommandGenerator" in node_input[0]:
164
+ commands = node_input[1][0].data.get("commands")
165
+ extract_llm_command_generator_attrs(attributes, commands)
166
+
167
+ if "FlowPolicy" in node_input[0]:
168
+ policy_prediction = node_input[1]
169
+ extract_flow_policy_attrs(attributes, policy_prediction)
170
+
171
+ return attributes
172
+
173
+
174
+ def extract_number_of_events(
175
+ self: MessageProcessor, tracker: DialogueStateTracker
176
+ ) -> Dict[str, Any]:
177
+ """Extract the attributes for `MessageProcessor.save_tracker`.
178
+
179
+ :param self: The `MessageProcessor` on which `save_tracker` is called.
180
+ :param tracker: The `DialogueStateTracker` argument.
181
+ :return: A dictionary containing the attributes.
182
+ """
183
+ return {"number_of_events": len(tracker.events)}
184
+
185
+
186
+ def extract_attrs_for_tracker_store(
187
+ self: TrackerStore,
188
+ event_broker: EventBroker,
189
+ new_events: List[Event],
190
+ sender_id: Text,
191
+ ) -> Dict[str, Any]:
192
+ """Extract the attributes for `TrackerStore.stream_events`.
193
+
194
+ :param self: The `TrackerStore` on which `stream_events` is called.
195
+ :param event_broker: The `EventBroker` on which the new events are published.
196
+ :param new_events: List of new events to stream.
197
+ :param sender_id: The sender id of the tracker to which the new events were added.
198
+ """
199
+ return {
200
+ "number_of_streamed_events": len(new_events),
201
+ "broker_class": self.event_broker.__class__.__name__,
202
+ }
203
+
204
+
205
+ def extract_attrs_for_lock_store(
206
+ self: LockStore,
207
+ conversation_id: Text,
208
+ lock_lifetime: float = LOCK_LIFETIME,
209
+ wait_time_in_seconds: float = 1,
210
+ ) -> Dict[str, Any]:
211
+ """Extract the attributes for `LockStore.lock`.
212
+
213
+ :param self: the `LockStore` on which `lock` is called.
214
+ :param conversation_id: The conversation id for which the lock is acquired.
215
+ :param lock_lifetime: The lifetime of the lock.
216
+ :param wait_time_in_seconds: The time to wait for the lock.
217
+ :return: A dictionary containing the attributes.
218
+ """
219
+ return {"lock_store_class": self.__class__.__name__}
220
+
221
+
222
+ def extract_attrs_for_graph_trainer(
223
+ self: GraphTrainer,
224
+ model_configuration: GraphModelConfiguration,
225
+ importer: TrainingDataImporter,
226
+ output_filename: Path,
227
+ is_finetuning: bool = False,
228
+ force_retraining: bool = False,
229
+ ) -> Dict[str, Any]:
230
+ """Extract the attributes for `GraphTrainer.train`.
231
+
232
+ :param self: the `GraphTrainer` on which `train` is called.
233
+ :param model_configuration: The model configuration (training_type, language etc.).
234
+ :param importer: The importer which provides the training data for the training.
235
+ :param output_filename: The location where the packaged model is saved.
236
+ :param is_finetuning: Boolean argument, if `True` enables incremental training.
237
+ :param force_retraining: Unused boolean argument,i.e, if `True` then the cache
238
+ is skipped and all components are retrained.
239
+ :return: A dictionary containing the attributes.
240
+ """
241
+ return {
242
+ "training_type": model_configuration.training_type.model_type,
243
+ "language": model_configuration.language,
244
+ "recipe_name": importer.get_config().get("recipe"),
245
+ "output_filename": output_filename.name,
246
+ "is_finetuning": is_finetuning,
247
+ }
248
+
249
+
250
+ def extract_headers(message: UserMessage, **kwargs: Any) -> Any:
251
+ """Extract the headers from the `UserMessage`."""
252
+ if message.headers:
253
+ return message.headers
254
+ return {}
255
+
256
+
257
+ def extract_intent_name_and_slots(
258
+ self: MessageProcessor, tracker: DialogueStateTracker
259
+ ) -> Dict[str, Any]:
260
+ """Extract the attributes for `MessageProcessor._predict_next_with_tracker`.
261
+
262
+ :param self: The `MessageProcessor` on which `_predict_next_with_tracker` is called.
263
+ :param tracker: The `DialogueStateTracker` argument.
264
+ :return: A dictionary containing the attributes.
265
+ """
266
+ slots = {}
267
+ for slot_name, slot_value in tracker.slots.items():
268
+ if slot_name == REQUESTED_SLOT and slot_value.value:
269
+ slots[slot_name] = slot_value.value
270
+ break
271
+ return {
272
+ "intent_name": str(tracker.latest_message.intent.get(INTENT_NAME_KEY)), # type: ignore[union-attr] # noqa: E501
273
+ **slots,
274
+ }
275
+
276
+
277
+ def extract_attrs_for_command(
278
+ self: Command,
279
+ tracker: DialogueStateTracker,
280
+ all_flows: FlowsList,
281
+ original_tracker: DialogueStateTracker,
282
+ ) -> Dict[str, Any]:
283
+ return {
284
+ "class_name": self.__class__.__name__,
285
+ "number_of_events": len(tracker.events),
286
+ "sender_id": tracker.sender_id,
287
+ }
288
+
289
+
290
+ def extract_llm_config(self: Any, default_llm_config: Dict[str, Any]) -> Dict[str, Any]:
291
+ if isinstance(self, ContextualResponseRephraser):
292
+ config = self.nlg_endpoint.kwargs
293
+ else:
294
+ config = self.config
295
+
296
+ llm_property = combine_custom_and_default_config(
297
+ config.get("llm"), default_llm_config
298
+ )
299
+
300
+ attributes = {
301
+ "class_name": self.__class__.__name__,
302
+ "llm_model": str(config.get("model", llm_property.get("model_name"))),
303
+ "llm_type": str(llm_property.get("_type")),
304
+ "embeddings": json.dumps(config.get("embeddings", {})),
305
+ "llm_temperature": str(llm_property.get("temperature")),
306
+ "request_timeout": str(llm_property.get("request_timeout")),
307
+ }
308
+
309
+ if "model" in llm_property:
310
+ attributes["llm_model"] = str(llm_property.get("model"))
311
+
312
+ if "engine" in llm_property:
313
+ attributes["llm_engine"] = str(llm_property.get("engine"))
314
+
315
+ return attributes
316
+
317
+
318
+ def extract_attrs_for_llm_command_generator(
319
+ self: LLMCommandGenerator,
320
+ prompt: str,
321
+ ) -> Dict[str, Any]:
322
+ from rasa.dialogue_understanding.generator.llm_command_generator import (
323
+ DEFAULT_LLM_CONFIG,
324
+ )
325
+
326
+ attributes = extract_llm_config(self, default_llm_config=DEFAULT_LLM_CONFIG)
327
+
328
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
329
+
330
+
331
+ def extract_attrs_for_contextual_response_rephraser(
332
+ self: Any,
333
+ prompt: str,
334
+ ) -> Dict[str, Any]:
335
+ from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
336
+
337
+ attributes = extract_llm_config(self, default_llm_config=DEFAULT_LLM_CONFIG)
338
+
339
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
340
+
341
+
342
+ def extract_attrs_for_create_history(
343
+ self: Any,
344
+ tracker: DialogueStateTracker,
345
+ ) -> Dict[str, Any]:
346
+ from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
347
+
348
+ return extract_llm_config(self, default_llm_config=DEFAULT_LLM_CONFIG)
349
+
350
+
351
+ def extract_attrs_for_generate(
352
+ self: Any,
353
+ utter_action: Text,
354
+ tracker: DialogueStateTracker,
355
+ output_channel: Text,
356
+ **kwargs: Any,
357
+ ) -> Optional[Dict[Text, Any]]:
358
+ return {
359
+ "class_name": self.__class__.__name__,
360
+ "utter": utter_action,
361
+ }
362
+
363
+
364
+ def extract_attrs_for_execute_commands(
365
+ tracker: DialogueStateTracker,
366
+ all_flows: FlowsList,
367
+ execution_context: ExecutionContext,
368
+ ) -> Dict[str, Any]:
369
+ return {
370
+ "number_of_events": len(tracker.events),
371
+ "sender_id": tracker.sender_id,
372
+ "module_name": "command_processor",
373
+ }
374
+
375
+
376
+ def extract_attrs_for_validate_state_of_commands(
377
+ commands: List[Command],
378
+ ) -> Dict[str, Any]:
379
+ commands_list = []
380
+
381
+ for command in commands:
382
+ command_type = command.command()
383
+ command_as_dict = command.as_dict()
384
+
385
+ if command_type == "set slot":
386
+ command_as_dict.pop("value", None)
387
+
388
+ if command_type == "correct slot":
389
+ corrected_slots = command_as_dict.get("corrected_slots", [])
390
+ updated_corrected_slots = []
391
+ for corrected_slot in corrected_slots:
392
+ corrected_slot.pop("value", None)
393
+ updated_corrected_slots.append(corrected_slot)
394
+
395
+ command_as_dict["corrected_slots"] = updated_corrected_slots
396
+
397
+ commands_list.append(command_as_dict)
398
+
399
+ return {
400
+ "cleaned_up_commands": str(commands_list),
401
+ "module_name": "command_processor",
402
+ }
403
+
404
+
405
+ def extract_attrs_for_clean_up_commands(
406
+ commands: List[Command],
407
+ tracker: DialogueStateTracker,
408
+ all_flows: FlowsList,
409
+ execution_context: ExecutionContext,
410
+ ) -> Dict[str, Any]:
411
+ commands_list = []
412
+
413
+ for command in commands:
414
+ command_type = command.command()
415
+ command_as_dict = command.as_dict()
416
+
417
+ if command_type == "set slot":
418
+ command_as_dict.pop("value", None)
419
+
420
+ commands_list.append(command_as_dict)
421
+
422
+ current_context = extract_current_context_attribute(tracker.stack)
423
+
424
+ return {
425
+ "commands": str(commands_list),
426
+ "module_name": "command_processor",
427
+ "current_context": json.dumps(current_context),
428
+ }
429
+
430
+
431
+ def extract_attrs_for_remove_duplicated_set_slots(
432
+ events: List[Event],
433
+ ) -> Dict[str, Any]:
434
+ resulting_events = []
435
+
436
+ for event in events:
437
+ event_as_dict = event.as_dict()
438
+
439
+ if event_as_dict.get("event") == "stack":
440
+ update = event_as_dict.pop("update", "")
441
+ if update:
442
+ update = json.loads(update)
443
+ for update_dict in update:
444
+ value = update_dict.pop("value", {})
445
+ value.pop("corrected_slots", None)
446
+ update_dict["value"] = json.dumps(value)
447
+ event_as_dict["update"] = str([update_dict])
448
+ break
449
+
450
+ elif event_as_dict.get("event") == "slot":
451
+ event_as_dict.pop("value", None)
452
+
453
+ resulting_events.append(event_as_dict)
454
+
455
+ return {
456
+ "resulting_events": str(resulting_events),
457
+ "module_name": "command_processor",
458
+ }
459
+
460
+
461
+ def extract_attrs_for_check_commands_against_startable_flows(
462
+ self: "CommandGenerator", commands: List[Command], startable_flows: FlowsList
463
+ ) -> Dict[str, Any]:
464
+ commands_list = []
465
+
466
+ for command in commands:
467
+ command_as_dict = command.as_dict()
468
+ command_type = command.command()
469
+
470
+ if command_type == "set slot":
471
+ slot_value = command_as_dict.pop("value", None)
472
+ command_as_dict["is_slot_value_missing_or_none"] = slot_value is None
473
+
474
+ commands_list.append(command_as_dict)
475
+
476
+ startable_flow_ids = [flow.id for flow in startable_flows.underlying_flows]
477
+
478
+ return {
479
+ "commands": json.dumps(commands_list),
480
+ "startable_flow_ids": json.dumps(startable_flow_ids),
481
+ }
482
+
483
+
484
+ def extract_attrs_for_advance_flows(
485
+ tracker: DialogueStateTracker, available_actions: List[str], flows: FlowsList
486
+ ) -> Dict[str, Any]:
487
+ from rasa.tracing.instrumentation.instrumentation import FLOW_EXECUTOR_MODULE_NAME
488
+
489
+ current_context = extract_current_context_attribute(tracker.stack)
490
+
491
+ return {
492
+ "module_name": FLOW_EXECUTOR_MODULE_NAME,
493
+ "available_actions": json.dumps(available_actions),
494
+ "current_context": json.dumps(current_context),
495
+ }
496
+
497
+
498
+ def extract_attrs_for_run_step(
499
+ step: FlowStep,
500
+ flow: Flow,
501
+ stack: DialogueStack,
502
+ tracker: DialogueStateTracker,
503
+ available_actions: List[str],
504
+ flows: FlowsList,
505
+ ) -> Dict[str, Any]:
506
+ current_context = extract_current_context_attribute(stack)
507
+
508
+ return {
509
+ "step_custom_id": step.custom_id if step.custom_id else "None",
510
+ "step_description": step.description if step.description else "None",
511
+ "current_flow_id": flow.id,
512
+ "current_context": json.dumps(current_context),
513
+ }
514
+
515
+
516
+ def extract_attrs_for_policy_prediction(
517
+ self: Any,
518
+ probabilities: List[float],
519
+ events: Optional[List[Event]] = None,
520
+ optional_events: Optional[List[Event]] = None,
521
+ is_end_to_end_prediction: bool = False,
522
+ is_no_user_prediction: bool = False,
523
+ diagnostic_data: Optional[Dict[Text, Any]] = None,
524
+ action_metadata: Optional[Dict[Text, Any]] = None,
525
+ ) -> Dict[str, Any]:
526
+
527
+ # diagnostic_data can contain ndarray type values which need to be converted
528
+ # into a list since the returning values have to be JSON serializable.
529
+ if isinstance(diagnostic_data, dict):
530
+ diagnostic_data = {
531
+ key: value.tolist() if isinstance(value, ndarray) else value
532
+ for key, value in diagnostic_data.items()
533
+ }
534
+
535
+ return {
536
+ "priority": self.priority,
537
+ "events": [event.__class__.__name__ for event in events] if events else "None",
538
+ "optional_events": [event.__class__.__name__ for event in optional_events]
539
+ if optional_events
540
+ else "None",
541
+ "is_end_to_end_prediction": is_end_to_end_prediction,
542
+ "is_no_user_prediction": is_no_user_prediction,
543
+ "diagnostic_data": json.dumps(diagnostic_data),
544
+ "action_metadata": json.dumps(action_metadata),
545
+ }
546
+
547
+
548
+ def extract_attrs_for_intentless_policy_prediction_result(
549
+ self: "IntentlessPolicy",
550
+ action_name: Optional[Text],
551
+ domain: Domain,
552
+ score: Optional[float] = 1.0,
553
+ ) -> Dict[str, Any]:
554
+ return {
555
+ "action_name": action_name if action_name else "null",
556
+ "score": score if score else 0.0,
557
+ }
558
+
559
+
560
+ def extract_attrs_for_intentless_policy_find_closest_response(
561
+ self: "IntentlessPolicy",
562
+ tracker: DialogueStateTracker,
563
+ ) -> Dict[str, Any]:
564
+ return {
565
+ "current_context": json.dumps(tracker.stack.current_context()),
566
+ }
567
+
568
+
569
+ def extract_attrs_for_intentless_policy_generate_llm_answer(
570
+ self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
571
+ ) -> Dict[str, Any]:
572
+ from rasa.core.policies.intentless_policy import DEFAULT_LLM_CONFIG
573
+
574
+ attributes = extract_llm_config(self, default_llm_config=DEFAULT_LLM_CONFIG)
575
+
576
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
577
+
578
+
579
+ def extract_attrs_for_enterprise_search_generate_llm_answer(
580
+ self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
581
+ ) -> Dict[str, Any]:
582
+ from rasa.core.policies.enterprise_search_policy import DEFAULT_LLM_CONFIG
583
+
584
+ attributes = extract_llm_config(self, default_llm_config=DEFAULT_LLM_CONFIG)
585
+
586
+ return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
587
+
588
+
589
+ def extract_current_context_attribute(stack: DialogueStack) -> Dict[str, Any]:
590
+ """Utility function to extract the current context from the dialogue stack."""
591
+ current_context = stack.current_context()
592
+
593
+ if "corrected_slots" in current_context:
594
+ current_context["corrected_slots"] = list(
595
+ current_context["corrected_slots"].keys()
596
+ )
597
+
598
+ return current_context
599
+
600
+
601
+ def compute_prompt_tokens_length(
602
+ model_type: str, model_name: str, prompt: str
603
+ ) -> Optional[int]:
604
+ """Utility function to compute the length of the prompt tokens for OpenAI models."""
605
+ if model_type != "openai":
606
+ logger.warning(
607
+ "Tracing prompt tokens is only supported for OpenAI models. Skipping."
608
+ )
609
+ return None
610
+
611
+ if model_name in ["gpt-3.5-turbo", "gpt-4"]:
612
+ logger.debug(
613
+ f"Model {model_name} may update over time. "
614
+ f"Returning num tokens assuming model '{model_name}-0613.'"
615
+ )
616
+ model_name = f"{model_name}-0613"
617
+
618
+ encoding = tiktoken.encoding_for_model(model_name)
619
+ return len(encoding.encode(prompt))
620
+
621
+
622
+ def extend_attributes_with_prompt_tokens_length(
623
+ self: Any,
624
+ attributes: Dict[str, Any],
625
+ prompt: str,
626
+ ) -> Dict[str, Any]:
627
+ if not self.trace_prompt_tokens:
628
+ return attributes
629
+
630
+ len_prompt_tokens = compute_prompt_tokens_length(
631
+ model_type=attributes["llm_type"],
632
+ model_name=attributes["llm_model"],
633
+ prompt=prompt,
634
+ )
635
+
636
+ attributes[PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME] = str(len_prompt_tokens)
637
+
638
+ return attributes
639
+
640
+
641
+ def extract_attrs_for_endpoint_config(
642
+ self: "EndpointConfig",
643
+ method: Text = "post",
644
+ subpath: Optional[Text] = None,
645
+ content_type: Optional[Text] = "application/json",
646
+ compress: bool = False,
647
+ **kwargs: Any,
648
+ ) -> Dict[str, Any]:
649
+ request_body = kwargs.get("json")
650
+ attrs: Dict[str, Any] = {"url": concat_url(self.url, subpath)}
651
+
652
+ if not request_body:
653
+ attrs.update({ENDPOINT_REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME: 0})
654
+ else:
655
+ attrs.update(
656
+ {
657
+ ENDPOINT_REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME: len(
658
+ json.dumps(request_body).encode("utf-8")
659
+ )
660
+ }
661
+ )
662
+
663
+ return attrs