rasa-pro 3.12.0.dev2__py3-none-any.whl → 3.12.0.dev3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- rasa/__main__.py +7 -7
- rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
- rasa/anonymization/anonymization_pipeline.py +3 -3
- rasa/anonymization/anonymization_rule_executor.py +1 -1
- rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
- rasa/cli/arguments/data.py +2 -2
- rasa/cli/arguments/evaluate.py +2 -1
- rasa/cli/arguments/interactive.py +1 -1
- rasa/cli/arguments/run.py +1 -1
- rasa/cli/arguments/test.py +7 -5
- rasa/cli/arguments/train.py +3 -3
- rasa/cli/arguments/visualize.py +2 -2
- rasa/cli/arguments/x.py +1 -0
- rasa/cli/data.py +4 -3
- rasa/cli/dialogue_understanding_test.py +116 -18
- rasa/cli/evaluate.py +1 -1
- rasa/cli/export.py +6 -6
- rasa/cli/interactive.py +4 -5
- rasa/cli/llm_fine_tuning.py +5 -5
- rasa/cli/markers.py +1 -2
- rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
- rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
- rasa/cli/shell.py +2 -3
- rasa/cli/studio/download.py +1 -2
- rasa/cli/studio/studio.py +2 -3
- rasa/cli/studio/train.py +0 -1
- rasa/cli/telemetry.py +2 -2
- rasa/cli/test.py +11 -11
- rasa/cli/utils.py +7 -5
- rasa/core/__init__.py +0 -1
- rasa/core/actions/action.py +42 -21
- rasa/core/actions/action_hangup.py +1 -1
- rasa/core/actions/action_repeat_bot_messages.py +2 -2
- rasa/core/actions/action_run_slot_rejections.py +2 -2
- rasa/core/actions/action_trigger_chitchat.py +1 -1
- rasa/core/actions/action_trigger_flow.py +5 -5
- rasa/core/actions/action_trigger_search.py +1 -1
- rasa/core/actions/forms.py +14 -12
- rasa/core/actions/http_custom_action_executor.py +8 -1
- rasa/core/actions/loops.py +3 -3
- rasa/core/actions/two_stage_fallback.py +13 -13
- rasa/core/auth_retry_tracker_store.py +1 -2
- rasa/core/brokers/broker.py +2 -1
- rasa/core/brokers/file.py +1 -1
- rasa/core/brokers/kafka.py +8 -8
- rasa/core/brokers/pika.py +8 -9
- rasa/core/brokers/sql.py +4 -3
- rasa/core/channels/__init__.py +3 -0
- rasa/core/channels/botframework.py +2 -2
- rasa/core/channels/callback.py +4 -4
- rasa/core/channels/channel.py +11 -11
- rasa/core/channels/console.py +0 -1
- rasa/core/channels/development_inspector.py +6 -6
- rasa/core/channels/facebook.py +5 -5
- rasa/core/channels/hangouts.py +7 -8
- rasa/core/channels/inspector/dist/assets/{arc-861ddd57.js → arc-632a63ec.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-921f02db.js → c4Diagram-d0fbc5ce-081e0df4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-b436c4f8.js → classDiagram-936ed81e-3df0afc2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-511a23cb.js → classDiagram-v2-c3cb15f1-8c5ed31e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-ef476ecd.js → createText-62fc7601-89c73b31.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-f1878e0a.js → edges-f2ad444c-4fc48c3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-fac75185.js → erDiagram-9d236eb7-907e0440.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-201c5bbc.js → flowDb-1972c806-9ec53a3c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-f904ae41.js → flowDiagram-7ea5b25a-41da787a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-1813da66.js → flowchart-elk-definition-abe16c3d-ce370633.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-872af172.js → ganttDiagram-9b5ea136-90a36523.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-34a0af5a.js → gitGraphDiagram-99d0ae7c-41e1aa3f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-42ba3e3d.js → index-2c4b9a3b-e6f2af62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-37817b51.js → index-e793d777.js} +3 -3
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-6b731386.js → infoDiagram-736b4530-8ceba4db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-e8579ac6.js → journeyDiagram-df861f2b-960d3809.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-89e6403a.js → layout-498807d8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-dc73d3fc.js → line-eeccc4e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-f5b1d2bc.js → linear-8a078617.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-82cb74fa.js → mindmap-definition-beec6740-396d17dd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-bdf5f29b.js → pieDiagram-dbbf0591-dc9b5e1b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-c7a0cbe4.js → quadrantDiagram-4d7f4fd6-a08cba6d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-7ec5410f.js → requirementDiagram-6fc4c22a-87242b9e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-caee5554.js → sankeyDiagram-8f13d901-53f6f391.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-2935f8db.js → sequenceDiagram-b655622a-715c9c20.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-8f5d9693.js → stateDiagram-59f0c015-2e8fb31f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-d565d1de.js → stateDiagram-v2-2b26beab-7e2d2aa0.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-080da4f6-75ad421d.js → styles-080da4f6-4420cea6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-7e764226.js → styles-3dcbcfbf-28676cf4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-7a4e0e61.js → styles-9c745c82-cef936a6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-4019d1bf.js → svgDrawCommon-4835440b-151251e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-01ea12df.js → timeline-definition-5b62e21b-0d39bdb2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-89407137.js → xychartDiagram-2b33534f-a03fa445.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +3 -1
- rasa/core/channels/inspector/index.html +2 -0
- rasa/core/channels/inspector/src/App.tsx +1 -4
- rasa/core/channels/mattermost.py +4 -4
- rasa/core/channels/rasa_chat.py +4 -4
- rasa/core/channels/rest.py +11 -12
- rasa/core/channels/rocketchat.py +4 -3
- rasa/core/channels/slack.py +6 -5
- rasa/core/channels/socketio.py +7 -28
- rasa/core/channels/studio_chat.py +193 -0
- rasa/core/channels/telegram.py +73 -41
- rasa/core/channels/twilio.py +3 -3
- rasa/core/channels/vier_cvg.py +2 -2
- rasa/core/channels/voice_ready/audiocodes.py +8 -8
- rasa/core/channels/voice_ready/jambonz.py +5 -5
- rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
- rasa/core/channels/voice_ready/twilio_voice.py +9 -8
- rasa/core/channels/voice_ready/utils.py +1 -1
- rasa/core/channels/voice_stream/asr/asr_engine.py +2 -2
- rasa/core/channels/voice_stream/asr/azure.py +2 -2
- rasa/core/channels/voice_stream/asr/deepgram.py +57 -16
- rasa/core/channels/voice_stream/browser_audio.py +9 -6
- rasa/core/channels/voice_stream/call_state.py +2 -1
- rasa/core/channels/voice_stream/tts/azure.py +1 -2
- rasa/core/channels/voice_stream/tts/cartesia.py +5 -4
- rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
- rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
- rasa/core/channels/voice_stream/twilio_media_streams.py +10 -7
- rasa/core/channels/voice_stream/util.py +1 -1
- rasa/core/channels/voice_stream/voice_channel.py +15 -15
- rasa/core/channels/webexteams.py +3 -4
- rasa/core/evaluation/marker.py +7 -6
- rasa/core/evaluation/marker_base.py +15 -16
- rasa/core/evaluation/marker_stats.py +3 -4
- rasa/core/evaluation/marker_tracker_loader.py +5 -4
- rasa/core/exporter.py +4 -4
- rasa/core/featurizers/precomputation.py +8 -8
- rasa/core/featurizers/single_state_featurizer.py +7 -7
- rasa/core/featurizers/tracker_featurizers.py +13 -13
- rasa/core/http_interpreter.py +3 -4
- rasa/core/information_retrieval/__init__.py +1 -1
- rasa/core/information_retrieval/faiss.py +4 -4
- rasa/core/information_retrieval/information_retrieval.py +2 -2
- rasa/core/information_retrieval/milvus.py +3 -3
- rasa/core/information_retrieval/qdrant.py +3 -3
- rasa/core/jobs.py +1 -0
- rasa/core/lock.py +2 -3
- rasa/core/lock_store.py +3 -3
- rasa/core/migrate.py +11 -8
- rasa/core/nlg/__init__.py +1 -1
- rasa/core/nlg/callback.py +2 -3
- rasa/core/nlg/contextual_response_rephraser.py +63 -13
- rasa/core/nlg/generator.py +2 -2
- rasa/core/nlg/interpolator.py +4 -3
- rasa/core/nlg/response.py +3 -4
- rasa/core/nlg/summarize.py +1 -0
- rasa/core/persistor.py +3 -3
- rasa/core/policies/ensemble.py +10 -9
- rasa/core/policies/enterprise_search_policy.py +86 -21
- rasa/core/policies/flow_policy.py +13 -14
- rasa/core/policies/flows/flow_executor.py +35 -11
- rasa/core/policies/intentless_policy.py +6 -7
- rasa/core/policies/memoization.py +22 -20
- rasa/core/policies/policy.py +24 -22
- rasa/core/policies/rule_policy.py +37 -36
- rasa/core/policies/ted_policy.py +87 -85
- rasa/core/policies/unexpected_intent_policy.py +77 -75
- rasa/core/processor.py +96 -65
- rasa/core/run.py +1 -1
- rasa/core/secrets_manager/endpoints.py +2 -3
- rasa/core/secrets_manager/factory.py +2 -3
- rasa/core/secrets_manager/secret_manager.py +2 -3
- rasa/core/secrets_manager/vault.py +2 -2
- rasa/core/test.py +30 -30
- rasa/core/tracker_store.py +15 -15
- rasa/core/train.py +1 -1
- rasa/core/training/__init__.py +2 -2
- rasa/core/training/converters/responses_prefix_converter.py +1 -2
- rasa/core/training/interactive.py +13 -13
- rasa/core/training/story_conflict.py +4 -5
- rasa/core/training/training.py +3 -5
- rasa/core/utils.py +5 -5
- rasa/core/visualize.py +1 -1
- rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
- rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
- rasa/dialogue_understanding/commands/__init__.py +22 -22
- rasa/dialogue_understanding/commands/can_not_handle_command.py +20 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +18 -7
- rasa/dialogue_understanding/commands/change_flow_command.py +18 -2
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +18 -4
- rasa/dialogue_understanding/commands/clarify_command.py +19 -3
- rasa/dialogue_understanding/commands/command.py +19 -3
- rasa/dialogue_understanding/commands/correct_slots_command.py +3 -3
- rasa/dialogue_understanding/commands/error_command.py +1 -1
- rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
- rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
- rasa/dialogue_understanding/commands/human_handoff_command.py +16 -4
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +18 -4
- rasa/dialogue_understanding/commands/noop_command.py +2 -1
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +16 -4
- rasa/dialogue_understanding/commands/restart_command.py +2 -5
- rasa/dialogue_understanding/commands/session_end_command.py +3 -5
- rasa/dialogue_understanding/commands/session_start_command.py +3 -5
- rasa/dialogue_understanding/commands/set_slot_command.py +27 -3
- rasa/dialogue_understanding/commands/skip_question_command.py +16 -4
- rasa/dialogue_understanding/commands/start_flow_command.py +17 -2
- rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
- rasa/dialogue_understanding/commands/utils.py +64 -45
- rasa/dialogue_understanding/constants.py +1 -0
- rasa/dialogue_understanding/generator/command_generator.py +2 -119
- rasa/dialogue_understanding/generator/command_parser.py +201 -0
- rasa/dialogue_understanding/generator/constants.py +2 -2
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +11 -57
- rasa/dialogue_understanding/generator/llm_command_generator.py +2 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +67 -120
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +8 -10
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +32 -93
- rasa/dialogue_understanding/generator/utils.py +45 -0
- rasa/dialogue_understanding/patterns/cancel.py +2 -1
- rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
- rasa/dialogue_understanding/patterns/chitchat.py +1 -1
- rasa/dialogue_understanding/patterns/clarify.py +2 -1
- rasa/dialogue_understanding/patterns/code_change.py +2 -0
- rasa/dialogue_understanding/patterns/collect_information.py +6 -3
- rasa/dialogue_understanding/patterns/completed.py +1 -1
- rasa/dialogue_understanding/patterns/continue_interrupted.py +10 -1
- rasa/dialogue_understanding/patterns/correction.py +4 -2
- rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
- rasa/dialogue_understanding/patterns/internal_error.py +1 -0
- rasa/dialogue_understanding/patterns/search.py +1 -1
- rasa/dialogue_understanding/patterns/session_start.py +1 -1
- rasa/dialogue_understanding/patterns/skip_question.py +1 -0
- rasa/dialogue_understanding/patterns/user_silence.py +1 -1
- rasa/dialogue_understanding/processor/command_processor.py +13 -9
- rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
- rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
- rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
- rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
- rasa/dialogue_understanding/stack/utils.py +8 -4
- rasa/dialogue_understanding/utils.py +121 -2
- rasa/dialogue_understanding_test/README.md +379 -0
- rasa/dialogue_understanding_test/command_comparison.py +60 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +110 -4
- rasa/dialogue_understanding_test/constants.py +6 -1
- rasa/dialogue_understanding_test/du_test_case.py +252 -38
- rasa/dialogue_understanding_test/du_test_result.py +281 -2
- rasa/dialogue_understanding_test/du_test_runner.py +239 -10
- rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
- rasa/dialogue_understanding_test/io.py +338 -20
- rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
- rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
- rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
- rasa/dialogue_understanding_test/utils.py +70 -0
- rasa/dialogue_understanding_test/validation.py +59 -4
- rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
- rasa/e2e_test/assertions.py +1 -1
- rasa/e2e_test/e2e_config.py +1 -1
- rasa/e2e_test/e2e_test_case.py +3 -4
- rasa/e2e_test/e2e_test_converter.py +2 -3
- rasa/e2e_test/e2e_test_coverage_report.py +6 -6
- rasa/e2e_test/e2e_test_result.py +1 -1
- rasa/e2e_test/e2e_test_runner.py +134 -31
- rasa/e2e_test/stub_custom_action.py +1 -1
- rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
- rasa/e2e_test/utils/io.py +132 -65
- rasa/e2e_test/utils/validation.py +1 -1
- rasa/engine/caching.py +5 -7
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +2 -2
- rasa/engine/recipes/default_components.py +13 -15
- rasa/engine/recipes/recipe.py +2 -2
- rasa/engine/runner/dask.py +2 -2
- rasa/engine/runner/interface.py +1 -0
- rasa/engine/storage/local_model_storage.py +5 -4
- rasa/engine/storage/resource.py +2 -1
- rasa/engine/storage/storage.py +5 -3
- rasa/engine/training/components.py +2 -1
- rasa/engine/training/fingerprinting.py +4 -2
- rasa/engine/training/graph_trainer.py +4 -4
- rasa/engine/training/hooks.py +2 -2
- rasa/engine/validation.py +34 -33
- rasa/exceptions.py +3 -2
- rasa/graph_components/converters/nlu_message_converter.py +3 -3
- rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
- rasa/graph_components/providers/domain_provider.py +3 -2
- rasa/graph_components/providers/flows_provider.py +2 -3
- rasa/graph_components/providers/forms_provider.py +4 -4
- rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
- rasa/graph_components/providers/responses_provider.py +4 -4
- rasa/graph_components/providers/rule_only_provider.py +3 -2
- rasa/graph_components/providers/story_graph_provider.py +8 -8
- rasa/graph_components/providers/training_tracker_provider.py +3 -2
- rasa/graph_components/validators/default_recipe_validator.py +16 -16
- rasa/graph_components/validators/finetuning_validator.py +10 -8
- rasa/hooks.py +18 -12
- rasa/jupyter.py +2 -2
- rasa/llm_fine_tuning/annotation_module.py +4 -4
- rasa/llm_fine_tuning/conversations.py +6 -6
- rasa/llm_fine_tuning/llm_data_preparation_module.py +1 -1
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +1 -1
- rasa/llm_fine_tuning/paraphrasing_module.py +1 -1
- rasa/llm_fine_tuning/storage.py +3 -3
- rasa/markers/marker.py +2 -3
- rasa/markers/marker_base.py +1 -2
- rasa/markers/upload.py +2 -2
- rasa/markers/validate.py +2 -3
- rasa/model.py +3 -5
- rasa/model_manager/config.py +1 -1
- rasa/model_manager/model_api.py +5 -4
- rasa/model_manager/runner_service.py +6 -6
- rasa/model_manager/socket_bridge.py +8 -3
- rasa/model_manager/studio_jwt_auth.py +1 -0
- rasa/model_manager/trainer_service.py +9 -7
- rasa/model_manager/utils.py +1 -1
- rasa/model_manager/warm_rasa_process.py +14 -8
- rasa/model_service.py +5 -6
- rasa/model_testing.py +13 -15
- rasa/nlu/classifiers/diet_classifier.py +72 -73
- rasa/nlu/classifiers/fallback_classifier.py +9 -8
- rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
- rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
- rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
- rasa/nlu/classifiers/regex_message_handler.py +3 -2
- rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
- rasa/nlu/convert.py +2 -2
- rasa/nlu/emulators/dialogflow.py +3 -3
- rasa/nlu/emulators/luis.py +5 -5
- rasa/nlu/emulators/no_emulator.py +1 -0
- rasa/nlu/emulators/wit.py +4 -4
- rasa/nlu/extractors/crf_entity_extractor.py +11 -11
- rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
- rasa/nlu/extractors/entity_synonyms.py +10 -9
- rasa/nlu/extractors/extractor.py +16 -16
- rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
- rasa/nlu/extractors/regex_entity_extractor.py +11 -10
- rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
- rasa/nlu/featurizers/featurizer.py +5 -4
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
- rasa/nlu/model.py +0 -1
- rasa/nlu/selectors/response_selector.py +67 -68
- rasa/nlu/test.py +38 -38
- rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
- rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
- rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
- rasa/nlu/tokenizers/tokenizer.py +6 -7
- rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
- rasa/nlu/utils/bilou_utils.py +7 -7
- rasa/nlu/utils/hugging_face/registry.py +22 -22
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
- rasa/nlu/utils/mitie_utils.py +2 -1
- rasa/nlu/utils/pattern_utils.py +1 -1
- rasa/nlu/utils/spacy_utils.py +3 -3
- rasa/plugin.py +12 -1
- rasa/server.py +37 -1
- rasa/shared/constants.py +22 -2
- rasa/shared/core/command_payload_reader.py +15 -7
- rasa/shared/core/constants.py +4 -1
- rasa/shared/core/conversation.py +1 -2
- rasa/shared/core/events.py +47 -37
- rasa/shared/core/flows/__init__.py +0 -1
- rasa/shared/core/flows/flow.py +11 -11
- rasa/shared/core/flows/flow_step.py +19 -13
- rasa/shared/core/flows/flow_step_links.py +21 -14
- rasa/shared/core/flows/flow_step_sequence.py +6 -4
- rasa/shared/core/flows/flows_list.py +3 -3
- rasa/shared/core/flows/nlu_trigger.py +1 -1
- rasa/shared/core/flows/steps/__init__.py +2 -2
- rasa/shared/core/flows/steps/action.py +4 -3
- rasa/shared/core/flows/steps/call.py +4 -4
- rasa/shared/core/flows/steps/collect.py +7 -4
- rasa/shared/core/flows/steps/continuation.py +3 -1
- rasa/shared/core/flows/steps/end.py +3 -1
- rasa/shared/core/flows/steps/internal.py +3 -2
- rasa/shared/core/flows/steps/link.py +6 -4
- rasa/shared/core/flows/steps/no_operation.py +7 -5
- rasa/shared/core/flows/steps/set_slots.py +4 -3
- rasa/shared/core/flows/steps/start.py +3 -1
- rasa/shared/core/flows/utils.py +1 -0
- rasa/shared/core/flows/validation.py +3 -5
- rasa/shared/core/generator.py +20 -21
- rasa/shared/core/slot_mappings.py +15 -15
- rasa/shared/core/slots.py +3 -3
- rasa/shared/core/trackers.py +31 -31
- rasa/shared/core/training_data/loading.py +1 -1
- rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
- rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
- rasa/shared/core/training_data/structures.py +11 -12
- rasa/shared/core/training_data/visualization.py +10 -10
- rasa/shared/data.py +6 -6
- rasa/shared/engine/caching.py +0 -1
- rasa/shared/exceptions.py +2 -2
- rasa/shared/importers/rasa.py +5 -6
- rasa/shared/importers/utils.py +1 -1
- rasa/shared/nlu/constants.py +3 -0
- rasa/shared/nlu/training_data/entities_parser.py +6 -6
- rasa/shared/nlu/training_data/features.py +3 -3
- rasa/shared/nlu/training_data/formats/__init__.py +1 -1
- rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
- rasa/shared/nlu/training_data/formats/luis.py +7 -8
- rasa/shared/nlu/training_data/formats/rasa.py +4 -5
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
- rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
- rasa/shared/nlu/training_data/formats/wit.py +3 -4
- rasa/shared/nlu/training_data/loading.py +4 -4
- rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
- rasa/shared/nlu/training_data/message.py +13 -14
- rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
- rasa/shared/nlu/training_data/schemas/responses.yml +1 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
- rasa/shared/nlu/training_data/training_data.py +12 -13
- rasa/shared/nlu/training_data/util.py +11 -10
- rasa/shared/providers/_configs/azure_openai_client_config.py +3 -119
- rasa/shared/providers/_configs/client_config.py +1 -3
- rasa/shared/providers/_configs/default_litellm_client_config.py +1 -3
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -3
- rasa/shared/providers/_configs/litellm_router_client_config.py +1 -3
- rasa/shared/providers/_configs/model_group_config.py +2 -7
- rasa/shared/providers/_configs/openai_client_config.py +1 -3
- rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -3
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -3
- rasa/shared/providers/_configs/utils.py +1 -0
- rasa/shared/providers/_ssl_verification_utils.py +5 -6
- rasa/shared/providers/_utils.py +5 -5
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +3 -26
- rasa/shared/providers/embedding/embedding_client.py +1 -1
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +1 -3
- rasa/shared/providers/llm/_base_litellm_client.py +1 -3
- rasa/shared/providers/llm/azure_openai_llm_client.py +25 -79
- rasa/shared/providers/llm/default_litellm_llm_client.py +1 -3
- rasa/shared/providers/llm/litellm_router_llm_client.py +2 -21
- rasa/shared/providers/llm/llm_client.py +1 -3
- rasa/shared/providers/llm/llm_response.py +41 -2
- rasa/shared/providers/llm/openai_llm_client.py +3 -9
- rasa/shared/providers/llm/rasa_llm_client.py +6 -20
- rasa/shared/providers/llm/self_hosted_llm_client.py +3 -9
- rasa/shared/providers/mappings.py +18 -19
- rasa/shared/providers/router/_base_litellm_router_client.py +1 -3
- rasa/shared/providers/router/router_client.py +1 -3
- rasa/shared/utils/cli.py +1 -1
- rasa/shared/utils/common.py +1 -1
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
- rasa/shared/utils/health_check/health_check.py +3 -3
- rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
- rasa/shared/utils/io.py +1 -1
- rasa/shared/utils/llm.py +5 -9
- rasa/shared/utils/pykwalify_extensions.py +1 -1
- rasa/shared/utils/schemas/events.py +1 -1
- rasa/shared/utils/yaml.py +29 -26
- rasa/studio/auth.py +3 -3
- rasa/studio/config.py +1 -2
- rasa/studio/data_handler.py +3 -3
- rasa/studio/download.py +1 -1
- rasa/studio/results_logger.py +3 -3
- rasa/studio/upload.py +2 -0
- rasa/telemetry.py +31 -0
- rasa/tracing/config.py +3 -3
- rasa/tracing/instrumentation/attribute_extractors.py +2 -0
- rasa/tracing/instrumentation/instrumentation.py +4 -4
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
- rasa/tracing/instrumentation/metrics.py +11 -11
- rasa/tracing/metric_instrument_provider.py +14 -14
- rasa/utils/common.py +12 -9
- rasa/utils/endpoints.py +1 -1
- rasa/utils/io.py +7 -7
- rasa/utils/licensing.py +3 -4
- rasa/utils/log_utils.py +7 -6
- rasa/utils/ml_utils.py +1 -0
- rasa/utils/plotting.py +3 -3
- rasa/utils/sanic_error_handler.py +1 -1
- rasa/utils/tensorflow/callback.py +2 -2
- rasa/utils/tensorflow/crf.py +2 -2
- rasa/utils/tensorflow/data_generator.py +5 -5
- rasa/utils/tensorflow/environment.py +3 -3
- rasa/utils/tensorflow/feature_array.py +2 -3
- rasa/utils/tensorflow/layers.py +18 -12
- rasa/utils/tensorflow/layers_utils.py +2 -1
- rasa/utils/tensorflow/metrics.py +2 -2
- rasa/utils/tensorflow/model_data.py +7 -7
- rasa/utils/tensorflow/model_data_utils.py +10 -9
- rasa/utils/tensorflow/models.py +31 -32
- rasa/utils/tensorflow/rasa_layers.py +20 -19
- rasa/utils/tensorflow/types.py +2 -1
- rasa/utils/train_utils.py +23 -21
- rasa/utils/url_tools.py +1 -1
- rasa/validator.py +17 -1
- rasa/version.py +1 -1
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/METADATA +8 -9
- rasa_pro-3.12.0.dev3.dist-info/RECORD +800 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +0 -1
- rasa/shared/providers/_configs/azure_entra_id_client_creds.py +0 -40
- rasa/shared/providers/_configs/azure_entra_id_config.py +0 -533
- rasa/shared/providers/_configs/oauth_config.py +0 -33
- rasa/shared/providers/constants.py +0 -6
- rasa_pro-3.12.0.dev2.dist-info/RECORD +0 -793
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev3.dist-info}/entry_points.txt +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from typing import Any, Dict, List, Optional, Text
|
|
3
4
|
|
|
4
5
|
import regex
|
|
5
6
|
|
|
6
7
|
import rasa.shared.utils.io
|
|
7
8
|
import rasa.utils.io
|
|
8
|
-
|
|
9
9
|
from rasa.engine.graph import ExecutionContext
|
|
10
10
|
from rasa.engine.recipes.default_recipe import DefaultV1Recipe
|
|
11
11
|
from rasa.engine.storage.resource import Resource
|
rasa/nlu/utils/bilou_utils.py
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import operator
|
|
3
|
-
from collections import
|
|
4
|
-
from typing import
|
|
3
|
+
from collections import Counter, defaultdict
|
|
4
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple
|
|
5
5
|
|
|
6
6
|
from rasa.nlu.constants import (
|
|
7
|
-
TOKENS_NAMES,
|
|
8
7
|
BILOU_ENTITIES,
|
|
9
8
|
BILOU_ENTITIES_GROUP,
|
|
10
9
|
BILOU_ENTITIES_ROLE,
|
|
10
|
+
TOKENS_NAMES,
|
|
11
11
|
)
|
|
12
12
|
from rasa.shared.nlu.constants import (
|
|
13
|
-
TEXT,
|
|
14
13
|
ENTITIES,
|
|
15
|
-
ENTITY_ATTRIBUTE_START,
|
|
16
14
|
ENTITY_ATTRIBUTE_END,
|
|
17
|
-
ENTITY_ATTRIBUTE_TYPE,
|
|
18
15
|
ENTITY_ATTRIBUTE_GROUP,
|
|
19
16
|
ENTITY_ATTRIBUTE_ROLE,
|
|
17
|
+
ENTITY_ATTRIBUTE_START,
|
|
18
|
+
ENTITY_ATTRIBUTE_TYPE,
|
|
20
19
|
NO_ENTITY_TAG,
|
|
20
|
+
TEXT,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING:
|
|
24
24
|
from rasa.nlu.tokenizers.tokenizer import Token
|
|
25
|
-
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
26
25
|
from rasa.shared.nlu.training_data.message import Message
|
|
26
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
27
27
|
|
|
28
28
|
logger = logging.getLogger(__name__)
|
|
29
29
|
|
|
@@ -6,42 +6,42 @@ from typing import Dict, Text, Type
|
|
|
6
6
|
logging.getLogger("transformers.file_utils").setLevel(logging.WARNING)
|
|
7
7
|
|
|
8
8
|
from transformers import ( # noqa: E402
|
|
9
|
-
|
|
9
|
+
BertTokenizer,
|
|
10
|
+
CamembertTokenizer,
|
|
11
|
+
# XLMTokenizer,
|
|
12
|
+
DistilBertTokenizer,
|
|
13
|
+
GPT2Tokenizer,
|
|
14
|
+
OpenAIGPTTokenizer,
|
|
15
|
+
PreTrainedTokenizer,
|
|
16
|
+
RobertaTokenizer,
|
|
10
17
|
TFBertModel,
|
|
11
|
-
|
|
12
|
-
TFGPT2Model,
|
|
13
|
-
TFXLNetModel,
|
|
18
|
+
TFCamembertModel,
|
|
14
19
|
# TFXLMModel,
|
|
15
20
|
TFDistilBertModel,
|
|
21
|
+
TFGPT2Model,
|
|
22
|
+
TFOpenAIGPTModel,
|
|
23
|
+
TFPreTrainedModel,
|
|
16
24
|
TFRobertaModel,
|
|
17
|
-
|
|
18
|
-
PreTrainedTokenizer,
|
|
19
|
-
BertTokenizer,
|
|
20
|
-
OpenAIGPTTokenizer,
|
|
21
|
-
GPT2Tokenizer,
|
|
25
|
+
TFXLNetModel,
|
|
22
26
|
XLNetTokenizer,
|
|
23
|
-
# XLMTokenizer,
|
|
24
|
-
DistilBertTokenizer,
|
|
25
|
-
RobertaTokenizer,
|
|
26
|
-
CamembertTokenizer,
|
|
27
27
|
)
|
|
28
|
+
|
|
28
29
|
from rasa.nlu.utils.hugging_face.transformers_pre_post_processors import ( # noqa: E402
|
|
30
|
+
bert_embeddings_post_processor,
|
|
31
|
+
bert_tokens_cleaner,
|
|
29
32
|
bert_tokens_pre_processor,
|
|
33
|
+
camembert_tokens_pre_processor,
|
|
34
|
+
gpt2_tokens_cleaner,
|
|
35
|
+
gpt_embeddings_post_processor,
|
|
30
36
|
gpt_tokens_pre_processor,
|
|
31
|
-
|
|
37
|
+
openaigpt_tokens_cleaner,
|
|
38
|
+
roberta_embeddings_post_processor,
|
|
32
39
|
roberta_tokens_pre_processor,
|
|
33
|
-
bert_embeddings_post_processor,
|
|
34
|
-
gpt_embeddings_post_processor,
|
|
35
40
|
xlnet_embeddings_post_processor,
|
|
36
|
-
roberta_embeddings_post_processor,
|
|
37
|
-
bert_tokens_cleaner,
|
|
38
|
-
openaigpt_tokens_cleaner,
|
|
39
|
-
gpt2_tokens_cleaner,
|
|
40
41
|
xlnet_tokens_cleaner,
|
|
41
|
-
|
|
42
|
+
xlnet_tokens_pre_processor,
|
|
42
43
|
)
|
|
43
44
|
|
|
44
|
-
|
|
45
45
|
model_class_dict: Dict[Text, Type[TFPreTrainedModel]] = {
|
|
46
46
|
"bert": TFBertModel,
|
|
47
47
|
"gpt": TFOpenAIGPTModel,
|
rasa/nlu/utils/mitie_utils.py
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
import typing
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
from typing import Any, Dict, List, Optional, Text
|
|
5
6
|
|
|
6
|
-
from rasa.engine.graph import
|
|
7
|
+
from rasa.engine.graph import ExecutionContext, GraphComponent
|
|
7
8
|
from rasa.engine.recipes.default_recipe import DefaultV1Recipe
|
|
8
9
|
from rasa.engine.storage.resource import Resource
|
|
9
10
|
from rasa.engine.storage.storage import ModelStorage
|
rasa/nlu/utils/pattern_utils.py
CHANGED
|
@@ -2,8 +2,8 @@ import re
|
|
|
2
2
|
from typing import Dict, List, Text, Union
|
|
3
3
|
|
|
4
4
|
import rasa.shared.utils.io
|
|
5
|
-
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
6
5
|
from rasa.shared.exceptions import InvalidConfigException
|
|
6
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def _convert_lookup_tables_to_regex(
|
rasa/nlu/utils/spacy_utils.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
|
-
import typing
|
|
5
4
|
import logging
|
|
5
|
+
import typing
|
|
6
6
|
from typing import Any, Dict, List, Optional, Text, Tuple
|
|
7
7
|
|
|
8
8
|
from rasa.engine.graph import ExecutionContext, GraphComponent
|
|
@@ -10,10 +10,10 @@ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
|
|
|
10
10
|
from rasa.engine.storage.resource import Resource
|
|
11
11
|
from rasa.engine.storage.storage import ModelStorage
|
|
12
12
|
from rasa.nlu.constants import DENSE_FEATURIZABLE_ATTRIBUTES, SPACY_DOCS
|
|
13
|
-
from rasa.shared.nlu.training_data.message import Message
|
|
14
|
-
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
15
13
|
from rasa.nlu.model import InvalidModelError
|
|
16
14
|
from rasa.shared.constants import DOCS_URL_COMPONENTS
|
|
15
|
+
from rasa.shared.nlu.training_data.message import Message
|
|
16
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
19
19
|
|
rasa/plugin.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import argparse
|
|
4
4
|
import functools
|
|
5
5
|
import sys
|
|
6
|
-
from typing import Any, List, Optional,
|
|
6
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Text, Union
|
|
7
7
|
|
|
8
8
|
import pluggy
|
|
9
9
|
|
|
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
|
|
|
13
13
|
from rasa.core.brokers.broker import EventBroker
|
|
14
14
|
from rasa.core.tracker_store import TrackerStore
|
|
15
15
|
from rasa.shared.core.domain import Domain
|
|
16
|
+
from rasa.shared.core.trackers import DialogueStateTracker
|
|
16
17
|
from rasa.utils.endpoints import EndpointConfig
|
|
17
18
|
|
|
18
19
|
|
|
@@ -88,3 +89,13 @@ def after_server_stop() -> None:
|
|
|
88
89
|
Use this hook to de-initialize any resources that require explicit cleanup like,
|
|
89
90
|
thread shutdown, closing connections, etc.
|
|
90
91
|
"""
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@hookspec # type: ignore[misc]
|
|
95
|
+
def after_new_user_message(tracker: "DialogueStateTracker") -> None:
|
|
96
|
+
"""Hook specification for after a new user message is received."""
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@hookspec # type: ignore[misc]
|
|
100
|
+
def after_action_executed(tracker: "DialogueStateTracker") -> None:
|
|
101
|
+
"""Hook specification for after an action is executed."""
|
rasa/server.py
CHANGED
|
@@ -60,11 +60,13 @@ from rasa.shared.constants import (
|
|
|
60
60
|
DEFAULT_MODELS_PATH,
|
|
61
61
|
DEFAULT_SENDER_ID,
|
|
62
62
|
DOCS_BASE_URL,
|
|
63
|
+
DOCS_URL_FLOWS,
|
|
63
64
|
DOCS_URL_TRAINING_DATA,
|
|
64
65
|
TEST_STORIES_FILE_PREFIX,
|
|
65
66
|
)
|
|
66
67
|
from rasa.shared.core.domain import Domain, InvalidDomain
|
|
67
68
|
from rasa.shared.core.events import Event
|
|
69
|
+
from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
|
|
68
70
|
from rasa.shared.core.trackers import (
|
|
69
71
|
DialogueStateTracker,
|
|
70
72
|
EventVerbosity,
|
|
@@ -72,6 +74,7 @@ from rasa.shared.core.trackers import (
|
|
|
72
74
|
from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
|
|
73
75
|
YAMLStoryWriter,
|
|
74
76
|
)
|
|
77
|
+
from rasa.shared.exceptions import RasaException, YamlException
|
|
75
78
|
from rasa.shared.importers.importer import TrainingDataImporter
|
|
76
79
|
from rasa.shared.nlu.training_data.formats import RasaYAMLReader
|
|
77
80
|
from rasa.shared.utils.schemas.events import EVENTS_SCHEMA
|
|
@@ -1566,7 +1569,8 @@ def _nlu_training_payload_from_json(
|
|
|
1566
1569
|
)
|
|
1567
1570
|
|
|
1568
1571
|
|
|
1569
|
-
def
|
|
1572
|
+
def _validate_nlu_training_data_payload(yaml_text: str) -> None:
|
|
1573
|
+
"""Validate the NLU training data payload of the request body."""
|
|
1570
1574
|
try:
|
|
1571
1575
|
RasaYAMLReader().validate(yaml_text)
|
|
1572
1576
|
except Exception as e:
|
|
@@ -1578,6 +1582,38 @@ def _validate_yaml_training_payload(yaml_text: Text) -> None:
|
|
|
1578
1582
|
)
|
|
1579
1583
|
|
|
1580
1584
|
|
|
1585
|
+
def _validate_flows_payload(yaml_text: str) -> None:
|
|
1586
|
+
"""Validate the flows payload of the request body."""
|
|
1587
|
+
try:
|
|
1588
|
+
YAMLFlowsReader().read_from_string(yaml_text)
|
|
1589
|
+
except (YamlException, RasaException) as exc:
|
|
1590
|
+
# if the payload does not contain any flows, we can ignore the error
|
|
1591
|
+
if (
|
|
1592
|
+
hasattr(exc, "validation_errors")
|
|
1593
|
+
and exc.validation_errors is not None
|
|
1594
|
+
and any(
|
|
1595
|
+
[
|
|
1596
|
+
"'flows' is a required property" in error.message
|
|
1597
|
+
for error in exc.validation_errors
|
|
1598
|
+
]
|
|
1599
|
+
)
|
|
1600
|
+
):
|
|
1601
|
+
return None
|
|
1602
|
+
|
|
1603
|
+
raise ErrorResponse(
|
|
1604
|
+
HTTPStatus.BAD_REQUEST,
|
|
1605
|
+
"BadRequest",
|
|
1606
|
+
f"The request body does not contain valid YAML. Error: {exc}",
|
|
1607
|
+
help_url=DOCS_URL_FLOWS,
|
|
1608
|
+
)
|
|
1609
|
+
|
|
1610
|
+
|
|
1611
|
+
def _validate_yaml_training_payload(yaml_text: str) -> None:
|
|
1612
|
+
"""Validate the YAML training payload of the request body."""
|
|
1613
|
+
_validate_nlu_training_data_payload(yaml_text)
|
|
1614
|
+
_validate_flows_payload(yaml_text)
|
|
1615
|
+
|
|
1616
|
+
|
|
1581
1617
|
def _extract_core_additional_arguments(request: Request) -> Dict[Text, Any]:
|
|
1582
1618
|
return {
|
|
1583
1619
|
"augmentation_factor": rasa.utils.endpoints.int_arg(request, "augmentation", 50)
|
rasa/shared/constants.py
CHANGED
|
@@ -19,6 +19,7 @@ DOCS_URL_GRAPH_COMPONENTS = DOCS_URL_CONCEPTS + "/components/custom-graph-compon
|
|
|
19
19
|
DOCS_URL_GRAPH_RECIPE = DOCS_URL_CONCEPTS + "/components/graph-recipe"
|
|
20
20
|
DOCS_URL_CATEGORICAL_SLOTS = DOCS_URL_CONCEPTS + "/domain#categorical-slot"
|
|
21
21
|
DOCS_URL_DOMAIN = DOCS_URL_CONCEPTS + "/domain"
|
|
22
|
+
DOCS_URL_FLOWS = DOCS_URL_CONCEPTS + "/flows"
|
|
22
23
|
|
|
23
24
|
# Docs URLs for NLU-based assistants
|
|
24
25
|
DOCS_URL_TRAINING_DATA = DOCS_URL_NLU_BASED + "/training-data-format"
|
|
@@ -161,7 +162,6 @@ AZURE_AD_TOKEN_ENV_VAR = "AZURE_AD_TOKEN"
|
|
|
161
162
|
AZURE_API_BASE_ENV_VAR = "AZURE_API_BASE"
|
|
162
163
|
AZURE_API_VERSION_ENV_VAR = "AZURE_API_VERSION"
|
|
163
164
|
AZURE_API_TYPE_ENV_VAR = "AZURE_API_TYPE"
|
|
164
|
-
AZURE_AD_SCOPES_ENV_VAR = "AZURE_AD_SCOPES"
|
|
165
165
|
AZURE_SPEECH_API_KEY_ENV_VAR = "AZURE_SPEECH_API_KEY"
|
|
166
166
|
|
|
167
167
|
DEEPGRAM_API_KEY_ENV_VAR = "DEEPGRAM_API_KEY"
|
|
@@ -198,6 +198,7 @@ MODEL_CONFIG_KEY = "model"
|
|
|
198
198
|
MODEL_NAME_CONFIG_KEY = "model_name"
|
|
199
199
|
PROMPT_CONFIG_KEY = "prompt"
|
|
200
200
|
PROMPT_TEMPLATE_CONFIG_KEY = "prompt_template"
|
|
201
|
+
|
|
201
202
|
STREAM_CONFIG_KEY = "stream"
|
|
202
203
|
N_REPHRASES_CONFIG_KEY = "n"
|
|
203
204
|
USE_CHAT_COMPLETIONS_ENDPOINT_CONFIG_KEY = "use_chat_completions_endpoint"
|
|
@@ -231,6 +232,12 @@ LITELLM_PARAMS_KEY = "litellm_params"
|
|
|
231
232
|
LLM_API_HEALTH_CHECK_ENV_VAR = "LLM_API_HEALTH_CHECK"
|
|
232
233
|
LLM_API_HEALTH_CHECK_DEFAULT_VALUE = "false"
|
|
233
234
|
|
|
235
|
+
AZURE_API_KEY_ENV_VAR = "AZURE_API_KEY"
|
|
236
|
+
AZURE_AD_TOKEN_ENV_VAR = "AZURE_AD_TOKEN"
|
|
237
|
+
AZURE_API_BASE_ENV_VAR = "AZURE_API_BASE"
|
|
238
|
+
AZURE_API_VERSION_ENV_VAR = "AZURE_API_VERSION"
|
|
239
|
+
AZURE_API_TYPE_ENV_VAR = "AZURE_API_TYPE"
|
|
240
|
+
|
|
234
241
|
AWS_REGION_NAME_CONFIG_KEY = "aws_region_name"
|
|
235
242
|
AWS_ACCESS_KEY_ID_CONFIG_KEY = "aws_access_key_id"
|
|
236
243
|
AWS_SECRET_ACCESS_KEY_CONFIG_KEY = "aws_secret_access_key"
|
|
@@ -266,11 +273,17 @@ RASA_PROVIDER = "rasa"
|
|
|
266
273
|
SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
|
|
267
274
|
SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
|
|
268
275
|
|
|
276
|
+
SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
|
|
277
|
+
SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
|
|
278
|
+
|
|
269
279
|
VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY = [
|
|
270
280
|
OPENAI_PROVIDER,
|
|
271
281
|
AZURE_OPENAI_PROVIDER,
|
|
272
282
|
]
|
|
273
283
|
|
|
284
|
+
SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
|
|
285
|
+
SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
|
|
286
|
+
|
|
274
287
|
AZURE_API_TYPE = "azure"
|
|
275
288
|
OPENAI_API_TYPE = "openai"
|
|
276
289
|
|
|
@@ -308,4 +321,11 @@ SENSITIVE_DATA = [
|
|
|
308
321
|
AWS_SESSION_TOKEN_CONFIG_KEY,
|
|
309
322
|
]
|
|
310
323
|
|
|
311
|
-
|
|
324
|
+
# Used for key values in BotUtterance.data
|
|
325
|
+
TEXT = "text"
|
|
326
|
+
ELEMENTS = "elements"
|
|
327
|
+
QUICK_REPLIES = "quick_replies"
|
|
328
|
+
BUTTONS = "buttons"
|
|
329
|
+
ATTACHMENT = "attachment"
|
|
330
|
+
IMAGE = "image"
|
|
331
|
+
CUSTOM = "custom"
|
|
@@ -4,7 +4,9 @@ from typing import List, Optional
|
|
|
4
4
|
|
|
5
5
|
import structlog
|
|
6
6
|
|
|
7
|
+
from rasa.dialogue_understanding.commands import Command
|
|
7
8
|
from rasa.dialogue_understanding.commands.set_slot_command import SetSlotExtractor
|
|
9
|
+
from rasa.dialogue_understanding.utils import add_commands_to_message_parse_data
|
|
8
10
|
from rasa.shared.core.domain import Domain
|
|
9
11
|
from rasa.shared.nlu.constants import COMMANDS, SET_SLOT_COMMAND, TEXT
|
|
10
12
|
from rasa.shared.nlu.training_data.message import Message
|
|
@@ -78,13 +80,18 @@ class CommandPayloadReader:
|
|
|
78
80
|
)
|
|
79
81
|
|
|
80
82
|
# Create new SetSlot commands from the extracted attributes.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
command = {
|
|
84
|
+
"command": SET_SLOT_COMMAND,
|
|
85
|
+
"name": slot_name,
|
|
86
|
+
"value": slot_value,
|
|
87
|
+
"extractor": entity_extractor_name,
|
|
88
|
+
}
|
|
89
|
+
commands.append(command)
|
|
90
|
+
|
|
91
|
+
add_commands_to_message_parse_data(
|
|
92
|
+
message,
|
|
93
|
+
CommandPayloadReader.__name__,
|
|
94
|
+
[Command.command_from_json(command)],
|
|
88
95
|
)
|
|
89
96
|
|
|
90
97
|
structlogger.debug(
|
|
@@ -94,6 +101,7 @@ class CommandPayloadReader:
|
|
|
94
101
|
|
|
95
102
|
# set the command(s) on the Message object
|
|
96
103
|
message.set(COMMANDS, commands, add_to_output=True)
|
|
104
|
+
|
|
97
105
|
return message
|
|
98
106
|
|
|
99
107
|
@staticmethod
|
rasa/shared/core/constants.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from enum import Enum
|
|
3
4
|
|
|
4
5
|
import rasa.shared.constants as constants
|
|
5
6
|
|
|
6
|
-
|
|
7
7
|
DEFAULT_CATEGORICAL_SLOT_VALUE = "__other__"
|
|
8
8
|
|
|
9
9
|
USER_INTENT_RESTART = "restart"
|
|
@@ -52,6 +52,9 @@ ACTION_RESET_ROUTING = "action_reset_routing"
|
|
|
52
52
|
ACTION_HANGUP = "action_hangup"
|
|
53
53
|
ACTION_REPEAT_BOT_MESSAGES = "action_repeat_bot_messages"
|
|
54
54
|
|
|
55
|
+
ACTION_METADATA_EXECUTION_SUCCESS = "execution_success"
|
|
56
|
+
ACTION_METADATA_EXECUTION_ERROR_MESSAGE = "execution_error_message"
|
|
57
|
+
|
|
55
58
|
|
|
56
59
|
DEFAULT_ACTION_NAMES = [
|
|
57
60
|
ACTION_LISTEN_NAME,
|
rasa/shared/core/conversation.py
CHANGED
rasa/shared/core/events.py
CHANGED
|
@@ -2,68 +2,69 @@ import abc
|
|
|
2
2
|
import copy
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
-
import structlog
|
|
6
5
|
import re
|
|
7
|
-
from abc import ABC
|
|
8
|
-
|
|
9
|
-
import jsonpickle
|
|
10
6
|
import time
|
|
11
7
|
import uuid
|
|
12
|
-
from
|
|
8
|
+
from abc import ABC
|
|
13
9
|
from datetime import datetime
|
|
14
10
|
from typing import (
|
|
15
|
-
List,
|
|
16
|
-
Dict,
|
|
17
|
-
Text,
|
|
18
|
-
Any,
|
|
19
|
-
Type,
|
|
20
|
-
Optional,
|
|
21
11
|
TYPE_CHECKING,
|
|
12
|
+
Any,
|
|
13
|
+
Dict,
|
|
22
14
|
Iterable,
|
|
23
|
-
|
|
15
|
+
List,
|
|
16
|
+
Optional,
|
|
17
|
+
Text,
|
|
24
18
|
Tuple,
|
|
19
|
+
Type,
|
|
25
20
|
TypeVar,
|
|
21
|
+
Union,
|
|
22
|
+
cast,
|
|
26
23
|
)
|
|
27
24
|
|
|
25
|
+
import jsonpickle
|
|
26
|
+
import structlog
|
|
27
|
+
from dateutil import parser
|
|
28
|
+
|
|
28
29
|
import rasa.shared.utils.common
|
|
29
30
|
import rasa.shared.utils.io
|
|
30
|
-
from typing import Union
|
|
31
|
-
|
|
32
31
|
from rasa.shared.constants import DOCS_URL_TRAINING_DATA
|
|
33
32
|
from rasa.shared.core.constants import (
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
ACTION_LISTEN_NAME,
|
|
34
|
+
ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
|
|
35
|
+
ACTION_METADATA_EXECUTION_SUCCESS,
|
|
36
36
|
ACTION_NAME_SENDER_ID_CONNECTOR_STR,
|
|
37
|
+
ACTION_SESSION_START_NAME,
|
|
38
|
+
ENTITY_LABEL_SEPARATOR,
|
|
39
|
+
EXTERNAL_MESSAGE_PREFIX,
|
|
37
40
|
IS_EXTERNAL,
|
|
38
|
-
USE_TEXT_FOR_FEATURIZATION,
|
|
39
41
|
LOOP_INTERRUPTED,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
ACTION_LISTEN_NAME,
|
|
42
|
+
LOOP_NAME,
|
|
43
|
+
USE_TEXT_FOR_FEATURIZATION,
|
|
43
44
|
)
|
|
44
45
|
from rasa.shared.exceptions import UnsupportedFeatureException
|
|
45
46
|
from rasa.shared.nlu.constants import (
|
|
46
|
-
ENTITY_ATTRIBUTE_TYPE,
|
|
47
|
-
INTENT,
|
|
48
|
-
TEXT,
|
|
49
|
-
ENTITIES,
|
|
50
|
-
COMMANDS,
|
|
51
|
-
ENTITY_ATTRIBUTE_VALUE,
|
|
52
|
-
ACTION_TEXT,
|
|
53
47
|
ACTION_NAME,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
PREDICTED_CONFIDENCE_KEY,
|
|
58
|
-
INTENT_RANKING_KEY,
|
|
59
|
-
ENTITY_ATTRIBUTE_TEXT,
|
|
60
|
-
ENTITY_ATTRIBUTE_START,
|
|
48
|
+
ACTION_TEXT,
|
|
49
|
+
COMMANDS,
|
|
50
|
+
ENTITIES,
|
|
61
51
|
ENTITY_ATTRIBUTE_CONFIDENCE,
|
|
62
52
|
ENTITY_ATTRIBUTE_END,
|
|
53
|
+
ENTITY_ATTRIBUTE_GROUP,
|
|
54
|
+
ENTITY_ATTRIBUTE_ROLE,
|
|
55
|
+
ENTITY_ATTRIBUTE_START,
|
|
56
|
+
ENTITY_ATTRIBUTE_TEXT,
|
|
57
|
+
ENTITY_ATTRIBUTE_TYPE,
|
|
58
|
+
ENTITY_ATTRIBUTE_VALUE,
|
|
63
59
|
FULL_RETRIEVAL_INTENT_NAME_KEY,
|
|
60
|
+
INTENT,
|
|
61
|
+
INTENT_NAME_KEY,
|
|
62
|
+
INTENT_RANKING_KEY,
|
|
63
|
+
PREDICTED_CONFIDENCE_KEY,
|
|
64
|
+
PROMPTS,
|
|
65
|
+
TEXT,
|
|
64
66
|
)
|
|
65
67
|
|
|
66
|
-
|
|
67
68
|
if TYPE_CHECKING:
|
|
68
69
|
from typing_extensions import TypedDict
|
|
69
70
|
|
|
@@ -98,6 +99,7 @@ if TYPE_CHECKING:
|
|
|
98
99
|
ENTITIES: List[EntityPrediction],
|
|
99
100
|
"message_id": Optional[Text],
|
|
100
101
|
"metadata": Dict,
|
|
102
|
+
PROMPTS: Dict,
|
|
101
103
|
},
|
|
102
104
|
total=False,
|
|
103
105
|
)
|
|
@@ -147,8 +149,8 @@ def format_message(
|
|
|
147
149
|
Message with entities annotated inline, e.g.
|
|
148
150
|
`I am from [Berlin]{`"`entity`"`: `"`city`"`}`.
|
|
149
151
|
"""
|
|
150
|
-
from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
|
|
151
152
|
from rasa.shared.nlu.training_data import entities_parser
|
|
153
|
+
from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
|
|
152
154
|
|
|
153
155
|
message_from_md = entities_parser.parse_training_example(text, intent)
|
|
154
156
|
deserialised_entities = deserialise_entities(entities)
|
|
@@ -1704,7 +1706,15 @@ class ActionExecuted(Event):
|
|
|
1704
1706
|
super().__init__(timestamp, metadata)
|
|
1705
1707
|
|
|
1706
1708
|
def __members__(self) -> Tuple[Optional[Text], Optional[Text], Text]:
|
|
1707
|
-
|
|
1709
|
+
items_to_ignore = [
|
|
1710
|
+
ACTION_METADATA_EXECUTION_SUCCESS,
|
|
1711
|
+
ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
|
|
1712
|
+
]
|
|
1713
|
+
meta_no_nones = {
|
|
1714
|
+
k: v
|
|
1715
|
+
for k, v in self.metadata.items()
|
|
1716
|
+
if v is not None and k not in items_to_ignore
|
|
1717
|
+
}
|
|
1708
1718
|
return (self.action_name, self.action_text, jsonpickle.encode(meta_no_nones))
|
|
1709
1719
|
|
|
1710
1720
|
def __repr__(self) -> Text:
|
rasa/shared/core/flows/flow.py
CHANGED
|
@@ -4,33 +4,33 @@ import copy
|
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
5
|
from functools import cached_property
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import
|
|
7
|
+
from typing import Any, Dict, List, Optional, Set, Text, Union
|
|
8
8
|
|
|
9
9
|
import structlog
|
|
10
10
|
from pypred import Predicate
|
|
11
11
|
|
|
12
12
|
import rasa.shared.utils.io
|
|
13
13
|
from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
|
|
14
|
-
from rasa.shared.core.flows.flow_path import
|
|
14
|
+
from rasa.shared.core.flows.flow_path import FlowPath, FlowPathsList, PathNode
|
|
15
15
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
16
16
|
from rasa.shared.core.flows.flow_step_links import (
|
|
17
|
+
ElseFlowStepLink,
|
|
17
18
|
FlowStepLink,
|
|
18
|
-
StaticFlowStepLink,
|
|
19
19
|
IfFlowStepLink,
|
|
20
|
-
|
|
20
|
+
StaticFlowStepLink,
|
|
21
21
|
)
|
|
22
22
|
from rasa.shared.core.flows.flow_step_sequence import FlowStepSequence
|
|
23
23
|
from rasa.shared.core.flows.nlu_trigger import NLUTriggers
|
|
24
24
|
from rasa.shared.core.flows.steps import (
|
|
25
|
+
ActionFlowStep,
|
|
25
26
|
CollectInformationFlowStep,
|
|
26
27
|
EndFlowStep,
|
|
27
28
|
StartFlowStep,
|
|
28
|
-
ActionFlowStep,
|
|
29
29
|
)
|
|
30
30
|
from rasa.shared.core.flows.steps.constants import (
|
|
31
31
|
CONTINUE_STEP_PREFIX,
|
|
32
|
-
START_STEP,
|
|
33
32
|
END_STEP,
|
|
33
|
+
START_STEP,
|
|
34
34
|
)
|
|
35
35
|
from rasa.shared.core.flows.steps.continuation import ContinueFlowStep
|
|
36
36
|
from rasa.shared.core.slots import Slot
|
|
@@ -79,7 +79,7 @@ class Flow:
|
|
|
79
79
|
Returns:
|
|
80
80
|
A Flow object.
|
|
81
81
|
"""
|
|
82
|
-
step_sequence = FlowStepSequence.from_json(data.get("steps"))
|
|
82
|
+
step_sequence = FlowStepSequence.from_json(flow_id, data.get("steps"))
|
|
83
83
|
nlu_triggers = NLUTriggers.from_json(data.get("nlu_trigger"))
|
|
84
84
|
|
|
85
85
|
if file_path and isinstance(file_path, Path):
|
|
@@ -185,13 +185,13 @@ class Flow:
|
|
|
185
185
|
return None
|
|
186
186
|
|
|
187
187
|
if step_id == START_STEP:
|
|
188
|
-
return StartFlowStep(self.first_step_in_flow().id)
|
|
188
|
+
return StartFlowStep(self.id, self.first_step_in_flow().id)
|
|
189
189
|
|
|
190
190
|
if step_id == END_STEP:
|
|
191
|
-
return EndFlowStep()
|
|
191
|
+
return EndFlowStep(self.id)
|
|
192
192
|
|
|
193
193
|
if step_id.startswith(CONTINUE_STEP_PREFIX):
|
|
194
|
-
return ContinueFlowStep(step_id[len(CONTINUE_STEP_PREFIX) :])
|
|
194
|
+
return ContinueFlowStep(self.id, step_id[len(CONTINUE_STEP_PREFIX) :])
|
|
195
195
|
|
|
196
196
|
for step in self.steps_with_calls_resolved:
|
|
197
197
|
if step.id == step_id:
|
|
@@ -371,7 +371,7 @@ class Flow:
|
|
|
371
371
|
True if dynamic literals are present, False otherwise.
|
|
372
372
|
"""
|
|
373
373
|
from pypred import ast
|
|
374
|
-
from pypred.tiler import
|
|
374
|
+
from pypred.tiler import SimplePattern, tile
|
|
375
375
|
|
|
376
376
|
if not self.guard_condition:
|
|
377
377
|
return False
|