rasa-pro 3.11.3a1.dev2__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 (784) 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 +1320 -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 +109 -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 +200 -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-861ddd57.js +1 -0
  136. rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
  137. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
  138. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
  139. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
  140. rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
  141. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
  142. rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
  143. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
  144. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
  145. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
  146. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
  147. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
  148. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.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-42ba3e3d.js +1 -0
  154. rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
  155. rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
  156. rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
  157. rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
  158. rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.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-89e6403a.js +1 -0
  168. rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
  169. rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
  170. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.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-bdf5f29b.js +35 -0
  174. rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
  175. rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
  176. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
  177. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
  178. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
  179. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
  180. rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
  181. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
  182. rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
  183. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
  184. rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
  185. rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
  186. rasa/core/channels/inspector/dist/index.html +42 -0
  187. rasa/core/channels/inspector/index.html +40 -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 +220 -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 +306 -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 +379 -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 +973 -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 +778 -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 +472 -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 +502 -0
  387. rasa/dialogue_understanding/generator/llm_command_generator.py +68 -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 +935 -0
  392. rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -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 +489 -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/dialogue_understanding/utils.py +14 -0
  428. rasa/dialogue_understanding_test/__init__.py +0 -0
  429. rasa/dialogue_understanding_test/constants.py +15 -0
  430. rasa/dialogue_understanding_test/du_test_case.py +118 -0
  431. rasa/dialogue_understanding_test/du_test_result.py +11 -0
  432. rasa/e2e_test/__init__.py +0 -0
  433. rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
  434. rasa/e2e_test/assertions.py +1345 -0
  435. rasa/e2e_test/assertions_schema.yml +129 -0
  436. rasa/e2e_test/constants.py +31 -0
  437. rasa/e2e_test/e2e_config.py +220 -0
  438. rasa/e2e_test/e2e_config_schema.yml +26 -0
  439. rasa/e2e_test/e2e_test_case.py +569 -0
  440. rasa/e2e_test/e2e_test_converter.py +363 -0
  441. rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
  442. rasa/e2e_test/e2e_test_coverage_report.py +364 -0
  443. rasa/e2e_test/e2e_test_result.py +54 -0
  444. rasa/e2e_test/e2e_test_runner.py +1190 -0
  445. rasa/e2e_test/e2e_test_schema.yml +181 -0
  446. rasa/e2e_test/pykwalify_extensions.py +39 -0
  447. rasa/e2e_test/stub_custom_action.py +70 -0
  448. rasa/e2e_test/utils/__init__.py +0 -0
  449. rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
  450. rasa/e2e_test/utils/io.py +598 -0
  451. rasa/e2e_test/utils/validation.py +178 -0
  452. rasa/engine/__init__.py +0 -0
  453. rasa/engine/caching.py +463 -0
  454. rasa/engine/constants.py +17 -0
  455. rasa/engine/exceptions.py +14 -0
  456. rasa/engine/graph.py +642 -0
  457. rasa/engine/loader.py +48 -0
  458. rasa/engine/recipes/__init__.py +0 -0
  459. rasa/engine/recipes/config_files/default_config.yml +41 -0
  460. rasa/engine/recipes/default_components.py +97 -0
  461. rasa/engine/recipes/default_recipe.py +1272 -0
  462. rasa/engine/recipes/graph_recipe.py +79 -0
  463. rasa/engine/recipes/recipe.py +93 -0
  464. rasa/engine/runner/__init__.py +0 -0
  465. rasa/engine/runner/dask.py +250 -0
  466. rasa/engine/runner/interface.py +49 -0
  467. rasa/engine/storage/__init__.py +0 -0
  468. rasa/engine/storage/local_model_storage.py +244 -0
  469. rasa/engine/storage/resource.py +110 -0
  470. rasa/engine/storage/storage.py +199 -0
  471. rasa/engine/training/__init__.py +0 -0
  472. rasa/engine/training/components.py +176 -0
  473. rasa/engine/training/fingerprinting.py +64 -0
  474. rasa/engine/training/graph_trainer.py +256 -0
  475. rasa/engine/training/hooks.py +164 -0
  476. rasa/engine/validation.py +1451 -0
  477. rasa/env.py +14 -0
  478. rasa/exceptions.py +69 -0
  479. rasa/graph_components/__init__.py +0 -0
  480. rasa/graph_components/converters/__init__.py +0 -0
  481. rasa/graph_components/converters/nlu_message_converter.py +48 -0
  482. rasa/graph_components/providers/__init__.py +0 -0
  483. rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
  484. rasa/graph_components/providers/domain_provider.py +71 -0
  485. rasa/graph_components/providers/flows_provider.py +74 -0
  486. rasa/graph_components/providers/forms_provider.py +44 -0
  487. rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
  488. rasa/graph_components/providers/responses_provider.py +44 -0
  489. rasa/graph_components/providers/rule_only_provider.py +49 -0
  490. rasa/graph_components/providers/story_graph_provider.py +96 -0
  491. rasa/graph_components/providers/training_tracker_provider.py +55 -0
  492. rasa/graph_components/validators/__init__.py +0 -0
  493. rasa/graph_components/validators/default_recipe_validator.py +550 -0
  494. rasa/graph_components/validators/finetuning_validator.py +302 -0
  495. rasa/hooks.py +112 -0
  496. rasa/jupyter.py +63 -0
  497. rasa/llm_fine_tuning/__init__.py +0 -0
  498. rasa/llm_fine_tuning/annotation_module.py +241 -0
  499. rasa/llm_fine_tuning/conversations.py +144 -0
  500. rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
  501. rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
  502. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
  503. rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
  504. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
  505. rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
  506. rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
  507. rasa/llm_fine_tuning/storage.py +174 -0
  508. rasa/llm_fine_tuning/train_test_split_module.py +441 -0
  509. rasa/markers/__init__.py +0 -0
  510. rasa/markers/marker.py +269 -0
  511. rasa/markers/marker_base.py +828 -0
  512. rasa/markers/upload.py +74 -0
  513. rasa/markers/validate.py +21 -0
  514. rasa/model.py +118 -0
  515. rasa/model_manager/__init__.py +0 -0
  516. rasa/model_manager/config.py +40 -0
  517. rasa/model_manager/model_api.py +559 -0
  518. rasa/model_manager/runner_service.py +287 -0
  519. rasa/model_manager/socket_bridge.py +152 -0
  520. rasa/model_manager/studio_jwt_auth.py +86 -0
  521. rasa/model_manager/trainer_service.py +325 -0
  522. rasa/model_manager/utils.py +87 -0
  523. rasa/model_manager/warm_rasa_process.py +187 -0
  524. rasa/model_service.py +112 -0
  525. rasa/model_testing.py +457 -0
  526. rasa/model_training.py +596 -0
  527. rasa/nlu/__init__.py +7 -0
  528. rasa/nlu/classifiers/__init__.py +3 -0
  529. rasa/nlu/classifiers/classifier.py +5 -0
  530. rasa/nlu/classifiers/diet_classifier.py +1881 -0
  531. rasa/nlu/classifiers/fallback_classifier.py +192 -0
  532. rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
  533. rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
  534. rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
  535. rasa/nlu/classifiers/regex_message_handler.py +56 -0
  536. rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
  537. rasa/nlu/constants.py +77 -0
  538. rasa/nlu/convert.py +40 -0
  539. rasa/nlu/emulators/__init__.py +0 -0
  540. rasa/nlu/emulators/dialogflow.py +55 -0
  541. rasa/nlu/emulators/emulator.py +49 -0
  542. rasa/nlu/emulators/luis.py +86 -0
  543. rasa/nlu/emulators/no_emulator.py +10 -0
  544. rasa/nlu/emulators/wit.py +56 -0
  545. rasa/nlu/extractors/__init__.py +0 -0
  546. rasa/nlu/extractors/crf_entity_extractor.py +715 -0
  547. rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
  548. rasa/nlu/extractors/entity_synonyms.py +178 -0
  549. rasa/nlu/extractors/extractor.py +470 -0
  550. rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
  551. rasa/nlu/extractors/regex_entity_extractor.py +220 -0
  552. rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
  553. rasa/nlu/featurizers/__init__.py +0 -0
  554. rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
  555. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
  556. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
  557. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
  558. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
  559. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
  560. rasa/nlu/featurizers/featurizer.py +89 -0
  561. rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
  562. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
  563. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
  564. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
  565. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
  566. rasa/nlu/model.py +24 -0
  567. rasa/nlu/run.py +27 -0
  568. rasa/nlu/selectors/__init__.py +0 -0
  569. rasa/nlu/selectors/response_selector.py +987 -0
  570. rasa/nlu/test.py +1940 -0
  571. rasa/nlu/tokenizers/__init__.py +0 -0
  572. rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
  573. rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
  574. rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
  575. rasa/nlu/tokenizers/tokenizer.py +239 -0
  576. rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
  577. rasa/nlu/utils/__init__.py +35 -0
  578. rasa/nlu/utils/bilou_utils.py +462 -0
  579. rasa/nlu/utils/hugging_face/__init__.py +0 -0
  580. rasa/nlu/utils/hugging_face/registry.py +108 -0
  581. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
  582. rasa/nlu/utils/mitie_utils.py +113 -0
  583. rasa/nlu/utils/pattern_utils.py +168 -0
  584. rasa/nlu/utils/spacy_utils.py +310 -0
  585. rasa/plugin.py +90 -0
  586. rasa/server.py +1588 -0
  587. rasa/shared/__init__.py +0 -0
  588. rasa/shared/constants.py +321 -0
  589. rasa/shared/core/__init__.py +0 -0
  590. rasa/shared/core/command_payload_reader.py +109 -0
  591. rasa/shared/core/constants.py +180 -0
  592. rasa/shared/core/conversation.py +46 -0
  593. rasa/shared/core/domain.py +2172 -0
  594. rasa/shared/core/events.py +2559 -0
  595. rasa/shared/core/flows/__init__.py +7 -0
  596. rasa/shared/core/flows/flow.py +562 -0
  597. rasa/shared/core/flows/flow_path.py +84 -0
  598. rasa/shared/core/flows/flow_step.py +146 -0
  599. rasa/shared/core/flows/flow_step_links.py +319 -0
  600. rasa/shared/core/flows/flow_step_sequence.py +70 -0
  601. rasa/shared/core/flows/flows_list.py +258 -0
  602. rasa/shared/core/flows/flows_yaml_schema.json +303 -0
  603. rasa/shared/core/flows/nlu_trigger.py +117 -0
  604. rasa/shared/core/flows/steps/__init__.py +24 -0
  605. rasa/shared/core/flows/steps/action.py +56 -0
  606. rasa/shared/core/flows/steps/call.py +64 -0
  607. rasa/shared/core/flows/steps/collect.py +112 -0
  608. rasa/shared/core/flows/steps/constants.py +5 -0
  609. rasa/shared/core/flows/steps/continuation.py +36 -0
  610. rasa/shared/core/flows/steps/end.py +22 -0
  611. rasa/shared/core/flows/steps/internal.py +44 -0
  612. rasa/shared/core/flows/steps/link.py +51 -0
  613. rasa/shared/core/flows/steps/no_operation.py +48 -0
  614. rasa/shared/core/flows/steps/set_slots.py +50 -0
  615. rasa/shared/core/flows/steps/start.py +30 -0
  616. rasa/shared/core/flows/utils.py +39 -0
  617. rasa/shared/core/flows/validation.py +735 -0
  618. rasa/shared/core/flows/yaml_flows_io.py +405 -0
  619. rasa/shared/core/generator.py +908 -0
  620. rasa/shared/core/slot_mappings.py +526 -0
  621. rasa/shared/core/slots.py +654 -0
  622. rasa/shared/core/trackers.py +1183 -0
  623. rasa/shared/core/training_data/__init__.py +0 -0
  624. rasa/shared/core/training_data/loading.py +89 -0
  625. rasa/shared/core/training_data/story_reader/__init__.py +0 -0
  626. rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
  627. rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
  628. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
  629. rasa/shared/core/training_data/story_writer/__init__.py +0 -0
  630. rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
  631. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
  632. rasa/shared/core/training_data/structures.py +858 -0
  633. rasa/shared/core/training_data/visualization.html +146 -0
  634. rasa/shared/core/training_data/visualization.py +603 -0
  635. rasa/shared/data.py +249 -0
  636. rasa/shared/engine/__init__.py +0 -0
  637. rasa/shared/engine/caching.py +26 -0
  638. rasa/shared/exceptions.py +167 -0
  639. rasa/shared/importers/__init__.py +0 -0
  640. rasa/shared/importers/importer.py +770 -0
  641. rasa/shared/importers/multi_project.py +215 -0
  642. rasa/shared/importers/rasa.py +108 -0
  643. rasa/shared/importers/remote_importer.py +196 -0
  644. rasa/shared/importers/utils.py +36 -0
  645. rasa/shared/nlu/__init__.py +0 -0
  646. rasa/shared/nlu/constants.py +54 -0
  647. rasa/shared/nlu/interpreter.py +10 -0
  648. rasa/shared/nlu/training_data/__init__.py +0 -0
  649. rasa/shared/nlu/training_data/entities_parser.py +208 -0
  650. rasa/shared/nlu/training_data/features.py +492 -0
  651. rasa/shared/nlu/training_data/formats/__init__.py +10 -0
  652. rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
  653. rasa/shared/nlu/training_data/formats/luis.py +87 -0
  654. rasa/shared/nlu/training_data/formats/rasa.py +135 -0
  655. rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
  656. rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
  657. rasa/shared/nlu/training_data/formats/wit.py +52 -0
  658. rasa/shared/nlu/training_data/loading.py +137 -0
  659. rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
  660. rasa/shared/nlu/training_data/message.py +490 -0
  661. rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
  662. rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
  663. rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
  664. rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
  665. rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
  666. rasa/shared/nlu/training_data/training_data.py +729 -0
  667. rasa/shared/nlu/training_data/util.py +223 -0
  668. rasa/shared/providers/__init__.py +0 -0
  669. rasa/shared/providers/_configs/__init__.py +0 -0
  670. rasa/shared/providers/_configs/azure_openai_client_config.py +183 -0
  671. rasa/shared/providers/_configs/client_config.py +57 -0
  672. rasa/shared/providers/_configs/default_litellm_client_config.py +130 -0
  673. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +234 -0
  674. rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
  675. rasa/shared/providers/_configs/model_group_config.py +167 -0
  676. rasa/shared/providers/_configs/openai_client_config.py +175 -0
  677. rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
  678. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +177 -0
  679. rasa/shared/providers/_configs/utils.py +117 -0
  680. rasa/shared/providers/_ssl_verification_utils.py +124 -0
  681. rasa/shared/providers/_utils.py +79 -0
  682. rasa/shared/providers/embedding/__init__.py +0 -0
  683. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
  684. rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
  685. rasa/shared/providers/embedding/azure_openai_embedding_client.py +310 -0
  686. rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
  687. rasa/shared/providers/embedding/embedding_client.py +90 -0
  688. rasa/shared/providers/embedding/embedding_response.py +41 -0
  689. rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
  690. rasa/shared/providers/embedding/litellm_router_embedding_client.py +135 -0
  691. rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
  692. rasa/shared/providers/llm/__init__.py +0 -0
  693. rasa/shared/providers/llm/_base_litellm_client.py +263 -0
  694. rasa/shared/providers/llm/azure_openai_llm_client.py +359 -0
  695. rasa/shared/providers/llm/default_litellm_llm_client.py +108 -0
  696. rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
  697. rasa/shared/providers/llm/llm_client.py +76 -0
  698. rasa/shared/providers/llm/llm_response.py +79 -0
  699. rasa/shared/providers/llm/openai_llm_client.py +155 -0
  700. rasa/shared/providers/llm/rasa_llm_client.py +112 -0
  701. rasa/shared/providers/llm/self_hosted_llm_client.py +269 -0
  702. rasa/shared/providers/mappings.py +94 -0
  703. rasa/shared/providers/router/__init__.py +0 -0
  704. rasa/shared/providers/router/_base_litellm_router_client.py +183 -0
  705. rasa/shared/providers/router/router_client.py +73 -0
  706. rasa/shared/utils/__init__.py +0 -0
  707. rasa/shared/utils/cli.py +102 -0
  708. rasa/shared/utils/common.py +324 -0
  709. rasa/shared/utils/constants.py +4 -0
  710. rasa/shared/utils/health_check/__init__.py +0 -0
  711. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
  712. rasa/shared/utils/health_check/health_check.py +258 -0
  713. rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
  714. rasa/shared/utils/io.py +499 -0
  715. rasa/shared/utils/llm.py +760 -0
  716. rasa/shared/utils/pykwalify_extensions.py +27 -0
  717. rasa/shared/utils/schemas/__init__.py +0 -0
  718. rasa/shared/utils/schemas/config.yml +2 -0
  719. rasa/shared/utils/schemas/domain.yml +145 -0
  720. rasa/shared/utils/schemas/events.py +214 -0
  721. rasa/shared/utils/schemas/model_config.yml +36 -0
  722. rasa/shared/utils/schemas/stories.yml +173 -0
  723. rasa/shared/utils/yaml.py +1068 -0
  724. rasa/studio/__init__.py +0 -0
  725. rasa/studio/auth.py +270 -0
  726. rasa/studio/config.py +136 -0
  727. rasa/studio/constants.py +19 -0
  728. rasa/studio/data_handler.py +368 -0
  729. rasa/studio/download.py +489 -0
  730. rasa/studio/results_logger.py +137 -0
  731. rasa/studio/train.py +134 -0
  732. rasa/studio/upload.py +563 -0
  733. rasa/telemetry.py +1876 -0
  734. rasa/tracing/__init__.py +0 -0
  735. rasa/tracing/config.py +355 -0
  736. rasa/tracing/constants.py +62 -0
  737. rasa/tracing/instrumentation/__init__.py +0 -0
  738. rasa/tracing/instrumentation/attribute_extractors.py +765 -0
  739. rasa/tracing/instrumentation/instrumentation.py +1306 -0
  740. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
  741. rasa/tracing/instrumentation/metrics.py +294 -0
  742. rasa/tracing/metric_instrument_provider.py +205 -0
  743. rasa/utils/__init__.py +0 -0
  744. rasa/utils/beta.py +83 -0
  745. rasa/utils/cli.py +28 -0
  746. rasa/utils/common.py +639 -0
  747. rasa/utils/converter.py +53 -0
  748. rasa/utils/endpoints.py +331 -0
  749. rasa/utils/io.py +252 -0
  750. rasa/utils/json_utils.py +60 -0
  751. rasa/utils/licensing.py +542 -0
  752. rasa/utils/log_utils.py +181 -0
  753. rasa/utils/mapper.py +210 -0
  754. rasa/utils/ml_utils.py +147 -0
  755. rasa/utils/plotting.py +362 -0
  756. rasa/utils/sanic_error_handler.py +32 -0
  757. rasa/utils/singleton.py +23 -0
  758. rasa/utils/tensorflow/__init__.py +0 -0
  759. rasa/utils/tensorflow/callback.py +112 -0
  760. rasa/utils/tensorflow/constants.py +116 -0
  761. rasa/utils/tensorflow/crf.py +492 -0
  762. rasa/utils/tensorflow/data_generator.py +440 -0
  763. rasa/utils/tensorflow/environment.py +161 -0
  764. rasa/utils/tensorflow/exceptions.py +5 -0
  765. rasa/utils/tensorflow/feature_array.py +366 -0
  766. rasa/utils/tensorflow/layers.py +1565 -0
  767. rasa/utils/tensorflow/layers_utils.py +113 -0
  768. rasa/utils/tensorflow/metrics.py +281 -0
  769. rasa/utils/tensorflow/model_data.py +798 -0
  770. rasa/utils/tensorflow/model_data_utils.py +499 -0
  771. rasa/utils/tensorflow/models.py +935 -0
  772. rasa/utils/tensorflow/rasa_layers.py +1094 -0
  773. rasa/utils/tensorflow/transformer.py +640 -0
  774. rasa/utils/tensorflow/types.py +6 -0
  775. rasa/utils/train_utils.py +572 -0
  776. rasa/utils/url_tools.py +53 -0
  777. rasa/utils/yaml.py +54 -0
  778. rasa/validator.py +1644 -0
  779. rasa/version.py +3 -0
  780. rasa_pro-3.11.3a1.dev2.dist-info/METADATA +198 -0
  781. rasa_pro-3.11.3a1.dev2.dist-info/NOTICE +5 -0
  782. rasa_pro-3.11.3a1.dev2.dist-info/RECORD +784 -0
  783. rasa_pro-3.11.3a1.dev2.dist-info/WHEEL +4 -0
  784. rasa_pro-3.11.3a1.dev2.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,112 @@
