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,279 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from typing import Union
|
|
3
|
+
|
|
4
|
+
from rasa.cli.arguments.default_arguments import (
|
|
5
|
+
add_config_param,
|
|
6
|
+
add_stories_param,
|
|
7
|
+
add_nlu_data_param,
|
|
8
|
+
add_out_param,
|
|
9
|
+
add_domain_param,
|
|
10
|
+
add_endpoint_param,
|
|
11
|
+
add_remote_storage_param,
|
|
12
|
+
)
|
|
13
|
+
from rasa.graph_components.providers.training_tracker_provider import (
|
|
14
|
+
TrainingTrackerProvider,
|
|
15
|
+
)
|
|
16
|
+
from rasa.shared.constants import DEFAULT_CONFIG_PATH, DEFAULT_DATA_PATH
|
|
17
|
+
|
|
18
|
+
USE_LATEST_MODEL_FOR_FINE_TUNING = True
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def set_train_arguments(parser: argparse.ArgumentParser) -> None:
|
|
22
|
+
"""Specifies CLI arguments for `rasa train`."""
|
|
23
|
+
add_data_param(parser)
|
|
24
|
+
add_config_param(parser)
|
|
25
|
+
add_domain_param(parser)
|
|
26
|
+
add_out_param(parser, help_text="Directory where your models should be stored.")
|
|
27
|
+
|
|
28
|
+
add_dry_run_param(parser)
|
|
29
|
+
add_validate_before_train(parser)
|
|
30
|
+
add_augmentation_param(parser)
|
|
31
|
+
add_debug_plots_param(parser)
|
|
32
|
+
|
|
33
|
+
_add_num_threads_param(parser)
|
|
34
|
+
|
|
35
|
+
_add_model_name_param(parser)
|
|
36
|
+
add_persist_nlu_data_param(parser)
|
|
37
|
+
add_keep_local_model_copy_param(parser)
|
|
38
|
+
add_force_param(parser)
|
|
39
|
+
add_finetune_params(parser)
|
|
40
|
+
add_endpoint_param(
|
|
41
|
+
parser, help_text="Configuration file for the connectors as a yml file."
|
|
42
|
+
)
|
|
43
|
+
add_remote_storage_param(parser)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def set_train_core_arguments(parser: argparse.ArgumentParser) -> None:
|
|
47
|
+
"""Specifies CLI arguments for `rasa train core`."""
|
|
48
|
+
add_stories_param(parser)
|
|
49
|
+
add_domain_param(parser)
|
|
50
|
+
_add_core_config_param(parser)
|
|
51
|
+
add_out_param(parser, help_text="Directory where your models should be stored.")
|
|
52
|
+
|
|
53
|
+
add_augmentation_param(parser)
|
|
54
|
+
add_debug_plots_param(parser)
|
|
55
|
+
|
|
56
|
+
add_force_param(parser)
|
|
57
|
+
|
|
58
|
+
_add_model_name_param(parser)
|
|
59
|
+
|
|
60
|
+
compare_arguments = parser.add_argument_group("Comparison Arguments")
|
|
61
|
+
_add_compare_params(compare_arguments)
|
|
62
|
+
add_finetune_params(parser)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def set_train_nlu_arguments(parser: argparse.ArgumentParser) -> None:
|
|
66
|
+
"""Specifies CLI arguments for `rasa train nlu`."""
|
|
67
|
+
add_config_param(parser)
|
|
68
|
+
add_domain_param(parser, default=None)
|
|
69
|
+
add_out_param(parser, help_text="Directory where your models should be stored.")
|
|
70
|
+
|
|
71
|
+
add_nlu_data_param(parser, help_text="File or folder containing your NLU data.")
|
|
72
|
+
|
|
73
|
+
_add_num_threads_param(parser)
|
|
74
|
+
|
|
75
|
+
_add_model_name_param(parser)
|
|
76
|
+
add_persist_nlu_data_param(parser)
|
|
77
|
+
add_finetune_params(parser)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def add_force_param(
|
|
81
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
82
|
+
) -> None:
|
|
83
|
+
"""Specifies if the model should be trained from scratch."""
|
|
84
|
+
parser.add_argument(
|
|
85
|
+
"--force",
|
|
86
|
+
action="store_true",
|
|
87
|
+
help="Force a model training even if the data has not changed.",
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def add_data_param(
|
|
92
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
93
|
+
) -> None:
|
|
94
|
+
"""Specifies path to training data."""
|
|
95
|
+
parser.add_argument(
|
|
96
|
+
"--data",
|
|
97
|
+
default=[DEFAULT_DATA_PATH],
|
|
98
|
+
nargs="+",
|
|
99
|
+
help="Paths to the Core and NLU data files.",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _add_core_config_param(parser: argparse.ArgumentParser) -> None:
|
|
104
|
+
parser.add_argument(
|
|
105
|
+
"-c",
|
|
106
|
+
"--config",
|
|
107
|
+
nargs="+",
|
|
108
|
+
default=[DEFAULT_CONFIG_PATH],
|
|
109
|
+
help="The policy and NLU pipeline configuration of your bot. "
|
|
110
|
+
"If multiple configuration files are provided, multiple Rasa Core "
|
|
111
|
+
"models are trained to compare policies.",
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _add_compare_params(
|
|
116
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
117
|
+
) -> None:
|
|
118
|
+
parser.add_argument(
|
|
119
|
+
"--percentages",
|
|
120
|
+
nargs="*",
|
|
121
|
+
type=int,
|
|
122
|
+
default=[0, 25, 50, 75],
|
|
123
|
+
help="Range of exclusion percentages.",
|
|
124
|
+
)
|
|
125
|
+
parser.add_argument(
|
|
126
|
+
"--runs", type=int, default=3, help="Number of runs for experiments."
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def add_dry_run_param(
|
|
131
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
132
|
+
) -> None:
|
|
133
|
+
"""Adds `--dry-run` argument to a specified `parser`.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
parser: An instance of `ArgumentParser` or `_ActionsContainer`.
|
|
137
|
+
"""
|
|
138
|
+
parser.add_argument(
|
|
139
|
+
"--dry-run",
|
|
140
|
+
default=False,
|
|
141
|
+
action="store_true",
|
|
142
|
+
help="If enabled, no actual training will be performed. Instead, "
|
|
143
|
+
"it will be determined whether a model should be re-trained "
|
|
144
|
+
"and this information will be printed as the output. The return "
|
|
145
|
+
"code is a 4-bit bitmask that can also be used to determine what exactly needs "
|
|
146
|
+
"to be retrained:\n"
|
|
147
|
+
"- 0 means that no extensive training is required (note that the responses "
|
|
148
|
+
"still might require updating by running 'rasa train').\n"
|
|
149
|
+
"- 1 means the model needs to be retrained\n"
|
|
150
|
+
"- 8 means the training was forced (--force argument is specified)",
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def add_validate_before_train(
|
|
155
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
156
|
+
) -> None:
|
|
157
|
+
"""Adds parameters for validating the domain and data files before training.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
parser: An instance of `ArgumentParser` or `_ActionsContainer`.
|
|
161
|
+
"""
|
|
162
|
+
parser.add_argument(
|
|
163
|
+
"--skip-validation",
|
|
164
|
+
default=False,
|
|
165
|
+
action="store_true",
|
|
166
|
+
help="Skip validation step before training.",
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
parser.add_argument(
|
|
170
|
+
"--fail-on-validation-warnings",
|
|
171
|
+
default=False,
|
|
172
|
+
action="store_true",
|
|
173
|
+
help="Fail on validation warnings. "
|
|
174
|
+
"If omitted only errors will exit with a non zero status code",
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
parser.add_argument(
|
|
178
|
+
"--validation-max-history",
|
|
179
|
+
type=int,
|
|
180
|
+
default=None,
|
|
181
|
+
help="Number of turns taken into account for story structure validation.",
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def add_augmentation_param(
|
|
186
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
187
|
+
) -> None:
|
|
188
|
+
"""Sets the augmentation factor for the Core training.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
parser: An instance of `ArgumentParser` or `_ActionsContainer`.
|
|
192
|
+
"""
|
|
193
|
+
parser.add_argument(
|
|
194
|
+
"--augmentation",
|
|
195
|
+
type=int,
|
|
196
|
+
default=TrainingTrackerProvider.get_default_config()["augmentation_factor"],
|
|
197
|
+
help="How much data augmentation to use during training.",
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def add_debug_plots_param(
|
|
202
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
203
|
+
) -> None:
|
|
204
|
+
"""Specifies if conversation flow should be visualized."""
|
|
205
|
+
parser.add_argument(
|
|
206
|
+
"--debug-plots",
|
|
207
|
+
default=TrainingTrackerProvider.get_default_config()["debug_plots"],
|
|
208
|
+
action="store_true",
|
|
209
|
+
help="If enabled, will create plots showing checkpoints "
|
|
210
|
+
"and their connections between story blocks in a "
|
|
211
|
+
"file called `story_blocks_connections.html`.",
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _add_num_threads_param(
|
|
216
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
217
|
+
) -> None:
|
|
218
|
+
parser.add_argument(
|
|
219
|
+
"--num-threads",
|
|
220
|
+
type=int,
|
|
221
|
+
help="Maximum amount of threads to use when training.",
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def _add_model_name_param(parser: argparse.ArgumentParser) -> None:
|
|
226
|
+
parser.add_argument(
|
|
227
|
+
"--fixed-model-name",
|
|
228
|
+
type=str,
|
|
229
|
+
help="If set, the name of the model file/directory will be set to the given "
|
|
230
|
+
"name.",
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def add_persist_nlu_data_param(
|
|
235
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
236
|
+
) -> None:
|
|
237
|
+
"""Adds parameters for persisting the NLU training data with the model."""
|
|
238
|
+
parser.add_argument(
|
|
239
|
+
"--persist-nlu-data",
|
|
240
|
+
action="store_true",
|
|
241
|
+
help="Persist the NLU training data in the saved model.",
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def add_keep_local_model_copy_param(
|
|
246
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
247
|
+
) -> None:
|
|
248
|
+
"""Adds parameters for keeping a local copy of the model."""
|
|
249
|
+
parser.add_argument(
|
|
250
|
+
"--keep-local-model-copy",
|
|
251
|
+
action="store_true",
|
|
252
|
+
help="Keep a copy of the model in the model directory if remote "
|
|
253
|
+
"model upload is configured. Defaults to `false`, which "
|
|
254
|
+
"deletes the local copy of the model after upload.",
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
def add_finetune_params(
|
|
259
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
260
|
+
) -> None:
|
|
261
|
+
"""Adds parameters for model finetuning."""
|
|
262
|
+
parser.add_argument(
|
|
263
|
+
"--finetune",
|
|
264
|
+
nargs="?",
|
|
265
|
+
# If the user doesn't specify `--finetune` at all
|
|
266
|
+
default=None,
|
|
267
|
+
# If the user only specifies `--finetune` without an additional path
|
|
268
|
+
const=USE_LATEST_MODEL_FOR_FINE_TUNING,
|
|
269
|
+
help="Fine-tune a previously trained model. If no model path is provided, Rasa "
|
|
270
|
+
"Open Source will try to finetune the latest trained model from the "
|
|
271
|
+
"model directory specified via '--out'.",
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
parser.add_argument(
|
|
275
|
+
"--epoch-fraction",
|
|
276
|
+
type=float,
|
|
277
|
+
help="Fraction of epochs which are currently specified in the model "
|
|
278
|
+
"configuration which should be used when finetuning a model.",
|
|
279
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from rasa.cli.arguments.default_arguments import (
|
|
4
|
+
add_domain_param,
|
|
5
|
+
add_stories_param,
|
|
6
|
+
add_out_param,
|
|
7
|
+
add_nlu_data_param,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def set_visualize_stories_arguments(parser: argparse.ArgumentParser) -> None:
|
|
12
|
+
"""Sets the CLI arguments for `rasa data visualize."""
|
|
13
|
+
add_domain_param(parser)
|
|
14
|
+
add_stories_param(parser)
|
|
15
|
+
|
|
16
|
+
add_out_param(
|
|
17
|
+
parser,
|
|
18
|
+
default="graph.html",
|
|
19
|
+
help_text="Filename of the output path, e.g. 'graph.html'.",
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
parser.add_argument(
|
|
23
|
+
"--max-history",
|
|
24
|
+
default=2,
|
|
25
|
+
type=int,
|
|
26
|
+
help="Max history to consider when merging paths in the output graph.",
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
add_nlu_data_param(
|
|
30
|
+
parser,
|
|
31
|
+
default=None,
|
|
32
|
+
help_text="File or folder containing your NLU data, "
|
|
33
|
+
"used to insert example messages into the graph.",
|
|
34
|
+
)
|
rasa/cli/arguments/x.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from rasa.cli.arguments import default_arguments
|
|
3
|
+
from rasa.cli.arguments.run import add_server_arguments
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def set_x_arguments(parser: argparse.ArgumentParser) -> None:
|
|
7
|
+
"""Add CLI arguments for running rasa x --production."""
|
|
8
|
+
parser.add_argument(
|
|
9
|
+
"--production",
|
|
10
|
+
action="store_true",
|
|
11
|
+
help="Run a Rasa server in a mode that allows connecting "
|
|
12
|
+
"to Rasa Enterprise as the config endpoint",
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
parser.add_argument(
|
|
16
|
+
"--config-endpoint",
|
|
17
|
+
type=str,
|
|
18
|
+
help="Rasa X endpoint URL from which to pull the runtime config. This URL "
|
|
19
|
+
"typically contains the Rasa X token for authentication. Example: "
|
|
20
|
+
"https://example.com/api/config?token=my_rasa_x_token",
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
parser.add_argument(
|
|
24
|
+
"--no-prompt",
|
|
25
|
+
action="store_true",
|
|
26
|
+
help="Automatic yes or default options to prompts and oppressed warnings.",
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
default_arguments.add_model_param(parser, add_positional_arg=False)
|
|
30
|
+
add_server_arguments(parser)
|
rasa/cli/data.py
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
import pathlib
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
import rasa.cli.utils
|
|
7
|
+
import rasa.shared.core.domain
|
|
8
|
+
import rasa.shared.data
|
|
9
|
+
import rasa.shared.nlu.training_data.loading
|
|
10
|
+
import rasa.shared.nlu.training_data.util
|
|
11
|
+
import rasa.shared.utils.cli
|
|
12
|
+
import rasa.shared.utils.io
|
|
13
|
+
import rasa.utils.common
|
|
14
|
+
from rasa import telemetry
|
|
15
|
+
from rasa.cli import SubParsersAction
|
|
16
|
+
from rasa.cli.arguments import data as arguments
|
|
17
|
+
from rasa.cli.arguments import default_arguments
|
|
18
|
+
from rasa.e2e_test.e2e_config import create_llm_e2e_test_converter_config
|
|
19
|
+
from rasa.e2e_test.e2e_test_converter import E2ETestConverter
|
|
20
|
+
from rasa.e2e_test.utils.e2e_yaml_utils import E2ETestYAMLWriter
|
|
21
|
+
from rasa.shared.constants import (
|
|
22
|
+
DEFAULT_DATA_PATH,
|
|
23
|
+
DEFAULT_CONFIG_PATH,
|
|
24
|
+
DEFAULT_DOMAIN_PATHS,
|
|
25
|
+
)
|
|
26
|
+
from rasa.shared.exceptions import RasaException
|
|
27
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
28
|
+
from rasa.shared.utils.common import minimal_kwargs
|
|
29
|
+
from rasa.shared.utils.yaml import read_yaml_file, write_yaml
|
|
30
|
+
from rasa.utils.beta import ensure_beta_feature_is_enabled
|
|
31
|
+
|
|
32
|
+
logger = logging.getLogger(__name__)
|
|
33
|
+
|
|
34
|
+
RASA_PRO_BETA_E2E_CONVERSION_ENV_VAR_NAME = "RASA_PRO_BETA_E2E_CONVERSION"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def add_subparser(
|
|
38
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Add all data parsers.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
subparsers: subparser we are going to attach to
|
|
44
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
45
|
+
"""
|
|
46
|
+
data_parser = subparsers.add_parser(
|
|
47
|
+
"data",
|
|
48
|
+
conflict_handler="resolve",
|
|
49
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
50
|
+
parents=parents,
|
|
51
|
+
help="Utils for the Rasa training files.",
|
|
52
|
+
)
|
|
53
|
+
data_parser.set_defaults(func=lambda _: data_parser.print_help(None))
|
|
54
|
+
|
|
55
|
+
data_subparsers = data_parser.add_subparsers()
|
|
56
|
+
|
|
57
|
+
_add_data_convert_parsers(data_subparsers, parents)
|
|
58
|
+
_add_data_split_parsers(data_subparsers, parents)
|
|
59
|
+
_add_data_validate_parsers(data_subparsers, parents)
|
|
60
|
+
_add_data_migrate_parsers(data_subparsers, parents)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _add_data_convert_parsers(
|
|
64
|
+
data_subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
65
|
+
) -> None:
|
|
66
|
+
convert_parser = data_subparsers.add_parser(
|
|
67
|
+
"convert",
|
|
68
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
69
|
+
parents=parents,
|
|
70
|
+
help="Converts Rasa data between different formats.",
|
|
71
|
+
)
|
|
72
|
+
convert_parser.set_defaults(func=lambda _: convert_parser.print_help(None))
|
|
73
|
+
|
|
74
|
+
convert_subparsers = convert_parser.add_subparsers()
|
|
75
|
+
convert_nlu_parser = convert_subparsers.add_parser(
|
|
76
|
+
"nlu",
|
|
77
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
78
|
+
parents=parents,
|
|
79
|
+
help="Converts NLU data between formats.",
|
|
80
|
+
)
|
|
81
|
+
convert_nlu_parser.set_defaults(func=_convert_nlu_data)
|
|
82
|
+
arguments.set_convert_nlu_arguments(convert_nlu_parser, data_type="Rasa NLU")
|
|
83
|
+
|
|
84
|
+
convert_e2e_parser = convert_subparsers.add_parser(
|
|
85
|
+
"e2e",
|
|
86
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
87
|
+
parents=parents,
|
|
88
|
+
help="Convert input sample conversations into E2E test cases.",
|
|
89
|
+
)
|
|
90
|
+
convert_e2e_parser.set_defaults(func=convert_data_to_e2e_tests)
|
|
91
|
+
arguments.set_convert_e2e_arguments(convert_e2e_parser)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _add_data_split_parsers(
|
|
95
|
+
data_subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
96
|
+
) -> None:
|
|
97
|
+
split_parser = data_subparsers.add_parser(
|
|
98
|
+
"split",
|
|
99
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
100
|
+
parents=parents,
|
|
101
|
+
help="Splits Rasa data into training and test data.",
|
|
102
|
+
)
|
|
103
|
+
split_parser.set_defaults(func=lambda _: split_parser.print_help(None))
|
|
104
|
+
|
|
105
|
+
split_subparsers = split_parser.add_subparsers()
|
|
106
|
+
nlu_split_parser = split_subparsers.add_parser(
|
|
107
|
+
"nlu",
|
|
108
|
+
parents=parents,
|
|
109
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
110
|
+
help="Performs a split of your NLU data into training and test data "
|
|
111
|
+
"according to the specified percentages.",
|
|
112
|
+
)
|
|
113
|
+
nlu_split_parser.set_defaults(func=split_nlu_data)
|
|
114
|
+
|
|
115
|
+
arguments.set_split_arguments(nlu_split_parser)
|
|
116
|
+
|
|
117
|
+
stories_split_parser = split_subparsers.add_parser(
|
|
118
|
+
"stories",
|
|
119
|
+
parents=parents,
|
|
120
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
121
|
+
help="Performs a split of your stories into training and test data "
|
|
122
|
+
"according to the specified percentages.",
|
|
123
|
+
)
|
|
124
|
+
stories_split_parser.set_defaults(func=split_stories_data)
|
|
125
|
+
|
|
126
|
+
arguments.set_split_arguments(stories_split_parser)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _add_data_validate_parsers(
|
|
130
|
+
data_subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
131
|
+
) -> None:
|
|
132
|
+
validate_parser = data_subparsers.add_parser(
|
|
133
|
+
"validate",
|
|
134
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
135
|
+
parents=parents,
|
|
136
|
+
help="Validates domain and data files to check for possible mistakes.",
|
|
137
|
+
)
|
|
138
|
+
_append_story_structure_arguments(validate_parser)
|
|
139
|
+
validate_parser.set_defaults(
|
|
140
|
+
func=lambda args: rasa.cli.utils.validate_files(
|
|
141
|
+
args.fail_on_warnings, args.max_history, _build_training_data_importer(args)
|
|
142
|
+
)
|
|
143
|
+
)
|
|
144
|
+
arguments.set_validator_arguments(validate_parser)
|
|
145
|
+
|
|
146
|
+
validate_subparsers = validate_parser.add_subparsers()
|
|
147
|
+
story_structure_parser = validate_subparsers.add_parser(
|
|
148
|
+
"stories",
|
|
149
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
150
|
+
parents=parents,
|
|
151
|
+
help="Checks for inconsistencies in the story files.",
|
|
152
|
+
)
|
|
153
|
+
_append_story_structure_arguments(story_structure_parser)
|
|
154
|
+
|
|
155
|
+
story_structure_parser.set_defaults(
|
|
156
|
+
func=lambda args: rasa.cli.utils.validate_files(
|
|
157
|
+
args.fail_on_warnings,
|
|
158
|
+
args.max_history,
|
|
159
|
+
_build_training_data_importer(args),
|
|
160
|
+
stories_only=True,
|
|
161
|
+
)
|
|
162
|
+
)
|
|
163
|
+
arguments.set_validator_arguments(story_structure_parser)
|
|
164
|
+
|
|
165
|
+
flows_structure_parser = validate_subparsers.add_parser(
|
|
166
|
+
"flows",
|
|
167
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
168
|
+
parents=parents,
|
|
169
|
+
help="Checks for inconsistencies in the flows files.",
|
|
170
|
+
)
|
|
171
|
+
flows_structure_parser.set_defaults(
|
|
172
|
+
func=lambda args: rasa.cli.utils.validate_files(
|
|
173
|
+
args.fail_on_warnings,
|
|
174
|
+
args.max_history,
|
|
175
|
+
_build_training_data_importer(args),
|
|
176
|
+
flows_only=True,
|
|
177
|
+
)
|
|
178
|
+
)
|
|
179
|
+
arguments.set_validator_arguments(flows_structure_parser)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _build_training_data_importer(args: argparse.Namespace) -> "TrainingDataImporter":
|
|
183
|
+
config = rasa.cli.utils.get_validated_path(
|
|
184
|
+
args.config, "config", DEFAULT_CONFIG_PATH, none_is_valid=True
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
# Exit the validation if the domain path is invalid
|
|
188
|
+
domain = rasa.cli.utils.get_validated_path(
|
|
189
|
+
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=False
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
return TrainingDataImporter.load_from_config(
|
|
193
|
+
domain_path=domain, training_data_paths=args.data, config_path=config
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _append_story_structure_arguments(parser: argparse.ArgumentParser) -> None:
|
|
198
|
+
parser.add_argument(
|
|
199
|
+
"--max-history",
|
|
200
|
+
type=int,
|
|
201
|
+
default=None,
|
|
202
|
+
help="Number of turns taken into account for story structure validation.",
|
|
203
|
+
)
|
|
204
|
+
default_arguments.add_config_param(parser)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def split_nlu_data(args: argparse.Namespace) -> None:
|
|
208
|
+
"""Load data from a file path and split the NLU data into test and train examples.
|
|
209
|
+
|
|
210
|
+
Args:
|
|
211
|
+
args: Commandline arguments
|
|
212
|
+
"""
|
|
213
|
+
data_path = rasa.cli.utils.get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
214
|
+
data_path = rasa.shared.data.get_nlu_directory(data_path)
|
|
215
|
+
|
|
216
|
+
nlu_data = rasa.shared.nlu.training_data.loading.load_data(data_path)
|
|
217
|
+
extension = rasa.shared.nlu.training_data.util.get_file_format_extension(data_path)
|
|
218
|
+
|
|
219
|
+
train, test = nlu_data.train_test_split(args.training_fraction, args.random_seed)
|
|
220
|
+
|
|
221
|
+
train.persist(args.out, filename=f"training_data{extension}")
|
|
222
|
+
test.persist(args.out, filename=f"test_data{extension}")
|
|
223
|
+
|
|
224
|
+
telemetry.track_data_split(args.training_fraction, "nlu")
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def split_stories_data(args: argparse.Namespace) -> None:
|
|
228
|
+
"""Load data from a file path and split stories into test and train examples.
|
|
229
|
+
|
|
230
|
+
Args:
|
|
231
|
+
args: Commandline arguments
|
|
232
|
+
"""
|
|
233
|
+
from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
|
|
234
|
+
YAMLStoryReader,
|
|
235
|
+
KEY_STORIES,
|
|
236
|
+
)
|
|
237
|
+
from sklearn.model_selection import train_test_split
|
|
238
|
+
|
|
239
|
+
data_path = rasa.cli.utils.get_validated_path(args.nlu, "nlu", DEFAULT_DATA_PATH)
|
|
240
|
+
data_files = rasa.shared.data.get_data_files(
|
|
241
|
+
data_path, YAMLStoryReader.is_stories_file
|
|
242
|
+
)
|
|
243
|
+
out_path = pathlib.Path(args.out)
|
|
244
|
+
out_path.mkdir(parents=True, exist_ok=True)
|
|
245
|
+
|
|
246
|
+
# load Yaml stories data
|
|
247
|
+
for file_name in data_files:
|
|
248
|
+
file_data = read_yaml_file(file_name)
|
|
249
|
+
assert isinstance(file_data, dict)
|
|
250
|
+
stories = file_data.get(KEY_STORIES, [])
|
|
251
|
+
if not stories:
|
|
252
|
+
logger.info(f"File {file_name} has no stories, skipped")
|
|
253
|
+
continue
|
|
254
|
+
|
|
255
|
+
file_path = pathlib.Path(file_name)
|
|
256
|
+
|
|
257
|
+
# everything besides stories are going into the training data
|
|
258
|
+
train, test = train_test_split(
|
|
259
|
+
stories, test_size=1 - args.training_fraction, random_state=args.random_seed
|
|
260
|
+
)
|
|
261
|
+
out_file_train = out_path / ("train_" + file_path.name)
|
|
262
|
+
out_file_test = out_path / ("test_" + file_path.name)
|
|
263
|
+
|
|
264
|
+
# train file contains everything else from the file + train stories
|
|
265
|
+
file_data[KEY_STORIES] = train
|
|
266
|
+
write_yaml(file_data, out_file_train)
|
|
267
|
+
|
|
268
|
+
# test file contains just test stories
|
|
269
|
+
write_yaml({KEY_STORIES: test}, out_file_test)
|
|
270
|
+
logger.info(
|
|
271
|
+
f"From {file_name} we produced {out_file_train} "
|
|
272
|
+
f"with {len(train)} stories and {out_file_test} "
|
|
273
|
+
f"with {len(test)} stories"
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def _convert_nlu_data(args: argparse.Namespace) -> None:
|
|
278
|
+
import rasa.nlu.convert
|
|
279
|
+
|
|
280
|
+
if args.format in ["json", "yaml"]:
|
|
281
|
+
rasa.nlu.convert.convert_training_data(
|
|
282
|
+
args.data, args.out, args.format, args.language
|
|
283
|
+
)
|
|
284
|
+
telemetry.track_data_convert(args.format, "nlu")
|
|
285
|
+
else:
|
|
286
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
287
|
+
"Could not recognize output format. Supported output formats: 'json' "
|
|
288
|
+
"and 'yaml'. Specify the desired output format with '--format'."
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def _add_data_migrate_parsers(
|
|
293
|
+
data_subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
294
|
+
) -> None:
|
|
295
|
+
migrate_parser = data_subparsers.add_parser(
|
|
296
|
+
"migrate",
|
|
297
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
298
|
+
parents=parents,
|
|
299
|
+
help="Converts Rasa domain 2.0 format to required format for 3.0.",
|
|
300
|
+
)
|
|
301
|
+
migrate_parser.set_defaults(func=_migrate_domain)
|
|
302
|
+
|
|
303
|
+
arguments.set_migrate_arguments(migrate_parser)
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
def _migrate_domain(args: argparse.Namespace) -> None:
|
|
307
|
+
import rasa.core.migrate
|
|
308
|
+
|
|
309
|
+
rasa.core.migrate.migrate_domain_format(args.domain, args.out)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def validate_e2e_test_conversion_output_path(output_path: str) -> None:
|
|
313
|
+
"""Validates that the provided output path is within the project directory.
|
|
314
|
+
|
|
315
|
+
Args:
|
|
316
|
+
output_path (str): The output path to be validated.
|
|
317
|
+
|
|
318
|
+
Raises:
|
|
319
|
+
RasaException: If the provided output path is an absolute path.
|
|
320
|
+
"""
|
|
321
|
+
if pathlib.Path(output_path).is_absolute():
|
|
322
|
+
raise RasaException(
|
|
323
|
+
"Please provide a relative output path within the assistant "
|
|
324
|
+
"project directory in which the command is running."
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
def convert_data_to_e2e_tests(args: argparse.Namespace) -> None:
|
|
329
|
+
"""Converts sample conversation data into E2E test cases
|
|
330
|
+
and stores them in the output YAML file.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
args: The arguments passed in from the CLI.
|
|
334
|
+
"""
|
|
335
|
+
try:
|
|
336
|
+
ensure_beta_feature_is_enabled(
|
|
337
|
+
"conversion of sample conversations into end-to-end tests",
|
|
338
|
+
RASA_PRO_BETA_E2E_CONVERSION_ENV_VAR_NAME,
|
|
339
|
+
)
|
|
340
|
+
validate_e2e_test_conversion_output_path(args.output)
|
|
341
|
+
|
|
342
|
+
config_path = pathlib.Path(args.output)
|
|
343
|
+
llm_config = create_llm_e2e_test_converter_config(config_path)
|
|
344
|
+
|
|
345
|
+
kwargs = minimal_kwargs(vars(args), E2ETestConverter)
|
|
346
|
+
converter = E2ETestConverter(llm_config=llm_config, **kwargs)
|
|
347
|
+
yaml_tests_string = converter.run()
|
|
348
|
+
|
|
349
|
+
writer = E2ETestYAMLWriter(output_path=args.output)
|
|
350
|
+
writer.write_to_file(yaml_tests_string)
|
|
351
|
+
except RasaException as exc:
|
|
352
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
353
|
+
f"Failed to convert the data into E2E tests. Error: {exc}"
|
|
354
|
+
)
|