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,215 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from functools import reduce
|
|
3
|
+
from typing import Any, Dict, List, Optional, Set, Text, Union
|
|
4
|
+
|
|
5
|
+
import structlog
|
|
6
|
+
|
|
7
|
+
import rasa.shared.data
|
|
8
|
+
import rasa.shared.utils.io
|
|
9
|
+
from rasa.shared.core.domain import Domain
|
|
10
|
+
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
11
|
+
YAMLStoryReader,
|
|
12
|
+
)
|
|
13
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
14
|
+
from rasa.shared.importers import utils
|
|
15
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
16
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
17
|
+
from rasa.shared.utils.common import cached_method, mark_as_experimental_feature
|
|
18
|
+
from rasa.shared.utils.yaml import read_config_file, read_model_configuration
|
|
19
|
+
|
|
20
|
+
structlogger = structlog.get_logger()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class MultiProjectImporter(TrainingDataImporter):
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
config_file: Text,
|
|
27
|
+
domain_path: Optional[Text] = None,
|
|
28
|
+
training_data_paths: Optional[Union[List[Text], Text]] = None,
|
|
29
|
+
project_directory: Optional[Text] = None,
|
|
30
|
+
):
|
|
31
|
+
self.config = read_model_configuration(config_file)
|
|
32
|
+
if domain_path:
|
|
33
|
+
self._domain_paths = [domain_path]
|
|
34
|
+
else:
|
|
35
|
+
self._domain_paths = []
|
|
36
|
+
self._story_paths = []
|
|
37
|
+
self._e2e_story_paths: List[Text] = []
|
|
38
|
+
self._nlu_paths = []
|
|
39
|
+
self._imports: List[Text] = []
|
|
40
|
+
self._additional_paths = training_data_paths or []
|
|
41
|
+
self._project_directory = project_directory or os.path.dirname(config_file)
|
|
42
|
+
|
|
43
|
+
self._init_from_dict(self.config, self._project_directory)
|
|
44
|
+
|
|
45
|
+
extra_nlu_files = rasa.shared.data.get_data_files(
|
|
46
|
+
training_data_paths, rasa.shared.data.is_nlu_file
|
|
47
|
+
)
|
|
48
|
+
extra_story_files = rasa.shared.data.get_data_files(
|
|
49
|
+
training_data_paths, YAMLStoryReader.is_stories_file
|
|
50
|
+
)
|
|
51
|
+
self._story_paths += extra_story_files
|
|
52
|
+
self._nlu_paths += extra_nlu_files
|
|
53
|
+
|
|
54
|
+
structlogger.debug(
|
|
55
|
+
"multi_project_importer.initialisation",
|
|
56
|
+
event_info=(
|
|
57
|
+
"Selected projects: {}".format(
|
|
58
|
+
"".join([f"\n-{i}" for i in self._imports])
|
|
59
|
+
)
|
|
60
|
+
),
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
mark_as_experimental_feature(feature_name="MultiProjectImporter")
|
|
64
|
+
|
|
65
|
+
def get_config_file_for_auto_config(self) -> Optional[Text]:
|
|
66
|
+
"""Returns config file path for auto-config only if there is a single one."""
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
def _init_from_path(self, path: Text) -> None:
|
|
70
|
+
if os.path.isfile(path):
|
|
71
|
+
self._init_from_file(path)
|
|
72
|
+
elif os.path.isdir(path):
|
|
73
|
+
self._init_from_directory(path)
|
|
74
|
+
|
|
75
|
+
def _init_from_file(self, path: Text) -> None:
|
|
76
|
+
path = os.path.abspath(path)
|
|
77
|
+
if os.path.exists(path) and rasa.shared.data.is_config_file(path):
|
|
78
|
+
config = read_config_file(path)
|
|
79
|
+
|
|
80
|
+
parent_directory = os.path.dirname(path)
|
|
81
|
+
self._init_from_dict(config, parent_directory)
|
|
82
|
+
else:
|
|
83
|
+
rasa.shared.utils.io.raise_warning(
|
|
84
|
+
f"'{path}' does not exist or is not a valid config file."
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
def _init_from_dict(self, _dict: Dict[Text, Any], parent_directory: Text) -> None:
|
|
88
|
+
imports = _dict.get("imports") or []
|
|
89
|
+
imports = [os.path.join(parent_directory, i) for i in imports]
|
|
90
|
+
# clean out relative paths
|
|
91
|
+
imports = [os.path.abspath(i) for i in imports]
|
|
92
|
+
|
|
93
|
+
# remove duplication
|
|
94
|
+
import_candidates = []
|
|
95
|
+
for i in imports:
|
|
96
|
+
if i not in import_candidates and not self._is_explicitly_imported(i):
|
|
97
|
+
import_candidates.append(i)
|
|
98
|
+
|
|
99
|
+
self._imports.extend(import_candidates)
|
|
100
|
+
|
|
101
|
+
# import config files from paths which have not been processed so far
|
|
102
|
+
for p in import_candidates:
|
|
103
|
+
self._init_from_path(p)
|
|
104
|
+
|
|
105
|
+
def _is_explicitly_imported(self, path: Text) -> bool:
|
|
106
|
+
return not self.no_skills_selected() and self.is_imported(path)
|
|
107
|
+
|
|
108
|
+
def _init_from_directory(self, path: Text) -> None:
|
|
109
|
+
for parent, _, files in os.walk(path, followlinks=True):
|
|
110
|
+
for file in files:
|
|
111
|
+
full_path = os.path.join(parent, file)
|
|
112
|
+
if not self.is_imported(full_path):
|
|
113
|
+
# Check next file
|
|
114
|
+
continue
|
|
115
|
+
|
|
116
|
+
if YAMLStoryReader.is_test_stories_file(full_path):
|
|
117
|
+
self._e2e_story_paths.append(full_path)
|
|
118
|
+
elif Domain.is_domain_file(full_path):
|
|
119
|
+
self._domain_paths.append(full_path)
|
|
120
|
+
elif rasa.shared.data.is_nlu_file(full_path):
|
|
121
|
+
self._nlu_paths.append(full_path)
|
|
122
|
+
elif YAMLStoryReader.is_stories_file(full_path):
|
|
123
|
+
self._story_paths.append(full_path)
|
|
124
|
+
elif rasa.shared.data.is_config_file(full_path):
|
|
125
|
+
self._init_from_file(full_path)
|
|
126
|
+
|
|
127
|
+
def no_skills_selected(self) -> bool:
|
|
128
|
+
return not self._imports
|
|
129
|
+
|
|
130
|
+
def training_paths(self) -> Set[Text]:
|
|
131
|
+
"""Returns the paths which should be searched for training data."""
|
|
132
|
+
# only include extra paths if they are not part of the current project directory
|
|
133
|
+
training_paths = {
|
|
134
|
+
i
|
|
135
|
+
for i in self._imports
|
|
136
|
+
if not self._project_directory or self._project_directory not in i
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if self._project_directory:
|
|
140
|
+
training_paths.add(self._project_directory)
|
|
141
|
+
|
|
142
|
+
return training_paths
|
|
143
|
+
|
|
144
|
+
@cached_method
|
|
145
|
+
def is_imported(self, path: Text) -> bool:
|
|
146
|
+
"""Checks whether a path is imported by a skill.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
path: File or directory path which should be checked.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
`True` if path is imported by a skill, `False` if not.
|
|
153
|
+
"""
|
|
154
|
+
absolute_path = os.path.abspath(path)
|
|
155
|
+
|
|
156
|
+
return (
|
|
157
|
+
self.no_skills_selected()
|
|
158
|
+
or self._is_in_project_directory(absolute_path)
|
|
159
|
+
or self._is_in_additional_paths(absolute_path)
|
|
160
|
+
or self._is_in_imported_paths(absolute_path)
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
def _is_in_project_directory(self, path: Text) -> bool:
|
|
164
|
+
if os.path.isfile(path):
|
|
165
|
+
parent_directory = os.path.abspath(os.path.dirname(path))
|
|
166
|
+
|
|
167
|
+
return parent_directory == self._project_directory
|
|
168
|
+
else:
|
|
169
|
+
return path == self._project_directory
|
|
170
|
+
|
|
171
|
+
def _is_in_additional_paths(self, path: Text) -> bool:
|
|
172
|
+
included = path in self._additional_paths
|
|
173
|
+
|
|
174
|
+
if not included and os.path.isfile(path):
|
|
175
|
+
parent_directory = os.path.abspath(os.path.dirname(path))
|
|
176
|
+
included = parent_directory in self._additional_paths
|
|
177
|
+
|
|
178
|
+
return included
|
|
179
|
+
|
|
180
|
+
def _is_in_imported_paths(self, path: Text) -> bool:
|
|
181
|
+
return any(
|
|
182
|
+
[rasa.shared.utils.io.is_subdirectory(path, i) for i in self._imports]
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
@cached_method
|
|
186
|
+
def get_domain(self) -> Domain:
|
|
187
|
+
"""Retrieves model domain (see parent class for full docstring)."""
|
|
188
|
+
domains = [Domain.load(path) for path in self._domain_paths]
|
|
189
|
+
return reduce(
|
|
190
|
+
lambda merged, other: merged.merge(other),
|
|
191
|
+
domains,
|
|
192
|
+
Domain.empty(),
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
@cached_method
|
|
196
|
+
def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
|
|
197
|
+
"""Retrieves training stories / rules (see parent class for full docstring)."""
|
|
198
|
+
return utils.story_graph_from_paths(
|
|
199
|
+
self._story_paths, self.get_domain(), exclusion_percentage
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
@cached_method
|
|
203
|
+
def get_conversation_tests(self) -> StoryGraph:
|
|
204
|
+
"""Retrieves conversation test stories (see parent class for full docstring)."""
|
|
205
|
+
return utils.story_graph_from_paths(self._e2e_story_paths, self.get_domain())
|
|
206
|
+
|
|
207
|
+
@cached_method
|
|
208
|
+
def get_config(self) -> Dict:
|
|
209
|
+
"""Retrieves model config (see parent class for full docstring)."""
|
|
210
|
+
return self.config
|
|
211
|
+
|
|
212
|
+
@cached_method
|
|
213
|
+
def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
|
|
214
|
+
"""Retrieves NLU training data (see parent class for full docstring)."""
|
|
215
|
+
return utils.training_data_from_paths(self._nlu_paths, language)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import os
|
|
3
|
+
from typing import Dict, List, Optional, Text, Union
|
|
4
|
+
|
|
5
|
+
import rasa.shared.core.flows.yaml_flows_io
|
|
6
|
+
from rasa.shared.core.flows import FlowsList
|
|
7
|
+
|
|
8
|
+
import rasa.shared.data
|
|
9
|
+
import rasa.shared.utils.io
|
|
10
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
11
|
+
from rasa.shared.importers import utils
|
|
12
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
13
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
14
|
+
from rasa.shared.core.domain import InvalidDomain, Domain
|
|
15
|
+
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
16
|
+
YAMLStoryReader,
|
|
17
|
+
)
|
|
18
|
+
from rasa.shared.utils.common import cached_method
|
|
19
|
+
from rasa.shared.utils.yaml import read_model_configuration
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class RasaFileImporter(TrainingDataImporter):
|
|
25
|
+
"""Default `TrainingFileImporter` implementation."""
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
config_file: Optional[Text] = None,
|
|
30
|
+
domain_path: Optional[Text] = None,
|
|
31
|
+
training_data_paths: Optional[Union[List[Text], Text]] = None,
|
|
32
|
+
expand_env_vars: bool = True,
|
|
33
|
+
):
|
|
34
|
+
self.expand_env_vars = expand_env_vars
|
|
35
|
+
self._domain_path = domain_path
|
|
36
|
+
|
|
37
|
+
self._nlu_files = rasa.shared.data.get_data_files(
|
|
38
|
+
training_data_paths, rasa.shared.data.is_nlu_file
|
|
39
|
+
)
|
|
40
|
+
self._story_files = rasa.shared.data.get_data_files(
|
|
41
|
+
training_data_paths, YAMLStoryReader.is_stories_file
|
|
42
|
+
)
|
|
43
|
+
self._flow_files = rasa.shared.data.get_data_files(
|
|
44
|
+
training_data_paths, rasa.shared.core.flows.yaml_flows_io.is_flows_file
|
|
45
|
+
)
|
|
46
|
+
self._conversation_test_files = rasa.shared.data.get_data_files(
|
|
47
|
+
training_data_paths, YAMLStoryReader.is_test_stories_file
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
self.config_file = config_file
|
|
51
|
+
|
|
52
|
+
@cached_method
|
|
53
|
+
def get_config(self) -> Dict:
|
|
54
|
+
"""Retrieves model config (see parent class for full docstring)."""
|
|
55
|
+
if not self.config_file or not os.path.exists(self.config_file):
|
|
56
|
+
logger.debug("No configuration file was provided to the RasaFileImporter.")
|
|
57
|
+
return {}
|
|
58
|
+
|
|
59
|
+
config = read_model_configuration(
|
|
60
|
+
self.config_file, expand_env_vars=self.expand_env_vars
|
|
61
|
+
)
|
|
62
|
+
return config
|
|
63
|
+
|
|
64
|
+
def get_config_file_for_auto_config(self) -> Optional[Text]:
|
|
65
|
+
"""Returns config file path for auto-config only if there is a single one."""
|
|
66
|
+
return self.config_file
|
|
67
|
+
|
|
68
|
+
@cached_method
|
|
69
|
+
def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
|
|
70
|
+
"""Retrieves training stories / rules (see parent class for full docstring)."""
|
|
71
|
+
return utils.story_graph_from_paths(
|
|
72
|
+
self._story_files, self.get_domain(), exclusion_percentage
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
@cached_method
|
|
76
|
+
def get_flows(self) -> FlowsList:
|
|
77
|
+
"""Retrieves training stories / rules (see parent class for full docstring)."""
|
|
78
|
+
return utils.flows_from_paths(self._flow_files)
|
|
79
|
+
|
|
80
|
+
@cached_method
|
|
81
|
+
def get_conversation_tests(self) -> StoryGraph:
|
|
82
|
+
"""Retrieves conversation test stories (see parent class for full docstring)."""
|
|
83
|
+
return utils.story_graph_from_paths(
|
|
84
|
+
self._conversation_test_files, self.get_domain()
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
@cached_method
|
|
88
|
+
def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
|
|
89
|
+
"""Retrieves NLU training data (see parent class for full docstring)."""
|
|
90
|
+
return utils.training_data_from_paths(self._nlu_files, language)
|
|
91
|
+
|
|
92
|
+
@cached_method
|
|
93
|
+
def get_domain(self) -> Domain:
|
|
94
|
+
"""Retrieves model domain (see parent class for full docstring)."""
|
|
95
|
+
domain = Domain.empty()
|
|
96
|
+
|
|
97
|
+
# If domain path is None, return an empty domain
|
|
98
|
+
if not self._domain_path:
|
|
99
|
+
return domain
|
|
100
|
+
try:
|
|
101
|
+
domain = Domain.load(self._domain_path)
|
|
102
|
+
except InvalidDomain as e:
|
|
103
|
+
rasa.shared.utils.io.raise_warning(
|
|
104
|
+
f"Loading domain from '{self._domain_path}' failed. Using "
|
|
105
|
+
f"empty domain. Error: '{e}'"
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
return domain
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Dict, List, Optional, Text, Union
|
|
3
|
+
|
|
4
|
+
import structlog
|
|
5
|
+
from tarsafe import TarSafe
|
|
6
|
+
|
|
7
|
+
import rasa.shared.core.flows.yaml_flows_io
|
|
8
|
+
import rasa.shared.data
|
|
9
|
+
import rasa.shared.utils.common
|
|
10
|
+
import rasa.shared.utils.io
|
|
11
|
+
from rasa.core.persistor import StorageType
|
|
12
|
+
from rasa.shared.core.domain import Domain, InvalidDomain
|
|
13
|
+
from rasa.shared.core.flows import FlowsList
|
|
14
|
+
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
15
|
+
YAMLStoryReader,
|
|
16
|
+
)
|
|
17
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
18
|
+
from rasa.shared.exceptions import RasaException
|
|
19
|
+
from rasa.shared.importers import utils
|
|
20
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
21
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
22
|
+
from rasa.shared.utils.yaml import read_model_configuration
|
|
23
|
+
|
|
24
|
+
structlogger = structlog.get_logger()
|
|
25
|
+
|
|
26
|
+
TRAINING_DATA_ARCHIVE = "training_data.tar.gz"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class RemoteTrainingDataImporter(TrainingDataImporter):
|
|
30
|
+
"""Remote `TrainingFileImporter` implementation.
|
|
31
|
+
|
|
32
|
+
Fetches training data from a remote storage and extracts it to a local directory.
|
|
33
|
+
Extracted training data is then used to load flows, NLU, stories,
|
|
34
|
+
domain, and config files.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(
|
|
38
|
+
self,
|
|
39
|
+
config_file: Optional[Text] = None,
|
|
40
|
+
domain_path: Optional[Text] = None,
|
|
41
|
+
training_data_paths: Optional[Union[List[Text], Text]] = None,
|
|
42
|
+
project_directory: Optional[Text] = None,
|
|
43
|
+
remote_storage: Optional[StorageType] = None,
|
|
44
|
+
training_data_path: Optional[Text] = None,
|
|
45
|
+
):
|
|
46
|
+
"""Initializes `RemoteTrainingDataImporter`.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
config_file: Path to the model configuration file.
|
|
50
|
+
domain_path: Path to the domain file.
|
|
51
|
+
training_data_paths: List of paths to the training data files.
|
|
52
|
+
project_directory: Path to the project directory.
|
|
53
|
+
remote_storage: Storage to use to load the training data.
|
|
54
|
+
training_data_path: Path to the training data.
|
|
55
|
+
"""
|
|
56
|
+
self.remote_storage = remote_storage
|
|
57
|
+
self.training_data_path = training_data_path
|
|
58
|
+
|
|
59
|
+
self.extracted_path = self._fetch_and_extract_training_archive(
|
|
60
|
+
TRAINING_DATA_ARCHIVE, self.training_data_path
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
self._nlu_files = rasa.shared.data.get_data_files(
|
|
64
|
+
self.extracted_path, rasa.shared.data.is_nlu_file
|
|
65
|
+
)
|
|
66
|
+
self._story_files = rasa.shared.data.get_data_files(
|
|
67
|
+
self.extracted_path, YAMLStoryReader.is_stories_file
|
|
68
|
+
)
|
|
69
|
+
self._flow_files = rasa.shared.data.get_data_files(
|
|
70
|
+
self.extracted_path, rasa.shared.core.flows.yaml_flows_io.is_flows_file
|
|
71
|
+
)
|
|
72
|
+
self._conversation_test_files = rasa.shared.data.get_data_files(
|
|
73
|
+
self.extracted_path, YAMLStoryReader.is_test_stories_file
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
self.config_file = config_file
|
|
77
|
+
|
|
78
|
+
def _fetch_training_archive(
|
|
79
|
+
self, training_file: str, training_data_path: Optional[str] = None
|
|
80
|
+
) -> str:
|
|
81
|
+
"""Fetches training files from remote storage."""
|
|
82
|
+
from rasa.core.persistor import get_persistor
|
|
83
|
+
|
|
84
|
+
persistor = get_persistor(self.remote_storage)
|
|
85
|
+
if persistor is None:
|
|
86
|
+
raise RasaException(
|
|
87
|
+
f"Could not find a persistor for "
|
|
88
|
+
f"the storage type '{self.remote_storage}'."
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
return persistor.retrieve(training_file, training_data_path)
|
|
92
|
+
|
|
93
|
+
def _fetch_and_extract_training_archive(
|
|
94
|
+
self, training_file: str, training_data_path: Optional[Text] = None
|
|
95
|
+
) -> Optional[str]:
|
|
96
|
+
"""Fetches and extracts training files from remote storage.
|
|
97
|
+
|
|
98
|
+
If the `training_data_path` is not provided, the training
|
|
99
|
+
data is extracted to the current working directory.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
training_file: Name of the training data archive file.
|
|
103
|
+
training_data_path: Path to the training data.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Path to the extracted training data.
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
if training_data_path is None:
|
|
110
|
+
training_data_path = os.path.join(os.getcwd(), "data")
|
|
111
|
+
|
|
112
|
+
if os.path.isfile(training_data_path):
|
|
113
|
+
raise ValueError(
|
|
114
|
+
f"Training data path '{training_data_path}' is a file. "
|
|
115
|
+
f"Please provide a directory path."
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
structlogger.debug(
|
|
119
|
+
"rasa.importers.remote_training_data_importer.fetch_training_archive",
|
|
120
|
+
training_data_path=training_data_path,
|
|
121
|
+
)
|
|
122
|
+
training_archive_file_path = self._fetch_training_archive(
|
|
123
|
+
training_file, training_data_path
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
if not os.path.isfile(training_archive_file_path):
|
|
127
|
+
raise FileNotFoundError(
|
|
128
|
+
f"Training data archive '{training_archive_file_path}' not found. "
|
|
129
|
+
f"Please make sure to provide the correct path."
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
structlogger.debug(
|
|
133
|
+
"rasa.importers.remote_training_data_importer.extract_training_archive",
|
|
134
|
+
training_archive_file_path=training_archive_file_path,
|
|
135
|
+
training_data_path=training_data_path,
|
|
136
|
+
)
|
|
137
|
+
with TarSafe.open(training_archive_file_path, "r:gz") as tar:
|
|
138
|
+
tar.extractall(path=training_data_path)
|
|
139
|
+
|
|
140
|
+
structlogger.debug(
|
|
141
|
+
"rasa.importers.remote_training_data_importer.remove_downloaded_archive",
|
|
142
|
+
training_data_path=training_data_path,
|
|
143
|
+
)
|
|
144
|
+
os.remove(training_archive_file_path)
|
|
145
|
+
return training_data_path
|
|
146
|
+
|
|
147
|
+
def get_config(self) -> Dict:
|
|
148
|
+
"""Retrieves model config (see parent class for full docstring)."""
|
|
149
|
+
if not self.config_file or not os.path.exists(self.config_file):
|
|
150
|
+
structlogger.debug(
|
|
151
|
+
"rasa.importers.remote_training_data_importer.no_config_file",
|
|
152
|
+
message="No configuration file was provided to the RasaFileImporter.",
|
|
153
|
+
)
|
|
154
|
+
return {}
|
|
155
|
+
|
|
156
|
+
config = read_model_configuration(self.config_file)
|
|
157
|
+
return config
|
|
158
|
+
|
|
159
|
+
@rasa.shared.utils.common.cached_method
|
|
160
|
+
def get_config_file_for_auto_config(self) -> Optional[Text]:
|
|
161
|
+
"""Returns config file path for auto-config only if there is a single one."""
|
|
162
|
+
return self.config_file
|
|
163
|
+
|
|
164
|
+
def get_stories(self, exclusion_percentage: Optional[int] = None) -> StoryGraph:
|
|
165
|
+
"""Retrieves training stories / rules (see parent class for full docstring)."""
|
|
166
|
+
return utils.story_graph_from_paths(
|
|
167
|
+
self._story_files, self.get_domain(), exclusion_percentage
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
def get_flows(self) -> FlowsList:
|
|
171
|
+
"""Retrieves training stories / rules (see parent class for full docstring)."""
|
|
172
|
+
return utils.flows_from_paths(self._flow_files)
|
|
173
|
+
|
|
174
|
+
def get_conversation_tests(self) -> StoryGraph:
|
|
175
|
+
"""Retrieves conversation test stories (see parent class for full docstring)."""
|
|
176
|
+
return utils.story_graph_from_paths(
|
|
177
|
+
self._conversation_test_files, self.get_domain()
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
|
|
181
|
+
"""Retrieves NLU training data (see parent class for full docstring)."""
|
|
182
|
+
return utils.training_data_from_paths(self._nlu_files, language)
|
|
183
|
+
|
|
184
|
+
def get_domain(self) -> Domain:
|
|
185
|
+
"""Retrieves model domain (see parent class for full docstring)."""
|
|
186
|
+
domain = Domain.empty()
|
|
187
|
+
domain_path = f"{self.extracted_path}"
|
|
188
|
+
try:
|
|
189
|
+
domain = Domain.load(domain_path)
|
|
190
|
+
except InvalidDomain as e:
|
|
191
|
+
rasa.shared.utils.io.raise_warning(
|
|
192
|
+
f"Loading domain from '{domain_path}' failed. Using "
|
|
193
|
+
f"empty domain. Error: '{e}'"
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
return domain
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from typing import Iterable, Text, Optional, List
|
|
2
|
+
|
|
3
|
+
from rasa.shared.core.domain import Domain
|
|
4
|
+
from rasa.shared.core.flows import FlowsList
|
|
5
|
+
from rasa.shared.core.training_data.structures import StoryGraph
|
|
6
|
+
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def training_data_from_paths(paths: Iterable[Text], language: Text) -> TrainingData:
|
|
10
|
+
from rasa.shared.nlu.training_data import loading
|
|
11
|
+
|
|
12
|
+
training_data_sets = [loading.load_data(nlu_file, language) for nlu_file in paths]
|
|
13
|
+
return TrainingData().merge(*training_data_sets)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def story_graph_from_paths(
|
|
17
|
+
files: List[Text], domain: Domain, exclusion_percentage: Optional[int] = None
|
|
18
|
+
) -> StoryGraph:
|
|
19
|
+
"""Returns the `StoryGraph` from paths."""
|
|
20
|
+
from rasa.shared.core.training_data import loading
|
|
21
|
+
|
|
22
|
+
story_steps = loading.load_data_from_files(files, domain, exclusion_percentage)
|
|
23
|
+
return StoryGraph(story_steps)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def flows_from_paths(files: List[Text]) -> FlowsList:
|
|
27
|
+
"""Returns the flows from paths."""
|
|
28
|
+
from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
|
|
29
|
+
|
|
30
|
+
flows = FlowsList(underlying_flows=[])
|
|
31
|
+
for file in files:
|
|
32
|
+
flows = flows.merge(
|
|
33
|
+
YAMLFlowsReader.read_from_file(file), ignore_duplicates=False
|
|
34
|
+
)
|
|
35
|
+
flows.validate()
|
|
36
|
+
return flows
|
|
File without changes
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
TEXT = "text"
|
|
2
|
+
TEXT_TOKENS = "text_tokens"
|
|
3
|
+
INTENT = "intent"
|
|
4
|
+
COMMANDS = "commands"
|
|
5
|
+
PREDICTED_COMMANDS = "predicted_commands"
|
|
6
|
+
PROMPTS = "prompts"
|
|
7
|
+
KEY_USER_PROMPT = "user_prompt"
|
|
8
|
+
KEY_SYSTEM_PROMPT = "system_prompt"
|
|
9
|
+
LLM_COMMANDS = "llm_commands" # needed for fine-tuning
|
|
10
|
+
LLM_PROMPT = "llm_prompt" # needed for fine-tuning
|
|
11
|
+
FLOWS_FROM_SEMANTIC_SEARCH = "flows_from_semantic_search"
|
|
12
|
+
FLOWS_IN_PROMPT = "flows_in_prompt"
|
|
13
|
+
NOT_INTENT = "not_intent"
|
|
14
|
+
RESPONSE = "response"
|
|
15
|
+
RESPONSE_SELECTOR = "response_selector"
|
|
16
|
+
INTENT_RESPONSE_KEY = "intent_response_key"
|
|
17
|
+
ACTION_TEXT = "action_text"
|
|
18
|
+
ACTION_NAME = "action_name"
|
|
19
|
+
INTENT_NAME_KEY = "name"
|
|
20
|
+
FULL_RETRIEVAL_INTENT_NAME_KEY = "full_retrieval_intent_name"
|
|
21
|
+
METADATA = "metadata"
|
|
22
|
+
METADATA_INTENT = "intent"
|
|
23
|
+
METADATA_EXAMPLE = "example"
|
|
24
|
+
METADATA_MODEL_ID = "model_id"
|
|
25
|
+
INTENT_RANKING_KEY = "intent_ranking"
|
|
26
|
+
PREDICTED_CONFIDENCE_KEY = "confidence"
|
|
27
|
+
|
|
28
|
+
RESPONSE_IDENTIFIER_DELIMITER = "/"
|
|
29
|
+
|
|
30
|
+
FEATURE_TYPE_SENTENCE = "sentence"
|
|
31
|
+
FEATURE_TYPE_SEQUENCE = "sequence"
|
|
32
|
+
VALID_FEATURE_TYPES = [FEATURE_TYPE_SEQUENCE, FEATURE_TYPE_SENTENCE]
|
|
33
|
+
|
|
34
|
+
EXTRACTOR = "extractor"
|
|
35
|
+
PRETRAINED_EXTRACTORS = {"DucklingEntityExtractor", "SpacyEntityExtractor"}
|
|
36
|
+
TRAINABLE_EXTRACTORS = {"MitieEntityExtractor", "CRFEntityExtractor", "DIETClassifier"}
|
|
37
|
+
|
|
38
|
+
ENTITIES = "entities"
|
|
39
|
+
ENTITY_TAGS = "entity_tags"
|
|
40
|
+
ENTITY_ATTRIBUTE_TYPE = "entity"
|
|
41
|
+
ENTITY_ATTRIBUTE_GROUP = "group"
|
|
42
|
+
ENTITY_ATTRIBUTE_ROLE = "role"
|
|
43
|
+
ENTITY_ATTRIBUTE_VALUE = "value"
|
|
44
|
+
ENTITY_ATTRIBUTE_START = "start"
|
|
45
|
+
ENTITY_ATTRIBUTE_END = "end"
|
|
46
|
+
ENTITY_ATTRIBUTE_TEXT = "text"
|
|
47
|
+
ENTITY_ATTRIBUTE_CONFIDENCE = "confidence"
|
|
48
|
+
NO_ENTITY_TAG = "O"
|
|
49
|
+
SPLIT_ENTITIES_BY_COMMA = "split_entities_by_comma"
|
|
50
|
+
SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE = True
|
|
51
|
+
SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET = {".", ",", " ", ";"}
|
|
52
|
+
|
|
53
|
+
SET_SLOT_COMMAND = "set slot"
|
|
File without changes
|