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
|
@@ -7,7 +7,6 @@ from jinja2 import Environment, Template, select_autoescape
|
|
|
7
7
|
|
|
8
8
|
import rasa.dialogue_understanding.generator.utils
|
|
9
9
|
import rasa.shared.utils.io
|
|
10
|
-
from rasa.core.available_agents import AvailableAgents
|
|
11
10
|
from rasa.dialogue_understanding.commands import (
|
|
12
11
|
Command,
|
|
13
12
|
SetSlotCommand,
|
|
@@ -32,7 +31,6 @@ from rasa.engine.storage.resource import Resource
|
|
|
32
31
|
from rasa.engine.storage.storage import ModelStorage
|
|
33
32
|
from rasa.shared.core.constants import SetSlotExtractor
|
|
34
33
|
from rasa.shared.core.domain import Domain
|
|
35
|
-
from rasa.shared.core.events import AgentStarted
|
|
36
34
|
from rasa.shared.core.flows import Flow, FlowsList, FlowStep
|
|
37
35
|
from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
|
|
38
36
|
from rasa.shared.core.slot_mappings import SlotFillingManager
|
|
@@ -227,7 +225,8 @@ class LLMBasedCommandGenerator(
|
|
|
227
225
|
|
|
228
226
|
@lru_cache
|
|
229
227
|
def compile_template(self, template: str) -> Template:
|
|
230
|
-
"""
|
|
228
|
+
"""
|
|
229
|
+
Compile the prompt template and register custom filters.
|
|
231
230
|
|
|
232
231
|
Compiling the template is an expensive operation,
|
|
233
232
|
so we cache the result.
|
|
@@ -362,24 +361,20 @@ class LLMBasedCommandGenerator(
|
|
|
362
361
|
)
|
|
363
362
|
|
|
364
363
|
def prepare_flows_for_template(
|
|
365
|
-
self,
|
|
366
|
-
flows: FlowsList,
|
|
367
|
-
tracker: DialogueStateTracker,
|
|
368
|
-
add_agent_info: bool = False,
|
|
364
|
+
self, flows: FlowsList, tracker: DialogueStateTracker
|
|
369
365
|
) -> List[Dict[str, Any]]:
|
|
370
366
|
"""Format data on available flows for insertion into the prompt template.
|
|
371
367
|
|
|
372
368
|
Args:
|
|
373
369
|
flows: The flows available to the user.
|
|
374
370
|
tracker: The tracker containing the current state of the conversation.
|
|
375
|
-
add_agent_info: Whether to add agent info to flows or not.
|
|
376
371
|
|
|
377
372
|
Returns:
|
|
378
373
|
The inputs for the prompt template.
|
|
379
374
|
"""
|
|
380
|
-
result
|
|
375
|
+
result = []
|
|
381
376
|
for flow in flows.user_flows:
|
|
382
|
-
slots_with_info
|
|
377
|
+
slots_with_info = [
|
|
383
378
|
{
|
|
384
379
|
"name": q.collect,
|
|
385
380
|
"description": q.description,
|
|
@@ -388,46 +383,13 @@ class LLMBasedCommandGenerator(
|
|
|
388
383
|
for q in flow.get_collect_steps()
|
|
389
384
|
if self.is_extractable(q, tracker)
|
|
390
385
|
]
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
if isinstance(event, AgentStarted) and event.flow_id == flow.id
|
|
399
|
-
]
|
|
400
|
-
available_agents = [
|
|
401
|
-
AvailableAgents.get_agent_config(event.agent_id)
|
|
402
|
-
for event in agent_events
|
|
403
|
-
]
|
|
404
|
-
if available_agents:
|
|
405
|
-
agent_info = [
|
|
406
|
-
{
|
|
407
|
-
"name": available_agent.agent.name,
|
|
408
|
-
"description": available_agent.agent.description,
|
|
409
|
-
}
|
|
410
|
-
for available_agent in available_agents
|
|
411
|
-
if available_agent is not None
|
|
412
|
-
]
|
|
413
|
-
|
|
414
|
-
if agent_info:
|
|
415
|
-
result.append(
|
|
416
|
-
{
|
|
417
|
-
"name": flow.id,
|
|
418
|
-
"description": flow.description,
|
|
419
|
-
"slots": slots_with_info,
|
|
420
|
-
"agent_info": agent_info,
|
|
421
|
-
}
|
|
422
|
-
)
|
|
423
|
-
else:
|
|
424
|
-
result.append(
|
|
425
|
-
{
|
|
426
|
-
"name": flow.id,
|
|
427
|
-
"description": flow.description,
|
|
428
|
-
"slots": slots_with_info,
|
|
429
|
-
}
|
|
430
|
-
)
|
|
386
|
+
result.append(
|
|
387
|
+
{
|
|
388
|
+
"name": flow.id,
|
|
389
|
+
"description": flow.description,
|
|
390
|
+
"slots": slots_with_info,
|
|
391
|
+
}
|
|
392
|
+
)
|
|
431
393
|
return result
|
|
432
394
|
|
|
433
395
|
@staticmethod
|
|
@@ -45,30 +45,29 @@ DEFAULT_LLM_CONFIG = {
|
|
|
45
45
|
TIMEOUT_CONFIG_KEY: 7,
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
# TODO: only load the agent prompt template in cases where agents are actually used
|
|
49
48
|
MODEL_PROMPT_MAPPER = {
|
|
50
49
|
f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
|
|
51
|
-
"
|
|
50
|
+
"command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
|
|
52
51
|
),
|
|
53
52
|
f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
|
|
54
|
-
"
|
|
53
|
+
"command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
|
|
55
54
|
),
|
|
56
55
|
f"{AWS_BEDROCK_PROVIDER}/anthropic.{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
|
|
57
|
-
"
|
|
56
|
+
"command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
|
|
58
57
|
),
|
|
59
58
|
f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
|
|
60
|
-
"
|
|
59
|
+
"command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
|
|
61
60
|
),
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
# When model is not configured, then we use the default prompt template
|
|
65
64
|
DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
|
|
66
|
-
"
|
|
65
|
+
"command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
|
|
67
66
|
)
|
|
68
67
|
# When the configured model is not found in the model prompt mapper, then we use the
|
|
69
68
|
# fallback prompt template
|
|
70
69
|
FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
|
|
71
|
-
"
|
|
70
|
+
"command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
|
|
72
71
|
)
|
|
73
72
|
|
|
74
73
|
|
|
@@ -44,26 +44,25 @@ DEFAULT_LLM_CONFIG = {
|
|
|
44
44
|
TIMEOUT_CONFIG_KEY: 7,
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
# TODO: only load the agent prompt template in cases where agents are actually used
|
|
48
47
|
DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
|
|
49
|
-
"
|
|
48
|
+
"command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
|
|
50
49
|
)
|
|
51
50
|
FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
|
|
52
|
-
"
|
|
51
|
+
"command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
|
|
53
52
|
)
|
|
54
53
|
MODEL_PROMPT_MAPPER = {
|
|
55
54
|
f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
|
|
56
|
-
"
|
|
55
|
+
"command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
|
|
57
56
|
),
|
|
58
57
|
f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
|
|
59
|
-
"
|
|
58
|
+
"command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
|
|
60
59
|
),
|
|
61
60
|
f"{AWS_BEDROCK_PROVIDER}/anthropic."
|
|
62
61
|
f"{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
|
|
63
|
-
"
|
|
62
|
+
"command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
|
|
64
63
|
),
|
|
65
64
|
f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
|
|
66
|
-
"
|
|
65
|
+
"command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
|
|
67
66
|
),
|
|
68
67
|
}
|
|
69
68
|
|
rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py
CHANGED
|
@@ -5,7 +5,6 @@ from typing import Any, Dict, List, Literal, Optional, Text
|
|
|
5
5
|
import structlog
|
|
6
6
|
|
|
7
7
|
import rasa.shared.utils.io
|
|
8
|
-
from rasa.core.available_agents import AvailableAgents
|
|
9
8
|
from rasa.dialogue_understanding.commands import (
|
|
10
9
|
CannotHandleCommand,
|
|
11
10
|
Command,
|
|
@@ -45,7 +44,6 @@ from rasa.shared.constants import (
|
|
|
45
44
|
PROMPT_TEMPLATE_CONFIG_KEY,
|
|
46
45
|
ROUTE_TO_CALM_SLOT,
|
|
47
46
|
)
|
|
48
|
-
from rasa.shared.core.events import AgentCompleted
|
|
49
47
|
from rasa.shared.core.flows import FlowsList
|
|
50
48
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
51
49
|
from rasa.shared.exceptions import ProviderClientAPIException
|
|
@@ -398,15 +396,13 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
|
|
|
398
396
|
current_slot_allowed_values = allowed_values_for_slot(
|
|
399
397
|
tracker.slots.get(current_slot)
|
|
400
398
|
)
|
|
401
|
-
current_conversation = tracker_as_readable_transcript(
|
|
402
|
-
tracker, highlight_agent_turns=True
|
|
403
|
-
)
|
|
399
|
+
current_conversation = tracker_as_readable_transcript(tracker)
|
|
404
400
|
latest_user_message = sanitize_message_for_prompt(message.get(TEXT))
|
|
405
401
|
current_conversation += f"\nUSER: {latest_user_message}"
|
|
406
402
|
|
|
407
403
|
inputs = {
|
|
408
404
|
"available_flows": self.prepare_flows_for_template(
|
|
409
|
-
startable_flows, tracker
|
|
405
|
+
startable_flows, tracker
|
|
410
406
|
),
|
|
411
407
|
"current_conversation": current_conversation,
|
|
412
408
|
"flow_slots": flow_slots,
|
|
@@ -416,10 +412,6 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
|
|
|
416
412
|
"current_slot_type": current_slot_type,
|
|
417
413
|
"current_slot_allowed_values": current_slot_allowed_values,
|
|
418
414
|
"user_message": latest_user_message,
|
|
419
|
-
"active_agent": self._get_active_agent(tracker, top_flow.id)
|
|
420
|
-
if top_flow
|
|
421
|
-
else None,
|
|
422
|
-
"completed_agents": self._get_completed_agents(tracker),
|
|
423
415
|
}
|
|
424
416
|
|
|
425
417
|
return self.compile_template(self.prompt_template).render(**inputs)
|
|
@@ -467,34 +459,3 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
|
|
|
467
459
|
) -> Optional[str]:
|
|
468
460
|
"""Get the prompt template from the config or the default prompt template."""
|
|
469
461
|
pass
|
|
470
|
-
|
|
471
|
-
def _get_active_agent(
|
|
472
|
-
self, tracker: DialogueStateTracker, active_flow_id: str
|
|
473
|
-
) -> Optional[Dict[str, Any]]:
|
|
474
|
-
agent_frame = tracker.stack.find_active_agent_stack_frame_for_flow(
|
|
475
|
-
active_flow_id
|
|
476
|
-
)
|
|
477
|
-
if agent_frame:
|
|
478
|
-
return self._get_agent_info(agent_frame.agent_id)
|
|
479
|
-
return None
|
|
480
|
-
|
|
481
|
-
def _get_completed_agents(
|
|
482
|
-
self, tracker: DialogueStateTracker
|
|
483
|
-
) -> List[Dict[str, Any]]:
|
|
484
|
-
completed_agents: List[Dict[str, Any]] = []
|
|
485
|
-
for event in reversed(tracker.events):
|
|
486
|
-
if isinstance(event, AgentCompleted):
|
|
487
|
-
agent_info = self._get_agent_info(event.agent_id)
|
|
488
|
-
if agent_info:
|
|
489
|
-
completed_agents.append(agent_info)
|
|
490
|
-
return completed_agents
|
|
491
|
-
|
|
492
|
-
def _get_agent_info(self, agent_id: str) -> Optional[Dict[str, Any]]:
|
|
493
|
-
agent_config = AvailableAgents.get_agent_config(agent_id)
|
|
494
|
-
if agent_config is None:
|
|
495
|
-
return None
|
|
496
|
-
|
|
497
|
-
return {
|
|
498
|
-
"name": agent_config.agent.name,
|
|
499
|
-
"description": agent_config.agent.description,
|
|
500
|
-
}
|
|
@@ -1,31 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any, Dict
|
|
4
|
+
from typing import Any, Dict
|
|
5
5
|
|
|
6
|
-
from rasa.core.actions.action import Action
|
|
7
|
-
from rasa.core.channels import OutputChannel
|
|
8
|
-
from rasa.core.nlg import NaturalLanguageGenerator
|
|
9
6
|
from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
|
|
10
|
-
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
11
7
|
from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
|
|
12
|
-
from rasa.shared.core.constants import (
|
|
13
|
-
ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE,
|
|
14
|
-
ACTION_CANCEL_INTERRUPTED_FLOW,
|
|
15
|
-
ACTION_CONTINUE_INTERRUPTED_FLOW,
|
|
16
|
-
ACTION_SET_INTERRUPTED_FLOWS,
|
|
17
|
-
)
|
|
18
|
-
from rasa.shared.core.domain import Domain
|
|
19
|
-
from rasa.shared.core.events import Event, SlotSet
|
|
20
|
-
from rasa.shared.core.trackers import DialogueStateTracker
|
|
21
8
|
|
|
22
9
|
FLOW_PATTERN_CONTINUE_INTERRUPTED = (
|
|
23
10
|
RASA_DEFAULT_FLOW_PATTERN_PREFIX + "continue_interrupted"
|
|
24
11
|
)
|
|
25
|
-
INTERRUPTED_FLOWS_SLOT = "interrupted_flows"
|
|
26
|
-
INTERRUPTED_FLOW_TO_CONTINUE_SLOT = "interrupted_flow_to_continue"
|
|
27
|
-
MULTIPLE_FLOWS_INTERRUPTED_SLOT = "multiple_flows_interrupted"
|
|
28
|
-
CONFIRMATION_CONTINUE_INTERRUPTED_FLOW_SLOT = "confirmation_continue_interrupted_flow"
|
|
29
12
|
|
|
30
13
|
|
|
31
14
|
@dataclass
|
|
@@ -66,148 +49,3 @@ class ContinueInterruptedPatternFlowStackFrame(PatternFlowStackFrame):
|
|
|
66
49
|
and self.step_id == other.step_id
|
|
67
50
|
and self.previous_flow_name == other.previous_flow_name
|
|
68
51
|
)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
class ActionSetInterruptedFlows(Action):
|
|
72
|
-
def name(self) -> str:
|
|
73
|
-
return ACTION_SET_INTERRUPTED_FLOWS
|
|
74
|
-
|
|
75
|
-
async def run(
|
|
76
|
-
self,
|
|
77
|
-
output_channel: OutputChannel,
|
|
78
|
-
nlg: NaturalLanguageGenerator,
|
|
79
|
-
tracker: DialogueStateTracker,
|
|
80
|
-
domain: Domain,
|
|
81
|
-
metadata: Optional[Dict[Text, Any]] = None,
|
|
82
|
-
) -> list[Event]:
|
|
83
|
-
interrupted_flows_set = set()
|
|
84
|
-
interrupted_user_flow_stack_frames = tracker.stack.get_all_user_flow_frames()
|
|
85
|
-
|
|
86
|
-
for frame in interrupted_user_flow_stack_frames:
|
|
87
|
-
interrupted_flows_set.add(frame.flow_id)
|
|
88
|
-
|
|
89
|
-
interrupted_flows = list(interrupted_flows_set)
|
|
90
|
-
multiple_flows_interrupted = len(interrupted_flows) > 1
|
|
91
|
-
|
|
92
|
-
return [
|
|
93
|
-
SlotSet(INTERRUPTED_FLOWS_SLOT, interrupted_flows),
|
|
94
|
-
SlotSet(MULTIPLE_FLOWS_INTERRUPTED_SLOT, multiple_flows_interrupted),
|
|
95
|
-
]
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
class ActionAskInterruptedFlowToContinue(Action):
|
|
99
|
-
def name(self) -> str:
|
|
100
|
-
return ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE
|
|
101
|
-
|
|
102
|
-
async def run(
|
|
103
|
-
self,
|
|
104
|
-
output_channel: OutputChannel,
|
|
105
|
-
nlg: NaturalLanguageGenerator,
|
|
106
|
-
tracker: DialogueStateTracker,
|
|
107
|
-
domain: Domain,
|
|
108
|
-
metadata: Optional[Dict[Text, Any]] = None,
|
|
109
|
-
) -> List[Event]:
|
|
110
|
-
interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
|
|
111
|
-
|
|
112
|
-
buttons = [
|
|
113
|
-
{
|
|
114
|
-
"title": flow_id,
|
|
115
|
-
"payload": f'/SetSlots{{"{INTERRUPTED_FLOW_TO_CONTINUE_SLOT}": '
|
|
116
|
-
f'"{flow_id}"}}',
|
|
117
|
-
}
|
|
118
|
-
for flow_id in interrupted_flows or []
|
|
119
|
-
]
|
|
120
|
-
buttons.append(
|
|
121
|
-
{
|
|
122
|
-
"title": "None of them",
|
|
123
|
-
"payload": f'/SetSlots{{"{INTERRUPTED_FLOW_TO_CONTINUE_SLOT}": '
|
|
124
|
-
f'"none"}}',
|
|
125
|
-
}
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
await output_channel.send_text_with_buttons(
|
|
129
|
-
tracker.sender_id,
|
|
130
|
-
"You previously started several other tasks. "
|
|
131
|
-
"Would you like to resume any of them?",
|
|
132
|
-
buttons=buttons,
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
return []
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
class ActionContinueInterruptedFlow(Action):
|
|
139
|
-
def name(self) -> str:
|
|
140
|
-
return ACTION_CONTINUE_INTERRUPTED_FLOW
|
|
141
|
-
|
|
142
|
-
async def run(
|
|
143
|
-
self,
|
|
144
|
-
output_channel: OutputChannel,
|
|
145
|
-
nlg: NaturalLanguageGenerator,
|
|
146
|
-
tracker: DialogueStateTracker,
|
|
147
|
-
domain: Domain,
|
|
148
|
-
metadata: Optional[Dict[Text, Any]] = None,
|
|
149
|
-
) -> List[Event]:
|
|
150
|
-
from rasa.dialogue_understanding.commands import StartFlowCommand
|
|
151
|
-
|
|
152
|
-
# get all necessary slot values
|
|
153
|
-
multiple = tracker.get_slot(MULTIPLE_FLOWS_INTERRUPTED_SLOT)
|
|
154
|
-
selected_flow = tracker.get_slot(INTERRUPTED_FLOW_TO_CONTINUE_SLOT)
|
|
155
|
-
interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
|
|
156
|
-
|
|
157
|
-
original_user_frame = top_user_flow_frame(tracker.stack)
|
|
158
|
-
|
|
159
|
-
# case of multiple interrupted flows, where the user selected a flow to continue
|
|
160
|
-
if multiple:
|
|
161
|
-
flow_id = selected_flow if selected_flow else None
|
|
162
|
-
# case of single interrupted flow, so there is only one flow to continue
|
|
163
|
-
else:
|
|
164
|
-
flow_id = interrupted_flows[0] if interrupted_flows else None
|
|
165
|
-
|
|
166
|
-
event_list = []
|
|
167
|
-
if flow_id:
|
|
168
|
-
# TODO: refactor to avoid creating a StartFlowCommand first
|
|
169
|
-
# resume the flow with the provided flow id
|
|
170
|
-
start_flow_command = StartFlowCommand(flow_id)
|
|
171
|
-
event_list = start_flow_command.resume_flow(
|
|
172
|
-
tracker, tracker.stack, original_user_frame
|
|
173
|
-
)
|
|
174
|
-
else:
|
|
175
|
-
await output_channel.send_text_message(
|
|
176
|
-
tracker.sender_id,
|
|
177
|
-
"You haven't selected a valid task to resume. "
|
|
178
|
-
"Please specify the task you would like to continue.",
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
return event_list
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
class ActionCancelInterruptedFlow(Action):
|
|
185
|
-
def name(self) -> str:
|
|
186
|
-
return ACTION_CANCEL_INTERRUPTED_FLOW
|
|
187
|
-
|
|
188
|
-
async def run(
|
|
189
|
-
self,
|
|
190
|
-
output_channel: OutputChannel,
|
|
191
|
-
nlg: NaturalLanguageGenerator,
|
|
192
|
-
tracker: DialogueStateTracker,
|
|
193
|
-
domain: Domain,
|
|
194
|
-
metadata: Optional[Dict[Text, Any]] = None,
|
|
195
|
-
) -> List[Event]:
|
|
196
|
-
from rasa.dialogue_understanding.commands import CancelFlowCommand
|
|
197
|
-
|
|
198
|
-
interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
|
|
199
|
-
|
|
200
|
-
event_list = []
|
|
201
|
-
for flow_id in interrupted_flows:
|
|
202
|
-
# TODO: refactor to avoid creating a CancelFlowCommand first
|
|
203
|
-
cancel_flow_command = CancelFlowCommand()
|
|
204
|
-
event_list.extend(
|
|
205
|
-
cancel_flow_command.cancel_flow(tracker, tracker.stack, flow_id)
|
|
206
|
-
)
|
|
207
|
-
|
|
208
|
-
return event_list + [
|
|
209
|
-
SlotSet(INTERRUPTED_FLOWS_SLOT, None),
|
|
210
|
-
SlotSet(INTERRUPTED_FLOW_TO_CONTINUE_SLOT, None),
|
|
211
|
-
SlotSet(MULTIPLE_FLOWS_INTERRUPTED_SLOT, None),
|
|
212
|
-
SlotSet(CONFIRMATION_CONTINUE_INTERRUPTED_FLOW_SLOT, None),
|
|
213
|
-
]
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
version: "3.1"
|
|
2
2
|
responses:
|
|
3
3
|
|
|
4
|
-
utter_ask_continue_interrupted_flow:
|
|
5
|
-
- text: "Would you like to continue with {{ context.previous_flow_name }}?"
|
|
6
|
-
metadata:
|
|
7
|
-
rephrase: True
|
|
8
|
-
template: jinja
|
|
9
|
-
buttons:
|
|
10
|
-
- title: "Yes"
|
|
11
|
-
payload: "/SetSlots(confirmation_continue_interrupted_flow=true)"
|
|
12
|
-
- title: "No"
|
|
13
|
-
payload: "/SetSlots(confirmation_continue_interrupted_flow=false)"
|
|
14
|
-
|
|
15
4
|
utter_ask_rephrase:
|
|
16
5
|
- text: I’m sorry I am unable to understand you, could you please rephrase?
|
|
17
6
|
|
|
@@ -64,6 +53,12 @@ responses:
|
|
|
64
53
|
rephrase: True
|
|
65
54
|
template: jinja
|
|
66
55
|
|
|
56
|
+
utter_flow_continue_interrupted:
|
|
57
|
+
- text: "Let's continue with {{ context.previous_flow_name }}."
|
|
58
|
+
metadata:
|
|
59
|
+
rephrase: True
|
|
60
|
+
template: jinja
|
|
61
|
+
|
|
67
62
|
utter_free_chitchat_response:
|
|
68
63
|
- text: "Sorry, I'm not able to answer that right now."
|
|
69
64
|
metadata:
|
|
@@ -86,7 +81,7 @@ responses:
|
|
|
86
81
|
rephrase: True
|
|
87
82
|
|
|
88
83
|
utter_inform_hangup:
|
|
89
|
-
- text:
|
|
84
|
+
- text: I haven’t heard from you, so I’ll end our conversation shortly.
|
|
90
85
|
metadata:
|
|
91
86
|
rephrase: True
|
|
92
87
|
|
|
@@ -129,19 +124,6 @@ slots:
|
|
|
129
124
|
type: float
|
|
130
125
|
initial_value: 0.0
|
|
131
126
|
max_value: 1000000
|
|
132
|
-
interrupted_flows:
|
|
133
|
-
type: list
|
|
134
|
-
multiple_flows_interrupted:
|
|
135
|
-
type: bool
|
|
136
|
-
initial_value: false
|
|
137
|
-
confirmation_continue_interrupted_flow:
|
|
138
|
-
type: bool
|
|
139
|
-
mappings:
|
|
140
|
-
- type: from_llm
|
|
141
|
-
interrupted_flow_to_continue:
|
|
142
|
-
type: text
|
|
143
|
-
mappings:
|
|
144
|
-
- type: from_llm
|
|
145
127
|
|
|
146
128
|
flows:
|
|
147
129
|
pattern_cancel_flow:
|
|
@@ -228,33 +210,7 @@ flows:
|
|
|
228
210
|
description: Conversation repair flow for managing when users switch between different flows
|
|
229
211
|
name: pattern continue interrupted
|
|
230
212
|
steps:
|
|
231
|
-
- action:
|
|
232
|
-
- noop: true
|
|
233
|
-
next:
|
|
234
|
-
- if: slots.multiple_flows_interrupted
|
|
235
|
-
then:
|
|
236
|
-
- collect: interrupted_flow_to_continue
|
|
237
|
-
description: "Fill this slot with the name of the flow the user wants to continue. If the user does not want to continue any of the interrupted flows, fill this slot with 'none'."
|
|
238
|
-
next:
|
|
239
|
-
- if: slots.interrupted_flow_to_continue != "none"
|
|
240
|
-
then:
|
|
241
|
-
- action: action_continue_interrupted_flow
|
|
242
|
-
next: END
|
|
243
|
-
- else:
|
|
244
|
-
- action: action_cancel_interrupted_flow
|
|
245
|
-
next: END
|
|
246
|
-
- else:
|
|
247
|
-
- collect: confirmation_continue_interrupted_flow
|
|
248
|
-
description: "If the user wants to continue the interrupted flow, fill this slot with true. If the user does not want to continue the interrupted flow, fill this slot with false."
|
|
249
|
-
utter: utter_ask_continue_interrupted_flow
|
|
250
|
-
next:
|
|
251
|
-
- if: slots.confirmation_continue_interrupted_flow
|
|
252
|
-
then:
|
|
253
|
-
- action: action_continue_interrupted_flow
|
|
254
|
-
next: END
|
|
255
|
-
- else:
|
|
256
|
-
- action: action_cancel_interrupted_flow
|
|
257
|
-
next: END
|
|
213
|
+
- action: utter_flow_continue_interrupted
|
|
258
214
|
|
|
259
215
|
pattern_correction:
|
|
260
216
|
description: Conversation repair flow for managing user input changes or error corrections
|
|
@@ -37,7 +37,6 @@ from rasa.dialogue_understanding.stack.frames import (
|
|
|
37
37
|
BaseFlowStackFrame,
|
|
38
38
|
)
|
|
39
39
|
from rasa.dialogue_understanding.stack.utils import (
|
|
40
|
-
is_continue_interrupted_flow_active,
|
|
41
40
|
top_flow_frame,
|
|
42
41
|
top_user_flow_frame,
|
|
43
42
|
)
|
|
@@ -429,9 +428,22 @@ def clean_up_commands(
|
|
|
429
428
|
)
|
|
430
429
|
|
|
431
430
|
elif isinstance(command, StartFlowCommand):
|
|
432
|
-
|
|
433
|
-
|
|
431
|
+
top_user_frame = top_user_flow_frame(
|
|
432
|
+
tracker.stack, ignore_call_and_link_frames=False
|
|
434
433
|
)
|
|
434
|
+
top_flow_id = top_user_frame.flow_id if top_user_frame else ""
|
|
435
|
+
|
|
436
|
+
if top_flow_id == command.flow:
|
|
437
|
+
# drop a start flow command if the starting flow is equal
|
|
438
|
+
# to the currently active flow
|
|
439
|
+
structlogger.debug(
|
|
440
|
+
"command_processor.clean_up_commands."
|
|
441
|
+
"skip_command_flow_already_active",
|
|
442
|
+
command=command,
|
|
443
|
+
)
|
|
444
|
+
continue
|
|
445
|
+
|
|
446
|
+
clean_commands.append(command)
|
|
435
447
|
|
|
436
448
|
# handle chitchat command differently from other free-form answer commands
|
|
437
449
|
elif isinstance(command, ChitChatAnswerCommand):
|
|
@@ -517,34 +529,6 @@ def ensure_max_number_of_command_type(
|
|
|
517
529
|
return filtered
|
|
518
530
|
|
|
519
531
|
|
|
520
|
-
def clean_up_start_flow_command(
|
|
521
|
-
clean_commands: List[Command],
|
|
522
|
-
tracker: DialogueStateTracker,
|
|
523
|
-
command: StartFlowCommand,
|
|
524
|
-
) -> List[Command]:
|
|
525
|
-
"""Clean up a start flow command."""
|
|
526
|
-
continue_interrupted_flow_active = is_continue_interrupted_flow_active(
|
|
527
|
-
tracker.stack
|
|
528
|
-
)
|
|
529
|
-
|
|
530
|
-
top_user_frame = top_user_flow_frame(
|
|
531
|
-
tracker.stack, ignore_call_and_link_frames=False
|
|
532
|
-
)
|
|
533
|
-
top_flow_id = top_user_frame.flow_id if top_user_frame else ""
|
|
534
|
-
|
|
535
|
-
if top_flow_id == command.flow and not continue_interrupted_flow_active:
|
|
536
|
-
# drop a start flow command if the starting flow is equal
|
|
537
|
-
# to the currently active flow
|
|
538
|
-
structlogger.debug(
|
|
539
|
-
"command_processor.clean_up_commands." "skip_command_flow_already_active",
|
|
540
|
-
command=command,
|
|
541
|
-
)
|
|
542
|
-
return clean_commands
|
|
543
|
-
|
|
544
|
-
clean_commands.append(command)
|
|
545
|
-
return clean_commands
|
|
546
|
-
|
|
547
|
-
|
|
548
532
|
def clean_up_clarify_command(
|
|
549
533
|
commands_so_far: List[Command],
|
|
550
534
|
all_commands: List[Command],
|