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
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,14 +29,15 @@ 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,
|
|
30
36
|
)
|
|
31
37
|
from rasa.dialogue_understanding_test.io import (
|
|
38
|
+
print_test_results,
|
|
32
39
|
read_test_suite,
|
|
33
40
|
write_test_results_to_file,
|
|
34
|
-
print_test_results,
|
|
35
41
|
)
|
|
36
42
|
from rasa.dialogue_understanding_test.validation import (
|
|
37
43
|
validate_cli_arguments,
|
|
@@ -39,7 +45,9 @@ from rasa.dialogue_understanding_test.validation import (
|
|
|
39
45
|
)
|
|
40
46
|
from rasa.e2e_test.e2e_test_case import TestSuite
|
|
41
47
|
from rasa.exceptions import RasaException
|
|
42
|
-
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH
|
|
48
|
+
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, ROUTE_TO_CALM_SLOT
|
|
49
|
+
from rasa.shared.core.domain import Domain
|
|
50
|
+
from rasa.shared.core.flows import FlowsList
|
|
43
51
|
from rasa.utils.beta import ensure_beta_feature_is_enabled
|
|
44
52
|
from rasa.utils.endpoints import EndpointConfig
|
|
45
53
|
|
|
@@ -136,6 +144,45 @@ def add_du_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
136
144
|
help="If set, the dialogue understanding test output will contain "
|
|
137
145
|
"prompts for each failure.",
|
|
138
146
|
)
|
|
147
|
+
du_arguments.add_argument(
|
|
148
|
+
"--additional-commands",
|
|
149
|
+
type=str,
|
|
150
|
+
nargs="*",
|
|
151
|
+
help=(
|
|
152
|
+
"List of additional custom command classes to add, separated by spaces. "
|
|
153
|
+
"For example: --additional-commands my_module.MyCustomCommand"
|
|
154
|
+
),
|
|
155
|
+
)
|
|
156
|
+
du_arguments.add_argument(
|
|
157
|
+
"--remove-default-commands",
|
|
158
|
+
type=str,
|
|
159
|
+
nargs="*",
|
|
160
|
+
help=(
|
|
161
|
+
f"List of default commands to remove, separated by spaces. "
|
|
162
|
+
f"Default commands include: "
|
|
163
|
+
f"{', '.join([command.__name__ for command in DEFAULT_COMMANDS])}. "
|
|
164
|
+
f"For example: --remove-default-commands ClarifyCommand HumanHandoffCommand"
|
|
165
|
+
),
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def ensure_calm_only_bot(agent: Agent) -> None:
|
|
170
|
+
if agent.domain is None or agent.processor is None:
|
|
171
|
+
return
|
|
172
|
+
|
|
173
|
+
if ROUTE_TO_CALM_SLOT in [slot.name for slot in agent.domain.slots]:
|
|
174
|
+
rasa.shared.utils.cli.print_error(
|
|
175
|
+
"You are using coexistence. Dialogue Understanding Tests do only work for "
|
|
176
|
+
"CALM only assistants."
|
|
177
|
+
)
|
|
178
|
+
sys.exit(0)
|
|
179
|
+
|
|
180
|
+
if not agent.processor.is_calm_assistant:
|
|
181
|
+
rasa.shared.utils.cli.print_error(
|
|
182
|
+
"Dialogue Understanding Tests do only work for CALM assistants. "
|
|
183
|
+
"Your assistant does not use CALM."
|
|
184
|
+
)
|
|
185
|
+
sys.exit(0)
|
|
139
186
|
|
|
140
187
|
|
|
141
188
|
def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
@@ -155,12 +202,6 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
155
202
|
# initialization of endpoints
|
|
156
203
|
endpoints = set_up_available_endpoints(args)
|
|
157
204
|
|
|
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
205
|
# set up the test runner, e.g. start the agent
|
|
165
206
|
try:
|
|
166
207
|
test_runner = DialogueUnderstandingTestRunner(
|
|
@@ -175,34 +216,91 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
175
216
|
)
|
|
176
217
|
sys.exit(1)
|
|
177
218
|
|
|
219
|
+
# Exit if the bot is not calm only
|
|
220
|
+
ensure_calm_only_bot(test_runner.agent)
|
|
221
|
+
|
|
222
|
+
# Get flows from the agent
|
|
223
|
+
# we need them to parse the commands when reading the test cases
|
|
224
|
+
if test_runner.agent.processor is None:
|
|
225
|
+
rasa.shared.utils.cli.print_error(
|
|
226
|
+
"No processor: Not able to retrieve flows and config from trained model."
|
|
227
|
+
)
|
|
228
|
+
sys.exit(0)
|
|
229
|
+
flows = asyncio.run(test_runner.agent.processor.get_flows())
|
|
230
|
+
|
|
231
|
+
# read test cases from the given path
|
|
232
|
+
test_suite: TestSuite = get_valid_test_suite(args, flows, test_runner.agent.domain)
|
|
233
|
+
|
|
234
|
+
# setup stub custom actions if they are used
|
|
235
|
+
set_up_stub_custom_actions(test_suite, endpoints)
|
|
236
|
+
|
|
178
237
|
# run the actual test cases
|
|
179
238
|
test_results = asyncio.run(
|
|
180
|
-
test_runner.
|
|
239
|
+
test_runner.run_test_cases(
|
|
181
240
|
test_suite.test_cases, test_suite.fixtures, test_suite.metadata
|
|
182
241
|
)
|
|
183
242
|
)
|
|
184
243
|
|
|
185
244
|
# evaluate test results
|
|
186
|
-
|
|
245
|
+
passing_test_results, failing_test_results = split_test_results(test_results)
|
|
187
246
|
command_metrics = calculate_command_metrics(test_results)
|
|
188
247
|
|
|
248
|
+
test_suite_result = DialogueUnderstandingTestSuiteResult.from_results(
|
|
249
|
+
failing_test_results, passing_test_results, command_metrics
|
|
250
|
+
)
|
|
251
|
+
|
|
189
252
|
# write results to console and file
|
|
190
|
-
print_test_results(
|
|
253
|
+
print_test_results(test_suite_result, output_prompt=args.output_prompt)
|
|
191
254
|
if not args.no_output:
|
|
192
255
|
write_test_results_to_file(
|
|
193
|
-
|
|
194
|
-
passed_tests,
|
|
195
|
-
command_metrics,
|
|
256
|
+
test_suite_result,
|
|
196
257
|
args.output_file,
|
|
197
258
|
args.output_prompt,
|
|
198
259
|
)
|
|
199
260
|
|
|
200
261
|
|
|
201
|
-
def
|
|
262
|
+
def _import_custom_command_class(class_path: str) -> Command:
|
|
263
|
+
"""Dynamically import a command class from a string path."""
|
|
264
|
+
try:
|
|
265
|
+
module_name, class_name = class_path.rsplit(".", 1)
|
|
266
|
+
module = importlib.import_module(module_name)
|
|
267
|
+
clz = getattr(module, class_name)
|
|
268
|
+
except (ImportError, AttributeError, ValueError) as e:
|
|
269
|
+
raise ValueError(f"Failed to import class '{class_path}': {e}")
|
|
270
|
+
if not issubclass(clz, Command):
|
|
271
|
+
structlogger.error(
|
|
272
|
+
"rasa.dialogue_understanding_test.invalid_additional_command",
|
|
273
|
+
event_info="The custom command class must be a subclass of Command.",
|
|
274
|
+
class_path=class_path,
|
|
275
|
+
)
|
|
276
|
+
sys.exit(1)
|
|
277
|
+
return clz
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def _extract_additional_command_classes_from_cli_args(
|
|
281
|
+
args: argparse.Namespace,
|
|
282
|
+
) -> List[Command]:
|
|
283
|
+
"""Extract additional command classes from the CLI arguments."""
|
|
284
|
+
additional_commands = getattr(args, "additional_commands", [])
|
|
285
|
+
if not additional_commands:
|
|
286
|
+
return []
|
|
287
|
+
return [
|
|
288
|
+
_import_custom_command_class(command_module)
|
|
289
|
+
for command_module in additional_commands
|
|
290
|
+
]
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
def get_valid_test_suite(
|
|
294
|
+
args: argparse.Namespace, flows: FlowsList, domain: Optional[Domain]
|
|
295
|
+
) -> TestSuite:
|
|
202
296
|
"""Read the test cases from the given test case path and validate them."""
|
|
203
297
|
path_to_test_cases = getattr(args, "path-to-test-cases", DEFAULT_INPUT_TESTS_PATH)
|
|
204
|
-
|
|
205
|
-
|
|
298
|
+
remove_default_commands = getattr(args, "remove_default_commands", [])
|
|
299
|
+
custom_command_classes = _extract_additional_command_classes_from_cli_args(args)
|
|
300
|
+
test_suite = read_test_suite(
|
|
301
|
+
path_to_test_cases, flows, custom_command_classes, remove_default_commands
|
|
302
|
+
)
|
|
303
|
+
validate_test_cases(test_suite.test_cases, domain)
|
|
206
304
|
return test_suite
|
|
207
305
|
|
|
208
306
|
|
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"
|