rasa-pro 3.12.18.dev1__py3-none-any.whl → 3.13.0a1.dev1__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.
- rasa/__init__.py +0 -6
- rasa/__main__.py +3 -4
- rasa/api.py +1 -1
- rasa/builder/create_openai_vector_store.py +69 -0
- rasa/builder/llm-helper-schema.json +69 -0
- rasa/builder/prompt_to_bot.py +645 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/skill_to_bot_prompt.jinja +158 -0
- rasa/cli/dialogue_understanding_test.py +1 -1
- rasa/cli/e2e_test.py +1 -1
- rasa/cli/evaluate.py +2 -2
- rasa/cli/export.py +3 -3
- rasa/cli/llm_fine_tuning.py +1 -1
- rasa/cli/project_templates/default/config.yml +5 -32
- rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_cancels_during_a_correction.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_handle.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_name.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_lists_contacts.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact.yml +1 -1
- rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact_from_list.yml +1 -1
- rasa/cli/project_templates/default/endpoints.yml +18 -2
- rasa/cli/project_templates/defaults.py +133 -0
- rasa/cli/run.py +1 -1
- rasa/cli/scaffold.py +2 -3
- rasa/cli/studio/download.py +1 -1
- rasa/cli/studio/link.py +53 -0
- rasa/cli/studio/pull.py +78 -0
- rasa/cli/studio/push.py +78 -0
- rasa/cli/studio/studio.py +12 -0
- rasa/cli/studio/upload.py +5 -3
- rasa/cli/train.py +1 -1
- rasa/cli/utils.py +1 -1
- rasa/cli/x.py +1 -1
- rasa/constants.py +2 -0
- rasa/core/__init__.py +0 -16
- rasa/core/actions/action.py +42 -31
- rasa/core/actions/action_repeat_bot_messages.py +18 -22
- rasa/core/actions/action_run_slot_rejections.py +1 -2
- rasa/core/agent.py +18 -3
- rasa/core/available_endpoints.py +146 -0
- rasa/core/brokers/kafka.py +4 -0
- rasa/core/brokers/pika.py +5 -2
- rasa/core/brokers/sql.py +1 -1
- rasa/core/channels/botframework.py +2 -2
- rasa/core/channels/channel.py +2 -2
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/facebook.py +1 -4
- rasa/core/channels/hangouts.py +8 -5
- rasa/core/channels/inspector/.eslintrc.cjs +12 -6
- rasa/core/channels/inspector/.prettierrc +5 -0
- rasa/core/channels/inspector/README.md +11 -5
- rasa/core/channels/inspector/dist/assets/{arc-9f75cc3b.js → arc-02053cc1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7f34db23.js → blockDiagram-38ab4fdb-008b6289.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-948bab2c.js → c4Diagram-3d4e48cf-fb2597be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-078dada8.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-53b0dd0e.js → classDiagram-70f12bd4-7f847e00.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-fdf789e7.js → classDiagram-v2-f2320105-ba1d689b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-5b4516de.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-87c4ece5.js → createText-2e5e7dd3-dd8e67c4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-5a8b0749.js → edges-e0da2a9e-10784939.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-66da90e2.js → erDiagram-9861fffd-24947ae6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-10044f05.js → flowDb-956e92f1-a9ced505.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f338f66a.js → flowDiagram-66a62f08-afda9c7c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-f9613071.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b13140aa.js → flowchart-elk-definition-4a651766-6ef530b8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-f2b4a55a.js → ganttDiagram-c361ad54-0c7dd39a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-dedc298d.js → gitGraphDiagram-72cf32ee-b57239d6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-4ede11ff.js → graph-9ed57cec.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-65549d37.js → index-3862675e-233090de.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3a23e736.js → index-72184470.js} +123 -123
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-65439671.js → infoDiagram-f8f76790-aa116649.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-56d03d98.js → journeyDiagram-49397b02-e51877cc.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-dd48f7f4.js → layout-3ca3798c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-1569ad2c.js → line-26ee10d3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-48bf4935.js → linear-aedded32.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-688504c1.js → mindmap-definition-fc14e90a-d8957261.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78b6d7e6.js → pieDiagram-8a3498a8-d771f885.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-048b84b3.js → quadrantDiagram-120e2f19-09fdf50c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-dd67f107.js → requirementDiagram-deff3bca-9f0af02e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-8128436e.js → sankeyDiagram-04a897e0-84415b37.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-1a0d1461.js → sequenceDiagram-704730f1-8dec4055.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-46d388ed.js → stateDiagram-587899a1-c5431d07.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-ea42951a.js → stateDiagram-v2-d93cdb3a-274e77d9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-7427ed0c.js → styles-6aaf32cf-e364a1d7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-ff5e5a16.js → styles-9a916d00-0dae36f6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-7b3680cf.js → styles-c10674c1-c4641675.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f860f2ad.js → svgDrawCommon-08f97a94-831fe9a1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-2eebf0c8.js → timeline-definition-85554ec2-c3304b3a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-5d7f4e96.js → xychartDiagram-e933f94c-da799369.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +3 -1
- rasa/core/channels/inspector/src/App.tsx +91 -90
- rasa/core/channels/inspector/src/components/Chat.tsx +45 -41
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +40 -40
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +57 -57
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +36 -27
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +4 -4
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +7 -7
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +28 -12
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +9 -9
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +5 -5
- rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +55 -60
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +5 -5
- rasa/core/channels/inspector/src/components/Slots.tsx +22 -22
- rasa/core/channels/inspector/src/components/Welcome.tsx +28 -31
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +245 -0
- rasa/core/channels/inspector/src/helpers/audio/microphone-processor.js +12 -0
- rasa/core/channels/inspector/src/helpers/audio/playback-processor.js +36 -0
- rasa/core/channels/inspector/src/helpers/conversation.ts +7 -7
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +181 -181
- rasa/core/channels/inspector/src/helpers/formatters.ts +111 -111
- rasa/core/channels/inspector/src/helpers/utils.ts +78 -61
- rasa/core/channels/inspector/src/main.tsx +8 -8
- rasa/core/channels/inspector/src/theme/Button/Button.ts +8 -8
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +7 -7
- rasa/core/channels/inspector/src/theme/Input/Input.ts +9 -9
- rasa/core/channels/inspector/src/theme/Link/Link.ts +6 -6
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +13 -13
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +10 -10
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +5 -5
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +7 -7
- rasa/core/channels/inspector/src/theme/base/colors.ts +64 -64
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +21 -18
- rasa/core/channels/inspector/src/theme/base/radii.ts +8 -8
- rasa/core/channels/inspector/src/theme/base/shadows.ts +5 -5
- rasa/core/channels/inspector/src/theme/base/sizes.ts +5 -5
- rasa/core/channels/inspector/src/theme/base/space.ts +12 -12
- rasa/core/channels/inspector/src/theme/base/styles.ts +5 -5
- rasa/core/channels/inspector/src/theme/base/typography.ts +12 -12
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +3 -3
- rasa/core/channels/inspector/src/theme/index.ts +38 -38
- rasa/core/channels/inspector/src/types.ts +56 -50
- rasa/core/channels/inspector/yarn.lock +5 -0
- rasa/core/channels/mattermost.py +1 -1
- rasa/core/channels/rasa_chat.py +2 -4
- rasa/core/channels/rest.py +5 -4
- rasa/core/channels/socketio.py +56 -41
- rasa/core/channels/studio_chat.py +337 -71
- rasa/core/channels/vier_cvg.py +1 -2
- rasa/core/channels/voice_ready/audiocodes.py +4 -11
- rasa/core/channels/voice_stream/audiocodes.py +8 -5
- rasa/core/channels/voice_stream/browser_audio.py +1 -1
- rasa/core/channels/voice_stream/genesys.py +2 -2
- rasa/core/channels/voice_stream/tts/__init__.py +8 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +10 -5
- rasa/core/channels/voice_stream/voice_channel.py +65 -23
- rasa/core/concurrent_lock_store.py +24 -10
- rasa/core/evaluation/marker_tracker_loader.py +1 -1
- rasa/core/exporter.py +1 -1
- rasa/core/http_interpreter.py +3 -7
- rasa/core/information_retrieval/faiss.py +18 -11
- rasa/core/information_retrieval/ingestion/__init__.py +0 -0
- rasa/core/information_retrieval/ingestion/faq_parser.py +158 -0
- rasa/core/jobs.py +2 -1
- rasa/core/lock_store.py +151 -60
- rasa/core/nlg/contextual_response_rephraser.py +17 -7
- rasa/core/nlg/generator.py +5 -22
- rasa/core/nlg/interpolator.py +2 -3
- rasa/core/nlg/response.py +6 -43
- rasa/core/nlg/summarize.py +1 -1
- rasa/core/nlg/translate.py +0 -8
- rasa/core/policies/enterprise_search_policy.py +262 -62
- rasa/core/policies/enterprise_search_prompt_with_relevancy_check_and_citation_template.jinja2 +63 -0
- rasa/core/policies/flow_policy.py +1 -1
- rasa/core/policies/flows/flow_executor.py +96 -17
- rasa/core/policies/intentless_policy.py +57 -20
- rasa/core/processor.py +114 -54
- rasa/core/run.py +33 -11
- rasa/core/tracker_stores/__init__.py +0 -0
- rasa/core/{auth_retry_tracker_store.py → tracker_stores/auth_retry_tracker_store.py} +5 -1
- rasa/core/tracker_stores/dynamo_tracker_store.py +218 -0
- rasa/core/tracker_stores/mongo_tracker_store.py +206 -0
- rasa/core/tracker_stores/redis_tracker_store.py +219 -0
- rasa/core/tracker_stores/sql_tracker_store.py +555 -0
- rasa/core/tracker_stores/tracker_store.py +805 -0
- rasa/core/training/interactive.py +1 -1
- rasa/core/utils.py +24 -95
- rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -1
- rasa/dialogue_understanding/coexistence/llm_based_router.py +10 -6
- rasa/dialogue_understanding/commands/can_not_handle_command.py +2 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +5 -1
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +2 -0
- rasa/dialogue_understanding/commands/clarify_command.py +4 -0
- rasa/dialogue_understanding/commands/command_syntax_manager.py +1 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +1 -3
- rasa/dialogue_understanding/commands/human_handoff_command.py +2 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +2 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +10 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +2 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +4 -0
- rasa/dialogue_understanding/commands/utils.py +26 -2
- rasa/dialogue_understanding/generator/__init__.py +7 -1
- rasa/dialogue_understanding/generator/command_generator.py +4 -2
- rasa/dialogue_understanding/generator/command_parser.py +2 -2
- rasa/dialogue_understanding/generator/command_parser_validator.py +63 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +5 -17
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -3
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +4 -44
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +2 -2
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +78 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +26 -474
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +147 -0
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +477 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +11 -64
- rasa/dialogue_understanding/patterns/cancel.py +1 -2
- rasa/dialogue_understanding/patterns/clarify.py +1 -1
- rasa/dialogue_understanding/patterns/correction.py +2 -2
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +37 -25
- rasa/dialogue_understanding/patterns/domain_for_patterns.py +190 -0
- rasa/dialogue_understanding/processor/command_processor.py +6 -7
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +17 -4
- rasa/dialogue_understanding/stack/utils.py +3 -1
- rasa/dialogue_understanding/utils.py +68 -12
- rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
- rasa/dialogue_understanding_test/command_metrics.py +38 -0
- rasa/dialogue_understanding_test/du_test_case.py +58 -25
- rasa/dialogue_understanding_test/du_test_result.py +228 -132
- rasa/dialogue_understanding_test/du_test_runner.py +11 -2
- rasa/dialogue_understanding_test/io.py +35 -8
- rasa/e2e_test/e2e_test_runner.py +1 -1
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +2 -2
- rasa/engine/recipes/default_recipe.py +1 -1
- rasa/engine/validation.py +3 -2
- rasa/hooks.py +2 -85
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +1 -5
- rasa/llm_fine_tuning/utils.py +2 -4
- rasa/model_manager/model_api.py +90 -2
- rasa/model_manager/socket_bridge.py +0 -7
- rasa/model_manager/trainer_service.py +15 -12
- rasa/plugin.py +2 -15
- rasa/privacy/__init__.py +0 -0
- rasa/privacy/constants.py +83 -0
- rasa/privacy/event_broker_utils.py +77 -0
- rasa/privacy/privacy_config.py +281 -0
- rasa/privacy/privacy_config_schema.json +86 -0
- rasa/privacy/privacy_filter.py +340 -0
- rasa/privacy/privacy_manager.py +576 -0
- rasa/server.py +23 -2
- rasa/shared/constants.py +13 -4
- rasa/shared/core/command_payload_reader.py +1 -5
- rasa/shared/core/constants.py +4 -3
- rasa/shared/core/domain.py +172 -11
- rasa/shared/core/events.py +100 -6
- rasa/shared/core/flows/flow.py +35 -8
- rasa/shared/core/flows/flow_step.py +26 -4
- rasa/shared/core/flows/flow_step_links.py +15 -0
- rasa/shared/core/flows/flow_step_sequence.py +6 -0
- rasa/shared/core/flows/flows_yaml_schema.json +3 -0
- rasa/shared/core/flows/nlu_trigger.py +13 -0
- rasa/shared/core/flows/steps/action.py +7 -4
- rasa/shared/core/flows/steps/call.py +11 -4
- rasa/shared/core/flows/steps/collect.py +71 -6
- rasa/shared/core/flows/steps/internal.py +6 -1
- rasa/shared/core/flows/steps/link.py +7 -4
- rasa/shared/core/flows/steps/no_operation.py +7 -4
- rasa/shared/core/flows/steps/set_slots.py +8 -4
- rasa/shared/core/flows/validation.py +16 -3
- rasa/shared/core/flows/yaml_flows_io.py +106 -5
- rasa/shared/core/slots.py +33 -1
- rasa/shared/core/trackers.py +4 -10
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +1 -4
- rasa/shared/importers/importer.py +14 -0
- rasa/shared/importers/static.py +63 -0
- rasa/shared/providers/constants.py +0 -9
- rasa/shared/providers/llm/_base_litellm_client.py +4 -14
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
- rasa/shared/providers/llm/litellm_router_llm_client.py +7 -17
- rasa/shared/providers/llm/llm_client.py +15 -24
- rasa/shared/providers/llm/self_hosted_llm_client.py +2 -10
- rasa/shared/utils/common.py +43 -1
- rasa/shared/utils/llm.py +155 -3
- rasa/shared/utils/yaml.py +32 -0
- rasa/studio/data_handler.py +3 -3
- rasa/studio/download/__init__.py +0 -0
- rasa/studio/download/domains.py +49 -0
- rasa/studio/download/download.py +416 -0
- rasa/studio/download/flows.py +351 -0
- rasa/studio/link.py +200 -0
- rasa/studio/pull.py +94 -0
- rasa/studio/push.py +131 -0
- rasa/studio/results_logger.py +6 -1
- rasa/studio/upload.py +185 -71
- rasa/telemetry.py +83 -26
- rasa/tracing/config.py +4 -5
- rasa/tracing/constants.py +19 -1
- rasa/tracing/instrumentation/attribute_extractors.py +49 -11
- rasa/tracing/instrumentation/instrumentation.py +54 -3
- rasa/tracing/instrumentation/metrics.py +98 -15
- rasa/tracing/metric_instrument_provider.py +75 -3
- rasa/utils/common.py +37 -27
- rasa/utils/endpoints.py +22 -1
- rasa/utils/licensing.py +2 -3
- rasa/utils/log_utils.py +1 -45
- rasa/validator.py +9 -11
- rasa/version.py +1 -1
- {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev1.dist-info}/METADATA +12 -14
- {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev1.dist-info}/RECORD +318 -294
- rasa/anonymization/__init__.py +0 -2
- rasa/anonymization/anonymisation_rule_yaml_reader.py +0 -91
- rasa/anonymization/anonymization_pipeline.py +0 -286
- rasa/anonymization/anonymization_rule_executor.py +0 -266
- rasa/anonymization/anonymization_rule_orchestrator.py +0 -119
- rasa/anonymization/schemas/config.yml +0 -47
- rasa/anonymization/utils.py +0 -118
- rasa/cli/project_templates/calm/config.yml +0 -10
- rasa/cli/project_templates/calm/credentials.yml +0 -33
- rasa/cli/project_templates/calm/endpoints.yml +0 -58
- rasa/cli/project_templates/default/actions/actions.py +0 -27
- rasa/cli/project_templates/default/data/nlu.yml +0 -91
- rasa/cli/project_templates/default/data/rules.yml +0 -13
- rasa/cli/project_templates/default/data/stories.yml +0 -30
- rasa/cli/project_templates/default/domain.yml +0 -34
- rasa/cli/project_templates/default/tests/test_stories.yml +0 -91
- rasa/core/channels/inspector/dist/assets/channel-dfa68278.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-edb7f119.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-65e7c670.js +0 -1
- rasa/core/channels/inspector/src/helpers/audiostream.ts +0 -191
- rasa/core/tracker_store.py +0 -1792
- rasa/monkey_patches.py +0 -91
- rasa/studio/download.py +0 -489
- /rasa/{cli/project_templates/calm/actions → builder}/__init__.py +0 -0
- /rasa/cli/project_templates/{calm → default}/actions/action_template.py +0 -0
- /rasa/cli/project_templates/{calm → default}/actions/add_contact.py +0 -0
- /rasa/cli/project_templates/{calm → default}/actions/db.py +0 -0
- /rasa/cli/project_templates/{calm → default}/actions/list_contacts.py +0 -0
- /rasa/cli/project_templates/{calm → default}/actions/remove_contact.py +0 -0
- /rasa/cli/project_templates/{calm → default}/data/flows/add_contact.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/data/flows/list_contacts.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/data/flows/remove_contact.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/db/contacts.json +0 -0
- /rasa/cli/project_templates/{calm → default}/domain/add_contact.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/domain/list_contacts.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/domain/remove_contact.yml +0 -0
- /rasa/cli/project_templates/{calm → default}/domain/shared.yml +0 -0
- {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev1.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev1.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.18.dev1.dist-info → rasa_pro-3.13.0a1.dev1.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.
|
|
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,
|
|
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
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
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
|
|
741
|
-
self: "EnterpriseSearchPolicy",
|
|
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
|
-
"
|
|
851
|
-
attribute_extractors.
|
|
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__),
|