rasa-pro 3.14.0.dev4__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 +10 -56
- 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 +4 -4
- rasa/core/channels/hangouts.py +2 -2
- rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-18042c22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.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-df71a04c.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.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-1c669cad.js → createText-2e5e7dd3-31422447.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-518a90db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-e048c2be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.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-e1dc03e5.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-14702d8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.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-faa9999b.js → infoDiagram-f8f76790-64154b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-5a3b2123.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-2272a8c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-35bcf273.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-b8a74083.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-f1d54e34.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-980de489.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-3c03abde.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.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 +4 -6
- 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 +49 -29
- rasa/core/channels/voice_stream/genesys.py +1 -1
- 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 -456
- rasa/core/policies/intentless_policy.py +1 -1
- rasa/core/policies/unexpected_intent_policy.py +0 -1
- rasa/core/processor.py +15 -18
- rasa/core/run.py +14 -11
- rasa/core/tracker_stores/tracker_store.py +7 -3
- rasa/core/train.py +1 -1
- rasa/core/training/interactive.py +16 -16
- rasa/core/training/story_conflict.py +5 -5
- 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/llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
- 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 +2 -12
- rasa/engine/caching.py +2 -2
- rasa/engine/recipes/default_components.py +18 -10
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/graph_components/validators/default_recipe_validator.py +134 -134
- rasa/hooks.py +5 -5
- rasa/llm_fine_tuning/utils.py +2 -2
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +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/model_manager/warm_rasa_process.py +1 -1
- rasa/nlu/extractors/extractor.py +1 -2
- rasa/plugin.py +8 -8
- rasa/privacy/privacy_manager.py +2 -11
- rasa/server.py +2 -14
- 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 -327
- 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 +17 -9
- rasa/shared/core/slots.py +6 -2
- rasa/shared/core/trackers.py +2 -5
- rasa/shared/exceptions.py +0 -4
- 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/shared/utils/yaml.py +1 -3
- rasa/studio/upload.py +16 -47
- rasa/telemetry.py +97 -23
- rasa/tracing/instrumentation/instrumentation.py +10 -12
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -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 +6 -2
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/openapi.py +144 -0
- rasa/utils/tensorflow/rasa_layers.py +1 -1
- rasa/utils/train_utils.py +15 -15
- rasa/validator.py +21 -19
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +17 -14
- {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +431 -200
- rasa/agents/agent_factory.py +0 -122
- rasa/agents/agent_manager.py +0 -162
- rasa/agents/constants.py +0 -40
- rasa/agents/core/agent_protocol.py +0 -107
- 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 -662
- rasa/agents/protocol/mcp/mcp_base_agent.py +0 -676
- 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 -199
- rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-3e293924.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.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
|
@@ -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 = (
|
|
@@ -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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Any, Dict, List, Optional, Text, Union
|
|
2
2
|
|
|
3
3
|
import structlog
|
|
4
|
-
from deprecated import deprecated # type: ignore[import
|
|
4
|
+
from deprecated import deprecated # type: ignore[import]
|
|
5
5
|
|
|
6
6
|
from rasa.dialogue_understanding.generator.single_step.single_step_llm_command_generator import ( # noqa: E501
|
|
7
7
|
SingleStepLLMCommandGenerator,
|
|
@@ -2,7 +2,7 @@ import importlib.resources
|
|
|
2
2
|
from typing import Any, Dict, List, Optional, Text, Tuple, Union
|
|
3
3
|
|
|
4
4
|
import structlog
|
|
5
|
-
from deprecated import deprecated # type: ignore[import
|
|
5
|
+
from deprecated import deprecated # type: ignore[import]
|
|
6
6
|
from jinja2 import Template
|
|
7
7
|
|
|
8
8
|
import rasa.shared.utils.io
|
|
@@ -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
|
-
}
|