rasa-pro 3.11.3__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/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 +80 -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-632a63ec.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-89c73b31.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-907e0440.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.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-e6f2af62.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/index-e793d777.js +1317 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-8ceba4db.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-960d3809.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-498807d8.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-eeccc4e2.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-8a078617.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.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-dc9b5e1b.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-a08cba6d.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-87242b9e.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-cef936a6.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-0d39bdb2.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-a03fa445.js +7 -0
- rasa/core/channels/inspector/dist/index.html +44 -0
- rasa/core/channels/inspector/index.html +42 -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 +217 -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 +301 -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 +343 -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 +893 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +258 -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 +478 -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/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 +568 -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 +1190 -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 +80 -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 +1258 -0
- rasa/engine/recipes/graph_recipe.py +78 -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 +112 -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 +595 -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 +1624 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +310 -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 +49 -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 +183 -0
- rasa/shared/providers/_configs/client_config.py +57 -0
- rasa/shared/providers/_configs/default_litellm_client_config.py +130 -0
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +234 -0
- rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
- rasa/shared/providers/_configs/model_group_config.py +167 -0
- rasa/shared/providers/_configs/openai_client_config.py +175 -0
- rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +177 -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/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 +310 -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 +135 -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 +263 -0
- rasa/shared/providers/llm/azure_openai_llm_client.py +359 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +108 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
- rasa/shared/providers/llm/llm_client.py +76 -0
- rasa/shared/providers/llm/llm_response.py +50 -0
- rasa/shared/providers/llm/openai_llm_client.py +155 -0
- rasa/shared/providers/llm/rasa_llm_client.py +112 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +269 -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 +183 -0
- rasa/shared/providers/router/router_client.py +73 -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 +760 -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 +1067 -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 +549 -0
- rasa/telemetry.py +1869 -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 +764 -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 +1653 -0
- rasa/version.py +3 -0
- rasa_pro-3.11.3.dist-info/METADATA +198 -0
- rasa_pro-3.11.3.dist-info/NOTICE +5 -0
- rasa_pro-3.11.3.dist-info/RECORD +779 -0
- rasa_pro-3.11.3.dist-info/WHEEL +4 -0
- rasa_pro-3.11.3.dist-info/entry_points.txt +3 -0
rasa/cli/export.py
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import asyncio
|
|
3
|
+
import logging
|
|
4
|
+
import typing
|
|
5
|
+
from typing import List, Text, Optional
|
|
6
|
+
|
|
7
|
+
from rasa import telemetry
|
|
8
|
+
from rasa.cli import SubParsersAction
|
|
9
|
+
import rasa.core.utils
|
|
10
|
+
import rasa.shared.utils.cli
|
|
11
|
+
import rasa.utils.common
|
|
12
|
+
from rasa.cli.arguments import export as arguments
|
|
13
|
+
from rasa.shared.constants import DOCS_URL_EVENT_BROKERS, DOCS_URL_TRACKER_STORES
|
|
14
|
+
from rasa.exceptions import PublishingError
|
|
15
|
+
from rasa.shared.exceptions import RasaException
|
|
16
|
+
from rasa.core.brokers.pika import PikaEventBroker
|
|
17
|
+
|
|
18
|
+
if typing.TYPE_CHECKING:
|
|
19
|
+
from rasa.core.brokers.broker import EventBroker
|
|
20
|
+
from rasa.core.tracker_store import TrackerStore
|
|
21
|
+
from rasa.core.exporter import Exporter
|
|
22
|
+
from rasa.core.utils import AvailableEndpoints
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def add_subparser(
|
|
28
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
29
|
+
) -> None:
|
|
30
|
+
"""Add subparser for `rasa export`.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
subparsers: Subparsers action object to which `argparse.ArgumentParser`
|
|
34
|
+
objects can be added.
|
|
35
|
+
parents: `argparse.ArgumentParser` objects whose arguments should also be
|
|
36
|
+
included.
|
|
37
|
+
"""
|
|
38
|
+
export_parser = subparsers.add_parser(
|
|
39
|
+
"export",
|
|
40
|
+
parents=parents,
|
|
41
|
+
conflict_handler="resolve",
|
|
42
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
43
|
+
help="Export conversations using an event broker.",
|
|
44
|
+
)
|
|
45
|
+
export_parser.set_defaults(func=export_trackers)
|
|
46
|
+
|
|
47
|
+
arguments.set_export_arguments(export_parser)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _get_tracker_store(endpoints: "AvailableEndpoints") -> "TrackerStore":
|
|
51
|
+
"""Get `TrackerStore` from `endpoints`.
|
|
52
|
+
|
|
53
|
+
Prints an error and exits if no tracker store could be loaded.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
endpoints: `AvailableEndpoints` to initialize the tracker store from.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
Initialized tracker store.
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
if not endpoints.tracker_store:
|
|
63
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
64
|
+
f"Could not find a `tracker_store` section in the supplied "
|
|
65
|
+
f"endpoints file. Instructions on how to configure a tracker store "
|
|
66
|
+
f"can be found here: {DOCS_URL_TRACKER_STORES}. "
|
|
67
|
+
f"Exiting. "
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
from rasa.core.tracker_store import TrackerStore
|
|
71
|
+
|
|
72
|
+
return TrackerStore.create(endpoints.tracker_store)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
async def _get_event_broker(endpoints: "AvailableEndpoints") -> "EventBroker":
|
|
76
|
+
"""Get `EventBroker` from `endpoints`.
|
|
77
|
+
|
|
78
|
+
Prints an error and exits if no event broker could be loaded.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
endpoints: `AvailableEndpoints` to initialize the event broker from.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Initialized event broker.
|
|
85
|
+
|
|
86
|
+
"""
|
|
87
|
+
from rasa.core.brokers.broker import EventBroker
|
|
88
|
+
|
|
89
|
+
broker = await EventBroker.create(endpoints.event_broker)
|
|
90
|
+
|
|
91
|
+
if not broker:
|
|
92
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
93
|
+
f"Could not find an `event_broker` section in the supplied "
|
|
94
|
+
f"endpoints file. Instructions on how to configure an event broker "
|
|
95
|
+
f"can be found here: {DOCS_URL_EVENT_BROKERS}. Exiting."
|
|
96
|
+
)
|
|
97
|
+
return broker
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _get_requested_conversation_ids(
|
|
101
|
+
conversation_ids_arg: Optional[Text] = None,
|
|
102
|
+
) -> Optional[List[Text]]:
|
|
103
|
+
"""Get list of conversation IDs requested as a command-line argument.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
conversation_ids_arg: Value of `--conversation-ids` command-line argument.
|
|
107
|
+
If provided, this is a string of comma-separated conversation IDs.
|
|
108
|
+
|
|
109
|
+
Return:
|
|
110
|
+
List of conversation IDs requested as a command-line argument.
|
|
111
|
+
`None` if that argument was left unspecified.
|
|
112
|
+
|
|
113
|
+
"""
|
|
114
|
+
if not conversation_ids_arg:
|
|
115
|
+
return None
|
|
116
|
+
|
|
117
|
+
return conversation_ids_arg.split(",")
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def _assert_max_timestamp_is_greater_than_min_timestamp(
|
|
121
|
+
args: argparse.Namespace,
|
|
122
|
+
) -> None:
|
|
123
|
+
"""Inspect CLI timestamp parameters.
|
|
124
|
+
|
|
125
|
+
Prints an error and exits if a maximum timestamp is provided that is smaller
|
|
126
|
+
than the provided minimum timestamp.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
args: Command-line arguments to process.
|
|
130
|
+
|
|
131
|
+
"""
|
|
132
|
+
min_timestamp = args.minimum_timestamp
|
|
133
|
+
max_timestamp = args.maximum_timestamp
|
|
134
|
+
|
|
135
|
+
if (
|
|
136
|
+
min_timestamp is not None
|
|
137
|
+
and max_timestamp is not None
|
|
138
|
+
and max_timestamp < min_timestamp
|
|
139
|
+
):
|
|
140
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
141
|
+
f"Maximum timestamp '{max_timestamp}' is smaller than minimum "
|
|
142
|
+
f"timestamp '{min_timestamp}'. Exiting."
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def _prepare_event_broker(event_broker: "EventBroker") -> None:
|
|
147
|
+
"""Prepares event broker to export tracker events.
|
|
148
|
+
|
|
149
|
+
Sets `should_keep_unpublished_messages` flag to `False` if
|
|
150
|
+
`self.event_broker` is a `PikaEventBroker`.
|
|
151
|
+
|
|
152
|
+
If publishing of events fails, the `PikaEventBroker` instance should not keep a
|
|
153
|
+
list of unpublished messages, so we can retry publishing them. This is because
|
|
154
|
+
the instance is launched as part of this short-lived export script, meaning the
|
|
155
|
+
object is destroyed before it might be published.
|
|
156
|
+
|
|
157
|
+
In addition, wait until the event broker reports a `ready` state.
|
|
158
|
+
|
|
159
|
+
"""
|
|
160
|
+
if isinstance(event_broker, PikaEventBroker):
|
|
161
|
+
event_broker.should_keep_unpublished_messages = False
|
|
162
|
+
event_broker.raise_on_failure = True
|
|
163
|
+
|
|
164
|
+
if not event_broker.is_ready():
|
|
165
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
166
|
+
f"Event broker of type '{type(event_broker)}' is not ready. Exiting."
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def export_trackers(args: argparse.Namespace) -> None:
|
|
171
|
+
"""Export events for a connected tracker store using an event broker.
|
|
172
|
+
|
|
173
|
+
Args:
|
|
174
|
+
args: Command-line arguments to process.
|
|
175
|
+
"""
|
|
176
|
+
asyncio.run(_export_trackers(args))
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
async def _export_trackers(args: argparse.Namespace) -> None:
|
|
180
|
+
_assert_max_timestamp_is_greater_than_min_timestamp(args)
|
|
181
|
+
|
|
182
|
+
endpoints = rasa.core.utils.read_endpoints_from_path(args.endpoints)
|
|
183
|
+
tracker_store = _get_tracker_store(endpoints)
|
|
184
|
+
event_broker = await _get_event_broker(endpoints)
|
|
185
|
+
_prepare_event_broker(event_broker)
|
|
186
|
+
requested_conversation_ids = _get_requested_conversation_ids(args.conversation_ids)
|
|
187
|
+
|
|
188
|
+
from rasa.core.exporter import Exporter
|
|
189
|
+
|
|
190
|
+
exporter = Exporter(
|
|
191
|
+
tracker_store,
|
|
192
|
+
event_broker,
|
|
193
|
+
args.endpoints,
|
|
194
|
+
requested_conversation_ids,
|
|
195
|
+
args.minimum_timestamp,
|
|
196
|
+
args.maximum_timestamp,
|
|
197
|
+
args.offset_timestamps_by_seconds,
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
try:
|
|
201
|
+
published_events = await exporter.publish_events()
|
|
202
|
+
telemetry.track_tracker_export(published_events, tracker_store, event_broker)
|
|
203
|
+
rasa.shared.utils.cli.print_success(
|
|
204
|
+
f"Done! Successfully published {published_events} events 🎉"
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
except PublishingError as e:
|
|
208
|
+
command = _get_continuation_command(exporter, e.timestamp)
|
|
209
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
210
|
+
f"Encountered error while publishing event with timestamp '{e}'. To "
|
|
211
|
+
f"continue where I left off, run the following command:"
|
|
212
|
+
f"\n\n\t{command}\n\nExiting."
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
except RasaException as e:
|
|
216
|
+
rasa.shared.utils.cli.print_error_and_exit(str(e))
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _get_continuation_command(exporter: "Exporter", timestamp: float) -> Text:
|
|
220
|
+
"""Build CLI command to continue 'rasa export' where it was interrupted.
|
|
221
|
+
|
|
222
|
+
Called when event publishing stops due to an error.
|
|
223
|
+
|
|
224
|
+
Args:
|
|
225
|
+
exporter: Exporter object containing objects relevant for this export.
|
|
226
|
+
timestamp: Timestamp of the last event attempted to be published.
|
|
227
|
+
|
|
228
|
+
"""
|
|
229
|
+
# build CLI command command based on supplied timestamp and options
|
|
230
|
+
command = "rasa export"
|
|
231
|
+
|
|
232
|
+
if exporter.endpoints_path is not None:
|
|
233
|
+
command += f" --endpoints {exporter.endpoints_path}"
|
|
234
|
+
|
|
235
|
+
command += f" --minimum-timestamp {timestamp}"
|
|
236
|
+
|
|
237
|
+
if exporter.maximum_timestamp is not None:
|
|
238
|
+
command += f" --maximum-timestamp {exporter.maximum_timestamp}"
|
|
239
|
+
|
|
240
|
+
if exporter.requested_conversation_ids:
|
|
241
|
+
command += (
|
|
242
|
+
f" --conversation-ids {','.join(exporter.requested_conversation_ids)}"
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
if exporter.offset_timestamps_by_seconds is not None:
|
|
246
|
+
command += (
|
|
247
|
+
f" --offset-timestamps-by-seconds {exporter.offset_timestamps_by_seconds}"
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
return command
|
rasa/cli/inspect.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import webbrowser
|
|
3
|
+
from asyncio import AbstractEventLoop
|
|
4
|
+
from typing import List, Text
|
|
5
|
+
|
|
6
|
+
from sanic import Sanic
|
|
7
|
+
|
|
8
|
+
from rasa import telemetry
|
|
9
|
+
from rasa.cli import SubParsersAction
|
|
10
|
+
from rasa.cli.arguments import shell as arguments
|
|
11
|
+
from rasa.core import constants
|
|
12
|
+
from rasa.utils.cli import remove_argument_from_parser
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def add_subparser(
|
|
16
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
17
|
+
) -> None:
|
|
18
|
+
"""Add all inspect parsers.
|
|
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
|
+
inspect_parser = subparsers.add_parser(
|
|
25
|
+
"inspect",
|
|
26
|
+
parents=parents,
|
|
27
|
+
conflict_handler="resolve",
|
|
28
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
29
|
+
help=(
|
|
30
|
+
"Loads your trained model and lets you talk to your "
|
|
31
|
+
"assistant in the browser."
|
|
32
|
+
),
|
|
33
|
+
)
|
|
34
|
+
inspect_parser.set_defaults(func=inspect)
|
|
35
|
+
arguments.set_shell_arguments(inspect_parser)
|
|
36
|
+
|
|
37
|
+
# additional argument for voice
|
|
38
|
+
inspect_parser.add_argument(
|
|
39
|
+
"--voice", help="Enable voice", action="store_true", default=False
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# it'd be confusing to expose those arguments to the user,
|
|
43
|
+
# so we remove them
|
|
44
|
+
remove_argument_from_parser(inspect_parser, "--credentials")
|
|
45
|
+
remove_argument_from_parser(inspect_parser, "--connector")
|
|
46
|
+
remove_argument_from_parser(inspect_parser, "--enable-api")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
async def open_inspector_in_browser(server_url: Text, voice: bool = False) -> None:
|
|
50
|
+
"""Opens the rasa inspector in the default browser."""
|
|
51
|
+
channel = "socketio" if not voice else "browser_audio"
|
|
52
|
+
webbrowser.open(f"{server_url}/webhooks/{channel}/inspect.html")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def inspect(args: argparse.Namespace) -> None:
|
|
56
|
+
"""Inspect the bot using the most recent model."""
|
|
57
|
+
import rasa.cli.run
|
|
58
|
+
|
|
59
|
+
async def after_start_hook_open_inspector(_: Sanic, __: AbstractEventLoop) -> None:
|
|
60
|
+
"""Hook to open the browser on server start."""
|
|
61
|
+
server_url = constants.DEFAULT_SERVER_FORMAT.format("http", args.port)
|
|
62
|
+
await open_inspector_in_browser(server_url, args.voice)
|
|
63
|
+
|
|
64
|
+
# the following arguments are not exposed to the user
|
|
65
|
+
if args.voice:
|
|
66
|
+
args.connector = "browser_audio"
|
|
67
|
+
else:
|
|
68
|
+
args.connector = "rasa.core.channels.socketio.SocketIOInput"
|
|
69
|
+
args.enable_api = True
|
|
70
|
+
args.inspect = True
|
|
71
|
+
args.credentials = None
|
|
72
|
+
args.server_listeners = [(after_start_hook_open_inspector, "after_server_start")]
|
|
73
|
+
|
|
74
|
+
telemetry.track_inspect_started(args.connector)
|
|
75
|
+
rasa.cli.run.run(args)
|
rasa/cli/interactive.py
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import List, Optional, Text, Union
|
|
6
|
+
|
|
7
|
+
from rasa import model
|
|
8
|
+
from rasa.cli import SubParsersAction
|
|
9
|
+
from rasa.cli.arguments import interactive as arguments
|
|
10
|
+
import rasa.cli.train as train
|
|
11
|
+
import rasa.cli.utils
|
|
12
|
+
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
13
|
+
from rasa.shared.constants import (
|
|
14
|
+
ASSISTANT_ID_DEFAULT_VALUE,
|
|
15
|
+
ASSISTANT_ID_KEY,
|
|
16
|
+
DEFAULT_ENDPOINTS_PATH,
|
|
17
|
+
DEFAULT_MODELS_PATH,
|
|
18
|
+
)
|
|
19
|
+
from rasa.shared.data import TrainingType
|
|
20
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
21
|
+
import rasa.shared.utils.cli
|
|
22
|
+
import rasa.utils.common
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
logger = logging.getLogger(__name__)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def add_subparser(
|
|
29
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
30
|
+
) -> None:
|
|
31
|
+
"""Add all interactive cli parsers.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
subparsers: subparser we are going to attach to
|
|
35
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
36
|
+
"""
|
|
37
|
+
interactive_parser = subparsers.add_parser(
|
|
38
|
+
"interactive",
|
|
39
|
+
conflict_handler="resolve",
|
|
40
|
+
parents=parents,
|
|
41
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
42
|
+
help="Starts an interactive learning session to create new training data for a "
|
|
43
|
+
"Rasa model by chatting.",
|
|
44
|
+
)
|
|
45
|
+
interactive_parser.set_defaults(func=interactive, core_only=False)
|
|
46
|
+
|
|
47
|
+
interactive_subparsers = interactive_parser.add_subparsers()
|
|
48
|
+
interactive_core_parser = interactive_subparsers.add_parser(
|
|
49
|
+
"core",
|
|
50
|
+
conflict_handler="resolve",
|
|
51
|
+
parents=parents,
|
|
52
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
53
|
+
help="Starts an interactive learning session model to create new training data "
|
|
54
|
+
"for a Rasa Core model by chatting. Uses the 'RegexMessageHandler', i.e. "
|
|
55
|
+
"`/<intent>` input format.",
|
|
56
|
+
)
|
|
57
|
+
interactive_core_parser.set_defaults(func=interactive, core_only=True)
|
|
58
|
+
|
|
59
|
+
arguments.set_interactive_arguments(interactive_parser)
|
|
60
|
+
arguments.set_interactive_core_arguments(interactive_core_parser)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def interactive(args: argparse.Namespace) -> None:
|
|
64
|
+
_set_not_required_args(args)
|
|
65
|
+
file_importer = TrainingDataImporter.load_from_config(
|
|
66
|
+
args.config, args.domain, args.data if not args.core_only else [args.stories]
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if args.model is None:
|
|
70
|
+
story_graph = file_importer.get_stories()
|
|
71
|
+
if not story_graph or story_graph.is_empty():
|
|
72
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
73
|
+
"Could not run interactive learning without either core "
|
|
74
|
+
"data or a model containing core data."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
zipped_model: Optional[Union[Text, Path]] = (
|
|
78
|
+
train.run_core_training(args)
|
|
79
|
+
if args.core_only
|
|
80
|
+
else train.run_training(args)
|
|
81
|
+
)
|
|
82
|
+
if not zipped_model:
|
|
83
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
84
|
+
"Could not train an initial model. Either pass paths "
|
|
85
|
+
"to the relevant training files (`--data`, `--config`, `--domain`), "
|
|
86
|
+
"or use 'rasa train' to train a model."
|
|
87
|
+
)
|
|
88
|
+
else:
|
|
89
|
+
validate_assistant_id_key_in_config(file_importer)
|
|
90
|
+
|
|
91
|
+
zipped_model = get_provided_model(args.model)
|
|
92
|
+
if not (zipped_model and os.path.exists(zipped_model)):
|
|
93
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
94
|
+
f"Interactive learning process cannot be started as no "
|
|
95
|
+
f"initial model was found at path '{args.model}'. "
|
|
96
|
+
f"Use 'rasa train' to train a model."
|
|
97
|
+
)
|
|
98
|
+
if not args.skip_visualization:
|
|
99
|
+
logger.info(f"Loading visualization data from {args.data}.")
|
|
100
|
+
|
|
101
|
+
perform_interactive_learning(args, zipped_model, file_importer)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _set_not_required_args(args: argparse.Namespace) -> None:
|
|
105
|
+
args.fixed_model_name = None
|
|
106
|
+
args.store_uncompressed = False
|
|
107
|
+
args.dry_run = False
|
|
108
|
+
args.skip_validation = True
|
|
109
|
+
args.fail_on_validation_warnings = False
|
|
110
|
+
args.validation_max_history = None
|
|
111
|
+
args.remote_storage = None
|
|
112
|
+
args.keep_local_model_copy = False
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def perform_interactive_learning(
|
|
116
|
+
args: argparse.Namespace,
|
|
117
|
+
zipped_model: Union[Text, "Path"],
|
|
118
|
+
file_importer: TrainingDataImporter,
|
|
119
|
+
) -> None:
|
|
120
|
+
"""Performs interactive learning.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
args: Namespace arguments.
|
|
124
|
+
zipped_model: Path to zipped model.
|
|
125
|
+
file_importer: File importer which provides the training data and model config.
|
|
126
|
+
"""
|
|
127
|
+
from rasa.core.train import do_interactive_learning
|
|
128
|
+
|
|
129
|
+
args.model = str(zipped_model)
|
|
130
|
+
|
|
131
|
+
metadata = LocalModelStorage.metadata_from_archive(zipped_model)
|
|
132
|
+
if metadata.training_type == TrainingType.NLU:
|
|
133
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
134
|
+
"Can not run interactive learning on an NLU-only model."
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
args.endpoints = rasa.cli.utils.get_validated_path(
|
|
138
|
+
args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
do_interactive_learning(args, file_importer)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def get_provided_model(arg_model: Text) -> Optional[Union[Text, Path]]:
|
|
145
|
+
"""Checks model path input and selects model from it."""
|
|
146
|
+
model_path = rasa.cli.utils.get_validated_path(
|
|
147
|
+
arg_model, "model", DEFAULT_MODELS_PATH
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
model.get_latest_model(model_path) if os.path.isdir(model_path) else model_path
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def validate_assistant_id_key_in_config(file_importer: TrainingDataImporter) -> None:
|
|
156
|
+
"""Verifies that config contains a unique value for assistant identifier."""
|
|
157
|
+
config_data = file_importer.get_config()
|
|
158
|
+
assistant_id = config_data.get(ASSISTANT_ID_KEY)
|
|
159
|
+
|
|
160
|
+
if assistant_id is None or assistant_id == ASSISTANT_ID_DEFAULT_VALUE:
|
|
161
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
162
|
+
f"The '{ASSISTANT_ID_KEY}' key in the config file is either missing or "
|
|
163
|
+
f"is set to the default value. Please replace the placeholder default "
|
|
164
|
+
f"value and re-train the model."
|
|
165
|
+
)
|
|
166
|
+
return None
|
rasa/cli/license.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
import rasa.shared.utils.cli
|
|
5
|
+
from rasa.cli import SubParsersAction
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def add_subparser(
|
|
9
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
10
|
+
) -> None:
|
|
11
|
+
"""Add license parser.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
subparsers: subparser we are going to attach to
|
|
15
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
16
|
+
"""
|
|
17
|
+
license_parser = subparsers.add_parser(
|
|
18
|
+
"license",
|
|
19
|
+
parents=parents,
|
|
20
|
+
help="Displays licensing information.",
|
|
21
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
22
|
+
description="Display licensing information.",
|
|
23
|
+
)
|
|
24
|
+
license_parser.set_defaults(func=display_license_information)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def display_license_information(_: argparse.Namespace) -> None:
|
|
28
|
+
"""Display licensing information to stdout."""
|
|
29
|
+
rasa.shared.utils.cli.print_info(
|
|
30
|
+
"By installing and using this software, you agree to be "
|
|
31
|
+
"bound by the terms and conditions of the Developer Terms "
|
|
32
|
+
"available at https://rasa.com/developer-terms. "
|
|
33
|
+
"Please review the Developer Terms carefully before proceeding.\n\n"
|
|
34
|
+
"Rasa Pro relies on several 3rd-party dependencies. "
|
|
35
|
+
"The ones below require a license disclorure:\n",
|
|
36
|
+
PSYCOPG2_LICENSE_DISCLOSURE,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
PSYCOPG2_LICENSE_DISCLOSURE = """
|
|
41
|
+
psycopg2 & psycopg2-binary
|
|
42
|
+
--------------------------
|
|
43
|
+
|
|
44
|
+
psycopg2 and the LGPL
|
|
45
|
+
|
|
46
|
+
psycopg2 is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
47
|
+
|
|
48
|
+
psycopg2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
49
|
+
|
|
50
|
+
In addition, as a special exception, the copyright holders give permission to link this program with the OpenSSL library (or with modified versions of OpenSSL that use the same license as OpenSSL), and distribute linked combinations including the two.
|
|
51
|
+
|
|
52
|
+
You must obey the GNU Lesser General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here.
|
|
53
|
+
|
|
54
|
+
You should have received a copy of the GNU Lesser General Public License along with psycopg2 (see the doc/ directory.) If not, see https://www.gnu.org/licenses/. Alternative licenses
|
|
55
|
+
|
|
56
|
+
The following BSD-like license applies (at your option) to the files following the pattern psycopg/adapter*.{h,c} and psycopg/microprotocol*.{h,c}:
|
|
57
|
+
|
|
58
|
+
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
|
59
|
+
|
|
60
|
+
The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
|
61
|
+
|
|
62
|
+
Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
|
63
|
+
|
|
64
|
+
This notice may not be removed or altered from any source distribution.
|
|
65
|
+
""" # noqa: E501
|