rasa-pro 3.13.12__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/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/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.12.dist-info → rasa_pro-3.14.0.dist-info}/RECORD +581 -269
- 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.12.dist-info/METADATA +0 -192
- {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.13.12.dist-info → rasa_pro-3.14.0.dist-info}/entry_points.txt +0 -0
|
@@ -10,22 +10,13 @@ from rasa.core.policies.flow_policy import FlowPolicy
|
|
|
10
10
|
from rasa.core.policies.memoization import AugmentedMemoizationPolicy, MemoizationPolicy
|
|
11
11
|
from rasa.core.policies.policy import Policy, SupportedData
|
|
12
12
|
from rasa.core.policies.rule_policy import RulePolicy
|
|
13
|
-
from rasa.core.policies.ted_policy import TEDPolicy
|
|
14
|
-
from rasa.core.policies.unexpected_intent_policy import UnexpecTEDIntentPolicy
|
|
15
13
|
from rasa.engine.graph import ExecutionContext, GraphComponent, GraphSchema, SchemaNode
|
|
16
14
|
from rasa.engine.storage.resource import Resource
|
|
17
15
|
from rasa.engine.storage.storage import ModelStorage
|
|
18
|
-
from rasa.nlu.classifiers.diet_classifier import DIETClassifier
|
|
19
|
-
from rasa.nlu.extractors.crf_entity_extractor import (
|
|
20
|
-
CRFEntityExtractor,
|
|
21
|
-
CRFEntityExtractorOptions,
|
|
22
|
-
)
|
|
23
16
|
from rasa.nlu.extractors.entity_synonyms import EntitySynonymMapper
|
|
24
|
-
from rasa.nlu.extractors.mitie_entity_extractor import MitieEntityExtractor
|
|
25
17
|
from rasa.nlu.extractors.regex_entity_extractor import RegexEntityExtractor
|
|
26
18
|
from rasa.nlu.featurizers.featurizer import Featurizer
|
|
27
19
|
from rasa.nlu.featurizers.sparse_featurizer.regex_featurizer import RegexFeaturizer
|
|
28
|
-
from rasa.nlu.selectors.response_selector import ResponseSelector
|
|
29
20
|
from rasa.nlu.tokenizers.tokenizer import Tokenizer
|
|
30
21
|
from rasa.shared.constants import (
|
|
31
22
|
DEFAULT_CONFIG_PATH,
|
|
@@ -45,11 +36,45 @@ from rasa.shared.core.training_data.structures import RuleStep, StoryGraph
|
|
|
45
36
|
from rasa.shared.exceptions import InvalidConfigException
|
|
46
37
|
from rasa.shared.importers.importer import TrainingDataImporter
|
|
47
38
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
39
|
+
from rasa.shared.utils.common import conditional_import
|
|
48
40
|
|
|
49
|
-
#
|
|
50
|
-
|
|
41
|
+
# Conditional imports for TensorFlow-dependent components
|
|
42
|
+
TEDPolicy, TED_POLICY_AVAILABLE = conditional_import(
|
|
43
|
+
"rasa.core.policies.ted_policy", "TEDPolicy"
|
|
44
|
+
)
|
|
45
|
+
UnexpecTEDIntentPolicy, UNEXPECTED_INTENT_POLICY_AVAILABLE = conditional_import(
|
|
46
|
+
"rasa.core.policies.unexpected_intent_policy", "UnexpecTEDIntentPolicy"
|
|
47
|
+
)
|
|
48
|
+
DIETClassifier, DIET_CLASSIFIER_AVAILABLE = conditional_import(
|
|
49
|
+
"rasa.nlu.classifiers.diet_classifier", "DIETClassifier"
|
|
50
|
+
)
|
|
51
|
+
ResponseSelector, RESPONSE_SELECTOR_AVAILABLE = conditional_import(
|
|
52
|
+
"rasa.nlu.selectors.response_selector", "ResponseSelector"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# Conditional imports for nlu components requiring other dependencies than tensorflow
|
|
56
|
+
MitieEntityExtractor, MITIE_ENTITY_EXTRACTOR_AVAILABLE = conditional_import(
|
|
57
|
+
"rasa.nlu.extractors.mitie_entity_extractor", "MitieEntityExtractor"
|
|
58
|
+
)
|
|
59
|
+
CRFEntityExtractor, CRF_ENTITY_EXTRACTOR_AVAILABLE = conditional_import(
|
|
60
|
+
"rasa.nlu.extractors.crf_entity_extractor", "CRFEntityExtractor"
|
|
61
|
+
)
|
|
62
|
+
CRFEntityExtractorOptions, _ = conditional_import(
|
|
63
|
+
"rasa.nlu.extractors.crf_entity_extractor", "CRFEntityExtractorOptions"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# TODO: Can we replace this with the registered types from the registry?
|
|
67
|
+
TRAINABLE_EXTRACTORS = []
|
|
68
|
+
if CRF_ENTITY_EXTRACTOR_AVAILABLE:
|
|
69
|
+
TRAINABLE_EXTRACTORS.append(CRFEntityExtractor)
|
|
70
|
+
if MITIE_ENTITY_EXTRACTOR_AVAILABLE:
|
|
71
|
+
TRAINABLE_EXTRACTORS.append(MitieEntityExtractor)
|
|
72
|
+
if DIET_CLASSIFIER_AVAILABLE:
|
|
73
|
+
TRAINABLE_EXTRACTORS.append(DIETClassifier)
|
|
51
74
|
# TODO: replace these once the Recipe is merged (used in tests)
|
|
52
|
-
POLICY_CLASSSES = {
|
|
75
|
+
POLICY_CLASSSES = {MemoizationPolicy, RulePolicy}
|
|
76
|
+
if TED_POLICY_AVAILABLE:
|
|
77
|
+
POLICY_CLASSSES.add(TEDPolicy)
|
|
53
78
|
|
|
54
79
|
|
|
55
80
|
def _types_to_str(types: Iterable[Type]) -> Text:
|
|
@@ -158,18 +183,27 @@ class DefaultV1RecipeValidator(GraphComponent):
|
|
|
158
183
|
docs=DOCS_URL_COMPONENTS,
|
|
159
184
|
)
|
|
160
185
|
|
|
186
|
+
available_extractors = {DIETClassifier}
|
|
187
|
+
if CRF_ENTITY_EXTRACTOR_AVAILABLE:
|
|
188
|
+
available_extractors.add(CRFEntityExtractor)
|
|
189
|
+
|
|
161
190
|
if training_data.entity_examples and self._component_types.isdisjoint(
|
|
162
|
-
|
|
191
|
+
available_extractors
|
|
163
192
|
):
|
|
164
193
|
if training_data.entity_roles_groups_used():
|
|
194
|
+
crf_name = (
|
|
195
|
+
CRFEntityExtractor.__name__
|
|
196
|
+
if CRFEntityExtractor
|
|
197
|
+
else "CRFEntityExtractor"
|
|
198
|
+
)
|
|
165
199
|
rasa.shared.utils.io.raise_warning(
|
|
166
200
|
f"You have defined training data with entities that "
|
|
167
201
|
f"have roles/groups, but your NLU configuration does not "
|
|
168
202
|
f"include a '{DIETClassifier.__name__}' "
|
|
169
|
-
f"or a '{
|
|
203
|
+
f"or a '{crf_name}'. "
|
|
170
204
|
f"To train entities that have roles/groups, "
|
|
171
205
|
f"add either '{DIETClassifier.__name__}' "
|
|
172
|
-
f"or '{
|
|
206
|
+
f"or '{crf_name}' to your "
|
|
173
207
|
f"configuration.",
|
|
174
208
|
docs=DOCS_URL_COMPONENTS,
|
|
175
209
|
)
|
|
@@ -203,7 +237,16 @@ class DefaultV1RecipeValidator(GraphComponent):
|
|
|
203
237
|
)
|
|
204
238
|
|
|
205
239
|
if training_data.lookup_tables:
|
|
206
|
-
|
|
240
|
+
lookup_extractors = [DIETClassifier]
|
|
241
|
+
if CRF_ENTITY_EXTRACTOR_AVAILABLE:
|
|
242
|
+
lookup_extractors.append(CRFEntityExtractor)
|
|
243
|
+
|
|
244
|
+
if self._component_types.isdisjoint(lookup_extractors):
|
|
245
|
+
crf_name = (
|
|
246
|
+
CRFEntityExtractor.__name__
|
|
247
|
+
if CRFEntityExtractor
|
|
248
|
+
else "CRFEntityExtractor"
|
|
249
|
+
)
|
|
207
250
|
rasa.shared.utils.io.raise_warning(
|
|
208
251
|
f"You have defined training data consisting of lookup tables, but "
|
|
209
252
|
f"your NLU configuration does not include any components "
|
|
@@ -211,33 +254,45 @@ class DefaultV1RecipeValidator(GraphComponent):
|
|
|
211
254
|
f"To make use of the features that are created with the "
|
|
212
255
|
f"help of the lookup tables, "
|
|
213
256
|
f"add a '{DIETClassifier.__name__}' or a "
|
|
214
|
-
f"'{
|
|
257
|
+
f"'{crf_name}' "
|
|
215
258
|
f"with the 'pattern' feature "
|
|
216
259
|
f"to your configuration.",
|
|
217
260
|
docs=DOCS_URL_COMPONENTS,
|
|
218
261
|
)
|
|
219
262
|
|
|
220
|
-
elif
|
|
263
|
+
elif (
|
|
264
|
+
CRF_ENTITY_EXTRACTOR_AVAILABLE
|
|
265
|
+
and CRFEntityExtractor in self._component_types
|
|
266
|
+
):
|
|
221
267
|
crf_schema_nodes = [
|
|
222
268
|
schema_node
|
|
223
269
|
for schema_node in self._graph_schema.nodes.values()
|
|
224
270
|
if schema_node.uses == CRFEntityExtractor
|
|
225
271
|
]
|
|
226
|
-
has_pattern_feature =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
272
|
+
has_pattern_feature = (
|
|
273
|
+
any(
|
|
274
|
+
CRFEntityExtractorOptions.PATTERN in feature_list
|
|
275
|
+
for crf in crf_schema_nodes
|
|
276
|
+
for feature_list in crf.config.get("features", [])
|
|
277
|
+
)
|
|
278
|
+
if CRFEntityExtractorOptions
|
|
279
|
+
else False
|
|
230
280
|
)
|
|
231
281
|
|
|
232
282
|
if not has_pattern_feature:
|
|
283
|
+
crf_name = (
|
|
284
|
+
CRFEntityExtractor.__name__
|
|
285
|
+
if CRFEntityExtractor
|
|
286
|
+
else "CRFEntityExtractor"
|
|
287
|
+
)
|
|
233
288
|
rasa.shared.utils.io.raise_warning(
|
|
234
289
|
f"You have defined training data consisting of "
|
|
235
290
|
f"lookup tables, but your NLU configuration's "
|
|
236
|
-
f"'{
|
|
291
|
+
f"'{crf_name}' "
|
|
237
292
|
f"does not include the "
|
|
238
293
|
f"'pattern' feature. To featurize lookup tables, "
|
|
239
294
|
f"add the 'pattern' feature to the "
|
|
240
|
-
f"'{
|
|
295
|
+
f"'{crf_name}' "
|
|
241
296
|
"in your configuration.",
|
|
242
297
|
docs=DOCS_URL_COMPONENTS,
|
|
243
298
|
)
|
|
@@ -446,13 +501,16 @@ class DefaultV1RecipeValidator(GraphComponent):
|
|
|
446
501
|
return
|
|
447
502
|
|
|
448
503
|
# if we are using a flow policy, there shouldn't be any dm1 policies
|
|
449
|
-
|
|
504
|
+
dm1_policies_list = [
|
|
450
505
|
RulePolicy,
|
|
451
|
-
TEDPolicy,
|
|
452
506
|
MemoizationPolicy,
|
|
453
507
|
AugmentedMemoizationPolicy,
|
|
454
|
-
|
|
455
|
-
|
|
508
|
+
]
|
|
509
|
+
if TED_POLICY_AVAILABLE:
|
|
510
|
+
dm1_policies_list.append(TEDPolicy)
|
|
511
|
+
if UNEXPECTED_INTENT_POLICY_AVAILABLE:
|
|
512
|
+
dm1_policies_list.append(UnexpecTEDIntentPolicy)
|
|
513
|
+
dm1_policies = tuple(dm1_policies_list)
|
|
456
514
|
|
|
457
515
|
for schema_node in self._graph_schema.nodes.values():
|
|
458
516
|
if issubclass(schema_node.uses, dm1_policies):
|
rasa/hooks.py
CHANGED
|
@@ -19,7 +19,7 @@ hookimpl = pluggy.HookimplMarker("rasa")
|
|
|
19
19
|
logger = logging.getLogger(__name__)
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
@hookimpl
|
|
22
|
+
@hookimpl
|
|
23
23
|
def refine_cli(
|
|
24
24
|
subparsers: "SubParsersAction",
|
|
25
25
|
parent_parsers: List[argparse.ArgumentParser],
|
|
@@ -37,7 +37,7 @@ def refine_cli(
|
|
|
37
37
|
return None
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
@hookimpl
|
|
40
|
+
@hookimpl
|
|
41
41
|
def configure_commandline(cmdline_arguments: argparse.Namespace) -> Optional[Text]:
|
|
42
42
|
from rasa.cli import x as rasa_x
|
|
43
43
|
from rasa.tracing import config
|
|
@@ -59,21 +59,21 @@ def configure_commandline(cmdline_arguments: argparse.Namespace) -> Optional[Tex
|
|
|
59
59
|
return endpoints_file
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
@hookimpl
|
|
62
|
+
@hookimpl
|
|
63
63
|
def init_telemetry(endpoints_file: Optional[Text]) -> None:
|
|
64
64
|
import rasa.telemetry
|
|
65
65
|
|
|
66
66
|
rasa.telemetry.identify_endpoint_config_traits(endpoints_file)
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
@hookimpl
|
|
69
|
+
@hookimpl
|
|
70
70
|
def init_managers(endpoints_file: Optional[Text]) -> None:
|
|
71
71
|
from rasa.core.secrets_manager.factory import load_secret_manager
|
|
72
72
|
|
|
73
73
|
load_secret_manager(endpoints_file)
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
@hookimpl
|
|
76
|
+
@hookimpl
|
|
77
77
|
def create_tracker_store(
|
|
78
78
|
endpoint_config: Union["TrackerStore", "EndpointConfig"],
|
|
79
79
|
domain: "Domain",
|
rasa/llm_fine_tuning/utils.py
CHANGED
|
@@ -61,9 +61,9 @@ def patch_invoke_llm_in_generators(mock_impl: Callable) -> Generator:
|
|
|
61
61
|
try:
|
|
62
62
|
# apply the monkey-patch everywhere
|
|
63
63
|
for cls in originals:
|
|
64
|
-
cls.invoke_llm = mock_impl # type: ignore[
|
|
64
|
+
cls.invoke_llm = mock_impl # type: ignore[method-assign]
|
|
65
65
|
yield
|
|
66
66
|
finally:
|
|
67
67
|
# restore originals (even if an exception happened)
|
|
68
68
|
for cls, orig in originals.items():
|
|
69
|
-
cls.invoke_llm = orig # type: ignore[
|
|
69
|
+
cls.invoke_llm = orig # type: ignore[method-assign]
|
rasa/model_manager/model_api.py
CHANGED
|
@@ -39,11 +39,9 @@ from rasa.model_manager.trainer_service import (
|
|
|
39
39
|
update_training_status,
|
|
40
40
|
)
|
|
41
41
|
from rasa.model_manager.utils import (
|
|
42
|
-
InvalidPathException,
|
|
43
42
|
get_logs_content,
|
|
44
43
|
logs_base_path,
|
|
45
44
|
models_base_path,
|
|
46
|
-
subpath,
|
|
47
45
|
)
|
|
48
46
|
from rasa.model_manager.warm_rasa_process import (
|
|
49
47
|
initialize_warm_rasa_process,
|
|
@@ -53,6 +51,7 @@ from rasa.server import ErrorResponse
|
|
|
53
51
|
from rasa.shared.exceptions import InvalidConfigException
|
|
54
52
|
from rasa.shared.utils.yaml import dump_obj_as_yaml_to_string
|
|
55
53
|
from rasa.studio.upload import build_calm_import_parts
|
|
54
|
+
from rasa.utils.io import InvalidPathException, subpath
|
|
56
55
|
|
|
57
56
|
dotenv.load_dotenv()
|
|
58
57
|
|
|
@@ -571,10 +570,10 @@ def external_blueprint() -> Blueprint:
|
|
|
571
570
|
"""Create a blueprint for the model manager API."""
|
|
572
571
|
from rasa.core.channels.socketio import SocketBlueprint
|
|
573
572
|
|
|
574
|
-
|
|
575
|
-
bp = SocketBlueprint(
|
|
573
|
+
sio_server = AsyncServer(async_mode="sanic", cors_allowed_origins="*")
|
|
574
|
+
bp = SocketBlueprint(sio_server, "", "model_api_external")
|
|
576
575
|
|
|
577
|
-
create_bridge_server(
|
|
576
|
+
create_bridge_server(sio_server, running_bots)
|
|
578
577
|
|
|
579
578
|
@bp.get("/health")
|
|
580
579
|
async def health(request: Request) -> response.HTTPResponse:
|
|
@@ -15,11 +15,11 @@ from rasa.model_manager import config
|
|
|
15
15
|
from rasa.model_manager.utils import (
|
|
16
16
|
logs_path,
|
|
17
17
|
models_base_path,
|
|
18
|
-
subpath,
|
|
19
18
|
write_encoded_data_to_file,
|
|
20
19
|
)
|
|
21
20
|
from rasa.model_manager.warm_rasa_process import start_rasa_process
|
|
22
21
|
from rasa.studio.prompts import handle_prompts
|
|
22
|
+
from rasa.utils.io import subpath
|
|
23
23
|
|
|
24
24
|
structlogger = structlog.get_logger()
|
|
25
25
|
|
|
@@ -195,7 +195,7 @@ def fetch_remote_model_to_dir(
|
|
|
195
195
|
try:
|
|
196
196
|
return persistor.retrieve(model_name=model_name, target_path=target_path)
|
|
197
197
|
except FileNotFoundError as e:
|
|
198
|
-
raise ModelNotFound() from e
|
|
198
|
+
raise ModelNotFound("Model not found") from e
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
def fetch_size_of_remote_model(
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import json
|
|
2
1
|
from typing import Any, Dict, Optional
|
|
3
2
|
|
|
4
3
|
import structlog
|
|
5
|
-
from socketio import AsyncServer
|
|
6
|
-
from socketio.asyncio_client import AsyncClient
|
|
4
|
+
from socketio import AsyncClient, AsyncServer # type: ignore[attr-defined]
|
|
7
5
|
from socketio.exceptions import ConnectionRefusedError
|
|
8
6
|
|
|
9
7
|
from rasa.model_manager.runner_service import BotSession
|
|
@@ -20,7 +18,7 @@ socket_proxy_clients = {}
|
|
|
20
18
|
|
|
21
19
|
|
|
22
20
|
async def socketio_websocket_traffic_wrapper(
|
|
23
|
-
|
|
21
|
+
sio_server: AsyncServer,
|
|
24
22
|
running_bots: Dict[str, BotSession],
|
|
25
23
|
sid: str,
|
|
26
24
|
auth: Optional[Dict],
|
|
@@ -56,7 +54,9 @@ async def socketio_websocket_traffic_wrapper(
|
|
|
56
54
|
structlogger.error("model_runner.bot_not_alive", deployment_id=deployment_id)
|
|
57
55
|
raise ConnectionRefusedError("model_runner.bot_not_alive")
|
|
58
56
|
|
|
59
|
-
client = await create_bridge_client(
|
|
57
|
+
client = await create_bridge_client(
|
|
58
|
+
sio_server, bot.internal_url, sid, deployment_id
|
|
59
|
+
)
|
|
60
60
|
|
|
61
61
|
if client.sid is not None:
|
|
62
62
|
structlogger.debug(
|
|
@@ -71,20 +71,24 @@ async def socketio_websocket_traffic_wrapper(
|
|
|
71
71
|
raise ConnectionRefusedError("model_runner.bot_connection_failed")
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
def create_bridge_server(
|
|
74
|
+
def create_bridge_server(
|
|
75
|
+
sio_server: AsyncServer, running_bots: Dict[str, BotSession]
|
|
76
|
+
) -> None:
|
|
75
77
|
"""Create handlers for the socket server side.
|
|
76
78
|
|
|
77
79
|
Forwards messages coming from the user to the bot.
|
|
78
80
|
"""
|
|
79
81
|
|
|
80
|
-
@
|
|
82
|
+
@sio_server.on("connect")
|
|
81
83
|
async def socketio_websocket_traffic(
|
|
82
84
|
sid: str, environ: Dict, auth: Optional[Dict]
|
|
83
85
|
) -> bool:
|
|
84
86
|
"""Bridge websockets between user chat socket and bot server."""
|
|
85
|
-
return await socketio_websocket_traffic_wrapper(
|
|
87
|
+
return await socketio_websocket_traffic_wrapper(
|
|
88
|
+
sio_server, running_bots, sid, auth
|
|
89
|
+
)
|
|
86
90
|
|
|
87
|
-
@
|
|
91
|
+
@sio_server.on("disconnect")
|
|
88
92
|
async def disconnect(sid: str) -> None:
|
|
89
93
|
"""Disconnect the bot connection."""
|
|
90
94
|
structlogger.debug("model_runner.bot_disconnect", sid=sid)
|
|
@@ -92,7 +96,7 @@ def create_bridge_server(sio: AsyncServer, running_bots: Dict[str, BotSession])
|
|
|
92
96
|
await socket_proxy_clients[sid].disconnect()
|
|
93
97
|
del socket_proxy_clients[sid]
|
|
94
98
|
|
|
95
|
-
@
|
|
99
|
+
@sio_server.on("*")
|
|
96
100
|
async def handle_message(event: str, sid: str, data: Dict[str, Any]) -> None:
|
|
97
101
|
"""Bridge messages between user and bot.
|
|
98
102
|
|
|
@@ -109,7 +113,7 @@ def create_bridge_server(sio: AsyncServer, running_bots: Dict[str, BotSession])
|
|
|
109
113
|
|
|
110
114
|
|
|
111
115
|
async def create_bridge_client(
|
|
112
|
-
|
|
116
|
+
sio_server: AsyncServer, url: str, sid: str, deployment_id: str
|
|
113
117
|
) -> AsyncClient:
|
|
114
118
|
"""Create a new socket bridge client.
|
|
115
119
|
|
|
@@ -124,36 +128,36 @@ async def create_bridge_client(
|
|
|
124
128
|
structlogger.debug(
|
|
125
129
|
"model_runner.bot_session_confirmed", deployment_id=deployment_id
|
|
126
130
|
)
|
|
127
|
-
await
|
|
131
|
+
await sio_server.emit("session_confirm", room=sid)
|
|
128
132
|
|
|
129
133
|
@client.event # type: ignore[misc]
|
|
130
134
|
async def bot_message(data: Dict[str, Any]) -> None:
|
|
131
135
|
structlogger.debug("model_runner.bot_message", deployment_id=deployment_id)
|
|
132
|
-
await
|
|
136
|
+
await sio_server.emit("bot_message", data, room=sid)
|
|
133
137
|
|
|
134
138
|
@client.event # type: ignore[misc]
|
|
135
139
|
async def error(data: Dict[str, Any]) -> None:
|
|
136
140
|
structlogger.debug(
|
|
137
141
|
"model_runner.bot_error", deployment_id=deployment_id, data=data
|
|
138
142
|
)
|
|
139
|
-
await
|
|
143
|
+
await sio_server.emit("error", data, room=sid)
|
|
140
144
|
|
|
141
145
|
@client.event # type: ignore[misc]
|
|
142
146
|
async def tracker(data: Dict[str, Any]) -> None:
|
|
143
|
-
await
|
|
147
|
+
await sio_server.emit("tracker", data, room=sid)
|
|
144
148
|
|
|
145
149
|
@client.event # type: ignore[misc]
|
|
146
150
|
async def disconnect() -> None:
|
|
147
151
|
structlogger.debug(
|
|
148
152
|
"model_runner.bot_connection_closed", deployment_id=deployment_id
|
|
149
153
|
)
|
|
150
|
-
await
|
|
154
|
+
await sio_server.emit("disconnect", room=sid)
|
|
151
155
|
|
|
152
156
|
@client.event # type: ignore[misc]
|
|
153
157
|
async def connect_error() -> None:
|
|
154
158
|
structlogger.error(
|
|
155
159
|
"model_runner.bot_connection_error", deployment_id=deployment_id
|
|
156
160
|
)
|
|
157
|
-
await
|
|
161
|
+
await sio_server.emit("disconnect", room=sid)
|
|
158
162
|
|
|
159
163
|
return client
|
|
@@ -14,7 +14,6 @@ from rasa.model_manager.utils import (
|
|
|
14
14
|
ensure_base_directory_exists,
|
|
15
15
|
logs_path,
|
|
16
16
|
models_base_path,
|
|
17
|
-
subpath,
|
|
18
17
|
write_encoded_data_to_file,
|
|
19
18
|
)
|
|
20
19
|
from rasa.model_manager.warm_rasa_process import (
|
|
@@ -22,6 +21,7 @@ from rasa.model_manager.warm_rasa_process import (
|
|
|
22
21
|
)
|
|
23
22
|
from rasa.model_training import generate_random_model_name
|
|
24
23
|
from rasa.studio.prompts import handle_prompts
|
|
24
|
+
from rasa.utils.io import subpath
|
|
25
25
|
|
|
26
26
|
structlogger = structlog.get_logger()
|
|
27
27
|
|
|
@@ -53,6 +53,15 @@ class TrainingSession(BaseModel):
|
|
|
53
53
|
"""Check if the training is running."""
|
|
54
54
|
return self.status == TrainingSessionStatus.RUNNING
|
|
55
55
|
|
|
56
|
+
def has_just_finished(self) -> bool:
|
|
57
|
+
if not self.is_status_indicating_alive():
|
|
58
|
+
# skip if the training is not running
|
|
59
|
+
return False
|
|
60
|
+
if self.process.poll() is None:
|
|
61
|
+
# process is still running
|
|
62
|
+
return False
|
|
63
|
+
return True
|
|
64
|
+
|
|
56
65
|
def model_path(self) -> str:
|
|
57
66
|
"""Return the path to the model."""
|
|
58
67
|
return subpath(models_base_path(), f"{self.model_name}.tar.gz")
|
|
@@ -89,14 +98,8 @@ def terminate_training(training: TrainingSession) -> None:
|
|
|
89
98
|
|
|
90
99
|
|
|
91
100
|
def update_training_status(training: TrainingSession) -> None:
|
|
92
|
-
if
|
|
93
|
-
|
|
94
|
-
return
|
|
95
|
-
if training.process.poll() is None:
|
|
96
|
-
# process is still running
|
|
97
|
-
return
|
|
98
|
-
|
|
99
|
-
complete_training(training)
|
|
101
|
+
if training.has_just_finished():
|
|
102
|
+
complete_training(training)
|
|
100
103
|
|
|
101
104
|
|
|
102
105
|
def complete_training(training: TrainingSession) -> None:
|
rasa/model_manager/utils.py
CHANGED
|
@@ -5,15 +5,11 @@ from typing import Optional
|
|
|
5
5
|
import structlog
|
|
6
6
|
|
|
7
7
|
from rasa.model_manager import config
|
|
8
|
-
from rasa.
|
|
8
|
+
from rasa.utils.io import subpath
|
|
9
9
|
|
|
10
10
|
structlogger = structlog.get_logger()
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class InvalidPathException(RasaException):
|
|
14
|
-
"""Raised if a path is invalid - e.g. path traversal is detected."""
|
|
15
|
-
|
|
16
|
-
|
|
17
13
|
def write_encoded_data_to_file(encoded_data: bytes, file: str) -> None:
|
|
18
14
|
"""Write base64 encoded data to a file."""
|
|
19
15
|
# create the directory if it does not exist of the parent directory
|
|
@@ -53,30 +49,6 @@ def logs_path(action_id: str) -> str:
|
|
|
53
49
|
return subpath(logs_base_path(), f"{action_id}.txt")
|
|
54
50
|
|
|
55
51
|
|
|
56
|
-
def subpath(parent: str, child: str) -> str:
|
|
57
|
-
"""Return the path to the child directory of the parent directory.
|
|
58
|
-
|
|
59
|
-
Ensures, that child doesn't navigate to parent directories. Prevents
|
|
60
|
-
path traversal. Raises an InvalidPathException if the path is invalid.
|
|
61
|
-
|
|
62
|
-
Based on Snyk's directory traversal mitigation:
|
|
63
|
-
https://learn.snyk.io/lesson/directory-traversal/
|
|
64
|
-
"""
|
|
65
|
-
safe_path = os.path.abspath(os.path.join(parent, child))
|
|
66
|
-
parent = os.path.abspath(parent)
|
|
67
|
-
|
|
68
|
-
common_base = os.path.commonpath([parent, safe_path])
|
|
69
|
-
if common_base != parent:
|
|
70
|
-
raise InvalidPathException(f"Invalid path: {safe_path}")
|
|
71
|
-
|
|
72
|
-
if os.path.basename(safe_path) != child:
|
|
73
|
-
raise InvalidPathException(
|
|
74
|
-
f"Invalid path - path traversal detected: {safe_path}"
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
return safe_path
|
|
78
|
-
|
|
79
|
-
|
|
80
52
|
def get_logs_content(action_id: str) -> Optional[str]:
|
|
81
53
|
"""Return the content of the log file for a given action id."""
|
|
82
54
|
try:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import shlex
|
|
3
3
|
import subprocess
|
|
4
|
+
import time
|
|
4
5
|
import uuid
|
|
5
6
|
from dataclasses import dataclass
|
|
6
7
|
from typing import List
|
|
@@ -149,19 +150,28 @@ def warmup() -> None:
|
|
|
149
150
|
We import them now, so that the training / deployment can later
|
|
150
151
|
directly start.
|
|
151
152
|
"""
|
|
153
|
+
start_time = time.time()
|
|
152
154
|
try:
|
|
153
155
|
import langchain # noqa: F401
|
|
154
156
|
import litellm # noqa: F401
|
|
155
157
|
import matplotlib # noqa: F401
|
|
156
158
|
import numpy # noqa: F401
|
|
157
159
|
import pandas # noqa: F401
|
|
158
|
-
import presidio_analyzer # noqa: F401
|
|
159
|
-
import spacy # noqa: F401
|
|
160
160
|
import tensorflow # noqa: F401
|
|
161
161
|
|
|
162
162
|
import rasa.validator # noqa: F401
|
|
163
|
-
except ImportError:
|
|
163
|
+
except ImportError as e:
|
|
164
|
+
structlogger.warning(
|
|
165
|
+
"model_trainer.warmup_error",
|
|
166
|
+
error=str(e),
|
|
167
|
+
)
|
|
164
168
|
pass
|
|
169
|
+
finally:
|
|
170
|
+
end_time = time.time()
|
|
171
|
+
structlogger.debug(
|
|
172
|
+
"model_trainer.warmup_time",
|
|
173
|
+
time_in_seconds=end_time - start_time,
|
|
174
|
+
)
|
|
165
175
|
|
|
166
176
|
|
|
167
177
|
def warm_rasa_main() -> None:
|