rasa-pro 3.12.0.dev2__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 -119
- 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 -26
- 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 -79
- 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.dev2.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/_configs/azure_entra_id_client_creds.py +0 -40
- rasa/shared/providers/_configs/azure_entra_id_config.py +0 -533
- rasa/shared/providers/_configs/oauth_config.py +0 -33
- rasa/shared/providers/constants.py +0 -6
- rasa_pro-3.12.0.dev2.dist-info/RECORD +0 -793
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/entry_points.txt +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from typing import TYPE_CHECKING
|
|
3
2
|
|
|
4
3
|
from dataclasses import dataclass
|
|
5
4
|
from typing import (
|
|
5
|
+
TYPE_CHECKING,
|
|
6
6
|
Any,
|
|
7
7
|
Dict,
|
|
8
8
|
Generator,
|
|
@@ -10,6 +10,7 @@ from typing import (
|
|
|
10
10
|
Set,
|
|
11
11
|
Text,
|
|
12
12
|
)
|
|
13
|
+
|
|
13
14
|
import structlog
|
|
14
15
|
|
|
15
16
|
from rasa.shared.exceptions import RasaException
|
|
@@ -20,10 +21,11 @@ if TYPE_CHECKING:
|
|
|
20
21
|
structlogger = structlog.get_logger()
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
def step_from_json(data: Dict[Text, Any]) -> FlowStep:
|
|
24
|
+
def step_from_json(flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
24
25
|
"""Create a specific FlowStep from serialized data.
|
|
25
26
|
|
|
26
27
|
Args:
|
|
28
|
+
flow_id: The id of the flow that contains the step.
|
|
27
29
|
data: data for a specific FlowStep object in a serialized data format.
|
|
28
30
|
|
|
29
31
|
Returns:
|
|
@@ -31,25 +33,25 @@ def step_from_json(data: Dict[Text, Any]) -> FlowStep:
|
|
|
31
33
|
"""
|
|
32
34
|
from rasa.shared.core.flows.steps import (
|
|
33
35
|
ActionFlowStep,
|
|
36
|
+
CallFlowStep,
|
|
34
37
|
CollectInformationFlowStep,
|
|
35
38
|
LinkFlowStep,
|
|
36
|
-
SetSlotsFlowStep,
|
|
37
39
|
NoOperationFlowStep,
|
|
38
|
-
|
|
40
|
+
SetSlotsFlowStep,
|
|
39
41
|
)
|
|
40
42
|
|
|
41
43
|
if "action" in data:
|
|
42
|
-
return ActionFlowStep.from_json(data)
|
|
44
|
+
return ActionFlowStep.from_json(flow_id, data)
|
|
43
45
|
if "collect" in data:
|
|
44
|
-
return CollectInformationFlowStep.from_json(data)
|
|
46
|
+
return CollectInformationFlowStep.from_json(flow_id, data)
|
|
45
47
|
if "link" in data:
|
|
46
|
-
return LinkFlowStep.from_json(data)
|
|
48
|
+
return LinkFlowStep.from_json(flow_id, data)
|
|
47
49
|
if "call" in data:
|
|
48
|
-
return CallFlowStep.from_json(data)
|
|
50
|
+
return CallFlowStep.from_json(flow_id, data)
|
|
49
51
|
if "set_slots" in data:
|
|
50
|
-
return SetSlotsFlowStep.from_json(data)
|
|
52
|
+
return SetSlotsFlowStep.from_json(flow_id, data)
|
|
51
53
|
if "noop" in data:
|
|
52
|
-
return NoOperationFlowStep.from_json(data)
|
|
54
|
+
return NoOperationFlowStep.from_json(flow_id, data)
|
|
53
55
|
raise RasaException(f"Failed to parse step from json. Unknown type for {data}.")
|
|
54
56
|
|
|
55
57
|
|
|
@@ -67,12 +69,15 @@ class FlowStep:
|
|
|
67
69
|
"""Additional, unstructured information about this flow step."""
|
|
68
70
|
next: FlowStepLinks
|
|
69
71
|
"""The next steps of the flow step."""
|
|
72
|
+
flow_id: Text
|
|
73
|
+
"""The id of the flow that contains the step."""
|
|
70
74
|
|
|
71
75
|
@classmethod
|
|
72
|
-
def from_json(cls, data: Dict[Text, Any]) -> FlowStep:
|
|
76
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
73
77
|
"""Create a FlowStep object from data in a serialized format.
|
|
74
78
|
|
|
75
79
|
Args:
|
|
80
|
+
flow_id: The id of the flow that contains the step.
|
|
76
81
|
data: The data for a FlowStep object in a serialized format.
|
|
77
82
|
|
|
78
83
|
Returns:
|
|
@@ -87,7 +92,8 @@ class FlowStep:
|
|
|
87
92
|
custom_id=data.get("id"),
|
|
88
93
|
description=data.get("description"),
|
|
89
94
|
metadata=data.get("metadata", {}),
|
|
90
|
-
next=FlowStepLinks.from_json(data.get("next", [])),
|
|
95
|
+
next=FlowStepLinks.from_json(flow_id, data.get("next", [])),
|
|
96
|
+
flow_id=flow_id,
|
|
91
97
|
)
|
|
92
98
|
|
|
93
99
|
def does_allow_for_next_step(self) -> bool:
|
|
@@ -125,7 +131,7 @@ class FlowStep:
|
|
|
125
131
|
@property
|
|
126
132
|
def default_id(self) -> str:
|
|
127
133
|
"""Returns the default id of the flow step."""
|
|
128
|
-
return f"{self.idx}_{self.default_id_postfix}"
|
|
134
|
+
return f"{self.flow_id}_{self.idx}_{self.default_id_postfix}"
|
|
129
135
|
|
|
130
136
|
@property
|
|
131
137
|
def default_id_postfix(self) -> str:
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from typing import TYPE_CHECKING
|
|
3
2
|
|
|
4
3
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
4
|
+
from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Text, Union
|
|
6
5
|
|
|
7
6
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
8
7
|
|
|
@@ -17,10 +16,13 @@ class FlowStepLinks:
|
|
|
17
16
|
links: List[FlowStepLink]
|
|
18
17
|
|
|
19
18
|
@staticmethod
|
|
20
|
-
def from_json(
|
|
19
|
+
def from_json(
|
|
20
|
+
flow_id: Text, data: Union[str, List[Dict[Text, Any]]]
|
|
21
|
+
) -> FlowStepLinks:
|
|
21
22
|
"""Create a FlowStepLinks object from a serialized data format.
|
|
22
23
|
|
|
23
24
|
Args:
|
|
25
|
+
flow_id: The id of the flow that contains the step.
|
|
24
26
|
data: data for a FlowStepLinks object in a serialized format.
|
|
25
27
|
|
|
26
28
|
Returns:
|
|
@@ -30,11 +32,11 @@ class FlowStepLinks:
|
|
|
30
32
|
return FlowStepLinks(links=[])
|
|
31
33
|
|
|
32
34
|
if isinstance(data, str):
|
|
33
|
-
return FlowStepLinks(links=[StaticFlowStepLink.from_json(data)])
|
|
35
|
+
return FlowStepLinks(links=[StaticFlowStepLink.from_json(flow_id, data)])
|
|
34
36
|
|
|
35
37
|
return FlowStepLinks(
|
|
36
38
|
links=[
|
|
37
|
-
BranchingFlowStepLink.from_json(link_config)
|
|
39
|
+
BranchingFlowStepLink.from_json(flow_id, link_config)
|
|
38
40
|
for link_config in data
|
|
39
41
|
if link_config
|
|
40
42
|
]
|
|
@@ -94,10 +96,11 @@ class FlowStepLink:
|
|
|
94
96
|
raise NotImplementedError()
|
|
95
97
|
|
|
96
98
|
@staticmethod
|
|
97
|
-
def from_json(data: Any) -> FlowStepLink:
|
|
99
|
+
def from_json(flow_id: Text, data: Any) -> FlowStepLink:
|
|
98
100
|
"""Create a FlowStepLink object from a serialized data format.
|
|
99
101
|
|
|
100
102
|
Args:
|
|
103
|
+
flow_id: The id of the flow that contains the step.
|
|
101
104
|
data: data for a FlowStepLink object in a serialized format.
|
|
102
105
|
|
|
103
106
|
Returns:
|
|
@@ -163,19 +166,20 @@ class BranchingFlowStepLink(FlowStepLink):
|
|
|
163
166
|
return self.target_reference
|
|
164
167
|
|
|
165
168
|
@staticmethod
|
|
166
|
-
def from_json(data: Dict[Text, Any]) -> BranchingFlowStepLink:
|
|
169
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> BranchingFlowStepLink:
|
|
167
170
|
"""Create a BranchingFlowStepLink object from a serialized data format.
|
|
168
171
|
|
|
169
172
|
Args:
|
|
173
|
+
flow_id: The id of the flow that contains the step.
|
|
170
174
|
data: data for a BranchingFlowStepLink object in a serialized format.
|
|
171
175
|
|
|
172
176
|
Returns:
|
|
173
177
|
a BranchingFlowStepLink object.
|
|
174
178
|
"""
|
|
175
179
|
if "if" in data:
|
|
176
|
-
return IfFlowStepLink.from_json(data)
|
|
180
|
+
return IfFlowStepLink.from_json(flow_id, data)
|
|
177
181
|
else:
|
|
178
|
-
return ElseFlowStepLink.from_json(data)
|
|
182
|
+
return ElseFlowStepLink.from_json(flow_id, data)
|
|
179
183
|
|
|
180
184
|
def depth_in_tree(self) -> int:
|
|
181
185
|
"""Returns the depth in the tree."""
|
|
@@ -198,10 +202,11 @@ class IfFlowStepLink(BranchingFlowStepLink):
|
|
|
198
202
|
"""The condition that needs to be satisfied to follow this flow step link."""
|
|
199
203
|
|
|
200
204
|
@staticmethod
|
|
201
|
-
def from_json(data: Dict[Text, Any]) -> IfFlowStepLink:
|
|
205
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> IfFlowStepLink:
|
|
202
206
|
"""Create an IfFlowStepLink object from a serialized data format.
|
|
203
207
|
|
|
204
208
|
Args:
|
|
209
|
+
flow_id: The id of the flow that contains the step.
|
|
205
210
|
data: data for a IfFlowStepLink in a serialized format.
|
|
206
211
|
|
|
207
212
|
Returns:
|
|
@@ -213,7 +218,7 @@ class IfFlowStepLink(BranchingFlowStepLink):
|
|
|
213
218
|
return IfFlowStepLink(target_reference=data["then"], condition=data["if"])
|
|
214
219
|
else:
|
|
215
220
|
return IfFlowStepLink(
|
|
216
|
-
target_reference=FlowStepSequence.from_json(data["then"]),
|
|
221
|
+
target_reference=FlowStepSequence.from_json(flow_id, data["then"]),
|
|
217
222
|
condition=data["if"],
|
|
218
223
|
)
|
|
219
224
|
|
|
@@ -238,10 +243,11 @@ class ElseFlowStepLink(BranchingFlowStepLink):
|
|
|
238
243
|
"""A flow step link that is taken when conditional flow step links weren't taken."""
|
|
239
244
|
|
|
240
245
|
@staticmethod
|
|
241
|
-
def from_json(data: Dict[Text, Any]) -> ElseFlowStepLink:
|
|
246
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> ElseFlowStepLink:
|
|
242
247
|
"""Create an ElseFlowStepLink object from serialized data.
|
|
243
248
|
|
|
244
249
|
Args:
|
|
250
|
+
flow_id: The id of the flow that contains the step.
|
|
245
251
|
data: data for an ElseFlowStepLink in a serialized format
|
|
246
252
|
|
|
247
253
|
Returns:
|
|
@@ -253,7 +259,7 @@ class ElseFlowStepLink(BranchingFlowStepLink):
|
|
|
253
259
|
return ElseFlowStepLink(target_reference=data["else"])
|
|
254
260
|
else:
|
|
255
261
|
return ElseFlowStepLink(
|
|
256
|
-
target_reference=FlowStepSequence.from_json(data["else"])
|
|
262
|
+
target_reference=FlowStepSequence.from_json(flow_id, data["else"])
|
|
257
263
|
)
|
|
258
264
|
|
|
259
265
|
def as_json(self) -> Dict[Text, Any]:
|
|
@@ -279,10 +285,11 @@ class StaticFlowStepLink(FlowStepLink):
|
|
|
279
285
|
"""The id of the linked step."""
|
|
280
286
|
|
|
281
287
|
@staticmethod
|
|
282
|
-
def from_json(data: Text) -> StaticFlowStepLink:
|
|
288
|
+
def from_json(flow_id: Text, data: Text) -> StaticFlowStepLink:
|
|
283
289
|
"""Create a StaticFlowStepLink from serialized data
|
|
284
290
|
|
|
285
291
|
Args:
|
|
292
|
+
flow_id: The id of the flow that contains the step.
|
|
286
293
|
data: data for a StaticFlowStepLink in a serialized format
|
|
287
294
|
|
|
288
295
|
Returns:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, List, Optional, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.core.flows.flow_step import FlowStep, step_from_json
|
|
7
7
|
from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
@@ -14,17 +14,19 @@ class FlowStepSequence:
|
|
|
14
14
|
child_steps: List[FlowStep]
|
|
15
15
|
|
|
16
16
|
@staticmethod
|
|
17
|
-
def from_json(data: List[Dict[Text, Any]]) -> FlowStepSequence:
|
|
17
|
+
def from_json(flow_id: Text, data: List[Dict[Text, Any]]) -> FlowStepSequence:
|
|
18
18
|
"""Create a FlowStepSequence object from serialized data
|
|
19
19
|
|
|
20
20
|
Args:
|
|
21
|
+
flow_id: The id of the flow that contains the step.
|
|
21
22
|
data: data for a StepSequence in a serialized format
|
|
22
23
|
|
|
23
24
|
Returns:
|
|
24
25
|
A StepSequence object including its flow step objects.
|
|
25
26
|
"""
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
flow_steps: List[FlowStep] = [
|
|
28
|
+
step_from_json(flow_id, config) for config in data
|
|
29
|
+
]
|
|
28
30
|
|
|
29
31
|
return FlowStepSequence(child_steps=flow_steps)
|
|
30
32
|
|
|
@@ -2,21 +2,21 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Any, Dict, Generator, List, Optional, Set, Text, Union
|
|
6
6
|
|
|
7
7
|
import rasa.shared.utils.io
|
|
8
8
|
from rasa.shared.core.flows import Flow
|
|
9
9
|
from rasa.shared.core.flows.flow_path import FlowPathsList
|
|
10
10
|
from rasa.shared.core.flows.validation import (
|
|
11
|
+
DuplicatedFlowIdException,
|
|
12
|
+
validate_called_flows_exists,
|
|
11
13
|
validate_flow,
|
|
12
14
|
validate_link_in_call_restriction,
|
|
13
|
-
validate_called_flows_exists,
|
|
14
15
|
validate_linked_flows_exists,
|
|
15
16
|
validate_nlu_trigger,
|
|
16
17
|
validate_patterns_are_not_called_or_linked,
|
|
17
18
|
validate_patterns_are_not_calling_or_linking_other_flows,
|
|
18
19
|
validate_step_ids_are_unique,
|
|
19
|
-
DuplicatedFlowIdException,
|
|
20
20
|
)
|
|
21
21
|
from rasa.shared.core.slots import Slot
|
|
22
22
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import Any, Dict, List, Optional
|
|
3
3
|
|
|
4
4
|
from rasa.shared.exceptions import YamlException
|
|
5
5
|
from rasa.shared.nlu.constants import INTENT, INTENT_NAME_KEY, PREDICTED_CONFIDENCE_KEY
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
from .no_operation import NoOperationFlowStep
|
|
2
1
|
from .action import ActionFlowStep
|
|
2
|
+
from .call import CallFlowStep
|
|
3
3
|
from .collect import CollectInformationFlowStep
|
|
4
4
|
from .continuation import ContinueFlowStep
|
|
5
5
|
from .end import EndFlowStep
|
|
6
6
|
from .internal import InternalFlowStep
|
|
7
7
|
from .link import LinkFlowStep
|
|
8
|
+
from .no_operation import NoOperationFlowStep
|
|
8
9
|
from .set_slots import SetSlotsFlowStep
|
|
9
10
|
from .start import StartFlowStep
|
|
10
|
-
from .call import CallFlowStep
|
|
11
11
|
|
|
12
12
|
# to make ruff happy and use the imported names
|
|
13
13
|
all_steps = [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, Optional, Set, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.constants import UTTER_PREFIX
|
|
7
7
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
@@ -15,16 +15,17 @@ class ActionFlowStep(FlowStep):
|
|
|
15
15
|
"""The action of the flow step."""
|
|
16
16
|
|
|
17
17
|
@classmethod
|
|
18
|
-
def from_json(cls, data: Dict[Text, Any]) -> ActionFlowStep:
|
|
18
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> ActionFlowStep:
|
|
19
19
|
"""Create an ActionFlowStep object from serialized data
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
|
+
flow_id: The id of the flow that contains the step.
|
|
22
23
|
data: data for an ActionFlowStep object in a serialized format
|
|
23
24
|
|
|
24
25
|
Returns:
|
|
25
26
|
An ActionFlowStep object
|
|
26
27
|
"""
|
|
27
|
-
base = super().from_json(data)
|
|
28
|
+
base = super().from_json(flow_id, data)
|
|
28
29
|
return ActionFlowStep(
|
|
29
30
|
action=data["action"],
|
|
30
31
|
**base.__dict__,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import TYPE_CHECKING,
|
|
4
|
+
from typing import TYPE_CHECKING, Any, Dict, Generator, Optional, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
7
7
|
|
|
@@ -18,16 +18,17 @@ class CallFlowStep(FlowStep):
|
|
|
18
18
|
called_flow_reference: Optional["Flow"] = None
|
|
19
19
|
|
|
20
20
|
@classmethod
|
|
21
|
-
def from_json(cls, data: Dict[Text, Any]) -> CallFlowStep:
|
|
21
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> CallFlowStep:
|
|
22
22
|
"""Used to read flow steps from parsed YAML.
|
|
23
23
|
|
|
24
24
|
Args:
|
|
25
|
+
flow_id: The id of the flow that contains the step.
|
|
25
26
|
data: The parsed YAML as a dictionary.
|
|
26
27
|
|
|
27
28
|
Returns:
|
|
28
29
|
The parsed flow step.
|
|
29
30
|
"""
|
|
30
|
-
base = super().from_json(data)
|
|
31
|
+
base = super().from_json(flow_id, data)
|
|
31
32
|
return CallFlowStep(
|
|
32
33
|
call=data.get("call", ""),
|
|
33
34
|
**base.__dict__,
|
|
@@ -47,7 +48,6 @@ class CallFlowStep(FlowStep):
|
|
|
47
48
|
self, should_resolve_calls: bool = True
|
|
48
49
|
) -> Generator[FlowStep, None, None]:
|
|
49
50
|
"""Returns the steps in the tree of the flow step."""
|
|
50
|
-
|
|
51
51
|
yield self
|
|
52
52
|
|
|
53
53
|
if should_resolve_calls:
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, List, Set, Text
|
|
5
5
|
|
|
6
|
-
from rasa.shared.constants import
|
|
6
|
+
from rasa.shared.constants import ACTION_ASK_PREFIX, UTTER_ASK_PREFIX
|
|
7
7
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
8
8
|
|
|
9
9
|
|
|
@@ -61,16 +61,19 @@ class CollectInformationFlowStep(FlowStep):
|
|
|
61
61
|
"""Whether to reset the slot value at the end of the flow."""
|
|
62
62
|
|
|
63
63
|
@classmethod
|
|
64
|
-
def from_json(
|
|
64
|
+
def from_json(
|
|
65
|
+
cls, flow_id: Text, data: Dict[str, Any]
|
|
66
|
+
) -> CollectInformationFlowStep:
|
|
65
67
|
"""Create a CollectInformationFlowStep object from serialized data.
|
|
66
68
|
|
|
67
69
|
Args:
|
|
70
|
+
flow_id: The id of the flow that contains the step.
|
|
68
71
|
data: data for a CollectInformationFlowStep object in a serialized format
|
|
69
72
|
|
|
70
73
|
Returns:
|
|
71
74
|
A CollectInformationFlowStep object
|
|
72
75
|
"""
|
|
73
|
-
base = super().from_json(data)
|
|
76
|
+
base = super().from_json(flow_id, data)
|
|
74
77
|
return CollectInformationFlowStep(
|
|
75
78
|
collect=data["collect"],
|
|
76
79
|
utter=data.get("utter", f"{UTTER_ASK_PREFIX}{data['collect']}"),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Text
|
|
4
5
|
|
|
5
6
|
from rasa.shared.core.flows.flow_step_links import FlowStepLinks, StaticFlowStepLink
|
|
6
7
|
from rasa.shared.core.flows.steps.constants import (
|
|
@@ -14,7 +15,7 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
14
15
|
class ContinueFlowStep(InternalFlowStep):
|
|
15
16
|
"""A flow step that is dynamically introduced to jump to other flow steps."""
|
|
16
17
|
|
|
17
|
-
def __init__(self, target_step_id: str) -> None:
|
|
18
|
+
def __init__(self, flow_id: Text, target_step_id: str) -> None:
|
|
18
19
|
"""Initializes a continue-step flow step."""
|
|
19
20
|
super().__init__(
|
|
20
21
|
idx=UNSET_FLOW_STEP_ID,
|
|
@@ -29,6 +30,7 @@ class ContinueFlowStep(InternalFlowStep):
|
|
|
29
30
|
# This is why the continue step links to the step that should be
|
|
30
31
|
# continued.
|
|
31
32
|
next=FlowStepLinks(links=[StaticFlowStepLink(target_step_id)]),
|
|
33
|
+
flow_id=flow_id,
|
|
32
34
|
)
|
|
33
35
|
|
|
34
36
|
@staticmethod
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Text
|
|
4
5
|
|
|
5
6
|
from rasa.shared.core.flows.flow_step_links import FlowStepLinks
|
|
6
7
|
from rasa.shared.core.flows.steps.constants import END_STEP, UNSET_FLOW_STEP_ID
|
|
@@ -11,7 +12,7 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
11
12
|
class EndFlowStep(InternalFlowStep):
|
|
12
13
|
"""A dynamically added flow step that marks the end of a flow."""
|
|
13
14
|
|
|
14
|
-
def __init__(self) -> None:
|
|
15
|
+
def __init__(self, flow_id: Text) -> None:
|
|
15
16
|
"""Initializes an end flow step."""
|
|
16
17
|
super().__init__(
|
|
17
18
|
idx=UNSET_FLOW_STEP_ID,
|
|
@@ -19,4 +20,5 @@ class EndFlowStep(InternalFlowStep):
|
|
|
19
20
|
description=None,
|
|
20
21
|
metadata={},
|
|
21
22
|
next=FlowStepLinks(links=[]),
|
|
23
|
+
flow_id=flow_id,
|
|
22
24
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Dict, Text
|
|
3
|
+
from typing import Any, Dict, Text
|
|
4
4
|
|
|
5
5
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
6
6
|
|
|
@@ -13,10 +13,11 @@ class InternalFlowStep(FlowStep):
|
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
@classmethod
|
|
16
|
-
def from_json(cls, data: Dict[Text, Any]) -> InternalFlowStep:
|
|
16
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> InternalFlowStep:
|
|
17
17
|
"""Create an InternalFlowStep object from serialized data.
|
|
18
18
|
|
|
19
19
|
Args:
|
|
20
|
+
flow_id: The id of the flow that contains the step.
|
|
20
21
|
data: data for an InternalFlowStep in a serialized format
|
|
21
22
|
|
|
22
23
|
Returns:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
7
7
|
|
|
@@ -16,20 +16,22 @@ class LinkFlowStep(FlowStep):
|
|
|
16
16
|
def does_allow_for_next_step(self) -> bool:
|
|
17
17
|
"""Returns whether this step allows for following steps.
|
|
18
18
|
|
|
19
|
-
Link steps need to be terminal steps, so can't have a next step.
|
|
19
|
+
Link steps need to be terminal steps, so can't have a next step.
|
|
20
|
+
"""
|
|
20
21
|
return False
|
|
21
22
|
|
|
22
23
|
@classmethod
|
|
23
|
-
def from_json(cls, data: Dict[Text, Any]) -> LinkFlowStep:
|
|
24
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> LinkFlowStep:
|
|
24
25
|
"""Create a LinkFlowStep from serialized data
|
|
25
26
|
|
|
26
27
|
Args:
|
|
28
|
+
flow_id: The id of the flow that contains the step.
|
|
27
29
|
data: data for a LinkFlowStep in a serialized format
|
|
28
30
|
|
|
29
31
|
Returns:
|
|
30
32
|
a LinkFlowStep object
|
|
31
33
|
"""
|
|
32
|
-
base = super().from_json(data)
|
|
34
|
+
base = super().from_json(flow_id, data)
|
|
33
35
|
return LinkFlowStep(
|
|
34
36
|
link=data["link"],
|
|
35
37
|
**base.__dict__,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from dataclasses import dataclass
|
|
3
2
|
|
|
4
|
-
from
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Dict, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
7
7
|
|
|
@@ -11,22 +11,24 @@ class NoOperationFlowStep(FlowStep):
|
|
|
11
11
|
"""A step that doesn't do a thing.
|
|
12
12
|
|
|
13
13
|
This is NOT a branching step (but it can branch - but in addition to that
|
|
14
|
-
it also does nothing).
|
|
14
|
+
it also does nothing).
|
|
15
|
+
"""
|
|
15
16
|
|
|
16
17
|
noop: Any
|
|
17
18
|
"""The id of the flow that should be started subsequently."""
|
|
18
19
|
|
|
19
20
|
@classmethod
|
|
20
|
-
def from_json(cls, data: Dict[Text, Any]) -> NoOperationFlowStep:
|
|
21
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> NoOperationFlowStep:
|
|
21
22
|
"""Create a NoOperationFlowStep from serialized data
|
|
22
23
|
|
|
23
24
|
Args:
|
|
25
|
+
flow_id: The id of the flow that contains the step.
|
|
24
26
|
data: data for a NoOperationFlowStep in a serialized format
|
|
25
27
|
|
|
26
28
|
Returns:
|
|
27
29
|
a NoOperationFlowStep object
|
|
28
30
|
"""
|
|
29
|
-
base = super().from_json(data)
|
|
31
|
+
base = super().from_json(flow_id, data)
|
|
30
32
|
return NoOperationFlowStep(
|
|
31
33
|
noop=data["noop"],
|
|
32
34
|
**base.__dict__,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, List, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
7
7
|
|
|
@@ -14,16 +14,17 @@ class SetSlotsFlowStep(FlowStep):
|
|
|
14
14
|
"""Slots and their values to set in the flow step."""
|
|
15
15
|
|
|
16
16
|
@classmethod
|
|
17
|
-
def from_json(cls, data: Dict[Text, Any]) -> SetSlotsFlowStep:
|
|
17
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> SetSlotsFlowStep:
|
|
18
18
|
"""Create a SetSlotsFlowStep from serialized data
|
|
19
19
|
|
|
20
20
|
Args:
|
|
21
|
+
flow_id: The id of the flow that contains the step.
|
|
21
22
|
data: data for a SetSlotsFlowStep in a serialized format
|
|
22
23
|
|
|
23
24
|
Returns:
|
|
24
25
|
a SetSlotsFlowStep object
|
|
25
26
|
"""
|
|
26
|
-
base = super().from_json(data)
|
|
27
|
+
base = super().from_json(flow_id, data)
|
|
27
28
|
slots = [
|
|
28
29
|
{"key": k, "value": v}
|
|
29
30
|
for slot_sets in data["set_slots"]
|
|
@@ -15,10 +15,11 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
15
15
|
class StartFlowStep(InternalFlowStep):
|
|
16
16
|
"""A dynamically added flow step that represents the beginning of a flow."""
|
|
17
17
|
|
|
18
|
-
def __init__(self, start_step_id: Text) -> None:
|
|
18
|
+
def __init__(self, flow_id: Text, start_step_id: Text) -> None:
|
|
19
19
|
"""Initializes a start flow step.
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
|
+
flow_id: The id of the flow that contains the step
|
|
22
23
|
start_step_id: The step id of the first step of the flow
|
|
23
24
|
"""
|
|
24
25
|
super().__init__(
|
|
@@ -27,4 +28,5 @@ class StartFlowStep(InternalFlowStep):
|
|
|
27
28
|
description=None,
|
|
28
29
|
metadata={},
|
|
29
30
|
next=FlowStepLinks(links=[StaticFlowStepLink(start_step_id)]),
|
|
31
|
+
flow_id=flow_id,
|
|
30
32
|
)
|
rasa/shared/core/flows/utils.py
CHANGED
|
@@ -4,13 +4,11 @@ import re
|
|
|
4
4
|
import typing
|
|
5
5
|
from collections import defaultdict
|
|
6
6
|
from dataclasses import dataclass
|
|
7
|
-
from typing import Optional, Set, Text
|
|
7
|
+
from typing import List, Optional, Set, Text
|
|
8
8
|
|
|
9
9
|
from rasa.shared.constants import (
|
|
10
10
|
RASA_DEFAULT_FLOW_PATTERN_PREFIX,
|
|
11
11
|
RASA_PATTERN_HUMAN_HANDOFF,
|
|
12
|
-
)
|
|
13
|
-
from rasa.shared.constants import (
|
|
14
12
|
RASA_PATTERN_INTERNAL_ERROR,
|
|
15
13
|
)
|
|
16
14
|
from rasa.shared.core.flows.flow import Flow
|
|
@@ -19,8 +17,8 @@ from rasa.shared.core.flows.flow_step import (
|
|
|
19
17
|
)
|
|
20
18
|
from rasa.shared.core.flows.flow_step_links import (
|
|
21
19
|
BranchingFlowStepLink,
|
|
22
|
-
IfFlowStepLink,
|
|
23
20
|
ElseFlowStepLink,
|
|
21
|
+
IfFlowStepLink,
|
|
24
22
|
)
|
|
25
23
|
from rasa.shared.core.flows.flow_step_sequence import FlowStepSequence
|
|
26
24
|
from rasa.shared.core.flows.steps.call import CallFlowStep
|
|
@@ -29,9 +27,9 @@ from rasa.shared.core.flows.steps.constants import CONTINUE_STEP_PREFIX, DEFAULT
|
|
|
29
27
|
from rasa.shared.core.flows.steps.link import LinkFlowStep
|
|
30
28
|
from rasa.shared.core.flows.steps.set_slots import SetSlotsFlowStep
|
|
31
29
|
from rasa.shared.core.flows.utils import (
|
|
32
|
-
warn_deprecated_collect_step_config,
|
|
33
30
|
get_duplicate_slot_persistence_config_error_message,
|
|
34
31
|
get_invalid_slot_persistence_config_error_message,
|
|
32
|
+
warn_deprecated_collect_step_config,
|
|
35
33
|
)
|
|
36
34
|
from rasa.shared.exceptions import RasaException
|
|
37
35
|
|