rasa-pro 3.12.0.dev1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- README.md +41 -0
- rasa/__init__.py +9 -0
- rasa/__main__.py +177 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +160 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +106 -0
- rasa/cli/arguments/default_arguments.py +207 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +219 -0
- rasa/cli/arguments/shell.py +17 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +279 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +354 -0
- rasa/cli/dialogue_understanding_test.py +251 -0
- rasa/cli/e2e_test.py +259 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +75 -0
- rasa/cli/interactive.py +166 -0
- rasa/cli/license.py +65 -0
- rasa/cli/llm_fine_tuning.py +403 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +10 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +58 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
- rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +12 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
- rasa/cli/project_templates/tutorial/domain.yml +35 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
- rasa/cli/run.py +143 -0
- rasa/cli/scaffold.py +273 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +296 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +62 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +278 -0
- rasa/cli/utils.py +484 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +45 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1318 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_hangup.py +29 -0
- rasa/core/actions/action_repeat_bot_messages.py +89 -0
- rasa/core/actions/action_run_slot_rejections.py +210 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +191 -0
- rasa/core/actions/direct_custom_actions_executor.py +109 -0
- rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +145 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +559 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +324 -0
- rasa/core/brokers/pika.py +388 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +61 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +456 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +197 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-861ddd57.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-42ba3e3d.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-89e6403a.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-bdf5f29b.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
- rasa/core/channels/inspector/dist/index.html +42 -0
- rasa/core/channels/inspector/index.html +40 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +52 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +220 -0
- rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +84 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6249 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +230 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +302 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/voice_ready/__init__.py +0 -0
- rasa/core/channels/voice_ready/audiocodes.py +501 -0
- rasa/core/channels/voice_ready/jambonz.py +121 -0
- rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
- rasa/core/channels/voice_ready/twilio_voice.py +403 -0
- rasa/core/channels/voice_ready/utils.py +37 -0
- rasa/core/channels/voice_stream/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
- rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
- rasa/core/channels/voice_stream/asr/azure.py +130 -0
- rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
- rasa/core/channels/voice_stream/audio_bytes.py +8 -0
- rasa/core/channels/voice_stream/browser_audio.py +107 -0
- rasa/core/channels/voice_stream/call_state.py +23 -0
- rasa/core/channels/voice_stream/tts/__init__.py +0 -0
- rasa/core/channels/voice_stream/tts/azure.py +106 -0
- rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
- rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
- rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
- rasa/core/channels/voice_stream/util.py +57 -0
- rasa/core/channels/voice_stream/voice_channel.py +427 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +112 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +124 -0
- rasa/core/information_retrieval/information_retrieval.py +137 -0
- rasa/core/information_retrieval/milvus.py +59 -0
- rasa/core/information_retrieval/qdrant.py +96 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +320 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +70 -0
- rasa/core/persistor.py +538 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +905 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +754 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +1031 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1465 -0
- rasa/core/run.py +342 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +36 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +241 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +584 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1703 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1744 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +366 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +61 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
- rasa/dialogue_understanding/commands/restart_command.py +58 -0
- rasa/dialogue_understanding/commands/session_end_command.py +61 -0
- rasa/dialogue_understanding/commands/session_start_command.py +59 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
- rasa/dialogue_understanding/commands/utils.py +45 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +464 -0
- rasa/dialogue_understanding/generator/constants.py +27 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +920 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +486 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/repeat.py +37 -0
- rasa/dialogue_understanding/patterns/restart.py +37 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/session_start.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/patterns/user_silence.py +37 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +720 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/dialogue_understanding/utils.py +14 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +12 -0
- rasa/dialogue_understanding_test/constants.py +17 -0
- rasa/dialogue_understanding_test/du_test_case.py +118 -0
- rasa/dialogue_understanding_test/du_test_result.py +11 -0
- rasa/dialogue_understanding_test/du_test_runner.py +93 -0
- rasa/dialogue_understanding_test/io.py +54 -0
- rasa/dialogue_understanding_test/validation.py +22 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
- rasa/e2e_test/assertions.py +1345 -0
- rasa/e2e_test/assertions_schema.yml +129 -0
- rasa/e2e_test/constants.py +31 -0
- rasa/e2e_test/e2e_config.py +220 -0
- rasa/e2e_test/e2e_config_schema.yml +26 -0
- rasa/e2e_test/e2e_test_case.py +569 -0
- rasa/e2e_test/e2e_test_converter.py +363 -0
- rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
- rasa/e2e_test/e2e_test_coverage_report.py +364 -0
- rasa/e2e_test/e2e_test_result.py +54 -0
- rasa/e2e_test/e2e_test_runner.py +1192 -0
- rasa/e2e_test/e2e_test_schema.yml +181 -0
- rasa/e2e_test/pykwalify_extensions.py +39 -0
- rasa/e2e_test/stub_custom_action.py +70 -0
- rasa/e2e_test/utils/__init__.py +0 -0
- rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
- rasa/e2e_test/utils/io.py +598 -0
- rasa/e2e_test/utils/validation.py +178 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +642 -0
- rasa/engine/loader.py +48 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +41 -0
- rasa/engine/recipes/default_components.py +97 -0
- rasa/engine/recipes/default_recipe.py +1272 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +244 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +199 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +1451 -0
- rasa/env.py +14 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +96 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +111 -0
- rasa/jupyter.py +63 -0
- rasa/llm_fine_tuning/__init__.py +0 -0
- rasa/llm_fine_tuning/annotation_module.py +241 -0
- rasa/llm_fine_tuning/conversations.py +144 -0
- rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
- rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
- rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
- rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
- rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
- rasa/llm_fine_tuning/storage.py +174 -0
- rasa/llm_fine_tuning/train_test_split_module.py +441 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +40 -0
- rasa/model_manager/model_api.py +559 -0
- rasa/model_manager/runner_service.py +286 -0
- rasa/model_manager/socket_bridge.py +146 -0
- rasa/model_manager/studio_jwt_auth.py +86 -0
- rasa/model_manager/trainer_service.py +325 -0
- rasa/model_manager/utils.py +87 -0
- rasa/model_manager/warm_rasa_process.py +187 -0
- rasa/model_service.py +112 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +596 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1588 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +311 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +180 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2172 -0
- rasa/shared/core/events.py +2559 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +562 -0
- rasa/shared/core/flows/flow_path.py +84 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +258 -0
- rasa/shared/core/flows/flows_yaml_schema.json +303 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/utils.py +39 -0
- rasa/shared/core/flows/validation.py +735 -0
- rasa/shared/core/flows/yaml_flows_io.py +405 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +654 -0
- rasa/shared/core/trackers.py +1183 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +858 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +167 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +770 -0
- rasa/shared/importers/multi_project.py +215 -0
- rasa/shared/importers/rasa.py +108 -0
- rasa/shared/importers/remote_importer.py +196 -0
- rasa/shared/importers/utils.py +36 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +53 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +729 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/_configs/__init__.py +0 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +677 -0
- rasa/shared/providers/_configs/client_config.py +59 -0
- rasa/shared/providers/_configs/default_litellm_client_config.py +132 -0
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +236 -0
- rasa/shared/providers/_configs/litellm_router_client_config.py +222 -0
- rasa/shared/providers/_configs/model_group_config.py +173 -0
- rasa/shared/providers/_configs/openai_client_config.py +177 -0
- rasa/shared/providers/_configs/rasa_llm_client_config.py +75 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +178 -0
- rasa/shared/providers/_configs/utils.py +117 -0
- rasa/shared/providers/_ssl_verification_utils.py +124 -0
- rasa/shared/providers/_utils.py +79 -0
- rasa/shared/providers/constants.py +7 -0
- rasa/shared/providers/embedding/__init__.py +0 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
- rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +335 -0
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
- rasa/shared/providers/embedding/embedding_client.py +90 -0
- rasa/shared/providers/embedding/embedding_response.py +41 -0
- rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +138 -0
- rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
- rasa/shared/providers/llm/__init__.py +0 -0
- rasa/shared/providers/llm/_base_litellm_client.py +265 -0
- rasa/shared/providers/llm/azure_openai_llm_client.py +415 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +110 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +202 -0
- rasa/shared/providers/llm/llm_client.py +78 -0
- rasa/shared/providers/llm/llm_response.py +50 -0
- rasa/shared/providers/llm/openai_llm_client.py +161 -0
- rasa/shared/providers/llm/rasa_llm_client.py +120 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +276 -0
- rasa/shared/providers/mappings.py +94 -0
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +185 -0
- rasa/shared/providers/router/router_client.py +75 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +102 -0
- rasa/shared/utils/common.py +324 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
- rasa/shared/utils/health_check/health_check.py +258 -0
- rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
- rasa/shared/utils/io.py +499 -0
- rasa/shared/utils/llm.py +764 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +214 -0
- rasa/shared/utils/schemas/model_config.yml +36 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +1068 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +270 -0
- rasa/studio/config.py +136 -0
- rasa/studio/constants.py +19 -0
- rasa/studio/data_handler.py +368 -0
- rasa/studio/download.py +489 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +134 -0
- rasa/studio/upload.py +563 -0
- rasa/telemetry.py +1876 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +355 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +765 -0
- rasa/tracing/instrumentation/instrumentation.py +1306 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +639 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +331 -0
- rasa/utils/io.py +252 -0
- rasa/utils/json_utils.py +60 -0
- rasa/utils/licensing.py +542 -0
- rasa/utils/log_utils.py +181 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +147 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/sanic_error_handler.py +32 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1644 -0
- rasa/version.py +3 -0
- rasa_pro-3.12.0.dev1.dist-info/METADATA +199 -0
- rasa_pro-3.12.0.dev1.dist-info/NOTICE +5 -0
- rasa_pro-3.12.0.dev1.dist-info/RECORD +790 -0
- rasa_pro-3.12.0.dev1.dist-info/WHEEL +4 -0
- rasa_pro-3.12.0.dev1.dist-info/entry_points.txt +3 -0
rasa/cli/run.py
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from typing import List, Text
|
|
5
|
+
|
|
6
|
+
from rasa.api import run as rasa_run
|
|
7
|
+
from rasa.cli import SubParsersAction
|
|
8
|
+
from rasa.cli.arguments import run as arguments
|
|
9
|
+
from rasa.cli.arguments.default_arguments import SkipYamlValidation
|
|
10
|
+
from rasa.cli.utils import get_validated_path
|
|
11
|
+
from rasa.exceptions import ModelNotFound
|
|
12
|
+
from rasa.shared.constants import (
|
|
13
|
+
DEFAULT_ACTIONS_PATH,
|
|
14
|
+
DEFAULT_CREDENTIALS_PATH,
|
|
15
|
+
DEFAULT_ENDPOINTS_PATH,
|
|
16
|
+
DEFAULT_MODELS_PATH,
|
|
17
|
+
DOCS_BASE_URL,
|
|
18
|
+
)
|
|
19
|
+
from rasa.shared.core.domain import Domain
|
|
20
|
+
from rasa.shared.utils.cli import print_error
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def add_subparser(
|
|
26
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
27
|
+
) -> None:
|
|
28
|
+
"""Add all run parsers.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
subparsers: subparser we are going to attach to
|
|
32
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
33
|
+
"""
|
|
34
|
+
run_parser = subparsers.add_parser(
|
|
35
|
+
"run",
|
|
36
|
+
parents=parents,
|
|
37
|
+
conflict_handler="resolve",
|
|
38
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
39
|
+
help="Starts a Rasa server with your trained model.",
|
|
40
|
+
)
|
|
41
|
+
run_parser.set_defaults(func=run)
|
|
42
|
+
|
|
43
|
+
run_subparsers = run_parser.add_subparsers()
|
|
44
|
+
sdk_subparser = run_subparsers.add_parser(
|
|
45
|
+
"actions",
|
|
46
|
+
parents=parents,
|
|
47
|
+
conflict_handler="resolve",
|
|
48
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
49
|
+
help="Runs the action server.",
|
|
50
|
+
)
|
|
51
|
+
sdk_subparser.set_defaults(func=run_actions)
|
|
52
|
+
|
|
53
|
+
arguments.set_run_arguments(run_parser)
|
|
54
|
+
arguments.set_run_action_arguments(sdk_subparser)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def run_actions(args: argparse.Namespace) -> None:
|
|
58
|
+
import rasa_sdk.__main__ as sdk
|
|
59
|
+
|
|
60
|
+
args.actions = args.actions or DEFAULT_ACTIONS_PATH
|
|
61
|
+
|
|
62
|
+
sdk.main_from_args(args)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _validate_model_path(model_path: Text, parameter: Text, default: Text) -> Text:
|
|
66
|
+
if model_path is not None and not os.path.exists(model_path):
|
|
67
|
+
reason_str = f"'{model_path}' not found."
|
|
68
|
+
if model_path is None:
|
|
69
|
+
reason_str = f"Parameter '{parameter}' not set."
|
|
70
|
+
|
|
71
|
+
logger.debug(f"{reason_str} Using default location '{default}' instead.")
|
|
72
|
+
|
|
73
|
+
os.makedirs(default, exist_ok=True)
|
|
74
|
+
model_path = default
|
|
75
|
+
|
|
76
|
+
return model_path
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def run(args: argparse.Namespace) -> None:
|
|
80
|
+
"""Entrypoint for `rasa run`.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
args: The CLI arguments.
|
|
84
|
+
"""
|
|
85
|
+
args.endpoints = get_validated_path(
|
|
86
|
+
args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
87
|
+
)
|
|
88
|
+
args.credentials = get_validated_path(
|
|
89
|
+
args.credentials, "credentials", DEFAULT_CREDENTIALS_PATH, True
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
if SkipYamlValidation.DOMAIN.value in args.skip_yaml_validation:
|
|
93
|
+
Domain.validate_yaml = False
|
|
94
|
+
else:
|
|
95
|
+
Domain.validate_yaml = True
|
|
96
|
+
|
|
97
|
+
if args.enable_api:
|
|
98
|
+
if not args.remote_storage:
|
|
99
|
+
args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
100
|
+
rasa_run(**vars(args))
|
|
101
|
+
return
|
|
102
|
+
|
|
103
|
+
# if the API is not enable you cannot start without a model
|
|
104
|
+
# make sure either a model server, a remote storage, or a local model is
|
|
105
|
+
# configured
|
|
106
|
+
|
|
107
|
+
import rasa.model
|
|
108
|
+
from rasa.core.utils import AvailableEndpoints
|
|
109
|
+
|
|
110
|
+
# start server if remote storage is configured
|
|
111
|
+
if args.remote_storage is not None:
|
|
112
|
+
rasa_run(**vars(args))
|
|
113
|
+
return
|
|
114
|
+
|
|
115
|
+
# start server if model server is configured
|
|
116
|
+
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
117
|
+
model_server = endpoints.model if endpoints and endpoints.model else None
|
|
118
|
+
if model_server is not None:
|
|
119
|
+
rasa_run(**vars(args))
|
|
120
|
+
return
|
|
121
|
+
|
|
122
|
+
# start server if local model found
|
|
123
|
+
args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
124
|
+
local_model_set = True
|
|
125
|
+
try:
|
|
126
|
+
rasa.model.get_local_model(args.model)
|
|
127
|
+
except ModelNotFound:
|
|
128
|
+
local_model_set = False
|
|
129
|
+
|
|
130
|
+
if local_model_set:
|
|
131
|
+
rasa_run(**vars(args))
|
|
132
|
+
return
|
|
133
|
+
|
|
134
|
+
print_error(
|
|
135
|
+
f"No model found. You have three options to provide a model:\n"
|
|
136
|
+
f"1. Configure a model server in the endpoint configuration and provide "
|
|
137
|
+
f"the configuration via '--endpoints'.\n"
|
|
138
|
+
f"2. Specify a remote storage via '--remote-storage' to load the model "
|
|
139
|
+
f"from.\n"
|
|
140
|
+
f"3. Train a model before running the server using `rasa train` and "
|
|
141
|
+
f"use '--model' to provide the model path.\n"
|
|
142
|
+
f"For more information check {DOCS_BASE_URL}/model-storage."
|
|
143
|
+
)
|
rasa/cli/scaffold.py
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import os
|
|
3
|
+
import sys
|
|
4
|
+
from collections import defaultdict
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from typing import List, Text
|
|
7
|
+
|
|
8
|
+
from rasa import telemetry
|
|
9
|
+
from rasa.api import train
|
|
10
|
+
from rasa.cli import SubParsersAction
|
|
11
|
+
from rasa.cli.inspect import inspect
|
|
12
|
+
from rasa.shared.constants import (
|
|
13
|
+
DEFAULT_CONFIG_PATH,
|
|
14
|
+
DEFAULT_DATA_PATH,
|
|
15
|
+
DEFAULT_DOMAIN_PATH,
|
|
16
|
+
DEFAULT_MODELS_PATH,
|
|
17
|
+
DOCS_BASE_URL,
|
|
18
|
+
)
|
|
19
|
+
from rasa.shared.utils.cli import print_error_and_exit, print_success
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ProjectTemplateName(Enum):
|
|
23
|
+
"""Enum of the different project templates."""
|
|
24
|
+
|
|
25
|
+
DEFAULT = "default"
|
|
26
|
+
TUTORIAL = "tutorial"
|
|
27
|
+
CALM = "calm"
|
|
28
|
+
|
|
29
|
+
def __str__(self) -> str:
|
|
30
|
+
return self.value
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
template_domain_path = defaultdict(lambda: DEFAULT_DOMAIN_PATH)
|
|
34
|
+
template_domain_path[ProjectTemplateName.CALM] = "domain"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def add_subparser(
|
|
38
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Add all init 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
|
+
scaffold_parser = subparsers.add_parser(
|
|
47
|
+
"init",
|
|
48
|
+
parents=parents,
|
|
49
|
+
help="Creates a new project, with example training data, "
|
|
50
|
+
"actions, and config files.",
|
|
51
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
52
|
+
)
|
|
53
|
+
scaffold_parser.add_argument(
|
|
54
|
+
"--no-prompt",
|
|
55
|
+
action="store_true",
|
|
56
|
+
help="Automatically choose default options for prompts and suppress warnings.",
|
|
57
|
+
)
|
|
58
|
+
scaffold_parser.add_argument(
|
|
59
|
+
"--init-dir",
|
|
60
|
+
default=None,
|
|
61
|
+
help="Directory where your project should be initialized.",
|
|
62
|
+
)
|
|
63
|
+
scaffold_parser.add_argument(
|
|
64
|
+
"--template",
|
|
65
|
+
type=ProjectTemplateName,
|
|
66
|
+
choices=list(ProjectTemplateName),
|
|
67
|
+
default=ProjectTemplateName.DEFAULT,
|
|
68
|
+
help="Select the template to use for the project.",
|
|
69
|
+
)
|
|
70
|
+
scaffold_parser.set_defaults(func=run)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def print_train_or_instructions(args: argparse.Namespace) -> None:
|
|
74
|
+
"""Train a model if the user wants to."""
|
|
75
|
+
import questionary
|
|
76
|
+
|
|
77
|
+
print_success("Finished creating project structure.")
|
|
78
|
+
|
|
79
|
+
should_train = (
|
|
80
|
+
questionary.confirm("Do you want to train an initial model? 💪🏽")
|
|
81
|
+
.skip_if(args.no_prompt, default=True)
|
|
82
|
+
.ask()
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
if should_train:
|
|
86
|
+
print_success("Training an initial model...")
|
|
87
|
+
training_result = train(
|
|
88
|
+
template_domain_path[args.template],
|
|
89
|
+
DEFAULT_CONFIG_PATH,
|
|
90
|
+
DEFAULT_DATA_PATH,
|
|
91
|
+
DEFAULT_MODELS_PATH,
|
|
92
|
+
)
|
|
93
|
+
args.model = training_result.model
|
|
94
|
+
|
|
95
|
+
print_run_or_instructions(args)
|
|
96
|
+
|
|
97
|
+
else:
|
|
98
|
+
print_success(
|
|
99
|
+
"No problem 👍🏼. You can also train a model later by going "
|
|
100
|
+
"to the project directory and running 'rasa train'."
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def print_run_or_instructions(args: argparse.Namespace) -> None:
|
|
105
|
+
import questionary
|
|
106
|
+
|
|
107
|
+
from rasa.core import constants
|
|
108
|
+
|
|
109
|
+
should_run = (
|
|
110
|
+
questionary.confirm("Do you want to speak to the trained assistant? 🤖")
|
|
111
|
+
.skip_if(args.no_prompt, default=False)
|
|
112
|
+
.ask()
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
if should_run:
|
|
116
|
+
# provide defaults for command line arguments
|
|
117
|
+
attributes = [
|
|
118
|
+
"endpoints",
|
|
119
|
+
"credentials",
|
|
120
|
+
"cors",
|
|
121
|
+
"auth_token",
|
|
122
|
+
"jwt_secret",
|
|
123
|
+
"jwt_method",
|
|
124
|
+
"enable_api",
|
|
125
|
+
"remote_storage",
|
|
126
|
+
]
|
|
127
|
+
for a in attributes:
|
|
128
|
+
setattr(args, a, None)
|
|
129
|
+
|
|
130
|
+
args.port = constants.DEFAULT_SERVER_PORT
|
|
131
|
+
args.voice = False
|
|
132
|
+
args.skip_yaml_validation = ["domain"]
|
|
133
|
+
|
|
134
|
+
inspect(args)
|
|
135
|
+
else:
|
|
136
|
+
if args.no_prompt:
|
|
137
|
+
print(
|
|
138
|
+
"If you want to speak to the assistant, "
|
|
139
|
+
"run 'rasa inspect' at any time inside "
|
|
140
|
+
"the project directory."
|
|
141
|
+
)
|
|
142
|
+
else:
|
|
143
|
+
print_success(
|
|
144
|
+
"Ok 👍🏼. "
|
|
145
|
+
"If you want to speak to the assistant, "
|
|
146
|
+
"run 'rasa inspect' at any time inside "
|
|
147
|
+
"the project directory."
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def init_project(args: argparse.Namespace, path: Text) -> None:
|
|
152
|
+
"""Inits project."""
|
|
153
|
+
os.chdir(path)
|
|
154
|
+
create_initial_project(".", args.template)
|
|
155
|
+
print(f"Created project directory at '{os.getcwd()}'.")
|
|
156
|
+
print_train_or_instructions(args)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def create_initial_project(
|
|
160
|
+
path: Text, template: ProjectTemplateName = ProjectTemplateName.DEFAULT
|
|
161
|
+
) -> None:
|
|
162
|
+
"""Creates directory structure and templates for initial project."""
|
|
163
|
+
from distutils.dir_util import copy_tree
|
|
164
|
+
|
|
165
|
+
copy_tree(scaffold_path(template), path)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def scaffold_path(template: ProjectTemplateName) -> Text:
|
|
169
|
+
import importlib_resources
|
|
170
|
+
|
|
171
|
+
import rasa.cli.project_templates
|
|
172
|
+
|
|
173
|
+
template_module = rasa.cli.project_templates.__name__
|
|
174
|
+
return str(importlib_resources.files(template_module).joinpath(template.value))
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def print_cancel() -> None:
|
|
178
|
+
print_success("Ok. You can continue setting up by running 'rasa init' 🙋🏽♀️")
|
|
179
|
+
sys.exit(0)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _ask_create_path(path: Text) -> None:
|
|
183
|
+
import questionary
|
|
184
|
+
|
|
185
|
+
should_create = questionary.confirm(
|
|
186
|
+
f"Path '{path}' does not exist 🧐. Create path?"
|
|
187
|
+
).ask()
|
|
188
|
+
|
|
189
|
+
if should_create:
|
|
190
|
+
try:
|
|
191
|
+
os.makedirs(path)
|
|
192
|
+
except (PermissionError, OSError, FileExistsError) as e:
|
|
193
|
+
print_error_and_exit(
|
|
194
|
+
f"Failed to create project path at '{path}'. " f"Error: {e}"
|
|
195
|
+
)
|
|
196
|
+
else:
|
|
197
|
+
print_success(
|
|
198
|
+
"Ok, will exit for now. You can continue setting up by "
|
|
199
|
+
"running 'rasa init' again 🙋🏽♀️"
|
|
200
|
+
)
|
|
201
|
+
sys.exit(0)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def _ask_overwrite(path: Text) -> None:
|
|
205
|
+
import questionary
|
|
206
|
+
|
|
207
|
+
overwrite = questionary.confirm(
|
|
208
|
+
"Directory '{}' is not empty. Continue?".format(os.path.abspath(path))
|
|
209
|
+
).ask()
|
|
210
|
+
if not overwrite:
|
|
211
|
+
print_cancel()
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def run(args: argparse.Namespace) -> None:
|
|
215
|
+
import questionary
|
|
216
|
+
|
|
217
|
+
print_success("Welcome to Rasa! 🤖\n")
|
|
218
|
+
print(
|
|
219
|
+
"By installing and using this software, you agree to be bound by the terms "
|
|
220
|
+
"and conditions of the Developer Terms available at "
|
|
221
|
+
"https://rasa.com/developer-terms. "
|
|
222
|
+
"Please review the Developer Terms carefully before proceeding.\n"
|
|
223
|
+
)
|
|
224
|
+
if args.no_prompt:
|
|
225
|
+
print(
|
|
226
|
+
f"To get started quickly, an "
|
|
227
|
+
f"initial project will be created.\n"
|
|
228
|
+
f"If you need some help, check out "
|
|
229
|
+
f"the documentation at {DOCS_BASE_URL}.\n"
|
|
230
|
+
)
|
|
231
|
+
else:
|
|
232
|
+
print(
|
|
233
|
+
f"To get started quickly, an "
|
|
234
|
+
f"initial project will be created.\n"
|
|
235
|
+
f"If you need some help, check out "
|
|
236
|
+
f"the documentation at {DOCS_BASE_URL}.\n"
|
|
237
|
+
f"Now let's start! 👇🏽\n"
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
if args.init_dir is not None:
|
|
241
|
+
path = args.init_dir
|
|
242
|
+
else:
|
|
243
|
+
path = (
|
|
244
|
+
questionary.text(
|
|
245
|
+
"Please enter a path where the project will be "
|
|
246
|
+
"created [default: current directory]"
|
|
247
|
+
)
|
|
248
|
+
.skip_if(args.no_prompt, default="")
|
|
249
|
+
.ask()
|
|
250
|
+
)
|
|
251
|
+
# set the default directory. we can't use the `default` property
|
|
252
|
+
# in questionary as we want to avoid showing the "." in the prompt as the
|
|
253
|
+
# initial value. users tend to overlook it and it leads to invalid
|
|
254
|
+
# paths like: ".C:\mydir".
|
|
255
|
+
# Can't use `if not path` either, as `None` will be handled differently (abort)
|
|
256
|
+
if path == "":
|
|
257
|
+
path = "."
|
|
258
|
+
|
|
259
|
+
if args.no_prompt and not os.path.isdir(path):
|
|
260
|
+
print_error_and_exit(f"Project init path '{path}' not found.")
|
|
261
|
+
|
|
262
|
+
if path and not os.path.isdir(path):
|
|
263
|
+
_ask_create_path(path)
|
|
264
|
+
|
|
265
|
+
if path is None or not os.path.isdir(path):
|
|
266
|
+
print_cancel()
|
|
267
|
+
|
|
268
|
+
if not args.no_prompt and len(os.listdir(path)) > 0:
|
|
269
|
+
_ask_overwrite(path)
|
|
270
|
+
|
|
271
|
+
telemetry.track_project_init(path)
|
|
272
|
+
|
|
273
|
+
init_project(args, path)
|
rasa/cli/shell.py
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
from typing import List
|
|
6
|
+
|
|
7
|
+
from rasa import telemetry
|
|
8
|
+
from rasa.cli import SubParsersAction
|
|
9
|
+
from rasa.cli.arguments import shell as arguments
|
|
10
|
+
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
11
|
+
from rasa.model import get_local_model
|
|
12
|
+
from rasa.shared.constants import ASSISTANT_ID_KEY
|
|
13
|
+
from rasa.shared.data import TrainingType
|
|
14
|
+
from rasa.shared.utils.cli import print_error
|
|
15
|
+
from rasa.exceptions import ModelNotFound
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def add_subparser(
|
|
21
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
22
|
+
) -> None:
|
|
23
|
+
"""Add all shell parsers.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
subparsers: subparser we are going to attach to
|
|
27
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
28
|
+
"""
|
|
29
|
+
shell_parser = subparsers.add_parser(
|
|
30
|
+
"shell",
|
|
31
|
+
parents=parents,
|
|
32
|
+
conflict_handler="resolve",
|
|
33
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
34
|
+
help=(
|
|
35
|
+
"Loads your trained model and lets you talk to your "
|
|
36
|
+
"assistant on the command line."
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
shell_parser.set_defaults(func=shell)
|
|
40
|
+
|
|
41
|
+
shell_parser.add_argument(
|
|
42
|
+
"--conversation-id",
|
|
43
|
+
default=uuid.uuid4().hex,
|
|
44
|
+
required=False,
|
|
45
|
+
help="Set the conversation ID.",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
run_subparsers = shell_parser.add_subparsers()
|
|
49
|
+
|
|
50
|
+
shell_nlu_subparser = run_subparsers.add_parser(
|
|
51
|
+
"nlu",
|
|
52
|
+
parents=parents,
|
|
53
|
+
conflict_handler="resolve",
|
|
54
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
55
|
+
help="Interprets messages on the command line using your NLU model.",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
shell_nlu_subparser.set_defaults(func=shell_nlu)
|
|
59
|
+
|
|
60
|
+
arguments.set_shell_arguments(shell_parser)
|
|
61
|
+
arguments.set_shell_nlu_arguments(shell_nlu_subparser)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def shell_nlu(args: argparse.Namespace) -> None:
|
|
65
|
+
"""Talk with an NLU only bot though the command line."""
|
|
66
|
+
from rasa.cli.utils import get_validated_path
|
|
67
|
+
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
68
|
+
import rasa.nlu.run
|
|
69
|
+
|
|
70
|
+
args.connector = "cmdline"
|
|
71
|
+
|
|
72
|
+
model_path = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
73
|
+
|
|
74
|
+
try:
|
|
75
|
+
model = get_local_model(model_path)
|
|
76
|
+
except ModelNotFound:
|
|
77
|
+
print_error(
|
|
78
|
+
"No model found. Train a model before running the "
|
|
79
|
+
"server using `rasa train nlu`."
|
|
80
|
+
)
|
|
81
|
+
return
|
|
82
|
+
|
|
83
|
+
metadata = LocalModelStorage.metadata_from_archive(model)
|
|
84
|
+
|
|
85
|
+
if metadata.assistant_id is None:
|
|
86
|
+
print_error(
|
|
87
|
+
f"The model metadata does not contain a value for the '{ASSISTANT_ID_KEY}' "
|
|
88
|
+
f"attribute. Check that 'config.yml' file contains a value for "
|
|
89
|
+
f"the '{ASSISTANT_ID_KEY}' key and re-train the model.",
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
if metadata.training_type == TrainingType.CORE:
|
|
93
|
+
print_error(
|
|
94
|
+
"No NLU model found. Train a model before running the "
|
|
95
|
+
"server using `rasa train nlu`."
|
|
96
|
+
)
|
|
97
|
+
return
|
|
98
|
+
|
|
99
|
+
telemetry.track_shell_started("nlu")
|
|
100
|
+
rasa.nlu.run.run_cmdline(model)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def shell(args: argparse.Namespace) -> None:
|
|
104
|
+
"""Talk with a bot though the command line."""
|
|
105
|
+
from rasa.cli.utils import get_validated_path
|
|
106
|
+
from rasa.shared.constants import DEFAULT_MODELS_PATH
|
|
107
|
+
|
|
108
|
+
args.connector = "cmdline"
|
|
109
|
+
|
|
110
|
+
model = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
model = get_local_model(model)
|
|
114
|
+
except ModelNotFound:
|
|
115
|
+
print_error(
|
|
116
|
+
"No model found. Train a model before running the "
|
|
117
|
+
"server using `rasa train`."
|
|
118
|
+
)
|
|
119
|
+
return
|
|
120
|
+
|
|
121
|
+
metadata = LocalModelStorage.metadata_from_archive(model)
|
|
122
|
+
|
|
123
|
+
if metadata.assistant_id is None:
|
|
124
|
+
print_error(
|
|
125
|
+
f"The model metadata does not contain a value for the '{ASSISTANT_ID_KEY}' "
|
|
126
|
+
f"attribute. Check that 'config.yml' file contains a value for "
|
|
127
|
+
f"the '{ASSISTANT_ID_KEY}' key and re-train the model.",
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
if metadata.training_type == TrainingType.NLU:
|
|
131
|
+
import rasa.nlu.run
|
|
132
|
+
|
|
133
|
+
telemetry.track_shell_started("nlu")
|
|
134
|
+
|
|
135
|
+
rasa.nlu.run.run_cmdline(model)
|
|
136
|
+
else:
|
|
137
|
+
import rasa.cli.run
|
|
138
|
+
|
|
139
|
+
telemetry.track_shell_started("rasa")
|
|
140
|
+
|
|
141
|
+
rasa.cli.run.run(args)
|
|
File without changes
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
from rasa.cli import SubParsersAction
|
|
5
|
+
from rasa.cli.arguments.default_arguments import (
|
|
6
|
+
add_config_param,
|
|
7
|
+
add_endpoint_param,
|
|
8
|
+
)
|
|
9
|
+
from rasa.cli.arguments.train import add_data_param, add_domain_param
|
|
10
|
+
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, DEFAULT_CONFIG_PATH
|
|
11
|
+
|
|
12
|
+
from rasa.studio.download import handle_download
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def add_subparser(
|
|
16
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
17
|
+
) -> None:
|
|
18
|
+
"""Add the studio download parser.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
subparsers: subparser we are going to attach to
|
|
22
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
23
|
+
"""
|
|
24
|
+
download_parser = subparsers.add_parser(
|
|
25
|
+
"download",
|
|
26
|
+
parents=parents,
|
|
27
|
+
conflict_handler="resolve",
|
|
28
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
29
|
+
help=(
|
|
30
|
+
"Download data from Rasa Studio including "
|
|
31
|
+
"flows and NLU data depending on the assistant type."
|
|
32
|
+
),
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
download_parser.set_defaults(func=handle_download)
|
|
36
|
+
set_studio_download_arguments(download_parser)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def set_studio_download_arguments(parser: argparse.ArgumentParser) -> None:
|
|
40
|
+
"""Add arguments for running `rasa studio download`."""
|
|
41
|
+
add_domain_param(parser)
|
|
42
|
+
add_data_param(parser)
|
|
43
|
+
add_config_param(parser, default=DEFAULT_CONFIG_PATH)
|
|
44
|
+
add_endpoint_param(
|
|
45
|
+
parser,
|
|
46
|
+
"Configuration file for the model endpoints.",
|
|
47
|
+
default=DEFAULT_ENDPOINTS_PATH,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
parser.add_argument(
|
|
51
|
+
"assistant_name",
|
|
52
|
+
default=None,
|
|
53
|
+
nargs=1,
|
|
54
|
+
type=str,
|
|
55
|
+
help="Name of the assistant on Rasa Studio",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
parser.add_argument(
|
|
59
|
+
"--overwrite",
|
|
60
|
+
action="store_true",
|
|
61
|
+
help="Overwrite local data with data from Rasa Studio",
|
|
62
|
+
)
|