rasa-pro 3.14.0.dev3__py3-none-any.whl → 3.14.0.dev5__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/api.py +0 -5
- rasa/builder/README.md +120 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +115 -0
- rasa/builder/copilot/constants.py +25 -0
- rasa/builder/copilot/copilot.py +372 -0
- rasa/builder/copilot/copilot_response_handler.py +487 -0
- rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
- rasa/builder/copilot/exceptions.py +20 -0
- rasa/builder/copilot/models.py +431 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +726 -0
- rasa/builder/copilot/telemetry.py +195 -0
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +26 -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 +55 -0
- rasa/builder/guardrails/__init__.py +1 -0
- rasa/builder/guardrails/constants.py +3 -0
- rasa/builder/guardrails/exceptions.py +4 -0
- rasa/builder/guardrails/lakera.py +206 -0
- rasa/builder/guardrails/models.py +199 -0
- rasa/builder/guardrails/utils.py +305 -0
- rasa/builder/job_manager.py +87 -0
- rasa/builder/jobs.py +234 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +209 -0
- rasa/builder/main.py +174 -0
- rasa/builder/models.py +197 -0
- rasa/builder/project_generator.py +450 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1142 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/training_service.py +132 -0
- rasa/builder/validation_service.py +93 -0
- rasa/cli/arguments/default_arguments.py +0 -12
- rasa/cli/arguments/run.py +0 -2
- rasa/cli/dialogue_understanding_test.py +0 -4
- rasa/cli/e2e_test.py +0 -4
- rasa/cli/inspect.py +0 -3
- rasa/cli/llm_fine_tuning.py +0 -5
- rasa/cli/project_templates/basic/actions/action_api.py +15 -0
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +44 -0
- rasa/cli/project_templates/basic/config.yml +23 -0
- rasa/cli/project_templates/basic/credentials.yml +34 -0
- rasa/cli/project_templates/basic/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/basic/data/general/hello.yml +7 -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/welcome.yml +9 -0
- rasa/cli/project_templates/basic/data/system/pattern_completed.yml +7 -0
- rasa/cli/project_templates/basic/data/system/pattern_correction.yml +7 -0
- rasa/cli/project_templates/basic/data/system/pattern_search.yml +8 -0
- rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +65 -0
- rasa/cli/project_templates/basic/docs/template.txt +7 -0
- rasa/cli/project_templates/basic/domain/general/assistant_details.yml +12 -0
- rasa/cli/project_templates/basic/domain/general/bot_identity.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/feedback.yml +28 -0
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/basic/domain/general/help.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +35 -0
- rasa/cli/project_templates/basic/domain/general/utils.yml +13 -0
- rasa/cli/project_templates/basic/domain/general/welcome.yml +7 -0
- rasa/cli/project_templates/basic/endpoints.yml +73 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/finance/actions/__init__.py +46 -0
- rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
- rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
- rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
- rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
- rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
- rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
- rasa/cli/project_templates/finance/actions/database.py +277 -0
- rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
- rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
- rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
- rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
- rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
- rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
- rasa/cli/project_templates/finance/config.yml +21 -0
- rasa/cli/project_templates/finance/credentials.yml +32 -0
- rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
- rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
- rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
- rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
- rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
- rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
- rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
- rasa/cli/project_templates/finance/csvs/users.csv +4 -0
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
- rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
- rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/data/general/bot_identity.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 +7 -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_chitchat.yml +5 -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/system/source/accounts.json +51 -0
- rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
- rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
- rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
- rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
- rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
- rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
- rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
- rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
- rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
- rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
- rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
- rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
- rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
- rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
- rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
- rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
- rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
- rasa/cli/project_templates/finance/endpoints.yml +63 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions_billing.py +204 -0
- rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +48 -0
- rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +28 -0
- rasa/cli/project_templates/telco/actions/actions_session_start.py +18 -0
- rasa/cli/project_templates/telco/config.yml +25 -0
- rasa/cli/project_templates/telco/credentials.yml +33 -0
- rasa/cli/project_templates/telco/csvs/billing.csv +10 -0
- rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
- rasa/cli/project_templates/telco/data/flows/flow_global.yml +5 -0
- rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +8 -0
- rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +7 -0
- rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +73 -0
- rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +45 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +6 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +7 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +9 -0
- rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +1 -0
- rasa/cli/project_templates/telco/docs/restart_router.txt +6 -0
- rasa/cli/project_templates/telco/docs/run_speed_test.txt +6 -0
- rasa/cli/project_templates/telco/domain/domain_global.yml +29 -0
- rasa/cli/project_templates/telco/domain/domain_patterns.yml +17 -0
- rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +20 -0
- rasa/cli/project_templates/telco/domain/domain_reset_router.yml +11 -0
- rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +24 -0
- rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +74 -0
- rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +102 -0
- rasa/cli/project_templates/telco/endpoints.yml +60 -0
- rasa/{dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 → cli/project_templates/telco/prompts/command-generator.jinja2} +3 -7
- rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +62 -0
- rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +130 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +68 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +13 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +47 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +21 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +15 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/run.py +0 -4
- rasa/cli/scaffold.py +46 -2
- rasa/cli/shell.py +0 -3
- rasa/constants.py +0 -6
- rasa/core/actions/action.py +2 -43
- rasa/core/agent.py +0 -16
- rasa/core/available_endpoints.py +0 -30
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/inspector/dist/assets/{arc-2e78c586.js → arc-18042c22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-806b712e.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0745efa9.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-7bd1082b.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-d937ba49.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-a2a564ca.js → createText-2e5e7dd3-31422447.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b5256940.js → edges-e0da2a9e-518a90db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-e6883ad2.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e576fc02.js → flowDb-956e92f1-e048c2be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-2e298d01.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-dd7b150a.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-5b79575c.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-3016f40a.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-3e19170f.js → graph-14702d8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-eb9c86de.js → index-3862675e-f18b534b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +1335 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-b4280e4d.js → infoDiagram-f8f76790-64154b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-556091f8.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-08436411.js → layout-5a3b2123.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-683c4f3b.js → line-2272a8c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-cee6d791.js → linear-35bcf273.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-a0bf0b1a.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-3730d5c4.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-12a20fed.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-b9732102.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-a2e72776.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-8b7a76bb.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-e65853ac.js → stateDiagram-587899a1-b8a74083.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-6f58a44b.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-df25b934.js → styles-6aaf32cf-f1d54e34.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-88357141.js → styles-9a916d00-980de489.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-d600174d.js → styles-c10674c1-3c03abde.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-4adc3e0b.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-42816fa1.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-621eb66a.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +2 -2
- rasa/core/channels/inspector/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +10 -11
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +5 -7
- rasa/core/channels/inspector/src/helpers/formatters.ts +3 -24
- rasa/core/channels/inspector/src/theme/base/styles.ts +1 -19
- rasa/core/channels/inspector/src/types.ts +0 -4
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +43 -23
- rasa/core/channels/voice_stream/voice_channel.py +5 -3
- rasa/core/constants.py +0 -4
- rasa/core/policies/enterprise_search_policy.py +6 -11
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/flow_executor.py +45 -415
- rasa/core/processor.py +1 -6
- rasa/core/run.py +14 -11
- rasa/core/utils.py +1 -21
- rasa/dialogue_understanding/commands/__init__.py +0 -8
- rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -97
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +0 -11
- rasa/dialogue_understanding/commands/clarify_command.py +0 -10
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +0 -11
- rasa/dialogue_understanding/commands/start_flow_command.py +8 -164
- rasa/dialogue_understanding/commands/utils.py +2 -6
- rasa/dialogue_understanding/generator/command_parser.py +0 -4
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +12 -50
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +6 -7
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +6 -7
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -41
- rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -163
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +8 -52
- rasa/dialogue_understanding/processor/command_processor.py +15 -31
- rasa/dialogue_understanding/stack/dialogue_stack.py +2 -123
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +0 -57
- rasa/dialogue_understanding/stack/utils.py +2 -17
- rasa/dialogue_understanding_test/du_test_runner.py +2 -7
- rasa/e2e_test/e2e_test_runner.py +0 -5
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +20 -14
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/server.py +0 -10
- rasa/shared/constants.py +0 -5
- rasa/shared/core/constants.py +1 -12
- rasa/shared/core/domain.py +58 -11
- rasa/shared/core/events.py +0 -319
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/flows_list.py +2 -2
- rasa/shared/core/flows/flows_yaml_schema.json +186 -112
- rasa/shared/core/flows/steps/call.py +5 -53
- rasa/shared/core/flows/validation.py +7 -46
- rasa/shared/core/flows/yaml_flows_io.py +16 -8
- rasa/shared/core/slots.py +4 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/shared/providers/_utils.py +60 -44
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
- rasa/shared/providers/llm/_base_litellm_client.py +7 -39
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +4 -8
- rasa/shared/providers/llm/llm_client.py +3 -7
- rasa/shared/providers/llm/llm_response.py +0 -49
- rasa/shared/providers/llm/self_hosted_llm_client.py +4 -8
- rasa/shared/utils/llm.py +5 -28
- rasa/shared/utils/schemas/events.py +0 -42
- rasa/studio/upload.py +16 -47
- rasa/telemetry.py +97 -23
- rasa/tracing/instrumentation/instrumentation.py +2 -4
- rasa/utils/common.py +0 -79
- rasa/utils/io.py +27 -9
- rasa/utils/json_utils.py +6 -1
- rasa/utils/log_utils.py +5 -1
- rasa/utils/openapi.py +144 -0
- rasa/validator.py +7 -3
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +3 -3
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +405 -174
- rasa/agents/agent_factory.py +0 -122
- rasa/agents/agent_manager.py +0 -162
- rasa/agents/constants.py +0 -32
- rasa/agents/core/agent_protocol.py +0 -108
- rasa/agents/core/types.py +0 -70
- rasa/agents/exceptions.py +0 -8
- rasa/agents/protocol/__init__.py +0 -5
- rasa/agents/protocol/a2a/a2a_agent.py +0 -51
- rasa/agents/protocol/mcp/mcp_base_agent.py +0 -674
- rasa/agents/protocol/mcp/mcp_open_agent.py +0 -276
- rasa/agents/protocol/mcp/mcp_task_agent.py +0 -469
- rasa/agents/schemas/__init__.py +0 -12
- rasa/agents/schemas/agent_input.py +0 -38
- rasa/agents/schemas/agent_output.py +0 -26
- rasa/agents/schemas/agent_tool_result.py +0 -51
- rasa/agents/schemas/agent_tool_schema.py +0 -134
- rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +0 -15
- rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +0 -17
- rasa/agents/utils.py +0 -72
- rasa/core/available_agents.py +0 -196
- rasa/core/channels/inspector/dist/assets/channel-c436ca7c.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-50dd656b.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b2aeaf8.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-1bd9135e.js +0 -1353
- rasa/core/policies/flows/mcp_tool_executor.py +0 -277
- rasa/dialogue_understanding/commands/continue_agent_command.py +0 -91
- rasa/dialogue_understanding/commands/restart_agent_command.py +0 -162
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +0 -61
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +0 -81
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +0 -81
- rasa/shared/agents/utils.py +0 -35
- rasa/shared/utils/mcp/server_connection.py +0 -157
- /rasa/{agents → builder}/__init__.py +0 -0
- /rasa/{agents/core → builder/copilot}/__init__.py +0 -0
- /rasa/{agents/protocol/a2a → builder/copilot/prompts}/__init__.py +0 -0
- /rasa/{agents/protocol/mcp → builder/copilot/templated_messages}/__init__.py +0 -0
- /rasa/{agents/templates → builder/document_retrieval}/__init__.py +0 -0
- /rasa/{shared/agents → cli/project_templates/finance/actions/accounts}/__init__.py +0 -0
- /rasa/{shared/utils/mcp → cli/project_templates/finance/actions/cards}/__init__.py +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
rasa/core/run.py
CHANGED
|
@@ -30,7 +30,6 @@ from rasa import server, telemetry
|
|
|
30
30
|
from rasa.constants import ENV_SANIC_BACKLOG
|
|
31
31
|
from rasa.core import agent, channels, constants
|
|
32
32
|
from rasa.core.agent import Agent
|
|
33
|
-
from rasa.core.available_agents import AvailableAgents
|
|
34
33
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
35
34
|
from rasa.core.channels import console
|
|
36
35
|
from rasa.core.channels.channel import InputChannel
|
|
@@ -43,10 +42,20 @@ from rasa.utils import licensing
|
|
|
43
42
|
logger = logging.getLogger() # get the root logger
|
|
44
43
|
|
|
45
44
|
|
|
46
|
-
def
|
|
45
|
+
def create_input_channels(
|
|
47
46
|
channel: Optional[Text], credentials_file: Optional[Text]
|
|
48
47
|
) -> List[InputChannel]:
|
|
49
|
-
"""Instantiate the chosen input channel.
|
|
48
|
+
"""Instantiate the chosen input channel.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
channel (optional): The name of the specific input channel to create.
|
|
52
|
+
credentials_file: Path to the credentials file containing channel credentials.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
A list of instantiated input channels. If a specific channel is provided,
|
|
56
|
+
it returns a list with that single channel. If no channel is specified,
|
|
57
|
+
it returns a list of all channels defined in the credentials file.
|
|
58
|
+
"""
|
|
50
59
|
if credentials_file:
|
|
51
60
|
all_credentials = read_config_file(credentials_file)
|
|
52
61
|
else:
|
|
@@ -142,7 +151,6 @@ def configure_app(
|
|
|
142
151
|
route: Optional[Text] = "/webhooks/",
|
|
143
152
|
port: int = constants.DEFAULT_SERVER_PORT,
|
|
144
153
|
endpoints: Optional[AvailableEndpoints] = None,
|
|
145
|
-
sub_agents: Optional[AvailableAgents] = None,
|
|
146
154
|
log_file: Optional[Text] = None,
|
|
147
155
|
conversation_id: Optional[Text] = uuid.uuid4().hex,
|
|
148
156
|
use_syslog: bool = False,
|
|
@@ -171,7 +179,6 @@ def configure_app(
|
|
|
171
179
|
jwt_private_key=jwt_private_key,
|
|
172
180
|
jwt_method=jwt_method,
|
|
173
181
|
endpoints=endpoints,
|
|
174
|
-
sub_agents=sub_agents,
|
|
175
182
|
is_inspector_enabled=is_inspector_enabled,
|
|
176
183
|
)
|
|
177
184
|
)
|
|
@@ -236,7 +243,6 @@ def serve_application(
|
|
|
236
243
|
jwt_private_key: Optional[Text] = None,
|
|
237
244
|
jwt_method: Optional[Text] = None,
|
|
238
245
|
endpoints: Optional[AvailableEndpoints] = None,
|
|
239
|
-
sub_agents: Optional[AvailableAgents] = None,
|
|
240
246
|
remote_storage: Optional[StorageType] = None,
|
|
241
247
|
log_file: Optional[Text] = None,
|
|
242
248
|
ssl_certificate: Optional[Text] = None,
|
|
@@ -257,7 +263,7 @@ def serve_application(
|
|
|
257
263
|
if not channel and not credentials:
|
|
258
264
|
channel = "cmdline"
|
|
259
265
|
|
|
260
|
-
input_channels =
|
|
266
|
+
input_channels = create_input_channels(channel, credentials)
|
|
261
267
|
|
|
262
268
|
if inspect:
|
|
263
269
|
logger.info("Starting development inspector.")
|
|
@@ -277,7 +283,6 @@ def serve_application(
|
|
|
277
283
|
jwt_method,
|
|
278
284
|
port=port,
|
|
279
285
|
endpoints=endpoints,
|
|
280
|
-
sub_agents=sub_agents,
|
|
281
286
|
log_file=log_file,
|
|
282
287
|
conversation_id=conversation_id,
|
|
283
288
|
use_syslog=use_syslog,
|
|
@@ -297,7 +302,7 @@ def serve_application(
|
|
|
297
302
|
logger.info(f"Starting Rasa server on {protocol}://{interface}:{port}")
|
|
298
303
|
|
|
299
304
|
app.register_listener(
|
|
300
|
-
partial(load_agent_on_start, model_path, endpoints, remote_storage
|
|
305
|
+
partial(load_agent_on_start, model_path, endpoints, remote_storage),
|
|
301
306
|
"before_server_start",
|
|
302
307
|
)
|
|
303
308
|
|
|
@@ -335,7 +340,6 @@ async def load_agent_on_start(
|
|
|
335
340
|
model_path: Text,
|
|
336
341
|
endpoints: AvailableEndpoints,
|
|
337
342
|
remote_storage: Optional[StorageType],
|
|
338
|
-
sub_agents: Optional[AvailableAgents],
|
|
339
343
|
app: Sanic,
|
|
340
344
|
loop: AbstractEventLoop,
|
|
341
345
|
) -> Agent:
|
|
@@ -348,7 +352,6 @@ async def load_agent_on_start(
|
|
|
348
352
|
model_path=model_path,
|
|
349
353
|
remote_storage=remote_storage,
|
|
350
354
|
endpoints=endpoints,
|
|
351
|
-
sub_agents=sub_agents,
|
|
352
355
|
loop=loop,
|
|
353
356
|
)
|
|
354
357
|
|
rasa/core/utils.py
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
-
import re
|
|
4
3
|
from pathlib import Path
|
|
5
4
|
from socket import SOCK_DGRAM, SOCK_STREAM
|
|
6
|
-
from typing import TYPE_CHECKING, Any, Dict,
|
|
5
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional, Set, Text, Tuple, Union
|
|
7
6
|
|
|
8
7
|
import numpy as np
|
|
9
8
|
import structlog
|
|
@@ -360,22 +359,3 @@ def should_force_slot_filling(
|
|
|
360
359
|
return True, slot_name
|
|
361
360
|
|
|
362
361
|
return False, None
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
def get_slot_names_from_exit_conditions(exit_conditions: List[str]) -> List[str]:
|
|
366
|
-
"""Extract slot names from exit conditions.
|
|
367
|
-
|
|
368
|
-
Args:
|
|
369
|
-
exit_conditions: The exit conditions to extract slot names from.
|
|
370
|
-
|
|
371
|
-
Returns:
|
|
372
|
-
A list of slot names.
|
|
373
|
-
"""
|
|
374
|
-
# Find all unique names matching "slots.<name>"
|
|
375
|
-
return list(
|
|
376
|
-
{
|
|
377
|
-
name
|
|
378
|
-
for condition in exit_conditions
|
|
379
|
-
for name in re.findall(r"\bslots\.(\w+)", condition)
|
|
380
|
-
}
|
|
381
|
-
)
|
|
@@ -8,9 +8,6 @@ from rasa.dialogue_understanding.commands.chit_chat_answer_command import (
|
|
|
8
8
|
)
|
|
9
9
|
from rasa.dialogue_understanding.commands.clarify_command import ClarifyCommand
|
|
10
10
|
from rasa.dialogue_understanding.commands.command import Command
|
|
11
|
-
from rasa.dialogue_understanding.commands.continue_agent_command import (
|
|
12
|
-
ContinueAgentCommand,
|
|
13
|
-
)
|
|
14
11
|
from rasa.dialogue_understanding.commands.correct_slots_command import (
|
|
15
12
|
CorrectedSlot,
|
|
16
13
|
CorrectSlotsCommand,
|
|
@@ -32,9 +29,6 @@ from rasa.dialogue_understanding.commands.noop_command import NoopCommand
|
|
|
32
29
|
from rasa.dialogue_understanding.commands.repeat_bot_messages_command import (
|
|
33
30
|
RepeatBotMessagesCommand,
|
|
34
31
|
)
|
|
35
|
-
from rasa.dialogue_understanding.commands.restart_agent_command import (
|
|
36
|
-
RestartAgentCommand,
|
|
37
|
-
)
|
|
38
32
|
from rasa.dialogue_understanding.commands.restart_command import RestartCommand
|
|
39
33
|
from rasa.dialogue_understanding.commands.session_end_command import SessionEndCommand
|
|
40
34
|
from rasa.dialogue_understanding.commands.session_start_command import (
|
|
@@ -68,6 +62,4 @@ __all__ = [
|
|
|
68
62
|
"SessionEndCommand",
|
|
69
63
|
"RepeatBotMessagesCommand",
|
|
70
64
|
"RestartCommand",
|
|
71
|
-
"ContinueAgentCommand",
|
|
72
|
-
"RestartAgentCommand",
|
|
73
65
|
]
|
|
@@ -2,13 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import Any, Dict, List
|
|
5
|
+
from typing import Any, Dict, List
|
|
6
6
|
|
|
7
7
|
import structlog
|
|
8
8
|
|
|
9
|
-
from rasa.core.policies.flows.flow_executor import (
|
|
10
|
-
remove_agent_stack_frame,
|
|
11
|
-
)
|
|
12
9
|
from rasa.dialogue_understanding.commands.command import Command
|
|
13
10
|
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
14
11
|
CommandSyntaxManager,
|
|
@@ -16,13 +13,12 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
|
16
13
|
)
|
|
17
14
|
from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
|
|
18
15
|
from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
|
|
19
|
-
from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
|
|
20
16
|
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
21
17
|
FlowStackFrameType,
|
|
22
18
|
UserFlowStackFrame,
|
|
23
19
|
)
|
|
24
20
|
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
25
|
-
from rasa.shared.core.events import
|
|
21
|
+
from rasa.shared.core.events import Event, FlowCancelled
|
|
26
22
|
from rasa.shared.core.flows import FlowsList
|
|
27
23
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
28
24
|
|
|
@@ -52,7 +48,8 @@ class CancelFlowCommand(Command):
|
|
|
52
48
|
"""Selects the frames that were canceled.
|
|
53
49
|
|
|
54
50
|
Args:
|
|
55
|
-
|
|
51
|
+
dialogue_stack: The dialogue stack.
|
|
52
|
+
current_flow: The current flow.
|
|
56
53
|
|
|
57
54
|
Returns:
|
|
58
55
|
The frames that were canceled.
|
|
@@ -109,19 +106,6 @@ class CancelFlowCommand(Command):
|
|
|
109
106
|
)
|
|
110
107
|
return []
|
|
111
108
|
|
|
112
|
-
if agent_frame := original_tracker.stack.find_active_agent_stack_frame_for_flow(
|
|
113
|
-
current_flow.id
|
|
114
|
-
):
|
|
115
|
-
structlogger.debug(
|
|
116
|
-
"cancel_command.remove_agent_stack_frame",
|
|
117
|
-
command=self,
|
|
118
|
-
frame=agent_frame,
|
|
119
|
-
)
|
|
120
|
-
remove_agent_stack_frame(stack, agent_frame.agent_id)
|
|
121
|
-
applied_events.append(
|
|
122
|
-
AgentCancelled(agent_id=agent_frame.agent_id, flow_id=current_flow.id)
|
|
123
|
-
)
|
|
124
|
-
|
|
125
109
|
# we pass in the original dialogue stack (before any of the currently
|
|
126
110
|
# predicted commands were applied) to make sure we don't cancel any
|
|
127
111
|
# frames that were added by the currently predicted commands.
|
|
@@ -175,80 +159,3 @@ class CancelFlowCommand(Command):
|
|
|
175
159
|
CommandSyntaxManager.get_syntax_version(),
|
|
176
160
|
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
177
161
|
)
|
|
178
|
-
|
|
179
|
-
def cancel_flow(
|
|
180
|
-
self,
|
|
181
|
-
tracker: DialogueStateTracker,
|
|
182
|
-
stack: DialogueStack,
|
|
183
|
-
flow_id: str,
|
|
184
|
-
) -> List[Event]:
|
|
185
|
-
"""Cancels a flow by flow id."""
|
|
186
|
-
applied_events: List[Event] = []
|
|
187
|
-
|
|
188
|
-
frames_to_cancel, user_frame_to_cancel = self._collect_frames_to_cancel(
|
|
189
|
-
stack, flow_id
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
# if the flow is not on the stack, do nothing
|
|
193
|
-
if user_frame_to_cancel is None:
|
|
194
|
-
structlogger.error(
|
|
195
|
-
"cancel_flow_command.cancel_flow.no_user_frame_to_cancel",
|
|
196
|
-
command=self,
|
|
197
|
-
)
|
|
198
|
-
return []
|
|
199
|
-
|
|
200
|
-
frames_ids_to_cancel = [frame.frame_id for frame in frames_to_cancel]
|
|
201
|
-
|
|
202
|
-
stack.push(
|
|
203
|
-
CancelPatternFlowStackFrame(
|
|
204
|
-
canceled_name=flow_id,
|
|
205
|
-
canceled_frames=frames_ids_to_cancel,
|
|
206
|
-
)
|
|
207
|
-
)
|
|
208
|
-
|
|
209
|
-
# create flow cancelled event
|
|
210
|
-
applied_events.extend(
|
|
211
|
-
[
|
|
212
|
-
FlowCancelled(
|
|
213
|
-
user_frame_to_cancel.flow_id, user_frame_to_cancel.step_id
|
|
214
|
-
),
|
|
215
|
-
]
|
|
216
|
-
)
|
|
217
|
-
|
|
218
|
-
update_stack_events = tracker.create_stack_updated_events(stack)
|
|
219
|
-
|
|
220
|
-
return applied_events + update_stack_events
|
|
221
|
-
|
|
222
|
-
def _collect_frames_to_cancel(
|
|
223
|
-
self, stack: DialogueStack, target_flow_id: str
|
|
224
|
-
) -> Tuple[List[DialogueStackFrame], Optional[UserFlowStackFrame]]:
|
|
225
|
-
"""Collect frames that need to be cancelled.
|
|
226
|
-
|
|
227
|
-
Args:
|
|
228
|
-
stack: The stack to collect frames from.
|
|
229
|
-
target_flow_id: The ID of the flow to cancel.
|
|
230
|
-
|
|
231
|
-
Returns:
|
|
232
|
-
A tuple containing (frames_to_cancel, frame_to_cancel).
|
|
233
|
-
"""
|
|
234
|
-
frames_to_cancel: List[DialogueStackFrame] = []
|
|
235
|
-
frame_found = False
|
|
236
|
-
frame_to_cancel = None
|
|
237
|
-
|
|
238
|
-
for frame in stack.frames:
|
|
239
|
-
if isinstance(frame, UserFlowStackFrame) and (
|
|
240
|
-
frame.frame_type == FlowStackFrameType.REGULAR
|
|
241
|
-
or frame.frame_type == FlowStackFrameType.INTERRUPT
|
|
242
|
-
):
|
|
243
|
-
if frame.flow_id == target_flow_id:
|
|
244
|
-
frames_to_cancel.append(frame)
|
|
245
|
-
frame_to_cancel = frame
|
|
246
|
-
frame_found = True
|
|
247
|
-
continue
|
|
248
|
-
elif frame_found:
|
|
249
|
-
break
|
|
250
|
-
|
|
251
|
-
if frame_found:
|
|
252
|
-
frames_to_cancel.append(frame)
|
|
253
|
-
|
|
254
|
-
return list(frames_to_cancel), frame_to_cancel
|
|
@@ -12,10 +12,6 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
|
12
12
|
FreeFormAnswerCommand,
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
|
|
15
|
-
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
16
|
-
AgentStackFrame,
|
|
17
|
-
AgentState,
|
|
18
|
-
)
|
|
19
15
|
from rasa.shared.core.events import Event
|
|
20
16
|
from rasa.shared.core.flows import FlowsList
|
|
21
17
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -56,13 +52,6 @@ class ChitChatAnswerCommand(FreeFormAnswerCommand):
|
|
|
56
52
|
The events to apply to the tracker.
|
|
57
53
|
"""
|
|
58
54
|
stack = tracker.stack
|
|
59
|
-
|
|
60
|
-
# if the top stack frame is an agent stack frame, we need to
|
|
61
|
-
# update the state to INTERRUPTED
|
|
62
|
-
if top_stack_frame := stack.top():
|
|
63
|
-
if isinstance(top_stack_frame, AgentStackFrame):
|
|
64
|
-
top_stack_frame.state = AgentState.INTERRUPTED
|
|
65
|
-
|
|
66
55
|
stack.push(ChitchatPatternFlowStackFrame())
|
|
67
56
|
return tracker.create_stack_updated_events(stack)
|
|
68
57
|
|
|
@@ -13,10 +13,6 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.commands.utils import extract_cleaned_options
|
|
15
15
|
from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
|
|
16
|
-
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
17
|
-
AgentStackFrame,
|
|
18
|
-
AgentState,
|
|
19
|
-
)
|
|
20
16
|
from rasa.shared.core.events import Event
|
|
21
17
|
from rasa.shared.core.flows import FlowsList
|
|
22
18
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -89,12 +85,6 @@ class ClarifyCommand(Command):
|
|
|
89
85
|
if flow is not None
|
|
90
86
|
]
|
|
91
87
|
|
|
92
|
-
# if the top stack frame is an agent stack frame, we need to
|
|
93
|
-
# update the state to INTERRUPTED
|
|
94
|
-
if top_stack_frame := stack.top():
|
|
95
|
-
if isinstance(top_stack_frame, AgentStackFrame):
|
|
96
|
-
top_stack_frame.state = AgentState.INTERRUPTED
|
|
97
|
-
|
|
98
88
|
stack.push(ClarifyPatternFlowStackFrame(names=names))
|
|
99
89
|
return tracker.create_stack_updated_events(stack)
|
|
100
90
|
|
|
@@ -12,10 +12,6 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
|
12
12
|
FreeFormAnswerCommand,
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.patterns.search import SearchPatternFlowStackFrame
|
|
15
|
-
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
16
|
-
AgentStackFrame,
|
|
17
|
-
AgentState,
|
|
18
|
-
)
|
|
19
15
|
from rasa.shared.core.events import Event
|
|
20
16
|
from rasa.shared.core.flows import FlowsList
|
|
21
17
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -56,13 +52,6 @@ class KnowledgeAnswerCommand(FreeFormAnswerCommand):
|
|
|
56
52
|
The events to apply to the tracker.
|
|
57
53
|
"""
|
|
58
54
|
stack = tracker.stack
|
|
59
|
-
|
|
60
|
-
# if the top stack frame is an agent stack frame, we need to
|
|
61
|
-
# update the state to INTERRUPTED
|
|
62
|
-
if top_stack_frame := stack.top():
|
|
63
|
-
if isinstance(top_stack_frame, AgentStackFrame):
|
|
64
|
-
top_stack_frame.state = AgentState.INTERRUPTED
|
|
65
|
-
|
|
66
55
|
stack.push(SearchPatternFlowStackFrame())
|
|
67
56
|
return tracker.create_stack_updated_events(stack)
|
|
68
57
|
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import Any, Dict, List, Optional
|
|
5
|
+
from typing import Any, Dict, List, Optional
|
|
6
6
|
|
|
7
7
|
import structlog
|
|
8
8
|
|
|
@@ -11,29 +11,15 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
|
11
11
|
CommandSyntaxManager,
|
|
12
12
|
CommandSyntaxVersion,
|
|
13
13
|
)
|
|
14
|
-
from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
|
|
15
|
-
from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
|
|
16
|
-
DialogueStackFrame,
|
|
17
|
-
)
|
|
18
14
|
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
19
|
-
AgentStackFrame,
|
|
20
|
-
AgentState,
|
|
21
15
|
FlowStackFrameType,
|
|
22
16
|
UserFlowStackFrame,
|
|
23
17
|
)
|
|
24
|
-
from rasa.dialogue_understanding.stack.frames.pattern_frame import PatternFlowStackFrame
|
|
25
18
|
from rasa.dialogue_understanding.stack.utils import (
|
|
26
|
-
is_continue_interrupted_flow_active,
|
|
27
19
|
top_user_flow_frame,
|
|
28
20
|
user_flows_on_the_stack,
|
|
29
21
|
)
|
|
30
|
-
from rasa.shared.core.events import
|
|
31
|
-
AgentInterrupted,
|
|
32
|
-
AgentResumed,
|
|
33
|
-
Event,
|
|
34
|
-
FlowInterrupted,
|
|
35
|
-
FlowResumed,
|
|
36
|
-
)
|
|
22
|
+
from rasa.shared.core.events import Event, FlowInterrupted
|
|
37
23
|
from rasa.shared.core.flows import FlowsList
|
|
38
24
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
39
25
|
|
|
@@ -85,7 +71,12 @@ class StartFlowCommand(Command):
|
|
|
85
71
|
original_stack = original_tracker.stack
|
|
86
72
|
applied_events: List[Event] = []
|
|
87
73
|
|
|
88
|
-
if self.flow
|
|
74
|
+
if self.flow in user_flows_on_the_stack(stack):
|
|
75
|
+
structlogger.debug(
|
|
76
|
+
"start_flow_command.skip_command.already_started_flow", command=self
|
|
77
|
+
)
|
|
78
|
+
return []
|
|
79
|
+
elif self.flow not in all_flows.flow_ids:
|
|
89
80
|
structlogger.debug(
|
|
90
81
|
"start_flow_command.skip_command.start_invalid_flow_id", command=self
|
|
91
82
|
)
|
|
@@ -96,36 +87,9 @@ class StartFlowCommand(Command):
|
|
|
96
87
|
original_user_frame.flow(all_flows) if original_user_frame else None
|
|
97
88
|
)
|
|
98
89
|
|
|
99
|
-
# if the original top flow is the same as the flow to start, the flow is
|
|
100
|
-
# already active, do nothing
|
|
101
|
-
if original_top_flow is not None and original_top_flow.id == self.flow:
|
|
102
|
-
# in case continue_interrupted is not active, skip the already active start
|
|
103
|
-
# flow command
|
|
104
|
-
if not is_continue_interrupted_flow_active(stack):
|
|
105
|
-
return []
|
|
106
|
-
|
|
107
|
-
# if the continue interrupted flow is active, and the command generator
|
|
108
|
-
# predicted a start flow command for the flow which is on top of the stack,
|
|
109
|
-
# we just need to remove the pattern_continue_interrupted frame(s) from the
|
|
110
|
-
# stack
|
|
111
|
-
stack = _remove_pattern_continue_interrupted_frames(stack)
|
|
112
|
-
return applied_events + tracker.create_stack_updated_events(stack)
|
|
113
|
-
|
|
114
|
-
# if the flow is already on the stack, resume it
|
|
115
|
-
if (
|
|
116
|
-
self.flow in user_flows_on_the_stack(stack)
|
|
117
|
-
and original_user_frame is not None
|
|
118
|
-
):
|
|
119
|
-
# if pattern_continue_interrupted is active, we need to remove it
|
|
120
|
-
# from the stack before resuming the flow
|
|
121
|
-
stack = _remove_pattern_continue_interrupted_frames(stack)
|
|
122
|
-
return self.resume_flow(tracker, stack, original_user_frame)
|
|
123
|
-
|
|
124
90
|
frame_type = FlowStackFrameType.REGULAR
|
|
125
91
|
|
|
126
92
|
if original_top_flow:
|
|
127
|
-
# if the original top flow is not the same as the flow to start,
|
|
128
|
-
# interrupt the current active flow
|
|
129
93
|
frame_type = FlowStackFrameType.INTERRUPT
|
|
130
94
|
|
|
131
95
|
if original_user_frame is not None:
|
|
@@ -135,24 +99,6 @@ class StartFlowCommand(Command):
|
|
|
135
99
|
)
|
|
136
100
|
)
|
|
137
101
|
|
|
138
|
-
# If there is an active agent frame, interrupt it
|
|
139
|
-
active_agent_stack_frame = stack.find_active_agent_frame()
|
|
140
|
-
if active_agent_stack_frame:
|
|
141
|
-
structlogger.debug(
|
|
142
|
-
"start_flow_command.interrupt_agent",
|
|
143
|
-
command=self,
|
|
144
|
-
agent_id=active_agent_stack_frame.agent_id,
|
|
145
|
-
frame_id=active_agent_stack_frame.frame_id,
|
|
146
|
-
flow_id=active_agent_stack_frame.flow_id,
|
|
147
|
-
)
|
|
148
|
-
active_agent_stack_frame.state = AgentState.INTERRUPTED
|
|
149
|
-
applied_events.append(
|
|
150
|
-
AgentInterrupted(
|
|
151
|
-
active_agent_stack_frame.agent_id,
|
|
152
|
-
active_agent_stack_frame.flow_id,
|
|
153
|
-
)
|
|
154
|
-
)
|
|
155
|
-
|
|
156
102
|
structlogger.debug("start_flow_command.start_flow", command=self)
|
|
157
103
|
stack.push(UserFlowStackFrame(flow_id=self.flow, frame_type=frame_type))
|
|
158
104
|
return applied_events + tracker.create_stack_updated_events(stack)
|
|
@@ -198,105 +144,3 @@ class StartFlowCommand(Command):
|
|
|
198
144
|
CommandSyntaxManager.get_syntax_version(),
|
|
199
145
|
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
200
146
|
)
|
|
201
|
-
|
|
202
|
-
def resume_flow(
|
|
203
|
-
self,
|
|
204
|
-
tracker: DialogueStateTracker,
|
|
205
|
-
stack: DialogueStack,
|
|
206
|
-
original_user_frame: UserFlowStackFrame,
|
|
207
|
-
) -> List[Event]:
|
|
208
|
-
"""Resumes a flow by reordering frames."""
|
|
209
|
-
applied_events: List[Event] = []
|
|
210
|
-
|
|
211
|
-
# Resume existing flow by reordering frames
|
|
212
|
-
frames_to_resume, user_frame_to_resume = self._collect_frames_to_resume(
|
|
213
|
-
stack, self.flow
|
|
214
|
-
)
|
|
215
|
-
|
|
216
|
-
# if the flow is not on the stack, do nothing
|
|
217
|
-
# this should not happen, but just in case
|
|
218
|
-
if user_frame_to_resume is None:
|
|
219
|
-
structlogger.error(
|
|
220
|
-
"start_flow_command.resume_flow.no_user_frame_to_resume",
|
|
221
|
-
command=self,
|
|
222
|
-
)
|
|
223
|
-
return []
|
|
224
|
-
|
|
225
|
-
# move the frames to the top of the stack, e.g. reorder the frames
|
|
226
|
-
# on the stack
|
|
227
|
-
stack.move_frames_to_top(frames_to_resume)
|
|
228
|
-
agent_stack_frame = next(
|
|
229
|
-
(frame for frame in frames_to_resume if isinstance(frame, AgentStackFrame)),
|
|
230
|
-
None,
|
|
231
|
-
)
|
|
232
|
-
if agent_stack_frame:
|
|
233
|
-
agent_id = agent_stack_frame.agent_id
|
|
234
|
-
applied_events.append(AgentResumed(agent_id, agent_stack_frame.flow_id))
|
|
235
|
-
|
|
236
|
-
# Create flow interruption and resumption events
|
|
237
|
-
applied_events.extend(
|
|
238
|
-
[
|
|
239
|
-
# the current active flow is interrupted
|
|
240
|
-
FlowInterrupted(
|
|
241
|
-
original_user_frame.flow_id, original_user_frame.step_id
|
|
242
|
-
),
|
|
243
|
-
# the flow, which was on the stack, is resumed
|
|
244
|
-
FlowResumed(user_frame_to_resume.flow_id, user_frame_to_resume.step_id),
|
|
245
|
-
]
|
|
246
|
-
)
|
|
247
|
-
|
|
248
|
-
return applied_events + tracker.create_stack_updated_events(stack)
|
|
249
|
-
|
|
250
|
-
def _collect_frames_to_resume(
|
|
251
|
-
self, stack: DialogueStack, target_flow_id: str
|
|
252
|
-
) -> Tuple[List[DialogueStackFrame], Optional[UserFlowStackFrame]]:
|
|
253
|
-
"""Collect frames that need to be resumed for the target flow.
|
|
254
|
-
|
|
255
|
-
Args:
|
|
256
|
-
stack: The stack to collect frames from.
|
|
257
|
-
target_flow_id: The ID of the flow to resume.
|
|
258
|
-
|
|
259
|
-
Returns:
|
|
260
|
-
A tuple containing (frames_to_resume, frame_to_resume).
|
|
261
|
-
"""
|
|
262
|
-
frames_to_resume: List[DialogueStackFrame] = []
|
|
263
|
-
frame_found = False
|
|
264
|
-
frame_to_resume = None
|
|
265
|
-
|
|
266
|
-
for frame in stack.frames:
|
|
267
|
-
if isinstance(frame, UserFlowStackFrame) and (
|
|
268
|
-
frame.frame_type == FlowStackFrameType.REGULAR
|
|
269
|
-
or frame.frame_type == FlowStackFrameType.INTERRUPT
|
|
270
|
-
):
|
|
271
|
-
if frame.flow_id == target_flow_id:
|
|
272
|
-
frames_to_resume.append(frame)
|
|
273
|
-
frame_to_resume = frame
|
|
274
|
-
frame_found = True
|
|
275
|
-
continue
|
|
276
|
-
elif frame_found:
|
|
277
|
-
break
|
|
278
|
-
|
|
279
|
-
if frame_found:
|
|
280
|
-
frames_to_resume.append(frame)
|
|
281
|
-
|
|
282
|
-
return list(frames_to_resume), frame_to_resume
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
def _remove_pattern_continue_interrupted_frames(stack: DialogueStack) -> DialogueStack:
|
|
286
|
-
"""Remove pattern_continue_interrupted frames from the stack."""
|
|
287
|
-
if not is_continue_interrupted_flow_active(stack):
|
|
288
|
-
return stack
|
|
289
|
-
|
|
290
|
-
# remove pattern_continue_interrupted from the stack
|
|
291
|
-
top_frame = stack.top()
|
|
292
|
-
while isinstance(top_frame, PatternFlowStackFrame):
|
|
293
|
-
# If the top frame is a pattern frame, we need to remove it
|
|
294
|
-
# before continuing with the active user flow frame.
|
|
295
|
-
# This prevents the pattern frame
|
|
296
|
-
# from being left on the stack when the flow is started
|
|
297
|
-
# which would prevent pattern_completed to be triggered
|
|
298
|
-
# once the user flow is completed.
|
|
299
|
-
stack.pop()
|
|
300
|
-
top_frame = stack.top()
|
|
301
|
-
|
|
302
|
-
return stack
|
|
@@ -6,10 +6,7 @@ from rasa.dialogue_understanding.patterns.validate_slot import (
|
|
|
6
6
|
ValidateSlotPatternFlowStackFrame,
|
|
7
7
|
)
|
|
8
8
|
from rasa.shared.constants import ACTION_ASK_PREFIX, UTTER_ASK_PREFIX
|
|
9
|
-
from rasa.shared.core.events import
|
|
10
|
-
Event,
|
|
11
|
-
SlotSet,
|
|
12
|
-
)
|
|
9
|
+
from rasa.shared.core.events import Event, SlotSet
|
|
13
10
|
from rasa.shared.core.flows import FlowsList
|
|
14
11
|
from rasa.shared.core.slots import Slot
|
|
15
12
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -106,8 +103,7 @@ def create_validate_frames_from_slot_set_events(
|
|
|
106
103
|
Args:
|
|
107
104
|
tracker: The dialogue state tracker.
|
|
108
105
|
events: List of events to process.
|
|
109
|
-
|
|
110
|
-
should_break: whether to break after the first non-SlotSet event.
|
|
106
|
+
should_break: whether or not to break after the first non-SlotSet event.
|
|
111
107
|
if True, break out of the event loop as soon as the first non-SlotSet
|
|
112
108
|
event is encountered.
|
|
113
109
|
if False, continue processing the events until the end.
|
|
@@ -9,11 +9,9 @@ from rasa.dialogue_understanding.commands import (
|
|
|
9
9
|
ChitChatAnswerCommand,
|
|
10
10
|
ClarifyCommand,
|
|
11
11
|
Command,
|
|
12
|
-
ContinueAgentCommand,
|
|
13
12
|
HumanHandoffCommand,
|
|
14
13
|
KnowledgeAnswerCommand,
|
|
15
14
|
RepeatBotMessagesCommand,
|
|
16
|
-
RestartAgentCommand,
|
|
17
15
|
SetSlotCommand,
|
|
18
16
|
SkipQuestionCommand,
|
|
19
17
|
StartFlowCommand,
|
|
@@ -36,8 +34,6 @@ DEFAULT_COMMANDS = [
|
|
|
36
34
|
HumanHandoffCommand,
|
|
37
35
|
ClarifyCommand,
|
|
38
36
|
RepeatBotMessagesCommand,
|
|
39
|
-
ContinueAgentCommand,
|
|
40
|
-
RestartAgentCommand,
|
|
41
37
|
]
|
|
42
38
|
|
|
43
39
|
|
|
@@ -219,11 +219,6 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
|
|
|
219
219
|
if self.vector_store is not None:
|
|
220
220
|
with self._model_storage.write_to(self._resource) as model_path:
|
|
221
221
|
self.vector_store.save_local(model_path)
|
|
222
|
-
else:
|
|
223
|
-
structlogger.warning(
|
|
224
|
-
"flow_retrieval.persist_vector_store.not_initialized",
|
|
225
|
-
event_info="Vector store is None, not persisted.",
|
|
226
|
-
)
|
|
227
222
|
|
|
228
223
|
def _persist_config(self) -> None:
|
|
229
224
|
with self._model_storage.write_to(self._resource) as path:
|
|
@@ -249,6 +244,16 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
|
|
|
249
244
|
)
|
|
250
245
|
|
|
251
246
|
flows_to_embedd = flows.exclude_link_only_flows()
|
|
247
|
+
|
|
248
|
+
if not flows_to_embedd:
|
|
249
|
+
structlogger.debug(
|
|
250
|
+
"flow_retrieval.populate_vector_store.no_flows_to_embed",
|
|
251
|
+
event_info=(
|
|
252
|
+
"No flows to embed in the vector store, skipping population."
|
|
253
|
+
),
|
|
254
|
+
)
|
|
255
|
+
return
|
|
256
|
+
|
|
252
257
|
embeddings = self._create_embedder(self.config)
|
|
253
258
|
documents = self._generate_flow_documents(flows_to_embedd, domain)
|
|
254
259
|
try:
|
|
@@ -420,10 +425,6 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
|
|
|
420
425
|
The top k documents with similarity scores.
|
|
421
426
|
"""
|
|
422
427
|
if self.vector_store is None:
|
|
423
|
-
structlogger.error(
|
|
424
|
-
"flow_retrieval.query_vector_store.vector_store_not_configured",
|
|
425
|
-
event_info="Vector store is not configured",
|
|
426
|
-
)
|
|
427
428
|
return []
|
|
428
429
|
try:
|
|
429
430
|
documents_with_scores = (
|