1
+ from typing import Any, Dict, Optional
2
+
3
+ import structlog
4
+
5
+ from rasa.shared.constants import (
6
+ RASA_PROVIDER,
7
+ OPENAI_PROVIDER,
8
+ )
9
+ from rasa.shared.providers._configs.rasa_llm_client_config import (
10
+ RasaLLMClientConfig,
11
+ )
12
+ from rasa.utils.licensing import retrieve_license_from_env
13
+ from rasa.shared.providers.llm._base_litellm_client import _BaseLiteLLMClient
14
+
15
+
16
+ structlogger = structlog.get_logger()
17
+
18
+
19
+ class RasaLLMClient(_BaseLiteLLMClient):
20
+ """A client for interfacing with a Rasa-Hosted LLM endpoint that uses
21
+
22
+ Parameters:
23
+ model (str): The model or deployment name.
24
+ api_base (str): The base URL of the API endpoint.
25
+ kwargs: Any: Additional configuration parameters that can include, but
26
+ are not limited to model parameters and lite-llm specific
27
+ parameters. These parameters will be passed to the
28
+ completion/acompletion calls. To see what it can include, visit:
29
+
30
+ Raises:
31
+ ProviderClientValidationError: If validation of the client setup fails.
32
+ ProviderClientAPIException: If the API request fails.
33
+ """
34
+
35
+ def __init__(
36
+ self,
37
+ model: str,
38
+ api_base: str,
39
+ **kwargs: Any,
40
+ ):
41
+ super().__init__() # type: ignore
42
+ self._model = model
43
+ self._api_base = api_base
44
+ self._use_chat_completions_endpoint = True
45
+ self._extra_parameters = kwargs or {}
46
+
47
+ @property
48
+ def model(self) -> str:
49
+ return self._model
50
+
51
+ @property
52
+ def api_base(self) -> Optional[str]:
53
+ """
54
+ Returns the base API URL for the openai llm client.
55
+ """
56
+ return self._api_base
57
+
58
+ @property
59
+ def provider(self) -> str:
60
+ """
61
+ Returns the provider name for the self hosted llm client.
62
+
63
+ Returns:
64
+ String representing the provider name.
65
+ """
66
+ return RASA_PROVIDER
67
+
68
+ @property
69
+ def _litellm_model_name(self) -> str:
70
+ return f"{OPENAI_PROVIDER}/{self._model}"
71
+
72
+ @property
73
+ def _litellm_extra_parameters(self) -> Dict[str, Any]:
74
+ return self._extra_parameters
75
+
76
+ @property
77
+ def config(self) -> dict:
78
+ return RasaLLMClientConfig(
79
+ model=self._model,
80
+ api_base=self._api_base,
81
+ extra_parameters=self._extra_parameters,
82
+ ).to_dict()
83
+
84
+ @property
85
+ def _completion_fn_args(self) -> Dict[str, Any]:
86
+ """Returns the completion arguments for invoking a call through
87
+ LiteLLM's completion functions.
88
+ """
89
+ fn_args = super()._completion_fn_args
90
+ fn_args.update(
91
+ {"api_base": self.api_base, "api_key": retrieve_license_from_env()}
92
+ )
93
+ return fn_args
94
+
95
+ @classmethod
96
+ def from_config(cls, config: Dict[str, Any]) -> "RasaLLMClient":
97
+ try:
98
+ client_config = RasaLLMClientConfig.from_dict(config)
99
+ except ValueError as e:
100
+ message = "Cannot instantiate a client from the passed configuration."
101
+ structlogger.error(
102
+ "rasa_llm_client.from_config.error",
103
+ message=message,
104
+ config=config,
105
+ original_error=e,
106
+ )
107
+ raise
108
+ return cls(
109
+ model=client_config.model,
110
+ api_base=client_config.api_base,
111
+ **client_config.extra_parameters,
112
+ )
@@ -0,0 +1,269 @@
1
+ from typing import Any, Dict, List, Optional, Union
2
+ from litellm import (
3
+ text_completion,
4
+ atext_completion,
5
+ )
6
+ import logging
7
+ import os
8
+ import structlog
9
+
10
+ from rasa.shared.constants import (
11
+ SELF_HOSTED_VLLM_PREFIX,
12
+ SELF_HOSTED_VLLM_API_KEY_ENV_VAR,
13
+ API_KEY,
14
+ )
15
+ from rasa.shared.providers._configs.self_hosted_llm_client_config import (
16
+ SelfHostedLLMClientConfig,
17
+ )
18
+ from rasa.shared.exceptions import ProviderClientAPIException
19
+ from rasa.shared.providers.llm._base_litellm_client import _BaseLiteLLMClient
20
+ from rasa.shared.providers.llm.llm_response import LLMResponse
21
+ from rasa.shared.utils.io import suppress_logs
22
+
23
+ structlogger = structlog.get_logger()
24
+
25
+
26
+ class SelfHostedLLMClient(_BaseLiteLLMClient):
27
+ """A client for interfacing with Self Hosted LLM endpoints that uses
28
+
29
+ Parameters:
30
+ model (str): The model or deployment name.
31
+ provider (str): The provider of the model.
32
+ api_base (str): The base URL of the API endpoint.
33
+ api_type (Optional[str]): The type of the API endpoint.
34
+ api_version (Optional[str]): The version of the API endpoint.
35
+ use_chat_completions_endpoint (Optional[bool]): Whether to use the chat
36
+ completions endpoint for completions. Defaults to True.
37
+ kwargs: Any: Additional configuration parameters that can include, but
38
+ are not limited to model parameters and lite-llm specific
39
+ parameters. These parameters will be passed to the
40
+ completion/acompletion calls. To see what it can include, visit:
41
+
42
+ Raises:
43
+ ProviderClientValidationError: If validation of the client setup fails.
44
+ ProviderClientAPIException: If the API request fails.
45
+ """
46
+
47
+ def __init__(
48
+ self,
49
+ provider: str,
50
+ model: str,
51
+ api_base: str,
52
+ api_type: Optional[str] = None,
53
+ api_version: Optional[str] = None,
54
+ use_chat_completions_endpoint: Optional[bool] = True,
55
+ **kwargs: Any,
56
+ ):
57
+ super().__init__() # type: ignore
58
+ self._provider = provider
59
+ self._model = model
60
+ self._api_base = api_base
61
+ self._api_type = api_type
62
+ self._api_version = api_version
63
+ self._use_chat_completions_endpoint = use_chat_completions_endpoint
64
+ self._extra_parameters = kwargs or {}
65
+ if self._extra_parameters.get(API_KEY) is None:
66
+ self._apply_dummy_api_key_if_missing()
67
+
68
+ @classmethod
69
+ def from_config(cls, config: Dict[str, Any]) -> "SelfHostedLLMClient":
70
+ try:
71
+ client_config = SelfHostedLLMClientConfig.from_dict(config)
72
+ except ValueError as e:
73
+ message = "Cannot instantiate a client from the passed configuration."
74
+ structlogger.error(
75
+ "self_hosted_llm_client.from_config.error",
76
+ message=message,
77
+ config=config,
78
+ original_error=e,
79
+ )
80
+ raise
81
+
82
+ return cls(
83
+ model=client_config.model,
84
+ provider=client_config.provider,
85
+ api_base=client_config.api_base,
86
+ api_type=client_config.api_type,
87
+ api_version=client_config.api_version,
88
+ use_chat_completions_endpoint=client_config.use_chat_completions_endpoint,
89
+ **client_config.extra_parameters,
90
+ )
91
+
92
+ @property
93
+ def provider(self) -> str:
94
+ """
95
+ Returns the provider name for the self hosted llm client.
96
+
97
+ Returns:
98
+ String representing the provider name.
99
+ """
100
+ return self._provider
101
+
102
+ @property
103
+ def model(self) -> str:
104
+ """
105
+ Returns the model name for the self hosted llm client.
106
+
107
+ Returns:
108
+ String representing the model name.
109
+ """
110
+ return self._model
111
+
112
+ @property
113
+ def api_base(self) -> str:
114
+ """
115
+ Returns the base URL for the API endpoint.
116
+
117
+ Returns:
118
+ String representing the base URL.
119
+ """
120
+ return self._api_base
121
+
122
+ @property
123
+ def api_type(self) -> Optional[str]:
124
+ """
125
+ Returns the type of the API endpoint. Currently only OpenAI is supported.
126
+
127
+ Returns:
128
+ String representing the API type.
129
+ """
130
+ return self._api_type
131
+
132
+ @property
133
+ def api_version(self) -> Optional[str]:
134
+ """
135
+ Returns the version of the API endpoint.
136
+
137
+ Returns:
138
+ String representing the API version.
139
+ """
140
+ return self._api_version
141
+
142
+ @property
143
+ def config(self) -> Dict:
144
+ """
145
+ Returns the configuration for the self hosted llm client.
146
+ Returns:
147
+ Dictionary containing the configuration.
148
+ """
149
+ config = SelfHostedLLMClientConfig(
150
+ model=self._model,
151
+ provider=self._provider,
152
+ api_base=self._api_base,
153
+ api_type=self._api_type,
154
+ api_version=self._api_version,
155
+ use_chat_completions_endpoint=self._use_chat_completions_endpoint,
156
+ extra_parameters=self._extra_parameters,
157
+ )
158
+ return config.to_dict()
159
+
160
+ @property
161
+ def _litellm_model_name(self) -> str:
162
+ """Returns the value of LiteLLM's model parameter to be used in
163
+ completion/acompletion in LiteLLM format:
164
+
165
+ <hosted_vllm>/<model or deployment name>
166
+ """
167
+ if self.model and f"{SELF_HOSTED_VLLM_PREFIX}/" not in self.model:
168
+ return f"{SELF_HOSTED_VLLM_PREFIX}/{self.model}"
169
+ return self.model
170
+
171
+ @property
172
+ def _litellm_extra_parameters(self) -> Dict[str, Any]:
173
+ """Returns optional configuration parameters specific
174
+ to the client provider and deployed model.
175
+ """
176
+ return self._extra_parameters
177
+
178
+ @property
179
+ def _completion_fn_args(self) -> Dict[str, Any]:
180
+ """Returns the completion arguments for invoking a call through
181
+ LiteLLM's completion functions.
182
+ """
183
+ fn_args = super()._completion_fn_args
184
+ fn_args.update(
185
+ {
186
+ "api_base": self.api_base,
187
+ "api_version": self.api_version,
188
+ }
189
+ )
190
+ return fn_args
191
+
192
+ @suppress_logs(log_level=logging.WARNING)
193
+ def _text_completion(self, prompt: Union[List[str], str]) -> LLMResponse:
194
+ """
195
+ Synchronously generate completions for given prompt.
196
+
197
+ Args:
198
+ prompt: Prompt to generate the completion for.
199
+ Returns:
200
+ List of message completions.
201
+ Raises:
202
+ ProviderClientAPIException: If the API request fails.
203
+ """
204
+ try:
205
+ response = text_completion(prompt=prompt, **self._completion_fn_args)
206
+ return self._format_text_completion_response(response)
207
+ except Exception as e:
208
+ raise ProviderClientAPIException(e)
209
+
210
+ @suppress_logs(log_level=logging.WARNING)
211
+ async def _atext_completion(self, prompt: Union[List[str], str]) -> LLMResponse:
212
+ """
213
+ Asynchronously generate completions for given prompt.
214
+
215
+ Args:
216
+ prompt: Prompt to generate the completion for.
217
+ Returns:
218
+ List of message completions.
219
+ Raises:
220
+ ProviderClientAPIException: If the API request fails.
221
+ """
222
+ try:
223
+ response = await atext_completion(prompt=prompt, **self._completion_fn_args)
224
+ return self._format_text_completion_response(response)
225
+ except Exception as e:
226
+ raise ProviderClientAPIException(e)
227
+
228
+ async def acompletion(self, messages: Union[List[str], str]) -> LLMResponse:
229
+ """Asynchronous completion of the model with the given messages.
230
+
231
+ Method overrides the base class method to call the appropriate
232
+ completion method based on the configuration. If the chat completions
233
+ endpoint is enabled, the acompletion method is called. Otherwise, the
234
+ atext_completion method is called.
235
+
236
+ Args:
237
+ messages: The messages to be used for completion.
238
+
239
+ Returns:
240
+ The completion response.
241
+ """
242
+ if self._use_chat_completions_endpoint:
243
+ return await super().acompletion(messages)
244
+ return await self._atext_completion(messages)
245
+
246
+ def completion(self, messages: Union[List[str], str]) -> LLMResponse:
247
+ """Completion of the model with the given messages.
248
+
249
+ Method overrides the base class method to call the appropriate
250
+ completion method based on the configuration. If the chat completions
251
+ endpoint is enabled, the completion method is called. Otherwise, the
252
+ text_completion method is called.
253
+
254
+ Args:
255
+ messages: The messages to be used for completion.
256
+
257
+ Returns:
258
+ The completion response.
259
+ """
260
+ if self._use_chat_completions_endpoint:
261
+ return super().completion(messages)
262
+ return self._text_completion(messages)
263
+
264
+ @staticmethod
265
+ def _apply_dummy_api_key_if_missing() -> None:
266
+ if not os.getenv(SELF_HOSTED_VLLM_API_KEY_ENV_VAR):
267
+ os.environ[SELF_HOSTED_VLLM_API_KEY_ENV_VAR] = (
268
+ "dummy_self_hosted_llm_api_key"
269
+ )
@@ -0,0 +1,94 @@
1
+ from typing import Dict, Type, Optional
2
+
3
+ from rasa.shared.constants import (
4
+ AZURE_OPENAI_PROVIDER,
5
+ HUGGINGFACE_LOCAL_EMBEDDING_PROVIDER,
6
+ OPENAI_PROVIDER,
7
+ SELF_HOSTED_PROVIDER,
8
+ RASA_PROVIDER,
9
+ SELF_HOSTED_VLLM_PREFIX,
10
+ )
11
+ from rasa.shared.providers.embedding.azure_openai_embedding_client import (
12
+ AzureOpenAIEmbeddingClient,
13
+ )
14
+ from rasa.shared.providers.embedding.default_litellm_embedding_client import (
15
+ DefaultLiteLLMEmbeddingClient,
16
+ )
17
+ from rasa.shared.providers.embedding.embedding_client import EmbeddingClient
18
+ from rasa.shared.providers.embedding.huggingface_local_embedding_client import (
19
+ HuggingFaceLocalEmbeddingClient,
20
+ )
21
+ from rasa.shared.providers.embedding.openai_embedding_client import (
22
+ OpenAIEmbeddingClient,
23
+ )
24
+ from rasa.shared.providers.llm.azure_openai_llm_client import AzureOpenAILLMClient
25
+ from rasa.shared.providers.llm.default_litellm_llm_client import DefaultLiteLLMClient
26
+ from rasa.shared.providers.llm.llm_client import LLMClient
27
+ from rasa.shared.providers.llm.openai_llm_client import OpenAILLMClient
28
+ from rasa.shared.providers.llm.self_hosted_llm_client import SelfHostedLLMClient
29
+ from rasa.shared.providers.llm.rasa_llm_client import RasaLLMClient
30
+ from rasa.shared.providers._configs.azure_openai_client_config import (
31
+ AzureOpenAIClientConfig,
32
+ )
33
+ from rasa.shared.providers._configs.default_litellm_client_config import (
34
+ DefaultLiteLLMClientConfig,
35
+ )
36
+ from rasa.shared.providers._configs.huggingface_local_embedding_client_config import (
37
+ HuggingFaceLocalEmbeddingClientConfig,
38
+ )
39
+ from rasa.shared.providers._configs.openai_client_config import OpenAIClientConfig
40
+ from rasa.shared.providers._configs.self_hosted_llm_client_config import (
41
+ SelfHostedLLMClientConfig,
42
+ )
43
+ from rasa.shared.providers._configs.rasa_llm_client_config import RasaLLMClientConfig
44
+
45
+ from rasa.shared.providers._configs.client_config import ClientConfig
46
+
47
+ _provider_to_llm_client_mapping: Dict[str, Type[LLMClient]] = {
48
+ OPENAI_PROVIDER: OpenAILLMClient,
49
+ AZURE_OPENAI_PROVIDER: AzureOpenAILLMClient,
50
+ SELF_HOSTED_PROVIDER: SelfHostedLLMClient,
51
+ RASA_PROVIDER: RasaLLMClient,
52
+ }
53
+
54
+ _provider_to_embedding_client_mapping: Dict[str, Type[EmbeddingClient]] = {
55
+ OPENAI_PROVIDER: OpenAIEmbeddingClient,
56
+ AZURE_OPENAI_PROVIDER: AzureOpenAIEmbeddingClient,
57
+ HUGGINGFACE_LOCAL_EMBEDDING_PROVIDER: HuggingFaceLocalEmbeddingClient,
58
+ }
59
+
60
+ _provider_to_client_config_class_mapping: Dict[str, Type] = {
61
+ OPENAI_PROVIDER: OpenAIClientConfig,
62
+ AZURE_OPENAI_PROVIDER: AzureOpenAIClientConfig,
63
+ HUGGINGFACE_LOCAL_EMBEDDING_PROVIDER: HuggingFaceLocalEmbeddingClientConfig,
64
+ SELF_HOSTED_PROVIDER: SelfHostedLLMClientConfig,
65
+ RASA_PROVIDER: RasaLLMClientConfig,
66
+ }
67
+
68
+
69
+ _provider_to_prefix_mapping: Dict[str, str] = {
70
+ # Specify the provider name as the key and its corresponding prefix as the value
71
+ # for providers where the prefix differs from the provider name.
72
+ SELF_HOSTED_PROVIDER: SELF_HOSTED_VLLM_PREFIX,
73
+ RASA_PROVIDER: OPENAI_PROVIDER,
74
+ }
75
+
76
+
77
+ def get_llm_client_from_provider(provider: Optional[str]) -> Type[LLMClient]:
78
+ return _provider_to_llm_client_mapping.get(provider, DefaultLiteLLMClient)
79
+
80
+
81
+ def get_embedding_client_from_provider(provider: str) -> Type[EmbeddingClient]:
82
+ return _provider_to_embedding_client_mapping.get(
83
+ provider, DefaultLiteLLMEmbeddingClient
84
+ )
85
+
86
+
87
+ def get_client_config_class_from_provider(provider: str) -> Type[ClientConfig]:
88
+ return _provider_to_client_config_class_mapping.get(
89
+ provider, DefaultLiteLLMClientConfig
90
+ )
91
+
92
+
93
+ def get_prefix_from_provider(provider: str) -> str:
94
+ return _provider_to_prefix_mapping.get(provider, provider)
File without changes
@@ -0,0 +1,183 @@
1
+ from typing import Any, Dict, List
2
+ import os
3
+ import structlog
4
+
5
+ from litellm import Router
6
+
7
+ from rasa.shared.constants import (
8
+ MODEL_LIST_KEY,
9
+ MODEL_GROUP_ID_CONFIG_KEY,
10
+ ROUTER_CONFIG_KEY,
11
+ SELF_HOSTED_VLLM_PREFIX,
12
+ SELF_HOSTED_VLLM_API_KEY_ENV_VAR,
13
+ LITELLM_PARAMS_KEY,
14
+ API_KEY,
15
+ MODEL_CONFIG_KEY,
16
+ USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY,
17
+ )
18
+ from rasa.shared.exceptions import ProviderClientValidationError
19
+ from rasa.shared.providers._configs.litellm_router_client_config import (
20
+ LiteLLMRouterClientConfig,
21
+ )
22
+ from rasa.shared.utils.io import resolve_environment_variables
23
+
24
+ structlogger = structlog.get_logger()
25
+
26
+
27
+ class _BaseLiteLLMRouterClient:
28
+ """An abstract base class for LiteLLM Router clients.
29
+
30
+ This class defines the interface and common functionality for all the router clients
31
+ based on LiteLLM.
32
+
33
+ The class is made private to prevent it from being part of the public-facing
34
+ interface, as it serves as an internal base class for specific implementations of
35
+ router clients that are based on LiteLLM router implementation.
36
+
37
+ Parameters:
38
+ model_group_id (str): The model group ID.
39
+ model_configurations (List[Dict[str, Any]]): The list of model configurations.
40
+ router_settings (Dict[str, Any]): The router settings.
41
+ kwargs (Optional[Dict[str, Any]]): Additional configuration parameters.
42
+
43
+ Raises:
44
+ ProviderClientValidationError: If validation of the client setup fails.
45
+ """
46
+
47
+ def __init__(
48
+ self,
49
+ model_group_id: str,
50
+ model_configurations: List[Dict[str, Any]],
51
+ router_settings: Dict[str, Any],
52
+ use_chat_completions_endpoint: bool = True,
53
+ **kwargs: Any,
54
+ ):
55
+ self._model_group_id = model_group_id
56
+ self._model_configurations = model_configurations
57
+ self._router_settings = router_settings
58
+ self._use_chat_completions_endpoint = use_chat_completions_endpoint
59
+ self._extra_parameters = kwargs or {}
60
+ self.additional_client_setup()
61
+ try:
62
+ resolved_model_configurations = (
63
+ self._resolve_env_vars_in_model_configurations()
64
+ )
65
+ self._router_client = Router(
66
+ model_list=resolved_model_configurations, **router_settings
67
+ )
68
+ except Exception as e:
69
+ event_info = "Cannot instantiate a router client."
70
+ structlogger.error(
71
+ "_base_litellm_router_client.init.error",
72
+ event_info=event_info,
73
+ model_group_id=model_group_id,
74
+ models=model_configurations,
75
+ router=router_settings,
76
+ original_error=e,
77
+ )
78
+ raise ProviderClientValidationError(f"{event_info} Original error: {e}")
79
+
80
+ def additional_client_setup(self) -> None:
81
+ """Additional setup for the LiteLLM Router client."""
82
+ # If the model configuration is self-hosted VLLM, set a dummy API key if not
83
+ # provided. A bug in the LiteLLM library requires an API key to be set even if
84
+ # it is not required.
85
+ for model_configuration in self.model_configurations:
86
+ if (
87
+ f"{SELF_HOSTED_VLLM_PREFIX}/"
88
+ in model_configuration[LITELLM_PARAMS_KEY][MODEL_CONFIG_KEY]
89
+ and API_KEY not in model_configuration[LITELLM_PARAMS_KEY]
90
+ and not os.getenv(SELF_HOSTED_VLLM_API_KEY_ENV_VAR)
91
+ ):
92
+ os.environ[SELF_HOSTED_VLLM_API_KEY_ENV_VAR] = "dummy api key"
93
+ return
94
+
95
+ @classmethod
96
+ def from_config(cls, config: Dict[str, Any]) -> "_BaseLiteLLMRouterClient":
97
+ """Instantiates a LiteLLM Router Embedding client from a configuration dict.
98
+
99
+ Args:
100
+ config: (Dict[str, Any]) The configuration dictionary.
101
+
102
+ Returns:
103
+ LiteLLMRouterLLMClient: The instantiated LiteLLM Router LLM client.
104
+
105
+ Raises:
106
+ ValueError: If the configuration is invalid.
107
+ """
108
+ try:
109
+ client_config = LiteLLMRouterClientConfig.from_dict(config)
110
+ except (KeyError, ValueError) as e:
111
+ message = "Cannot instantiate a client from the passed configuration."
112
+ structlogger.error(
113
+ "litellm_router_llm_client.from_config.error",
114
+ message=message,
115
+ config=config,
116
+ original_error=e,
117
+ )
118
+ raise
119
+
120
+ return cls(
121
+ model_group_id=client_config.model_group_id,
122
+ model_configurations=client_config.litellm_model_list,
123
+ router_settings=client_config.litellm_router_settings,
124
+ use_chat_completions_endpoint=client_config.use_chat_completions_endpoint,
125
+ **client_config.extra_parameters,
126
+ )
127
+
128
+ @property
129
+ def model_group_id(self) -> str:
130
+ """Returns the model group ID for the LiteLLM Router client."""
131
+ return self._model_group_id
132
+
133
+ @property
134
+ def model_configurations(self) -> List[Dict[str, Any]]:
135
+ """Returns the model configurations for the LiteLLM Router client."""
136
+ return self._model_configurations
137
+
138
+ @property
139
+ def router_settings(self) -> Dict[str, Any]:
140
+ """Returns the router settings for the LiteLLM Router client."""
141
+ return self._router_settings
142
+
143
+ @property
144
+ def router_client(self) -> Router:
145
+ """Returns the instantiated LiteLLM Router client."""
146
+ return self._router_client
147
+
148
+ @property
149
+ def use_chat_completions_endpoint(self) -> bool:
150
+ """Returns whether to use the chat completions endpoint."""
151
+ return self._use_chat_completions_endpoint
152
+
153
+ @property
154
+ def _litellm_extra_parameters(self) -> Dict[str, Any]:
155
+ """
156
+ Returns the extra parameters for the LiteLLM Router client.
157
+
158
+ Returns:
159
+ Dictionary containing the model parameters.
160
+ """
161
+ return self._extra_parameters
162
+
163
+ @property
164
+ def config(self) -> Dict:
165
+ """Returns the configuration for the LiteLLM Router client in LiteLLM format."""
166
+ return {
167
+ MODEL_GROUP_ID_CONFIG_KEY: self.model_group_id,
168
+ MODEL_LIST_KEY: self.model_configurations,
169
+ ROUTER_CONFIG_KEY: self.router_settings,
170
+ USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY: (
171
+ self.use_chat_completions_endpoint
172
+ ),
173
+ **self._litellm_extra_parameters,
174
+ }
175
+
176
+ def _resolve_env_vars_in_model_configurations(self) -> List:
177
+ model_configuration_with_resolved_keys = []
178
+ for model_configuration in self.model_configurations:
179
+ resolved_model_configuration = resolve_environment_variables(
180
+ model_configuration
181
+ )
182
+ model_configuration_with_resolved_keys.append(resolved_model_configuration)
183
+ return model_configuration_with_resolved_keys