rasa-pro 3.11.4__py3-none-any.whl → 3.12.0__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.
- README.md +10 -13
- 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 +17 -11
- rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
- rasa/cli/arguments/data.py +2 -2
- rasa/cli/arguments/default_arguments.py +1 -1
- 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 +20 -3
- rasa/cli/dialogue_understanding_test.py +386 -0
- rasa/cli/evaluate.py +1 -1
- rasa/cli/export.py +6 -6
- rasa/cli/inspect.py +20 -1
- rasa/cli/interactive.py +4 -5
- rasa/cli/llm_fine_tuning.py +51 -16
- rasa/cli/markers.py +1 -2
- rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
- rasa/cli/project_templates/calm/config.yml +2 -2
- rasa/cli/project_templates/calm/domain/list_contacts.yml +1 -2
- rasa/cli/project_templates/calm/domain/remove_contact.yml +1 -2
- rasa/cli/project_templates/calm/domain/shared.yml +1 -4
- rasa/cli/project_templates/calm/endpoints.yml +2 -2
- rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
- rasa/cli/shell.py +5 -6
- 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/train.py +3 -0
- rasa/cli/utils.py +25 -5
- rasa/constants.py +0 -1
- rasa/core/__init__.py +0 -1
- rasa/core/actions/action.py +137 -208
- rasa/core/actions/action_handle_digressions.py +164 -0
- 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 +18 -6
- 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/custom_action_executor.py +1 -1
- rasa/core/actions/direct_custom_actions_executor.py +1 -0
- rasa/core/actions/forms.py +22 -15
- 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 +7 -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 +80 -24
- rasa/core/channels/facebook.py +5 -5
- rasa/core/channels/hangouts.py +7 -8
- rasa/core/channels/inspector/dist/assets/Tableau10-1b767f5e.js +1 -0
- rasa/core/channels/inspector/dist/assets/arc-9f1365dc.js +1 -0
- rasa/core/channels/inspector/dist/assets/blockDiagram-38ab4fdb-e0f81b12.js +118 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-3d4e48cf-9deaee1c.js +10 -0
- rasa/core/channels/inspector/dist/assets/channel-44956714.js +1 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-70f12bd4-20450a96.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-f2320105-749d2abf.js +2 -0
- rasa/core/channels/inspector/dist/assets/clone-a9475142.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-89c73b31.js → createText-2e5e7dd3-bef0b38c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/edges-e0da2a9e-943801a7.js +4 -0
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-907e0440.js → erDiagram-9861fffd-d523a948.js} +4 -4
- rasa/core/channels/inspector/dist/assets/flowDb-956e92f1-54e4cf19.js +10 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-66a62f08-48bfbbe8.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-43fa749a.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-4a651766-17c30827.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-c361ad54-43086f2d.js +257 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-72cf32ee-5c8b693e.js +70 -0
- rasa/core/channels/inspector/dist/assets/graph-41a90d26.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3862675e-b43eeae9.js +1 -0
- rasa/core/channels/inspector/dist/assets/{index-e793d777.js → index-e8affe45.js} +201 -196
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-8ceba4db.js → infoDiagram-f8f76790-0b20676b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-960d3809.js → journeyDiagram-49397b02-39bce7b5.js} +4 -4
- rasa/core/channels/inspector/dist/assets/katex-498eb57e.js +261 -0
- rasa/core/channels/inspector/dist/assets/layout-dc8eeea4.js +1 -0
- rasa/core/channels/inspector/dist/assets/{line-eeccc4e2.js → line-c4d2e756.js} +1 -1
- rasa/core/channels/inspector/dist/assets/linear-86f6f2d9.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-fc14e90a-4216f771.js +312 -0
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-dc9b5e1b.js → pieDiagram-8a3498a8-1a0cfa96.js} +7 -7
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-a08cba6d.js → quadrantDiagram-120e2f19-f91e67cf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-87242b9e.js → requirementDiagram-deff3bca-d4046bed.js} +2 -2
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-04a897e0-2cf6d1d7.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-704730f1-751ac4f5.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-587899a1-f734f4d4.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-d93cdb3a-91c65710.js +1 -0
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-cef936a6.js → styles-6aaf32cf-e0cff7be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/styles-9a916d00-c8029e5d.js +160 -0
- rasa/core/channels/inspector/dist/assets/styles-c10674c1-114f312a.js +116 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-08f97a94-b7b9dc00.js +1 -0
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-0d39bdb2.js → timeline-definition-85554ec2-9536d189.js} +3 -3
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-a03fa445.js → xychartDiagram-e933f94c-bf3b0f36.js} +3 -3
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +11 -3
- rasa/core/channels/inspector/src/App.tsx +15 -2
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +31 -0
- rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +68 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +19 -13
- rasa/core/channels/inspector/yarn.lock +94 -99
- 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 +8 -28
- rasa/core/channels/studio_chat.py +212 -0
- rasa/core/channels/telegram.py +105 -55
- rasa/core/channels/twilio.py +3 -3
- rasa/core/channels/vier_cvg.py +2 -2
- rasa/core/channels/voice_ready/audiocodes.py +51 -32
- 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 +2 -2
- rasa/core/channels/voice_stream/asr/asr_engine.py +12 -6
- rasa/core/channels/voice_stream/asr/asr_event.py +5 -0
- rasa/core/channels/voice_stream/asr/azure.py +16 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +76 -19
- rasa/core/channels/voice_stream/audiocodes.py +292 -0
- rasa/core/channels/voice_stream/browser_audio.py +14 -7
- rasa/core/channels/voice_stream/call_state.py +6 -2
- rasa/core/channels/voice_stream/genesys.py +320 -0
- rasa/core/channels/voice_stream/tts/azure.py +13 -5
- rasa/core/channels/voice_stream/tts/cartesia.py +34 -14
- 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 +12 -8
- rasa/core/channels/voice_stream/util.py +1 -1
- rasa/core/channels/voice_stream/voice_channel.py +100 -56
- rasa/core/channels/webexteams.py +3 -4
- rasa/core/constants.py +2 -0
- 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 +12 -9
- rasa/core/nlg/__init__.py +1 -1
- rasa/core/nlg/callback.py +2 -3
- rasa/core/nlg/contextual_response_rephraser.py +82 -14
- rasa/core/nlg/generator.py +85 -17
- rasa/core/nlg/interpolator.py +4 -3
- rasa/core/nlg/response.py +9 -7
- rasa/core/nlg/summarize.py +1 -0
- rasa/core/nlg/translate.py +55 -0
- rasa/core/persistor.py +3 -3
- rasa/core/policies/ensemble.py +10 -9
- rasa/core/policies/enterprise_search_policy.py +87 -21
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +1 -1
- rasa/core/policies/flow_policy.py +13 -14
- rasa/core/policies/flows/flow_executor.py +85 -55
- 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 +167 -74
- rasa/core/run.py +5 -4
- 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 +138 -49
- 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 +38 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +96 -9
- rasa/dialogue_understanding/commands/change_flow_command.py +36 -2
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +36 -4
- rasa/dialogue_understanding/commands/clarify_command.py +46 -4
- rasa/dialogue_understanding/commands/command.py +3 -2
- rasa/dialogue_understanding/commands/command_syntax_manager.py +55 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +14 -5
- 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/handle_digressions_command.py +144 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +34 -4
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +36 -4
- rasa/dialogue_understanding/commands/noop_command.py +2 -1
- rasa/dialogue_understanding/commands/prompt_command.py +94 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +34 -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 +55 -16
- rasa/dialogue_understanding/commands/skip_question_command.py +34 -4
- rasa/dialogue_understanding/commands/start_flow_command.py +78 -2
- rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
- rasa/dialogue_understanding/commands/utils.py +126 -43
- rasa/dialogue_understanding/constants.py +2 -0
- rasa/dialogue_understanding/generator/__init__.py +2 -0
- rasa/dialogue_understanding/generator/command_generator.py +120 -79
- rasa/dialogue_understanding/generator/command_parser.py +245 -0
- rasa/dialogue_understanding/generator/constants.py +12 -4
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +187 -59
- rasa/dialogue_understanding/generator/llm_command_generator.py +6 -3
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +106 -110
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +53 -11
- rasa/dialogue_understanding/generator/prompt_templates/__init__.py +0 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +58 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +57 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +574 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +41 -386
- rasa/dialogue_understanding/generator/utils.py +76 -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 +7 -4
- rasa/dialogue_understanding/patterns/completed.py +1 -1
- rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -1
- rasa/dialogue_understanding/patterns/correction.py +17 -3
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +78 -2
- rasa/dialogue_understanding/patterns/handle_digressions.py +81 -0
- 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/patterns/validate_slot.py +65 -0
- rasa/dialogue_understanding/processor/command_processor.py +193 -43
- 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 +56 -10
- rasa/dialogue_understanding/utils.py +164 -0
- rasa/dialogue_understanding_test/README.md +429 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_comparison.py +60 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +122 -0
- rasa/dialogue_understanding_test/constants.py +22 -0
- rasa/dialogue_understanding_test/du_test_case.py +448 -0
- rasa/dialogue_understanding_test/du_test_result.py +390 -0
- rasa/dialogue_understanding_test/du_test_runner.py +322 -0
- rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
- rasa/dialogue_understanding_test/io.py +443 -0
- 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 +77 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
- rasa/e2e_test/assertions.py +202 -175
- rasa/e2e_test/assertions_schema.yml +6 -0
- rasa/e2e_test/constants.py +16 -1
- rasa/e2e_test/e2e_config.py +102 -41
- rasa/e2e_test/e2e_config_schema.yml +28 -10
- rasa/e2e_test/e2e_test_case.py +5 -5
- 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 +143 -38
- rasa/e2e_test/llm_judge_prompts/answer_relevance_prompt_template.jinja2 +93 -0
- rasa/e2e_test/llm_judge_prompts/groundedness_prompt_template.jinja2 +169 -0
- rasa/e2e_test/stub_custom_action.py +1 -1
- rasa/e2e_test/utils/generative_assertions.py +243 -0
- rasa/e2e_test/utils/io.py +123 -93
- rasa/e2e_test/utils/validation.py +101 -3
- rasa/engine/caching.py +5 -7
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +3 -2
- rasa/engine/language.py +182 -0
- rasa/engine/recipes/config_files/default_config.yml +4 -0
- rasa/engine/recipes/default_components.py +13 -15
- rasa/engine/recipes/default_recipe.py +65 -49
- rasa/engine/recipes/graph_recipe.py +10 -7
- 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 +6 -4
- rasa/engine/storage/resource.py +2 -1
- rasa/engine/storage/storage.py +8 -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 +36 -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 +19 -14
- rasa/jupyter.py +2 -2
- rasa/llm_fine_tuning/annotation_module.py +4 -4
- rasa/llm_fine_tuning/conversations.py +5 -33
- rasa/llm_fine_tuning/llm_data_preparation_module.py +6 -4
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +18 -13
- rasa/llm_fine_tuning/paraphrasing_module.py +6 -2
- rasa/llm_fine_tuning/storage.py +3 -3
- rasa/llm_fine_tuning/train_test_split_module.py +27 -27
- rasa/llm_fine_tuning/utils.py +7 -0
- 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 +13 -10
- rasa/model_manager/socket_bridge.py +15 -9
- 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 -9
- rasa/model_service.py +5 -6
- rasa/model_testing.py +13 -15
- rasa/model_training.py +29 -29
- 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 +6 -3
- rasa/shared/constants.py +45 -18
- rasa/shared/core/command_payload_reader.py +15 -7
- rasa/shared/core/constants.py +34 -4
- rasa/shared/core/conversation.py +1 -2
- rasa/shared/core/domain.py +19 -20
- rasa/shared/core/events.py +60 -39
- rasa/shared/core/flows/__init__.py +0 -1
- rasa/shared/core/flows/constants.py +11 -0
- rasa/shared/core/flows/flow.py +107 -26
- rasa/shared/core/flows/flow_step.py +4 -3
- rasa/shared/core/flows/flow_step_links.py +1 -2
- rasa/shared/core/flows/flow_step_sequence.py +1 -1
- rasa/shared/core/flows/flows_list.py +3 -3
- rasa/shared/core/flows/flows_yaml_schema.json +69 -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 +1 -1
- rasa/shared/core/flows/steps/call.py +1 -1
- rasa/shared/core/flows/steps/collect.py +22 -40
- rasa/shared/core/flows/steps/internal.py +1 -1
- rasa/shared/core/flows/steps/link.py +1 -1
- rasa/shared/core/flows/steps/no_operation.py +2 -2
- rasa/shared/core/flows/steps/set_slots.py +1 -1
- rasa/shared/core/flows/utils.py +44 -4
- rasa/shared/core/flows/validation.py +4 -6
- rasa/shared/core/generator.py +20 -21
- rasa/shared/core/slot_mappings.py +360 -121
- rasa/shared/core/slots.py +163 -6
- rasa/shared/core/trackers.py +108 -33
- 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/importer.py +58 -2
- rasa/shared/importers/rasa.py +5 -6
- rasa/shared/importers/utils.py +1 -1
- rasa/shared/nlu/constants.py +9 -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 +19 -11
- 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_entra_id_config.py +541 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +150 -15
- rasa/shared/providers/_configs/client_config.py +3 -1
- rasa/shared/providers/_configs/default_litellm_client_config.py +9 -7
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +13 -11
- rasa/shared/providers/_configs/litellm_router_client_config.py +12 -10
- rasa/shared/providers/_configs/model_group_config.py +8 -5
- rasa/shared/providers/_configs/oauth_config.py +33 -0
- rasa/shared/providers/_configs/openai_client_config.py +14 -12
- rasa/shared/providers/_configs/rasa_llm_client_config.py +5 -3
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +12 -11
- 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/constants.py +6 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +32 -7
- rasa/shared/providers/embedding/embedding_client.py +1 -1
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +5 -2
- rasa/shared/providers/llm/_base_litellm_client.py +43 -18
- rasa/shared/providers/llm/azure_openai_llm_client.py +90 -34
- rasa/shared/providers/llm/default_litellm_llm_client.py +4 -2
- rasa/shared/providers/llm/litellm_router_llm_client.py +32 -9
- rasa/shared/providers/llm/llm_client.py +24 -8
- rasa/shared/providers/llm/llm_response.py +61 -2
- rasa/shared/providers/llm/openai_llm_client.py +11 -5
- rasa/shared/providers/llm/rasa_llm_client.py +17 -14
- rasa/shared/providers/llm/self_hosted_llm_client.py +35 -15
- rasa/shared/providers/mappings.py +18 -19
- rasa/shared/providers/router/_base_litellm_router_client.py +48 -15
- rasa/shared/providers/router/router_client.py +3 -1
- rasa/shared/utils/cli.py +1 -1
- rasa/shared/utils/common.py +15 -1
- rasa/shared/utils/constants.py +3 -0
- 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 +100 -18
- rasa/shared/utils/pykwalify_extensions.py +25 -1
- rasa/shared/utils/schemas/domain.yml +26 -1
- rasa/shared/utils/schemas/events.py +1 -1
- rasa/shared/utils/yaml.py +24 -20
- 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 +21 -5
- rasa/telemetry.py +127 -48
- rasa/tracing/config.py +5 -3
- rasa/tracing/constants.py +12 -0
- rasa/tracing/instrumentation/attribute_extractors.py +92 -14
- rasa/tracing/instrumentation/instrumentation.py +61 -5
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
- rasa/tracing/instrumentation/metrics.py +52 -11
- rasa/tracing/metric_instrument_provider.py +54 -14
- rasa/utils/common.py +12 -24
- 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 +594 -115
- rasa/version.py +1 -1
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/METADATA +23 -26
- rasa_pro-3.12.0.dist-info/RECORD +829 -0
- rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +0 -1
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +0 -10
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +0 -2
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +0 -2
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +0 -4
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +0 -6
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +0 -4
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +0 -139
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +0 -266
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +0 -70
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +0 -1
- rasa/core/channels/inspector/dist/assets/layout-498807d8.js +0 -1
- rasa/core/channels/inspector/dist/assets/linear-8a078617.js +0 -1
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +0 -109
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +0 -8
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +0 -122
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +0 -1
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +0 -1
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +0 -110
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +0 -159
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +0 -1
- rasa_pro-3.11.4.dist-info/RECORD +0 -779
- /rasa/dialogue_understanding/generator/{single_step → prompt_templates}/command_prompt_template.jinja2 +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
from rasa.dialogue_understanding.commands.
|
|
2
|
-
|
|
3
|
-
FreeFormAnswerCommand,
|
|
1
|
+
from rasa.dialogue_understanding.commands.can_not_handle_command import (
|
|
2
|
+
CannotHandleCommand,
|
|
4
3
|
)
|
|
5
4
|
from rasa.dialogue_understanding.commands.cancel_flow_command import CancelFlowCommand
|
|
6
|
-
from rasa.dialogue_understanding.commands.
|
|
7
|
-
KnowledgeAnswerCommand,
|
|
8
|
-
)
|
|
5
|
+
from rasa.dialogue_understanding.commands.change_flow_command import ChangeFlowCommand
|
|
9
6
|
from rasa.dialogue_understanding.commands.chit_chat_answer_command import (
|
|
10
7
|
ChitChatAnswerCommand,
|
|
11
8
|
)
|
|
12
|
-
from rasa.dialogue_understanding.commands.restart_command import RestartCommand
|
|
13
|
-
from rasa.dialogue_understanding.commands.skip_question_command import (
|
|
14
|
-
SkipQuestionCommand,
|
|
15
|
-
)
|
|
16
|
-
from rasa.dialogue_understanding.commands.can_not_handle_command import (
|
|
17
|
-
CannotHandleCommand,
|
|
18
|
-
)
|
|
19
9
|
from rasa.dialogue_understanding.commands.clarify_command import ClarifyCommand
|
|
10
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
11
|
+
from rasa.dialogue_understanding.commands.correct_slots_command import (
|
|
12
|
+
CorrectedSlot,
|
|
13
|
+
CorrectSlotsCommand,
|
|
14
|
+
)
|
|
20
15
|
from rasa.dialogue_understanding.commands.error_command import ErrorCommand
|
|
21
|
-
from rasa.dialogue_understanding.commands.
|
|
22
|
-
|
|
16
|
+
from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
17
|
+
FreeFormAnswerCommand,
|
|
18
|
+
)
|
|
23
19
|
from rasa.dialogue_understanding.commands.human_handoff_command import (
|
|
24
20
|
HumanHandoffCommand,
|
|
25
21
|
)
|
|
26
|
-
from rasa.dialogue_understanding.commands.
|
|
27
|
-
|
|
28
|
-
CorrectedSlot,
|
|
22
|
+
from rasa.dialogue_understanding.commands.knowledge_answer_command import (
|
|
23
|
+
KnowledgeAnswerCommand,
|
|
29
24
|
)
|
|
30
25
|
from rasa.dialogue_understanding.commands.noop_command import NoopCommand
|
|
31
|
-
from rasa.dialogue_understanding.commands.
|
|
26
|
+
from rasa.dialogue_understanding.commands.repeat_bot_messages_command import (
|
|
27
|
+
RepeatBotMessagesCommand,
|
|
28
|
+
)
|
|
29
|
+
from rasa.dialogue_understanding.commands.restart_command import RestartCommand
|
|
30
|
+
from rasa.dialogue_understanding.commands.session_end_command import SessionEndCommand
|
|
32
31
|
from rasa.dialogue_understanding.commands.session_start_command import (
|
|
33
32
|
SessionStartCommand,
|
|
34
33
|
)
|
|
35
|
-
from rasa.dialogue_understanding.commands.
|
|
36
|
-
from rasa.dialogue_understanding.commands.
|
|
37
|
-
|
|
34
|
+
from rasa.dialogue_understanding.commands.set_slot_command import SetSlotCommand
|
|
35
|
+
from rasa.dialogue_understanding.commands.skip_question_command import (
|
|
36
|
+
SkipQuestionCommand,
|
|
38
37
|
)
|
|
38
|
+
from rasa.dialogue_understanding.commands.start_flow_command import StartFlowCommand
|
|
39
39
|
|
|
40
40
|
__all__ = [
|
|
41
41
|
"Command",
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from typing import Any, Dict, List, Optional, Text
|
|
5
6
|
|
|
6
|
-
from rasa.dialogue_understanding.commands import Command
|
|
7
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
8
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
9
|
+
CommandSyntaxManager,
|
|
10
|
+
CommandSyntaxVersion,
|
|
11
|
+
)
|
|
7
12
|
from rasa.dialogue_understanding.patterns.cannot_handle import (
|
|
8
13
|
CannotHandlePatternFlowStackFrame,
|
|
9
14
|
)
|
|
@@ -12,6 +17,8 @@ from rasa.shared.core.events import Event
|
|
|
12
17
|
from rasa.shared.core.flows import FlowsList
|
|
13
18
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
14
19
|
|
|
20
|
+
DATA_KEY_CANNOT_HANDLE_REASON = "cannot_handle_reason"
|
|
21
|
+
|
|
15
22
|
|
|
16
23
|
@dataclass
|
|
17
24
|
class CannotHandleCommand(Command):
|
|
@@ -68,3 +75,33 @@ class CannotHandleCommand(Command):
|
|
|
68
75
|
return False
|
|
69
76
|
|
|
70
77
|
return other.reason == self.reason
|
|
78
|
+
|
|
79
|
+
def to_dsl(self) -> str:
|
|
80
|
+
"""Converts the command to a DSL string."""
|
|
81
|
+
mapper = {
|
|
82
|
+
CommandSyntaxVersion.v1: "CannotHandle()",
|
|
83
|
+
CommandSyntaxVersion.v2: "cannot handle",
|
|
84
|
+
}
|
|
85
|
+
return mapper.get(
|
|
86
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
87
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
@classmethod
|
|
91
|
+
def from_dsl(cls, match: re.Match, **kwargs: Any) -> CannotHandleCommand:
|
|
92
|
+
"""Converts a DSL string to a command."""
|
|
93
|
+
reason = kwargs.get("data", {}).get(
|
|
94
|
+
DATA_KEY_CANNOT_HANDLE_REASON, RASA_PATTERN_CANNOT_HANDLE_DEFAULT
|
|
95
|
+
)
|
|
96
|
+
return CannotHandleCommand(reason)
|
|
97
|
+
|
|
98
|
+
@staticmethod
|
|
99
|
+
def regex_pattern() -> str:
|
|
100
|
+
mapper = {
|
|
101
|
+
CommandSyntaxVersion.v1: r"CannotHandle\(\)",
|
|
102
|
+
CommandSyntaxVersion.v2: r"""^[\s\W\d]*cannot handle['"`]*$""",
|
|
103
|
+
}
|
|
104
|
+
return mapper.get(
|
|
105
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
106
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
107
|
+
)
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import copy
|
|
4
|
+
import re
|
|
3
5
|
from dataclasses import dataclass
|
|
4
6
|
from typing import Any, Dict, List
|
|
5
7
|
|
|
6
8
|
import structlog
|
|
7
9
|
|
|
8
|
-
from rasa.dialogue_understanding.commands import Command
|
|
10
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
11
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
12
|
+
CommandSyntaxManager,
|
|
13
|
+
CommandSyntaxVersion,
|
|
14
|
+
)
|
|
9
15
|
from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
|
|
16
|
+
from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
|
|
10
17
|
from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
|
|
11
18
|
from rasa.dialogue_understanding.stack.frames import UserFlowStackFrame
|
|
12
19
|
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import FlowStackFrameType
|
|
20
|
+
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
13
21
|
from rasa.shared.core.events import Event, FlowCancelled
|
|
14
22
|
from rasa.shared.core.flows import FlowsList
|
|
15
23
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
16
|
-
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
17
24
|
|
|
18
25
|
structlogger = structlog.get_logger()
|
|
19
26
|
|
|
@@ -45,7 +52,8 @@ class CancelFlowCommand(Command):
|
|
|
45
52
|
current_flow: The current flow.
|
|
46
53
|
|
|
47
54
|
Returns:
|
|
48
|
-
|
|
55
|
+
The frames that were canceled.
|
|
56
|
+
"""
|
|
49
57
|
canceled_frames = []
|
|
50
58
|
# we need to go through the original stack dump in reverse order
|
|
51
59
|
# to find the frames that were canceled. we cancel everything from
|
|
@@ -83,12 +91,12 @@ class CancelFlowCommand(Command):
|
|
|
83
91
|
Returns:
|
|
84
92
|
The events to apply to the tracker.
|
|
85
93
|
"""
|
|
86
|
-
|
|
87
94
|
stack = tracker.stack
|
|
88
95
|
original_stack = original_tracker.stack
|
|
89
96
|
|
|
90
97
|
applied_events: List[Event] = []
|
|
91
|
-
|
|
98
|
+
# capture the top frame before we push new frames onto the stack
|
|
99
|
+
initial_top_frame = stack.top()
|
|
92
100
|
user_frame = top_user_flow_frame(original_stack)
|
|
93
101
|
current_flow = user_frame.flow(all_flows) if user_frame else None
|
|
94
102
|
|
|
@@ -105,7 +113,9 @@ class CancelFlowCommand(Command):
|
|
|
105
113
|
|
|
106
114
|
stack.push(
|
|
107
115
|
CancelPatternFlowStackFrame(
|
|
108
|
-
canceled_name=current_flow.readable_name(
|
|
116
|
+
canceled_name=current_flow.readable_name(
|
|
117
|
+
language=tracker.current_language
|
|
118
|
+
),
|
|
109
119
|
canceled_frames=canceled_frames,
|
|
110
120
|
)
|
|
111
121
|
)
|
|
@@ -113,13 +123,90 @@ class CancelFlowCommand(Command):
|
|
|
113
123
|
if user_frame:
|
|
114
124
|
applied_events.append(FlowCancelled(user_frame.flow_id, user_frame.step_id))
|
|
115
125
|
|
|
126
|
+
if initial_top_frame and isinstance(
|
|
127
|
+
initial_top_frame, ClarifyPatternFlowStackFrame
|
|
128
|
+
):
|
|
129
|
+
structlogger.debug(
|
|
130
|
+
"command_executor.cancel_flow.cancel_clarification_options",
|
|
131
|
+
clarification_options=initial_top_frame.clarification_options,
|
|
132
|
+
)
|
|
133
|
+
applied_events += cancel_all_pending_clarification_options(
|
|
134
|
+
initial_top_frame,
|
|
135
|
+
original_stack,
|
|
136
|
+
canceled_frames,
|
|
137
|
+
all_flows,
|
|
138
|
+
stack,
|
|
139
|
+
)
|
|
140
|
+
|
|
116
141
|
return applied_events + tracker.create_stack_updated_events(stack)
|
|
117
142
|
|
|
118
143
|
def __hash__(self) -> int:
|
|
119
144
|
return hash(self.command())
|
|
120
145
|
|
|
121
146
|
def __eq__(self, other: object) -> bool:
|
|
122
|
-
|
|
123
|
-
|
|
147
|
+
return isinstance(other, CancelFlowCommand)
|
|
148
|
+
|
|
149
|
+
def to_dsl(self) -> str:
|
|
150
|
+
"""Converts the command to a DSL string."""
|
|
151
|
+
mapper = {
|
|
152
|
+
CommandSyntaxVersion.v1: "CancelFlow()",
|
|
153
|
+
CommandSyntaxVersion.v2: "cancel flow",
|
|
154
|
+
}
|
|
155
|
+
return mapper.get(
|
|
156
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
157
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
@classmethod
|
|
161
|
+
def from_dsl(cls, match: re.Match, **kwargs: Any) -> CancelFlowCommand:
|
|
162
|
+
"""Converts a DSL string to a command."""
|
|
163
|
+
return CancelFlowCommand()
|
|
164
|
+
|
|
165
|
+
@staticmethod
|
|
166
|
+
def regex_pattern() -> str:
|
|
167
|
+
mapper = {
|
|
168
|
+
CommandSyntaxVersion.v1: r"CancelFlow\(\)",
|
|
169
|
+
CommandSyntaxVersion.v2: r"""^[\s\W\d]*cancel flow['"`]*$""",
|
|
170
|
+
}
|
|
171
|
+
return mapper.get(
|
|
172
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
173
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
174
|
+
)
|
|
175
|
+
|
|
124
176
|
|
|
125
|
-
|
|
177
|
+
def cancel_all_pending_clarification_options(
|
|
178
|
+
initial_top_frame: ClarifyPatternFlowStackFrame,
|
|
179
|
+
original_stack: DialogueStack,
|
|
180
|
+
canceled_frames: List[str],
|
|
181
|
+
all_flows: FlowsList,
|
|
182
|
+
stack: DialogueStack,
|
|
183
|
+
) -> List[FlowCancelled]:
|
|
184
|
+
"""Cancel all pending clarification options.
|
|
185
|
+
|
|
186
|
+
This is a special case when the assistant asks the user to clarify
|
|
187
|
+
which pending digression flow to start after the completion of an active flow.
|
|
188
|
+
If the user chooses to cancel all options, this function takes care of
|
|
189
|
+
updating the stack by removing all pending flow stack frames
|
|
190
|
+
listed as clarification options.
|
|
191
|
+
"""
|
|
192
|
+
clarification_names = set(initial_top_frame.names)
|
|
193
|
+
to_be_canceled_frames = []
|
|
194
|
+
applied_events = []
|
|
195
|
+
for frame in reversed(original_stack.frames):
|
|
196
|
+
if frame.frame_id in canceled_frames:
|
|
197
|
+
continue
|
|
198
|
+
|
|
199
|
+
to_be_canceled_frames.append(frame.frame_id)
|
|
200
|
+
if isinstance(frame, UserFlowStackFrame):
|
|
201
|
+
readable_flow_name = frame.flow(all_flows).readable_name()
|
|
202
|
+
if readable_flow_name in clarification_names:
|
|
203
|
+
stack.push(
|
|
204
|
+
CancelPatternFlowStackFrame(
|
|
205
|
+
canceled_name=readable_flow_name,
|
|
206
|
+
canceled_frames=copy.deepcopy(to_be_canceled_frames),
|
|
207
|
+
)
|
|
208
|
+
)
|
|
209
|
+
applied_events.append(FlowCancelled(frame.flow_id, frame.step_id))
|
|
210
|
+
to_be_canceled_frames.clear()
|
|
211
|
+
|
|
212
|
+
return applied_events
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from typing import Any, Dict, List
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
8
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
9
|
+
CommandSyntaxManager,
|
|
10
|
+
CommandSyntaxVersion,
|
|
11
|
+
)
|
|
6
12
|
from rasa.shared.core.events import Event
|
|
7
13
|
from rasa.shared.core.flows import FlowsList
|
|
8
14
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -11,7 +17,8 @@ from rasa.shared.core.trackers import DialogueStateTracker
|
|
|
11
17
|
@dataclass
|
|
12
18
|
class ChangeFlowCommand(Command):
|
|
13
19
|
"""A command to indicate a change of flows was requested by the command
|
|
14
|
-
generator.
|
|
20
|
+
generator.
|
|
21
|
+
"""
|
|
15
22
|
|
|
16
23
|
@classmethod
|
|
17
24
|
def command(cls) -> str:
|
|
@@ -42,3 +49,30 @@ class ChangeFlowCommand(Command):
|
|
|
42
49
|
|
|
43
50
|
def __hash__(self) -> int:
|
|
44
51
|
return hash(self.command())
|
|
52
|
+
|
|
53
|
+
def to_dsl(self) -> str:
|
|
54
|
+
"""Converts the command to a DSL string."""
|
|
55
|
+
mapper = {
|
|
56
|
+
CommandSyntaxVersion.v1: "ChangeFlow()",
|
|
57
|
+
CommandSyntaxVersion.v2: "change",
|
|
58
|
+
}
|
|
59
|
+
return mapper.get(
|
|
60
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
61
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
@staticmethod
|
|
65
|
+
def from_dsl(match: re.Match, **kwargs: Any) -> ChangeFlowCommand:
|
|
66
|
+
"""Converts the DSL string to a command."""
|
|
67
|
+
return ChangeFlowCommand()
|
|
68
|
+
|
|
69
|
+
@staticmethod
|
|
70
|
+
def regex_pattern() -> str:
|
|
71
|
+
mapper = {
|
|
72
|
+
CommandSyntaxVersion.v1: r"ChangeFlow\(\)",
|
|
73
|
+
CommandSyntaxVersion.v2: r"""^[\s\W\d]*change['"`]*$""",
|
|
74
|
+
}
|
|
75
|
+
return mapper.get(
|
|
76
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
77
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
78
|
+
)
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from typing import Any, Dict, List
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
8
|
+
CommandSyntaxManager,
|
|
9
|
+
CommandSyntaxVersion,
|
|
10
|
+
)
|
|
11
|
+
from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
12
|
+
FreeFormAnswerCommand,
|
|
13
|
+
)
|
|
6
14
|
from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
|
|
7
15
|
from rasa.shared.core.events import Event
|
|
8
16
|
from rasa.shared.core.flows import FlowsList
|
|
@@ -51,7 +59,31 @@ class ChitChatAnswerCommand(FreeFormAnswerCommand):
|
|
|
51
59
|
return hash(self.command())
|
|
52
60
|
|
|
53
61
|
def __eq__(self, other: object) -> bool:
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
return isinstance(other, ChitChatAnswerCommand)
|
|
63
|
+
|
|
64
|
+
def to_dsl(self) -> str:
|
|
65
|
+
"""Converts the command to a DSL string."""
|
|
66
|
+
mapper = {
|
|
67
|
+
CommandSyntaxVersion.v1: "ChitChat()",
|
|
68
|
+
CommandSyntaxVersion.v2: "offtopic reply",
|
|
69
|
+
}
|
|
70
|
+
return mapper.get(
|
|
71
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
72
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def from_dsl(cls, match: re.Match, **kwargs: Any) -> ChitChatAnswerCommand:
|
|
77
|
+
"""Converts the DSL string to a command."""
|
|
78
|
+
return ChitChatAnswerCommand()
|
|
56
79
|
|
|
57
|
-
|
|
80
|
+
@staticmethod
|
|
81
|
+
def regex_pattern() -> str:
|
|
82
|
+
mapper = {
|
|
83
|
+
CommandSyntaxVersion.v1: r"ChitChat\(\)",
|
|
84
|
+
CommandSyntaxVersion.v2: r"""^[\s\W\d]*offtopic reply['"`]*$""",
|
|
85
|
+
}
|
|
86
|
+
return mapper.get(
|
|
87
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
88
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
89
|
+
)
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any, Dict, List
|
|
5
|
+
from typing import Any, Dict, List, Optional
|
|
5
6
|
|
|
6
7
|
import structlog
|
|
7
|
-
|
|
8
|
+
|
|
9
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
10
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
11
|
+
CommandSyntaxManager,
|
|
12
|
+
CommandSyntaxVersion,
|
|
13
|
+
)
|
|
14
|
+
from rasa.dialogue_understanding.commands.utils import extract_cleaned_options
|
|
8
15
|
from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
|
|
9
16
|
from rasa.shared.core.events import Event
|
|
10
17
|
from rasa.shared.core.flows import FlowsList
|
|
@@ -54,7 +61,6 @@ class ClarifyCommand(Command):
|
|
|
54
61
|
Returns:
|
|
55
62
|
The events to apply to the tracker.
|
|
56
63
|
"""
|
|
57
|
-
|
|
58
64
|
flows = [all_flows.flow_by_id(opt) for opt in self.options]
|
|
59
65
|
clean_options = [flow.id for flow in flows if flow is not None]
|
|
60
66
|
if len(clean_options) != len(self.options):
|
|
@@ -72,7 +78,13 @@ class ClarifyCommand(Command):
|
|
|
72
78
|
|
|
73
79
|
stack = tracker.stack
|
|
74
80
|
relevant_flows = [all_flows.flow_by_id(opt) for opt in clean_options]
|
|
75
|
-
|
|
81
|
+
|
|
82
|
+
names = [
|
|
83
|
+
flow.readable_name(language=tracker.current_language)
|
|
84
|
+
for flow in relevant_flows
|
|
85
|
+
if flow is not None
|
|
86
|
+
]
|
|
87
|
+
|
|
76
88
|
stack.push(ClarifyPatternFlowStackFrame(names=names))
|
|
77
89
|
return tracker.create_stack_updated_events(stack)
|
|
78
90
|
|
|
@@ -84,3 +96,33 @@ class ClarifyCommand(Command):
|
|
|
84
96
|
return False
|
|
85
97
|
|
|
86
98
|
return other.options == self.options
|
|
99
|
+
|
|
100
|
+
def to_dsl(self) -> str:
|
|
101
|
+
"""Converts the command to a DSL string."""
|
|
102
|
+
mapper = {
|
|
103
|
+
CommandSyntaxVersion.v1: f"Clarify({', '.join(self.options)})",
|
|
104
|
+
CommandSyntaxVersion.v2: f"disambiguate flows {' '.join(self.options)}",
|
|
105
|
+
}
|
|
106
|
+
return mapper.get(
|
|
107
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
108
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
@classmethod
|
|
112
|
+
def from_dsl(cls, match: re.Match, **kwargs: Any) -> Optional[ClarifyCommand]:
|
|
113
|
+
"""Converts the DSL string to a command."""
|
|
114
|
+
cleaned_options = extract_cleaned_options(match.group(1))
|
|
115
|
+
return ClarifyCommand(cleaned_options)
|
|
116
|
+
|
|
117
|
+
@staticmethod
|
|
118
|
+
def regex_pattern() -> str:
|
|
119
|
+
mapper = {
|
|
120
|
+
CommandSyntaxVersion.v1: r"Clarify\(([\"\'a-zA-Z0-9_, ]*)\)",
|
|
121
|
+
CommandSyntaxVersion.v2: (
|
|
122
|
+
r"""^[\s\W\d]*disambiguate flows (["'a-zA-Z0-9_, ]*)['"`]*$"""
|
|
123
|
+
),
|
|
124
|
+
}
|
|
125
|
+
return mapper.get(
|
|
126
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
127
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
128
|
+
)
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from dataclasses import dataclass
|
|
4
3
|
import dataclasses
|
|
4
|
+
from dataclasses import dataclass
|
|
5
5
|
from typing import Any, Dict, List
|
|
6
|
+
|
|
7
|
+
import rasa.shared.utils.common
|
|
6
8
|
from rasa.shared.core.events import Event
|
|
7
9
|
from rasa.shared.core.flows import FlowsList
|
|
8
10
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
9
|
-
import rasa.shared.utils.common
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
@dataclass
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
import structlog
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CommandSyntaxVersion(Enum):
|
|
8
|
+
"""Defines different syntax versions for commands."""
|
|
9
|
+
|
|
10
|
+
v1 = "v1"
|
|
11
|
+
v2 = "v2"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
structlogger = structlog.get_logger()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CommandSyntaxManager:
|
|
18
|
+
"""A class to manage the command syntax version. It is used to set and get the
|
|
19
|
+
command syntax version. This class provides a way to introduce new syntax versions
|
|
20
|
+
for commands in the future. Hence, it is for internal use only.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
_version = None # Directly store the version as a class attribute
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def set_syntax_version(cls, version: CommandSyntaxVersion) -> None:
|
|
27
|
+
"""Sets the command syntax version on the class itself.
|
|
28
|
+
This method is called only once at the time of LLMCommandGenerator
|
|
29
|
+
initialization to set the command syntax version, which ensures that the command
|
|
30
|
+
syntax version remains consistent throughout the lifetime of the generator.
|
|
31
|
+
"""
|
|
32
|
+
if cls._version:
|
|
33
|
+
structlogger.debug(
|
|
34
|
+
"command_syntax_manager.syntax_version_already_set",
|
|
35
|
+
event_info=(
|
|
36
|
+
f"The command syntax version has already been set. Overwriting "
|
|
37
|
+
f"the existing version with the new version - {version}."
|
|
38
|
+
),
|
|
39
|
+
)
|
|
40
|
+
cls._version = version
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def get_syntax_version(cls) -> Optional[CommandSyntaxVersion]:
|
|
44
|
+
"""Fetches the stored command syntax version."""
|
|
45
|
+
return cls._version
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
def get_default_syntax_version() -> CommandSyntaxVersion:
|
|
49
|
+
"""Returns the default command syntax version."""
|
|
50
|
+
return CommandSyntaxVersion.v1
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def reset_syntax_version(cls) -> None:
|
|
54
|
+
"""Resets the command syntax version. Implemented for use in testing."""
|
|
55
|
+
cls._version = None
|
|
@@ -5,7 +5,8 @@ from typing import Any, Dict, List, Optional
|
|
|
5
5
|
|
|
6
6
|
import structlog
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import rasa.dialogue_understanding.stack.utils as utils
|
|
9
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
9
10
|
from rasa.dialogue_understanding.patterns.correction import (
|
|
10
11
|
FLOW_PATTERN_CORRECTION_ID,
|
|
11
12
|
CorrectionPatternFlowStackFrame,
|
|
@@ -15,12 +16,11 @@ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
|
15
16
|
BaseFlowStackFrame,
|
|
16
17
|
)
|
|
17
18
|
from rasa.shared.core.events import Event
|
|
19
|
+
from rasa.shared.core.flows import FlowsList
|
|
18
20
|
from rasa.shared.core.flows.flow_step import FlowStepWithFlowReference
|
|
19
21
|
from rasa.shared.core.flows.steps.constants import END_STEP
|
|
20
22
|
from rasa.shared.core.flows.steps.continuation import ContinueFlowStep
|
|
21
|
-
from rasa.shared.core.flows import FlowsList
|
|
22
23
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
23
|
-
import rasa.dialogue_understanding.stack.utils as utils
|
|
24
24
|
|
|
25
25
|
structlogger = structlog.get_logger()
|
|
26
26
|
|
|
@@ -31,6 +31,7 @@ class CorrectedSlot:
|
|
|
31
31
|
|
|
32
32
|
name: str
|
|
33
33
|
value: Any
|
|
34
|
+
filled_by: Optional[str] = None
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
@dataclass
|
|
@@ -54,7 +55,9 @@ class CorrectSlotsCommand(Command):
|
|
|
54
55
|
try:
|
|
55
56
|
return CorrectSlotsCommand(
|
|
56
57
|
corrected_slots=[
|
|
57
|
-
CorrectedSlot(
|
|
58
|
+
CorrectedSlot(
|
|
59
|
+
s["name"], value=s["value"], filled_by=s.get("filled_by", None)
|
|
60
|
+
)
|
|
58
61
|
for s in data["corrected_slots"]
|
|
59
62
|
]
|
|
60
63
|
)
|
|
@@ -135,7 +138,10 @@ class CorrectSlotsCommand(Command):
|
|
|
135
138
|
proposed_slots = {}
|
|
136
139
|
for corrected_slot in self.corrected_slots:
|
|
137
140
|
if tracker.get_slot(corrected_slot.name) != corrected_slot.value:
|
|
138
|
-
proposed_slots[corrected_slot.name] =
|
|
141
|
+
proposed_slots[corrected_slot.name] = {
|
|
142
|
+
"value": corrected_slot.value,
|
|
143
|
+
"filled_by": corrected_slot.filled_by,
|
|
144
|
+
}
|
|
139
145
|
else:
|
|
140
146
|
structlogger.debug(
|
|
141
147
|
"command_executor.skip_correction.slot_already_set", command=self
|
|
@@ -240,6 +246,9 @@ class CorrectSlotsCommand(Command):
|
|
|
240
246
|
corrected_slots=proposed_slots,
|
|
241
247
|
reset_flow_id=earliest_collect.flow_id if earliest_collect else None,
|
|
242
248
|
reset_step_id=earliest_collect.step.id if earliest_collect else None,
|
|
249
|
+
new_slot_values=[
|
|
250
|
+
value.get("value") for slot, value in proposed_slots.items()
|
|
251
|
+
],
|
|
243
252
|
)
|
|
244
253
|
|
|
245
254
|
def run_command_on_tracker(
|
|
@@ -5,7 +5,7 @@ from typing import Any, Dict, List, Text
|
|
|
5
5
|
|
|
6
6
|
import structlog
|
|
7
7
|
|
|
8
|
-
from rasa.dialogue_understanding.commands import Command
|
|
8
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
9
9
|
from rasa.dialogue_understanding.patterns.internal_error import (
|
|
10
10
|
InternalErrorPatternFlowStackFrame,
|
|
11
11
|
)
|
|
@@ -5,12 +5,12 @@ from typing import Any, Dict, List
|
|
|
5
5
|
|
|
6
6
|
import structlog
|
|
7
7
|
|
|
8
|
-
from rasa.dialogue_understanding.commands import Command
|
|
8
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
9
9
|
from rasa.dialogue_understanding.patterns.code_change import CodeChangeFlowStackFrame
|
|
10
|
+
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
10
11
|
from rasa.shared.core.events import Event
|
|
11
12
|
from rasa.shared.core.flows import FlowsList
|
|
12
13
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
13
|
-
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
14
14
|
|
|
15
15
|
structlogger = structlog.get_logger()
|
|
16
16
|
|