rasa-pro 3.12.0.dev2__py3-none-any.whl → 3.12.0.dev4__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 +121 -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 +291 -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 -11
- 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 +54 -0
- rasa/tracing/instrumentation/instrumentation.py +25 -5
- 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.dev4.dist-info}/METADATA +9 -10
- rasa_pro-3.12.0.dev4.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.dev4.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/entry_points.txt +0 -0
rasa/__main__.py
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import argparse
|
|
2
|
-
from typing import Optional, List
|
|
3
|
-
import structlog
|
|
4
2
|
import os
|
|
5
3
|
import platform
|
|
6
4
|
import sys
|
|
5
|
+
from typing import List, Optional
|
|
7
6
|
|
|
7
|
+
import structlog
|
|
8
8
|
from rasa_sdk import __version__ as rasa_sdk_version
|
|
9
|
-
from rasa.constants import MINIMUM_COMPATIBLE_VERSION
|
|
10
|
-
from rasa.utils.log_utils import configure_structlog
|
|
11
9
|
|
|
12
10
|
import rasa.telemetry
|
|
13
11
|
import rasa.utils.io
|
|
@@ -15,8 +13,10 @@ import rasa.utils.tensorflow.environment as tf_env
|
|
|
15
13
|
from rasa import version
|
|
16
14
|
from rasa.cli import (
|
|
17
15
|
data,
|
|
16
|
+
evaluate,
|
|
18
17
|
export,
|
|
19
18
|
interactive,
|
|
19
|
+
llm_fine_tuning,
|
|
20
20
|
run,
|
|
21
21
|
scaffold,
|
|
22
22
|
shell,
|
|
@@ -25,18 +25,18 @@ from rasa.cli import (
|
|
|
25
25
|
train,
|
|
26
26
|
visualize,
|
|
27
27
|
x,
|
|
28
|
-
evaluate,
|
|
29
|
-
llm_fine_tuning,
|
|
30
28
|
)
|
|
31
29
|
from rasa.cli.arguments.default_arguments import add_logging_options
|
|
32
30
|
from rasa.cli.utils import (
|
|
31
|
+
check_if_studio_command,
|
|
33
32
|
parse_last_positional_argument_as_model_path,
|
|
34
33
|
warn_if_rasa_plus_package_installed,
|
|
35
|
-
check_if_studio_command,
|
|
36
34
|
)
|
|
35
|
+
from rasa.constants import MINIMUM_COMPATIBLE_VERSION
|
|
37
36
|
from rasa.plugin import plugin_manager
|
|
38
37
|
from rasa.shared.exceptions import RasaException
|
|
39
38
|
from rasa.utils.common import configure_logging_and_warnings
|
|
39
|
+
from rasa.utils.log_utils import configure_structlog
|
|
40
40
|
|
|
41
41
|
structlogger = structlog.get_logger()
|
|
42
42
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import List, Optional, Text
|
|
2
2
|
|
|
3
3
|
import pycountry
|
|
4
|
-
from rasa.shared.exceptions import RasaException
|
|
5
4
|
|
|
6
5
|
from rasa.anonymization.anonymization_rule_executor import (
|
|
7
6
|
AnonymizationRule,
|
|
@@ -11,6 +10,7 @@ from rasa.anonymization.utils import (
|
|
|
11
10
|
read_endpoint_config,
|
|
12
11
|
validate_anonymization_yaml,
|
|
13
12
|
)
|
|
13
|
+
from rasa.shared.exceptions import RasaException
|
|
14
14
|
|
|
15
15
|
KEY_ANONYMIZATION_RULES = "anonymization"
|
|
16
16
|
|
|
@@ -7,9 +7,6 @@ import queue
|
|
|
7
7
|
from typing import Any, Dict, List, Optional, Text
|
|
8
8
|
|
|
9
9
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
10
|
-
from rasa.core.brokers.kafka import KafkaEventBroker
|
|
11
|
-
from rasa.shared.core.events import Event
|
|
12
|
-
from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
|
|
13
10
|
|
|
14
11
|
from rasa.anonymization.anonymisation_rule_yaml_reader import (
|
|
15
12
|
AnonymizationRulesYamlReader,
|
|
@@ -18,6 +15,9 @@ from rasa.anonymization.anonymization_rule_executor import AnonymizationRuleList
|
|
|
18
15
|
from rasa.anonymization.anonymization_rule_orchestrator import (
|
|
19
16
|
AnonymizationRuleOrchestrator,
|
|
20
17
|
)
|
|
18
|
+
from rasa.core.brokers.kafka import KafkaEventBroker
|
|
19
|
+
from rasa.shared.core.events import Event
|
|
20
|
+
from rasa.utils.endpoints import EndpointConfig, read_endpoint_config
|
|
21
21
|
from rasa.utils.singleton import Singleton
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
@@ -12,8 +12,8 @@ from presidio_analyzer.nlp_engine import (
|
|
|
12
12
|
)
|
|
13
13
|
from presidio_anonymizer import AnonymizerEngine
|
|
14
14
|
from presidio_anonymizer.entities import OperatorConfig
|
|
15
|
-
from rasa.shared.exceptions import RasaException
|
|
16
15
|
|
|
16
|
+
from rasa.shared.exceptions import RasaException
|
|
17
17
|
from rasa.utils.singleton import Singleton
|
|
18
18
|
|
|
19
19
|
if typing.TYPE_CHECKING:
|
|
@@ -3,13 +3,12 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
from typing import Any, Dict, List, Optional, Text
|
|
5
5
|
|
|
6
|
-
from rasa.core.brokers.broker import EventBroker
|
|
7
|
-
from rasa.core.brokers.kafka import KafkaEventBroker
|
|
8
|
-
|
|
9
6
|
from rasa.anonymization.anonymization_rule_executor import (
|
|
10
7
|
AnonymizationRuleExecutor,
|
|
11
8
|
AnonymizationRuleList,
|
|
12
9
|
)
|
|
10
|
+
from rasa.core.brokers.broker import EventBroker
|
|
11
|
+
from rasa.core.brokers.kafka import KafkaEventBroker
|
|
13
12
|
|
|
14
13
|
logger = logging.getLogger(__name__)
|
|
15
14
|
|
rasa/cli/arguments/data.py
CHANGED
|
@@ -2,10 +2,10 @@ import argparse
|
|
|
2
2
|
from typing import Text
|
|
3
3
|
|
|
4
4
|
from rasa.cli.arguments.default_arguments import (
|
|
5
|
-
add_nlu_data_param,
|
|
6
|
-
add_out_param,
|
|
7
5
|
add_data_param,
|
|
8
6
|
add_domain_param,
|
|
7
|
+
add_nlu_data_param,
|
|
8
|
+
add_out_param,
|
|
9
9
|
)
|
|
10
10
|
from rasa.shared.constants import DEFAULT_CONVERTED_DATA_PATH
|
|
11
11
|
|
rasa/cli/arguments/evaluate.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
from pathlib import Path
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
from rasa.cli.arguments.default_arguments import add_domain_param, add_endpoint_param
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
def set_markers_arguments(parser: argparse.ArgumentParser) -> None:
|
rasa/cli/arguments/run.py
CHANGED
|
@@ -5,8 +5,8 @@ from typing import Union
|
|
|
5
5
|
from rasa.cli.arguments.default_arguments import (
|
|
6
6
|
add_endpoint_param,
|
|
7
7
|
add_model_param,
|
|
8
|
-
add_skip_validation_flag,
|
|
9
8
|
add_remote_storage_param,
|
|
9
|
+
add_skip_validation_flag,
|
|
10
10
|
)
|
|
11
11
|
from rasa.core import constants
|
|
12
12
|
from rasa.env import (
|
rasa/cli/arguments/test.py
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
from typing import Union
|
|
3
3
|
|
|
4
|
-
from rasa.shared.constants import DEFAULT_MODELS_PATH, DEFAULT_RESULTS_PATH
|
|
5
|
-
|
|
6
4
|
from rasa.cli.arguments.default_arguments import (
|
|
7
|
-
|
|
5
|
+
add_endpoint_param,
|
|
8
6
|
add_model_param,
|
|
9
7
|
add_nlu_data_param,
|
|
10
|
-
add_endpoint_param,
|
|
11
8
|
add_out_param,
|
|
9
|
+
add_stories_param,
|
|
12
10
|
)
|
|
13
11
|
from rasa.model import get_latest_model
|
|
14
|
-
from rasa.shared.constants import
|
|
12
|
+
from rasa.shared.constants import (
|
|
13
|
+
DEFAULT_DOMAIN_PATH,
|
|
14
|
+
DEFAULT_MODELS_PATH,
|
|
15
|
+
DEFAULT_RESULTS_PATH,
|
|
16
|
+
)
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
def set_test_arguments(parser: argparse.ArgumentParser) -> None:
|
rasa/cli/arguments/train.py
CHANGED
|
@@ -3,12 +3,12 @@ from typing import Union
|
|
|
3
3
|
|
|
4
4
|
from rasa.cli.arguments.default_arguments import (
|
|
5
5
|
add_config_param,
|
|
6
|
-
add_stories_param,
|
|
7
|
-
add_nlu_data_param,
|
|
8
|
-
add_out_param,
|
|
9
6
|
add_domain_param,
|
|
10
7
|
add_endpoint_param,
|
|
8
|
+
add_nlu_data_param,
|
|
9
|
+
add_out_param,
|
|
11
10
|
add_remote_storage_param,
|
|
11
|
+
add_stories_param,
|
|
12
12
|
)
|
|
13
13
|
from rasa.graph_components.providers.training_tracker_provider import (
|
|
14
14
|
TrainingTrackerProvider,
|
rasa/cli/arguments/visualize.py
CHANGED
rasa/cli/arguments/x.py
CHANGED
rasa/cli/data.py
CHANGED
|
@@ -19,8 +19,8 @@ from rasa.e2e_test.e2e_config import create_llm_e2e_test_converter_config
|
|
|
19
19
|
from rasa.e2e_test.e2e_test_converter import E2ETestConverter
|
|
20
20
|
from rasa.e2e_test.utils.e2e_yaml_utils import E2ETestYAMLWriter
|
|
21
21
|
from rasa.shared.constants import (
|
|
22
|
-
DEFAULT_DATA_PATH,
|
|
23
22
|
DEFAULT_CONFIG_PATH,
|
|
23
|
+
DEFAULT_DATA_PATH,
|
|
24
24
|
DEFAULT_DOMAIN_PATHS,
|
|
25
25
|
)
|
|
26
26
|
from rasa.shared.exceptions import RasaException
|
|
@@ -230,11 +230,12 @@ def split_stories_data(args: argparse.Namespace) -> None:
|
|
|
230
230
|
Args:
|
|
231
231
|
args: Commandline arguments
|
|
232
232
|
"""
|
|
233
|
+
from sklearn.model_selection import train_test_split
|
|
234
|
+
|
|
233
235
|
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
234
|
-
YAMLStoryReader,
|
|
235
236
|
KEY_STORIES,
|
|
237
|
+
YAMLStoryReader,
|
|
236
238
|
)
|
|
237
|
-
from sklearn.model_selection import train_test_split
|
|
238
239
|
|
|
239
240
|
data_path = rasa.cli.utils.get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
240
241
|
data_files = rasa.shared.data.get_data_files(
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import asyncio
|
|
3
3
|
import datetime
|
|
4
|
+
import importlib
|
|
4
5
|
import sys
|
|
5
|
-
from typing import List
|
|
6
|
+
from typing import List, Optional
|
|
6
7
|
|
|
7
8
|
import structlog
|
|
8
9
|
|
|
9
10
|
import rasa.cli.utils
|
|
11
|
+
import rasa.shared.utils.cli
|
|
10
12
|
from rasa.cli import SubParsersAction
|
|
11
13
|
from rasa.cli.arguments.default_arguments import (
|
|
12
14
|
add_endpoint_param,
|
|
13
15
|
add_model_param,
|
|
14
16
|
add_remote_storage_param,
|
|
15
17
|
)
|
|
18
|
+
from rasa.core.agent import Agent
|
|
16
19
|
from rasa.core.exceptions import AgentNotReady
|
|
17
20
|
from rasa.core.utils import AvailableEndpoints
|
|
21
|
+
from rasa.dialogue_understanding.commands import Command
|
|
22
|
+
from rasa.dialogue_understanding.generator.command_parser import DEFAULT_COMMANDS
|
|
18
23
|
from rasa.dialogue_understanding_test.command_metric_calculation import (
|
|
19
24
|
calculate_command_metrics,
|
|
20
25
|
)
|
|
@@ -24,6 +29,7 @@ from rasa.dialogue_understanding_test.constants import (
|
|
|
24
29
|
)
|
|
25
30
|
from rasa.dialogue_understanding_test.du_test_result import (
|
|
26
31
|
DialogueUnderstandingTestResult,
|
|
32
|
+
DialogueUnderstandingTestSuiteResult,
|
|
27
33
|
)
|
|
28
34
|
from rasa.dialogue_understanding_test.du_test_runner import (
|
|
29
35
|
DialogueUnderstandingTestRunner,
|
|
@@ -31,7 +37,6 @@ from rasa.dialogue_understanding_test.du_test_runner import (
|
|
|
31
37
|
from rasa.dialogue_understanding_test.io import (
|
|
32
38
|
read_test_suite,
|
|
33
39
|
write_test_results_to_file,
|
|
34
|
-
print_test_results,
|
|
35
40
|
)
|
|
36
41
|
from rasa.dialogue_understanding_test.validation import (
|
|
37
42
|
validate_cli_arguments,
|
|
@@ -39,7 +44,9 @@ from rasa.dialogue_understanding_test.validation import (
|
|
|
39
44
|
)
|
|
40
45
|
from rasa.e2e_test.e2e_test_case import TestSuite
|
|
41
46
|
from rasa.exceptions import RasaException
|
|
42
|
-
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH
|
|
47
|
+
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, ROUTE_TO_CALM_SLOT
|
|
48
|
+
from rasa.shared.core.domain import Domain
|
|
49
|
+
from rasa.shared.core.flows import FlowsList
|
|
43
50
|
from rasa.utils.beta import ensure_beta_feature_is_enabled
|
|
44
51
|
from rasa.utils.endpoints import EndpointConfig
|
|
45
52
|
|
|
@@ -136,6 +143,45 @@ def add_du_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
136
143
|
help="If set, the dialogue understanding test output will contain "
|
|
137
144
|
"prompts for each failure.",
|
|
138
145
|
)
|
|
146
|
+
du_arguments.add_argument(
|
|
147
|
+
"--additional-commands",
|
|
148
|
+
type=str,
|
|
149
|
+
nargs="*",
|
|
150
|
+
help=(
|
|
151
|
+
"List of additional custom command classes to add, separated by spaces. "
|
|
152
|
+
"For example: --additional-commands my_module.MyCustomCommand"
|
|
153
|
+
),
|
|
154
|
+
)
|
|
155
|
+
du_arguments.add_argument(
|
|
156
|
+
"--remove-default-commands",
|
|
157
|
+
type=str,
|
|
158
|
+
nargs="*",
|
|
159
|
+
help=(
|
|
160
|
+
f"List of default commands to remove, separated by spaces. "
|
|
161
|
+
f"Default commands include: "
|
|
162
|
+
f"{', '.join([command.__name__ for command in DEFAULT_COMMANDS])}. "
|
|
163
|
+
f"For example: --remove-default-commands ClarifyCommand HumanHandoffCommand"
|
|
164
|
+
),
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def ensure_calm_only_bot(agent: Agent) -> None:
|
|
169
|
+
if agent.domain is None or agent.processor is None:
|
|
170
|
+
return
|
|
171
|
+
|
|
172
|
+
if ROUTE_TO_CALM_SLOT in [slot.name for slot in agent.domain.slots]:
|
|
173
|
+
rasa.shared.utils.cli.print_error(
|
|
174
|
+
"You are using coexistence. Dialogue Understanding Tests do only work for "
|
|
175
|
+
"CALM only assistants."
|
|
176
|
+
)
|
|
177
|
+
sys.exit(0)
|
|
178
|
+
|
|
179
|
+
if not agent.processor.is_calm_assistant:
|
|
180
|
+
rasa.shared.utils.cli.print_error(
|
|
181
|
+
"Dialogue Understanding Tests do only work for CALM assistants. "
|
|
182
|
+
"Your assistant does not use CALM."
|
|
183
|
+
)
|
|
184
|
+
sys.exit(0)
|
|
139
185
|
|
|
140
186
|
|
|
141
187
|
def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
@@ -155,12 +201,6 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
155
201
|
# initialization of endpoints
|
|
156
202
|
endpoints = set_up_available_endpoints(args)
|
|
157
203
|
|
|
158
|
-
# read test cases from the given path
|
|
159
|
-
test_suite = get_valid_test_suite(args)
|
|
160
|
-
|
|
161
|
-
# setup stub custom actions if they are used
|
|
162
|
-
set_up_stub_custom_actions(test_suite, endpoints)
|
|
163
|
-
|
|
164
204
|
# set up the test runner, e.g. start the agent
|
|
165
205
|
try:
|
|
166
206
|
test_runner = DialogueUnderstandingTestRunner(
|
|
@@ -175,34 +215,97 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
175
215
|
)
|
|
176
216
|
sys.exit(1)
|
|
177
217
|
|
|
218
|
+
# Exit if the bot is not calm only
|
|
219
|
+
ensure_calm_only_bot(test_runner.agent)
|
|
220
|
+
|
|
221
|
+
# Get flows from the agent
|
|
222
|
+
# we need them to parse the commands when reading the test cases
|
|
223
|
+
if test_runner.agent.processor is None:
|
|
224
|
+
rasa.shared.utils.cli.print_error(
|
|
225
|
+
"No processor: Not able to retrieve flows and config from trained model."
|
|
226
|
+
)
|
|
227
|
+
sys.exit(0)
|
|
228
|
+
flows = asyncio.run(test_runner.agent.processor.get_flows())
|
|
229
|
+
|
|
230
|
+
# read test cases from the given path
|
|
231
|
+
test_suite: TestSuite = get_valid_test_suite(args, flows, test_runner.agent.domain)
|
|
232
|
+
|
|
233
|
+
# setup stub custom actions if they are used
|
|
234
|
+
set_up_stub_custom_actions(test_suite, endpoints)
|
|
235
|
+
|
|
178
236
|
# run the actual test cases
|
|
179
237
|
test_results = asyncio.run(
|
|
180
|
-
test_runner.
|
|
238
|
+
test_runner.run_test_cases(
|
|
181
239
|
test_suite.test_cases, test_suite.fixtures, test_suite.metadata
|
|
182
240
|
)
|
|
183
241
|
)
|
|
184
242
|
|
|
185
243
|
# evaluate test results
|
|
186
|
-
|
|
244
|
+
passing_test_results, failing_test_results = split_test_results(test_results)
|
|
187
245
|
command_metrics = calculate_command_metrics(test_results)
|
|
188
246
|
|
|
247
|
+
test_suite_result = DialogueUnderstandingTestSuiteResult.from_results(
|
|
248
|
+
failing_test_results, passing_test_results, command_metrics
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
# Do not move this import to the top of the file as it will break the
|
|
252
|
+
# instrumentation of this function: the CLI module is initialized before the
|
|
253
|
+
# instrumentation is set up, and we won't be able to "replace" the function
|
|
254
|
+
# with the instrumented wrapper
|
|
255
|
+
from rasa.dialogue_understanding_test.io import print_test_results
|
|
256
|
+
|
|
189
257
|
# write results to console and file
|
|
190
|
-
print_test_results(
|
|
258
|
+
print_test_results(test_suite_result, output_prompt=args.output_prompt)
|
|
191
259
|
if not args.no_output:
|
|
192
260
|
write_test_results_to_file(
|
|
193
|
-
|
|
194
|
-
passed_tests,
|
|
195
|
-
command_metrics,
|
|
261
|
+
test_suite_result,
|
|
196
262
|
args.output_file,
|
|
197
263
|
args.output_prompt,
|
|
198
264
|
)
|
|
199
265
|
|
|
200
266
|
|
|
201
|
-
def
|
|
267
|
+
def _import_custom_command_class(class_path: str) -> Command:
|
|
268
|
+
"""Dynamically import a command class from a string path."""
|
|
269
|
+
try:
|
|
270
|
+
module_name, class_name = class_path.rsplit(".", 1)
|
|
271
|
+
module = importlib.import_module(module_name)
|
|
272
|
+
clz = getattr(module, class_name)
|
|
273
|
+
except (ImportError, AttributeError, ValueError) as e:
|
|
274
|
+
raise ValueError(f"Failed to import class '{class_path}': {e}")
|
|
275
|
+
if not issubclass(clz, Command):
|
|
276
|
+
structlogger.error(
|
|
277
|
+
"rasa.dialogue_understanding_test.invalid_additional_command",
|
|
278
|
+
event_info="The custom command class must be a subclass of Command.",
|
|
279
|
+
class_path=class_path,
|
|
280
|
+
)
|
|
281
|
+
sys.exit(1)
|
|
282
|
+
return clz
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
def _extract_additional_command_classes_from_cli_args(
|
|
286
|
+
args: argparse.Namespace,
|
|
287
|
+
) -> List[Command]:
|
|
288
|
+
"""Extract additional command classes from the CLI arguments."""
|
|
289
|
+
additional_commands = getattr(args, "additional_commands", [])
|
|
290
|
+
if not additional_commands:
|
|
291
|
+
return []
|
|
292
|
+
return [
|
|
293
|
+
_import_custom_command_class(command_module)
|
|
294
|
+
for command_module in additional_commands
|
|
295
|
+
]
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def get_valid_test_suite(
|
|
299
|
+
args: argparse.Namespace, flows: FlowsList, domain: Optional[Domain]
|
|
300
|
+
) -> TestSuite:
|
|
202
301
|
"""Read the test cases from the given test case path and validate them."""
|
|
203
302
|
path_to_test_cases = getattr(args, "path-to-test-cases", DEFAULT_INPUT_TESTS_PATH)
|
|
204
|
-
|
|
205
|
-
|
|
303
|
+
remove_default_commands = getattr(args, "remove_default_commands", [])
|
|
304
|
+
custom_command_classes = _extract_additional_command_classes_from_cli_args(args)
|
|
305
|
+
test_suite = read_test_suite(
|
|
306
|
+
path_to_test_cases, flows, custom_command_classes, remove_default_commands
|
|
307
|
+
)
|
|
308
|
+
validate_test_cases(test_suite.test_cases, domain)
|
|
206
309
|
return test_suite
|
|
207
310
|
|
|
208
311
|
|
rasa/cli/evaluate.py
CHANGED
rasa/cli/export.py
CHANGED
|
@@ -2,23 +2,23 @@ import argparse
|
|
|
2
2
|
import asyncio
|
|
3
3
|
import logging
|
|
4
4
|
import typing
|
|
5
|
-
from typing import List,
|
|
5
|
+
from typing import List, Optional, Text
|
|
6
6
|
|
|
7
|
-
from rasa import telemetry
|
|
8
|
-
from rasa.cli import SubParsersAction
|
|
9
7
|
import rasa.core.utils
|
|
10
8
|
import rasa.shared.utils.cli
|
|
11
9
|
import rasa.utils.common
|
|
10
|
+
from rasa import telemetry
|
|
11
|
+
from rasa.cli import SubParsersAction
|
|
12
12
|
from rasa.cli.arguments import export as arguments
|
|
13
|
-
from rasa.
|
|
13
|
+
from rasa.core.brokers.pika import PikaEventBroker
|
|
14
14
|
from rasa.exceptions import PublishingError
|
|
15
|
+
from rasa.shared.constants import DOCS_URL_EVENT_BROKERS, DOCS_URL_TRACKER_STORES
|
|
15
16
|
from rasa.shared.exceptions import RasaException
|
|
16
|
-
from rasa.core.brokers.pika import PikaEventBroker
|
|
17
17
|
|
|
18
18
|
if typing.TYPE_CHECKING:
|
|
19
19
|
from rasa.core.brokers.broker import EventBroker
|
|
20
|
-
from rasa.core.tracker_store import TrackerStore
|
|
21
20
|
from rasa.core.exporter import Exporter
|
|
21
|
+
from rasa.core.tracker_store import TrackerStore
|
|
22
22
|
from rasa.core.utils import AvailableEndpoints
|
|
23
23
|
|
|
24
24
|
logger = logging.getLogger(__name__)
|
rasa/cli/interactive.py
CHANGED
|
@@ -4,11 +4,13 @@ import os
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import List, Optional, Text, Union
|
|
6
6
|
|
|
7
|
+
import rasa.cli.train as train
|
|
8
|
+
import rasa.cli.utils
|
|
9
|
+
import rasa.shared.utils.cli
|
|
10
|
+
import rasa.utils.common
|
|
7
11
|
from rasa import model
|
|
8
12
|
from rasa.cli import SubParsersAction
|
|
9
13
|
from rasa.cli.arguments import interactive as arguments
|
|
10
|
-
import rasa.cli.train as train
|
|
11
|
-
import rasa.cli.utils
|
|
12
14
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
13
15
|
from rasa.shared.constants import (
|
|
14
16
|
ASSISTANT_ID_DEFAULT_VALUE,
|
|
@@ -18,9 +20,6 @@ from rasa.shared.constants import (
|
|
|
18
20
|
)
|
|
19
21
|
from rasa.shared.data import TrainingType
|
|
20
22
|
from rasa.shared.importers.importer import TrainingDataImporter
|
|
21
|
-
import rasa.shared.utils.cli
|
|
22
|
-
import rasa.utils.common
|
|
23
|
-
|
|
24
23
|
|
|
25
24
|
logger = logging.getLogger(__name__)
|
|
26
25
|
|
rasa/cli/llm_fine_tuning.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import asyncio
|
|
3
3
|
import sys
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any, Dict, List
|
|
5
5
|
|
|
6
6
|
import structlog
|
|
7
7
|
|
|
@@ -16,9 +16,9 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
16
16
|
add_remote_storage_param,
|
|
17
17
|
)
|
|
18
18
|
from rasa.cli.e2e_test import (
|
|
19
|
+
RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
|
|
19
20
|
read_test_cases,
|
|
20
21
|
validate_model_path,
|
|
21
|
-
RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
|
|
22
22
|
)
|
|
23
23
|
from rasa.core.exceptions import AgentNotReady
|
|
24
24
|
from rasa.core.utils import AvailableEndpoints
|
|
@@ -31,14 +31,14 @@ from rasa.llm_fine_tuning.paraphrasing.conversation_rephraser import (
|
|
|
31
31
|
)
|
|
32
32
|
from rasa.llm_fine_tuning.paraphrasing_module import create_paraphrased_conversations
|
|
33
33
|
from rasa.llm_fine_tuning.storage import (
|
|
34
|
+
FileStorageStrategy,
|
|
34
35
|
StorageContext,
|
|
35
36
|
StorageType,
|
|
36
|
-
FileStorageStrategy,
|
|
37
37
|
)
|
|
38
38
|
from rasa.llm_fine_tuning.train_test_split_module import (
|
|
39
|
-
split_llm_fine_tuning_data,
|
|
40
|
-
INSTRUCTION_DATA_FORMAT,
|
|
41
39
|
CONVERSATIONAL_DATA_FORMAT,
|
|
40
|
+
INSTRUCTION_DATA_FORMAT,
|
|
41
|
+
split_llm_fine_tuning_data,
|
|
42
42
|
)
|
|
43
43
|
from rasa.shared.constants import (
|
|
44
44
|
DEFAULT_ENDPOINTS_PATH,
|
rasa/cli/markers.py
CHANGED
|
@@ -4,11 +4,10 @@ from typing import List, Text
|
|
|
4
4
|
|
|
5
5
|
from rasa.cli import SubParsersAction
|
|
6
6
|
from rasa.cli.arguments.default_arguments import add_domain_param
|
|
7
|
+
from rasa.markers.upload import upload
|
|
7
8
|
from rasa.shared.core.domain import Domain
|
|
8
9
|
from rasa.shared.utils.cli import print_error_and_exit
|
|
9
10
|
|
|
10
|
-
from rasa.markers.upload import upload
|
|
11
|
-
|
|
12
11
|
|
|
13
12
|
def add_subparser(
|
|
14
13
|
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
@@ -4,7 +4,7 @@ from rasa_sdk import Action, Tracker
|
|
|
4
4
|
from rasa_sdk.events import SlotSet
|
|
5
5
|
from rasa_sdk.executor import CollectingDispatcher
|
|
6
6
|
|
|
7
|
-
from actions.db import add_contact, get_contacts
|
|
7
|
+
from actions.db import Contact, add_contact, get_contacts
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AddContact(Action):
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from typing import Any,
|
|
1
|
+
from typing import Any, Dict, List, Text
|
|
2
|
+
|
|
2
3
|
from rasa_sdk import Action, Tracker
|
|
3
|
-
from rasa_sdk.executor import CollectingDispatcher
|
|
4
4
|
from rasa_sdk.events import SlotSet
|
|
5
|
+
from rasa_sdk.executor import CollectingDispatcher
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class ActionCheckSufficientFunds(Action):
|
rasa/cli/shell.py
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import logging
|
|
3
3
|
import uuid
|
|
4
|
-
|
|
5
4
|
from typing import List
|
|
6
5
|
|
|
7
6
|
from rasa import telemetry
|
|
8
7
|
from rasa.cli import SubParsersAction
|
|
9
8
|
from rasa.cli.arguments import shell as arguments
|
|
10
9
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
10
|
+
from rasa.exceptions import ModelNotFound
|
|
11
11
|
from rasa.model import get_local_model
|
|
12
12
|
from rasa.shared.constants import ASSISTANT_ID_KEY
|
|
13
13
|
from rasa.shared.data import TrainingType
|
|
14
14
|
from rasa.shared.utils.cli import print_error
|
|
15
|
-
from rasa.exceptions import ModelNotFound
|
|
16
15
|
|
|
17
16
|
logger = logging.getLogger(__name__)
|
|
18
17
|
|
|
@@ -63,9 +62,9 @@ def add_subparser(
|
|
|
63
62
|
|
|
64
63
|
def shell_nlu(args: argparse.Namespace) -> None:
|
|
65
64
|
"""Talk with an NLU only bot though the command line."""
|
|
65
|
+
import rasa.nlu.run
|
|
66
66
|
from rasa.cli.utils import get_validated_path
|
|
67
67
|
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
68
|
-
import rasa.nlu.run
|
|
69
68
|
|
|
70
69
|
args.connector = "cmdline"
|
|
71
70
|
|
rasa/cli/studio/download.py
CHANGED
|
@@ -7,8 +7,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
7
7
|
add_endpoint_param,
|
|
8
8
|
)
|
|
9
9
|
from rasa.cli.arguments.train import add_data_param, add_domain_param
|
|
10
|
-
from rasa.shared.constants import
|
|
11
|
-
|
|
10
|
+
from rasa.shared.constants import DEFAULT_CONFIG_PATH, DEFAULT_ENDPOINTS_PATH
|
|
12
11
|
from rasa.studio.download import handle_download
|
|
13
12
|
|
|
14
13
|
|
rasa/cli/studio/studio.py
CHANGED
|
@@ -3,16 +3,15 @@ from typing import List, Optional, Tuple
|
|
|
3
3
|
from urllib.parse import ParseResult, urlparse
|
|
4
4
|
|
|
5
5
|
import questionary
|
|
6
|
-
from rasa.cli import SubParsersAction
|
|
7
6
|
|
|
8
|
-
import rasa.shared.utils.cli
|
|
9
7
|
import rasa.cli.studio.download
|
|
10
8
|
import rasa.cli.studio.train
|
|
11
9
|
import rasa.cli.studio.upload
|
|
10
|
+
import rasa.shared.utils.cli
|
|
11
|
+
from rasa.cli import SubParsersAction
|
|
12
12
|
from rasa.studio.auth import StudioAuth
|
|
13
13
|
from rasa.studio.config import StudioConfig
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
DEFAULT_REALM_NAME = "rasa-studio"
|
|
17
16
|
|
|
18
17
|
DEFAULT_CLIENT_ID = "admin-cli"
|