rasa-pro 3.14.0.dev6__py3-none-any.whl → 3.14.0.dev8__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/agents/agent_manager.py +1 -1
- rasa/agents/constants.py +2 -2
- rasa/agents/exceptions.py +31 -1
- rasa/agents/protocol/a2a/a2a_agent.py +385 -227
- rasa/agents/protocol/mcp/mcp_base_agent.py +37 -19
- rasa/agents/protocol/mcp/mcp_open_agent.py +31 -8
- rasa/agents/protocol/mcp/mcp_task_agent.py +33 -10
- rasa/agents/schemas/agent_output.py +1 -1
- rasa/agents/utils.py +95 -1
- rasa/agents/validation.py +484 -0
- rasa/api.py +9 -6
- rasa/builder/README.md +120 -0
- rasa/builder/__init__.py +0 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +92 -0
- rasa/builder/copilot/__init__.py +0 -0
- rasa/builder/copilot/constants.py +31 -0
- rasa/builder/copilot/copilot.py +450 -0
- rasa/builder/copilot/copilot_response_handler.py +522 -0
- rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
- rasa/builder/copilot/exceptions.py +32 -0
- rasa/builder/copilot/models.py +500 -0
- rasa/builder/copilot/prompts/__init__.py +0 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +766 -0
- rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
- rasa/builder/copilot/signing.py +305 -0
- rasa/builder/copilot/telemetry.py +210 -0
- rasa/builder/copilot/templated_messages/__init__.py +0 -0
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
- rasa/builder/document_retrieval/__init__.py +0 -0
- rasa/builder/document_retrieval/constants.py +15 -0
- rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
- rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
- rasa/builder/document_retrieval/models.py +62 -0
- rasa/builder/download.py +140 -0
- rasa/builder/exceptions.py +91 -0
- rasa/builder/guardrails/__init__.py +1 -0
- rasa/builder/guardrails/constants.py +9 -0
- rasa/builder/guardrails/exceptions.py +4 -0
- rasa/builder/guardrails/lakera.py +206 -0
- rasa/builder/guardrails/models.py +231 -0
- rasa/builder/guardrails/store.py +238 -0
- rasa/builder/guardrails/utils.py +328 -0
- rasa/builder/job_manager.py +87 -0
- rasa/builder/jobs.py +282 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +265 -0
- rasa/builder/main.py +243 -0
- rasa/builder/models.py +216 -0
- rasa/builder/project_generator.py +458 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1345 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/template_cache.py +244 -0
- rasa/builder/training_service.py +194 -0
- rasa/builder/validation_service.py +97 -0
- rasa/cli/arguments/train.py +2 -0
- rasa/cli/interactive.py +2 -0
- rasa/cli/project_templates/basic/README.md +23 -0
- rasa/cli/project_templates/basic/actions/__init__ +0 -0
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
- rasa/cli/project_templates/basic/actions/actions.md +10 -0
- rasa/cli/project_templates/basic/config.yml +29 -0
- rasa/cli/project_templates/basic/credentials.yml +33 -0
- rasa/cli/project_templates/basic/data/data.md +9 -0
- rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
- rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
- rasa/cli/project_templates/basic/data/general/help.yml +6 -0
- rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/basic/docs/docs.md +5 -0
- rasa/cli/project_templates/basic/docs/template.txt +28 -0
- rasa/cli/project_templates/basic/domain/domain.md +8 -0
- rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
- rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
- rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
- rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
- rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
- rasa/cli/project_templates/basic/endpoints.yml +67 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/default/config.yml +4 -0
- rasa/cli/project_templates/default/endpoints.yml +4 -0
- rasa/cli/project_templates/finance/README.md +25 -0
- rasa/cli/project_templates/finance/actions/__init__.py +46 -0
- rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -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/actions.md +15 -0
- rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -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 +23 -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/data.md +11 -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/domain.md +10 -0
- rasa/cli/project_templates/finance/domain/general/agent_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 +66 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/telco/README.md +25 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions.md +12 -0
- rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
- rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
- rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
- rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
- rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
- rasa/cli/project_templates/telco/config.yml +29 -0
- rasa/cli/project_templates/telco/credentials.yml +33 -0
- rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
- rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
- rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
- rasa/cli/project_templates/telco/data/data.md +11 -0
- rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
- rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
- rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
- rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
- rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
- rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
- rasa/cli/project_templates/telco/docs/docs.md +5 -0
- rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
- rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
- rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
- rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
- rasa/cli/project_templates/telco/domain/domain.md +14 -0
- rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
- rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
- rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
- rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
- rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
- rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
- rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +75 -0
- rasa/cli/project_templates/telco/domain/shared.yml +129 -0
- rasa/cli/project_templates/telco/endpoints.yml +67 -0
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/scaffold.py +46 -2
- rasa/cli/train.py +2 -0
- rasa/cli/utils.py +85 -1
- rasa/core/actions/action.py +2 -7
- rasa/core/available_agents.py +49 -26
- rasa/core/available_endpoints.py +17 -2
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +2 -22
- rasa/core/channels/inspector/README.md +26 -14
- rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-edef10dd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-49f6762b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-313c08e6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-63aa27d1.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-35e41ce9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-f346068d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-5566bae8.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-7a44bce8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-d7cf78c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-9813e81c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-d8ba0870.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-51f0db4d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-32936074.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-ff9ea384.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-a8e13b6b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-3b171c6d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-790ef78b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-ecdce073.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-d705da80.js +1352 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-f5a422fe.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-3185b7ac.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-837fd3aa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-7e05afcb.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-162eb295.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-f4978aee.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-b25d0a52.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-63db1afa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-1b486cc9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-7e795291.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-b8aba159.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-41529fd5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-b241043c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-b5b53234.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-13d138e5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-94cbde3f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-453ae764.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-8dcb88a4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-376af5f0.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 +42 -44
- rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
- rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
- rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +8 -8
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
- rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +14 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
- rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
- rasa/core/channels/inspector/src/types.ts +49 -7
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +59 -57
- rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
- rasa/core/channels/voice_stream/asr/azure.py +6 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
- rasa/core/channels/voice_stream/audiocodes.py +3 -0
- rasa/core/channels/voice_stream/browser_audio.py +53 -3
- rasa/core/channels/voice_stream/genesys.py +2 -1
- rasa/core/channels/voice_stream/jambonz.py +9 -1
- rasa/core/channels/voice_stream/twilio_media_streams.py +16 -0
- rasa/core/channels/voice_stream/voice_channel.py +66 -3
- rasa/core/constants.py +6 -0
- rasa/core/iam_credentials_providers/__init__.py +0 -0
- rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +66 -0
- rasa/core/iam_credentials_providers/credentials_provider_protocol.py +89 -0
- rasa/core/policies/enterprise_search_policy.py +4 -7
- rasa/core/policies/flows/flow_executor.py +66 -36
- rasa/core/policies/ted_policy.py +7 -5
- rasa/core/processor.py +32 -0
- rasa/core/redis_connection_factory.py +411 -0
- rasa/core/run.py +13 -3
- rasa/core/tracker_stores/redis_tracker_store.py +32 -14
- rasa/core/tracker_stores/sql_tracker_store.py +57 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +2 -81
- rasa/dialogue_understanding/commands/start_flow_command.py +18 -113
- rasa/dialogue_understanding/commands/utils.py +118 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +10 -5
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +10 -5
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +20 -12
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +19 -12
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +6 -35
- rasa/dialogue_understanding/patterns/cancel.py +27 -6
- rasa/dialogue_understanding/patterns/clarify.py +3 -14
- rasa/dialogue_understanding/patterns/continue_interrupted.py +185 -114
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +18 -24
- rasa/dialogue_understanding/processor/command_processor.py +35 -0
- rasa/dialogue_understanding/stack/utils.py +43 -4
- rasa/dialogue_understanding/utils.py +24 -4
- rasa/engine/graph.py +5 -1
- rasa/engine/recipes/default_components.py +78 -10
- rasa/engine/recipes/default_recipe.py +41 -1
- rasa/engine/storage/local_model_storage.py +83 -3
- rasa/graph_components/validators/default_recipe_validator.py +153 -135
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +20 -15
- 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/model_training.py +22 -6
- rasa/nlu/classifiers/diet_classifier.py +22 -6
- rasa/nlu/classifiers/logistic_regression_classifier.py +18 -0
- rasa/nlu/extractors/extractor.py +1 -2
- rasa/shared/agents/auth/__init__.py +0 -0
- rasa/shared/agents/auth/agent_auth_factory.py +74 -0
- rasa/shared/agents/auth/agent_auth_manager.py +86 -0
- rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
- rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
- rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
- rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
- rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +159 -0
- rasa/shared/agents/auth/constants.py +11 -0
- rasa/shared/agents/auth/types.py +11 -0
- rasa/shared/constants.py +3 -0
- rasa/shared/core/constants.py +6 -6
- rasa/shared/core/domain.py +58 -11
- rasa/shared/core/events.py +2 -0
- rasa/shared/core/flows/constants.py +5 -0
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/flows_list.py +6 -0
- rasa/shared/core/flows/steps/call.py +15 -12
- rasa/shared/core/flows/validation.py +238 -44
- rasa/shared/core/flows/yaml_flows_io.py +15 -6
- rasa/shared/core/slots.py +4 -0
- rasa/shared/exceptions.py +12 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
- 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 +2 -2
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- rasa/shared/providers/llm/llm_response.py +4 -4
- rasa/shared/utils/common.py +24 -0
- rasa/shared/utils/health_check/health_check.py +7 -3
- rasa/shared/utils/llm.py +2 -1
- rasa/shared/utils/mcp/server_connection.py +108 -27
- rasa/shared/utils/mcp/utils.py +20 -0
- rasa/studio/upload.py +16 -47
- rasa/telemetry.py +97 -23
- rasa/tracing/config.py +38 -12
- rasa/tracing/instrumentation/attribute_extractors.py +5 -1
- rasa/tracing/instrumentation/instrumentation.py +85 -8
- rasa/utils/common.py +1 -1
- 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/utils/tensorflow/__init__.py +29 -0
- rasa/utils/tensorflow/callback.py +1 -1
- rasa/utils/tensorflow/crf.py +1 -1
- rasa/utils/tensorflow/data_generator.py +21 -8
- rasa/utils/tensorflow/layers.py +11 -4
- rasa/utils/tensorflow/metrics.py +7 -3
- rasa/utils/tensorflow/models.py +41 -6
- rasa/utils/tensorflow/rasa_layers.py +6 -4
- rasa/utils/tensorflow/transformer.py +2 -3
- rasa/utils/train_utils.py +68 -38
- rasa/validator.py +18 -16
- rasa/version.py +1 -1
- rasa_pro-3.14.0.dev8.dist-info/METADATA +199 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/RECORD +486 -173
- 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_pro-3.14.0.dev6.dist-info/METADATA +0 -190
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/entry_points.txt +0 -0
rasa/shared/core/slots.py
CHANGED
|
@@ -273,10 +273,14 @@ class Slot(ABC):
|
|
|
273
273
|
try:
|
|
274
274
|
return rasa.shared.utils.common.class_from_module_path(type_name)
|
|
275
275
|
except (ImportError, AttributeError):
|
|
276
|
+
known_types = [
|
|
277
|
+
cls.type_name for cls in rasa.shared.utils.common.all_subclasses(Slot)
|
|
278
|
+
]
|
|
276
279
|
raise InvalidSlotTypeException(
|
|
277
280
|
f"Failed to find slot type, '{type_name}' is neither a known type nor "
|
|
278
281
|
f"user-defined. If you are creating your own slot type, make "
|
|
279
282
|
f"sure its module path is correct. "
|
|
283
|
+
f"Known types: {', '.join(known_types)} "
|
|
280
284
|
f"You can find all build in types at {DOCS_URL_SLOTS}"
|
|
281
285
|
)
|
|
282
286
|
|
rasa/shared/exceptions.py
CHANGED
|
@@ -163,6 +163,10 @@ class ProviderClientAPIException(RasaException):
|
|
|
163
163
|
return s
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
class LLMToolResponseDecodeError(ProviderClientAPIException):
|
|
167
|
+
"""Raised when a JSON decoding error occurs in LLM tool response."""
|
|
168
|
+
|
|
169
|
+
|
|
166
170
|
class ProviderClientValidationError(RasaException):
|
|
167
171
|
"""Raised for errors that occur during validation of the API client."""
|
|
168
172
|
|
|
@@ -173,3 +177,11 @@ class FinetuningDataPreparationException(RasaException):
|
|
|
173
177
|
|
|
174
178
|
class AgentInitializationException(RasaException):
|
|
175
179
|
"""Raised when there is an error during the initialization of an agent."""
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class AgentAuthInitializationException(RasaException):
|
|
183
|
+
"""Raised when there is an error during the initialization of agent auth client."""
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class AuthenticationError(RasaException):
|
|
187
|
+
"""Raised when there is an authentication error."""
|
|
@@ -207,6 +207,12 @@ class TrainingDataImporter(ABC):
|
|
|
207
207
|
)
|
|
208
208
|
]
|
|
209
209
|
|
|
210
|
+
return TrainingDataImporter.wrap_in_builtins(importers)
|
|
211
|
+
|
|
212
|
+
@staticmethod
|
|
213
|
+
def wrap_in_builtins(
|
|
214
|
+
importers: List["TrainingDataImporter"],
|
|
215
|
+
) -> "TrainingDataImporter":
|
|
210
216
|
return LanguageImporter(
|
|
211
217
|
E2EImporter(
|
|
212
218
|
FlowSyncImporter(ResponsesSyncImporter(CombinedDataImporter(importers)))
|
rasa/shared/importers/utils.py
CHANGED
|
@@ -1,9 +1,37 @@
|
|
|
1
|
-
from typing import Iterable, List, Optional, Text
|
|
1
|
+
from typing import Any, Dict, Iterable, List, Optional, Text
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
2
4
|
|
|
3
5
|
from rasa.shared.core.domain import Domain
|
|
4
6
|
from rasa.shared.core.flows import FlowsList
|
|
7
|
+
from rasa.shared.core.flows.yaml_flows_io import KEY_FLOWS, get_flows_as_json
|
|
5
8
|
from rasa.shared.core.training_data.structures import StoryGraph
|
|
9
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
10
|
+
from rasa.shared.nlu.training_data.formats.rasa_yaml import RasaYAMLWriter
|
|
6
11
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
12
|
+
from rasa.utils.json_utils import extract_values
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class CALMUserData(BaseModel):
|
|
16
|
+
"""All pieces that will be uploaded to Rasa Studio."""
|
|
17
|
+
|
|
18
|
+
flows: Dict[str, Any] = Field(default_factory=dict)
|
|
19
|
+
domain: Dict[str, Any] = Field(default_factory=dict)
|
|
20
|
+
config: Dict[str, Any] = Field(default_factory=dict)
|
|
21
|
+
endpoints: Dict[str, Any] = Field(default_factory=dict)
|
|
22
|
+
nlu: Dict[str, Any] = Field(default_factory=dict)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
DOMAIN_KEYS = [
|
|
26
|
+
"version",
|
|
27
|
+
"actions",
|
|
28
|
+
"responses",
|
|
29
|
+
"slots",
|
|
30
|
+
"intents",
|
|
31
|
+
"entities",
|
|
32
|
+
"forms",
|
|
33
|
+
"session_config",
|
|
34
|
+
]
|
|
7
35
|
|
|
8
36
|
|
|
9
37
|
def training_data_from_paths(paths: Iterable[Text], language: Text) -> TrainingData:
|
|
@@ -40,3 +68,51 @@ def flows_from_paths(files: List[Text], domain: Optional[Domain] = None) -> Flow
|
|
|
40
68
|
)
|
|
41
69
|
flows.validate(domain)
|
|
42
70
|
return flows
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def extract_calm_import_parts_from_importer(
|
|
74
|
+
importer: TrainingDataImporter,
|
|
75
|
+
config: Optional[Dict[str, Any]] = None,
|
|
76
|
+
endpoints: Optional[Dict[str, Any]] = None,
|
|
77
|
+
) -> CALMUserData:
|
|
78
|
+
"""Extracts CALMUserData from a TrainingDataImporter.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
importer: The training data importer
|
|
82
|
+
data_paths: The path(s) to the training data for flows
|
|
83
|
+
config: Optional config dict, if not provided will use importer.get_config()
|
|
84
|
+
endpoints: Optional endpoints dict, defaults to empty dict
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
CALMUserData containing flows, domain, config, endpoints, and nlu data
|
|
88
|
+
"""
|
|
89
|
+
# Extract config
|
|
90
|
+
if config is None:
|
|
91
|
+
config = importer.get_config()
|
|
92
|
+
|
|
93
|
+
# Extract domain
|
|
94
|
+
domain_from_files = importer.get_user_domain().as_dict()
|
|
95
|
+
domain = extract_values(domain_from_files, DOMAIN_KEYS)
|
|
96
|
+
|
|
97
|
+
# Extract flows
|
|
98
|
+
flows = importer.get_user_flows()
|
|
99
|
+
flows_dict = {KEY_FLOWS: get_flows_as_json(flows)}
|
|
100
|
+
|
|
101
|
+
# Extract NLU data
|
|
102
|
+
nlu_data = importer.get_nlu_data()
|
|
103
|
+
nlu_examples = nlu_data.filter_training_examples(
|
|
104
|
+
lambda ex: ex.get("intent") in nlu_data.intents
|
|
105
|
+
)
|
|
106
|
+
nlu_dict = RasaYAMLWriter().training_data_to_dict(nlu_examples)
|
|
107
|
+
|
|
108
|
+
# Use provided endpoints or default to empty dict
|
|
109
|
+
if endpoints is None:
|
|
110
|
+
endpoints = {}
|
|
111
|
+
|
|
112
|
+
return CALMUserData(
|
|
113
|
+
flows=flows_dict or {},
|
|
114
|
+
domain=domain or {},
|
|
115
|
+
config=config or {},
|
|
116
|
+
endpoints=endpoints or {},
|
|
117
|
+
nlu=nlu_dict or {},
|
|
118
|
+
)
|
rasa/shared/providers/_utils.py
CHANGED
|
@@ -1,87 +1,103 @@
|
|
|
1
1
|
from typing import Any, Dict, Optional
|
|
2
2
|
|
|
3
|
+
import boto3
|
|
3
4
|
import structlog
|
|
4
|
-
from
|
|
5
|
+
from botocore.exceptions import BotoCoreError, ClientError
|
|
5
6
|
|
|
6
7
|
from rasa.shared.constants import (
|
|
7
8
|
API_BASE_CONFIG_KEY,
|
|
8
9
|
API_VERSION_CONFIG_KEY,
|
|
9
10
|
AWS_ACCESS_KEY_ID_CONFIG_KEY,
|
|
10
|
-
|
|
11
|
+
AWS_BEDROCK_PROVIDER,
|
|
11
12
|
AWS_REGION_NAME_CONFIG_KEY,
|
|
12
|
-
|
|
13
|
+
AWS_SAGEMAKER_CHAT_PROVIDER,
|
|
14
|
+
AWS_SAGEMAKER_PROVIDER,
|
|
13
15
|
AWS_SECRET_ACCESS_KEY_CONFIG_KEY,
|
|
14
|
-
AWS_SECRET_ACCESS_KEY_ENV_VAR,
|
|
15
16
|
AWS_SESSION_TOKEN_CONFIG_KEY,
|
|
16
|
-
AWS_SESSION_TOKEN_ENV_VAR,
|
|
17
17
|
AZURE_API_BASE_ENV_VAR,
|
|
18
18
|
AZURE_API_VERSION_ENV_VAR,
|
|
19
19
|
DEPLOYMENT_CONFIG_KEY,
|
|
20
20
|
)
|
|
21
21
|
from rasa.shared.exceptions import ProviderClientValidationError
|
|
22
|
-
from rasa.shared.
|
|
23
|
-
_VALIDATE_ENVIRONMENT_MISSING_KEYS_KEY,
|
|
24
|
-
)
|
|
22
|
+
from rasa.shared.utils.io import resolve_environment_variables
|
|
25
23
|
|
|
26
24
|
structlogger = structlog.get_logger()
|
|
27
25
|
|
|
28
26
|
|
|
29
27
|
def validate_aws_setup_for_litellm_clients(
|
|
30
|
-
litellm_model_name: str, litellm_call_kwargs:
|
|
28
|
+
litellm_model_name: str, litellm_call_kwargs: Dict, source_log: str, provider: str
|
|
31
29
|
) -> None:
|
|
32
|
-
"""Validates the AWS setup for LiteLLM clients to ensure
|
|
33
|
-
environment variables or corresponding call kwargs are set.
|
|
30
|
+
"""Validates the AWS setup for LiteLLM clients to ensure credentials are set.
|
|
34
31
|
|
|
35
32
|
Args:
|
|
36
33
|
litellm_model_name (str): The name of the LiteLLM model being validated.
|
|
37
34
|
litellm_call_kwargs (dict): Additional keyword arguments passed to the client,
|
|
38
35
|
which may include configuration values for AWS credentials.
|
|
39
36
|
source_log (str): The source log identifier for structured logging.
|
|
37
|
+
provider (str): The provider for which the validation is being performed.
|
|
40
38
|
|
|
41
39
|
Raises:
|
|
42
40
|
ProviderClientValidationError: If any required AWS environment variable
|
|
43
41
|
or corresponding configuration key is missing.
|
|
44
42
|
"""
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
validation_info = validate_environment(litellm_model_name)
|
|
56
|
-
missing_environment_variables = validation_info.get(
|
|
57
|
-
_VALIDATE_ENVIRONMENT_MISSING_KEYS_KEY, []
|
|
43
|
+
# expand environment variables if referenced in the config
|
|
44
|
+
resolved_litellm_call_kwargs: Dict = resolve_environment_variables(
|
|
45
|
+
litellm_call_kwargs
|
|
46
|
+
) # type: ignore[assignment]
|
|
47
|
+
|
|
48
|
+
# boto3 only accepts bedrock and sagemaker as valid clients
|
|
49
|
+
# therefore we need to convert the provider name if it is defined
|
|
50
|
+
# as sagemaker_chat
|
|
51
|
+
provider = (
|
|
52
|
+
AWS_SAGEMAKER_PROVIDER if provider == AWS_SAGEMAKER_CHAT_PROVIDER else provider
|
|
58
53
|
)
|
|
59
|
-
# Filter out missing environment variables that have been set trough arguments
|
|
60
|
-
# in extra parameters
|
|
61
|
-
missing_environment_variables = [
|
|
62
|
-
missing_env_var
|
|
63
|
-
for missing_env_var in missing_environment_variables
|
|
64
|
-
if litellm_call_kwargs.get(envs_to_args.get(missing_env_var)) is None
|
|
65
|
-
]
|
|
66
54
|
|
|
67
|
-
if
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
# if the AWS credentials are defined in the endpoints yaml model config,
|
|
56
|
+
# either as referenced secret env vars or direct values, we need to pass them
|
|
57
|
+
# to the boto3 client to ensure that the client can connect to the AWS service.
|
|
58
|
+
additional_kwargs: Dict[str, Any] = {}
|
|
59
|
+
if AWS_ACCESS_KEY_ID_CONFIG_KEY in resolved_litellm_call_kwargs:
|
|
60
|
+
additional_kwargs[AWS_ACCESS_KEY_ID_CONFIG_KEY] = resolved_litellm_call_kwargs[
|
|
61
|
+
AWS_ACCESS_KEY_ID_CONFIG_KEY
|
|
74
62
|
]
|
|
63
|
+
if AWS_SECRET_ACCESS_KEY_CONFIG_KEY in resolved_litellm_call_kwargs:
|
|
64
|
+
additional_kwargs[AWS_SECRET_ACCESS_KEY_CONFIG_KEY] = (
|
|
65
|
+
resolved_litellm_call_kwargs[AWS_SECRET_ACCESS_KEY_CONFIG_KEY]
|
|
66
|
+
)
|
|
67
|
+
if AWS_SESSION_TOKEN_CONFIG_KEY in resolved_litellm_call_kwargs:
|
|
68
|
+
additional_kwargs[AWS_SESSION_TOKEN_CONFIG_KEY] = resolved_litellm_call_kwargs[
|
|
69
|
+
AWS_SESSION_TOKEN_CONFIG_KEY
|
|
70
|
+
]
|
|
71
|
+
if AWS_REGION_NAME_CONFIG_KEY in resolved_litellm_call_kwargs:
|
|
72
|
+
additional_kwargs["region_name"] = resolved_litellm_call_kwargs[
|
|
73
|
+
AWS_REGION_NAME_CONFIG_KEY
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
# We are using the boto3 client because it can discover the AWS credentials
|
|
78
|
+
# from the environment variables, credentials file, or IAM roles.
|
|
79
|
+
# This is necessary to ensure that the client can connect to the AWS service.
|
|
80
|
+
aws_client = boto3.client(provider, **additional_kwargs)
|
|
81
|
+
|
|
82
|
+
# Using different method calls available to different AWS clients
|
|
83
|
+
# to test the connection
|
|
84
|
+
if provider == AWS_SAGEMAKER_PROVIDER:
|
|
85
|
+
aws_client.list_models()
|
|
86
|
+
elif provider == AWS_BEDROCK_PROVIDER:
|
|
87
|
+
aws_client.get_model_invocation_logging_configuration()
|
|
88
|
+
|
|
89
|
+
except (ClientError, BotoCoreError) as exc:
|
|
75
90
|
event_info = (
|
|
76
|
-
f"
|
|
77
|
-
f"
|
|
78
|
-
f"
|
|
79
|
-
f"
|
|
91
|
+
f"Failed to validate AWS setup for LiteLLM clients: {exc}. "
|
|
92
|
+
f"Ensure that you are using one of the available authentication methods:"
|
|
93
|
+
f"credentials file, environment variables, or IAM roles. "
|
|
94
|
+
f"Also, ensure that the AWS region is set correctly. "
|
|
80
95
|
)
|
|
81
96
|
structlogger.error(
|
|
82
|
-
f"{source_log}.
|
|
97
|
+
f"{source_log}.validate_aws_credentials_for_litellm_clients",
|
|
83
98
|
event_info=event_info,
|
|
84
|
-
|
|
99
|
+
exception=str(exc),
|
|
100
|
+
model_name=litellm_model_name,
|
|
85
101
|
)
|
|
86
102
|
raise ProviderClientValidationError(event_info)
|
|
87
103
|
|
|
@@ -37,6 +37,7 @@ class DefaultLiteLLMEmbeddingClient(_BaseLiteLLMEmbeddingClient):
|
|
|
37
37
|
|
|
38
38
|
@classmethod
|
|
39
39
|
def from_config(cls, config: Dict[str, Any]) -> "DefaultLiteLLMEmbeddingClient":
|
|
40
|
+
"""Creates a DefaultLiteLLMEmbeddingClient instance from a config dict."""
|
|
40
41
|
default_config = DefaultLiteLLMClientConfig.from_dict(config)
|
|
41
42
|
return cls(
|
|
42
43
|
model=default_config.model,
|
|
@@ -121,6 +122,7 @@ class DefaultLiteLLMEmbeddingClient(_BaseLiteLLMEmbeddingClient):
|
|
|
121
122
|
self._litellm_model_name,
|
|
122
123
|
self._litellm_extra_parameters,
|
|
123
124
|
"default_litellm_embedding_client",
|
|
125
|
+
provider=self.provider,
|
|
124
126
|
)
|
|
125
127
|
else:
|
|
126
128
|
super().validate_client_setup()
|
|
@@ -158,7 +158,7 @@ class _BaseLiteLLMClient:
|
|
|
158
158
|
)
|
|
159
159
|
return self._format_response(response)
|
|
160
160
|
except Exception as e:
|
|
161
|
-
raise ProviderClientAPIException(e)
|
|
161
|
+
raise ProviderClientAPIException(e) from e
|
|
162
162
|
|
|
163
163
|
@suppress_logs(log_level=logging.WARNING)
|
|
164
164
|
async def acompletion(
|
|
@@ -209,7 +209,7 @@ class _BaseLiteLLMClient:
|
|
|
209
209
|
"In case you are getting OpenAI connection errors, such as missing "
|
|
210
210
|
"API key, your configuration is incorrect."
|
|
211
211
|
)
|
|
212
|
-
raise ProviderClientAPIException(e, message)
|
|
212
|
+
raise ProviderClientAPIException(e, message) from e
|
|
213
213
|
|
|
214
214
|
def _get_formatted_messages(
|
|
215
215
|
self, messages: Union[List[dict], List[str], str]
|
|
@@ -39,6 +39,7 @@ class DefaultLiteLLMClient(_BaseLiteLLMClient):
|
|
|
39
39
|
|
|
40
40
|
@classmethod
|
|
41
41
|
def from_config(cls, config: Dict[str, Any]) -> DefaultLiteLLMClient:
|
|
42
|
+
"""Creates a DefaultLiteLLMClient instance from a configuration dictionary."""
|
|
42
43
|
default_config = DefaultLiteLLMClientConfig.from_dict(config)
|
|
43
44
|
return cls(
|
|
44
45
|
model=default_config.model,
|
|
@@ -110,6 +111,7 @@ class DefaultLiteLLMClient(_BaseLiteLLMClient):
|
|
|
110
111
|
self._litellm_model_name,
|
|
111
112
|
self._litellm_extra_parameters,
|
|
112
113
|
"default_litellm_llm_client",
|
|
114
|
+
provider=self.provider,
|
|
113
115
|
)
|
|
114
116
|
else:
|
|
115
117
|
super().validate_client_setup()
|
|
@@ -9,7 +9,7 @@ from litellm.utils import ChatCompletionMessageToolCall
|
|
|
9
9
|
from pydantic import BaseModel
|
|
10
10
|
|
|
11
11
|
from rasa.shared.constants import KEY_TOOL_CALLS
|
|
12
|
-
from rasa.shared.exceptions import
|
|
12
|
+
from rasa.shared.exceptions import LLMToolResponseDecodeError
|
|
13
13
|
|
|
14
14
|
structlogger = structlog.get_logger()
|
|
15
15
|
|
|
@@ -75,13 +75,13 @@ class LLMToolCall(BaseModel):
|
|
|
75
75
|
tool_name=data.function.name,
|
|
76
76
|
tool_call=data.function.arguments,
|
|
77
77
|
)
|
|
78
|
-
raise
|
|
78
|
+
raise LLMToolResponseDecodeError(
|
|
79
79
|
original_exception=e,
|
|
80
80
|
message=(
|
|
81
|
-
f"Invalid arguments for tool call `{data.function.name}`: "
|
|
81
|
+
f"Invalid arguments for tool call - `{data.function.name}`: "
|
|
82
82
|
f"`{data.function.arguments}`"
|
|
83
83
|
),
|
|
84
|
-
)
|
|
84
|
+
) from e
|
|
85
85
|
|
|
86
86
|
return cls(
|
|
87
87
|
id=data.id,
|
rasa/shared/utils/common.py
CHANGED
|
@@ -17,6 +17,7 @@ from typing import (
|
|
|
17
17
|
Optional,
|
|
18
18
|
Sequence,
|
|
19
19
|
Text,
|
|
20
|
+
Tuple,
|
|
20
21
|
Type,
|
|
21
22
|
)
|
|
22
23
|
|
|
@@ -102,9 +103,12 @@ def sort_list_of_dicts_by_first_key(dicts: List[Dict]) -> List[Dict]:
|
|
|
102
103
|
|
|
103
104
|
def cached_method(f: Callable[..., Any]) -> Callable[..., Any]:
|
|
104
105
|
"""Caches method calls based on the call's `args` and `kwargs`.
|
|
106
|
+
|
|
105
107
|
Works for `async` and `sync` methods. Don't apply this to functions.
|
|
108
|
+
|
|
106
109
|
Args:
|
|
107
110
|
f: The decorated method whose return value should be cached.
|
|
111
|
+
|
|
108
112
|
Returns:
|
|
109
113
|
The return value which the method gives for the first call with the given
|
|
110
114
|
arguments.
|
|
@@ -358,6 +362,7 @@ def validate_environment(
|
|
|
358
362
|
component_name: str,
|
|
359
363
|
) -> None:
|
|
360
364
|
"""Make sure all needed requirements for a component are met.
|
|
365
|
+
|
|
361
366
|
Args:
|
|
362
367
|
required_env_vars: List of environment variables that should be set
|
|
363
368
|
required_packages: List of packages that should be installed
|
|
@@ -389,3 +394,22 @@ Sign up at: https://feedback.rasa.com
|
|
|
389
394
|
{separator}
|
|
390
395
|
"""
|
|
391
396
|
print_success(message)
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
def conditional_import(module_name: str, class_name: str) -> Tuple[Any, bool]:
|
|
400
|
+
"""Conditionally import a class, returning (class, is_available) tuple.
|
|
401
|
+
|
|
402
|
+
Args:
|
|
403
|
+
module_name: The module path to import from
|
|
404
|
+
class_name: The class name to import
|
|
405
|
+
|
|
406
|
+
Returns:
|
|
407
|
+
A tuple of (class, is_available) where class is the imported class
|
|
408
|
+
or None if import failed, and is_available is a boolean indicating
|
|
409
|
+
whether the import was successful.
|
|
410
|
+
"""
|
|
411
|
+
try:
|
|
412
|
+
module = __import__(module_name, fromlist=[class_name])
|
|
413
|
+
return getattr(module, class_name), True
|
|
414
|
+
except ImportError:
|
|
415
|
+
return None, False
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import os
|
|
2
|
-
from typing import Any, Dict, Optional
|
|
2
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional
|
|
3
3
|
|
|
4
4
|
from rasa.exceptions import HealthCheckError
|
|
5
|
+
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
pass
|
|
5
8
|
from rasa.shared.constants import (
|
|
6
9
|
LLM_API_HEALTH_CHECK_DEFAULT_VALUE,
|
|
7
10
|
LLM_API_HEALTH_CHECK_ENV_VAR,
|
|
@@ -63,6 +66,7 @@ def perform_llm_health_check(
|
|
|
63
66
|
log_source_component: str,
|
|
64
67
|
) -> None:
|
|
65
68
|
"""Try to instantiate the LLM Client to validate the provided config.
|
|
69
|
+
|
|
66
70
|
If the LLM_API_HEALTH_CHECK environment variable is true, perform a test call
|
|
67
71
|
to the LLM API. If config contains multiple models, perform a test call for each
|
|
68
72
|
model in the model group.
|
|
@@ -125,6 +129,7 @@ def perform_embeddings_health_check(
|
|
|
125
129
|
log_source_component: str,
|
|
126
130
|
) -> None:
|
|
127
131
|
"""Try to instantiate the Embedder to validate the provided config.
|
|
132
|
+
|
|
128
133
|
If the LLM_API_HEALTH_CHECK environment variable is true, perform a test call
|
|
129
134
|
to the Embeddings API. If config contains multiple models, perform a test call for
|
|
130
135
|
each model in the model group.
|
|
@@ -240,8 +245,7 @@ def send_test_embeddings_api_request(
|
|
|
240
245
|
|
|
241
246
|
|
|
242
247
|
def is_api_health_check_enabled() -> bool:
|
|
243
|
-
"""Determines whether the API health check is enabled
|
|
244
|
-
variable.
|
|
248
|
+
"""Determines whether the API health check is enabled.
|
|
245
249
|
|
|
246
250
|
Returns:
|
|
247
251
|
bool: True if the API health check is enabled, False otherwise.
|
rasa/shared/utils/llm.py
CHANGED
|
@@ -762,7 +762,7 @@ def get_prompt_template(
|
|
|
762
762
|
log_source_method=log_source_method,
|
|
763
763
|
)
|
|
764
764
|
return prompt_template
|
|
765
|
-
except (FileIOException, FileNotFoundException):
|
|
765
|
+
except (FileIOException, FileNotFoundException) as e:
|
|
766
766
|
structlogger.warning(
|
|
767
767
|
"utils.llm.get_prompt_template" ".failed_to_read_custom_prompt_template",
|
|
768
768
|
event_info=(
|
|
@@ -770,6 +770,7 @@ def get_prompt_template(
|
|
|
770
770
|
),
|
|
771
771
|
log_source_component=log_source_component,
|
|
772
772
|
log_source_method=log_source_method,
|
|
773
|
+
error=str(e),
|
|
773
774
|
)
|
|
774
775
|
return default_prompt_template
|
|
775
776
|
|