rasa-pro 3.12.18.dev1__py3-none-any.whl → 3.13.0a1.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 (341) hide show
  1. rasa/__init__.py +0 -6
  2. rasa/__main__.py +3 -4
  3. rasa/api.py +1 -1
  4. rasa/builder/create_openai_vector_store.py +69 -0
  5. rasa/builder/llm-helper-schema.json +69 -0
  6. rasa/builder/prompt_to_bot.py +650 -0
  7. rasa/builder/scrape_rasa_docs.py +97 -0
  8. rasa/builder/skill_to_bot_prompt.jinja +158 -0
  9. rasa/cli/dialogue_understanding_test.py +1 -1
  10. rasa/cli/e2e_test.py +1 -1
  11. rasa/cli/evaluate.py +2 -2
  12. rasa/cli/export.py +3 -3
  13. rasa/cli/llm_fine_tuning.py +1 -1
  14. rasa/cli/project_templates/default/config.yml +5 -32
  15. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_cancels_during_a_correction.yml +1 -1
  16. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +1 -1
  17. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_handle.yml +1 -1
  18. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_name.yml +1 -1
  19. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +1 -1
  20. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_lists_contacts.yml +1 -1
  21. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact.yml +1 -1
  22. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact_from_list.yml +1 -1
  23. rasa/cli/project_templates/default/endpoints.yml +18 -2
  24. rasa/cli/project_templates/defaults.py +133 -0
  25. rasa/cli/run.py +1 -1
  26. rasa/cli/scaffold.py +2 -3
  27. rasa/cli/studio/download.py +1 -1
  28. rasa/cli/studio/link.py +53 -0
  29. rasa/cli/studio/pull.py +78 -0
  30. rasa/cli/studio/push.py +78 -0
  31. rasa/cli/studio/studio.py +12 -0
  32. rasa/cli/studio/upload.py +5 -3
  33. rasa/cli/train.py +1 -1
  34. rasa/cli/utils.py +1 -1
  35. rasa/cli/x.py +1 -1
  36. rasa/constants.py +2 -0
  37. rasa/core/__init__.py +0 -16
  38. rasa/core/actions/action.py +42 -31
  39. rasa/core/actions/action_repeat_bot_messages.py +18 -22
  40. rasa/core/actions/action_run_slot_rejections.py +1 -2
  41. rasa/core/agent.py +18 -3
  42. rasa/core/available_endpoints.py +146 -0
  43. rasa/core/brokers/kafka.py +4 -0
  44. rasa/core/brokers/pika.py +5 -2
  45. rasa/core/brokers/sql.py +1 -1
  46. rasa/core/channels/botframework.py +2 -2
  47. rasa/core/channels/channel.py +2 -2
  48. rasa/core/channels/development_inspector.py +1 -1
  49. rasa/core/channels/facebook.py +1 -4
  50. rasa/core/channels/hangouts.py +8 -5
  51. rasa/core/channels/inspector/.eslintrc.cjs +12 -6
  52. rasa/core/channels/inspector/.prettierrc +5 -0
  53. rasa/core/channels/inspector/README.md +11 -5
  54. rasa/core/channels/inspector/dist/assets/{arc-9f75cc3b.js → arc-02053cc1.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7f34db23.js → blockDiagram-38ab4fdb-008b6289.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-948bab2c.js → c4Diagram-3d4e48cf-fb2597be.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/channel-078dada8.js +1 -0
  58. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-53b0dd0e.js → classDiagram-70f12bd4-7f847e00.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-fdf789e7.js → classDiagram-v2-f2320105-ba1d689b.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/clone-5b4516de.js +1 -0
  61. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-87c4ece5.js → createText-2e5e7dd3-dd8e67c4.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-5a8b0749.js → edges-e0da2a9e-10784939.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-66da90e2.js → erDiagram-9861fffd-24947ae6.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-10044f05.js → flowDb-956e92f1-a9ced505.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f338f66a.js → flowDiagram-66a62f08-afda9c7c.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-f9613071.js +1 -0
  67. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b13140aa.js → flowchart-elk-definition-4a651766-6ef530b8.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-f2b4a55a.js → ganttDiagram-c361ad54-0c7dd39a.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-dedc298d.js → gitGraphDiagram-72cf32ee-b57239d6.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{graph-4ede11ff.js → graph-9ed57cec.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{index-3862675e-65549d37.js → index-3862675e-233090de.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{index-3a23e736.js → index-72184470.js} +123 -123
  73. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-65439671.js → infoDiagram-f8f76790-aa116649.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-56d03d98.js → journeyDiagram-49397b02-e51877cc.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{layout-dd48f7f4.js → layout-3ca3798c.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{line-1569ad2c.js → line-26ee10d3.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{linear-48bf4935.js → linear-aedded32.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-688504c1.js → mindmap-definition-fc14e90a-d8957261.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78b6d7e6.js → pieDiagram-8a3498a8-d771f885.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-048b84b3.js → quadrantDiagram-120e2f19-09fdf50c.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-dd67f107.js → requirementDiagram-deff3bca-9f0af02e.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-8128436e.js → sankeyDiagram-04a897e0-84415b37.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-1a0d1461.js → sequenceDiagram-704730f1-8dec4055.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-46d388ed.js → stateDiagram-587899a1-c5431d07.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-ea42951a.js → stateDiagram-v2-d93cdb3a-274e77d9.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-7427ed0c.js → styles-6aaf32cf-e364a1d7.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-ff5e5a16.js → styles-9a916d00-0dae36f6.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-7b3680cf.js → styles-c10674c1-c4641675.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f860f2ad.js → svgDrawCommon-08f97a94-831fe9a1.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-2eebf0c8.js → timeline-definition-85554ec2-c3304b3a.js} +1 -1
  91. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-5d7f4e96.js → xychartDiagram-e933f94c-da799369.js} +1 -1
  92. rasa/core/channels/inspector/dist/index.html +1 -1
  93. rasa/core/channels/inspector/package.json +3 -1
  94. rasa/core/channels/inspector/src/App.tsx +91 -90
  95. rasa/core/channels/inspector/src/components/Chat.tsx +45 -41
  96. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +40 -40
  97. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +57 -57
  98. rasa/core/channels/inspector/src/components/DialogueStack.tsx +36 -27
  99. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +4 -4
  100. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +7 -7
  101. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +28 -12
  102. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +9 -9
  103. rasa/core/channels/inspector/src/components/RasaLogo.tsx +5 -5
  104. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +55 -60
  105. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +5 -5
  106. rasa/core/channels/inspector/src/components/Slots.tsx +22 -22
  107. rasa/core/channels/inspector/src/components/Welcome.tsx +28 -31
  108. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +245 -0
  109. rasa/core/channels/inspector/src/helpers/audio/microphone-processor.js +12 -0
  110. rasa/core/channels/inspector/src/helpers/audio/playback-processor.js +36 -0
  111. rasa/core/channels/inspector/src/helpers/conversation.ts +7 -7
  112. rasa/core/channels/inspector/src/helpers/formatters.test.ts +181 -181
  113. rasa/core/channels/inspector/src/helpers/formatters.ts +111 -111
  114. rasa/core/channels/inspector/src/helpers/utils.ts +78 -61
  115. rasa/core/channels/inspector/src/main.tsx +8 -8
  116. rasa/core/channels/inspector/src/theme/Button/Button.ts +8 -8
  117. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +7 -7
  118. rasa/core/channels/inspector/src/theme/Input/Input.ts +9 -9
  119. rasa/core/channels/inspector/src/theme/Link/Link.ts +6 -6
  120. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +13 -13
  121. rasa/core/channels/inspector/src/theme/Table/Table.tsx +10 -10
  122. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +5 -5
  123. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +7 -7
  124. rasa/core/channels/inspector/src/theme/base/colors.ts +64 -64
  125. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +21 -18
  126. rasa/core/channels/inspector/src/theme/base/radii.ts +8 -8
  127. rasa/core/channels/inspector/src/theme/base/shadows.ts +5 -5
  128. rasa/core/channels/inspector/src/theme/base/sizes.ts +5 -5
  129. rasa/core/channels/inspector/src/theme/base/space.ts +12 -12
  130. rasa/core/channels/inspector/src/theme/base/styles.ts +5 -5
  131. rasa/core/channels/inspector/src/theme/base/typography.ts +12 -12
  132. rasa/core/channels/inspector/src/theme/base/zIndices.ts +3 -3
  133. rasa/core/channels/inspector/src/theme/index.ts +38 -38
  134. rasa/core/channels/inspector/src/types.ts +56 -50
  135. rasa/core/channels/inspector/yarn.lock +5 -0
  136. rasa/core/channels/mattermost.py +1 -1
  137. rasa/core/channels/rasa_chat.py +2 -4
  138. rasa/core/channels/rest.py +5 -4
  139. rasa/core/channels/socketio.py +56 -41
  140. rasa/core/channels/studio_chat.py +337 -71
  141. rasa/core/channels/vier_cvg.py +1 -2
  142. rasa/core/channels/voice_ready/audiocodes.py +4 -11
  143. rasa/core/channels/voice_stream/audiocodes.py +8 -5
  144. rasa/core/channels/voice_stream/browser_audio.py +1 -1
  145. rasa/core/channels/voice_stream/genesys.py +2 -2
  146. rasa/core/channels/voice_stream/tts/__init__.py +8 -0
  147. rasa/core/channels/voice_stream/twilio_media_streams.py +10 -5
  148. rasa/core/channels/voice_stream/voice_channel.py +65 -23
  149. rasa/core/concurrent_lock_store.py +24 -10
  150. rasa/core/evaluation/marker_tracker_loader.py +1 -1
  151. rasa/core/exporter.py +1 -1
  152. rasa/core/http_interpreter.py +3 -7
  153. rasa/core/information_retrieval/faiss.py +18 -11
  154. rasa/core/information_retrieval/ingestion/__init__.py +0 -0
  155. rasa/core/information_retrieval/ingestion/faq_parser.py +158 -0
  156. rasa/core/jobs.py +2 -1
  157. rasa/core/lock_store.py +151 -60
  158. rasa/core/nlg/contextual_response_rephraser.py +17 -7
  159. rasa/core/nlg/generator.py +5 -22
  160. rasa/core/nlg/interpolator.py +2 -3
  161. rasa/core/nlg/response.py +6 -43
  162. rasa/core/nlg/summarize.py +1 -1
  163. rasa/core/nlg/translate.py +0 -8
  164. rasa/core/policies/enterprise_search_policy.py +262 -62
  165. rasa/core/policies/enterprise_search_prompt_with_relevancy_check_and_citation_template.jinja2 +63 -0
  166. rasa/core/policies/flow_policy.py +1 -1
  167. rasa/core/policies/flows/flow_executor.py +96 -17
  168. rasa/core/policies/intentless_policy.py +57 -20
  169. rasa/core/processor.py +114 -54
  170. rasa/core/run.py +33 -11
  171. rasa/core/tracker_stores/__init__.py +0 -0
  172. rasa/core/{auth_retry_tracker_store.py → tracker_stores/auth_retry_tracker_store.py} +5 -1
  173. rasa/core/tracker_stores/dynamo_tracker_store.py +218 -0
  174. rasa/core/tracker_stores/mongo_tracker_store.py +206 -0
  175. rasa/core/tracker_stores/redis_tracker_store.py +219 -0
  176. rasa/core/tracker_stores/sql_tracker_store.py +555 -0
  177. rasa/core/tracker_stores/tracker_store.py +805 -0
  178. rasa/core/training/interactive.py +1 -1
  179. rasa/core/utils.py +24 -95
  180. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -1
  181. rasa/dialogue_understanding/coexistence/llm_based_router.py +10 -6
  182. rasa/dialogue_understanding/commands/can_not_handle_command.py +2 -0
  183. rasa/dialogue_understanding/commands/cancel_flow_command.py +5 -1
  184. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +2 -0
  185. rasa/dialogue_understanding/commands/clarify_command.py +4 -0
  186. rasa/dialogue_understanding/commands/command_syntax_manager.py +1 -0
  187. rasa/dialogue_understanding/commands/correct_slots_command.py +1 -3
  188. rasa/dialogue_understanding/commands/human_handoff_command.py +2 -0
  189. rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -0
  190. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +2 -0
  191. rasa/dialogue_understanding/commands/set_slot_command.py +10 -0
  192. rasa/dialogue_understanding/commands/skip_question_command.py +2 -0
  193. rasa/dialogue_understanding/commands/start_flow_command.py +4 -0
  194. rasa/dialogue_understanding/commands/utils.py +26 -2
  195. rasa/dialogue_understanding/generator/__init__.py +7 -1
  196. rasa/dialogue_understanding/generator/command_generator.py +4 -2
  197. rasa/dialogue_understanding/generator/command_parser.py +2 -2
  198. rasa/dialogue_understanding/generator/command_parser_validator.py +63 -0
  199. rasa/dialogue_understanding/generator/llm_based_command_generator.py +5 -17
  200. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -3
  201. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +4 -44
  202. rasa/dialogue_understanding/generator/nlu_command_adapter.py +2 -2
  203. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +78 -0
  204. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +26 -474
  205. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +147 -0
  206. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +477 -0
  207. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +11 -64
  208. rasa/dialogue_understanding/patterns/cancel.py +1 -2
  209. rasa/dialogue_understanding/patterns/clarify.py +1 -1
  210. rasa/dialogue_understanding/patterns/correction.py +2 -2
  211. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +37 -25
  212. rasa/dialogue_understanding/patterns/domain_for_patterns.py +190 -0
  213. rasa/dialogue_understanding/processor/command_processor.py +6 -7
  214. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +17 -4
  215. rasa/dialogue_understanding/stack/utils.py +3 -1
  216. rasa/dialogue_understanding/utils.py +68 -12
  217. rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
  218. rasa/dialogue_understanding_test/command_metrics.py +38 -0
  219. rasa/dialogue_understanding_test/du_test_case.py +58 -25
  220. rasa/dialogue_understanding_test/du_test_result.py +228 -132
  221. rasa/dialogue_understanding_test/du_test_runner.py +11 -2
  222. rasa/dialogue_understanding_test/io.py +35 -8
  223. rasa/e2e_test/e2e_test_runner.py +1 -1
  224. rasa/engine/constants.py +1 -1
  225. rasa/engine/graph.py +2 -2
  226. rasa/engine/recipes/default_recipe.py +1 -1
  227. rasa/engine/validation.py +3 -2
  228. rasa/hooks.py +2 -85
  229. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +1 -5
  230. rasa/llm_fine_tuning/utils.py +2 -4
  231. rasa/model_manager/model_api.py +90 -2
  232. rasa/model_manager/socket_bridge.py +0 -7
  233. rasa/model_manager/trainer_service.py +15 -12
  234. rasa/plugin.py +2 -15
  235. rasa/privacy/__init__.py +0 -0
  236. rasa/privacy/constants.py +83 -0
  237. rasa/privacy/event_broker_utils.py +77 -0
  238. rasa/privacy/privacy_config.py +281 -0
  239. rasa/privacy/privacy_config_schema.json +86 -0
  240. rasa/privacy/privacy_filter.py +340 -0
  241. rasa/privacy/privacy_manager.py +576 -0
  242. rasa/server.py +23 -2
  243. rasa/shared/constants.py +13 -4
  244. rasa/shared/core/command_payload_reader.py +1 -5
  245. rasa/shared/core/constants.py +4 -3
  246. rasa/shared/core/domain.py +172 -11
  247. rasa/shared/core/events.py +100 -6
  248. rasa/shared/core/flows/flow.py +35 -8
  249. rasa/shared/core/flows/flow_step.py +26 -4
  250. rasa/shared/core/flows/flow_step_links.py +15 -0
  251. rasa/shared/core/flows/flow_step_sequence.py +6 -0
  252. rasa/shared/core/flows/flows_yaml_schema.json +3 -0
  253. rasa/shared/core/flows/nlu_trigger.py +13 -0
  254. rasa/shared/core/flows/steps/action.py +7 -4
  255. rasa/shared/core/flows/steps/call.py +11 -4
  256. rasa/shared/core/flows/steps/collect.py +71 -6
  257. rasa/shared/core/flows/steps/internal.py +6 -1
  258. rasa/shared/core/flows/steps/link.py +7 -4
  259. rasa/shared/core/flows/steps/no_operation.py +7 -4
  260. rasa/shared/core/flows/steps/set_slots.py +8 -4
  261. rasa/shared/core/flows/validation.py +16 -3
  262. rasa/shared/core/flows/yaml_flows_io.py +106 -5
  263. rasa/shared/core/slots.py +33 -1
  264. rasa/shared/core/trackers.py +4 -10
  265. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +1 -4
  266. rasa/shared/importers/importer.py +14 -0
  267. rasa/shared/importers/static.py +63 -0
  268. rasa/shared/providers/constants.py +0 -9
  269. rasa/shared/providers/llm/_base_litellm_client.py +4 -14
  270. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
  271. rasa/shared/providers/llm/litellm_router_llm_client.py +7 -17
  272. rasa/shared/providers/llm/llm_client.py +15 -24
  273. rasa/shared/providers/llm/self_hosted_llm_client.py +2 -10
  274. rasa/shared/utils/common.py +43 -1
  275. rasa/shared/utils/llm.py +155 -3
  276. rasa/shared/utils/yaml.py +32 -0
  277. rasa/studio/data_handler.py +3 -3
  278. rasa/studio/download/__init__.py +0 -0
  279. rasa/studio/download/domains.py +49 -0
  280. rasa/studio/download/download.py +416 -0
  281. rasa/studio/download/flows.py +351 -0
  282. rasa/studio/link.py +200 -0
  283. rasa/studio/pull.py +94 -0
  284. rasa/studio/push.py +131 -0
  285. rasa/studio/results_logger.py +6 -1
  286. rasa/studio/upload.py +185 -71
  287. rasa/telemetry.py +83 -26
  288. rasa/tracing/config.py +4 -5
  289. rasa/tracing/constants.py +19 -1
  290. rasa/tracing/instrumentation/attribute_extractors.py +49 -11
  291. rasa/tracing/instrumentation/instrumentation.py +54 -3
  292. rasa/tracing/instrumentation/metrics.py +98 -15
  293. rasa/tracing/metric_instrument_provider.py +75 -3
  294. rasa/utils/common.py +37 -27
  295. rasa/utils/endpoints.py +22 -1
  296. rasa/utils/licensing.py +2 -3
  297. rasa/utils/log_utils.py +1 -45
  298. rasa/validator.py +9 -11
  299. rasa/version.py +1 -1
  300. {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev2.dist-info}/METADATA +12 -14
  301. {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev2.dist-info}/RECORD +318 -294
  302. rasa/anonymization/__init__.py +0 -2
  303. rasa/anonymization/anonymisation_rule_yaml_reader.py +0 -91
  304. rasa/anonymization/anonymization_pipeline.py +0 -286
  305. rasa/anonymization/anonymization_rule_executor.py +0 -266
  306. rasa/anonymization/anonymization_rule_orchestrator.py +0 -119
  307. rasa/anonymization/schemas/config.yml +0 -47
  308. rasa/anonymization/utils.py +0 -118
  309. rasa/cli/project_templates/calm/config.yml +0 -10
  310. rasa/cli/project_templates/calm/credentials.yml +0 -33
  311. rasa/cli/project_templates/calm/endpoints.yml +0 -58
  312. rasa/cli/project_templates/default/actions/actions.py +0 -27
  313. rasa/cli/project_templates/default/data/nlu.yml +0 -91
  314. rasa/cli/project_templates/default/data/rules.yml +0 -13
  315. rasa/cli/project_templates/default/data/stories.yml +0 -30
  316. rasa/cli/project_templates/default/domain.yml +0 -34
  317. rasa/cli/project_templates/default/tests/test_stories.yml +0 -91
  318. rasa/core/channels/inspector/dist/assets/channel-dfa68278.js +0 -1
  319. rasa/core/channels/inspector/dist/assets/clone-edb7f119.js +0 -1
  320. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-65e7c670.js +0 -1
  321. rasa/core/channels/inspector/src/helpers/audiostream.ts +0 -191
  322. rasa/core/tracker_store.py +0 -1792
  323. rasa/monkey_patches.py +0 -91
  324. rasa/studio/download.py +0 -489
  325. /rasa/{cli/project_templates/calm/actions → builder}/__init__.py +0 -0
  326. /rasa/cli/project_templates/{calm → default}/actions/action_template.py +0 -0
  327. /rasa/cli/project_templates/{calm → default}/actions/add_contact.py +0 -0
  328. /rasa/cli/project_templates/{calm → default}/actions/db.py +0 -0
  329. /rasa/cli/project_templates/{calm → default}/actions/list_contacts.py +0 -0
  330. /rasa/cli/project_templates/{calm → default}/actions/remove_contact.py +0 -0
  331. /rasa/cli/project_templates/{calm → default}/data/flows/add_contact.yml +0 -0
  332. /rasa/cli/project_templates/{calm → default}/data/flows/list_contacts.yml +0 -0
  333. /rasa/cli/project_templates/{calm → default}/data/flows/remove_contact.yml +0 -0
  334. /rasa/cli/project_templates/{calm → default}/db/contacts.json +0 -0
  335. /rasa/cli/project_templates/{calm → default}/domain/add_contact.yml +0 -0
  336. /rasa/cli/project_templates/{calm → default}/domain/list_contacts.yml +0 -0
  337. /rasa/cli/project_templates/{calm → default}/domain/remove_contact.yml +0 -0
  338. /rasa/cli/project_templates/{calm → default}/domain/shared.yml +0 -0
  339. {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev2.dist-info}/NOTICE +0 -0
  340. {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev2.dist-info}/WHEEL +0 -0
  341. {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev2.dist-info}/entry_points.txt +0 -0
rasa/telemetry.py CHANGED
@@ -23,7 +23,6 @@ import structlog
23
23
  from terminaltables import SingleTable
24
24
 
25
25
  import rasa
26
- import rasa.anonymization.utils
27
26
  import rasa.shared.utils.io
28
27
  import rasa.utils.io
29
28
  from rasa import model
@@ -34,6 +33,7 @@ from rasa.constants import (
34
33
  CONFIG_TELEMETRY_ID,
35
34
  )
36
35
  from rasa.engine.storage.local_model_storage import LocalModelStorage
36
+ from rasa.privacy.privacy_config import AnonymizationType, PrivacyConfig
37
37
  from rasa.shared.constants import (
38
38
  ASSISTANT_ID_KEY,
39
39
  CONFIG_LANGUAGE_KEY,
@@ -62,10 +62,10 @@ from rasa.utils import common as rasa_utils
62
62
 
63
63
  if typing.TYPE_CHECKING:
64
64
  from rasa.core.agent import Agent
65
+ from rasa.core.available_endpoints import AvailableEndpoints
65
66
  from rasa.core.brokers.broker import EventBroker
66
67
  from rasa.core.channels.channel import InputChannel
67
- from rasa.core.tracker_store import TrackerStore
68
- from rasa.core.utils import AvailableEndpoints
68
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
69
69
  from rasa.e2e_test.e2e_test_case import Fixture, Metadata, TestCase
70
70
  from rasa.shared.importers.importer import TrainingDataImporter
71
71
  from rasa.shared.nlu.training_data.training_data import TrainingData
@@ -149,6 +149,7 @@ TELEMETRY_ENTERPRISE_SEARCH_POLICY_TRAINING_COMPLETED_EVENT = (
149
149
  TELEMETRY_ENTERPRISE_SEARCH_POLICY_PREDICT_EVENT = "Enterprise Search Policy Predicted"
150
150
  TELEMETRY_VALIDATION_ERROR_LOG_EVENT = "Validation Error Logged"
151
151
  TELEMETRY_UPLOAD_TO_STUDIO_FAILED_EVENT = "Upload to Studio Failed"
152
+ TELEMETRY_PRIVACY_ENABLED_EVENT = "PII Management in CALM Enabled"
152
153
 
153
154
  # licensing events
154
155
  TELEMETRY_CONVERSATION_COUNT = "Conversation Count"
@@ -1129,6 +1130,7 @@ def _get_llm_command_generator_config(config: Dict[str, Any]) -> Optional[Dict]:
1129
1130
  LLMBasedCommandGenerator,
1130
1131
  LLMCommandGenerator,
1131
1132
  MultiStepLLMCommandGenerator,
1133
+ SearchReadyLLMCommandGenerator,
1132
1134
  SingleStepLLMCommandGenerator,
1133
1135
  )
1134
1136
  from rasa.dialogue_understanding.generator.constants import (
@@ -1156,6 +1158,7 @@ def _get_llm_command_generator_config(config: Dict[str, Any]) -> Optional[Dict]:
1156
1158
  SingleStepLLMCommandGenerator.__name__,
1157
1159
  MultiStepLLMCommandGenerator.__name__,
1158
1160
  CompactLLMCommandGenerator.__name__,
1161
+ SearchReadyLLMCommandGenerator.__name__,
1159
1162
  ]:
1160
1163
  return component
1161
1164
  return None
@@ -1167,6 +1170,7 @@ def _get_llm_command_generator_config(config: Dict[str, Any]) -> Optional[Dict]:
1167
1170
  SingleStepLLMCommandGenerator.__name__: SingleStepLLMCommandGenerator,
1168
1171
  MultiStepLLMCommandGenerator.__name__: MultiStepLLMCommandGenerator,
1169
1172
  CompactLLMCommandGenerator.__name__: CompactLLMCommandGenerator,
1173
+ SearchReadyLLMCommandGenerator.__name__: SearchReadyLLMCommandGenerator,
1170
1174
  }
1171
1175
  llm_config = component.get(LLM_CONFIG_KEY, {})
1172
1176
  # Config at this stage is not yet resolved, so read from `model_group`
@@ -1353,7 +1357,7 @@ def track_server_start(
1353
1357
  number_of_workers: number of used Sanic workers
1354
1358
  is_api_enabled: whether the rasa API server is enabled
1355
1359
  """
1356
- from rasa.core.utils import AvailableEndpoints
1360
+ from rasa.core.available_endpoints import AvailableEndpoints
1357
1361
 
1358
1362
  def project_fingerprint_and_assistant_id_from_model(
1359
1363
  _model_directory: Optional[Text],
@@ -1745,7 +1749,6 @@ def identify_endpoint_config_traits(
1745
1749
 
1746
1750
  traits = append_tracing_trait(traits, endpoints_file)
1747
1751
  traits = append_metrics_trait(traits, endpoints_file)
1748
- traits = append_anonymization_trait(traits, endpoints_file)
1749
1752
 
1750
1753
  _identify(traits, context)
1751
1754
 
@@ -1784,27 +1787,6 @@ def append_metrics_trait(
1784
1787
  return traits
1785
1788
 
1786
1789
 
1787
- def append_anonymization_trait(
1788
- traits: Dict[str, Any], endpoints_file: Optional[str]
1789
- ) -> Dict[str, Any]:
1790
- """Append the anonymization trait to the traits dictionary."""
1791
- from rasa.anonymization.anonymisation_rule_yaml_reader import (
1792
- KEY_ANONYMIZATION_RULES,
1793
- )
1794
-
1795
- anonymization_config = rasa.anonymization.utils.read_endpoint_config(
1796
- endpoints_file, KEY_ANONYMIZATION_RULES
1797
- )
1798
-
1799
- traits[KEY_ANONYMIZATION_RULES] = (
1800
- rasa.anonymization.utils.extract_anonymization_traits(
1801
- anonymization_config, KEY_ANONYMIZATION_RULES
1802
- )
1803
- )
1804
-
1805
- return traits
1806
-
1807
-
1808
1790
  @ensure_telemetry_enabled
1809
1791
  def track_enterprise_search_policy_train_started() -> None:
1810
1792
  """Track when a user starts training Enterprise Search policy."""
@@ -1821,6 +1803,7 @@ def track_enterprise_search_policy_train_completed(
1821
1803
  llm_model: Optional[str],
1822
1804
  llm_model_group_id: Optional[str],
1823
1805
  citation_enabled: Optional[bool],
1806
+ relevancy_check_enabled: Optional[bool],
1824
1807
  ) -> None:
1825
1808
  """Track when a user completes training Enterprise Search policy."""
1826
1809
  _track(
@@ -1834,6 +1817,7 @@ def track_enterprise_search_policy_train_completed(
1834
1817
  "llm_model": llm_model,
1835
1818
  "llm_model_group_id": llm_model_group_id,
1836
1819
  "citation_enabled": citation_enabled,
1820
+ "relevancy_check_enabled": relevancy_check_enabled,
1837
1821
  },
1838
1822
  )
1839
1823
 
@@ -1848,6 +1832,7 @@ def track_enterprise_search_policy_predict(
1848
1832
  llm_model: Optional[str],
1849
1833
  llm_model_group_id: Optional[str],
1850
1834
  citation_enabled: Optional[bool],
1835
+ relevancy_check_enabled: Optional[bool],
1851
1836
  ) -> None:
1852
1837
  """Track when a user predicts the next action using Enterprise Search policy."""
1853
1838
  _track(
@@ -1861,6 +1846,7 @@ def track_enterprise_search_policy_predict(
1861
1846
  "llm_model": llm_model,
1862
1847
  "llm_model_group_id": llm_model_group_id,
1863
1848
  "citation_enabled": citation_enabled,
1849
+ "relevancy_check_enabled": relevancy_check_enabled,
1864
1850
  },
1865
1851
  )
1866
1852
 
@@ -1946,3 +1932,74 @@ def track_upload_to_studio_failed(response_json: Dict[str, Any]) -> None:
1946
1932
  TELEMETRY_UPLOAD_TO_STUDIO_FAILED_EVENT,
1947
1933
  {"studio_response_json": response_json},
1948
1934
  )
1935
+
1936
+
1937
+ def _extract_privacy_enabled_event_properties(
1938
+ privacy_config: "PrivacyConfig",
1939
+ stream_pii: bool,
1940
+ ) -> Dict[str, Any]:
1941
+ """Extract properties when PII management is enabled."""
1942
+ number_of_total_rules = len(privacy_config.anonymization_rules)
1943
+ count_of_redact = sum(
1944
+ 1
1945
+ for rule in privacy_config.anonymization_rules.values()
1946
+ if rule.method_type == AnonymizationType.REDACT
1947
+ )
1948
+ count_of_mask = sum(
1949
+ 1
1950
+ for rule in privacy_config.anonymization_rules.values()
1951
+ if rule.method_type == AnonymizationType.MASK
1952
+ )
1953
+
1954
+ tracker_store_anonymization_enabled = (
1955
+ privacy_config.tracker_store_settings is not None
1956
+ and privacy_config.tracker_store_settings.anonymization_policy is not None
1957
+ )
1958
+ anonymization_cron_trigger = (
1959
+ privacy_config.tracker_store_settings.anonymization_policy.cron # type: ignore[union-attr]
1960
+ if tracker_store_anonymization_enabled
1961
+ else None
1962
+ )
1963
+
1964
+ tracker_store_deletion_enabled = (
1965
+ privacy_config.tracker_store_settings is not None
1966
+ and privacy_config.tracker_store_settings.deletion_policy is not None
1967
+ )
1968
+
1969
+ deletion_cron_trigger = (
1970
+ privacy_config.tracker_store_settings.deletion_policy.cron # type: ignore[union-attr]
1971
+ if tracker_store_deletion_enabled
1972
+ else None
1973
+ )
1974
+
1975
+ return {
1976
+ "num_total_rules": number_of_total_rules,
1977
+ "redact_count": count_of_redact,
1978
+ "mask_count": count_of_mask,
1979
+ "stream_pii": stream_pii,
1980
+ "tracker_store_anonymization_enabled": tracker_store_anonymization_enabled,
1981
+ "tracker_store_deletion_enabled": tracker_store_deletion_enabled,
1982
+ "anonymization_cron_trigger": str(anonymization_cron_trigger),
1983
+ "deletion_cron_trigger": str(deletion_cron_trigger),
1984
+ }
1985
+
1986
+
1987
+ def _extract_stream_pii(event_broker: Optional["EventBroker"]) -> bool:
1988
+ """Extract whether un-anonymized PII streaming is enabled for the event broker."""
1989
+ return (
1990
+ event_broker.stream_pii
1991
+ if event_broker is not None and hasattr(event_broker, "stream_pii")
1992
+ else False
1993
+ )
1994
+
1995
+
1996
+ @ensure_telemetry_enabled
1997
+ def track_privacy_enabled(
1998
+ privacy_config: "PrivacyConfig", event_broker: Optional["EventBroker"]
1999
+ ) -> None:
2000
+ """Track when PII management capability is enabled"""
2001
+ stream_pii = _extract_stream_pii(event_broker)
2002
+ privacy_properties = _extract_privacy_enabled_event_properties(
2003
+ privacy_config, stream_pii
2004
+ )
2005
+ _track(TELEMETRY_PRIVACY_ENABLED_EVENT, privacy_properties)
rasa/tracing/config.py CHANGED
@@ -23,15 +23,13 @@ from rasa.core.actions.custom_action_executor import (
23
23
  from rasa.core.actions.grpc_custom_action_executor import GRPCCustomActionExecutor
24
24
  from rasa.core.agent import Agent
25
25
  from rasa.core.processor import MessageProcessor
26
- from rasa.core.tracker_store import TrackerStore
27
- from rasa.dialogue_understanding.commands import (
28
- Command,
29
- FreeFormAnswerCommand,
30
- )
26
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
27
+ from rasa.dialogue_understanding.commands import Command, FreeFormAnswerCommand
31
28
  from rasa.dialogue_understanding.generator import (
32
29
  CompactLLMCommandGenerator,
33
30
  LLMCommandGenerator,
34
31
  MultiStepLLMCommandGenerator,
32
+ SearchReadyLLMCommandGenerator,
35
33
  SingleStepLLMCommandGenerator,
36
34
  )
37
35
  from rasa.dialogue_understanding.generator.flow_retrieval import FlowRetrieval
@@ -112,6 +110,7 @@ def configure_tracing(tracer_provider: Optional[TracerProvider]) -> None:
112
110
  grpc_custom_action_executor_class=GRPCCustomActionExecutor,
113
111
  single_step_llm_command_generator_class=SingleStepLLMCommandGenerator,
114
112
  compact_llm_command_generator_class=CompactLLMCommandGenerator,
113
+ search_ready_llm_command_generator_class=SearchReadyLLMCommandGenerator,
115
114
  multi_step_llm_command_generator_class=MultiStepLLMCommandGenerator,
116
115
  custom_action_executor_subclasses=custom_action_executor_subclasses,
117
116
  flow_retrieval_class=FlowRetrieval,
rasa/tracing/constants.py CHANGED
@@ -44,6 +44,18 @@ COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME = (
44
44
  COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME = (
45
45
  "compact_llm_command_generator_llm_response_duration"
46
46
  )
47
+ SEARCH_READY_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME = (
48
+ "search_ready_llm_command_generator_cpu_usage"
49
+ )
50
+ SEARCH_READY_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME = (
51
+ "search_ready_llm_command_generator_memory_usage"
52
+ )
53
+ SEARCH_READY_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME = (
54
+ "search_ready_llm_command_generator_prompt_token_usage"
55
+ )
56
+ SEARCH_READY_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME = (
57
+ "search_ready_llm_command_generator_llm_response_duration"
58
+ )
47
59
  MULTI_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME = (
48
60
  "multi_step_llm_command_generator_cpu_usage"
49
61
  )
@@ -56,7 +68,13 @@ MULTI_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME = (
56
68
  MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME = (
57
69
  "multi_step_llm_command_generator_llm_response_duration"
58
70
  )
59
-
71
+ ENTERPRISE_SEARCH_POLICY_CPU_USAGE_METRIC_NAME = "enterprise_search_policy_cpu_usage"
72
+ ENTERPRISE_SEARCH_POLICY_MEMORY_USAGE_METRIC_NAME = (
73
+ "enterprise_search_policy_memory_usage"
74
+ )
75
+ ENTERPRISE_SEARCH_POLICY_PROMPT_TOKEN_USAGE_METRIC_NAME = (
76
+ "enterprise_search_policy_prompt_token_usage"
77
+ )
60
78
  ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME = (
61
79
  "enterprise_search_policy_llm_response_duration"
62
80
  )
@@ -16,14 +16,20 @@ from rasa.core.channels import UserMessage
16
16
  from rasa.core.lock_store import LOCK_LIFETIME, LockStore
17
17
  from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
18
18
  from rasa.core.processor import MessageProcessor
19
- from rasa.core.tracker_store import TrackerStore
19
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
20
20
  from rasa.dialogue_understanding.commands import Command
21
21
  from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
22
22
  from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
23
23
  from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
24
24
  from rasa.dialogue_understanding_test.du_test_result import (
25
+ KEY_COMMANDS_F1_MACRO,
26
+ KEY_COMMANDS_F1_MICRO,
27
+ KEY_COMMANDS_F1_WEIGHTED,
25
28
  KEY_TEST_CASES_ACCURACY,
26
29
  KEY_USER_UTTERANCES_ACCURACY,
30
+ OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR,
31
+ OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR,
32
+ OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR,
27
33
  OUTPUT_COMPLETION_TOKEN_METRICS,
28
34
  OUTPUT_LATENCY_METRICS,
29
35
  OUTPUT_NAMES_OF_FAILED_TESTS,
@@ -372,7 +378,6 @@ def extract_llm_config(
372
378
  def extract_attrs_for_llm_based_command_generator(
373
379
  self: "LLMBasedCommandGenerator",
374
380
  prompt: str,
375
- metadata: Optional[Dict[str, Any]] = None,
376
381
  ) -> Dict[str, Any]:
377
382
  from rasa.dialogue_understanding.generator.flow_retrieval import (
378
383
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -388,7 +393,8 @@ def extract_attrs_for_llm_based_command_generator(
388
393
 
389
394
 
390
395
  def extract_attrs_for_contextual_response_rephraser(
391
- self: Any, prompt: str
396
+ self: Any,
397
+ prompt: str,
392
398
  ) -> Dict[str, Any]:
393
399
  from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
394
400
 
@@ -614,6 +620,15 @@ def extract_attrs_for_du_print_test_results(
614
620
  OUTPUT_NAMES_OF_FAILED_TESTS: json.dumps(
615
621
  test_suite_result.names_of_failed_tests
616
622
  ),
623
+ OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR: (
624
+ test_suite_result.f1_score[KEY_COMMANDS_F1_MACRO]
625
+ ),
626
+ OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR: (
627
+ test_suite_result.f1_score[KEY_COMMANDS_F1_MICRO]
628
+ ),
629
+ OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR: (
630
+ test_suite_result.f1_score[KEY_COMMANDS_F1_WEIGHTED]
631
+ ),
617
632
  }
618
633
  if test_suite_result.command_metrics:
619
634
  for (
@@ -638,12 +653,27 @@ def extract_attrs_for_du_print_test_results(
638
653
  for key, value in test_suite_result.llm_config.items():
639
654
  attributes_dict[f"llm_config_0_{key}"] = value
640
655
 
641
- for key, value in test_suite_result.latency_metrics.items():
642
- attributes_dict[f"{OUTPUT_LATENCY_METRICS}_{key}"] = value
643
- for key, value in test_suite_result.prompt_token_metrics.items():
644
- attributes_dict[f"{OUTPUT_PROMPT_TOKEN_METRICS}_{key}"] = value
645
- for key, value in test_suite_result.completion_token_metrics.items():
646
- attributes_dict[f"{OUTPUT_COMPLETION_TOKEN_METRICS}_{key}"] = value
656
+ for component_name, latency_metric in test_suite_result.latency_metrics.items():
657
+ for metric_name, metric_value in latency_metric.items():
658
+ attributes_dict[
659
+ f"{OUTPUT_LATENCY_METRICS}_{component_name}_{metric_name}"
660
+ ] = metric_value
661
+ for (
662
+ component_name,
663
+ prompt_token_metric,
664
+ ) in test_suite_result.prompt_token_metrics.items():
665
+ for metric_name, metric_value in prompt_token_metric.items():
666
+ attributes_dict[
667
+ f"{OUTPUT_PROMPT_TOKEN_METRICS}_{component_name}_{metric_name}"
668
+ ] = metric_value
669
+ for (
670
+ component_name,
671
+ completion_token_metric,
672
+ ) in test_suite_result.completion_token_metrics.items():
673
+ for metric_name, metric_value in completion_token_metric.items():
674
+ attributes_dict[
675
+ f"{OUTPUT_COMPLETION_TOKEN_METRICS}_{component_name}_{metric_name}"
676
+ ] = metric_value
647
677
 
648
678
  return attributes_dict
649
679
 
@@ -737,8 +767,8 @@ def extract_attrs_for_intentless_policy_generate_llm_answer(
737
767
  return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
738
768
 
739
769
 
740
- def extract_attrs_for_enterprise_search_generate_llm_answer(
741
- self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
770
+ def extract_attrs_for_enterprise_search_invoke_llm(
771
+ self: "EnterpriseSearchPolicy", prompt: str
742
772
  ) -> Dict[str, Any]:
743
773
  from rasa.core.policies.enterprise_search_policy import (
744
774
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -754,6 +784,14 @@ def extract_attrs_for_enterprise_search_generate_llm_answer(
754
784
  return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
755
785
 
756
786
 
787
+ def extract_attrs_for_enterprise_search_parse_llm_relevancy_check_response(
788
+ self: "EnterpriseSearchPolicy", llm_answer: str
789
+ ) -> Dict[str, Any]:
790
+ return {
791
+ "llm_answer": llm_answer,
792
+ }
793
+
794
+
757
795
  def extract_current_context_attribute(stack: DialogueStack) -> Dict[str, Any]:
758
796
  """Utility function to extract the current context from the dialogue stack."""
759
797
  current_context = stack.current_context()
@@ -38,12 +38,13 @@ from rasa.core.nlg import NaturalLanguageGenerator
38
38
  from rasa.core.policies.flows.flow_step_result import FlowActionPrediction
39
39
  from rasa.core.policies.policy import Policy, PolicyPrediction
40
40
  from rasa.core.processor import MessageProcessor
41
- from rasa.core.tracker_store import TrackerStore
41
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
42
42
  from rasa.dialogue_understanding.commands import Command
43
43
  from rasa.dialogue_understanding.generator import (
44
44
  CompactLLMCommandGenerator,
45
45
  LLMCommandGenerator,
46
46
  MultiStepLLMCommandGenerator,
47
+ SearchReadyLLMCommandGenerator,
47
48
  SingleStepLLMCommandGenerator,
48
49
  )
49
50
  from rasa.dialogue_understanding.generator.flow_retrieval import FlowRetrieval
@@ -66,9 +67,11 @@ from rasa.tracing.instrumentation.intentless_policy_instrumentation import (
66
67
  from rasa.tracing.instrumentation.metrics import (
67
68
  record_callable_duration_metrics,
68
69
  record_compact_llm_command_generator_metrics,
70
+ record_enterprise_search_policy_metrics,
69
71
  record_llm_command_generator_metrics,
70
72
  record_multi_step_llm_command_generator_metrics,
71
73
  record_request_size_in_bytes,
74
+ record_search_ready_llm_command_generator_metrics,
72
75
  record_single_step_llm_command_generator_metrics,
73
76
  )
74
77
  from rasa.utils.endpoints import EndpointConfig, concat_url
@@ -291,6 +294,9 @@ SingleStepLLMCommandGeneratorType = TypeVar(
291
294
  CompactLLMCommandGeneratorType = TypeVar(
292
295
  "CompactLLMCommandGeneratorType", bound=CompactLLMCommandGenerator
293
296
  )
297
+ SearchReadyLLMCommandGeneratorType = TypeVar(
298
+ "SearchReadyLLMCommandGeneratorType", bound=SearchReadyLLMCommandGenerator
299
+ )
294
300
  MultiStepLLMCommandGeneratorType = TypeVar(
295
301
  "MultiStepLLMCommandGeneratorType", bound=MultiStepLLMCommandGenerator
296
302
  )
@@ -326,6 +332,9 @@ def instrument(
326
332
  compact_llm_command_generator_class: Optional[
327
333
  Type[CompactLLMCommandGeneratorType]
328
334
  ] = None,
335
+ search_ready_llm_command_generator_class: Optional[
336
+ Type[SearchReadyLLMCommandGeneratorType]
337
+ ] = None,
329
338
  multi_step_llm_command_generator_class: Optional[
330
339
  Type[MultiStepLLMCommandGeneratorType]
331
340
  ] = None,
@@ -379,6 +388,9 @@ def instrument(
379
388
  :param compact_llm_command_generator_class: The `CompactLLMCommandGenerator`
380
389
  to be instrumented. If `None` is given, no `CompactLLMCommandGenerator` will
381
390
  be instrumented.
391
+ :param search_ready_llm_command_generator_class: The`SearchReadyLLMCommandGenerator`
392
+ to be instrumented. If `None` is given, no `SearchReadyLLMCommandGenerator` will
393
+ be instrumented.
382
394
  :param multi_step_llm_command_generator_class: The `MultiStepLLMCommandGenerator`
383
395
  to be instrumented. If `None` is given, no `MultiStepLLMCommandGenerator` will
384
396
  be instrumented.
@@ -527,6 +539,37 @@ def instrument(
527
539
  )
528
540
  mark_class_as_instrumented(compact_llm_command_generator_class)
529
541
 
542
+ if (
543
+ search_ready_llm_command_generator_class is not None
544
+ and not class_is_instrumented(search_ready_llm_command_generator_class)
545
+ ):
546
+ _instrument_method(
547
+ tracer_provider.get_tracer(
548
+ search_ready_llm_command_generator_class.__module__
549
+ ),
550
+ search_ready_llm_command_generator_class,
551
+ "invoke_llm",
552
+ attribute_extractors.extract_attrs_for_llm_based_command_generator,
553
+ metrics_recorder=record_search_ready_llm_command_generator_metrics,
554
+ )
555
+ _instrument_method(
556
+ tracer_provider.get_tracer(
557
+ search_ready_llm_command_generator_class.__module__
558
+ ),
559
+ search_ready_llm_command_generator_class,
560
+ "_check_commands_against_startable_flows",
561
+ attribute_extractors.extract_attrs_for_check_commands_against_startable_flows,
562
+ )
563
+ _instrument_perform_health_check_method_for_component(
564
+ tracer_provider.get_tracer(
565
+ search_ready_llm_command_generator_class.__module__
566
+ ),
567
+ search_ready_llm_command_generator_class,
568
+ "perform_llm_health_check",
569
+ attribute_extractors.extract_attrs_for_performing_health_check,
570
+ )
571
+ mark_class_as_instrumented(search_ready_llm_command_generator_class)
572
+
530
573
  if multi_step_llm_command_generator_class is not None and not class_is_instrumented(
531
574
  multi_step_llm_command_generator_class
532
575
  ):
@@ -562,6 +605,7 @@ def instrument(
562
605
  llm_command_generator_class,
563
606
  single_step_llm_command_generator_class,
564
607
  compact_llm_command_generator_class,
608
+ search_ready_llm_command_generator_class,
565
609
  multi_step_llm_command_generator_class,
566
610
  )
567
611
  )
@@ -847,8 +891,15 @@ def _instrument_enterprise_search_policy(
847
891
  _instrument_method(
848
892
  tracer,
849
893
  policy_class,
850
- "_generate_llm_answer",
851
- attribute_extractors.extract_attrs_for_enterprise_search_generate_llm_answer,
894
+ "_invoke_llm",
895
+ attribute_extractors.extract_attrs_for_enterprise_search_invoke_llm,
896
+ metrics_recorder=record_enterprise_search_policy_metrics,
897
+ )
898
+ _instrument_method(
899
+ tracer,
900
+ policy_class,
901
+ "_parse_llm_relevancy_check_response",
902
+ attribute_extractors.extract_attrs_for_enterprise_search_parse_llm_relevancy_check_response,
852
903
  )
853
904
  _instrument_perform_health_check_method_for_component(
854
905
  tracer_provider.get_tracer(policy_class.__module__),