rasa-pro 3.13.11__py3-none-any.whl → 3.14.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.
- rasa/__main__.py +15 -3
- rasa/agents/__init__.py +0 -0
- rasa/agents/agent_factory.py +122 -0
- rasa/agents/agent_manager.py +213 -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 +889 -0
- rasa/agents/protocol/mcp/__init__.py +0 -0
- rasa/agents/protocol/mcp/mcp_base_agent.py +778 -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 +228 -0
- rasa/agents/validation.py +538 -0
- rasa/api.py +23 -9
- rasa/builder/README.md +120 -0
- rasa/builder/__init__.py +0 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +96 -0
- rasa/builder/copilot/__init__.py +0 -0
- rasa/builder/copilot/constants.py +38 -0
- rasa/builder/copilot/copilot.py +562 -0
- rasa/builder/copilot/copilot_response_handler.py +522 -0
- rasa/builder/copilot/copilot_templated_message_provider.py +81 -0
- rasa/builder/copilot/exceptions.py +32 -0
- rasa/builder/copilot/models.py +690 -0
- rasa/builder/copilot/prompts/__init__.py +0 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +787 -0
- rasa/builder/copilot/prompts/copilot_training_error_handler_prompt.jinja2 +53 -0
- rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +91 -0
- rasa/builder/copilot/signing.py +305 -0
- rasa/builder/copilot/telemetry.py +234 -0
- rasa/builder/copilot/templated_messages/__init__.py +0 -0
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +41 -0
- rasa/builder/copilot/templated_messages/copilot_welcome_messages.yml +56 -0
- rasa/builder/document_retrieval/__init__.py +0 -0
- rasa/builder/document_retrieval/constants.py +15 -0
- rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
- rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
- rasa/builder/document_retrieval/models.py +62 -0
- rasa/builder/download.py +140 -0
- rasa/builder/exceptions.py +91 -0
- rasa/builder/guardrails/__init__.py +1 -0
- rasa/builder/guardrails/clients.py +256 -0
- rasa/builder/guardrails/constants.py +12 -0
- rasa/builder/guardrails/exceptions.py +4 -0
- rasa/builder/guardrails/models.py +266 -0
- rasa/builder/guardrails/policy_checker.py +324 -0
- rasa/builder/guardrails/store.py +238 -0
- rasa/builder/guardrails/utils.py +94 -0
- rasa/builder/job_manager.py +87 -0
- rasa/builder/jobs.py +609 -0
- rasa/builder/llm_service.py +273 -0
- rasa/builder/logging_utils.py +265 -0
- rasa/builder/main.py +234 -0
- rasa/builder/models.py +229 -0
- rasa/builder/project_generator.py +463 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/service.py +1367 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/template_cache.py +69 -0
- rasa/builder/training_service.py +188 -0
- rasa/builder/validation_service.py +101 -0
- rasa/cli/arguments/data.py +9 -0
- 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 +78 -10
- rasa/cli/dialogue_understanding_test.py +11 -7
- rasa/cli/e2e_test.py +10 -6
- rasa/cli/evaluate.py +4 -2
- rasa/cli/export.py +5 -2
- rasa/cli/inspect.py +9 -4
- rasa/cli/interactive.py +8 -4
- rasa/cli/llm_fine_tuning.py +12 -6
- rasa/cli/project_templates/basic/README.md +23 -0
- rasa/cli/project_templates/basic/actions/__init__ +0 -0
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
- rasa/cli/project_templates/basic/actions/actions.md +10 -0
- rasa/cli/project_templates/basic/config.yml +29 -0
- rasa/cli/project_templates/basic/credentials.yml +33 -0
- rasa/cli/project_templates/basic/data/data.md +8 -0
- rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
- rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
- rasa/cli/project_templates/basic/data/general/help.yml +6 -0
- rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/basic/docs/docs.md +5 -0
- rasa/cli/project_templates/basic/docs/template.txt +28 -0
- rasa/cli/project_templates/basic/domain/domain.md +11 -0
- rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
- rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
- rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
- rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
- rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
- rasa/cli/project_templates/basic/endpoints.yml +67 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/help.yml +8 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/human_handoff.yml +41 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/patterns.yml +32 -0
- rasa/cli/project_templates/basic/tests/e2e_test_cases/without_stub/general/show_faqs.yml +8 -0
- rasa/cli/project_templates/default/config.yml +4 -0
- rasa/cli/project_templates/default/endpoints.yml +4 -0
- rasa/cli/project_templates/defaults.py +1 -0
- rasa/cli/project_templates/finance/README.md +26 -0
- rasa/cli/project_templates/finance/actions/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/accounts/check_balance.py +18 -0
- rasa/cli/project_templates/finance/actions/actions.md +15 -0
- rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/cards/check_that_card_exists.py +21 -0
- rasa/cli/project_templates/finance/actions/cards/list_cards.py +22 -0
- rasa/cli/project_templates/finance/actions/contacts/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/contacts/add_contact.py +30 -0
- rasa/cli/project_templates/finance/actions/contacts/list_contacts.py +22 -0
- rasa/cli/project_templates/finance/actions/contacts/remove_contact.py +35 -0
- rasa/cli/project_templates/finance/actions/db.py +117 -0
- rasa/cli/project_templates/finance/actions/general/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/general/action_human_handoff.py +49 -0
- rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/transfers/check_transfer_funds.py +27 -0
- rasa/cli/project_templates/finance/actions/transfers/check_transfer_limit.py +36 -0
- rasa/cli/project_templates/finance/actions/transfers/execute_recurrent_payment.py +20 -0
- rasa/cli/project_templates/finance/actions/transfers/execute_transfer.py +45 -0
- rasa/cli/project_templates/finance/actions/transfers/list_transactions.py +32 -0
- rasa/cli/project_templates/finance/config.yml +29 -0
- rasa/cli/project_templates/finance/credentials.yml +33 -0
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +9 -0
- rasa/cli/project_templates/finance/data/accounts/download_statements.yml +26 -0
- rasa/cli/project_templates/finance/data/bills/bill_pay_reminder.yml +25 -0
- rasa/cli/project_templates/finance/data/cards/activate_card.yml +35 -0
- rasa/cli/project_templates/finance/data/cards/block_card.yml +45 -0
- rasa/cli/project_templates/finance/data/cards/list_cards.yml +14 -0
- rasa/cli/project_templates/finance/data/cards/replace_card.yml +16 -0
- rasa/cli/project_templates/finance/data/cards/replace_eligible_card.yml +29 -0
- rasa/cli/project_templates/finance/data/contacts/add_contact.yml +33 -0
- rasa/cli/project_templates/finance/data/contacts/list_contacts.yml +14 -0
- rasa/cli/project_templates/finance/data/contacts/remove_contact.yml +31 -0
- rasa/cli/project_templates/finance/data/data.md +14 -0
- rasa/cli/project_templates/finance/data/general/bot_challenge.yml +6 -0
- rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/finance/data/general/hello.yml +6 -0
- rasa/cli/project_templates/finance/data/general/help.yml +9 -0
- rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/finance/data/transfers/check_transfer_limit.yml +18 -0
- rasa/cli/project_templates/finance/data/transfers/list_transactions.yml +46 -0
- rasa/cli/project_templates/finance/data/transfers/move_money_between_accounts.yml +51 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +34 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money_to_a_third_party.yml +175 -0
- rasa/cli/project_templates/finance/db/cards.json +18 -0
- rasa/cli/project_templates/finance/db/contacts.json +10 -0
- rasa/cli/project_templates/finance/db/my_account.json +6 -0
- rasa/cli/project_templates/finance/db/transactions.json +22 -0
- rasa/cli/project_templates/finance/docs/docs.md +8 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/budgeting_analytics.txt +22 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/multi_currency_accounts.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/premium_benefits.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/contactless_limits.txt +16 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/freeze_unfreeze_card.txt +16 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/lost_stolen_card.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/instant_payments.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/international_transfers.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/fraud_protection.txt +22 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/secure_payments.txt +22 -0
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +15 -0
- rasa/cli/project_templates/finance/domain/accounts/download_statements.yml +40 -0
- rasa/cli/project_templates/finance/domain/bills/bill_pay_reminder.yml +49 -0
- rasa/cli/project_templates/finance/domain/cards/activate_card.yml +24 -0
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +44 -0
- rasa/cli/project_templates/finance/domain/cards/list_cards.yml +16 -0
- rasa/cli/project_templates/finance/domain/cards/replace_card.yml +43 -0
- rasa/cli/project_templates/finance/domain/cards/shared.yml +15 -0
- rasa/cli/project_templates/finance/domain/contacts/add_contact.yml +37 -0
- rasa/cli/project_templates/finance/domain/contacts/list_contacts.yml +16 -0
- rasa/cli/project_templates/finance/domain/contacts/remove_contact.yml +32 -0
- rasa/cli/project_templates/finance/domain/domain.md +18 -0
- rasa/cli/project_templates/finance/domain/general/_shared.yml +39 -0
- rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +8 -0
- rasa/cli/project_templates/finance/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/finance/domain/general/help.yml +0 -0
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +31 -0
- rasa/cli/project_templates/finance/domain/general/welcome.yml +39 -0
- rasa/cli/project_templates/finance/domain/transfers/check_transfer_limit.yml +32 -0
- rasa/cli/project_templates/finance/domain/transfers/list_transactions.yml +44 -0
- rasa/cli/project_templates/finance/domain/transfers/shared.yml +17 -0
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +221 -0
- rasa/cli/project_templates/finance/endpoints.yml +67 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/accounts/check_balance.yml +9 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/accounts/download_statements.yml +43 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/cards/block_card.yml +55 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/general/patterns.yml +22 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/without_stub/transfers/transfer_money.yml +56 -0
- rasa/cli/project_templates/telco/README.md +25 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions.md +12 -0
- rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
- rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
- rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
- rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
- rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
- rasa/cli/project_templates/telco/config.yml +29 -0
- rasa/cli/project_templates/telco/credentials.yml +33 -0
- rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
- rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
- rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
- rasa/cli/project_templates/telco/data/data.md +11 -0
- rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
- rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
- rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
- rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
- rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
- rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
- rasa/cli/project_templates/telco/docs/docs.md +8 -0
- rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
- rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
- rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
- rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
- rasa/cli/project_templates/telco/domain/domain.md +13 -0
- rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
- rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
- rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
- rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
- rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
- rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
- rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +74 -0
- rasa/cli/project_templates/telco/domain/shared.yml +129 -0
- rasa/cli/project_templates/telco/endpoints.yml +67 -0
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/with_stub/network/solve_internet_not_slow.yml +33 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/with_stub/network/solve_internet_slow.yml +47 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/billing/understand_bill.yml +67 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/feedback.yml +46 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/goodbye.yml +9 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/hello.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/without_stub/general/patterns.yml +23 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/project_templates/tutorial/credentials.yml +10 -0
- rasa/cli/run.py +8 -10
- rasa/cli/scaffold.py +50 -6
- rasa/cli/shell.py +10 -5
- rasa/cli/studio/studio.py +1 -1
- rasa/cli/test.py +34 -14
- rasa/cli/train.py +44 -30
- rasa/cli/utils.py +1 -393
- rasa/cli/validation/__init__.py +0 -0
- rasa/cli/validation/bot_config.py +232 -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 +53 -13
- rasa/core/actions/action_exceptions.py +1 -1
- rasa/core/actions/action_run_slot_rejections.py +1 -1
- rasa/core/actions/direct_custom_actions_executor.py +9 -2
- rasa/core/actions/grpc_custom_action_executor.py +1 -1
- rasa/core/agent.py +22 -2
- rasa/core/available_agents.py +239 -0
- rasa/core/brokers/broker.py +1 -1
- rasa/core/brokers/kafka.py +56 -8
- rasa/core/channels/__init__.py +82 -35
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +29 -16
- rasa/core/channels/hangouts.py +2 -2
- rasa/core/channels/inspector/README.md +25 -13
- rasa/core/channels/inspector/dist/assets/{arc-0b11fe30.js → arc-6177260a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-9eef30a7.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-03e94f28.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-95c09eba.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-38e8446c.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-57dc3038.js → createText-2e5e7dd3-088372e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-4bac0545.js → edges-e0da2a9e-58676240.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-81795c90.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-89489ae6.js → flowDb-956e92f1-ea63f85c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-cd152627.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-3da369bc.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-85ec16f8.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-495bc140.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-1ec4d266.js → graph-0a6f8466.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-0a0e97c9.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-4d54bcde.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-dc097114.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-1a08981e.js → layout-e7fbc2bf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-95f7f1d3.js → line-a8aa457c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-97e69543.js → linear-3351e0d2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-8c71ff03.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-f14c71c7.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-f1d3c9ff.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-bfa2412f.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-53f2c97b.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-319d7c0e.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-76a09418.js → stateDiagram-587899a1-0e770395.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-a67f15d4.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-0654e7c3.js → styles-6aaf32cf-36a9e70d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-1394bb9d.js → styles-9a916d00-884a8b5b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-e4c5bdae.js → styles-c10674c1-dc097813.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-50957104.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-b0885a6a.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-79e6541a.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 +56 -12
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +1 -1
- 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/components/DialogueInformation.tsx +20 -3
- rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +296 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -2
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +26 -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 +55 -1
- rasa/core/channels/inspector/yarn.lock +336 -189
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +82 -32
- rasa/core/channels/telegram.py +4 -9
- rasa/core/channels/voice_ready/twilio_voice.py +1 -1
- rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
- rasa/core/channels/voice_stream/asr/azure.py +6 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
- rasa/core/channels/voice_stream/audiocodes.py +11 -6
- rasa/core/channels/voice_stream/browser_audio.py +91 -4
- rasa/core/channels/voice_stream/call_state.py +13 -2
- rasa/core/channels/voice_stream/genesys.py +19 -15
- rasa/core/channels/voice_stream/jambonz.py +22 -12
- rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +35 -14
- rasa/core/channels/voice_stream/util.py +11 -1
- rasa/core/channels/voice_stream/voice_channel.py +170 -32
- rasa/core/concurrent_lock_store.py +83 -16
- rasa/core/config/__init__.py +0 -0
- rasa/core/{available_endpoints.py → config/available_endpoints.py} +56 -18
- rasa/core/config/configuration.py +295 -0
- rasa/core/config/credentials.py +19 -0
- rasa/core/config/message_procesing_config.py +34 -0
- rasa/core/constants.py +17 -0
- rasa/core/exceptions.py +1 -1
- rasa/core/featurizers/tracker_featurizers.py +3 -2
- rasa/core/iam_credentials_providers/__init__.py +0 -0
- rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +291 -0
- rasa/core/iam_credentials_providers/credentials_provider_protocol.py +91 -0
- rasa/core/lock_store.py +50 -10
- rasa/core/nlg/contextual_response_rephraser.py +5 -0
- rasa/core/nlg/generator.py +1 -1
- rasa/core/persistor.py +7 -7
- rasa/core/policies/enterprise_search_policy.py +9 -10
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/agent_executor.py +720 -0
- rasa/core/policies/flows/flow_exceptions.py +5 -2
- rasa/core/policies/flows/flow_executor.py +146 -77
- rasa/core/policies/flows/mcp_tool_executor.py +304 -0
- rasa/core/policies/intentless_policy.py +1 -1
- rasa/core/policies/rule_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 +100 -44
- rasa/core/redis_connection_factory.py +474 -0
- rasa/core/run.py +49 -10
- rasa/core/test.py +4 -0
- rasa/core/tracker_stores/redis_tracker_store.py +36 -14
- rasa/core/tracker_stores/sql_tracker_store.py +59 -1
- 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 +20 -6
- 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 +75 -7
- rasa/dialogue_understanding/commands/utils.py +135 -2
- rasa/dialogue_understanding/generator/command_parser.py +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +0 -9
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +52 -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 +49 -9
- 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/graph.py +5 -1
- rasa/engine/loader.py +12 -0
- 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 +25 -8
- 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_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +2 -2
- rasa/model_manager/socket_bridge.py +21 -17
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/model_manager/warm_rasa_process.py +13 -3
- 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_config.py +1 -1
- 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 +170 -0
- rasa/shared/agents/auth/constants.py +13 -0
- rasa/shared/agents/auth/types.py +12 -0
- rasa/shared/agents/auth/utils.py +85 -0
- rasa/shared/agents/utils.py +35 -0
- rasa/shared/constants.py +11 -0
- rasa/shared/core/constants.py +17 -1
- rasa/shared/core/domain.py +62 -22
- rasa/shared/core/events.py +329 -0
- rasa/shared/core/flows/constants.py +5 -0
- rasa/shared/core/flows/flow.py +1 -1
- rasa/shared/core/flows/flow_step.py +7 -1
- 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 +57 -6
- 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 +19 -10
- rasa/shared/core/slots.py +6 -2
- rasa/shared/core/trackers.py +5 -2
- rasa/shared/core/training_data/story_reader/story_reader.py +1 -1
- rasa/shared/exceptions.py +39 -2
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/rasa.py +1 -1
- rasa/shared/importers/utils.py +86 -4
- rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
- rasa/shared/providers/llm/_base_litellm_client.py +41 -9
- rasa/shared/providers/llm/litellm_router_llm_client.py +10 -6
- 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 +26 -1
- rasa/shared/utils/health_check/health_check.py +7 -3
- rasa/shared/utils/llm.py +92 -19
- rasa/shared/utils/mcp/__init__.py +0 -0
- rasa/shared/utils/mcp/server_connection.py +250 -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/download.py +3 -0
- rasa/studio/prompts.py +1 -0
- rasa/studio/pull/pull.py +3 -2
- rasa/studio/train.py +8 -7
- rasa/studio/upload.py +19 -52
- rasa/telemetry.py +166 -28
- 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/io.py +27 -9
- rasa/utils/json_utils.py +6 -1
- rasa/utils/licensing.py +21 -10
- rasa/utils/log_utils.py +121 -7
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/openapi.py +144 -0
- rasa/utils/plotting.py +1 -1
- rasa/utils/pypred.py +45 -0
- 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 +149 -16
- rasa/version.py +1 -1
- rasa_pro-3.14.0.dist-info/METADATA +212 -0
- {rasa_pro-3.13.11.dist-info → rasa_pro-3.14.0.dist-info}/RECORD +583 -271
- rasa/core/channels/inspector/dist/assets/channel-51d02e9e.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-cc738fa6.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-0c716443.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-c804b295.js +0 -1335
- rasa_pro-3.13.11.dist-info/METADATA +0 -192
- {rasa_pro-3.13.11.dist-info → rasa_pro-3.14.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.13.11.dist-info → rasa_pro-3.14.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.13.11.dist-info → rasa_pro-3.14.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""Functions for validating Rasa projects."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
from contextlib import contextmanager
|
|
5
|
+
from typing import Any, Dict, Generator, Optional
|
|
6
|
+
|
|
7
|
+
import structlog
|
|
8
|
+
|
|
9
|
+
from rasa.builder import config
|
|
10
|
+
from rasa.builder.exceptions import ValidationError
|
|
11
|
+
from rasa.builder.logging_utils import capture_validation_logs
|
|
12
|
+
from rasa.cli.validation.bot_config import validate_files
|
|
13
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
14
|
+
|
|
15
|
+
structlogger = structlog.get_logger()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@contextmanager
|
|
19
|
+
def _mock_sys_exit() -> Generator[Dict[str, bool], Any, None]:
|
|
20
|
+
"""Context manager to prevent sys.exit from being called during validation."""
|
|
21
|
+
was_sys_exit_called = {"value": False}
|
|
22
|
+
|
|
23
|
+
def sys_exit_mock(code: int = 0) -> None:
|
|
24
|
+
was_sys_exit_called["value"] = True
|
|
25
|
+
|
|
26
|
+
original_exit = sys.exit
|
|
27
|
+
sys.exit = sys_exit_mock # type: ignore[assignment]
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
yield was_sys_exit_called
|
|
31
|
+
finally:
|
|
32
|
+
sys.exit = original_exit
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
async def validate_project(importer: TrainingDataImporter) -> Optional[str]:
|
|
36
|
+
"""Validate a Rasa project.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
importer: Training data importer with domain, flows, and config
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
None if validation passes, error message if validation fails.
|
|
43
|
+
|
|
44
|
+
Raises:
|
|
45
|
+
ValidationError: If validation fails
|
|
46
|
+
"""
|
|
47
|
+
with capture_validation_logs() as captured_logs:
|
|
48
|
+
try:
|
|
49
|
+
with _mock_sys_exit() as exit_tracker:
|
|
50
|
+
from rasa.core.config.configuration import Configuration
|
|
51
|
+
|
|
52
|
+
Configuration.initialise_empty()
|
|
53
|
+
|
|
54
|
+
validate_files(
|
|
55
|
+
fail_on_warnings=config.VALIDATION_FAIL_ON_WARNINGS,
|
|
56
|
+
max_history=config.VALIDATION_MAX_HISTORY,
|
|
57
|
+
importer=importer,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
if exit_tracker["value"]:
|
|
61
|
+
error_logs = [
|
|
62
|
+
log for log in captured_logs if log.get("log_level") != "debug"
|
|
63
|
+
]
|
|
64
|
+
structlogger.error(
|
|
65
|
+
"validation.failed.sys_exit",
|
|
66
|
+
error_logs=error_logs,
|
|
67
|
+
)
|
|
68
|
+
raise ValidationError(
|
|
69
|
+
"Validation failed with sys.exit", validation_logs=error_logs
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
structlogger.info("validation.success")
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
except ValidationError:
|
|
76
|
+
raise
|
|
77
|
+
|
|
78
|
+
except Exception as e:
|
|
79
|
+
error_msg = f"Validation failed with exception: {e}"
|
|
80
|
+
|
|
81
|
+
error_logs = [
|
|
82
|
+
log for log in captured_logs if log.get("log_level") != "debug"
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
structlogger.error(
|
|
86
|
+
"validation.failed.exception", error=str(e), validation_logs=error_logs
|
|
87
|
+
)
|
|
88
|
+
raise ValidationError(error_msg, validation_logs=error_logs)
|
|
89
|
+
|
|
90
|
+
except SystemExit as e:
|
|
91
|
+
error_logs = [
|
|
92
|
+
log for log in captured_logs if log.get("log_level") != "debug"
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
structlogger.error(
|
|
96
|
+
"validation.failed.sys_exit",
|
|
97
|
+
error_logs=error_logs,
|
|
98
|
+
)
|
|
99
|
+
raise ValidationError(
|
|
100
|
+
f"SystemExit during validation: {e}", validation_logs=error_logs
|
|
101
|
+
)
|
rasa/cli/arguments/data.py
CHANGED
|
@@ -4,8 +4,10 @@ from typing import Text
|
|
|
4
4
|
from rasa.cli.arguments.default_arguments import (
|
|
5
5
|
add_data_param,
|
|
6
6
|
add_domain_param,
|
|
7
|
+
add_endpoint_param,
|
|
7
8
|
add_nlu_data_param,
|
|
8
9
|
add_out_param,
|
|
10
|
+
add_sub_agents_param,
|
|
9
11
|
)
|
|
10
12
|
from rasa.shared.constants import DEFAULT_CONVERTED_DATA_PATH
|
|
11
13
|
|
|
@@ -91,6 +93,13 @@ def set_validator_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
91
93
|
)
|
|
92
94
|
add_domain_param(parser)
|
|
93
95
|
add_data_param(parser)
|
|
96
|
+
add_sub_agents_param(parser)
|
|
97
|
+
# Endpoints are optional for `data validate` command
|
|
98
|
+
add_endpoint_param(
|
|
99
|
+
parser,
|
|
100
|
+
help_text="Configuration file for the connectors as a yml file.",
|
|
101
|
+
default=None,
|
|
102
|
+
)
|
|
94
103
|
|
|
95
104
|
|
|
96
105
|
def set_migrate_arguments(parser: argparse.ArgumentParser) -> None:
|
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import List, Optional, Text, Union
|
|
5
5
|
|
|
6
|
+
from rasa.core.constants import DEFAULT_SUB_AGENTS
|
|
6
7
|
from rasa.core.persistor import RemoteStorageType, StorageType, parse_remote_storage
|
|
7
8
|
from rasa.shared.constants import (
|
|
8
9
|
DEFAULT_CONFIG_PATH,
|
|
@@ -217,3 +218,14 @@ def add_skip_validation_flag(
|
|
|
217
218
|
action="append",
|
|
218
219
|
help="Skip YAML validation for selected parts of the training data.",
|
|
219
220
|
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def add_sub_agents_param(
|
|
224
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
225
|
+
) -> None:
|
|
226
|
+
parser.add_argument(
|
|
227
|
+
"--sub-agents",
|
|
228
|
+
type=str,
|
|
229
|
+
default=DEFAULT_SUB_AGENTS,
|
|
230
|
+
help="Directory that specifies sub-agents to use (default: %(default)s).",
|
|
231
|
+
)
|
rasa/cli/arguments/run.py
CHANGED
|
@@ -7,6 +7,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
7
7
|
add_model_param,
|
|
8
8
|
add_remote_storage_param,
|
|
9
9
|
add_skip_validation_flag,
|
|
10
|
+
add_sub_agents_param,
|
|
10
11
|
)
|
|
11
12
|
from rasa.core import constants
|
|
12
13
|
from rasa.env import (
|
|
@@ -24,6 +25,7 @@ def set_run_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
24
25
|
add_server_arguments(parser)
|
|
25
26
|
add_inspect_argument(parser)
|
|
26
27
|
add_skip_validation_flag(parser)
|
|
28
|
+
add_sub_agents_param(parser)
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
def set_run_action_arguments(parser: argparse.ArgumentParser) -> None:
|
rasa/cli/arguments/train.py
CHANGED
|
@@ -10,6 +10,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
10
10
|
add_remote_root_only_param,
|
|
11
11
|
add_remote_storage_param,
|
|
12
12
|
add_stories_param,
|
|
13
|
+
add_sub_agents_param,
|
|
13
14
|
)
|
|
14
15
|
from rasa.graph_components.providers.training_tracker_provider import (
|
|
15
16
|
TrainingTrackerProvider,
|
|
@@ -43,6 +44,7 @@ def set_train_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
43
44
|
)
|
|
44
45
|
add_remote_storage_param(parser)
|
|
45
46
|
add_remote_root_only_param(parser)
|
|
47
|
+
add_sub_agents_param(parser)
|
|
46
48
|
|
|
47
49
|
|
|
48
50
|
def set_train_core_arguments(parser: argparse.ArgumentParser) -> None:
|
rasa/cli/data.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import logging
|
|
3
3
|
import pathlib
|
|
4
|
-
from typing import List
|
|
4
|
+
from typing import List, Optional
|
|
5
5
|
|
|
6
6
|
import rasa.cli.utils
|
|
7
7
|
import rasa.shared.core.domain
|
|
@@ -15,6 +15,9 @@ 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
|
|
20
|
+
from rasa.core.config.configuration import Configuration
|
|
18
21
|
from rasa.e2e_test.e2e_config import create_llm_e2e_test_converter_config
|
|
19
22
|
from rasa.e2e_test.e2e_test_converter import E2ETestConverter
|
|
20
23
|
from rasa.e2e_test.utils.e2e_yaml_utils import E2ETestYAMLWriter
|
|
@@ -137,8 +140,12 @@ def _add_data_validate_parsers(
|
|
|
137
140
|
)
|
|
138
141
|
_append_story_structure_arguments(validate_parser)
|
|
139
142
|
validate_parser.set_defaults(
|
|
140
|
-
func=lambda args:
|
|
141
|
-
args.fail_on_warnings,
|
|
143
|
+
func=lambda args: _validate_files_with_configuration(
|
|
144
|
+
args.fail_on_warnings,
|
|
145
|
+
args.max_history,
|
|
146
|
+
_build_training_data_importer(args),
|
|
147
|
+
sub_agents=args.sub_agents,
|
|
148
|
+
endpoints=args.endpoints,
|
|
142
149
|
)
|
|
143
150
|
)
|
|
144
151
|
arguments.set_validator_arguments(validate_parser)
|
|
@@ -153,10 +160,12 @@ def _add_data_validate_parsers(
|
|
|
153
160
|
_append_story_structure_arguments(story_structure_parser)
|
|
154
161
|
|
|
155
162
|
story_structure_parser.set_defaults(
|
|
156
|
-
func=lambda args:
|
|
163
|
+
func=lambda args: _validate_files_with_configuration(
|
|
157
164
|
args.fail_on_warnings,
|
|
158
165
|
args.max_history,
|
|
159
166
|
_build_training_data_importer(args),
|
|
167
|
+
sub_agents=args.sub_agents,
|
|
168
|
+
endpoints=args.endpoints,
|
|
160
169
|
stories_only=True,
|
|
161
170
|
)
|
|
162
171
|
)
|
|
@@ -169,10 +178,12 @@ def _add_data_validate_parsers(
|
|
|
169
178
|
help="Checks for inconsistencies in the flows files.",
|
|
170
179
|
)
|
|
171
180
|
flows_structure_parser.set_defaults(
|
|
172
|
-
func=lambda args:
|
|
181
|
+
func=lambda args: _validate_files_with_configuration(
|
|
173
182
|
args.fail_on_warnings,
|
|
174
183
|
args.max_history,
|
|
175
184
|
_build_training_data_importer(args),
|
|
185
|
+
sub_agents=args.sub_agents,
|
|
186
|
+
endpoints=args.endpoints,
|
|
176
187
|
flows_only=True,
|
|
177
188
|
)
|
|
178
189
|
)
|
|
@@ -185,10 +196,12 @@ def _add_data_validate_parsers(
|
|
|
185
196
|
help="Checks for inconsistencies of the flow and response translation.",
|
|
186
197
|
)
|
|
187
198
|
translations_structure_parser.set_defaults(
|
|
188
|
-
func=lambda args:
|
|
199
|
+
func=lambda args: _validate_files_with_configuration(
|
|
189
200
|
args.fail_on_warnings,
|
|
190
201
|
args.max_history,
|
|
191
202
|
_build_training_data_importer(args),
|
|
203
|
+
sub_agents=args.sub_agents,
|
|
204
|
+
endpoints=args.endpoints,
|
|
192
205
|
translations_only=True,
|
|
193
206
|
)
|
|
194
207
|
)
|
|
@@ -196,12 +209,12 @@ def _add_data_validate_parsers(
|
|
|
196
209
|
|
|
197
210
|
|
|
198
211
|
def _build_training_data_importer(args: argparse.Namespace) -> "TrainingDataImporter":
|
|
199
|
-
config =
|
|
212
|
+
config = get_validated_path(
|
|
200
213
|
args.config, "config", DEFAULT_CONFIG_PATH, none_is_valid=True
|
|
201
214
|
)
|
|
202
215
|
|
|
203
216
|
# Exit the validation if the domain path is invalid
|
|
204
|
-
domain =
|
|
217
|
+
domain = get_validated_path(
|
|
205
218
|
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=False
|
|
206
219
|
)
|
|
207
220
|
|
|
@@ -231,7 +244,7 @@ def split_nlu_data(args: argparse.Namespace) -> None:
|
|
|
231
244
|
Args:
|
|
232
245
|
args: Commandline arguments
|
|
233
246
|
"""
|
|
234
|
-
data_path =
|
|
247
|
+
data_path = get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
235
248
|
data_path = rasa.shared.data.get_nlu_directory(data_path)
|
|
236
249
|
|
|
237
250
|
nlu_data = rasa.shared.nlu.training_data.loading.load_data(data_path)
|
|
@@ -258,7 +271,7 @@ def split_stories_data(args: argparse.Namespace) -> None:
|
|
|
258
271
|
YAMLStoryReader,
|
|
259
272
|
)
|
|
260
273
|
|
|
261
|
-
data_path =
|
|
274
|
+
data_path = get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
262
275
|
data_files = rasa.shared.data.get_data_files(
|
|
263
276
|
data_path, YAMLStoryReader.is_stories_file
|
|
264
277
|
)
|
|
@@ -374,3 +387,58 @@ def convert_data_to_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
374
387
|
rasa.shared.utils.cli.print_error_and_exit(
|
|
375
388
|
f"Failed to convert the data into E2E tests. Error: {exc}"
|
|
376
389
|
)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
def _initialize_configuration_for_validation(
|
|
393
|
+
sub_agents: Optional[str] = None, endpoints: Optional[str] = None
|
|
394
|
+
) -> None:
|
|
395
|
+
"""Initialize Configuration before validation.
|
|
396
|
+
|
|
397
|
+
Args:
|
|
398
|
+
sub_agents: Path to sub-agents directory for validation.
|
|
399
|
+
endpoints: Path to the endpoints configuration file.
|
|
400
|
+
"""
|
|
401
|
+
if endpoints:
|
|
402
|
+
Configuration.initialise_endpoints(endpoints_path=pathlib.Path(endpoints))
|
|
403
|
+
if sub_agents:
|
|
404
|
+
Configuration.initialise_sub_agents(pathlib.Path(sub_agents))
|
|
405
|
+
if not endpoints and not sub_agents:
|
|
406
|
+
Configuration.initialise_empty()
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
def _validate_files_with_configuration(
|
|
410
|
+
fail_on_warnings: bool,
|
|
411
|
+
max_history: int,
|
|
412
|
+
importer: TrainingDataImporter,
|
|
413
|
+
sub_agents: Optional[str] = None,
|
|
414
|
+
endpoints: Optional[str] = None,
|
|
415
|
+
stories_only: bool = False,
|
|
416
|
+
flows_only: bool = False,
|
|
417
|
+
translations_only: bool = False,
|
|
418
|
+
) -> None:
|
|
419
|
+
"""Wrapper for validate_files that ensures Configuration is initialized first.
|
|
420
|
+
|
|
421
|
+
Args:
|
|
422
|
+
fail_on_warnings: `True` if the process should exit with a non-zero status
|
|
423
|
+
max_history: The max history to use when validating the story structure.
|
|
424
|
+
importer: The `TrainingDataImporter` to use to load the training data.
|
|
425
|
+
sub_agents: Path to sub-agents directory for validation.
|
|
426
|
+
endpoints: Path to the endpoints configuration file.
|
|
427
|
+
stories_only: If `True`, only the story structure is validated.
|
|
428
|
+
flows_only: If `True`, only the flows are validated.
|
|
429
|
+
translations_only: If `True`, only the translations data is validated.
|
|
430
|
+
"""
|
|
431
|
+
# Initialize Configuration before calling validate_files
|
|
432
|
+
_initialize_configuration_for_validation(sub_agents=sub_agents, endpoints=endpoints)
|
|
433
|
+
|
|
434
|
+
# Call the original validate_files function
|
|
435
|
+
validate_files(
|
|
436
|
+
fail_on_warnings=fail_on_warnings,
|
|
437
|
+
max_history=max_history,
|
|
438
|
+
importer=importer,
|
|
439
|
+
stories_only=stories_only,
|
|
440
|
+
flows_only=flows_only,
|
|
441
|
+
translations_only=translations_only,
|
|
442
|
+
sub_agents=sub_agents,
|
|
443
|
+
endpoints=endpoints,
|
|
444
|
+
)
|
|
@@ -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:
|
|
@@ -210,6 +214,7 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
210
214
|
|
|
211
215
|
# initialization of endpoints
|
|
212
216
|
endpoints = set_up_available_endpoints(args)
|
|
217
|
+
Configuration.initialise_sub_agents(args.sub_agents)
|
|
213
218
|
|
|
214
219
|
# set up the test runner, e.g. start the agent
|
|
215
220
|
try:
|
|
@@ -218,6 +223,7 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
218
223
|
model_path=args.model,
|
|
219
224
|
model_server=endpoints.model,
|
|
220
225
|
remote_storage=args.remote_storage,
|
|
226
|
+
sub_agents_path=args.sub_agents,
|
|
221
227
|
)
|
|
222
228
|
except AgentNotReady as error:
|
|
223
229
|
structlogger.error(
|
|
@@ -323,11 +329,9 @@ def get_valid_test_suite(
|
|
|
323
329
|
|
|
324
330
|
|
|
325
331
|
def set_up_available_endpoints(args: argparse.Namespace) -> AvailableEndpoints:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
)
|
|
330
|
-
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
332
|
+
endpoints = Configuration.initialise_endpoints(
|
|
333
|
+
endpoints_path=Path(args.endpoints)
|
|
334
|
+
).endpoints
|
|
331
335
|
|
|
332
336
|
# Ignore all endpoints apart from action server, model, and nlu
|
|
333
337
|
# 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,10 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
154
157
|
Args:
|
|
155
158
|
args: Commandline arguments.
|
|
156
159
|
"""
|
|
157
|
-
|
|
158
|
-
args.endpoints
|
|
159
|
-
)
|
|
160
|
-
|
|
160
|
+
endpoints = Configuration.initialise_endpoints(
|
|
161
|
+
endpoints_path=EndpointsConfigPath.validate(args.endpoints)
|
|
162
|
+
).endpoints
|
|
163
|
+
Configuration.initialise_sub_agents(args.sub_agents)
|
|
161
164
|
|
|
162
165
|
# Ignore all endpoints apart from action server, model, nlu and nlg
|
|
163
166
|
# to ensure InMemoryTrackerStore is being used instead of production
|
|
@@ -192,6 +195,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
192
195
|
model_server=endpoints.model,
|
|
193
196
|
endpoints=endpoints,
|
|
194
197
|
test_case_path=Path(test_case_path),
|
|
198
|
+
sub_agents_path=args.sub_agents,
|
|
195
199
|
)
|
|
196
200
|
except AgentNotReady as error:
|
|
197
201
|
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,9 @@ 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))
|
|
96
|
+
Configuration.initialise_sub_agents(args.sub_agents)
|
|
92
97
|
|
|
93
98
|
try:
|
|
94
99
|
model = get_local_model(model)
|
rasa/cli/interactive.py
CHANGED
|
@@ -11,6 +11,9 @@ 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.config.configuration import Configuration
|
|
16
|
+
from rasa.core.constants import DEFAULT_SUB_AGENTS
|
|
14
17
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
15
18
|
from rasa.shared.constants import (
|
|
16
19
|
ASSISTANT_ID_DEFAULT_VALUE,
|
|
@@ -109,6 +112,7 @@ def _set_not_required_args(args: argparse.Namespace) -> None:
|
|
|
109
112
|
args.validation_max_history = None
|
|
110
113
|
args.remote_storage = None
|
|
111
114
|
args.keep_local_model_copy = False
|
|
115
|
+
args.sub_agents = DEFAULT_SUB_AGENTS # Default value for sub-agents
|
|
112
116
|
|
|
113
117
|
|
|
114
118
|
def perform_interactive_learning(
|
|
@@ -133,18 +137,18 @@ def perform_interactive_learning(
|
|
|
133
137
|
"Can not run interactive learning on an NLU-only model."
|
|
134
138
|
)
|
|
135
139
|
|
|
136
|
-
args.endpoints =
|
|
140
|
+
args.endpoints = get_validated_path(
|
|
137
141
|
args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
138
142
|
)
|
|
139
143
|
|
|
144
|
+
Configuration.initialise_endpoints(endpoints_path=Path(args.endpoints))
|
|
145
|
+
|
|
140
146
|
do_interactive_learning(args, file_importer)
|
|
141
147
|
|
|
142
148
|
|
|
143
149
|
def get_provided_model(arg_model: Text) -> Optional[Union[Text, Path]]:
|
|
144
150
|
"""Checks model path input and selects model from it."""
|
|
145
|
-
model_path =
|
|
146
|
-
arg_model, "model", DEFAULT_MODELS_PATH
|
|
147
|
-
)
|
|
151
|
+
model_path = get_validated_path(arg_model, "model", DEFAULT_MODELS_PATH)
|
|
148
152
|
|
|
149
153
|
return (
|
|
150
154
|
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
|
|
@@ -410,6 +414,7 @@ def get_valid_endpoints(endpoints_file: str) -> AvailableEndpoints:
|
|
|
410
414
|
|
|
411
415
|
def set_up_e2e_test_runner(args: argparse.Namespace) -> E2ETestRunner:
|
|
412
416
|
endpoints = get_valid_endpoints(args.endpoints)
|
|
417
|
+
Configuration.initialise_sub_agents(args.sub_agents)
|
|
413
418
|
|
|
414
419
|
if endpoints.model is None:
|
|
415
420
|
args.model = validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
@@ -420,6 +425,7 @@ def set_up_e2e_test_runner(args: argparse.Namespace) -> E2ETestRunner:
|
|
|
420
425
|
model_path=args.model,
|
|
421
426
|
model_server=endpoints.model,
|
|
422
427
|
endpoints=endpoints,
|
|
428
|
+
sub_agents_path=args.sub_agents,
|
|
423
429
|
)
|
|
424
430
|
except AgentNotReady as error:
|
|
425
431
|
structlogger.error(
|