rasa-pro 3.12.0.dev1__py3-none-any.whl → 3.12.0.dev3__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/__main__.py +7 -7
- rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
- rasa/anonymization/anonymization_pipeline.py +3 -3
- rasa/anonymization/anonymization_rule_executor.py +1 -1
- rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
- rasa/cli/arguments/data.py +2 -2
- rasa/cli/arguments/evaluate.py +2 -1
- rasa/cli/arguments/interactive.py +1 -1
- rasa/cli/arguments/run.py +1 -1
- rasa/cli/arguments/test.py +7 -5
- rasa/cli/arguments/train.py +3 -3
- rasa/cli/arguments/visualize.py +2 -2
- rasa/cli/arguments/x.py +1 -0
- rasa/cli/data.py +4 -3
- rasa/cli/dialogue_understanding_test.py +116 -18
- rasa/cli/evaluate.py +1 -1
- rasa/cli/export.py +6 -6
- rasa/cli/interactive.py +4 -5
- rasa/cli/llm_fine_tuning.py +5 -5
- rasa/cli/markers.py +1 -2
- rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
- rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
- rasa/cli/shell.py +2 -3
- rasa/cli/studio/download.py +1 -2
- rasa/cli/studio/studio.py +2 -3
- rasa/cli/studio/train.py +0 -1
- rasa/cli/telemetry.py +2 -2
- rasa/cli/test.py +11 -11
- rasa/cli/utils.py +7 -5
- rasa/core/__init__.py +0 -1
- rasa/core/actions/action.py +42 -21
- rasa/core/actions/action_hangup.py +1 -1
- rasa/core/actions/action_repeat_bot_messages.py +2 -2
- rasa/core/actions/action_run_slot_rejections.py +2 -2
- rasa/core/actions/action_trigger_chitchat.py +1 -1
- rasa/core/actions/action_trigger_flow.py +5 -5
- rasa/core/actions/action_trigger_search.py +1 -1
- rasa/core/actions/forms.py +14 -12
- rasa/core/actions/http_custom_action_executor.py +8 -1
- rasa/core/actions/loops.py +3 -3
- rasa/core/actions/two_stage_fallback.py +13 -13
- rasa/core/auth_retry_tracker_store.py +1 -2
- rasa/core/brokers/broker.py +2 -1
- rasa/core/brokers/file.py +1 -1
- rasa/core/brokers/kafka.py +8 -8
- rasa/core/brokers/pika.py +8 -9
- rasa/core/brokers/sql.py +4 -3
- rasa/core/channels/__init__.py +3 -0
- rasa/core/channels/botframework.py +2 -2
- rasa/core/channels/callback.py +4 -4
- rasa/core/channels/channel.py +11 -11
- rasa/core/channels/console.py +0 -1
- rasa/core/channels/development_inspector.py +6 -6
- rasa/core/channels/facebook.py +5 -5
- rasa/core/channels/hangouts.py +7 -8
- rasa/core/channels/inspector/dist/assets/{arc-861ddd57.js → arc-632a63ec.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-921f02db.js → c4Diagram-d0fbc5ce-081e0df4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-b436c4f8.js → classDiagram-936ed81e-3df0afc2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-511a23cb.js → classDiagram-v2-c3cb15f1-8c5ed31e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-ef476ecd.js → createText-62fc7601-89c73b31.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-f1878e0a.js → edges-f2ad444c-4fc48c3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-fac75185.js → erDiagram-9d236eb7-907e0440.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-201c5bbc.js → flowDb-1972c806-9ec53a3c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-f904ae41.js → flowDiagram-7ea5b25a-41da787a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-1813da66.js → flowchart-elk-definition-abe16c3d-ce370633.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-872af172.js → ganttDiagram-9b5ea136-90a36523.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-34a0af5a.js → gitGraphDiagram-99d0ae7c-41e1aa3f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-42ba3e3d.js → index-2c4b9a3b-e6f2af62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-37817b51.js → index-e793d777.js} +3 -3
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-6b731386.js → infoDiagram-736b4530-8ceba4db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-e8579ac6.js → journeyDiagram-df861f2b-960d3809.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-89e6403a.js → layout-498807d8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-dc73d3fc.js → line-eeccc4e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-f5b1d2bc.js → linear-8a078617.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-82cb74fa.js → mindmap-definition-beec6740-396d17dd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-bdf5f29b.js → pieDiagram-dbbf0591-dc9b5e1b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-c7a0cbe4.js → quadrantDiagram-4d7f4fd6-a08cba6d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-7ec5410f.js → requirementDiagram-6fc4c22a-87242b9e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-caee5554.js → sankeyDiagram-8f13d901-53f6f391.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-2935f8db.js → sequenceDiagram-b655622a-715c9c20.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-8f5d9693.js → stateDiagram-59f0c015-2e8fb31f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-d565d1de.js → stateDiagram-v2-2b26beab-7e2d2aa0.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-080da4f6-75ad421d.js → styles-080da4f6-4420cea6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-7e764226.js → styles-3dcbcfbf-28676cf4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-7a4e0e61.js → styles-9c745c82-cef936a6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-4019d1bf.js → svgDrawCommon-4835440b-151251e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-01ea12df.js → timeline-definition-5b62e21b-0d39bdb2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-89407137.js → xychartDiagram-2b33534f-a03fa445.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +3 -1
- rasa/core/channels/inspector/index.html +2 -0
- rasa/core/channels/inspector/src/App.tsx +1 -4
- rasa/core/channels/mattermost.py +4 -4
- rasa/core/channels/rasa_chat.py +4 -4
- rasa/core/channels/rest.py +11 -12
- rasa/core/channels/rocketchat.py +4 -3
- rasa/core/channels/slack.py +6 -5
- rasa/core/channels/socketio.py +7 -28
- rasa/core/channels/studio_chat.py +193 -0
- rasa/core/channels/telegram.py +73 -41
- rasa/core/channels/twilio.py +3 -3
- rasa/core/channels/vier_cvg.py +2 -2
- rasa/core/channels/voice_ready/audiocodes.py +8 -8
- rasa/core/channels/voice_ready/jambonz.py +5 -5
- rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
- rasa/core/channels/voice_ready/twilio_voice.py +9 -8
- rasa/core/channels/voice_ready/utils.py +1 -1
- rasa/core/channels/voice_stream/asr/asr_engine.py +2 -2
- rasa/core/channels/voice_stream/asr/azure.py +2 -2
- rasa/core/channels/voice_stream/asr/deepgram.py +57 -16
- rasa/core/channels/voice_stream/browser_audio.py +9 -6
- rasa/core/channels/voice_stream/call_state.py +2 -1
- rasa/core/channels/voice_stream/tts/azure.py +1 -2
- rasa/core/channels/voice_stream/tts/cartesia.py +5 -4
- rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
- rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
- rasa/core/channels/voice_stream/twilio_media_streams.py +10 -7
- rasa/core/channels/voice_stream/util.py +1 -1
- rasa/core/channels/voice_stream/voice_channel.py +15 -15
- rasa/core/channels/webexteams.py +3 -4
- rasa/core/evaluation/marker.py +7 -6
- rasa/core/evaluation/marker_base.py +15 -16
- rasa/core/evaluation/marker_stats.py +3 -4
- rasa/core/evaluation/marker_tracker_loader.py +5 -4
- rasa/core/exporter.py +4 -4
- rasa/core/featurizers/precomputation.py +8 -8
- rasa/core/featurizers/single_state_featurizer.py +7 -7
- rasa/core/featurizers/tracker_featurizers.py +13 -13
- rasa/core/http_interpreter.py +3 -4
- rasa/core/information_retrieval/__init__.py +1 -1
- rasa/core/information_retrieval/faiss.py +4 -4
- rasa/core/information_retrieval/information_retrieval.py +2 -2
- rasa/core/information_retrieval/milvus.py +3 -3
- rasa/core/information_retrieval/qdrant.py +3 -3
- rasa/core/jobs.py +1 -0
- rasa/core/lock.py +2 -3
- rasa/core/lock_store.py +3 -3
- rasa/core/migrate.py +11 -8
- rasa/core/nlg/__init__.py +1 -1
- rasa/core/nlg/callback.py +2 -3
- rasa/core/nlg/contextual_response_rephraser.py +63 -13
- rasa/core/nlg/generator.py +2 -2
- rasa/core/nlg/interpolator.py +4 -3
- rasa/core/nlg/response.py +3 -4
- rasa/core/nlg/summarize.py +1 -0
- rasa/core/persistor.py +3 -3
- rasa/core/policies/ensemble.py +10 -9
- rasa/core/policies/enterprise_search_policy.py +86 -21
- rasa/core/policies/flow_policy.py +13 -14
- rasa/core/policies/flows/flow_executor.py +35 -11
- rasa/core/policies/intentless_policy.py +6 -7
- rasa/core/policies/memoization.py +22 -20
- rasa/core/policies/policy.py +24 -22
- rasa/core/policies/rule_policy.py +37 -36
- rasa/core/policies/ted_policy.py +87 -85
- rasa/core/policies/unexpected_intent_policy.py +77 -75
- rasa/core/processor.py +96 -65
- rasa/core/run.py +1 -1
- rasa/core/secrets_manager/endpoints.py +2 -3
- rasa/core/secrets_manager/factory.py +2 -3
- rasa/core/secrets_manager/secret_manager.py +2 -3
- rasa/core/secrets_manager/vault.py +2 -2
- rasa/core/test.py +30 -30
- rasa/core/tracker_store.py +15 -15
- rasa/core/train.py +1 -1
- rasa/core/training/__init__.py +2 -2
- rasa/core/training/converters/responses_prefix_converter.py +1 -2
- rasa/core/training/interactive.py +13 -13
- rasa/core/training/story_conflict.py +4 -5
- rasa/core/training/training.py +3 -5
- rasa/core/utils.py +5 -5
- rasa/core/visualize.py +1 -1
- rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
- rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
- rasa/dialogue_understanding/commands/__init__.py +22 -22
- rasa/dialogue_understanding/commands/can_not_handle_command.py +20 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +18 -7
- rasa/dialogue_understanding/commands/change_flow_command.py +18 -2
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +18 -4
- rasa/dialogue_understanding/commands/clarify_command.py +19 -3
- rasa/dialogue_understanding/commands/command.py +19 -3
- rasa/dialogue_understanding/commands/correct_slots_command.py +3 -3
- rasa/dialogue_understanding/commands/error_command.py +1 -1
- rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
- rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
- rasa/dialogue_understanding/commands/human_handoff_command.py +16 -4
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +18 -4
- rasa/dialogue_understanding/commands/noop_command.py +2 -1
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +16 -4
- rasa/dialogue_understanding/commands/restart_command.py +2 -5
- rasa/dialogue_understanding/commands/session_end_command.py +3 -5
- rasa/dialogue_understanding/commands/session_start_command.py +3 -5
- rasa/dialogue_understanding/commands/set_slot_command.py +27 -3
- rasa/dialogue_understanding/commands/skip_question_command.py +16 -4
- rasa/dialogue_understanding/commands/start_flow_command.py +17 -2
- rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
- rasa/dialogue_understanding/commands/utils.py +64 -45
- rasa/dialogue_understanding/constants.py +1 -0
- rasa/dialogue_understanding/generator/command_generator.py +2 -119
- rasa/dialogue_understanding/generator/command_parser.py +201 -0
- rasa/dialogue_understanding/generator/constants.py +2 -2
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +11 -57
- rasa/dialogue_understanding/generator/llm_command_generator.py +2 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +67 -120
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +8 -10
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +32 -93
- rasa/dialogue_understanding/generator/utils.py +45 -0
- rasa/dialogue_understanding/patterns/cancel.py +2 -1
- rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
- rasa/dialogue_understanding/patterns/chitchat.py +1 -1
- rasa/dialogue_understanding/patterns/clarify.py +2 -1
- rasa/dialogue_understanding/patterns/code_change.py +2 -0
- rasa/dialogue_understanding/patterns/collect_information.py +6 -3
- rasa/dialogue_understanding/patterns/completed.py +1 -1
- rasa/dialogue_understanding/patterns/continue_interrupted.py +10 -1
- rasa/dialogue_understanding/patterns/correction.py +4 -2
- rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
- rasa/dialogue_understanding/patterns/internal_error.py +1 -0
- rasa/dialogue_understanding/patterns/search.py +1 -1
- rasa/dialogue_understanding/patterns/session_start.py +1 -1
- rasa/dialogue_understanding/patterns/skip_question.py +1 -0
- rasa/dialogue_understanding/patterns/user_silence.py +1 -1
- rasa/dialogue_understanding/processor/command_processor.py +13 -9
- rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
- rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
- rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
- rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
- rasa/dialogue_understanding/stack/utils.py +8 -4
- rasa/dialogue_understanding/utils.py +121 -2
- rasa/dialogue_understanding_test/README.md +379 -0
- rasa/dialogue_understanding_test/command_comparison.py +60 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +110 -4
- rasa/dialogue_understanding_test/constants.py +6 -1
- rasa/dialogue_understanding_test/du_test_case.py +252 -38
- rasa/dialogue_understanding_test/du_test_result.py +281 -2
- rasa/dialogue_understanding_test/du_test_runner.py +239 -10
- rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
- rasa/dialogue_understanding_test/io.py +338 -20
- rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
- rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
- rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
- rasa/dialogue_understanding_test/utils.py +70 -0
- rasa/dialogue_understanding_test/validation.py +59 -4
- rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
- rasa/e2e_test/assertions.py +1 -1
- rasa/e2e_test/e2e_config.py +1 -1
- rasa/e2e_test/e2e_test_case.py +3 -4
- rasa/e2e_test/e2e_test_converter.py +2 -3
- rasa/e2e_test/e2e_test_coverage_report.py +6 -6
- rasa/e2e_test/e2e_test_result.py +1 -1
- rasa/e2e_test/e2e_test_runner.py +134 -31
- rasa/e2e_test/stub_custom_action.py +1 -1
- rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
- rasa/e2e_test/utils/io.py +132 -65
- rasa/e2e_test/utils/validation.py +1 -1
- rasa/engine/caching.py +5 -7
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +2 -2
- rasa/engine/recipes/default_components.py +13 -15
- rasa/engine/recipes/recipe.py +2 -2
- rasa/engine/runner/dask.py +2 -2
- rasa/engine/runner/interface.py +1 -0
- rasa/engine/storage/local_model_storage.py +5 -4
- rasa/engine/storage/resource.py +2 -1
- rasa/engine/storage/storage.py +5 -3
- rasa/engine/training/components.py +2 -1
- rasa/engine/training/fingerprinting.py +4 -2
- rasa/engine/training/graph_trainer.py +4 -4
- rasa/engine/training/hooks.py +2 -2
- rasa/engine/validation.py +34 -33
- rasa/exceptions.py +3 -2
- rasa/graph_components/converters/nlu_message_converter.py +3 -3
- rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
- rasa/graph_components/providers/domain_provider.py +3 -2
- rasa/graph_components/providers/flows_provider.py +2 -3
- rasa/graph_components/providers/forms_provider.py +4 -4
- rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
- rasa/graph_components/providers/responses_provider.py +4 -4
- rasa/graph_components/providers/rule_only_provider.py +3 -2
- rasa/graph_components/providers/story_graph_provider.py +8 -8
- rasa/graph_components/providers/training_tracker_provider.py +3 -2
- rasa/graph_components/validators/default_recipe_validator.py +16 -16
- rasa/graph_components/validators/finetuning_validator.py +10 -8
- rasa/hooks.py +18 -12
- rasa/jupyter.py +2 -2
- rasa/llm_fine_tuning/annotation_module.py +4 -4
- rasa/llm_fine_tuning/conversations.py +6 -6
- rasa/llm_fine_tuning/llm_data_preparation_module.py +1 -1
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +1 -1
- rasa/llm_fine_tuning/paraphrasing_module.py +1 -1
- rasa/llm_fine_tuning/storage.py +3 -3
- rasa/markers/marker.py +2 -3
- rasa/markers/marker_base.py +1 -2
- rasa/markers/upload.py +2 -2
- rasa/markers/validate.py +2 -3
- rasa/model.py +3 -5
- rasa/model_manager/config.py +1 -1
- rasa/model_manager/model_api.py +5 -4
- rasa/model_manager/runner_service.py +6 -6
- rasa/model_manager/socket_bridge.py +8 -3
- rasa/model_manager/studio_jwt_auth.py +1 -0
- rasa/model_manager/trainer_service.py +9 -7
- rasa/model_manager/utils.py +1 -1
- rasa/model_manager/warm_rasa_process.py +14 -8
- rasa/model_service.py +5 -6
- rasa/model_testing.py +13 -15
- rasa/nlu/classifiers/diet_classifier.py +72 -73
- rasa/nlu/classifiers/fallback_classifier.py +9 -8
- rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
- rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
- rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
- rasa/nlu/classifiers/regex_message_handler.py +3 -2
- rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
- rasa/nlu/convert.py +2 -2
- rasa/nlu/emulators/dialogflow.py +3 -3
- rasa/nlu/emulators/luis.py +5 -5
- rasa/nlu/emulators/no_emulator.py +1 -0
- rasa/nlu/emulators/wit.py +4 -4
- rasa/nlu/extractors/crf_entity_extractor.py +11 -11
- rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
- rasa/nlu/extractors/entity_synonyms.py +10 -9
- rasa/nlu/extractors/extractor.py +16 -16
- rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
- rasa/nlu/extractors/regex_entity_extractor.py +11 -10
- rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
- rasa/nlu/featurizers/featurizer.py +5 -4
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
- rasa/nlu/model.py +0 -1
- rasa/nlu/selectors/response_selector.py +67 -68
- rasa/nlu/test.py +38 -38
- rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
- rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
- rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
- rasa/nlu/tokenizers/tokenizer.py +6 -7
- rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
- rasa/nlu/utils/bilou_utils.py +7 -7
- rasa/nlu/utils/hugging_face/registry.py +22 -22
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
- rasa/nlu/utils/mitie_utils.py +2 -1
- rasa/nlu/utils/pattern_utils.py +1 -1
- rasa/nlu/utils/spacy_utils.py +3 -3
- rasa/plugin.py +12 -1
- rasa/server.py +37 -1
- rasa/shared/constants.py +22 -2
- rasa/shared/core/command_payload_reader.py +15 -7
- rasa/shared/core/constants.py +4 -1
- rasa/shared/core/conversation.py +1 -2
- rasa/shared/core/events.py +47 -37
- rasa/shared/core/flows/__init__.py +0 -1
- rasa/shared/core/flows/flow.py +11 -11
- rasa/shared/core/flows/flow_step.py +19 -13
- rasa/shared/core/flows/flow_step_links.py +21 -14
- rasa/shared/core/flows/flow_step_sequence.py +6 -4
- rasa/shared/core/flows/flows_list.py +3 -3
- rasa/shared/core/flows/nlu_trigger.py +1 -1
- rasa/shared/core/flows/steps/__init__.py +2 -2
- rasa/shared/core/flows/steps/action.py +4 -3
- rasa/shared/core/flows/steps/call.py +4 -4
- rasa/shared/core/flows/steps/collect.py +7 -4
- rasa/shared/core/flows/steps/continuation.py +3 -1
- rasa/shared/core/flows/steps/end.py +3 -1
- rasa/shared/core/flows/steps/internal.py +3 -2
- rasa/shared/core/flows/steps/link.py +6 -4
- rasa/shared/core/flows/steps/no_operation.py +7 -5
- rasa/shared/core/flows/steps/set_slots.py +4 -3
- rasa/shared/core/flows/steps/start.py +3 -1
- rasa/shared/core/flows/utils.py +1 -0
- rasa/shared/core/flows/validation.py +3 -5
- rasa/shared/core/generator.py +20 -21
- rasa/shared/core/slot_mappings.py +15 -15
- rasa/shared/core/slots.py +3 -3
- rasa/shared/core/trackers.py +31 -31
- rasa/shared/core/training_data/loading.py +1 -1
- rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
- rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
- rasa/shared/core/training_data/structures.py +11 -12
- rasa/shared/core/training_data/visualization.py +10 -10
- rasa/shared/data.py +6 -6
- rasa/shared/engine/caching.py +0 -1
- rasa/shared/exceptions.py +2 -2
- rasa/shared/importers/rasa.py +5 -6
- rasa/shared/importers/utils.py +1 -1
- rasa/shared/nlu/constants.py +3 -0
- rasa/shared/nlu/training_data/entities_parser.py +6 -6
- rasa/shared/nlu/training_data/features.py +3 -3
- rasa/shared/nlu/training_data/formats/__init__.py +1 -1
- rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
- rasa/shared/nlu/training_data/formats/luis.py +7 -8
- rasa/shared/nlu/training_data/formats/rasa.py +4 -5
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
- rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
- rasa/shared/nlu/training_data/formats/wit.py +3 -4
- rasa/shared/nlu/training_data/loading.py +4 -4
- rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
- rasa/shared/nlu/training_data/message.py +13 -14
- rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
- rasa/shared/nlu/training_data/schemas/responses.yml +1 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
- rasa/shared/nlu/training_data/training_data.py +12 -13
- rasa/shared/nlu/training_data/util.py +11 -10
- rasa/shared/providers/_configs/azure_openai_client_config.py +3 -497
- rasa/shared/providers/_configs/client_config.py +1 -3
- rasa/shared/providers/_configs/default_litellm_client_config.py +1 -3
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -3
- rasa/shared/providers/_configs/litellm_router_client_config.py +1 -3
- rasa/shared/providers/_configs/model_group_config.py +2 -7
- rasa/shared/providers/_configs/openai_client_config.py +1 -3
- rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -3
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -3
- rasa/shared/providers/_configs/utils.py +1 -0
- rasa/shared/providers/_ssl_verification_utils.py +5 -6
- rasa/shared/providers/_utils.py +5 -5
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +3 -28
- rasa/shared/providers/embedding/embedding_client.py +1 -1
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +1 -3
- rasa/shared/providers/llm/_base_litellm_client.py +1 -3
- rasa/shared/providers/llm/azure_openai_llm_client.py +25 -81
- rasa/shared/providers/llm/default_litellm_llm_client.py +1 -3
- rasa/shared/providers/llm/litellm_router_llm_client.py +2 -21
- rasa/shared/providers/llm/llm_client.py +1 -3
- rasa/shared/providers/llm/llm_response.py +41 -2
- rasa/shared/providers/llm/openai_llm_client.py +3 -9
- rasa/shared/providers/llm/rasa_llm_client.py +6 -20
- rasa/shared/providers/llm/self_hosted_llm_client.py +3 -9
- rasa/shared/providers/mappings.py +18 -19
- rasa/shared/providers/router/_base_litellm_router_client.py +1 -3
- rasa/shared/providers/router/router_client.py +1 -3
- rasa/shared/utils/cli.py +1 -1
- rasa/shared/utils/common.py +1 -1
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
- rasa/shared/utils/health_check/health_check.py +3 -3
- rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
- rasa/shared/utils/io.py +1 -1
- rasa/shared/utils/llm.py +5 -9
- rasa/shared/utils/pykwalify_extensions.py +1 -1
- rasa/shared/utils/schemas/events.py +1 -1
- rasa/shared/utils/yaml.py +29 -26
- rasa/studio/auth.py +3 -3
- rasa/studio/config.py +1 -2
- rasa/studio/data_handler.py +3 -3
- rasa/studio/download.py +1 -1
- rasa/studio/results_logger.py +3 -3
- rasa/studio/upload.py +2 -0
- rasa/telemetry.py +31 -0
- rasa/tracing/config.py +3 -3
- rasa/tracing/instrumentation/attribute_extractors.py +2 -0
- rasa/tracing/instrumentation/instrumentation.py +4 -4
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
- rasa/tracing/instrumentation/metrics.py +11 -11
- rasa/tracing/metric_instrument_provider.py +14 -14
- rasa/utils/common.py +12 -9
- rasa/utils/endpoints.py +1 -1
- rasa/utils/io.py +7 -7
- rasa/utils/licensing.py +3 -4
- rasa/utils/log_utils.py +7 -6
- rasa/utils/ml_utils.py +1 -0
- rasa/utils/plotting.py +3 -3
- rasa/utils/sanic_error_handler.py +1 -1
- rasa/utils/tensorflow/callback.py +2 -2
- rasa/utils/tensorflow/crf.py +2 -2
- rasa/utils/tensorflow/data_generator.py +5 -5
- rasa/utils/tensorflow/environment.py +3 -3
- rasa/utils/tensorflow/feature_array.py +2 -3
- rasa/utils/tensorflow/layers.py +18 -12
- rasa/utils/tensorflow/layers_utils.py +2 -1
- rasa/utils/tensorflow/metrics.py +2 -2
- rasa/utils/tensorflow/model_data.py +7 -7
- rasa/utils/tensorflow/model_data_utils.py +10 -9
- rasa/utils/tensorflow/models.py +31 -32
- rasa/utils/tensorflow/rasa_layers.py +20 -19
- rasa/utils/tensorflow/types.py +2 -1
- rasa/utils/train_utils.py +23 -21
- rasa/utils/url_tools.py +1 -1
- rasa/validator.py +17 -1
- rasa/version.py +1 -1
- {rasa_pro-3.12.0.dev1.dist-info → rasa_pro-3.12.0.dev3.dist-info}/METADATA +8 -9
- rasa_pro-3.12.0.dev3.dist-info/RECORD +800 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +0 -1
- rasa/shared/providers/constants.py +0 -7
- rasa_pro-3.12.0.dev1.dist-info/RECORD +0 -790
- {rasa_pro-3.12.0.dev1.dist-info → rasa_pro-3.12.0.dev3.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.0.dev1.dist-info → rasa_pro-3.12.0.dev3.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.0.dev1.dist-info → rasa_pro-3.12.0.dev3.dist-info}/entry_points.txt +0 -0
rasa/core/processor.py
CHANGED
|
@@ -1,62 +1,77 @@
|
|
|
1
|
-
import inspect
|
|
2
1
|
import copy
|
|
2
|
+
import inspect
|
|
3
3
|
import logging
|
|
4
|
-
import structlog
|
|
5
4
|
import os
|
|
6
5
|
import re
|
|
7
|
-
from pathlib import Path
|
|
8
6
|
import tarfile
|
|
9
7
|
import time
|
|
8
|
+
from pathlib import Path
|
|
10
9
|
from types import LambdaType
|
|
11
|
-
from typing import Any, Dict, List, Optional,
|
|
10
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
|
|
11
|
+
|
|
12
|
+
import structlog
|
|
13
|
+
|
|
14
|
+
import rasa.core.actions.action
|
|
15
|
+
import rasa.core.tracker_store
|
|
16
|
+
import rasa.core.utils
|
|
17
|
+
import rasa.shared.core.trackers
|
|
18
|
+
import rasa.shared.utils.io
|
|
19
|
+
from rasa.core import jobs
|
|
20
|
+
from rasa.core.actions.action import Action
|
|
12
21
|
from rasa.core.actions.action_exceptions import ActionExecutionRejection
|
|
13
22
|
from rasa.core.actions.forms import FormAction
|
|
23
|
+
from rasa.core.channels.channel import (
|
|
24
|
+
CollectingOutputChannel,
|
|
25
|
+
OutputChannel,
|
|
26
|
+
UserMessage,
|
|
27
|
+
)
|
|
14
28
|
from rasa.core.http_interpreter import RasaNLUHttpInterpreter
|
|
29
|
+
from rasa.core.lock_store import LockStore
|
|
30
|
+
from rasa.core.nlg import NaturalLanguageGenerator
|
|
31
|
+
from rasa.core.policies.policy import PolicyPrediction
|
|
15
32
|
from rasa.dialogue_understanding.commands import (
|
|
33
|
+
CannotHandleCommand,
|
|
16
34
|
Command,
|
|
17
35
|
NoopCommand,
|
|
18
36
|
SetSlotCommand,
|
|
19
|
-
CannotHandleCommand,
|
|
20
37
|
)
|
|
38
|
+
from rasa.dialogue_understanding.utils import add_commands_to_message_parse_data
|
|
21
39
|
from rasa.engine import loader
|
|
22
40
|
from rasa.engine.constants import (
|
|
41
|
+
PLACEHOLDER_ENDPOINTS,
|
|
23
42
|
PLACEHOLDER_MESSAGE,
|
|
24
43
|
PLACEHOLDER_TRACKER,
|
|
25
|
-
PLACEHOLDER_ENDPOINTS,
|
|
26
44
|
)
|
|
27
45
|
from rasa.engine.runner.dask import DaskGraphRunner
|
|
46
|
+
from rasa.engine.runner.interface import GraphRunner
|
|
28
47
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
29
48
|
from rasa.engine.storage.storage import ModelMetadata
|
|
49
|
+
from rasa.exceptions import ActionLimitReached, ModelNotFound
|
|
30
50
|
from rasa.model import get_latest_model
|
|
31
51
|
from rasa.plugin import plugin_manager
|
|
32
|
-
from rasa.shared.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
OutputChannel,
|
|
41
|
-
UserMessage,
|
|
52
|
+
from rasa.shared.constants import (
|
|
53
|
+
ASSISTANT_ID_KEY,
|
|
54
|
+
DEFAULT_SENDER_ID,
|
|
55
|
+
DOCS_URL_DOMAINS,
|
|
56
|
+
DOCS_URL_NLU_BASED_POLICIES,
|
|
57
|
+
RASA_PATTERN_CANNOT_HANDLE_INVALID_INTENT,
|
|
58
|
+
ROUTE_TO_CALM_SLOT,
|
|
59
|
+
UTTER_PREFIX,
|
|
42
60
|
)
|
|
43
|
-
import rasa.core.utils
|
|
44
|
-
from rasa.core.policies.policy import PolicyPrediction
|
|
45
|
-
from rasa.engine.runner.interface import GraphRunner
|
|
46
|
-
from rasa.exceptions import ActionLimitReached, ModelNotFound
|
|
47
61
|
from rasa.shared.core.constants import (
|
|
48
62
|
ACTION_CORRECT_FLOW_SLOT,
|
|
49
|
-
|
|
50
|
-
SLOT_SILENCE_TIMEOUT,
|
|
51
|
-
USER_INTENT_RESTART,
|
|
63
|
+
ACTION_EXTRACT_SLOTS,
|
|
52
64
|
ACTION_LISTEN_NAME,
|
|
53
65
|
ACTION_SESSION_START_NAME,
|
|
54
66
|
FOLLOWUP_ACTION,
|
|
55
67
|
SESSION_START_METADATA_SLOT,
|
|
56
|
-
|
|
68
|
+
SLOT_CONSECUTIVE_SILENCE_TIMEOUTS,
|
|
69
|
+
SLOT_SILENCE_TIMEOUT,
|
|
70
|
+
USER_INTENT_RESTART,
|
|
57
71
|
USER_INTENT_SILENCE_TIMEOUT,
|
|
58
72
|
)
|
|
59
73
|
from rasa.shared.core.events import (
|
|
74
|
+
ActionExecuted,
|
|
60
75
|
ActionExecutionRejected,
|
|
61
76
|
BotUttered,
|
|
62
77
|
Event,
|
|
@@ -64,37 +79,25 @@ from rasa.shared.core.events import (
|
|
|
64
79
|
ReminderScheduled,
|
|
65
80
|
SlotSet,
|
|
66
81
|
UserUttered,
|
|
67
|
-
ActionExecuted,
|
|
68
|
-
)
|
|
69
|
-
from rasa.shared.constants import (
|
|
70
|
-
ASSISTANT_ID_KEY,
|
|
71
|
-
DOCS_URL_DOMAINS,
|
|
72
|
-
DEFAULT_SENDER_ID,
|
|
73
|
-
ROUTE_TO_CALM_SLOT,
|
|
74
|
-
DOCS_URL_NLU_BASED_POLICIES,
|
|
75
|
-
UTTER_PREFIX,
|
|
76
|
-
RASA_PATTERN_CANNOT_HANDLE_INVALID_INTENT,
|
|
77
82
|
)
|
|
78
|
-
from rasa.core.
|
|
79
|
-
from rasa.core.lock_store import LockStore
|
|
80
|
-
from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
|
|
81
|
-
import rasa.core.tracker_store
|
|
82
|
-
import rasa.core.actions.action
|
|
83
|
-
import rasa.shared.core.trackers
|
|
83
|
+
from rasa.shared.core.flows import FlowsList
|
|
84
84
|
from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
|
|
85
|
+
from rasa.shared.data import TrainingType, create_regex_pattern_reader
|
|
85
86
|
from rasa.shared.nlu.constants import (
|
|
86
87
|
COMMANDS,
|
|
87
88
|
ENTITIES,
|
|
89
|
+
FULL_RETRIEVAL_INTENT_NAME_KEY,
|
|
88
90
|
INTENT,
|
|
89
91
|
INTENT_NAME_KEY,
|
|
90
92
|
INTENT_RESPONSE_KEY,
|
|
93
|
+
PREDICTED_COMMANDS,
|
|
91
94
|
PREDICTED_CONFIDENCE_KEY,
|
|
92
|
-
FULL_RETRIEVAL_INTENT_NAME_KEY,
|
|
93
|
-
RESPONSE_SELECTOR,
|
|
94
95
|
RESPONSE,
|
|
96
|
+
RESPONSE_SELECTOR,
|
|
95
97
|
TEXT,
|
|
96
98
|
)
|
|
97
99
|
from rasa.shared.nlu.training_data.message import Message
|
|
100
|
+
from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
|
|
98
101
|
from rasa.utils.endpoints import EndpointConfig
|
|
99
102
|
|
|
100
103
|
if TYPE_CHECKING:
|
|
@@ -818,9 +821,7 @@ class MessageProcessor:
|
|
|
818
821
|
return parse_data
|
|
819
822
|
|
|
820
823
|
def _sanitize_message(self, message: UserMessage) -> UserMessage:
|
|
821
|
-
"""Sanitize user message by removing prepended slashes before the
|
|
822
|
-
actual content.
|
|
823
|
-
"""
|
|
824
|
+
"""Sanitize user message by removing prepended slashes before the content."""
|
|
824
825
|
# Regex pattern to match leading slashes and any whitespace before
|
|
825
826
|
# actual content
|
|
826
827
|
pattern = r"^[/\s]+"
|
|
@@ -898,9 +899,14 @@ class MessageProcessor:
|
|
|
898
899
|
NLUCommandAdapter,
|
|
899
900
|
)
|
|
900
901
|
|
|
902
|
+
message = Message(parse_data)
|
|
901
903
|
commands = NLUCommandAdapter.convert_nlu_to_commands(
|
|
902
|
-
|
|
904
|
+
message, tracker, await self.get_flows(), self.domain
|
|
905
|
+
)
|
|
906
|
+
add_commands_to_message_parse_data(
|
|
907
|
+
message, NLUCommandAdapter.__name__, commands
|
|
903
908
|
)
|
|
909
|
+
parse_data[PREDICTED_COMMANDS] = message.get(PREDICTED_COMMANDS, [])
|
|
904
910
|
|
|
905
911
|
# if there are no converted commands and parsed data contains invalid intent
|
|
906
912
|
# add CannotHandleCommand as fallback
|
|
@@ -921,9 +927,7 @@ class MessageProcessor:
|
|
|
921
927
|
return [command.as_dict() for command in commands]
|
|
922
928
|
|
|
923
929
|
def _contains_undefined_intent(self, message: Message) -> bool:
|
|
924
|
-
"""Checks if the message contains an intent
|
|
925
|
-
in the domain.
|
|
926
|
-
"""
|
|
930
|
+
"""Checks if the message contains an undefined intent."""
|
|
927
931
|
intent_name = message.get(INTENT, {}).get("name")
|
|
928
932
|
return intent_name is not None and intent_name not in self.domain.intents
|
|
929
933
|
|
|
@@ -987,6 +991,8 @@ class MessageProcessor:
|
|
|
987
991
|
if parse_data["entities"]:
|
|
988
992
|
self._log_slots(tracker)
|
|
989
993
|
|
|
994
|
+
plugin_manager().hook.after_new_user_message(tracker=tracker)
|
|
995
|
+
|
|
990
996
|
logger.debug(
|
|
991
997
|
f"Logged UserUtterance - tracker now has {len(tracker.events)} events."
|
|
992
998
|
)
|
|
@@ -1270,6 +1276,7 @@ class MessageProcessor:
|
|
|
1270
1276
|
events = await action.run(
|
|
1271
1277
|
output_channel, nlg, temporary_tracker, self.domain
|
|
1272
1278
|
)
|
|
1279
|
+
self._log_action_and_events_on_tracker(tracker, action, events, prediction)
|
|
1273
1280
|
except ActionExecutionRejection:
|
|
1274
1281
|
events = [
|
|
1275
1282
|
ActionExecutionRejected(
|
|
@@ -1278,7 +1285,7 @@ class MessageProcessor:
|
|
|
1278
1285
|
]
|
|
1279
1286
|
tracker.update(events[0])
|
|
1280
1287
|
return self.should_predict_another_action(action.name())
|
|
1281
|
-
except Exception:
|
|
1288
|
+
except Exception as e:
|
|
1282
1289
|
structlogger.exception(
|
|
1283
1290
|
"rasa.core.processor.run_action.exception",
|
|
1284
1291
|
event_info=f"Encountered an exception while "
|
|
@@ -1287,9 +1294,15 @@ class MessageProcessor:
|
|
|
1287
1294
|
f"Please check the logs of your action server for "
|
|
1288
1295
|
f"more information.",
|
|
1289
1296
|
)
|
|
1297
|
+
error_messge = str(e)
|
|
1290
1298
|
events = []
|
|
1291
|
-
|
|
1292
|
-
|
|
1299
|
+
self._log_action_prediction_on_tracker(
|
|
1300
|
+
tracker,
|
|
1301
|
+
action,
|
|
1302
|
+
prediction,
|
|
1303
|
+
was_successful=False,
|
|
1304
|
+
error_message=error_messge,
|
|
1305
|
+
)
|
|
1293
1306
|
|
|
1294
1307
|
if any(isinstance(e, UserUttered) for e in events):
|
|
1295
1308
|
logger.debug(
|
|
@@ -1305,10 +1318,10 @@ class MessageProcessor:
|
|
|
1305
1318
|
self._log_slots(tracker)
|
|
1306
1319
|
|
|
1307
1320
|
await self.execute_side_effects(events, tracker, output_channel)
|
|
1308
|
-
|
|
1321
|
+
plugin_manager().hook.after_action_executed(tracker=tracker)
|
|
1309
1322
|
return self.should_predict_another_action(action.name())
|
|
1310
1323
|
|
|
1311
|
-
def
|
|
1324
|
+
def _log_action_and_events_on_tracker(
|
|
1312
1325
|
self,
|
|
1313
1326
|
tracker: DialogueStateTracker,
|
|
1314
1327
|
action: Action,
|
|
@@ -1325,16 +1338,9 @@ class MessageProcessor:
|
|
|
1325
1338
|
isinstance(event, ActionExecutionRejected) for event in events
|
|
1326
1339
|
)
|
|
1327
1340
|
if not action_was_rejected_manually:
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
prediction_events=copy.deepcopy(prediction.events),
|
|
1331
|
-
policy_name=prediction.policy_name,
|
|
1332
|
-
action_name=action.name(),
|
|
1341
|
+
self._log_action_prediction_on_tracker(
|
|
1342
|
+
tracker, action, prediction, was_successful=True, error_message=None
|
|
1333
1343
|
)
|
|
1334
|
-
tracker.update_with_events(prediction.events)
|
|
1335
|
-
|
|
1336
|
-
# log the action and its produced events
|
|
1337
|
-
tracker.update(action.event_for_successful_execution(prediction))
|
|
1338
1344
|
|
|
1339
1345
|
structlogger.debug(
|
|
1340
1346
|
"processor.actions.log",
|
|
@@ -1343,6 +1349,29 @@ class MessageProcessor:
|
|
|
1343
1349
|
)
|
|
1344
1350
|
tracker.update_with_events(events)
|
|
1345
1351
|
|
|
1352
|
+
def _log_action_prediction_on_tracker(
|
|
1353
|
+
self,
|
|
1354
|
+
tracker: DialogueStateTracker,
|
|
1355
|
+
action: Action,
|
|
1356
|
+
prediction: PolicyPrediction,
|
|
1357
|
+
was_successful: bool,
|
|
1358
|
+
error_message: Optional[str],
|
|
1359
|
+
) -> None:
|
|
1360
|
+
structlogger.debug(
|
|
1361
|
+
"processor.actions.policy_prediction",
|
|
1362
|
+
prediction_events=copy.deepcopy(prediction.events),
|
|
1363
|
+
policy_name=prediction.policy_name,
|
|
1364
|
+
action_name=action.name(),
|
|
1365
|
+
)
|
|
1366
|
+
tracker.update_with_events(prediction.events)
|
|
1367
|
+
|
|
1368
|
+
# log the action and its produced events
|
|
1369
|
+
tracker.update(
|
|
1370
|
+
action.event_for_successful_execution(
|
|
1371
|
+
prediction, was_successful, error_message
|
|
1372
|
+
)
|
|
1373
|
+
)
|
|
1374
|
+
|
|
1346
1375
|
def _has_session_expired(self, tracker: DialogueStateTracker) -> bool:
|
|
1347
1376
|
"""Determine whether the latest session in `tracker` has expired.
|
|
1348
1377
|
|
|
@@ -1441,8 +1470,10 @@ class MessageProcessor:
|
|
|
1441
1470
|
return len(filtered_commands) > 0
|
|
1442
1471
|
|
|
1443
1472
|
def _is_calm_assistant(self) -> bool:
|
|
1444
|
-
"""Inspects the nodes of the graph schema to
|
|
1445
|
-
|
|
1473
|
+
"""Inspects the nodes of the graph schema to decide if we are in CALM.
|
|
1474
|
+
|
|
1475
|
+
To determine whether we are in CALM mode, we check if any node is
|
|
1476
|
+
associated with the `FlowPolicy`, which is indicative of a
|
|
1446
1477
|
CALM assistant setup.
|
|
1447
1478
|
|
|
1448
1479
|
Returns:
|
rasa/core/run.py
CHANGED
|
@@ -19,7 +19,6 @@ from typing import (
|
|
|
19
19
|
|
|
20
20
|
from sanic import Sanic
|
|
21
21
|
from sanic.worker.loader import AppLoader
|
|
22
|
-
from rasa.core.channels.development_inspector import DevelopmentInspectProxy
|
|
23
22
|
|
|
24
23
|
import rasa.core.utils
|
|
25
24
|
import rasa.shared.utils.common
|
|
@@ -33,6 +32,7 @@ from rasa.core import agent, channels, constants
|
|
|
33
32
|
from rasa.core.agent import Agent
|
|
34
33
|
from rasa.core.channels import console
|
|
35
34
|
from rasa.core.channels.channel import InputChannel
|
|
35
|
+
from rasa.core.channels.development_inspector import DevelopmentInspectProxy
|
|
36
36
|
from rasa.core.persistor import StorageType
|
|
37
37
|
from rasa.core.utils import AvailableEndpoints
|
|
38
38
|
from rasa.plugin import plugin_manager
|
|
@@ -2,15 +2,14 @@ import logging
|
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
from typing import Any, Dict, List, Optional, Text, Union, cast
|
|
4
4
|
|
|
5
|
-
from rasa.shared.exceptions import RasaException
|
|
6
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
7
|
-
|
|
8
5
|
from rasa.core.secrets_manager.constants import (
|
|
9
6
|
SECRET_KEY_LABEL,
|
|
10
7
|
SECRET_MANAGER_PREFIX,
|
|
11
8
|
SOURCE_KEY_LABEL,
|
|
12
9
|
SUPPORTED_SECRET_MANAGERS,
|
|
13
10
|
)
|
|
11
|
+
from rasa.shared.exceptions import RasaException
|
|
12
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
14
13
|
|
|
15
14
|
logger = logging.getLogger(__name__)
|
|
16
15
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from typing import Optional, Text, cast
|
|
3
3
|
|
|
4
|
-
from rasa.shared.exceptions import RasaException
|
|
5
|
-
from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
|
|
6
|
-
|
|
7
4
|
from rasa.core.secrets_manager.constants import (
|
|
8
5
|
SECRET_MANAGER_ENV_NAME,
|
|
9
6
|
VAULT_DEFAULT_RASA_SECRETS_PATH,
|
|
@@ -29,6 +26,8 @@ from rasa.core.secrets_manager.vault import (
|
|
|
29
26
|
VaultSecretManagerNonStrictConfig,
|
|
30
27
|
VaultSecretsManager,
|
|
31
28
|
)
|
|
29
|
+
from rasa.shared.exceptions import RasaException
|
|
30
|
+
from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
def create(config: SecretManagerConfig) -> Optional[SecretsManager]:
|
|
@@ -5,14 +5,13 @@ import copy
|
|
|
5
5
|
import logging
|
|
6
6
|
from typing import Any, ClassVar, Dict, List, Optional, Text, cast
|
|
7
7
|
|
|
8
|
-
from rasa.shared.exceptions import RasaException
|
|
9
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
10
|
-
|
|
11
8
|
from rasa.core.secrets_manager.endpoints import (
|
|
12
9
|
CredentialsLocation,
|
|
13
10
|
EndpointReader,
|
|
14
11
|
EndpointTrait,
|
|
15
12
|
)
|
|
13
|
+
from rasa.shared.exceptions import RasaException
|
|
14
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
16
15
|
from rasa.utils.singleton import Singleton
|
|
17
16
|
|
|
18
17
|
logger = logging.getLogger(__name__)
|
|
@@ -9,8 +9,6 @@ from typing import Any, Dict, Optional, Text, Union, cast
|
|
|
9
9
|
import hvac.exceptions
|
|
10
10
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
11
11
|
from apscheduler.triggers.interval import IntervalTrigger
|
|
12
|
-
from rasa.shared.exceptions import RasaException
|
|
13
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
14
12
|
|
|
15
13
|
from rasa.core.secrets_manager.constants import (
|
|
16
14
|
TRACKER_STORE_ENDPOINT_TYPE,
|
|
@@ -25,6 +23,8 @@ from rasa.core.secrets_manager.endpoints import (
|
|
|
25
23
|
TrackerStoreEndpointValidator,
|
|
26
24
|
)
|
|
27
25
|
from rasa.core.secrets_manager.secret_manager import SecretManagerConfig, SecretsManager
|
|
26
|
+
from rasa.shared.exceptions import RasaException
|
|
27
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
28
28
|
|
|
29
29
|
logger = logging.getLogger(__name__)
|
|
30
30
|
|
rasa/core/test.py
CHANGED
|
@@ -1,73 +1,72 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
-
from pathlib import Path
|
|
4
3
|
import tempfile
|
|
5
4
|
import warnings as pywarnings
|
|
6
5
|
from collections import defaultdict, namedtuple
|
|
7
|
-
from
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, cast
|
|
8
8
|
|
|
9
|
+
import rasa.shared.utils.io
|
|
9
10
|
from rasa import telemetry
|
|
11
|
+
from rasa.constants import PERCENTAGE_KEY, RESULTS_FILE
|
|
12
|
+
from rasa.core.actions.action import ActionRetrieveResponse
|
|
13
|
+
from rasa.core.channels import UserMessage
|
|
10
14
|
from rasa.core.constants import (
|
|
11
15
|
CONFUSION_MATRIX_STORIES_FILE,
|
|
12
|
-
REPORT_STORIES_FILE,
|
|
13
16
|
FAILED_STORIES_FILE,
|
|
14
|
-
|
|
17
|
+
REPORT_STORIES_FILE,
|
|
15
18
|
STORIES_WITH_WARNINGS_FILE,
|
|
19
|
+
SUCCESSFUL_STORIES_FILE,
|
|
16
20
|
)
|
|
17
|
-
from rasa.core.channels import UserMessage
|
|
18
21
|
from rasa.core.policies.policy import PolicyPrediction
|
|
22
|
+
from rasa.exceptions import ActionLimitReached
|
|
23
|
+
from rasa.nlu.constants import (
|
|
24
|
+
RESPONSE_SELECTOR_DEFAULT_INTENT,
|
|
25
|
+
RESPONSE_SELECTOR_PROPERTY_NAME,
|
|
26
|
+
RESPONSE_SELECTOR_RETRIEVAL_INTENTS,
|
|
27
|
+
TOKENS_NAMES,
|
|
28
|
+
)
|
|
19
29
|
from rasa.nlu.test import EntityEvaluationResult, evaluate_entities
|
|
20
30
|
from rasa.nlu.tokenizers.tokenizer import Token
|
|
21
31
|
from rasa.shared.constants import ROUTE_TO_CALM_SLOT
|
|
22
32
|
from rasa.shared.core.constants import (
|
|
23
|
-
POLICIES_THAT_EXTRACT_ENTITIES,
|
|
24
33
|
ACTION_UNLIKELY_INTENT_NAME,
|
|
34
|
+
POLICIES_THAT_EXTRACT_ENTITIES,
|
|
25
35
|
)
|
|
26
|
-
from rasa.shared.
|
|
27
|
-
|
|
36
|
+
from rasa.shared.core.domain import Domain
|
|
37
|
+
from rasa.shared.core.events import ActionExecuted, EntitiesAdded, SlotSet, UserUttered
|
|
38
|
+
from rasa.shared.core.trackers import DialogueStateTracker
|
|
28
39
|
from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
|
|
29
40
|
YAMLStoryWriter,
|
|
30
41
|
)
|
|
31
42
|
from rasa.shared.core.training_data.structures import StoryStep
|
|
32
|
-
from rasa.shared.
|
|
33
|
-
from rasa.
|
|
34
|
-
RESPONSE_SELECTOR_DEFAULT_INTENT,
|
|
35
|
-
RESPONSE_SELECTOR_RETRIEVAL_INTENTS,
|
|
36
|
-
TOKENS_NAMES,
|
|
37
|
-
RESPONSE_SELECTOR_PROPERTY_NAME,
|
|
38
|
-
)
|
|
43
|
+
from rasa.shared.exceptions import RasaException
|
|
44
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
39
45
|
from rasa.shared.nlu.constants import (
|
|
40
|
-
INTENT,
|
|
41
46
|
ENTITIES,
|
|
42
|
-
ENTITY_ATTRIBUTE_VALUE,
|
|
43
|
-
ENTITY_ATTRIBUTE_START,
|
|
44
47
|
ENTITY_ATTRIBUTE_END,
|
|
45
|
-
|
|
48
|
+
ENTITY_ATTRIBUTE_START,
|
|
49
|
+
ENTITY_ATTRIBUTE_TEXT,
|
|
46
50
|
ENTITY_ATTRIBUTE_TYPE,
|
|
47
|
-
|
|
51
|
+
ENTITY_ATTRIBUTE_VALUE,
|
|
52
|
+
EXTRACTOR,
|
|
53
|
+
FULL_RETRIEVAL_INTENT_NAME_KEY,
|
|
54
|
+
INTENT,
|
|
48
55
|
INTENT_NAME_KEY,
|
|
56
|
+
INTENT_RESPONSE_KEY,
|
|
49
57
|
RESPONSE,
|
|
50
58
|
RESPONSE_SELECTOR,
|
|
51
|
-
FULL_RETRIEVAL_INTENT_NAME_KEY,
|
|
52
59
|
TEXT,
|
|
53
|
-
ENTITY_ATTRIBUTE_TEXT,
|
|
54
60
|
)
|
|
55
|
-
from rasa.constants import RESULTS_FILE, PERCENTAGE_KEY
|
|
56
|
-
from rasa.shared.core.events import ActionExecuted, EntitiesAdded, UserUttered, SlotSet
|
|
57
|
-
from rasa.shared.core.trackers import DialogueStateTracker
|
|
58
61
|
from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
|
|
59
|
-
from rasa.shared.importers.importer import TrainingDataImporter
|
|
60
62
|
from rasa.shared.utils.io import DEFAULT_ENCODING
|
|
61
63
|
from rasa.utils.tensorflow.constants import QUERY_INTENT_KEY, SEVERITY_KEY
|
|
62
|
-
from rasa.exceptions import ActionLimitReached
|
|
63
|
-
|
|
64
|
-
from rasa.core.actions.action import ActionRetrieveResponse
|
|
65
64
|
|
|
66
65
|
if TYPE_CHECKING:
|
|
67
66
|
from rasa.core.agent import Agent
|
|
68
67
|
from rasa.core.processor import MessageProcessor
|
|
68
|
+
from rasa.shared.core.events import EntityPrediction, Event
|
|
69
69
|
from rasa.shared.core.generator import TrainingDataGenerator
|
|
70
|
-
from rasa.shared.core.events import Event, EntityPrediction
|
|
71
70
|
|
|
72
71
|
logger = logging.getLogger(__name__)
|
|
73
72
|
|
|
@@ -1226,6 +1225,7 @@ def _plot_story_evaluation(
|
|
|
1226
1225
|
"""Plot a confusion matrix of story evaluation."""
|
|
1227
1226
|
from sklearn.metrics import confusion_matrix
|
|
1228
1227
|
from sklearn.utils.multiclass import unique_labels
|
|
1228
|
+
|
|
1229
1229
|
from rasa.utils.plotting import plot_confusion_matrix
|
|
1230
1230
|
|
|
1231
1231
|
confusion_matrix_filename = CONFUSION_MATRIX_STORIES_FILE
|
rasa/core/tracker_store.py
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
import contextlib
|
|
3
4
|
import itertools
|
|
4
5
|
import json
|
|
5
6
|
import logging
|
|
6
7
|
import os
|
|
7
8
|
from inspect import isawaitable, iscoroutinefunction
|
|
8
|
-
|
|
9
9
|
from time import sleep
|
|
10
10
|
from typing import (
|
|
11
|
+
TYPE_CHECKING,
|
|
11
12
|
Any,
|
|
12
13
|
Callable,
|
|
13
14
|
Dict,
|
|
15
|
+
Generator,
|
|
16
|
+
Generic,
|
|
14
17
|
Iterable,
|
|
15
18
|
Iterator,
|
|
16
19
|
List,
|
|
17
20
|
Optional,
|
|
18
21
|
Text,
|
|
19
|
-
Union,
|
|
20
|
-
TYPE_CHECKING,
|
|
21
|
-
Generator,
|
|
22
22
|
TypeVar,
|
|
23
|
-
|
|
23
|
+
Union,
|
|
24
24
|
)
|
|
25
25
|
|
|
26
|
+
import sqlalchemy as sa
|
|
26
27
|
from boto3.dynamodb.conditions import Key
|
|
27
28
|
from pymongo.collection import Collection
|
|
28
29
|
|
|
@@ -30,17 +31,17 @@ import rasa.shared.utils.cli
|
|
|
30
31
|
import rasa.shared.utils.common
|
|
31
32
|
import rasa.shared.utils.io
|
|
32
33
|
import rasa.utils.json_utils
|
|
33
|
-
from rasa.plugin import plugin_manager
|
|
34
|
-
from rasa.shared.core.constants import ACTION_LISTEN_NAME
|
|
35
34
|
from rasa.core.brokers.broker import EventBroker
|
|
36
35
|
from rasa.core.constants import (
|
|
37
|
-
POSTGRESQL_SCHEMA,
|
|
38
36
|
POSTGRESQL_MAX_OVERFLOW,
|
|
39
37
|
POSTGRESQL_POOL_SIZE,
|
|
38
|
+
POSTGRESQL_SCHEMA,
|
|
40
39
|
)
|
|
40
|
+
from rasa.plugin import plugin_manager
|
|
41
|
+
from rasa.shared.core.constants import ACTION_LISTEN_NAME
|
|
41
42
|
from rasa.shared.core.conversation import Dialogue
|
|
42
43
|
from rasa.shared.core.domain import Domain
|
|
43
|
-
from rasa.shared.core.events import
|
|
44
|
+
from rasa.shared.core.events import Event, SessionStarted
|
|
44
45
|
from rasa.shared.core.trackers import (
|
|
45
46
|
ActionExecuted,
|
|
46
47
|
DialogueStateTracker,
|
|
@@ -50,14 +51,13 @@ from rasa.shared.core.trackers import (
|
|
|
50
51
|
from rasa.shared.exceptions import ConnectionException, RasaException
|
|
51
52
|
from rasa.shared.nlu.constants import INTENT_NAME_KEY
|
|
52
53
|
from rasa.utils.endpoints import EndpointConfig
|
|
53
|
-
import sqlalchemy as sa
|
|
54
54
|
|
|
55
55
|
if TYPE_CHECKING:
|
|
56
56
|
import boto3.resources.factory.dynamodb.Table
|
|
57
|
-
from sqlalchemy.engine.url import URL
|
|
58
|
-
from sqlalchemy.engine.base import Engine
|
|
59
|
-
from sqlalchemy.orm import Session, Query
|
|
60
57
|
from sqlalchemy import Sequence
|
|
58
|
+
from sqlalchemy.engine.base import Engine
|
|
59
|
+
from sqlalchemy.engine.url import URL
|
|
60
|
+
from sqlalchemy.orm import Query, Session
|
|
61
61
|
|
|
62
62
|
logger = logging.getLogger(__name__)
|
|
63
63
|
|
|
@@ -158,9 +158,9 @@ class TrackerStore:
|
|
|
158
158
|
if isinstance(obj, TrackerStore):
|
|
159
159
|
return obj
|
|
160
160
|
|
|
161
|
-
from botocore.exceptions import BotoCoreError
|
|
162
161
|
import pymongo.errors
|
|
163
162
|
import sqlalchemy.exc
|
|
163
|
+
from botocore.exceptions import BotoCoreError
|
|
164
164
|
|
|
165
165
|
try:
|
|
166
166
|
_tracker_store = plugin_manager().hook.create_tracker_store(
|
|
@@ -799,8 +799,8 @@ class MongoTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
799
799
|
event_broker: Optional[EventBroker] = None,
|
|
800
800
|
**kwargs: Dict[Text, Any],
|
|
801
801
|
) -> None:
|
|
802
|
-
from pymongo.database import Database
|
|
803
802
|
from pymongo import MongoClient
|
|
803
|
+
from pymongo.database import Database
|
|
804
804
|
|
|
805
805
|
self.client: MongoClient = MongoClient(
|
|
806
806
|
host,
|
rasa/core/train.py
CHANGED
rasa/core/training/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import TYPE_CHECKING, List, Optional, Text, Union
|
|
2
2
|
|
|
3
3
|
if TYPE_CHECKING:
|
|
4
4
|
from rasa.shared.core.domain import Domain
|
|
@@ -21,8 +21,8 @@ def extract_story_graph(
|
|
|
21
21
|
Returns:
|
|
22
22
|
The loaded training data as graph.
|
|
23
23
|
"""
|
|
24
|
-
from rasa.shared.core.training_data.structures import StoryGraph
|
|
25
24
|
import rasa.shared.core.training_data.loading as core_loading
|
|
25
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
26
26
|
|
|
27
27
|
story_steps = core_loading.load_data_from_resource(
|
|
28
28
|
resource_name, domain, exclusion_percentage=exclusion_percentage
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
from typing import Text
|
|
3
3
|
|
|
4
|
+
from rasa.shared.constants import UTTER_PREFIX
|
|
4
5
|
from rasa.shared.core.domain import Domain, InvalidDomain
|
|
5
6
|
from rasa.shared.core.events import ActionExecuted
|
|
6
7
|
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
@@ -9,10 +10,8 @@ from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
|
9
10
|
from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
|
|
10
11
|
YAMLStoryWriter,
|
|
11
12
|
)
|
|
12
|
-
from rasa.shared.constants import UTTER_PREFIX
|
|
13
13
|
from rasa.utils.converter import TrainingDataConverter
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
OBSOLETE_RESPOND_PREFIX = "respond_"
|
|
17
16
|
|
|
18
17
|
|