rasa-pro 3.11.5__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 +135 -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/{arc-f0f8bd46.js → arc-9f1365dc.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7162c77d.js → blockDiagram-38ab4fdb-e0f81b12.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-b1d0d098.js → c4Diagram-3d4e48cf-9deaee1c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-44956714.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-807a1b27.js → classDiagram-70f12bd4-20450a96.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-5238dcdb.js → classDiagram-v2-f2320105-749d2abf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-a9475142.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-75dfaa67.js → createText-2e5e7dd3-bef0b38c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-df20501d.js → edges-e0da2a9e-943801a7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-13cf4797.js → erDiagram-9861fffd-d523a948.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-a4991264.js → flowDb-956e92f1-54e4cf19.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-ccecf773.js → flowDiagram-66a62f08-48bfbbe8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-43fa749a.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b5801783.js → flowchart-elk-definition-4a651766-17c30827.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-161e079a.js → ganttDiagram-c361ad54-43086f2d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-f38e86a4.js → gitGraphDiagram-72cf32ee-5c8b693e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-be6ef5d8.js → graph-41a90d26.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-d9ce8994.js → index-3862675e-b43eeae9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-7794b245.js → index-e8affe45.js} +155 -155
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-5000a3dc.js → infoDiagram-f8f76790-0b20676b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-8ef0a17a.js → journeyDiagram-49397b02-39bce7b5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-d649bc98.js → layout-dc8eeea4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-95add810.js → line-c4d2e756.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-f6025094.js → linear-86f6f2d9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-2e8531c4.js → mindmap-definition-fc14e90a-4216f771.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-918adfdb.js → pieDiagram-8a3498a8-1a0cfa96.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-cbd01797.js → quadrantDiagram-120e2f19-f91e67cf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6a8b877b.js → requirementDiagram-deff3bca-d4046bed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-c377c3fe.js → sankeyDiagram-04a897e0-2cf6d1d7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-ab9e9b7f.js → sequenceDiagram-704730f1-751ac4f5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-5e6ae67d.js → stateDiagram-587899a1-f734f4d4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-40643476.js → stateDiagram-v2-d93cdb3a-91c65710.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-afb8d108.js → styles-6aaf32cf-e0cff7be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-7edc9423.js → styles-9a916d00-c8029e5d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-c1d8f7e9.js → styles-c10674c1-114f312a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f494b2ef.js → svgDrawCommon-08f97a94-b7b9dc00.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-11c7cdd0.js → timeline-definition-85554ec2-9536d189.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-3f191ec1.js → xychartDiagram-e933f94c-bf3b0f36.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +1 -0
- 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 +5 -0
- 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 +9 -9
- 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 +3 -2
- 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.5.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/channel-e265ea59.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-21f8a43d.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-5c8ce12d.js +0 -1
- rasa_pro-3.11.5.dist-info/RECORD +0 -785
- /rasa/dialogue_understanding/generator/{single_step → prompt_templates}/command_prompt_template.jinja2 +0 -0
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.12.0.dist-info}/entry_points.txt +0 -0
rasa/core/tracker_store.py
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
import contextlib
|
|
3
4
|
import itertools
|
|
4
5
|
import json
|
|
5
|
-
import logging
|
|
6
6
|
import os
|
|
7
7
|
from inspect import isawaitable, iscoroutinefunction
|
|
8
|
-
|
|
9
8
|
from time import sleep
|
|
10
9
|
from typing import (
|
|
10
|
+
TYPE_CHECKING,
|
|
11
11
|
Any,
|
|
12
12
|
Callable,
|
|
13
13
|
Dict,
|
|
14
|
+
Generator,
|
|
15
|
+
Generic,
|
|
14
16
|
Iterable,
|
|
15
17
|
Iterator,
|
|
16
18
|
List,
|
|
17
19
|
Optional,
|
|
18
20
|
Text,
|
|
19
|
-
Union,
|
|
20
|
-
TYPE_CHECKING,
|
|
21
|
-
Generator,
|
|
22
21
|
TypeVar,
|
|
23
|
-
|
|
22
|
+
Union,
|
|
24
23
|
)
|
|
25
24
|
|
|
25
|
+
import sqlalchemy as sa
|
|
26
|
+
import structlog
|
|
26
27
|
from boto3.dynamodb.conditions import Key
|
|
27
28
|
from pymongo.collection import Collection
|
|
28
29
|
|
|
@@ -30,17 +31,18 @@ import rasa.shared.utils.cli
|
|
|
30
31
|
import rasa.shared.utils.common
|
|
31
32
|
import rasa.shared.utils.io
|
|
32
33
|
import rasa.utils.json_utils
|
|
33
|
-
from rasa.
|
|
34
|
-
from rasa.shared.core.constants import ACTION_LISTEN_NAME
|
|
34
|
+
from rasa.constants import DEFAULT_SANIC_WORKERS, ENV_SANIC_WORKERS
|
|
35
35
|
from rasa.core.brokers.broker import EventBroker
|
|
36
36
|
from rasa.core.constants import (
|
|
37
|
-
POSTGRESQL_SCHEMA,
|
|
38
37
|
POSTGRESQL_MAX_OVERFLOW,
|
|
39
38
|
POSTGRESQL_POOL_SIZE,
|
|
39
|
+
POSTGRESQL_SCHEMA,
|
|
40
40
|
)
|
|
41
|
+
from rasa.plugin import plugin_manager
|
|
42
|
+
from rasa.shared.core.constants import ACTION_LISTEN_NAME
|
|
41
43
|
from rasa.shared.core.conversation import Dialogue
|
|
42
44
|
from rasa.shared.core.domain import Domain
|
|
43
|
-
from rasa.shared.core.events import
|
|
45
|
+
from rasa.shared.core.events import Event, SessionStarted
|
|
44
46
|
from rasa.shared.core.trackers import (
|
|
45
47
|
ActionExecuted,
|
|
46
48
|
DialogueStateTracker,
|
|
@@ -50,16 +52,15 @@ from rasa.shared.core.trackers import (
|
|
|
50
52
|
from rasa.shared.exceptions import ConnectionException, RasaException
|
|
51
53
|
from rasa.shared.nlu.constants import INTENT_NAME_KEY
|
|
52
54
|
from rasa.utils.endpoints import EndpointConfig
|
|
53
|
-
import sqlalchemy as sa
|
|
54
55
|
|
|
55
56
|
if TYPE_CHECKING:
|
|
56
57
|
import boto3.resources.factory.dynamodb.Table
|
|
57
|
-
from sqlalchemy.engine.url import URL
|
|
58
|
-
from sqlalchemy.engine.base import Engine
|
|
59
|
-
from sqlalchemy.orm import Session, Query
|
|
60
58
|
from sqlalchemy import Sequence
|
|
59
|
+
from sqlalchemy.engine.base import Engine
|
|
60
|
+
from sqlalchemy.engine.url import URL
|
|
61
|
+
from sqlalchemy.orm import Query, Session
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
structlogger = structlog.get_logger(__name__)
|
|
63
64
|
|
|
64
65
|
# default values of PostgreSQL pool size and max overflow
|
|
65
66
|
POSTGRESQL_DEFAULT_MAX_OVERFLOW = 100
|
|
@@ -158,9 +159,9 @@ class TrackerStore:
|
|
|
158
159
|
if isinstance(obj, TrackerStore):
|
|
159
160
|
return obj
|
|
160
161
|
|
|
161
|
-
from botocore.exceptions import BotoCoreError
|
|
162
162
|
import pymongo.errors
|
|
163
163
|
import sqlalchemy.exc
|
|
164
|
+
from botocore.exceptions import BotoCoreError
|
|
164
165
|
|
|
165
166
|
try:
|
|
166
167
|
_tracker_store = plugin_manager().hook.create_tracker_store(
|
|
@@ -315,7 +316,10 @@ class TrackerStore:
|
|
|
315
316
|
async def stream_events(self, tracker: DialogueStateTracker) -> None:
|
|
316
317
|
"""Streams events to a message broker."""
|
|
317
318
|
if self.event_broker is None:
|
|
318
|
-
|
|
319
|
+
structlogger.debug(
|
|
320
|
+
"tracker_store.stream_events.no_broker_configured",
|
|
321
|
+
event_info="No event broker configured. Skipping streaming events.",
|
|
322
|
+
)
|
|
319
323
|
return None
|
|
320
324
|
|
|
321
325
|
old_tracker = await self.retrieve(tracker.sender_id)
|
|
@@ -437,13 +441,22 @@ class InMemoryTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
437
441
|
fetch_all_sessions: Whether to fetch all sessions or only the last one.
|
|
438
442
|
"""
|
|
439
443
|
if sender_id not in self.store:
|
|
440
|
-
|
|
444
|
+
structlogger.debug(
|
|
445
|
+
"in_memory_tracker_store.retrieve.no_tracker_for_sender_id",
|
|
446
|
+
event_info=f"Could not find tracker for conversation ID '{sender_id}'.",
|
|
447
|
+
)
|
|
441
448
|
return None
|
|
442
449
|
|
|
443
450
|
tracker = self.deserialise_tracker(sender_id, self.store[sender_id])
|
|
444
451
|
|
|
445
452
|
if not tracker:
|
|
446
|
-
|
|
453
|
+
structlogger.debug(
|
|
454
|
+
"in_memory_tracker_store.retrieve.failed_to_deserialize_tracker",
|
|
455
|
+
event_info=(
|
|
456
|
+
f"Could not deserialize tracker "
|
|
457
|
+
f"for conversation ID '{sender_id}'.",
|
|
458
|
+
),
|
|
459
|
+
)
|
|
447
460
|
return None
|
|
448
461
|
|
|
449
462
|
if fetch_all_sessions:
|
|
@@ -499,7 +512,10 @@ class RedisTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
499
512
|
|
|
500
513
|
self.key_prefix = DEFAULT_REDIS_TRACKER_STORE_KEY_PREFIX
|
|
501
514
|
if key_prefix:
|
|
502
|
-
|
|
515
|
+
structlogger.debug(
|
|
516
|
+
"redis_tracker_store.init.custom_key_prefix",
|
|
517
|
+
event_info=f"Setting non-default redis key prefix: '{key_prefix}'.",
|
|
518
|
+
)
|
|
503
519
|
self._set_key_prefix(key_prefix)
|
|
504
520
|
|
|
505
521
|
super().__init__(domain, event_broker, **kwargs)
|
|
@@ -508,9 +524,13 @@ class RedisTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
508
524
|
if isinstance(key_prefix, str) and key_prefix.isalnum():
|
|
509
525
|
self.key_prefix = key_prefix + ":" + DEFAULT_REDIS_TRACKER_STORE_KEY_PREFIX
|
|
510
526
|
else:
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
527
|
+
structlogger.warning(
|
|
528
|
+
"redis_tracker_store.init.invalid_key_prefix",
|
|
529
|
+
event_info=(
|
|
530
|
+
f"Omitting provided non-alphanumeric "
|
|
531
|
+
f"redis key prefix: '{key_prefix}'. "
|
|
532
|
+
f"Using default '{self.key_prefix}' instead."
|
|
533
|
+
),
|
|
514
534
|
)
|
|
515
535
|
|
|
516
536
|
def _get_key_prefix(self) -> Text:
|
|
@@ -576,7 +596,10 @@ class RedisTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
576
596
|
"""
|
|
577
597
|
stored = self.red.get(self.key_prefix + sender_id)
|
|
578
598
|
if stored is None:
|
|
579
|
-
|
|
599
|
+
structlogger.debug(
|
|
600
|
+
"redis_tracker_store.retrieve.no_tracker_for_sender_id",
|
|
601
|
+
event_info=f"Could not find tracker for conversation ID '{sender_id}'.",
|
|
602
|
+
)
|
|
580
603
|
return None
|
|
581
604
|
|
|
582
605
|
tracker = self.deserialise_tracker(sender_id, stored)
|
|
@@ -674,6 +697,31 @@ class DynamoTrackerStore(TrackerStore, SerializedTrackerAsDict):
|
|
|
674
697
|
try:
|
|
675
698
|
self.client.describe_table(TableName=table_name)
|
|
676
699
|
except self.client.exceptions.ResourceNotFoundException:
|
|
700
|
+
sanic_workers_count = int(
|
|
701
|
+
os.environ.get(ENV_SANIC_WORKERS, DEFAULT_SANIC_WORKERS)
|
|
702
|
+
)
|
|
703
|
+
|
|
704
|
+
if sanic_workers_count > 1:
|
|
705
|
+
structlogger.error(
|
|
706
|
+
"dynamo_tracker_store.table_creation_not_supported_in_multi_worker_mode",
|
|
707
|
+
event_info=(
|
|
708
|
+
"DynamoDB table creation is not "
|
|
709
|
+
"supported in multi-worker mode. "
|
|
710
|
+
"Table should already exist.",
|
|
711
|
+
),
|
|
712
|
+
)
|
|
713
|
+
raise RasaException(
|
|
714
|
+
"DynamoDB table creation is not supported in "
|
|
715
|
+
"case of multiple sanic workers. To create the table either "
|
|
716
|
+
"run Rasa with a single worker or create the table manually."
|
|
717
|
+
"Here are the defaults which can be used to "
|
|
718
|
+
"create the table manually: "
|
|
719
|
+
f"Table name: {table_name}, Primary key: sender_id, "
|
|
720
|
+
f"key type `HASH`, attribute type `S` (String), "
|
|
721
|
+
"Provisioned throughput: Read capacity units: 5, "
|
|
722
|
+
"Write capacity units: 5"
|
|
723
|
+
)
|
|
724
|
+
|
|
677
725
|
table = dynamo.create_table(
|
|
678
726
|
TableName=self.table_name,
|
|
679
727
|
KeySchema=[{"AttributeName": "sender_id", "KeyType": "HASH"}],
|
|
@@ -799,8 +847,8 @@ class MongoTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
799
847
|
event_broker: Optional[EventBroker] = None,
|
|
800
848
|
**kwargs: Dict[Text, Any],
|
|
801
849
|
) -> None:
|
|
802
|
-
from pymongo.database import Database
|
|
803
850
|
from pymongo import MongoClient
|
|
851
|
+
from pymongo.database import Database
|
|
804
852
|
|
|
805
853
|
self.client: MongoClient = MongoClient(
|
|
806
854
|
host,
|
|
@@ -1001,7 +1049,10 @@ def create_engine_kwargs(url: Union[Text, "URL"]) -> Dict[Text, Any]:
|
|
|
1001
1049
|
schema_name = os.environ.get(POSTGRESQL_SCHEMA)
|
|
1002
1050
|
|
|
1003
1051
|
if schema_name:
|
|
1004
|
-
|
|
1052
|
+
structlogger.debug(
|
|
1053
|
+
"postgresql_tracker_store.schema_name",
|
|
1054
|
+
event_inf=f"Using PostgreSQL schema '{schema_name}'.",
|
|
1055
|
+
)
|
|
1005
1056
|
kwargs["connect_args"] = {"options": f"-csearch_path={schema_name}"}
|
|
1006
1057
|
|
|
1007
1058
|
# pool_size and max_overflow can be set to control the number of
|
|
@@ -1114,7 +1165,10 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1114
1165
|
|
|
1115
1166
|
self.engine = sa.create_engine(engine_url, **create_engine_kwargs(engine_url))
|
|
1116
1167
|
|
|
1117
|
-
|
|
1168
|
+
structlogger.debug(
|
|
1169
|
+
"sql_tracker_store.connect_to_sql_database",
|
|
1170
|
+
event_info=f"Attempting to connect to database via '{self.engine.url!r}'.",
|
|
1171
|
+
)
|
|
1118
1172
|
|
|
1119
1173
|
# Database might take a while to come up
|
|
1120
1174
|
while True:
|
|
@@ -1133,7 +1187,11 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1133
1187
|
# Several Rasa services started in parallel may attempt to
|
|
1134
1188
|
# create tables at the same time. That is okay so long as
|
|
1135
1189
|
# the first services finishes the table creation.
|
|
1136
|
-
|
|
1190
|
+
structlogger.error(
|
|
1191
|
+
"sql_tracker_store.create_tables_failed",
|
|
1192
|
+
event_info="Could not create tables",
|
|
1193
|
+
exec_info=e,
|
|
1194
|
+
)
|
|
1137
1195
|
|
|
1138
1196
|
self.sessionmaker = sa.orm.session.sessionmaker(bind=self.engine)
|
|
1139
1197
|
break
|
|
@@ -1141,10 +1199,17 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1141
1199
|
sqlalchemy.exc.OperationalError,
|
|
1142
1200
|
sqlalchemy.exc.IntegrityError,
|
|
1143
1201
|
) as error:
|
|
1144
|
-
|
|
1202
|
+
structlogger.warning(
|
|
1203
|
+
"sql_tracker_store.initialisation_error",
|
|
1204
|
+
event_info="Failed to establish a connection to the SQL database. ",
|
|
1205
|
+
exc_info=error,
|
|
1206
|
+
)
|
|
1145
1207
|
sleep(5)
|
|
1146
1208
|
|
|
1147
|
-
|
|
1209
|
+
structlogger.debug(
|
|
1210
|
+
"sql_tracker_store.connected_to_sql_database",
|
|
1211
|
+
event_info=f"Connection to SQL database '{db}' successful.",
|
|
1212
|
+
)
|
|
1148
1213
|
|
|
1149
1214
|
super().__init__(domain, event_broker, **kwargs)
|
|
1150
1215
|
|
|
@@ -1212,7 +1277,7 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1212
1277
|
"""Creates database `db` and updates engine accordingly."""
|
|
1213
1278
|
from sqlalchemy import create_engine
|
|
1214
1279
|
|
|
1215
|
-
if
|
|
1280
|
+
if self.engine.dialect.name != "postgresql":
|
|
1216
1281
|
rasa.shared.utils.io.raise_warning(
|
|
1217
1282
|
"The parameter 'login_db' can only be used with a postgres database."
|
|
1218
1283
|
)
|
|
@@ -1252,7 +1317,11 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1252
1317
|
sqlalchemy.exc.ProgrammingError,
|
|
1253
1318
|
sqlalchemy.exc.IntegrityError,
|
|
1254
1319
|
) as e:
|
|
1255
|
-
|
|
1320
|
+
structlogger.error(
|
|
1321
|
+
"sql_tracker_store.create_database_failed",
|
|
1322
|
+
event_info=f"Could not create database '{database_name}'",
|
|
1323
|
+
exec_info=e,
|
|
1324
|
+
)
|
|
1256
1325
|
|
|
1257
1326
|
@contextlib.contextmanager
|
|
1258
1327
|
def session_scope(self) -> Generator["Session", None, None]:
|
|
@@ -1316,15 +1385,21 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1316
1385
|
events = [json.loads(event.data) for event in serialised_events]
|
|
1317
1386
|
|
|
1318
1387
|
if self.domain and len(events) > 0:
|
|
1319
|
-
|
|
1388
|
+
structlogger.debug(
|
|
1389
|
+
"sql_tracker_store.recreating_tracker",
|
|
1390
|
+
event_info=f"Recreating tracker from sender id '{sender_id}'",
|
|
1391
|
+
)
|
|
1320
1392
|
return DialogueStateTracker.from_dict(
|
|
1321
1393
|
sender_id, events, self.domain.slots
|
|
1322
1394
|
)
|
|
1323
1395
|
else:
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1396
|
+
structlogger.debug(
|
|
1397
|
+
"sql_tracker_store._retrieve.no_tracker_for_sender_id",
|
|
1398
|
+
event_info=(
|
|
1399
|
+
f"Can't retrieve tracker matching "
|
|
1400
|
+
f"sender id '{sender_id}' from SQL storage. "
|
|
1401
|
+
f"Returning `None` instead.",
|
|
1402
|
+
),
|
|
1328
1403
|
)
|
|
1329
1404
|
return None
|
|
1330
1405
|
|
|
@@ -1401,7 +1476,12 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
1401
1476
|
)
|
|
1402
1477
|
session.commit()
|
|
1403
1478
|
|
|
1404
|
-
|
|
1479
|
+
structlogger.debug(
|
|
1480
|
+
"sql_tracker_store.save_tracker",
|
|
1481
|
+
event_info=(
|
|
1482
|
+
f"Tracker with sender_id " f"'{tracker.sender_id}' stored to database",
|
|
1483
|
+
),
|
|
1484
|
+
)
|
|
1405
1485
|
|
|
1406
1486
|
def _additional_events(
|
|
1407
1487
|
self, session: "Session", tracker: DialogueStateTracker
|
|
@@ -1469,11 +1549,14 @@ class FailSafeTrackerStore(TrackerStore):
|
|
|
1469
1549
|
if self._on_tracker_store_error:
|
|
1470
1550
|
self._on_tracker_store_error(error)
|
|
1471
1551
|
else:
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1552
|
+
structlogger.error(
|
|
1553
|
+
"fail_safe_tracker_store.tracker_store_error",
|
|
1554
|
+
event_info=(
|
|
1555
|
+
f"Error happened when trying to save conversation tracker to "
|
|
1556
|
+
f"'{self._tracker_store.__class__.__name__}'. Falling back to use "
|
|
1557
|
+
f"the '{InMemoryTrackerStore.__name__}'. Please "
|
|
1558
|
+
f"investigate the following error: {error}."
|
|
1559
|
+
),
|
|
1477
1560
|
)
|
|
1478
1561
|
|
|
1479
1562
|
async def retrieve(self, sender_id: Text) -> Optional[DialogueStateTracker]:
|
|
@@ -1525,11 +1608,14 @@ class FailSafeTrackerStore(TrackerStore):
|
|
|
1525
1608
|
if self._on_tracker_store_error:
|
|
1526
1609
|
self._on_tracker_store_error(error)
|
|
1527
1610
|
else:
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1611
|
+
structlogger.error(
|
|
1612
|
+
"fail_safe_tracker_store.tracker_store_retrieve_error",
|
|
1613
|
+
event_info=(
|
|
1614
|
+
f"Error happened when trying to retrieve conversation tracker from "
|
|
1615
|
+
f"'{self._tracker_store.__class__.__name__}'. Falling back to use "
|
|
1616
|
+
f"the '{InMemoryTrackerStore.__name__}'."
|
|
1617
|
+
),
|
|
1618
|
+
exec_info=error,
|
|
1533
1619
|
)
|
|
1534
1620
|
|
|
1535
1621
|
|
|
@@ -1574,7 +1660,10 @@ def _create_from_endpoint_config(
|
|
|
1574
1660
|
domain, endpoint_config, event_broker
|
|
1575
1661
|
)
|
|
1576
1662
|
|
|
1577
|
-
|
|
1663
|
+
structlogger.debug(
|
|
1664
|
+
"tracker_store.create_tracker_store_from_endpoint_config",
|
|
1665
|
+
eventi_info=f"Connected to {tracker_store.__class__.__name__}.",
|
|
1666
|
+
)
|
|
1578
1667
|
|
|
1579
1668
|
return tracker_store
|
|
1580
1669
|
|
rasa/core/train.py
CHANGED
rasa/core/training/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import TYPE_CHECKING, List, Optional, Text, Union
|
|
2
2
|
|
|
3
3
|
if TYPE_CHECKING:
|
|
4
4
|
from rasa.shared.core.domain import Domain
|
|
@@ -21,8 +21,8 @@ def extract_story_graph(
|
|
|
21
21
|
Returns:
|
|
22
22
|
The loaded training data as graph.
|
|
23
23
|
"""
|
|
24
|
-
from rasa.shared.core.training_data.structures import StoryGraph
|
|
25
24
|
import rasa.shared.core.training_data.loading as core_loading
|
|
25
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
26
26
|
|
|
27
27
|
story_steps = core_loading.load_data_from_resource(
|
|
28
28
|
resource_name, domain, exclusion_percentage=exclusion_percentage
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
from typing import Text
|
|
3
3
|
|
|
4
|
+
from rasa.shared.constants import UTTER_PREFIX
|
|
4
5
|
from rasa.shared.core.domain import Domain, InvalidDomain
|
|
5
6
|
from rasa.shared.core.events import ActionExecuted
|
|
6
7
|
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
@@ -9,10 +10,8 @@ from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
|
9
10
|
from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
|
|
10
11
|
YAMLStoryWriter,
|
|
11
12
|
)
|
|
12
|
-
from rasa.shared.constants import UTTER_PREFIX
|
|
13
13
|
from rasa.utils.converter import TrainingDataConverter
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
OBSOLETE_RESPOND_PREFIX = "respond_"
|
|
17
16
|
|
|
18
17
|
|
|
@@ -13,10 +13,10 @@ from typing import (
|
|
|
13
13
|
Dict,
|
|
14
14
|
List,
|
|
15
15
|
Optional,
|
|
16
|
+
Set,
|
|
16
17
|
Text,
|
|
17
18
|
Tuple,
|
|
18
19
|
Union,
|
|
19
|
-
Set,
|
|
20
20
|
cast,
|
|
21
21
|
)
|
|
22
22
|
|
|
@@ -50,28 +50,28 @@ from rasa.core import run, utils
|
|
|
50
50
|
from rasa.core.constants import DEFAULT_SERVER_FORMAT, DEFAULT_SERVER_PORT
|
|
51
51
|
from rasa.core.utils import AvailableEndpoints
|
|
52
52
|
from rasa.shared.constants import (
|
|
53
|
-
INTENT_MESSAGE_PREFIX,
|
|
54
53
|
DEFAULT_SENDER_ID,
|
|
55
|
-
UTTER_PREFIX,
|
|
56
54
|
DOCS_URL_NLU_BASED_POLICIES,
|
|
55
|
+
INTENT_MESSAGE_PREFIX,
|
|
56
|
+
UTTER_PREFIX,
|
|
57
57
|
)
|
|
58
58
|
from rasa.shared.core.constants import (
|
|
59
|
-
USER_INTENT_RESTART,
|
|
60
59
|
ACTION_LISTEN_NAME,
|
|
61
|
-
|
|
60
|
+
ACTION_UNLIKELY_INTENT_NAME,
|
|
62
61
|
ACTIVE_LOOP,
|
|
62
|
+
LOOP_INTERRUPTED,
|
|
63
|
+
LOOP_NAME,
|
|
63
64
|
LOOP_REJECTED,
|
|
64
65
|
REQUESTED_SLOT,
|
|
65
|
-
|
|
66
|
-
ACTION_UNLIKELY_INTENT_NAME,
|
|
66
|
+
USER_INTENT_RESTART,
|
|
67
67
|
)
|
|
68
68
|
from rasa.shared.core.domain import (
|
|
69
|
-
|
|
70
|
-
KEY_INTENTS,
|
|
69
|
+
KEY_ACTIONS,
|
|
71
70
|
KEY_ENTITIES,
|
|
71
|
+
KEY_INTENTS,
|
|
72
72
|
KEY_RESPONSES,
|
|
73
|
-
KEY_ACTIONS,
|
|
74
73
|
KEY_RESPONSES_TEXT,
|
|
74
|
+
Domain,
|
|
75
75
|
)
|
|
76
76
|
from rasa.shared.core.events import (
|
|
77
77
|
ActionExecuted,
|
|
@@ -79,11 +79,11 @@ from rasa.shared.core.events import (
|
|
|
79
79
|
BotUttered,
|
|
80
80
|
Event,
|
|
81
81
|
Restarted,
|
|
82
|
-
UserUttered,
|
|
83
82
|
UserUtteranceReverted,
|
|
83
|
+
UserUttered,
|
|
84
84
|
)
|
|
85
85
|
from rasa.shared.core.generator import TrackerWithCachedStates
|
|
86
|
-
from rasa.shared.core.trackers import
|
|
86
|
+
from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
|
|
87
87
|
from rasa.shared.core.training_data import visualization
|
|
88
88
|
from rasa.shared.core.training_data.visualization import (
|
|
89
89
|
VISUALIZATION_TEMPLATE_PATH,
|
|
@@ -91,7 +91,7 @@ from rasa.shared.core.training_data.visualization import (
|
|
|
91
91
|
)
|
|
92
92
|
from rasa.shared.exceptions import InvalidConfigException
|
|
93
93
|
from rasa.shared.importers.rasa import TrainingDataImporter
|
|
94
|
-
from rasa.shared.nlu.constants import
|
|
94
|
+
from rasa.shared.nlu.constants import INTENT_NAME_KEY, TEXT
|
|
95
95
|
|
|
96
96
|
# noinspection PyProtectedMember
|
|
97
97
|
from rasa.shared.nlu.training_data import loading
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
from collections import defaultdict
|
|
2
|
-
import logging
|
|
3
1
|
import json
|
|
2
|
+
import logging
|
|
3
|
+
from collections import defaultdict
|
|
4
4
|
from typing import DefaultDict, Dict, Generator, List, NamedTuple, Optional, Text, Tuple
|
|
5
5
|
|
|
6
6
|
from rasa.core.featurizers.tracker_featurizers import MaxHistoryTrackerFeaturizer
|
|
7
|
+
from rasa.nlu.tokenizers.tokenizer import Tokenizer
|
|
7
8
|
from rasa.shared.core.constants import (
|
|
8
9
|
ACTION_LISTEN_NAME,
|
|
9
|
-
PREVIOUS_ACTION,
|
|
10
10
|
ACTION_UNLIKELY_INTENT_NAME,
|
|
11
|
+
PREVIOUS_ACTION,
|
|
11
12
|
USER,
|
|
12
13
|
)
|
|
13
14
|
from rasa.shared.core.domain import Domain, State
|
|
14
15
|
from rasa.shared.core.events import ActionExecuted, Event
|
|
15
16
|
from rasa.shared.core.generator import TrackerWithCachedStates
|
|
16
|
-
|
|
17
|
-
from rasa.nlu.tokenizers.tokenizer import Tokenizer
|
|
18
17
|
from rasa.shared.nlu.constants import TEXT
|
|
19
18
|
from rasa.shared.nlu.training_data.message import Message
|
|
20
19
|
|
rasa/core/training/training.py
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import dataclasses
|
|
2
|
-
|
|
3
|
-
from typing import DefaultDict, Dict, List, Optional, Set, Text, TYPE_CHECKING
|
|
4
2
|
from collections import defaultdict
|
|
3
|
+
from typing import TYPE_CHECKING, DefaultDict, Dict, List, Optional, Set, Text
|
|
5
4
|
|
|
6
|
-
from rasa.shared.core.events import ActionExecuted, UserUttered
|
|
7
|
-
from rasa.shared.core.events import SlotSet, ActiveLoop
|
|
5
|
+
from rasa.shared.core.events import ActionExecuted, ActiveLoop, SlotSet, UserUttered
|
|
8
6
|
|
|
9
7
|
if TYPE_CHECKING:
|
|
10
8
|
from rasa.shared.core.domain import Domain
|
|
11
|
-
from rasa.shared.core.trackers import DialogueStateTracker
|
|
12
9
|
from rasa.shared.core.events import Event
|
|
10
|
+
from rasa.shared.core.trackers import DialogueStateTracker
|
|
13
11
|
|
|
14
12
|
|
|
15
13
|
@dataclasses.dataclass
|
rasa/core/utils.py
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import structlog
|
|
2
1
|
import logging
|
|
3
2
|
import os
|
|
4
3
|
from pathlib import Path
|
|
5
4
|
from socket import SOCK_DGRAM, SOCK_STREAM
|
|
6
|
-
from typing import Any, Dict,
|
|
5
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Text, Tuple, Union
|
|
7
6
|
|
|
8
7
|
import numpy as np
|
|
8
|
+
import structlog
|
|
9
9
|
from sanic import Sanic
|
|
10
10
|
|
|
11
11
|
import rasa.cli.utils as cli_utils
|
|
12
12
|
import rasa.shared.utils.io
|
|
13
13
|
from rasa.constants import DEFAULT_SANIC_WORKERS, ENV_SANIC_WORKERS
|
|
14
14
|
from rasa.core.constants import (
|
|
15
|
-
DOMAIN_GROUND_TRUTH_METADATA_KEY,
|
|
16
|
-
UTTER_SOURCE_METADATA_KEY,
|
|
17
15
|
ACTIVE_FLOW_METADATA_KEY,
|
|
16
|
+
DOMAIN_GROUND_TRUTH_METADATA_KEY,
|
|
18
17
|
STEP_ID_METADATA_KEY,
|
|
18
|
+
UTTER_SOURCE_METADATA_KEY,
|
|
19
19
|
)
|
|
20
|
-
from rasa.core.lock_store import LockStore, RedisLockStore
|
|
20
|
+
from rasa.core.lock_store import InMemoryLockStore, LockStore, RedisLockStore
|
|
21
21
|
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, TCP_PROTOCOL
|
|
22
22
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
23
23
|
from rasa.utils.endpoints import (
|
rasa/core/visualize.py
CHANGED
|
@@ -3,9 +3,9 @@ import os
|
|
|
3
3
|
from typing import Text
|
|
4
4
|
|
|
5
5
|
from rasa import telemetry
|
|
6
|
+
from rasa.shared.core.domain import Domain, InvalidDomain
|
|
6
7
|
from rasa.shared.core.training_data import loading
|
|
7
8
|
from rasa.shared.utils.cli import print_error
|
|
8
|
-
from rasa.shared.core.domain import InvalidDomain, Domain
|
|
9
9
|
|
|
10
10
|
logger = logging.getLogger(__name__)
|
|
11
11
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from typing import Any, Dict, List, Optional
|
|
3
4
|
|
|
4
5
|
import structlog
|
|
@@ -6,8 +7,8 @@ import structlog
|
|
|
6
7
|
from rasa.dialogue_understanding.coexistence.constants import (
|
|
7
8
|
CALM_ENTRY,
|
|
8
9
|
NLU_ENTRY,
|
|
9
|
-
STICKY,
|
|
10
10
|
NON_STICKY,
|
|
11
|
+
STICKY,
|
|
11
12
|
)
|
|
12
13
|
from rasa.dialogue_understanding.commands import Command, SetSlotCommand
|
|
13
14
|
from rasa.dialogue_understanding.commands.noop_command import NoopCommand
|
|
@@ -27,7 +28,6 @@ from rasa.shared.nlu.constants import COMMANDS, INTENT, INTENT_NAME_KEY
|
|
|
27
28
|
from rasa.shared.nlu.training_data.message import Message
|
|
28
29
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
29
30
|
|
|
30
|
-
|
|
31
31
|
structlogger = structlog.get_logger()
|
|
32
32
|
|
|
33
33
|
|
|
@@ -10,8 +10,8 @@ import rasa.shared.utils.io
|
|
|
10
10
|
from rasa.dialogue_understanding.coexistence.constants import (
|
|
11
11
|
CALM_ENTRY,
|
|
12
12
|
NLU_ENTRY,
|
|
13
|
-
STICKY,
|
|
14
13
|
NON_STICKY,
|
|
14
|
+
STICKY,
|
|
15
15
|
)
|
|
16
16
|
from rasa.dialogue_understanding.commands import Command, SetSlotCommand
|
|
17
17
|
from rasa.dialogue_understanding.commands.noop_command import NoopCommand
|
|
@@ -23,15 +23,15 @@ from rasa.engine.recipes.default_recipe import DefaultV1Recipe
|
|
|
23
23
|
from rasa.engine.storage.resource import Resource
|
|
24
24
|
from rasa.engine.storage.storage import ModelStorage
|
|
25
25
|
from rasa.shared.constants import (
|
|
26
|
-
ROUTE_TO_CALM_SLOT,
|
|
27
|
-
PROMPT_CONFIG_KEY,
|
|
28
|
-
PROVIDER_CONFIG_KEY,
|
|
29
26
|
MODEL_CONFIG_KEY,
|
|
30
27
|
OPENAI_PROVIDER,
|
|
28
|
+
PROMPT_CONFIG_KEY,
|
|
29
|
+
PROVIDER_CONFIG_KEY,
|
|
30
|
+
ROUTE_TO_CALM_SLOT,
|
|
31
31
|
TIMEOUT_CONFIG_KEY,
|
|
32
32
|
)
|
|
33
33
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
34
|
-
from rasa.shared.exceptions import
|
|
34
|
+
from rasa.shared.exceptions import FileIOException, InvalidConfigException
|
|
35
35
|
from rasa.shared.nlu.constants import COMMANDS, TEXT
|
|
36
36
|
from rasa.shared.nlu.training_data.message import Message
|
|
37
37
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|