rasa-pro 3.14.0.dev20250922__py3-none-any.whl → 3.14.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- rasa/__main__.py +15 -3
- rasa/agents/__init__.py +0 -0
- rasa/agents/agent_factory.py +122 -0
- rasa/agents/agent_manager.py +211 -0
- rasa/agents/constants.py +43 -0
- rasa/agents/core/__init__.py +0 -0
- rasa/agents/core/agent_protocol.py +107 -0
- rasa/agents/core/types.py +81 -0
- rasa/agents/exceptions.py +38 -0
- rasa/agents/protocol/__init__.py +5 -0
- rasa/agents/protocol/a2a/__init__.py +0 -0
- rasa/agents/protocol/a2a/a2a_agent.py +879 -0
- rasa/agents/protocol/mcp/__init__.py +0 -0
- rasa/agents/protocol/mcp/mcp_base_agent.py +726 -0
- rasa/agents/protocol/mcp/mcp_open_agent.py +327 -0
- rasa/agents/protocol/mcp/mcp_task_agent.py +522 -0
- rasa/agents/schemas/__init__.py +13 -0
- rasa/agents/schemas/agent_input.py +38 -0
- rasa/agents/schemas/agent_output.py +26 -0
- rasa/agents/schemas/agent_tool_result.py +65 -0
- rasa/agents/schemas/agent_tool_schema.py +186 -0
- rasa/agents/templates/__init__.py +0 -0
- rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +20 -0
- rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +22 -0
- rasa/agents/utils.py +206 -0
- rasa/agents/validation.py +485 -0
- rasa/api.py +24 -9
- rasa/builder/config.py +6 -2
- rasa/builder/guardrails/{lakera.py → clients.py} +55 -5
- rasa/builder/guardrails/constants.py +3 -0
- rasa/builder/guardrails/models.py +45 -10
- rasa/builder/guardrails/policy_checker.py +324 -0
- rasa/builder/guardrails/utils.py +42 -276
- rasa/builder/llm_service.py +32 -5
- rasa/builder/models.py +1 -0
- rasa/builder/project_generator.py +6 -1
- rasa/builder/service.py +16 -13
- rasa/builder/training_service.py +18 -24
- rasa/builder/validation_service.py +1 -1
- rasa/cli/arguments/default_arguments.py +12 -0
- rasa/cli/arguments/run.py +2 -0
- rasa/cli/arguments/train.py +2 -0
- rasa/cli/data.py +10 -8
- rasa/cli/dialogue_understanding_test.py +10 -7
- rasa/cli/e2e_test.py +9 -6
- rasa/cli/evaluate.py +4 -2
- rasa/cli/export.py +5 -2
- rasa/cli/inspect.py +8 -4
- rasa/cli/interactive.py +5 -4
- rasa/cli/llm_fine_tuning.py +11 -6
- rasa/cli/project_templates/tutorial/credentials.yml +10 -0
- rasa/cli/run.py +12 -10
- rasa/cli/scaffold.py +4 -4
- rasa/cli/shell.py +9 -5
- rasa/cli/studio/studio.py +1 -1
- rasa/cli/test.py +34 -14
- rasa/cli/train.py +41 -28
- rasa/cli/utils.py +1 -393
- rasa/cli/validation/__init__.py +0 -0
- rasa/cli/validation/bot_config.py +223 -0
- rasa/cli/validation/config_path_validation.py +257 -0
- rasa/cli/x.py +8 -4
- rasa/constants.py +7 -1
- rasa/core/actions/action.py +51 -10
- rasa/core/actions/grpc_custom_action_executor.py +1 -1
- rasa/core/agent.py +19 -2
- rasa/core/available_agents.py +229 -0
- rasa/core/channels/__init__.py +82 -35
- rasa/core/channels/development_inspector.py +3 -3
- rasa/core/channels/inspector/README.md +25 -13
- rasa/core/channels/inspector/dist/assets/{arc-35222594.js → arc-6177260a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-a0efbfd3.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0584c0f2.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-39f40dbe.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-1ad755f3.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-b0f4f0fe.js → createText-2e5e7dd3-088372e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-9039bff9.js → edges-e0da2a9e-58676240.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-65c9b127.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-4f08b38e.js → flowDb-956e92f1-ea63f85c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-e95c362a.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-703c3015.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-699328ea.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-04cf4b05.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-ee94449e.js → graph-0a6f8466.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-940162b4.js → index-3862675e-7610671a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-c79c2866.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-84489d30.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-a9aa9858.js → layout-e7fbc2bf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-eb73cf26.js → line-a8aa457c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-b3399f9a.js → linear-3351e0d2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-b095bf1a.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-07644b66.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-573a3f9c.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-d457e1e1.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-9d26e1a2.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-3a9cde10.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-4f3e8cec.js → stateDiagram-587899a1-0e770395.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-e617e5bf.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-eab30d2f.js → styles-6aaf32cf-36a9e70d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-09994be2.js → styles-9a916d00-884a8b5b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-b7110364.js → styles-c10674c1-dc097813.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-3ebc92ad.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-7d13d2f2.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-488385e1.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +18 -18
- rasa/core/channels/inspector/src/App.tsx +29 -4
- rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
- rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +7 -4
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
- rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
- rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
- rasa/core/channels/inspector/src/types.ts +21 -0
- rasa/core/channels/inspector/yarn.lock +336 -189
- rasa/core/channels/studio_chat.py +6 -6
- rasa/core/channels/telegram.py +4 -9
- rasa/core/channels/voice_stream/genesys.py +1 -1
- rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +5 -1
- rasa/core/channels/voice_stream/voice_channel.py +3 -0
- rasa/core/config/__init__.py +0 -0
- rasa/core/{available_endpoints.py → config/available_endpoints.py} +51 -16
- rasa/core/config/configuration.py +260 -0
- rasa/core/config/credentials.py +19 -0
- rasa/core/config/message_procesing_config.py +34 -0
- rasa/core/constants.py +4 -0
- rasa/core/policies/enterprise_search_policy.py +5 -3
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/agent_executor.py +632 -0
- rasa/core/policies/flows/flow_executor.py +136 -75
- rasa/core/policies/flows/mcp_tool_executor.py +298 -0
- rasa/core/policies/intentless_policy.py +1 -1
- rasa/core/policies/ted_policy.py +20 -12
- rasa/core/policies/unexpected_intent_policy.py +6 -0
- rasa/core/processor.py +68 -44
- rasa/core/run.py +37 -8
- rasa/core/test.py +4 -0
- rasa/core/tracker_stores/tracker_store.py +3 -7
- rasa/core/train.py +1 -1
- rasa/core/training/interactive.py +20 -18
- rasa/core/training/story_conflict.py +5 -5
- rasa/core/utils.py +22 -23
- rasa/dialogue_understanding/commands/__init__.py +8 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
- rasa/dialogue_understanding/commands/clarify_command.py +20 -2
- rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
- rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
- rasa/dialogue_understanding/commands/utils.py +124 -2
- rasa/dialogue_understanding/generator/command_parser.py +4 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
- rasa/dialogue_understanding/patterns/cancel.py +27 -6
- rasa/dialogue_understanding/patterns/clarify.py +3 -14
- rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
- rasa/dialogue_understanding/processor/command_processor.py +136 -15
- rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
- rasa/dialogue_understanding/stack/utils.py +57 -3
- rasa/dialogue_understanding/utils.py +24 -4
- rasa/dialogue_understanding_test/du_test_runner.py +8 -3
- rasa/e2e_test/e2e_test_runner.py +13 -3
- rasa/engine/caching.py +2 -2
- rasa/engine/constants.py +1 -1
- rasa/engine/recipes/default_components.py +138 -49
- rasa/engine/recipes/default_recipe.py +108 -11
- rasa/engine/runner/dask.py +8 -5
- rasa/engine/validation.py +19 -6
- rasa/graph_components/validators/default_recipe_validator.py +86 -28
- rasa/hooks.py +5 -5
- rasa/llm_fine_tuning/utils.py +2 -2
- rasa/model_training.py +60 -47
- rasa/nlu/classifiers/diet_classifier.py +198 -98
- rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
- rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
- rasa/nlu/extractors/crf_entity_extractor.py +9 -10
- rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
- rasa/nlu/selectors/response_selector.py +10 -2
- rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
- rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
- rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
- rasa/nlu/utils/mitie_utils.py +3 -0
- rasa/nlu/utils/spacy_utils.py +3 -2
- rasa/plugin.py +8 -8
- rasa/privacy/privacy_manager.py +12 -3
- rasa/server.py +15 -3
- rasa/shared/agents/__init__.py +0 -0
- rasa/shared/agents/auth/__init__.py +0 -0
- rasa/shared/agents/auth/agent_auth_factory.py +105 -0
- rasa/shared/agents/auth/agent_auth_manager.py +92 -0
- rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
- rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
- rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
- rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
- rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +167 -0
- rasa/shared/agents/auth/constants.py +12 -0
- rasa/shared/agents/auth/types.py +12 -0
- rasa/shared/agents/utils.py +35 -0
- rasa/shared/constants.py +8 -0
- rasa/shared/core/constants.py +16 -1
- rasa/shared/core/domain.py +0 -7
- rasa/shared/core/events.py +327 -0
- rasa/shared/core/flows/constants.py +5 -0
- rasa/shared/core/flows/flows_list.py +21 -5
- rasa/shared/core/flows/flows_yaml_schema.json +119 -184
- rasa/shared/core/flows/steps/call.py +49 -5
- rasa/shared/core/flows/steps/collect.py +98 -13
- rasa/shared/core/flows/validation.py +372 -8
- rasa/shared/core/flows/yaml_flows_io.py +3 -2
- rasa/shared/core/slots.py +2 -2
- rasa/shared/core/trackers.py +5 -2
- rasa/shared/exceptions.py +16 -0
- rasa/shared/importers/rasa.py +1 -1
- rasa/shared/importers/utils.py +9 -3
- rasa/shared/providers/llm/_base_litellm_client.py +41 -9
- rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
- rasa/shared/providers/llm/llm_client.py +7 -3
- rasa/shared/providers/llm/llm_response.py +66 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
- rasa/shared/utils/common.py +24 -0
- rasa/shared/utils/health_check/health_check.py +7 -3
- rasa/shared/utils/llm.py +39 -16
- rasa/shared/utils/mcp/__init__.py +0 -0
- rasa/shared/utils/mcp/server_connection.py +247 -0
- rasa/shared/utils/mcp/utils.py +20 -0
- rasa/shared/utils/schemas/events.py +42 -0
- rasa/shared/utils/yaml.py +3 -1
- rasa/studio/pull/pull.py +3 -2
- rasa/studio/train.py +8 -7
- rasa/studio/upload.py +3 -6
- rasa/telemetry.py +69 -5
- rasa/tracing/config.py +45 -12
- rasa/tracing/constants.py +14 -0
- rasa/tracing/instrumentation/attribute_extractors.py +142 -9
- rasa/tracing/instrumentation/instrumentation.py +626 -21
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
- rasa/tracing/instrumentation/metrics.py +32 -0
- rasa/tracing/metric_instrument_provider.py +68 -0
- rasa/utils/common.py +92 -1
- rasa/utils/endpoints.py +11 -2
- rasa/utils/log_utils.py +96 -5
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/tensorflow/__init__.py +7 -0
- rasa/utils/tensorflow/callback.py +136 -101
- rasa/utils/tensorflow/crf.py +1 -1
- rasa/utils/tensorflow/data_generator.py +21 -8
- rasa/utils/tensorflow/layers.py +21 -11
- rasa/utils/tensorflow/metrics.py +7 -3
- rasa/utils/tensorflow/models.py +56 -8
- rasa/utils/tensorflow/rasa_layers.py +8 -6
- rasa/utils/tensorflow/transformer.py +2 -3
- rasa/utils/train_utils.py +54 -24
- rasa/validator.py +5 -5
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc1.dist-info}/METADATA +46 -41
- {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc1.dist-info}/RECORD +285 -226
- rasa/builder/scrape_rasa_docs.py +0 -97
- rasa/core/channels/inspector/dist/assets/channel-8e08bed9.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-78c82dea.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b08f601.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-c941dcb3.js +0 -1336
- {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc1.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc1.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc1.dist-info}/entry_points.txt +0 -0
rasa/cli/data.py
CHANGED
|
@@ -15,6 +15,8 @@ from rasa import telemetry
|
|
|
15
15
|
from rasa.cli import SubParsersAction
|
|
16
16
|
from rasa.cli.arguments import data as arguments
|
|
17
17
|
from rasa.cli.arguments import default_arguments
|
|
18
|
+
from rasa.cli.validation.bot_config import validate_files
|
|
19
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
18
20
|
from rasa.e2e_test.e2e_config import create_llm_e2e_test_converter_config
|
|
19
21
|
from rasa.e2e_test.e2e_test_converter import E2ETestConverter
|
|
20
22
|
from rasa.e2e_test.utils.e2e_yaml_utils import E2ETestYAMLWriter
|
|
@@ -137,7 +139,7 @@ def _add_data_validate_parsers(
|
|
|
137
139
|
)
|
|
138
140
|
_append_story_structure_arguments(validate_parser)
|
|
139
141
|
validate_parser.set_defaults(
|
|
140
|
-
func=lambda args:
|
|
142
|
+
func=lambda args: validate_files(
|
|
141
143
|
args.fail_on_warnings, args.max_history, _build_training_data_importer(args)
|
|
142
144
|
)
|
|
143
145
|
)
|
|
@@ -153,7 +155,7 @@ def _add_data_validate_parsers(
|
|
|
153
155
|
_append_story_structure_arguments(story_structure_parser)
|
|
154
156
|
|
|
155
157
|
story_structure_parser.set_defaults(
|
|
156
|
-
func=lambda args:
|
|
158
|
+
func=lambda args: validate_files(
|
|
157
159
|
args.fail_on_warnings,
|
|
158
160
|
args.max_history,
|
|
159
161
|
_build_training_data_importer(args),
|
|
@@ -169,7 +171,7 @@ def _add_data_validate_parsers(
|
|
|
169
171
|
help="Checks for inconsistencies in the flows files.",
|
|
170
172
|
)
|
|
171
173
|
flows_structure_parser.set_defaults(
|
|
172
|
-
func=lambda args:
|
|
174
|
+
func=lambda args: validate_files(
|
|
173
175
|
args.fail_on_warnings,
|
|
174
176
|
args.max_history,
|
|
175
177
|
_build_training_data_importer(args),
|
|
@@ -185,7 +187,7 @@ def _add_data_validate_parsers(
|
|
|
185
187
|
help="Checks for inconsistencies of the flow and response translation.",
|
|
186
188
|
)
|
|
187
189
|
translations_structure_parser.set_defaults(
|
|
188
|
-
func=lambda args:
|
|
190
|
+
func=lambda args: validate_files(
|
|
189
191
|
args.fail_on_warnings,
|
|
190
192
|
args.max_history,
|
|
191
193
|
_build_training_data_importer(args),
|
|
@@ -196,12 +198,12 @@ def _add_data_validate_parsers(
|
|
|
196
198
|
|
|
197
199
|
|
|
198
200
|
def _build_training_data_importer(args: argparse.Namespace) -> "TrainingDataImporter":
|
|
199
|
-
config =
|
|
201
|
+
config = get_validated_path(
|
|
200
202
|
args.config, "config", DEFAULT_CONFIG_PATH, none_is_valid=True
|
|
201
203
|
)
|
|
202
204
|
|
|
203
205
|
# Exit the validation if the domain path is invalid
|
|
204
|
-
domain =
|
|
206
|
+
domain = get_validated_path(
|
|
205
207
|
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=False
|
|
206
208
|
)
|
|
207
209
|
|
|
@@ -231,7 +233,7 @@ def split_nlu_data(args: argparse.Namespace) -> None:
|
|
|
231
233
|
Args:
|
|
232
234
|
args: Commandline arguments
|
|
233
235
|
"""
|
|
234
|
-
data_path =
|
|
236
|
+
data_path = get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
235
237
|
data_path = rasa.shared.data.get_nlu_directory(data_path)
|
|
236
238
|
|
|
237
239
|
nlu_data = rasa.shared.nlu.training_data.loading.load_data(data_path)
|
|
@@ -258,7 +260,7 @@ def split_stories_data(args: argparse.Namespace) -> None:
|
|
|
258
260
|
YAMLStoryReader,
|
|
259
261
|
)
|
|
260
262
|
|
|
261
|
-
data_path =
|
|
263
|
+
data_path = get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
262
264
|
data_files = rasa.shared.data.get_data_files(
|
|
263
265
|
data_path, YAMLStoryReader.is_stories_file
|
|
264
266
|
)
|
|
@@ -3,6 +3,7 @@ import asyncio
|
|
|
3
3
|
import datetime
|
|
4
4
|
import importlib
|
|
5
5
|
import sys
|
|
6
|
+
from pathlib import Path
|
|
6
7
|
from typing import Any, Dict, List, Optional, Type, cast
|
|
7
8
|
|
|
8
9
|
import structlog
|
|
@@ -14,9 +15,11 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
14
15
|
add_endpoint_param,
|
|
15
16
|
add_model_param,
|
|
16
17
|
add_remote_storage_param,
|
|
18
|
+
add_sub_agents_param,
|
|
17
19
|
)
|
|
18
20
|
from rasa.core.agent import Agent
|
|
19
|
-
from rasa.core.available_endpoints import AvailableEndpoints
|
|
21
|
+
from rasa.core.config.available_endpoints import AvailableEndpoints
|
|
22
|
+
from rasa.core.config.configuration import Configuration
|
|
20
23
|
from rasa.core.exceptions import AgentNotReady
|
|
21
24
|
from rasa.core.processor import MessageProcessor
|
|
22
25
|
from rasa.dialogue_understanding.commands import Command
|
|
@@ -47,7 +50,6 @@ from rasa.dialogue_understanding_test.validation import (
|
|
|
47
50
|
from rasa.e2e_test.e2e_test_case import TestSuite
|
|
48
51
|
from rasa.exceptions import RasaException
|
|
49
52
|
from rasa.shared.constants import (
|
|
50
|
-
DEFAULT_ENDPOINTS_PATH,
|
|
51
53
|
LLM_CONFIG_KEY,
|
|
52
54
|
ROUTE_TO_CALM_SLOT,
|
|
53
55
|
)
|
|
@@ -174,6 +176,8 @@ def add_du_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
174
176
|
),
|
|
175
177
|
)
|
|
176
178
|
|
|
179
|
+
add_sub_agents_param(du_arguments)
|
|
180
|
+
|
|
177
181
|
|
|
178
182
|
def ensure_calm_only_bot(agent: Agent) -> None:
|
|
179
183
|
if agent.domain is None or agent.processor is None:
|
|
@@ -218,6 +222,7 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
218
222
|
model_path=args.model,
|
|
219
223
|
model_server=endpoints.model,
|
|
220
224
|
remote_storage=args.remote_storage,
|
|
225
|
+
sub_agents_path=args.sub_agents,
|
|
221
226
|
)
|
|
222
227
|
except AgentNotReady as error:
|
|
223
228
|
structlogger.error(
|
|
@@ -323,11 +328,9 @@ def get_valid_test_suite(
|
|
|
323
328
|
|
|
324
329
|
|
|
325
330
|
def set_up_available_endpoints(args: argparse.Namespace) -> AvailableEndpoints:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
)
|
|
330
|
-
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
331
|
+
endpoints = Configuration.initialise_endpoints(
|
|
332
|
+
endpoints_path=Path(args.endpoints)
|
|
333
|
+
).endpoints
|
|
331
334
|
|
|
332
335
|
# Ignore all endpoints apart from action server, model, and nlu
|
|
333
336
|
# to ensure InMemoryTrackerStore is being used instead of production
|
rasa/cli/e2e_test.py
CHANGED
|
@@ -17,8 +17,9 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
17
17
|
add_endpoint_param,
|
|
18
18
|
add_model_param,
|
|
19
19
|
add_remote_storage_param,
|
|
20
|
+
add_sub_agents_param,
|
|
20
21
|
)
|
|
21
|
-
from rasa.core.
|
|
22
|
+
from rasa.core.config.configuration import Configuration, EndpointsConfigPath
|
|
22
23
|
from rasa.core.exceptions import AgentNotReady
|
|
23
24
|
from rasa.e2e_test.aggregate_test_stats_calculator import (
|
|
24
25
|
AggregateTestStatsCalculator,
|
|
@@ -50,7 +51,7 @@ from rasa.e2e_test.utils.io import (
|
|
|
50
51
|
)
|
|
51
52
|
from rasa.e2e_test.utils.validation import validate_model_path
|
|
52
53
|
from rasa.exceptions import RasaException
|
|
53
|
-
from rasa.shared.constants import
|
|
54
|
+
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
54
55
|
from rasa.utils.endpoints import EndpointConfig
|
|
55
56
|
|
|
56
57
|
RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME = "RASA_PRO_BETA_FINE_TUNING_RECIPE"
|
|
@@ -147,6 +148,8 @@ def add_e2e_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
147
148
|
help="Directory where to save coverage report to.",
|
|
148
149
|
)
|
|
149
150
|
|
|
151
|
+
add_sub_agents_param(parser)
|
|
152
|
+
|
|
150
153
|
|
|
151
154
|
def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
152
155
|
"""Run the end-to-end tests.
|
|
@@ -154,10 +157,9 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
154
157
|
Args:
|
|
155
158
|
args: Commandline arguments.
|
|
156
159
|
"""
|
|
157
|
-
|
|
158
|
-
args.endpoints
|
|
159
|
-
)
|
|
160
|
-
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
160
|
+
endpoints = Configuration.initialise_endpoints(
|
|
161
|
+
endpoints_path=EndpointsConfigPath.validate(args.endpoints)
|
|
162
|
+
).endpoints
|
|
161
163
|
|
|
162
164
|
# Ignore all endpoints apart from action server, model, nlu and nlg
|
|
163
165
|
# to ensure InMemoryTrackerStore is being used instead of production
|
|
@@ -192,6 +194,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
192
194
|
model_server=endpoints.model,
|
|
193
195
|
endpoints=endpoints,
|
|
194
196
|
test_case_path=Path(test_case_path),
|
|
197
|
+
sub_agents_path=args.sub_agents,
|
|
195
198
|
)
|
|
196
199
|
except AgentNotReady as error:
|
|
197
200
|
structlogger.error(
|
rasa/cli/evaluate.py
CHANGED
|
@@ -6,7 +6,7 @@ import rasa.cli.arguments.evaluate as arguments
|
|
|
6
6
|
import rasa.shared.utils.cli
|
|
7
7
|
from rasa import telemetry
|
|
8
8
|
from rasa.cli import SubParsersAction
|
|
9
|
-
from rasa.core.
|
|
9
|
+
from rasa.core.config.configuration import Configuration
|
|
10
10
|
from rasa.core.evaluation.marker_base import Marker, OperatorMarker
|
|
11
11
|
from rasa.core.evaluation.marker_tracker_loader import MarkerTrackerLoader
|
|
12
12
|
from rasa.core.tracker_stores.tracker_store import TrackerStore
|
|
@@ -217,6 +217,8 @@ def _create_tracker_loader(
|
|
|
217
217
|
A MarkerTrackerLoader object configured with the specified strategy against
|
|
218
218
|
the configured tracker store.
|
|
219
219
|
"""
|
|
220
|
-
endpoints =
|
|
220
|
+
endpoints = Configuration.initialise_endpoints(
|
|
221
|
+
endpoints_path=Path(endpoint_config)
|
|
222
|
+
).endpoints
|
|
221
223
|
tracker_store = TrackerStore.create(endpoints.tracker_store, domain=domain)
|
|
222
224
|
return MarkerTrackerLoader(tracker_store, strategy, count, seed)
|
rasa/cli/export.py
CHANGED
|
@@ -11,13 +11,14 @@ from rasa import telemetry
|
|
|
11
11
|
from rasa.cli import SubParsersAction
|
|
12
12
|
from rasa.cli.arguments import export as arguments
|
|
13
13
|
from rasa.core.brokers.pika import PikaEventBroker
|
|
14
|
+
from rasa.core.config.configuration import Configuration
|
|
14
15
|
from rasa.exceptions import PublishingError
|
|
15
16
|
from rasa.shared.constants import DOCS_URL_EVENT_BROKERS, DOCS_URL_TRACKER_STORES
|
|
16
17
|
from rasa.shared.exceptions import RasaException
|
|
17
18
|
|
|
18
19
|
if typing.TYPE_CHECKING:
|
|
19
|
-
from rasa.core.available_endpoints import AvailableEndpoints
|
|
20
20
|
from rasa.core.brokers.broker import EventBroker
|
|
21
|
+
from rasa.core.config.available_endpoints import AvailableEndpoints
|
|
21
22
|
from rasa.core.exporter import Exporter
|
|
22
23
|
from rasa.core.tracker_stores.tracker_store import TrackerStore
|
|
23
24
|
|
|
@@ -179,7 +180,9 @@ def export_trackers(args: argparse.Namespace) -> None:
|
|
|
179
180
|
async def _export_trackers(args: argparse.Namespace) -> None:
|
|
180
181
|
_assert_max_timestamp_is_greater_than_min_timestamp(args)
|
|
181
182
|
|
|
182
|
-
endpoints =
|
|
183
|
+
endpoints = Configuration.initialise_endpoints(
|
|
184
|
+
endpoints_path=args.endpoints
|
|
185
|
+
).endpoints
|
|
183
186
|
tracker_store = _get_tracker_store(endpoints)
|
|
184
187
|
event_broker = await _get_event_broker(endpoints)
|
|
185
188
|
_prepare_event_broker(event_broker)
|
rasa/cli/inspect.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import webbrowser
|
|
3
3
|
from asyncio import AbstractEventLoop
|
|
4
|
+
from pathlib import Path
|
|
4
5
|
from typing import List, Optional, Text
|
|
5
6
|
|
|
6
7
|
from sanic import Sanic
|
|
@@ -8,8 +9,9 @@ from sanic import Sanic
|
|
|
8
9
|
from rasa import telemetry
|
|
9
10
|
from rasa.cli import SubParsersAction
|
|
10
11
|
from rasa.cli.arguments import shell as arguments
|
|
12
|
+
from rasa.cli.arguments.default_arguments import add_sub_agents_param
|
|
11
13
|
from rasa.core import constants
|
|
12
|
-
from rasa.core.
|
|
14
|
+
from rasa.core.config.configuration import Configuration
|
|
13
15
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
14
16
|
from rasa.exceptions import ModelNotFound
|
|
15
17
|
from rasa.model import get_local_model
|
|
@@ -44,6 +46,8 @@ def add_subparser(
|
|
|
44
46
|
"--voice", help="Enable voice", action="store_true", default=False
|
|
45
47
|
)
|
|
46
48
|
|
|
49
|
+
add_sub_agents_param(inspect_parser)
|
|
50
|
+
|
|
47
51
|
# it'd be confusing to expose those arguments to the user,
|
|
48
52
|
# so we remove them
|
|
49
53
|
remove_argument_from_parser(inspect_parser, "--credentials")
|
|
@@ -64,7 +68,7 @@ async def open_inspector_in_browser(
|
|
|
64
68
|
def inspect(args: argparse.Namespace) -> None:
|
|
65
69
|
"""Inspect the bot using the most recent model."""
|
|
66
70
|
import rasa.cli.run
|
|
67
|
-
from rasa.cli.
|
|
71
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
68
72
|
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
69
73
|
|
|
70
74
|
async def after_start_hook_open_inspector(_: Sanic, __: AbstractEventLoop) -> None:
|
|
@@ -87,8 +91,8 @@ def inspect(args: argparse.Namespace) -> None:
|
|
|
87
91
|
# Load endpoints with proper endpoint file location
|
|
88
92
|
# This will initialise the endpoints singleton properly so that
|
|
89
93
|
# it can be used safely throughout the codebase with
|
|
90
|
-
# `
|
|
91
|
-
|
|
94
|
+
# `Configuration.get_instance().endpoints`
|
|
95
|
+
Configuration.initialise_endpoints(endpoints_path=Path(args.endpoints))
|
|
92
96
|
|
|
93
97
|
try:
|
|
94
98
|
model = get_local_model(model)
|
rasa/cli/interactive.py
CHANGED
|
@@ -11,6 +11,8 @@ import rasa.utils.common
|
|
|
11
11
|
from rasa import model
|
|
12
12
|
from rasa.cli import SubParsersAction
|
|
13
13
|
from rasa.cli.arguments import interactive as arguments
|
|
14
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
15
|
+
from rasa.core.constants import DEFAULT_SUB_AGENTS
|
|
14
16
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
15
17
|
from rasa.shared.constants import (
|
|
16
18
|
ASSISTANT_ID_DEFAULT_VALUE,
|
|
@@ -109,6 +111,7 @@ def _set_not_required_args(args: argparse.Namespace) -> None:
|
|
|
109
111
|
args.validation_max_history = None
|
|
110
112
|
args.remote_storage = None
|
|
111
113
|
args.keep_local_model_copy = False
|
|
114
|
+
args.sub_agents = DEFAULT_SUB_AGENTS # Default value for sub-agents
|
|
112
115
|
|
|
113
116
|
|
|
114
117
|
def perform_interactive_learning(
|
|
@@ -133,7 +136,7 @@ def perform_interactive_learning(
|
|
|
133
136
|
"Can not run interactive learning on an NLU-only model."
|
|
134
137
|
)
|
|
135
138
|
|
|
136
|
-
args.endpoints =
|
|
139
|
+
args.endpoints = get_validated_path(
|
|
137
140
|
args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
138
141
|
)
|
|
139
142
|
|
|
@@ -142,9 +145,7 @@ def perform_interactive_learning(
|
|
|
142
145
|
|
|
143
146
|
def get_provided_model(arg_model: Text) -> Optional[Union[Text, Path]]:
|
|
144
147
|
"""Checks model path input and selects model from it."""
|
|
145
|
-
model_path =
|
|
146
|
-
arg_model, "model", DEFAULT_MODELS_PATH
|
|
147
|
-
)
|
|
148
|
+
model_path = get_validated_path(arg_model, "model", DEFAULT_MODELS_PATH)
|
|
148
149
|
|
|
149
150
|
return (
|
|
150
151
|
model.get_latest_model(model_path) if os.path.isdir(model_path) else model_path
|
rasa/cli/llm_fine_tuning.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import asyncio
|
|
3
3
|
import sys
|
|
4
|
+
from pathlib import Path
|
|
4
5
|
from typing import Any, Dict, List, Type, cast
|
|
5
6
|
|
|
6
7
|
import structlog
|
|
@@ -14,13 +15,15 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
14
15
|
add_endpoint_param,
|
|
15
16
|
add_model_param,
|
|
16
17
|
add_remote_storage_param,
|
|
18
|
+
add_sub_agents_param,
|
|
17
19
|
)
|
|
18
20
|
from rasa.cli.e2e_test import (
|
|
19
21
|
RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
|
|
20
22
|
read_test_cases,
|
|
21
23
|
validate_model_path,
|
|
22
24
|
)
|
|
23
|
-
from rasa.core.available_endpoints import AvailableEndpoints
|
|
25
|
+
from rasa.core.config.available_endpoints import AvailableEndpoints
|
|
26
|
+
from rasa.core.config.configuration import Configuration
|
|
24
27
|
from rasa.core.exceptions import AgentNotReady
|
|
25
28
|
from rasa.dialogue_understanding.generator.llm_based_command_generator import (
|
|
26
29
|
LLMBasedCommandGenerator,
|
|
@@ -46,7 +49,6 @@ from rasa.llm_fine_tuning.train_test_split_module import (
|
|
|
46
49
|
split_llm_fine_tuning_data,
|
|
47
50
|
)
|
|
48
51
|
from rasa.shared.constants import (
|
|
49
|
-
DEFAULT_ENDPOINTS_PATH,
|
|
50
52
|
DEFAULT_MODELS_PATH,
|
|
51
53
|
LLM_CONFIG_KEY,
|
|
52
54
|
)
|
|
@@ -137,6 +139,8 @@ def add_data_preparation_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
137
139
|
default=DEFAULT_INPUT_E2E_TEST_PATH,
|
|
138
140
|
)
|
|
139
141
|
|
|
142
|
+
add_sub_agents_param(parser)
|
|
143
|
+
|
|
140
144
|
add_remote_storage_param(parser)
|
|
141
145
|
|
|
142
146
|
rephrasing_arguments = parser.add_argument_group("Rephrasing Module")
|
|
@@ -376,6 +380,7 @@ def write_params(
|
|
|
376
380
|
"rephrase_config": rephrase_config,
|
|
377
381
|
"model": args.model,
|
|
378
382
|
"endpoints": args.endpoints,
|
|
383
|
+
"sub-agents": args.sub_agents,
|
|
379
384
|
"remote-storage": args.remote_storage,
|
|
380
385
|
"train_frac": args.train_frac,
|
|
381
386
|
"output_format": args.output_format,
|
|
@@ -393,10 +398,9 @@ def write_statistics(statistics: Dict[str, Any], output_path: str) -> None:
|
|
|
393
398
|
|
|
394
399
|
|
|
395
400
|
def get_valid_endpoints(endpoints_file: str) -> AvailableEndpoints:
|
|
396
|
-
|
|
397
|
-
endpoints_file
|
|
398
|
-
)
|
|
399
|
-
endpoints = AvailableEndpoints.get_instance(validated_endpoints_file)
|
|
401
|
+
endpoints = Configuration.initialise_endpoints(
|
|
402
|
+
endpoints_path=Path(endpoints_file)
|
|
403
|
+
).endpoints
|
|
400
404
|
|
|
401
405
|
# Ignore all endpoints apart from action server, model, nlu and nlg
|
|
402
406
|
# to ensure InMemoryTrackerStore is being used instead of production
|
|
@@ -420,6 +424,7 @@ def set_up_e2e_test_runner(args: argparse.Namespace) -> E2ETestRunner:
|
|
|
420
424
|
model_path=args.model,
|
|
421
425
|
model_server=endpoints.model,
|
|
422
426
|
endpoints=endpoints,
|
|
427
|
+
sub_agents_path=args.sub_agents,
|
|
423
428
|
)
|
|
424
429
|
except AgentNotReady as error:
|
|
425
430
|
structlogger.error(
|
|
@@ -31,3 +31,13 @@ rest:
|
|
|
31
31
|
# for the Rasa Enterprise "channel", i.e. Talk to your bot and Share with guest testers.
|
|
32
32
|
rasa:
|
|
33
33
|
url: "http://localhost:5002/api"
|
|
34
|
+
|
|
35
|
+
# The Browser Audio channel enables voice interactions with your assistant directly in the browser.
|
|
36
|
+
# Used by the Rasa Voice Inspector, it provides speech-to-text and text-to-speech capabilities
|
|
37
|
+
# through services like Deepgram.
|
|
38
|
+
browser_audio:
|
|
39
|
+
server_url: localhost
|
|
40
|
+
asr:
|
|
41
|
+
name: deepgram
|
|
42
|
+
tts:
|
|
43
|
+
name: deepgram
|
rasa/cli/run.py
CHANGED
|
@@ -7,12 +7,12 @@ from rasa.api import run as rasa_run
|
|
|
7
7
|
from rasa.cli import SubParsersAction
|
|
8
8
|
from rasa.cli.arguments import run as arguments
|
|
9
9
|
from rasa.cli.arguments.default_arguments import SkipYamlValidation
|
|
10
|
-
from rasa.
|
|
10
|
+
from rasa.core.config.configuration import (
|
|
11
|
+
Configuration,
|
|
12
|
+
)
|
|
11
13
|
from rasa.exceptions import ModelNotFound
|
|
12
14
|
from rasa.shared.constants import (
|
|
13
15
|
DEFAULT_ACTIONS_PATH,
|
|
14
|
-
DEFAULT_CREDENTIALS_PATH,
|
|
15
|
-
DEFAULT_ENDPOINTS_PATH,
|
|
16
16
|
DEFAULT_MODELS_PATH,
|
|
17
17
|
DOCS_BASE_URL,
|
|
18
18
|
)
|
|
@@ -86,11 +86,10 @@ def run(args: argparse.Namespace) -> None:
|
|
|
86
86
|
Args:
|
|
87
87
|
args: The CLI arguments.
|
|
88
88
|
"""
|
|
89
|
-
|
|
90
|
-
args.endpoints,
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
args.credentials, "credentials", DEFAULT_CREDENTIALS_PATH, True
|
|
89
|
+
Configuration.initialise_endpoints(
|
|
90
|
+
args.endpoints,
|
|
91
|
+
).initialise_credentials(
|
|
92
|
+
args.credentials,
|
|
94
93
|
)
|
|
95
94
|
|
|
96
95
|
if SkipYamlValidation.DOMAIN.value in args.skip_yaml_validation:
|
|
@@ -109,7 +108,7 @@ def run(args: argparse.Namespace) -> None:
|
|
|
109
108
|
# configured
|
|
110
109
|
|
|
111
110
|
import rasa.model
|
|
112
|
-
from rasa.core.
|
|
111
|
+
from rasa.core.available_agents import AvailableAgents
|
|
113
112
|
|
|
114
113
|
# start server if remote storage is configured
|
|
115
114
|
if args.remote_storage is not None:
|
|
@@ -117,12 +116,15 @@ def run(args: argparse.Namespace) -> None:
|
|
|
117
116
|
return
|
|
118
117
|
|
|
119
118
|
# start server if model server is configured
|
|
120
|
-
endpoints =
|
|
119
|
+
endpoints = Configuration.get_instance().endpoints
|
|
121
120
|
model_server = endpoints.model if endpoints and endpoints.model else None
|
|
122
121
|
if model_server is not None:
|
|
123
122
|
rasa_run(**vars(args))
|
|
124
123
|
return
|
|
125
124
|
|
|
125
|
+
# load sub-agents
|
|
126
|
+
AvailableAgents.get_instance(args.sub_agents)
|
|
127
|
+
|
|
126
128
|
# start server if local model found
|
|
127
129
|
args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
128
130
|
local_model_set = True
|
rasa/cli/scaffold.py
CHANGED
|
@@ -104,10 +104,10 @@ def print_train_or_instructions(args: argparse.Namespace) -> None:
|
|
|
104
104
|
if should_train:
|
|
105
105
|
print_success("Training an initial model...")
|
|
106
106
|
training_result = train(
|
|
107
|
-
template_domain_path[args.template],
|
|
108
|
-
DEFAULT_CONFIG_PATH,
|
|
109
|
-
DEFAULT_DATA_PATH,
|
|
110
|
-
DEFAULT_MODELS_PATH,
|
|
107
|
+
domain=template_domain_path[args.template],
|
|
108
|
+
config=DEFAULT_CONFIG_PATH,
|
|
109
|
+
training_files=DEFAULT_DATA_PATH,
|
|
110
|
+
output=DEFAULT_MODELS_PATH,
|
|
111
111
|
)
|
|
112
112
|
args.model = training_result.model
|
|
113
113
|
|
rasa/cli/shell.py
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import logging
|
|
3
3
|
import uuid
|
|
4
|
+
from pathlib import Path
|
|
4
5
|
from typing import List
|
|
5
6
|
|
|
6
7
|
from rasa import telemetry
|
|
7
8
|
from rasa.cli import SubParsersAction
|
|
8
9
|
from rasa.cli.arguments import shell as arguments
|
|
9
|
-
from rasa.
|
|
10
|
+
from rasa.cli.arguments.default_arguments import add_sub_agents_param
|
|
11
|
+
from rasa.core.config.configuration import Configuration
|
|
10
12
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
11
13
|
from rasa.exceptions import ModelNotFound
|
|
12
14
|
from rasa.model import get_local_model
|
|
@@ -45,6 +47,8 @@ def add_subparser(
|
|
|
45
47
|
help="Set the conversation ID.",
|
|
46
48
|
)
|
|
47
49
|
|
|
50
|
+
add_sub_agents_param(shell_parser)
|
|
51
|
+
|
|
48
52
|
run_subparsers = shell_parser.add_subparsers()
|
|
49
53
|
|
|
50
54
|
shell_nlu_subparser = run_subparsers.add_parser(
|
|
@@ -64,7 +68,7 @@ def add_subparser(
|
|
|
64
68
|
def shell_nlu(args: argparse.Namespace) -> None:
|
|
65
69
|
"""Talk with an NLU only bot though the command line."""
|
|
66
70
|
import rasa.nlu.run
|
|
67
|
-
from rasa.cli.
|
|
71
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
68
72
|
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
69
73
|
|
|
70
74
|
args.connector = "cmdline"
|
|
@@ -102,15 +106,15 @@ def shell_nlu(args: argparse.Namespace) -> None:
|
|
|
102
106
|
|
|
103
107
|
def shell(args: argparse.Namespace) -> None:
|
|
104
108
|
"""Talk with a bot though the command line."""
|
|
105
|
-
from rasa.cli.
|
|
109
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
106
110
|
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
107
111
|
|
|
108
112
|
args.connector = "cmdline"
|
|
109
113
|
# Load endpoints with proper endpoint file location
|
|
110
114
|
# This will initialise the endpoints singleton properly so that
|
|
111
115
|
# it can be used safely throughout the codebase with
|
|
112
|
-
# `
|
|
113
|
-
|
|
116
|
+
# `Configuration.get_instance().endpoints`
|
|
117
|
+
Configuration.initialise_endpoints(endpoints_path=Path(args.endpoints))
|
|
114
118
|
model = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
115
119
|
|
|
116
120
|
try:
|
rasa/cli/studio/studio.py
CHANGED
|
@@ -12,7 +12,7 @@ import rasa.cli.studio.train
|
|
|
12
12
|
import rasa.cli.studio.upload
|
|
13
13
|
import rasa.shared.utils.cli
|
|
14
14
|
from rasa.cli import SubParsersAction
|
|
15
|
-
from rasa.cli.
|
|
15
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
16
16
|
from rasa.shared.constants import DEFAULT_DOMAIN_PATH, DEFAULT_DOMAIN_PATHS
|
|
17
17
|
from rasa.studio.auth import StudioAuth
|
|
18
18
|
from rasa.studio.config import StudioConfig
|
rasa/cli/test.py
CHANGED
|
@@ -11,6 +11,13 @@ import rasa.shared.utils.io
|
|
|
11
11
|
import rasa.utils.common
|
|
12
12
|
from rasa.cli import SubParsersAction
|
|
13
13
|
from rasa.cli.arguments import test as arguments
|
|
14
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
15
|
+
from rasa.core.config.configuration import (
|
|
16
|
+
Configuration,
|
|
17
|
+
CredentialsConfigPath,
|
|
18
|
+
EndpointsConfigPath,
|
|
19
|
+
MessageProcessingConfigPath,
|
|
20
|
+
)
|
|
14
21
|
from rasa.core.constants import (
|
|
15
22
|
FAILED_STORIES_FILE,
|
|
16
23
|
STORIES_WITH_WARNINGS_FILE,
|
|
@@ -100,10 +107,16 @@ async def run_core_test_async(args: argparse.Namespace) -> None:
|
|
|
100
107
|
test_core_models_in_directory,
|
|
101
108
|
)
|
|
102
109
|
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
Configuration.initialise_endpoints(
|
|
111
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
112
|
+
).initialise_credentials(
|
|
113
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
114
|
+
).initialise_message_processing(
|
|
115
|
+
message_processing_config_path=MessageProcessingConfigPath.validate()
|
|
105
116
|
)
|
|
106
117
|
|
|
118
|
+
stories = get_validated_path(args.stories, "stories", DEFAULT_DATA_PATH)
|
|
119
|
+
|
|
107
120
|
output = args.out or DEFAULT_RESULTS_PATH
|
|
108
121
|
args.errors = not args.no_errors
|
|
109
122
|
args.warnings = not args.no_warnings
|
|
@@ -121,9 +134,7 @@ async def run_core_test_async(args: argparse.Namespace) -> None:
|
|
|
121
134
|
return
|
|
122
135
|
|
|
123
136
|
if isinstance(args.model, str):
|
|
124
|
-
model_path =
|
|
125
|
-
args.model, "model", DEFAULT_MODELS_PATH
|
|
126
|
-
)
|
|
137
|
+
model_path = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
127
138
|
|
|
128
139
|
if args.evaluate_model_directory:
|
|
129
140
|
await test_core_models_in_directory(
|
|
@@ -182,9 +193,7 @@ async def run_nlu_test_async(
|
|
|
182
193
|
test_nlu,
|
|
183
194
|
)
|
|
184
195
|
|
|
185
|
-
data_path = str(
|
|
186
|
-
rasa.cli.utils.get_validated_path(data_path, "nlu", DEFAULT_DATA_PATH)
|
|
187
|
-
)
|
|
196
|
+
data_path = str(get_validated_path(data_path, "nlu", DEFAULT_DATA_PATH))
|
|
188
197
|
test_data_importer = TrainingDataImporter.load_from_dict(
|
|
189
198
|
training_data_paths=[data_path], domain_path=domain_path
|
|
190
199
|
)
|
|
@@ -225,18 +234,29 @@ async def run_nlu_test_async(
|
|
|
225
234
|
)
|
|
226
235
|
elif cross_validation:
|
|
227
236
|
logger.info("Test model using cross validation.")
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
237
|
+
|
|
238
|
+
Configuration.initialise_endpoints(
|
|
239
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
240
|
+
).initialise_credentials(
|
|
241
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
242
|
+
).initialise_message_processing(
|
|
243
|
+
message_processing_config_path=MessageProcessingConfigPath.validate(config),
|
|
232
244
|
)
|
|
245
|
+
|
|
246
|
+
config = str(get_validated_path(config, "config", DEFAULT_CONFIG_PATH))
|
|
233
247
|
config_importer = TrainingDataImporter.load_from_dict(config_path=config)
|
|
234
248
|
|
|
235
249
|
config_dict = config_importer.get_config()
|
|
236
250
|
await perform_nlu_cross_validation(config_dict, nlu_data, output, all_args)
|
|
237
251
|
else:
|
|
238
|
-
model_path =
|
|
239
|
-
|
|
252
|
+
model_path = get_validated_path(models_path, "model", DEFAULT_MODELS_PATH)
|
|
253
|
+
|
|
254
|
+
Configuration.initialise_endpoints(
|
|
255
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
256
|
+
).initialise_credentials(
|
|
257
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
258
|
+
).initialise_message_processing(
|
|
259
|
+
message_processing_config_path=MessageProcessingConfigPath.validate(config),
|
|
240
260
|
)
|
|
241
261
|
|
|
242
262
|
await test_nlu(model_path, data_path, output, all_args, domain_path=domain_path)
|