rasa-pro 3.13.7__py3-none-any.whl → 3.14.0a1__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/builder/README.md +120 -0
- rasa/builder/__init__.py +0 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +91 -0
- rasa/builder/copilot/__init__.py +0 -0
- rasa/builder/copilot/constants.py +28 -0
- rasa/builder/copilot/copilot.py +376 -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 +464 -0
- rasa/builder/copilot/prompts/__init__.py +0 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +771 -0
- rasa/builder/copilot/signing.py +305 -0
- rasa/builder/copilot/telemetry.py +200 -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 +147 -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 +276 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +265 -0
- rasa/builder/main.py +199 -0
- rasa/builder/models.py +216 -0
- rasa/builder/project_generator.py +462 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1335 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/training_service.py +183 -0
- rasa/builder/validation_service.py +97 -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/config.yml +30 -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 +9 -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 +77 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/default/config.yml +5 -1
- rasa/cli/project_templates/default/endpoints.yml +15 -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/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/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 +76 -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/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/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/domain_undertand_bill.yml +102 -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 +29 -0
- rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
- rasa/cli/project_templates/telco/domain/network/domain_reboot_router.yml +21 -0
- rasa/cli/project_templates/telco/domain/network/domain_reset_router.yml +12 -0
- rasa/cli/project_templates/telco/domain/network/domain_run_speed_test.yml +25 -0
- rasa/cli/project_templates/telco/domain/network/domain_solve_internet_issue.yml +75 -0
- rasa/cli/project_templates/telco/domain/shared.yml +129 -0
- rasa/cli/project_templates/telco/endpoints.yml +77 -0
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/scaffold.py +46 -2
- rasa/cli/train.py +2 -2
- rasa/core/actions/action.py +27 -38
- rasa/core/actions/action_run_slot_rejections.py +1 -1
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +48 -15
- rasa/core/channels/inspector/dist/assets/{arc-0b11fe30.js → arc-18042c22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-9eef30a7.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-03e94f28.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-95c09eba.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-38e8446c.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-57dc3038.js → createText-2e5e7dd3-31422447.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-4bac0545.js → edges-e0da2a9e-518a90db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-81795c90.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-89489ae6.js → flowDb-956e92f1-e048c2be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-cd152627.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-3da369bc.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-85ec16f8.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-495bc140.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-1ec4d266.js → graph-14702d8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-0a0e97c9.js → index-3862675e-f18b534b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-c804b295.js → index-4d4bdf3a.js} +254 -254
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-4d54bcde.js → infoDiagram-f8f76790-64154b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-dc097114.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-1a08981e.js → layout-5a3b2123.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-95f7f1d3.js → line-2272a8c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-97e69543.js → linear-35bcf273.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-8c71ff03.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-f14c71c7.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-f1d3c9ff.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-bfa2412f.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-53f2c97b.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-319d7c0e.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-76a09418.js → stateDiagram-587899a1-b8a74083.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-a67f15d4.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-0654e7c3.js → styles-6aaf32cf-f1d54e34.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-1394bb9d.js → styles-9a916d00-980de489.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-e4c5bdae.js → styles-c10674c1-3c03abde.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-50957104.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-b0885a6a.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-79e6541a.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +60 -15
- rasa/core/channels/inspector/src/components/Chat.tsx +3 -2
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +1 -1
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
- rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +268 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -2
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +8 -3
- rasa/core/channels/inspector/src/types.ts +8 -0
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +161 -50
- rasa/core/channels/voice_ready/twilio_voice.py +1 -1
- rasa/core/channels/voice_stream/audiocodes.py +9 -6
- rasa/core/channels/voice_stream/browser_audio.py +39 -4
- rasa/core/channels/voice_stream/call_state.py +13 -2
- rasa/core/channels/voice_stream/genesys.py +16 -13
- rasa/core/channels/voice_stream/jambonz.py +13 -11
- rasa/core/channels/voice_stream/twilio_media_streams.py +14 -13
- rasa/core/channels/voice_stream/util.py +11 -1
- rasa/core/channels/voice_stream/voice_channel.py +106 -32
- rasa/core/nlg/contextual_response_rephraser.py +11 -7
- rasa/core/nlg/generator.py +21 -5
- rasa/core/nlg/response.py +43 -6
- rasa/core/nlg/translate.py +8 -0
- rasa/core/policies/enterprise_search_policy.py +4 -7
- rasa/core/policies/flows/flow_executor.py +8 -1
- rasa/core/run.py +13 -3
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +1 -1
- rasa/dialogue_understanding_test/du_test_schema.yml +3 -3
- rasa/e2e_test/e2e_test_schema.yml +3 -3
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +27 -15
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/shared/core/domain.py +62 -15
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/steps/call.py +8 -1
- rasa/shared/core/flows/yaml_flows_io.py +16 -8
- rasa/shared/core/slots.py +4 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/shared/providers/_utils.py +60 -44
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- rasa/shared/utils/common.py +2 -1
- rasa/studio/upload.py +12 -46
- rasa/telemetry.py +97 -23
- rasa/utils/io.py +27 -9
- rasa/utils/json_utils.py +6 -1
- rasa/utils/licensing.py +21 -10
- rasa/utils/log_utils.py +5 -1
- rasa/utils/openapi.py +144 -0
- rasa/utils/plotting.py +1 -1
- rasa/validator.py +7 -3
- rasa/version.py +1 -1
- {rasa_pro-3.13.7.dist-info → rasa_pro-3.14.0a1.dist-info}/METADATA +22 -23
- {rasa_pro-3.13.7.dist-info → rasa_pro-3.14.0a1.dist-info}/RECORD +384 -108
- rasa/core/channels/inspector/dist/assets/channel-51d02e9e.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-cc738fa6.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-0c716443.js +0 -1
- {rasa_pro-3.13.7.dist-info → rasa_pro-3.14.0a1.dist-info}/NOTICE +0 -0
- {rasa_pro-3.13.7.dist-info → rasa_pro-3.14.0a1.dist-info}/WHEEL +0 -0
- {rasa_pro-3.13.7.dist-info → rasa_pro-3.14.0a1.dist-info}/entry_points.txt +0 -0
|
@@ -52,7 +52,13 @@ def step_from_json(flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
|
52
52
|
return SetSlotsFlowStep.from_json(flow_id, data)
|
|
53
53
|
if "noop" in data:
|
|
54
54
|
return NoOperationFlowStep.from_json(flow_id, data)
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
required_properties = ["action", "collect", "link", "call", "set_slots", "noop"]
|
|
57
|
+
raise RasaException(
|
|
58
|
+
f"Failed to parse step from json. Unknown type for {data}. "
|
|
59
|
+
f"At least one of the following properties is required: "
|
|
60
|
+
f"{', '.join(required_properties)}"
|
|
61
|
+
)
|
|
56
62
|
|
|
57
63
|
|
|
58
64
|
@dataclass
|
|
@@ -50,7 +50,14 @@ class CallFlowStep(FlowStep):
|
|
|
50
50
|
|
|
51
51
|
if should_resolve_calls:
|
|
52
52
|
if not self.called_flow_reference:
|
|
53
|
-
raise ValueError(
|
|
53
|
+
raise ValueError(
|
|
54
|
+
f"Flow step '{self.id}' in flow '{self.flow_id}' is trying "
|
|
55
|
+
f"to call flow '{self.call}', but the flow reference could "
|
|
56
|
+
f"not be resolved. Please ensure that:\n"
|
|
57
|
+
f"1. A flow named '{self.call}' is defined in your domain\n"
|
|
58
|
+
f"2. The flow name is spelled correctly (case-sensitive)\n"
|
|
59
|
+
f"3. The called flow is properly formatted with valid YAML syntax"
|
|
60
|
+
)
|
|
54
61
|
|
|
55
62
|
yield from self.called_flow_reference.steps_with_calls_resolved
|
|
56
63
|
|
|
@@ -262,12 +262,9 @@ class YamlFlowsWriter:
|
|
|
262
262
|
Returns:
|
|
263
263
|
The dumped YAML.
|
|
264
264
|
"""
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
del dumped_flow["id"]
|
|
269
|
-
dump[flow.id] = dumped_flow
|
|
270
|
-
return dump_obj_as_yaml_to_string({KEY_FLOWS: dump})
|
|
265
|
+
return dump_obj_as_yaml_to_string(
|
|
266
|
+
{KEY_FLOWS: get_flows_as_json(flows, should_clean_json)}
|
|
267
|
+
)
|
|
271
268
|
|
|
272
269
|
@staticmethod
|
|
273
270
|
def dump(
|
|
@@ -424,9 +421,20 @@ def process_yaml_content(yaml_content: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
424
421
|
return yaml_content
|
|
425
422
|
|
|
426
423
|
|
|
424
|
+
def get_flows_as_json(
|
|
425
|
+
flows: FlowsList, should_clean_json: bool = False
|
|
426
|
+
) -> Dict[str, Any]:
|
|
427
|
+
"""Get the flows as a JSON dictionary."""
|
|
428
|
+
dump = {}
|
|
429
|
+
for flow in flows:
|
|
430
|
+
dumped_flow = get_flow_as_json(flow, should_clean_json)
|
|
431
|
+
del dumped_flow["id"]
|
|
432
|
+
dump[flow.id] = dumped_flow
|
|
433
|
+
return dump
|
|
434
|
+
|
|
435
|
+
|
|
427
436
|
def get_flow_as_json(flow: Flow, should_clean_json: bool = False) -> Dict[str, Any]:
|
|
428
|
-
"""
|
|
429
|
-
Clean the Flow JSON by removing default values and empty fields.
|
|
437
|
+
"""Clean the Flow JSON by removing default values and empty fields.
|
|
430
438
|
|
|
431
439
|
Args:
|
|
432
440
|
flow: The Flow object to clean.
|
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
|
|
|
@@ -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:
|
|
@@ -34,3 +62,51 @@ def flows_from_paths(files: List[Text]) -> FlowsList:
|
|
|
34
62
|
)
|
|
35
63
|
flows.validate()
|
|
36
64
|
return flows
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def extract_calm_import_parts_from_importer(
|
|
68
|
+
importer: TrainingDataImporter,
|
|
69
|
+
config: Optional[Dict[str, Any]] = None,
|
|
70
|
+
endpoints: Optional[Dict[str, Any]] = None,
|
|
71
|
+
) -> CALMUserData:
|
|
72
|
+
"""Extracts CALMUserData from a TrainingDataImporter.
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
importer: The training data importer
|
|
76
|
+
data_paths: The path(s) to the training data for flows
|
|
77
|
+
config: Optional config dict, if not provided will use importer.get_config()
|
|
78
|
+
endpoints: Optional endpoints dict, defaults to empty dict
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
CALMUserData containing flows, domain, config, endpoints, and nlu data
|
|
82
|
+
"""
|
|
83
|
+
# Extract config
|
|
84
|
+
if config is None:
|
|
85
|
+
config = importer.get_config()
|
|
86
|
+
|
|
87
|
+
# Extract domain
|
|
88
|
+
domain_from_files = importer.get_user_domain().as_dict()
|
|
89
|
+
domain = extract_values(domain_from_files, DOMAIN_KEYS)
|
|
90
|
+
|
|
91
|
+
# Extract flows
|
|
92
|
+
flows = importer.get_user_flows()
|
|
93
|
+
flows_dict = {KEY_FLOWS: get_flows_as_json(flows)}
|
|
94
|
+
|
|
95
|
+
# Extract NLU data
|
|
96
|
+
nlu_data = importer.get_nlu_data()
|
|
97
|
+
nlu_examples = nlu_data.filter_training_examples(
|
|
98
|
+
lambda ex: ex.get("intent") in nlu_data.intents
|
|
99
|
+
)
|
|
100
|
+
nlu_dict = RasaYAMLWriter().training_data_to_dict(nlu_examples)
|
|
101
|
+
|
|
102
|
+
# Use provided endpoints or default to empty dict
|
|
103
|
+
if endpoints is None:
|
|
104
|
+
endpoints = {}
|
|
105
|
+
|
|
106
|
+
return CALMUserData(
|
|
107
|
+
flows=flows_dict or {},
|
|
108
|
+
domain=domain or {},
|
|
109
|
+
config=config or {},
|
|
110
|
+
endpoints=endpoints or {},
|
|
111
|
+
nlu=nlu_dict or {},
|
|
112
|
+
)
|
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()
|
|
@@ -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()
|
rasa/shared/utils/common.py
CHANGED
|
@@ -373,7 +373,8 @@ def validate_environment(
|
|
|
373
373
|
importlib.import_module(p)
|
|
374
374
|
except ImportError:
|
|
375
375
|
raise MissingDependencyException(
|
|
376
|
-
f"Missing
|
|
376
|
+
f"Missing dependency for {component_name}: {p}. "
|
|
377
|
+
f"Please ensure the correct package is installed."
|
|
377
378
|
)
|
|
378
379
|
|
|
379
380
|
|
rasa/studio/upload.py
CHANGED
|
@@ -7,7 +7,6 @@ from typing import Any, Dict, Iterable, List, Optional, Set, Text, Tuple, Union
|
|
|
7
7
|
import questionary
|
|
8
8
|
import requests
|
|
9
9
|
import structlog
|
|
10
|
-
from pydantic import BaseModel, Field
|
|
11
10
|
|
|
12
11
|
import rasa.cli.telemetry
|
|
13
12
|
import rasa.cli.utils
|
|
@@ -24,9 +23,13 @@ from rasa.shared.constants import (
|
|
|
24
23
|
DEFAULT_DOMAIN_PATHS,
|
|
25
24
|
)
|
|
26
25
|
from rasa.shared.core.domain import Domain
|
|
27
|
-
from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
|
|
26
|
+
from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
|
|
28
27
|
from rasa.shared.exceptions import RasaException
|
|
29
|
-
from rasa.shared.importers.importer import
|
|
28
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
29
|
+
from rasa.shared.importers.utils import (
|
|
30
|
+
CALMUserData,
|
|
31
|
+
extract_calm_import_parts_from_importer,
|
|
32
|
+
)
|
|
30
33
|
from rasa.shared.nlu.training_data.formats.rasa_yaml import (
|
|
31
34
|
RasaYAMLReader,
|
|
32
35
|
RasaYAMLWriter,
|
|
@@ -34,7 +37,6 @@ from rasa.shared.nlu.training_data.formats.rasa_yaml import (
|
|
|
34
37
|
from rasa.shared.utils.llm import collect_custom_prompts
|
|
35
38
|
from rasa.shared.utils.yaml import (
|
|
36
39
|
dump_obj_as_yaml_to_string,
|
|
37
|
-
read_yaml,
|
|
38
40
|
read_yaml_file,
|
|
39
41
|
)
|
|
40
42
|
from rasa.studio import results_logger
|
|
@@ -43,6 +45,7 @@ from rasa.studio.config import StudioConfig
|
|
|
43
45
|
from rasa.studio.results_logger import StudioResult, with_studio_error_handler
|
|
44
46
|
from rasa.studio.utils import validate_argument_paths
|
|
45
47
|
from rasa.telemetry import track_upload_to_studio_failed
|
|
48
|
+
from rasa.utils.json_utils import extract_values
|
|
46
49
|
|
|
47
50
|
structlogger = structlog.get_logger()
|
|
48
51
|
|
|
@@ -68,16 +71,6 @@ DOMAIN_KEYS = [
|
|
|
68
71
|
]
|
|
69
72
|
|
|
70
73
|
|
|
71
|
-
class CALMImportParts(BaseModel):
|
|
72
|
-
"""All pieces that will be uploaded to Rasa Studio."""
|
|
73
|
-
|
|
74
|
-
flows: Dict[str, Any]
|
|
75
|
-
domain: Dict[str, Any]
|
|
76
|
-
config: Dict[str, Any]
|
|
77
|
-
endpoints: Dict[str, Any]
|
|
78
|
-
nlu: Dict[str, Any] = Field(default_factory=dict)
|
|
79
|
-
|
|
80
|
-
|
|
81
74
|
def _get_selected_entities_and_intents(
|
|
82
75
|
args: argparse.Namespace,
|
|
83
76
|
intents_from_files: Set[Text],
|
|
@@ -195,11 +188,6 @@ config_keys = [
|
|
|
195
188
|
]
|
|
196
189
|
|
|
197
190
|
|
|
198
|
-
def extract_values(data: Dict, keys: List[Text]) -> Dict:
|
|
199
|
-
"""Extracts values for given keys from a dictionary."""
|
|
200
|
-
return {key: data.get(key) for key in keys if data.get(key)}
|
|
201
|
-
|
|
202
|
-
|
|
203
191
|
def _get_assistant_name(config: Dict[Text, Any]) -> str:
|
|
204
192
|
config_assistant_id = config.get("assistant_id", "")
|
|
205
193
|
assistant_name = questionary.text(
|
|
@@ -238,7 +226,7 @@ def build_calm_import_parts(
|
|
|
238
226
|
config_path: Text,
|
|
239
227
|
endpoints_path: Optional[Text] = None,
|
|
240
228
|
assistant_name: Optional[Text] = None,
|
|
241
|
-
) -> Tuple[str,
|
|
229
|
+
) -> Tuple[str, CALMUserData]:
|
|
242
230
|
"""Builds the parts of the assistant to be uploaded to Studio.
|
|
243
231
|
|
|
244
232
|
Args:
|
|
@@ -251,9 +239,11 @@ def build_calm_import_parts(
|
|
|
251
239
|
Returns:
|
|
252
240
|
The assistant name and the parts to be uploaded
|
|
253
241
|
"""
|
|
242
|
+
training_data_paths = data_path if isinstance(data_path, list) else [str(data_path)]
|
|
254
243
|
importer = TrainingDataImporter.load_from_dict(
|
|
255
244
|
domain_path=domain_path,
|
|
256
245
|
config_path=config_path,
|
|
246
|
+
training_data_paths=training_data_paths,
|
|
257
247
|
expand_env_vars=False,
|
|
258
248
|
)
|
|
259
249
|
|
|
@@ -261,34 +251,10 @@ def build_calm_import_parts(
|
|
|
261
251
|
endpoints = read_yaml_file(endpoints_path, expand_env_vars=False)
|
|
262
252
|
assistant_name = assistant_name or _get_assistant_name(config)
|
|
263
253
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
training_data_paths = data_path if isinstance(data_path, list) else [str(data_path)]
|
|
268
|
-
flow_importer = FlowSyncImporter.load_from_dict(
|
|
269
|
-
training_data_paths=training_data_paths, expand_env_vars=False
|
|
270
|
-
)
|
|
271
|
-
|
|
272
|
-
flows = list(flow_importer.get_user_flows())
|
|
273
|
-
flows_yaml = YamlFlowsWriter().dumps(flows)
|
|
274
|
-
flows = read_yaml(flows_yaml, expand_env_vars=False)
|
|
275
|
-
|
|
276
|
-
nlu_importer = TrainingDataImporter.load_from_dict(
|
|
277
|
-
training_data_paths=training_data_paths, expand_env_vars=False
|
|
278
|
-
)
|
|
279
|
-
nlu_data = nlu_importer.get_nlu_data()
|
|
280
|
-
nlu_examples = nlu_data.filter_training_examples(
|
|
281
|
-
lambda ex: ex.get("intent") in nlu_data.intents
|
|
282
|
-
)
|
|
283
|
-
nlu_examples_yaml = RasaYAMLWriter().dumps(nlu_examples)
|
|
284
|
-
nlu = read_yaml(nlu_examples_yaml, expand_env_vars=False)
|
|
285
|
-
|
|
286
|
-
parts = CALMImportParts(
|
|
287
|
-
flows=flows,
|
|
288
|
-
domain=domain,
|
|
254
|
+
parts = extract_calm_import_parts_from_importer(
|
|
255
|
+
importer=importer,
|
|
289
256
|
config=config,
|
|
290
257
|
endpoints=endpoints,
|
|
291
|
-
nlu=nlu,
|
|
292
258
|
)
|
|
293
259
|
|
|
294
260
|
return assistant_name, parts
|