rasa-pro 3.12.0.dev1__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.
- README.md +41 -0
- rasa/__init__.py +9 -0
- rasa/__main__.py +177 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +160 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +106 -0
- rasa/cli/arguments/default_arguments.py +207 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +219 -0
- rasa/cli/arguments/shell.py +17 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +279 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +354 -0
- rasa/cli/dialogue_understanding_test.py +251 -0
- rasa/cli/e2e_test.py +259 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +75 -0
- rasa/cli/interactive.py +166 -0
- rasa/cli/license.py +65 -0
- rasa/cli/llm_fine_tuning.py +403 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +10 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +58 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
- rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +12 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
- rasa/cli/project_templates/tutorial/domain.yml +35 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
- rasa/cli/run.py +143 -0
- rasa/cli/scaffold.py +273 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +296 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +62 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +278 -0
- rasa/cli/utils.py +484 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +45 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1318 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_hangup.py +29 -0
- rasa/core/actions/action_repeat_bot_messages.py +89 -0
- rasa/core/actions/action_run_slot_rejections.py +210 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +191 -0
- rasa/core/actions/direct_custom_actions_executor.py +109 -0
- rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +145 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +559 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +324 -0
- rasa/core/brokers/pika.py +388 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +61 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +456 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +197 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-861ddd57.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-42ba3e3d.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-89e6403a.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-bdf5f29b.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
- rasa/core/channels/inspector/dist/index.html +42 -0
- rasa/core/channels/inspector/index.html +40 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +52 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +220 -0
- rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +84 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6249 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +230 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +302 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/voice_ready/__init__.py +0 -0
- rasa/core/channels/voice_ready/audiocodes.py +501 -0
- rasa/core/channels/voice_ready/jambonz.py +121 -0
- rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
- rasa/core/channels/voice_ready/twilio_voice.py +403 -0
- rasa/core/channels/voice_ready/utils.py +37 -0
- rasa/core/channels/voice_stream/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
- rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
- rasa/core/channels/voice_stream/asr/azure.py +130 -0
- rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
- rasa/core/channels/voice_stream/audio_bytes.py +8 -0
- rasa/core/channels/voice_stream/browser_audio.py +107 -0
- rasa/core/channels/voice_stream/call_state.py +23 -0
- rasa/core/channels/voice_stream/tts/__init__.py +0 -0
- rasa/core/channels/voice_stream/tts/azure.py +106 -0
- rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
- rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
- rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
- rasa/core/channels/voice_stream/util.py +57 -0
- rasa/core/channels/voice_stream/voice_channel.py +427 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +112 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +124 -0
- rasa/core/information_retrieval/information_retrieval.py +137 -0
- rasa/core/information_retrieval/milvus.py +59 -0
- rasa/core/information_retrieval/qdrant.py +96 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +320 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +70 -0
- rasa/core/persistor.py +538 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +905 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +754 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +1031 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1465 -0
- rasa/core/run.py +342 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +36 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +241 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +584 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1703 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1744 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +366 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +61 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
- rasa/dialogue_understanding/commands/restart_command.py +58 -0
- rasa/dialogue_understanding/commands/session_end_command.py +61 -0
- rasa/dialogue_understanding/commands/session_start_command.py +59 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
- rasa/dialogue_understanding/commands/utils.py +45 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +464 -0
- rasa/dialogue_understanding/generator/constants.py +27 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +920 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +486 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/repeat.py +37 -0
- rasa/dialogue_understanding/patterns/restart.py +37 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/session_start.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/patterns/user_silence.py +37 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +720 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/dialogue_understanding/utils.py +14 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +12 -0
- rasa/dialogue_understanding_test/constants.py +17 -0
- rasa/dialogue_understanding_test/du_test_case.py +118 -0
- rasa/dialogue_understanding_test/du_test_result.py +11 -0
- rasa/dialogue_understanding_test/du_test_runner.py +93 -0
- rasa/dialogue_understanding_test/io.py +54 -0
- rasa/dialogue_understanding_test/validation.py +22 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
- rasa/e2e_test/assertions.py +1345 -0
- rasa/e2e_test/assertions_schema.yml +129 -0
- rasa/e2e_test/constants.py +31 -0
- rasa/e2e_test/e2e_config.py +220 -0
- rasa/e2e_test/e2e_config_schema.yml +26 -0
- rasa/e2e_test/e2e_test_case.py +569 -0
- rasa/e2e_test/e2e_test_converter.py +363 -0
- rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
- rasa/e2e_test/e2e_test_coverage_report.py +364 -0
- rasa/e2e_test/e2e_test_result.py +54 -0
- rasa/e2e_test/e2e_test_runner.py +1192 -0
- rasa/e2e_test/e2e_test_schema.yml +181 -0
- rasa/e2e_test/pykwalify_extensions.py +39 -0
- rasa/e2e_test/stub_custom_action.py +70 -0
- rasa/e2e_test/utils/__init__.py +0 -0
- rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
- rasa/e2e_test/utils/io.py +598 -0
- rasa/e2e_test/utils/validation.py +178 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +642 -0
- rasa/engine/loader.py +48 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +41 -0
- rasa/engine/recipes/default_components.py +97 -0
- rasa/engine/recipes/default_recipe.py +1272 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +244 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +199 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +1451 -0
- rasa/env.py +14 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +96 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +111 -0
- rasa/jupyter.py +63 -0
- rasa/llm_fine_tuning/__init__.py +0 -0
- rasa/llm_fine_tuning/annotation_module.py +241 -0
- rasa/llm_fine_tuning/conversations.py +144 -0
- rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
- rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
- rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
- rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
- rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
- rasa/llm_fine_tuning/storage.py +174 -0
- rasa/llm_fine_tuning/train_test_split_module.py +441 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +40 -0
- rasa/model_manager/model_api.py +559 -0
- rasa/model_manager/runner_service.py +286 -0
- rasa/model_manager/socket_bridge.py +146 -0
- rasa/model_manager/studio_jwt_auth.py +86 -0
- rasa/model_manager/trainer_service.py +325 -0
- rasa/model_manager/utils.py +87 -0
- rasa/model_manager/warm_rasa_process.py +187 -0
- rasa/model_service.py +112 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +596 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1588 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +311 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +180 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2172 -0
- rasa/shared/core/events.py +2559 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +562 -0
- rasa/shared/core/flows/flow_path.py +84 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +258 -0
- rasa/shared/core/flows/flows_yaml_schema.json +303 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/utils.py +39 -0
- rasa/shared/core/flows/validation.py +735 -0
- rasa/shared/core/flows/yaml_flows_io.py +405 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +654 -0
- rasa/shared/core/trackers.py +1183 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +858 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +167 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +770 -0
- rasa/shared/importers/multi_project.py +215 -0
- rasa/shared/importers/rasa.py +108 -0
- rasa/shared/importers/remote_importer.py +196 -0
- rasa/shared/importers/utils.py +36 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +53 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +729 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/_configs/__init__.py +0 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +677 -0
- rasa/shared/providers/_configs/client_config.py +59 -0
- rasa/shared/providers/_configs/default_litellm_client_config.py +132 -0
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +236 -0
- rasa/shared/providers/_configs/litellm_router_client_config.py +222 -0
- rasa/shared/providers/_configs/model_group_config.py +173 -0
- rasa/shared/providers/_configs/openai_client_config.py +177 -0
- rasa/shared/providers/_configs/rasa_llm_client_config.py +75 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +178 -0
- rasa/shared/providers/_configs/utils.py +117 -0
- rasa/shared/providers/_ssl_verification_utils.py +124 -0
- rasa/shared/providers/_utils.py +79 -0
- rasa/shared/providers/constants.py +7 -0
- rasa/shared/providers/embedding/__init__.py +0 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
- rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +335 -0
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
- rasa/shared/providers/embedding/embedding_client.py +90 -0
- rasa/shared/providers/embedding/embedding_response.py +41 -0
- rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +138 -0
- rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
- rasa/shared/providers/llm/__init__.py +0 -0
- rasa/shared/providers/llm/_base_litellm_client.py +265 -0
- rasa/shared/providers/llm/azure_openai_llm_client.py +415 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +110 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +202 -0
- rasa/shared/providers/llm/llm_client.py +78 -0
- rasa/shared/providers/llm/llm_response.py +50 -0
- rasa/shared/providers/llm/openai_llm_client.py +161 -0
- rasa/shared/providers/llm/rasa_llm_client.py +120 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +276 -0
- rasa/shared/providers/mappings.py +94 -0
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +185 -0
- rasa/shared/providers/router/router_client.py +75 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +102 -0
- rasa/shared/utils/common.py +324 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
- rasa/shared/utils/health_check/health_check.py +258 -0
- rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
- rasa/shared/utils/io.py +499 -0
- rasa/shared/utils/llm.py +764 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +214 -0
- rasa/shared/utils/schemas/model_config.yml +36 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +1068 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +270 -0
- rasa/studio/config.py +136 -0
- rasa/studio/constants.py +19 -0
- rasa/studio/data_handler.py +368 -0
- rasa/studio/download.py +489 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +134 -0
- rasa/studio/upload.py +563 -0
- rasa/telemetry.py +1876 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +355 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +765 -0
- rasa/tracing/instrumentation/instrumentation.py +1306 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +639 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +331 -0
- rasa/utils/io.py +252 -0
- rasa/utils/json_utils.py +60 -0
- rasa/utils/licensing.py +542 -0
- rasa/utils/log_utils.py +181 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +147 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/sanic_error_handler.py +32 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1644 -0
- rasa/version.py +3 -0
- rasa_pro-3.12.0.dev1.dist-info/METADATA +199 -0
- rasa_pro-3.12.0.dev1.dist-info/NOTICE +5 -0
- rasa_pro-3.12.0.dev1.dist-info/RECORD +790 -0
- rasa_pro-3.12.0.dev1.dist-info/WHEEL +4 -0
- rasa_pro-3.12.0.dev1.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, List, Protocol, runtime_checkable
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@runtime_checkable
|
|
7
|
+
class RouterClient(Protocol):
|
|
8
|
+
"""
|
|
9
|
+
Protocol for a Router client that specifies the interface for interacting
|
|
10
|
+
with the API.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
@classmethod
|
|
14
|
+
def from_config(cls, config: dict) -> RouterClient:
|
|
15
|
+
"""
|
|
16
|
+
Initializes the router client with the given configuration.
|
|
17
|
+
|
|
18
|
+
This class method should be implemented to parse the given
|
|
19
|
+
configuration and create an instance of an router client.
|
|
20
|
+
"""
|
|
21
|
+
...
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def config(self) -> Dict:
|
|
25
|
+
"""
|
|
26
|
+
Returns the configuration for that the router client is initialized with.
|
|
27
|
+
|
|
28
|
+
This property should be implemented to return a dictionary containing
|
|
29
|
+
the client configuration settings for the router client.
|
|
30
|
+
"""
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def router_settings(self) -> Dict[str, Any]:
|
|
35
|
+
"""
|
|
36
|
+
Returns the router settings for the Router client.
|
|
37
|
+
|
|
38
|
+
This property should be implemented to return a dictionary containing
|
|
39
|
+
the router settings for the router client.
|
|
40
|
+
"""
|
|
41
|
+
...
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def model_group_id(self) -> str:
|
|
45
|
+
"""
|
|
46
|
+
Returns the model group ID for the Router client.
|
|
47
|
+
|
|
48
|
+
This property should be implemented to return the model group ID
|
|
49
|
+
for the router client.
|
|
50
|
+
"""
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def model_configurations(self) -> List[Dict[str, Any]]:
|
|
55
|
+
"""
|
|
56
|
+
Returns the list of model configurations for the Router client.
|
|
57
|
+
|
|
58
|
+
This property should be implemented to return the list of model configurations
|
|
59
|
+
for the router client as a list of dictionaries.
|
|
60
|
+
|
|
61
|
+
Each dictionary should contain the model configuration.
|
|
62
|
+
Ideally, the `ModelGroupConfig` should parse the model configurations
|
|
63
|
+
and generate this list of dictionaries.
|
|
64
|
+
"""
|
|
65
|
+
...
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def router_client(self) -> object:
|
|
69
|
+
"""
|
|
70
|
+
Returns the instantiated Router client.
|
|
71
|
+
|
|
72
|
+
This property should be implemented to return the instantiated
|
|
73
|
+
Router client.
|
|
74
|
+
"""
|
|
75
|
+
...
|
|
File without changes
|
rasa/shared/utils/cli.py
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import shutil
|
|
3
|
+
import sys
|
|
4
|
+
from typing import Any, Text, NoReturn
|
|
5
|
+
|
|
6
|
+
import rasa.shared.utils.io
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def print_color(*args: Any, color: Text) -> None:
|
|
10
|
+
"""Print the given arguments to STDOUT in the specified color.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
args: A list of objects to be printed.
|
|
14
|
+
color: A textual representation of the color.
|
|
15
|
+
"""
|
|
16
|
+
output = rasa.shared.utils.io.wrap_with_color(*args, color=color)
|
|
17
|
+
stream = sys.stdout
|
|
18
|
+
if sys.platform == "win32":
|
|
19
|
+
# colorama is used to fix a regression where colors can not be printed on
|
|
20
|
+
# windows. https://github.com/RasaHQ/rasa/issues/7053
|
|
21
|
+
from colorama import AnsiToWin32
|
|
22
|
+
|
|
23
|
+
stream = AnsiToWin32(sys.stdout).stream
|
|
24
|
+
try:
|
|
25
|
+
print(output, file=stream)
|
|
26
|
+
except BlockingIOError:
|
|
27
|
+
rasa.shared.utils.io.handle_print_blocking(output)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def print_success(*args: Any) -> None:
|
|
31
|
+
"""Print the given arguments to STDOUT in green, indicating success.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
args: A list of objects to be printed.
|
|
35
|
+
"""
|
|
36
|
+
print_color(*args, color=rasa.shared.utils.io.bcolors.OKGREEN)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def print_info(*args: Any) -> None:
|
|
40
|
+
"""Print the given arguments to STDOUT in blue.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
args: A list of objects to be printed.
|
|
44
|
+
"""
|
|
45
|
+
print_color(*args, color=rasa.shared.utils.io.bcolors.OKBLUE)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def print_warning(*args: Any) -> None:
|
|
49
|
+
"""Print the given arguments to STDOUT in a color indicating a warning.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
args: A list of objects to be printed.
|
|
53
|
+
"""
|
|
54
|
+
print_color(*args, color=rasa.shared.utils.io.bcolors.WARNING)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def print_error(*args: Any) -> None:
|
|
58
|
+
"""Print the given arguments to STDOUT in a color indicating an error.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
args: A list of objects to be printed.
|
|
62
|
+
"""
|
|
63
|
+
print_color(*args, color=rasa.shared.utils.io.bcolors.FAIL)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def print_error_and_exit(message: Text, exit_code: int = 1) -> NoReturn:
|
|
67
|
+
"""Print an error message and exit the application.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
message: The error message to be printed.
|
|
71
|
+
exit_code: The program exit code, defaults to 1.
|
|
72
|
+
"""
|
|
73
|
+
print_error(message)
|
|
74
|
+
sys.exit(exit_code)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def pad(text: Text, char: Text = "=", min: int = 3) -> Text:
|
|
78
|
+
"""Pad text to a certain length.
|
|
79
|
+
|
|
80
|
+
Uses `char` to pad the text to the specified length. If the text is longer
|
|
81
|
+
than the specified length, at least `min` are used.
|
|
82
|
+
|
|
83
|
+
The padding is applied to the left and right of the text (almost) equally.
|
|
84
|
+
|
|
85
|
+
Example:
|
|
86
|
+
>>> pad("Hello")
|
|
87
|
+
"========= Hello ========"
|
|
88
|
+
>>> pad("Hello", char="-")
|
|
89
|
+
"--------- Hello --------"
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
text: Text to pad.
|
|
93
|
+
min: Minimum length of the padding.
|
|
94
|
+
char: Character to pad with.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
Padded text.
|
|
98
|
+
"""
|
|
99
|
+
width = shutil.get_terminal_size((80, 20)).columns
|
|
100
|
+
padding = max(width - len(text) - 2, min * 2)
|
|
101
|
+
|
|
102
|
+
return char * (padding // 2) + " " + text + " " + char * math.ceil(padding / 2)
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import functools
|
|
3
|
+
import importlib
|
|
4
|
+
import inspect
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import pkgutil
|
|
8
|
+
import sys
|
|
9
|
+
from types import ModuleType
|
|
10
|
+
from typing import Sequence, Text, Dict, Optional, Any, List, Callable, Collection, Type
|
|
11
|
+
|
|
12
|
+
import rasa.shared.utils.io
|
|
13
|
+
from rasa.exceptions import MissingDependencyException
|
|
14
|
+
from rasa.shared.constants import DOCS_URL_MIGRATION_GUIDE
|
|
15
|
+
from rasa.shared.exceptions import ProviderClientValidationError, RasaException
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def class_from_module_path(
|
|
21
|
+
module_path: Text, lookup_path: Optional[Text] = None
|
|
22
|
+
) -> Type:
|
|
23
|
+
"""Given the module name and path of a class, tries to retrieve the class.
|
|
24
|
+
|
|
25
|
+
The loaded class can be used to instantiate new objects.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
module_path: either an absolute path to a Python class,
|
|
29
|
+
or the name of the class in the local / global scope.
|
|
30
|
+
lookup_path: a path where to load the class from, if it cannot
|
|
31
|
+
be found in the local / global scope.
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
a Python class
|
|
35
|
+
|
|
36
|
+
Raises:
|
|
37
|
+
ImportError, in case the Python class cannot be found.
|
|
38
|
+
RasaException, in case the imported result is something other than a class
|
|
39
|
+
"""
|
|
40
|
+
warn_and_exit_if_module_path_contains_rasa_plus(module_path, lookup_path)
|
|
41
|
+
|
|
42
|
+
klass = None
|
|
43
|
+
if "." in module_path:
|
|
44
|
+
module_name, _, class_name = module_path.rpartition(".")
|
|
45
|
+
m = importlib.import_module(module_name)
|
|
46
|
+
klass = getattr(m, class_name, None)
|
|
47
|
+
elif lookup_path:
|
|
48
|
+
# try to import the class from the lookup path
|
|
49
|
+
m = importlib.import_module(lookup_path)
|
|
50
|
+
klass = getattr(m, module_path, None)
|
|
51
|
+
|
|
52
|
+
if klass is None:
|
|
53
|
+
raise ImportError(f"Cannot retrieve class from path {module_path}.")
|
|
54
|
+
|
|
55
|
+
if not inspect.isclass(klass):
|
|
56
|
+
raise RasaException(
|
|
57
|
+
f"`class_from_module_path()` is expected to return a class, "
|
|
58
|
+
f"but for {module_path} we got a {type(klass)}."
|
|
59
|
+
)
|
|
60
|
+
return klass
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def import_package_modules(package_name: str) -> List[ModuleType]:
|
|
64
|
+
"""Import all modules in a package."""
|
|
65
|
+
package = importlib.import_module(package_name)
|
|
66
|
+
return [
|
|
67
|
+
importlib.import_module(f"{package_name}.{module_name}")
|
|
68
|
+
for _, module_name, _ in pkgutil.iter_modules(package.__path__)
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def all_subclasses(cls: Any) -> List[Any]:
|
|
73
|
+
"""Returns all known (imported) subclasses of a class."""
|
|
74
|
+
classes = cls.__subclasses__() + [
|
|
75
|
+
g for s in cls.__subclasses__() for g in all_subclasses(s)
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
return [subclass for subclass in classes if not inspect.isabstract(subclass)]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def module_path_from_instance(inst: Any) -> Text:
|
|
82
|
+
"""Return the module path of an instance's class."""
|
|
83
|
+
return inst.__module__ + "." + inst.__class__.__name__
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def sort_list_of_dicts_by_first_key(dicts: List[Dict]) -> List[Dict]:
|
|
87
|
+
"""Sorts a list of dictionaries by their first key."""
|
|
88
|
+
return sorted(dicts, key=lambda d: next(iter(d.keys())))
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def cached_method(f: Callable[..., Any]) -> Callable[..., Any]:
|
|
92
|
+
"""Caches method calls based on the call's `args` and `kwargs`.
|
|
93
|
+
Works for `async` and `sync` methods. Don't apply this to functions.
|
|
94
|
+
Args:
|
|
95
|
+
f: The decorated method whose return value should be cached.
|
|
96
|
+
Returns:
|
|
97
|
+
The return value which the method gives for the first call with the given
|
|
98
|
+
arguments.
|
|
99
|
+
"""
|
|
100
|
+
assert "self" in arguments_of(f), "This decorator can only be used with methods."
|
|
101
|
+
|
|
102
|
+
class Cache:
|
|
103
|
+
"""Helper class to abstract the caching details."""
|
|
104
|
+
|
|
105
|
+
def __init__(self, caching_object: object, args: Any, kwargs: Any) -> None:
|
|
106
|
+
self.caching_object = caching_object
|
|
107
|
+
self.cache = getattr(caching_object, self._cache_name(), {})
|
|
108
|
+
# noinspection PyUnresolvedReferences
|
|
109
|
+
self.cache_key = functools._make_key(args, kwargs, typed=False)
|
|
110
|
+
|
|
111
|
+
def _cache_name(self) -> Text:
|
|
112
|
+
return f"_cached_{self.caching_object.__class__.__name__}_{f.__name__}"
|
|
113
|
+
|
|
114
|
+
def is_cached(self) -> bool:
|
|
115
|
+
return self.cache_key in self.cache
|
|
116
|
+
|
|
117
|
+
def cache_result(self, result: Any) -> None:
|
|
118
|
+
self.cache[self.cache_key] = result
|
|
119
|
+
setattr(self.caching_object, self._cache_name(), self.cache)
|
|
120
|
+
|
|
121
|
+
def cached_result(self) -> Any:
|
|
122
|
+
return self.cache[self.cache_key]
|
|
123
|
+
|
|
124
|
+
if asyncio.iscoroutinefunction(f):
|
|
125
|
+
|
|
126
|
+
@functools.wraps(f)
|
|
127
|
+
async def decorated(self: object, *args: Any, **kwargs: Any) -> Any:
|
|
128
|
+
cache = Cache(self, args, kwargs)
|
|
129
|
+
if not cache.is_cached():
|
|
130
|
+
# Store the task immediately so that other concurrent calls of the
|
|
131
|
+
# method can re-use the same task and don't schedule a second execution.
|
|
132
|
+
to_cache = asyncio.ensure_future(f(self, *args, **kwargs))
|
|
133
|
+
cache.cache_result(to_cache)
|
|
134
|
+
return await cache.cached_result()
|
|
135
|
+
|
|
136
|
+
return decorated
|
|
137
|
+
else:
|
|
138
|
+
|
|
139
|
+
@functools.wraps(f)
|
|
140
|
+
def decorated(self: object, *args: Any, **kwargs: Any) -> Any:
|
|
141
|
+
cache = Cache(self, args, kwargs)
|
|
142
|
+
if not cache.is_cached():
|
|
143
|
+
to_cache = f(self, *args, **kwargs)
|
|
144
|
+
cache.cache_result(to_cache)
|
|
145
|
+
return cache.cached_result()
|
|
146
|
+
|
|
147
|
+
return decorated
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def transform_collection_to_sentence(collection: Collection[Text]) -> Text:
|
|
151
|
+
"""Transforms e.g. a list like ['A', 'B', 'C'] into a sentence 'A, B and C'."""
|
|
152
|
+
x = list(collection)
|
|
153
|
+
if len(x) >= 2:
|
|
154
|
+
return ", ".join(map(str, x[:-1])) + " and " + x[-1]
|
|
155
|
+
return "".join(collection)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def minimal_kwargs(
|
|
159
|
+
kwargs: Dict[Text, Any], func: Callable, excluded_keys: Optional[List] = None
|
|
160
|
+
) -> Dict[Text, Any]:
|
|
161
|
+
"""Returns only the kwargs which are required by a function.
|
|
162
|
+
|
|
163
|
+
Keys, contained in the exception list, are not included.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
kwargs: All available kwargs.
|
|
167
|
+
func: The function which should be called.
|
|
168
|
+
excluded_keys: Keys to exclude from the result.
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
Subset of kwargs which are accepted by `func`.
|
|
172
|
+
|
|
173
|
+
"""
|
|
174
|
+
excluded_keys = excluded_keys or []
|
|
175
|
+
|
|
176
|
+
possible_arguments = arguments_of(func)
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
k: v
|
|
180
|
+
for k, v in kwargs.items()
|
|
181
|
+
if k in possible_arguments and k not in excluded_keys
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def mark_as_experimental_feature(feature_name: Text) -> None:
|
|
186
|
+
"""Warns users that they are using an experimental feature."""
|
|
187
|
+
logger.warning(
|
|
188
|
+
f"The {feature_name} is currently experimental and might change or be "
|
|
189
|
+
"removed in the future 🔬 Please share your feedback on it in the "
|
|
190
|
+
"forum (https://forum.rasa.com) to help us make this feature "
|
|
191
|
+
"ready for production."
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def mark_as_beta_feature(feature_name: Text) -> None:
|
|
196
|
+
"""Warns users that they are using a beta feature."""
|
|
197
|
+
logger.warning(
|
|
198
|
+
f"🔬 Beta Feature: {feature_name} is in beta. It may have unexpected "
|
|
199
|
+
"behaviour and might be changed in the future."
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def arguments_of(func: Callable) -> List[Text]:
|
|
204
|
+
"""Return the parameters of the function `func` as a list of names."""
|
|
205
|
+
import inspect
|
|
206
|
+
|
|
207
|
+
return list(inspect.signature(func).parameters.keys())
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def extract_duplicates(list1: List[Any], list2: List[Any]) -> List[Any]:
|
|
211
|
+
"""Extracts duplicates from two lists."""
|
|
212
|
+
if list1:
|
|
213
|
+
dict1 = {
|
|
214
|
+
(sorted(list(i.keys()))[0] if isinstance(i, dict) else i): i for i in list1
|
|
215
|
+
}
|
|
216
|
+
else:
|
|
217
|
+
dict1 = {}
|
|
218
|
+
|
|
219
|
+
if list2:
|
|
220
|
+
dict2 = {
|
|
221
|
+
(sorted(list(i.keys()))[0] if isinstance(i, dict) else i): i for i in list2
|
|
222
|
+
}
|
|
223
|
+
else:
|
|
224
|
+
dict2 = {}
|
|
225
|
+
|
|
226
|
+
set1 = set(dict1.keys())
|
|
227
|
+
set2 = set(dict2.keys())
|
|
228
|
+
dupes = set1.intersection(set2)
|
|
229
|
+
return sorted(list(dupes))
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def clean_duplicates(dupes: Dict[Text, Any]) -> Dict[Text, Any]:
|
|
233
|
+
"""Removes keys for empty values."""
|
|
234
|
+
duplicates = dupes.copy()
|
|
235
|
+
for k in dupes:
|
|
236
|
+
if not dupes[k]:
|
|
237
|
+
duplicates.pop(k)
|
|
238
|
+
|
|
239
|
+
return duplicates
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def merge_dicts(
|
|
243
|
+
tempDict1: Dict[Text, Any],
|
|
244
|
+
tempDict2: Dict[Text, Any],
|
|
245
|
+
override_existing_values: bool = False,
|
|
246
|
+
) -> Dict[Text, Any]:
|
|
247
|
+
"""Merges two dicts."""
|
|
248
|
+
if override_existing_values:
|
|
249
|
+
merged_dicts, b = tempDict1.copy(), tempDict2.copy()
|
|
250
|
+
|
|
251
|
+
else:
|
|
252
|
+
merged_dicts, b = tempDict2.copy(), tempDict1.copy()
|
|
253
|
+
merged_dicts.update(b)
|
|
254
|
+
return merged_dicts
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def merge_lists(
|
|
258
|
+
list1: List[Any], list2: List[Any], override: bool = False
|
|
259
|
+
) -> List[Any]:
|
|
260
|
+
"""Merges two lists."""
|
|
261
|
+
return sorted(list(set(list1 + list2)))
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def merge_lists_of_dicts(
|
|
265
|
+
dict_list1: List[Dict],
|
|
266
|
+
dict_list2: List[Dict],
|
|
267
|
+
override_existing_values: bool = False,
|
|
268
|
+
) -> List[Dict]:
|
|
269
|
+
"""Merges two dict lists."""
|
|
270
|
+
dict1 = {
|
|
271
|
+
(sorted(list(i.keys()))[0] if isinstance(i, dict) else i): i for i in dict_list1
|
|
272
|
+
}
|
|
273
|
+
dict2 = {
|
|
274
|
+
(sorted(list(i.keys()))[0] if isinstance(i, dict) else i): i for i in dict_list2
|
|
275
|
+
}
|
|
276
|
+
merged_dicts = merge_dicts(dict1, dict2, override_existing_values)
|
|
277
|
+
return list(merged_dicts.values())
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def warn_and_exit_if_module_path_contains_rasa_plus(
|
|
281
|
+
module_path: Text, lookup_path: Optional[str] = None
|
|
282
|
+
) -> None:
|
|
283
|
+
"""Warns and exits if the module path contains `rasa_plus`.
|
|
284
|
+
|
|
285
|
+
Args:
|
|
286
|
+
module_path: The module path to check.
|
|
287
|
+
lookup_path: The lookup path to check.
|
|
288
|
+
"""
|
|
289
|
+
if "rasa_plus" in module_path.lower() or (
|
|
290
|
+
lookup_path and "rasa_plus" in lookup_path.lower()
|
|
291
|
+
):
|
|
292
|
+
rasa.shared.utils.io.raise_warning(
|
|
293
|
+
f"Your module path '{module_path}' contains 'rasa_plus'. "
|
|
294
|
+
f"The path to this Rasa Pro component has changed, please "
|
|
295
|
+
f"follow the migration guide in the official documentation "
|
|
296
|
+
f"to update your code: ",
|
|
297
|
+
docs=DOCS_URL_MIGRATION_GUIDE,
|
|
298
|
+
)
|
|
299
|
+
sys.exit(1)
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def validate_environment(
|
|
303
|
+
required_env_vars: Sequence[str],
|
|
304
|
+
required_packages: Sequence[str],
|
|
305
|
+
component_name: str,
|
|
306
|
+
) -> None:
|
|
307
|
+
"""Make sure all needed requirements for a component are met.
|
|
308
|
+
Args:
|
|
309
|
+
required_env_vars: List of environment variables that should be set
|
|
310
|
+
required_packages: List of packages that should be installed
|
|
311
|
+
component_name: component name that needs the requirements
|
|
312
|
+
"""
|
|
313
|
+
for e in required_env_vars:
|
|
314
|
+
if not os.environ.get(e):
|
|
315
|
+
raise ProviderClientValidationError(
|
|
316
|
+
f"Missing environment variable for {component_name}: {e}"
|
|
317
|
+
)
|
|
318
|
+
for p in required_packages:
|
|
319
|
+
try:
|
|
320
|
+
importlib.import_module(p)
|
|
321
|
+
except ImportError:
|
|
322
|
+
raise MissingDependencyException(
|
|
323
|
+
f"Missing package for {component_name}: {p}"
|
|
324
|
+
)
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from typing import Optional, Dict, Any
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class EmbeddingsHealthCheckMixin:
|
|
5
|
+
"""Mixin class that provides methods for performing embeddings health checks during
|
|
6
|
+
training and inference within components.
|
|
7
|
+
|
|
8
|
+
This mixin offers static methods that wrap the following health check functions:
|
|
9
|
+
- `perform_embeddings_health_check`
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
@staticmethod
|
|
13
|
+
def perform_embeddings_health_check(
|
|
14
|
+
custom_embeddings_config: Optional[Dict[str, Any]],
|
|
15
|
+
default_embeddings_config: Dict[str, Any],
|
|
16
|
+
log_source_method: str,
|
|
17
|
+
log_source_component: str,
|
|
18
|
+
) -> None:
|
|
19
|
+
"""Wraps the `perform_embeddings_health_check` function to enable
|
|
20
|
+
tracing and instrumentation.
|
|
21
|
+
"""
|
|
22
|
+
from rasa.shared.utils.health_check.health_check import (
|
|
23
|
+
perform_embeddings_health_check,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
perform_embeddings_health_check(
|
|
27
|
+
custom_embeddings_config,
|
|
28
|
+
default_embeddings_config,
|
|
29
|
+
log_source_method,
|
|
30
|
+
log_source_component,
|
|
31
|
+
)
|