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
rasa/env.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# A central place to define all environment variables used by Rasa
|
|
2
|
+
|
|
3
|
+
AUTH_TOKEN_ENV = "AUTH_TOKEN"
|
|
4
|
+
JWT_SECRET_ENV = "JWT_SECRET"
|
|
5
|
+
JWT_METHOD_ENV = "JWT_METHOD"
|
|
6
|
+
DEFAULT_JWT_METHOD = "HS256"
|
|
7
|
+
JWT_PRIVATE_KEY_ENV = "JWT_PRIVATE_KEY"
|
|
8
|
+
|
|
9
|
+
REMOTE_STORAGE_PATH_ENV = "REMOTE_STORAGE_PATH"
|
|
10
|
+
BUCKET_NAME_ENV = "BUCKET_NAME"
|
|
11
|
+
AWS_ENDPOINT_URL_ENV = "AWS_ENDPOINT_URL"
|
|
12
|
+
AZURE_CONTAINER_ENV = "AZURE_CONTAINER"
|
|
13
|
+
AZURE_ACCOUNT_NAME_ENV = "AZURE_ACCOUNT_NAME"
|
|
14
|
+
AZURE_ACCOUNT_KEY_ENV = "AZURE_ACCOUNT_KEY"
|
rasa/exceptions.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
from typing import Text
|
|
2
|
+
from packaging import version
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
|
|
5
|
+
from rasa.shared.exceptions import RasaException
|
|
6
|
+
from rasa.constants import MINIMUM_COMPATIBLE_VERSION
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class UnsupportedModelVersionError(RasaException):
|
|
11
|
+
"""Raised when a model is too old to be loaded.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
model_version: the used model version that is not supported and triggered
|
|
15
|
+
this exception
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
model_version: Text
|
|
19
|
+
|
|
20
|
+
def __str__(self) -> Text:
|
|
21
|
+
minimum_version = version.parse(MINIMUM_COMPATIBLE_VERSION)
|
|
22
|
+
return (
|
|
23
|
+
f"The model version is trained using Rasa Pro {self.model_version} "
|
|
24
|
+
f"and is not compatible with your current installation "
|
|
25
|
+
f"which supports models build with Rasa Pro {minimum_version} "
|
|
26
|
+
f"or higher. "
|
|
27
|
+
f"This means that you either need to retrain your model "
|
|
28
|
+
f"or revert back to the Rasa version that trained the model "
|
|
29
|
+
f"to ensure that the versions match up again."
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class ModelNotFound(RasaException):
|
|
34
|
+
"""Raised when a model is not found in the path provided by the user."""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class NoEventsToMigrateError(RasaException):
|
|
38
|
+
"""Raised when no events to be migrated are found."""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class NoConversationsInTrackerStoreError(RasaException):
|
|
42
|
+
"""Raised when a tracker store does not contain any conversations."""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class NoEventsInTimeRangeError(RasaException):
|
|
46
|
+
"""Raised when a tracker store does not contain events within a given time range."""
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class MissingDependencyException(RasaException):
|
|
50
|
+
"""Raised if a python package dependency is needed, but not installed."""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@dataclass
|
|
54
|
+
class PublishingError(RasaException):
|
|
55
|
+
"""Raised when publishing of an event fails.
|
|
56
|
+
|
|
57
|
+
Attributes:
|
|
58
|
+
timestamp -- Unix timestamp of the event during which publishing fails.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
timestamp: float
|
|
62
|
+
|
|
63
|
+
def __str__(self) -> Text:
|
|
64
|
+
"""Returns string representation of exception."""
|
|
65
|
+
return str(self.timestamp)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class ActionLimitReached(RasaException):
|
|
69
|
+
"""Raised when predicted action limit is reached."""
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Dict, Text, Any, List
|
|
3
|
+
|
|
4
|
+
from rasa.core.channels.channel import UserMessage
|
|
5
|
+
|
|
6
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
7
|
+
from rasa.engine.storage.resource import Resource
|
|
8
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
9
|
+
from rasa.shared.nlu.constants import TEXT, TEXT_TOKENS
|
|
10
|
+
from rasa.shared.nlu.training_data.message import Message
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class NLUMessageConverter(GraphComponent):
|
|
14
|
+
"""Converts the user message into a NLU Message object."""
|
|
15
|
+
|
|
16
|
+
@classmethod
|
|
17
|
+
def create(
|
|
18
|
+
cls,
|
|
19
|
+
config: Dict[Text, Any],
|
|
20
|
+
model_storage: ModelStorage,
|
|
21
|
+
resource: Resource,
|
|
22
|
+
execution_context: ExecutionContext,
|
|
23
|
+
) -> NLUMessageConverter:
|
|
24
|
+
"""Creates component (see parent class for full docstring)."""
|
|
25
|
+
return cls()
|
|
26
|
+
|
|
27
|
+
def convert_user_message(self, messages: List[UserMessage]) -> List[Message]:
|
|
28
|
+
"""Converts user message into Message object.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
messages: The user messages which should be converted to be processed by
|
|
32
|
+
the NLU components.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
List containing only one instance of Message.
|
|
36
|
+
Else empty list if user message is None.
|
|
37
|
+
"""
|
|
38
|
+
return [
|
|
39
|
+
Message(
|
|
40
|
+
data={
|
|
41
|
+
TEXT: message.text,
|
|
42
|
+
"message_id": message.message_id,
|
|
43
|
+
"metadata": message.metadata,
|
|
44
|
+
},
|
|
45
|
+
output_properties={TEXT_TOKENS},
|
|
46
|
+
)
|
|
47
|
+
for message in messages
|
|
48
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import copy
|
|
4
|
+
from typing import Dict, Text, Any
|
|
5
|
+
|
|
6
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
7
|
+
from rasa.engine.storage.resource import Resource
|
|
8
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
9
|
+
from rasa.shared.constants import REQUIRED_SLOTS_KEY
|
|
10
|
+
from rasa.shared.core.domain import KEY_RESPONSES, Domain, SESSION_CONFIG_KEY, KEY_FORMS
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DomainForCoreTrainingProvider(GraphComponent):
|
|
14
|
+
"""Provides domain without information that is irrelevant for core training.
|
|
15
|
+
|
|
16
|
+
The information that we retain includes:
|
|
17
|
+
- intents and their "used" and "ignored" entities because intents influence the
|
|
18
|
+
next action prediction directly and the latter flags determine whether the
|
|
19
|
+
listed entities influence the next action prediction
|
|
20
|
+
- entities, their roles and groups, and their `influence_conversation` flag because
|
|
21
|
+
all of those items are used by policies
|
|
22
|
+
- slots names along with their types, since this type information determines the
|
|
23
|
+
pre-featurization of slot values
|
|
24
|
+
- response keys (i.e. `utter_*) because those keys may appear in stories
|
|
25
|
+
- form names because those appear in stories
|
|
26
|
+
- how slots are filled (i.e. 'mappings' key under 'slots') because a domain instance
|
|
27
|
+
needs to be created by core during training time to parse the training data
|
|
28
|
+
properly
|
|
29
|
+
|
|
30
|
+
This information that we drop (or replace with default values) includes:
|
|
31
|
+
- the 'session_config' which determines details of a session e.g. whether data is
|
|
32
|
+
transferred from one session to the next (this is replaced with defaults as it
|
|
33
|
+
cannot just be removed)
|
|
34
|
+
- the actual text of a 'response' because those are only used by response selectors
|
|
35
|
+
- the actual configuration of 'forms' because those are not actually executed
|
|
36
|
+
by core components
|
|
37
|
+
|
|
38
|
+
References:
|
|
39
|
+
- `rasa.core.featurizer.tracker_featurizer.py` (used by all policies)
|
|
40
|
+
- `rasa.core.featurizer.single_state_featurizer.py` (used by ML policies)
|
|
41
|
+
- `rasa.shared.core.domain.get_active_state` (used by above references)
|
|
42
|
+
- `rasa.shared.core.slots.as_features` (used by above references)
|
|
43
|
+
- `rasa.shared.core.training_data.structures.StoryStep.explicit_events`
|
|
44
|
+
(i.e. slots needed for core training)
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def create(
|
|
49
|
+
cls,
|
|
50
|
+
config: Dict[Text, Any],
|
|
51
|
+
model_storage: ModelStorage,
|
|
52
|
+
resource: Resource,
|
|
53
|
+
execution_context: ExecutionContext,
|
|
54
|
+
) -> DomainForCoreTrainingProvider:
|
|
55
|
+
"""Creates component (see parent class for full docstring)."""
|
|
56
|
+
return cls()
|
|
57
|
+
|
|
58
|
+
def provide(self, domain: Domain) -> Domain:
|
|
59
|
+
"""Recreates the given domain but drops information that is irrelevant for core.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
domain: A domain.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
A similar domain without information that is irrelevant for core training.
|
|
66
|
+
"""
|
|
67
|
+
return self.create_pruned_version(domain)
|
|
68
|
+
|
|
69
|
+
@staticmethod
|
|
70
|
+
def create_pruned_version(domain: Domain) -> Domain:
|
|
71
|
+
"""Recreates the given domain but drops information that is irrelevant for core.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
domain: A domain.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
A similar domain without information that is irrelevant for core training.
|
|
78
|
+
"""
|
|
79
|
+
serialized_domain = copy.deepcopy(domain.as_dict())
|
|
80
|
+
|
|
81
|
+
serialized_domain.pop("config", None) # `store_entities_as_slots`
|
|
82
|
+
serialized_domain.pop(SESSION_CONFIG_KEY, None)
|
|
83
|
+
for response_name in serialized_domain.get(KEY_RESPONSES, []):
|
|
84
|
+
serialized_domain[KEY_RESPONSES][response_name] = []
|
|
85
|
+
for form_name in serialized_domain.get(KEY_FORMS, []):
|
|
86
|
+
serialized_domain[KEY_FORMS][form_name] = {REQUIRED_SLOTS_KEY: []}
|
|
87
|
+
return Domain.from_dict(serialized_domain)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Dict, Text, Any, Optional
|
|
3
|
+
|
|
4
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
5
|
+
from rasa.engine.storage.resource import Resource
|
|
6
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
7
|
+
from rasa.shared.core.domain import Domain
|
|
8
|
+
from rasa.shared.exceptions import InvalidConfigException
|
|
9
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DomainProvider(GraphComponent):
|
|
13
|
+
"""Provides domain during training and inference time."""
|
|
14
|
+
|
|
15
|
+
def __init__(
|
|
16
|
+
self,
|
|
17
|
+
model_storage: ModelStorage,
|
|
18
|
+
resource: Resource,
|
|
19
|
+
domain: Optional[Domain] = None,
|
|
20
|
+
) -> None:
|
|
21
|
+
"""Creates domain provider."""
|
|
22
|
+
self._model_storage = model_storage
|
|
23
|
+
self._resource = resource
|
|
24
|
+
self._domain = domain
|
|
25
|
+
|
|
26
|
+
@classmethod
|
|
27
|
+
def create(
|
|
28
|
+
cls,
|
|
29
|
+
config: Dict[Text, Any],
|
|
30
|
+
model_storage: ModelStorage,
|
|
31
|
+
resource: Resource,
|
|
32
|
+
execution_context: ExecutionContext,
|
|
33
|
+
) -> DomainProvider:
|
|
34
|
+
"""Creates component (see parent class for full docstring)."""
|
|
35
|
+
return cls(model_storage, resource)
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def load(
|
|
39
|
+
cls,
|
|
40
|
+
config: Dict[Text, Any],
|
|
41
|
+
model_storage: ModelStorage,
|
|
42
|
+
resource: Resource,
|
|
43
|
+
execution_context: ExecutionContext,
|
|
44
|
+
**kwargs: Any,
|
|
45
|
+
) -> DomainProvider:
|
|
46
|
+
"""Creates provider using a persisted version of itself."""
|
|
47
|
+
with model_storage.read_from(resource) as resource_directory:
|
|
48
|
+
domain = Domain.from_path(resource_directory)
|
|
49
|
+
return cls(model_storage, resource, domain)
|
|
50
|
+
|
|
51
|
+
def _persist(self, domain: Domain) -> None:
|
|
52
|
+
"""Persists domain to model storage."""
|
|
53
|
+
with self._model_storage.write_to(self._resource) as resource_directory:
|
|
54
|
+
domain.persist(resource_directory / "domain.yml")
|
|
55
|
+
|
|
56
|
+
def provide_train(self, importer: TrainingDataImporter) -> Domain:
|
|
57
|
+
"""Provides domain from training data during training."""
|
|
58
|
+
domain = importer.get_domain()
|
|
59
|
+
self._persist(domain)
|
|
60
|
+
return domain
|
|
61
|
+
|
|
62
|
+
def provide_inference(self) -> Domain:
|
|
63
|
+
"""Provides the domain during inference."""
|
|
64
|
+
if self._domain is None:
|
|
65
|
+
# This can't really happen but if it happens then we fail early
|
|
66
|
+
raise InvalidConfigException(
|
|
67
|
+
"No domain was found. This is required for "
|
|
68
|
+
"making model predictions. Please make sure to "
|
|
69
|
+
"provide a valid domain during training."
|
|
70
|
+
)
|
|
71
|
+
return self._domain
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, Text
|
|
4
|
+
|
|
5
|
+
from rasa.engine.graph import ExecutionContext, GraphComponent
|
|
6
|
+
from rasa.engine.storage.resource import Resource
|
|
7
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
8
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
9
|
+
from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
|
|
10
|
+
|
|
11
|
+
from rasa.shared.core.flows import FlowsList
|
|
12
|
+
|
|
13
|
+
FLOWS_PERSISTENCE_FILE_NAME = "flows.yml"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class FlowsProvider(GraphComponent):
|
|
17
|
+
"""Provides flows information during training and inference time."""
|
|
18
|
+
|
|
19
|
+
def __init__(
|
|
20
|
+
self,
|
|
21
|
+
model_storage: ModelStorage,
|
|
22
|
+
resource: Resource,
|
|
23
|
+
flows: FlowsList,
|
|
24
|
+
) -> None:
|
|
25
|
+
"""Creates flows provider."""
|
|
26
|
+
self._model_storage = model_storage
|
|
27
|
+
self._resource = resource
|
|
28
|
+
self._flows = flows
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def create(
|
|
32
|
+
cls,
|
|
33
|
+
config: Dict[Text, Any],
|
|
34
|
+
model_storage: ModelStorage,
|
|
35
|
+
resource: Resource,
|
|
36
|
+
execution_context: ExecutionContext,
|
|
37
|
+
) -> FlowsProvider:
|
|
38
|
+
"""Creates component (see parent class for full docstring)."""
|
|
39
|
+
return cls(model_storage, resource, flows=FlowsList(underlying_flows=[]))
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def load(
|
|
43
|
+
cls,
|
|
44
|
+
config: Dict[Text, Any],
|
|
45
|
+
model_storage: ModelStorage,
|
|
46
|
+
resource: Resource,
|
|
47
|
+
execution_context: ExecutionContext,
|
|
48
|
+
**kwargs: Any,
|
|
49
|
+
) -> FlowsProvider:
|
|
50
|
+
"""Creates provider using a persisted version of itself."""
|
|
51
|
+
with model_storage.read_from(resource) as resource_directory:
|
|
52
|
+
flows = YAMLFlowsReader.read_from_file(
|
|
53
|
+
resource_directory / FLOWS_PERSISTENCE_FILE_NAME
|
|
54
|
+
)
|
|
55
|
+
flows.validate()
|
|
56
|
+
return cls(model_storage, resource, flows)
|
|
57
|
+
|
|
58
|
+
def _persist(self, flows: FlowsList) -> None:
|
|
59
|
+
"""Persists flows to model storage."""
|
|
60
|
+
with self._model_storage.write_to(self._resource) as resource_directory:
|
|
61
|
+
YamlFlowsWriter.dump(
|
|
62
|
+
flows.underlying_flows,
|
|
63
|
+
resource_directory / FLOWS_PERSISTENCE_FILE_NAME,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def provide_train(self, importer: TrainingDataImporter) -> FlowsList:
|
|
67
|
+
"""Provides flows configuration from training data during training."""
|
|
68
|
+
self._flows = importer.get_flows()
|
|
69
|
+
self._persist(self._flows)
|
|
70
|
+
return self._flows
|
|
71
|
+
|
|
72
|
+
def provide_inference(self) -> FlowsList:
|
|
73
|
+
"""Provides the flows configuration during inference."""
|
|
74
|
+
return self._flows
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import dataclasses
|
|
3
|
+
|
|
4
|
+
from typing import Dict, Text, Any
|
|
5
|
+
|
|
6
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
7
|
+
from rasa.engine.storage.resource import Resource
|
|
8
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
9
|
+
from rasa.shared.core.domain import Domain
|
|
10
|
+
import rasa.shared.utils.io
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class Forms:
|
|
15
|
+
"""Holds the forms of the domain."""
|
|
16
|
+
|
|
17
|
+
data: Dict[Text, Any]
|
|
18
|
+
|
|
19
|
+
def fingerprint(self) -> Text:
|
|
20
|
+
"""Returns a fingerprint of the responses."""
|
|
21
|
+
return rasa.shared.utils.io.get_dictionary_fingerprint(self.data)
|
|
22
|
+
|
|
23
|
+
def get(self, key: Text, default: Any) -> Any:
|
|
24
|
+
"""Returns the value for the given key."""
|
|
25
|
+
return self.data.get(key, default)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class FormsProvider(GraphComponent):
|
|
29
|
+
"""Provides forms during training and inference time."""
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def create(
|
|
33
|
+
cls,
|
|
34
|
+
config: Dict[Text, Any],
|
|
35
|
+
model_storage: ModelStorage,
|
|
36
|
+
resource: Resource,
|
|
37
|
+
execution_context: ExecutionContext,
|
|
38
|
+
) -> FormsProvider:
|
|
39
|
+
"""Creates component (see parent class for full docstring)."""
|
|
40
|
+
return cls()
|
|
41
|
+
|
|
42
|
+
def provide(self, domain: Domain) -> Forms:
|
|
43
|
+
"""Returns the forms from the given domain."""
|
|
44
|
+
return Forms(data=domain.forms)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Dict, Text, Any
|
|
3
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
4
|
+
from rasa.engine.storage.resource import Resource
|
|
5
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
6
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
7
|
+
from rasa.shared.nlu.training_data.training_data import (
|
|
8
|
+
TrainingData,
|
|
9
|
+
DEFAULT_TRAINING_DATA_OUTPUT_PATH,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class NLUTrainingDataProvider(GraphComponent):
|
|
14
|
+
"""Provides NLU training data during training."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self, config: Dict[Text, Any], model_storage: ModelStorage, resource: Resource
|
|
18
|
+
) -> None:
|
|
19
|
+
"""Creates a new NLU training data provider."""
|
|
20
|
+
self._config = config
|
|
21
|
+
self._model_storage = model_storage
|
|
22
|
+
self._resource = resource
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def get_default_config(cls) -> Dict[Text, Any]:
|
|
26
|
+
"""Returns the default config for NLU training data provider."""
|
|
27
|
+
return {"persist": False, "language": None}
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
def create(
|
|
31
|
+
cls,
|
|
32
|
+
config: Dict[Text, Any],
|
|
33
|
+
model_storage: ModelStorage,
|
|
34
|
+
resource: Resource,
|
|
35
|
+
execution_context: ExecutionContext,
|
|
36
|
+
) -> NLUTrainingDataProvider:
|
|
37
|
+
"""Creates a new NLU training data provider."""
|
|
38
|
+
return cls(config, model_storage, resource)
|
|
39
|
+
|
|
40
|
+
def _persist(self, training_data: TrainingData) -> None:
|
|
41
|
+
"""Persists NLU training data to model storage."""
|
|
42
|
+
with self._model_storage.write_to(self._resource) as resource_directory:
|
|
43
|
+
training_data.persist(
|
|
44
|
+
dir_name=str(resource_directory),
|
|
45
|
+
filename=DEFAULT_TRAINING_DATA_OUTPUT_PATH,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
def provide(self, importer: TrainingDataImporter) -> TrainingData:
|
|
49
|
+
"""Provides nlu training data during training."""
|
|
50
|
+
if "language" in self._config:
|
|
51
|
+
training_data = importer.get_nlu_data(language=self._config["language"])
|
|
52
|
+
else:
|
|
53
|
+
training_data = importer.get_nlu_data()
|
|
54
|
+
if self._config["persist"]:
|
|
55
|
+
self._persist(training_data)
|
|
56
|
+
return training_data
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import dataclasses
|
|
3
|
+
|
|
4
|
+
from typing import Dict, List, Text, Any
|
|
5
|
+
|
|
6
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
7
|
+
from rasa.engine.storage.resource import Resource
|
|
8
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
9
|
+
from rasa.shared.core.domain import Domain
|
|
10
|
+
import rasa.shared.utils.io
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class Responses:
|
|
15
|
+
"""Holds the responses of the domain."""
|
|
16
|
+
|
|
17
|
+
data: Dict[Text, List[Dict[Text, Any]]]
|
|
18
|
+
|
|
19
|
+
def fingerprint(self) -> Text:
|
|
20
|
+
"""Returns a fingerprint of the responses."""
|
|
21
|
+
return rasa.shared.utils.io.get_dictionary_fingerprint(self.data)
|
|
22
|
+
|
|
23
|
+
def get(self, key: Text, default: Any) -> Any:
|
|
24
|
+
"""Returns the value for the given key."""
|
|
25
|
+
return self.data.get(key, default)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ResponsesProvider(GraphComponent):
|
|
29
|
+
"""Provides responses during training and inference time."""
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def create(
|
|
33
|
+
cls,
|
|
34
|
+
config: Dict[Text, Any],
|
|
35
|
+
model_storage: ModelStorage,
|
|
36
|
+
resource: Resource,
|
|
37
|
+
execution_context: ExecutionContext,
|
|
38
|
+
) -> ResponsesProvider:
|
|
39
|
+
"""Creates component (see parent class for full docstring)."""
|
|
40
|
+
return cls()
|
|
41
|
+
|
|
42
|
+
def provide(self, domain: Domain) -> Responses:
|
|
43
|
+
"""Returns the responses from the given domain."""
|
|
44
|
+
return Responses(data=domain.responses)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import dataclasses
|
|
3
|
+
import logging
|
|
4
|
+
from typing import Dict, Text, Any
|
|
5
|
+
|
|
6
|
+
import rasa.shared.utils.io
|
|
7
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
8
|
+
from rasa.engine.storage.resource import Resource
|
|
9
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclasses.dataclass
|
|
15
|
+
class RuleOnlyDataProvider(GraphComponent):
|
|
16
|
+
"""Provides slots and loops that are only used in rules to other policies.
|
|
17
|
+
|
|
18
|
+
Policies can use this to exclude features which are only used by rules from the
|
|
19
|
+
featurization.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
rule_only_data: Dict[Text, Any]
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def create(
|
|
26
|
+
cls,
|
|
27
|
+
config: Dict[Text, Any],
|
|
28
|
+
model_storage: ModelStorage,
|
|
29
|
+
resource: Resource,
|
|
30
|
+
execution_context: ExecutionContext,
|
|
31
|
+
) -> RuleOnlyDataProvider:
|
|
32
|
+
"""Creates component (see parent class for docstring)."""
|
|
33
|
+
rule_only_data = {}
|
|
34
|
+
try:
|
|
35
|
+
with model_storage.read_from(resource) as directory:
|
|
36
|
+
rule_only_data = rasa.shared.utils.io.read_json_file(
|
|
37
|
+
directory / "rule_only_data.json"
|
|
38
|
+
)
|
|
39
|
+
except ValueError:
|
|
40
|
+
logger.debug(
|
|
41
|
+
"Failed to load rule-only data from a trained 'RulePolicy'. "
|
|
42
|
+
"Providing empty rule-only data instead."
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
return cls(rule_only_data)
|
|
46
|
+
|
|
47
|
+
def provide(self) -> Dict[Text, Any]:
|
|
48
|
+
"""Provides data to other graph component."""
|
|
49
|
+
return self.rule_only_data
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Dict, Text, Any, List
|
|
3
|
+
|
|
4
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
5
|
+
from rasa.engine.storage.resource import Resource
|
|
6
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
7
|
+
from rasa.shared.core.training_data.structures import StoryGraph, StoryStep
|
|
8
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
9
|
+
from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
|
|
10
|
+
YAMLStoryWriter,
|
|
11
|
+
)
|
|
12
|
+
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
13
|
+
YAMLStoryReader,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
STORIES_PERSISTENCE_FILE_NAME = "stories.yml"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class StoryGraphProvider(GraphComponent):
|
|
21
|
+
"""Provides the training data from stories."""
|
|
22
|
+
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
config: Dict[Text, Any],
|
|
26
|
+
model_storage: ModelStorage,
|
|
27
|
+
resource: Resource,
|
|
28
|
+
stories: StoryGraph = None,
|
|
29
|
+
) -> None:
|
|
30
|
+
"""Creates provider from config."""
|
|
31
|
+
self._config = config
|
|
32
|
+
self._model_storage = model_storage
|
|
33
|
+
self._resource = resource
|
|
34
|
+
self._stories = stories
|
|
35
|
+
|
|
36
|
+
@staticmethod
|
|
37
|
+
def get_default_config() -> Dict[Text, Any]:
|
|
38
|
+
"""Returns default configuration (see parent class for full docstring)."""
|
|
39
|
+
return {"exclusion_percentage": None}
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def create(
|
|
43
|
+
cls,
|
|
44
|
+
config: Dict[Text, Any],
|
|
45
|
+
model_storage: ModelStorage,
|
|
46
|
+
resource: Resource,
|
|
47
|
+
execution_context: ExecutionContext,
|
|
48
|
+
) -> StoryGraphProvider:
|
|
49
|
+
"""Creates component (see parent class for full docstring)."""
|
|
50
|
+
return cls(config, model_storage, resource)
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def load(
|
|
54
|
+
cls,
|
|
55
|
+
config: Dict[Text, Any],
|
|
56
|
+
model_storage: ModelStorage,
|
|
57
|
+
resource: Resource,
|
|
58
|
+
execution_context: ExecutionContext,
|
|
59
|
+
**kwargs: Any,
|
|
60
|
+
) -> StoryGraphProvider:
|
|
61
|
+
"""Creates provider using a persisted version of itself."""
|
|
62
|
+
with model_storage.read_from(resource) as resource_directory:
|
|
63
|
+
reader = YAMLStoryReader()
|
|
64
|
+
story_steps = reader.read_from_file(
|
|
65
|
+
resource_directory / STORIES_PERSISTENCE_FILE_NAME
|
|
66
|
+
)
|
|
67
|
+
stories = StoryGraph(story_steps)
|
|
68
|
+
return cls(config, model_storage, resource, stories)
|
|
69
|
+
|
|
70
|
+
def _persist(self, story_steps: List[StoryStep]) -> None:
|
|
71
|
+
"""Persists flows to model storage."""
|
|
72
|
+
with self._model_storage.write_to(self._resource) as resource_directory:
|
|
73
|
+
writer = YAMLStoryWriter()
|
|
74
|
+
writer.dump(
|
|
75
|
+
resource_directory / STORIES_PERSISTENCE_FILE_NAME,
|
|
76
|
+
story_steps,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def provide_train(self, importer: TrainingDataImporter) -> StoryGraph:
|
|
80
|
+
"""Provides the story graph from the training data.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
importer: instance of TrainingDataImporter.
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
The story graph containing stories and rules used for training.
|
|
87
|
+
"""
|
|
88
|
+
stories = importer.get_stories(**self._config)
|
|
89
|
+
self._persist(stories.story_steps)
|
|
90
|
+
return stories
|
|
91
|
+
|
|
92
|
+
def provide_inference(self) -> StoryGraph:
|
|
93
|
+
"""Provides the stories configuration during inference."""
|
|
94
|
+
if self._stories is None:
|
|
95
|
+
self._stories = StoryGraph([])
|
|
96
|
+
return self._stories
|