rasa-pro 3.12.0.dev1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- README.md +41 -0
- rasa/__init__.py +9 -0
- rasa/__main__.py +177 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +160 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +106 -0
- rasa/cli/arguments/default_arguments.py +207 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +219 -0
- rasa/cli/arguments/shell.py +17 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +279 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +354 -0
- rasa/cli/dialogue_understanding_test.py +251 -0
- rasa/cli/e2e_test.py +259 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +75 -0
- rasa/cli/interactive.py +166 -0
- rasa/cli/license.py +65 -0
- rasa/cli/llm_fine_tuning.py +403 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +10 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +58 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
- rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +12 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
- rasa/cli/project_templates/tutorial/domain.yml +35 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
- rasa/cli/run.py +143 -0
- rasa/cli/scaffold.py +273 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +296 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +62 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +278 -0
- rasa/cli/utils.py +484 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +45 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1318 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_hangup.py +29 -0
- rasa/core/actions/action_repeat_bot_messages.py +89 -0
- rasa/core/actions/action_run_slot_rejections.py +210 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +191 -0
- rasa/core/actions/direct_custom_actions_executor.py +109 -0
- rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +145 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +559 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +324 -0
- rasa/core/brokers/pika.py +388 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +61 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +456 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +197 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-861ddd57.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-42ba3e3d.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-89e6403a.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-bdf5f29b.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
- rasa/core/channels/inspector/dist/index.html +42 -0
- rasa/core/channels/inspector/index.html +40 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +52 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +220 -0
- rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +84 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6249 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +230 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +302 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/voice_ready/__init__.py +0 -0
- rasa/core/channels/voice_ready/audiocodes.py +501 -0
- rasa/core/channels/voice_ready/jambonz.py +121 -0
- rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
- rasa/core/channels/voice_ready/twilio_voice.py +403 -0
- rasa/core/channels/voice_ready/utils.py +37 -0
- rasa/core/channels/voice_stream/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
- rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
- rasa/core/channels/voice_stream/asr/azure.py +130 -0
- rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
- rasa/core/channels/voice_stream/audio_bytes.py +8 -0
- rasa/core/channels/voice_stream/browser_audio.py +107 -0
- rasa/core/channels/voice_stream/call_state.py +23 -0
- rasa/core/channels/voice_stream/tts/__init__.py +0 -0
- rasa/core/channels/voice_stream/tts/azure.py +106 -0
- rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
- rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
- rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
- rasa/core/channels/voice_stream/util.py +57 -0
- rasa/core/channels/voice_stream/voice_channel.py +427 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +112 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +124 -0
- rasa/core/information_retrieval/information_retrieval.py +137 -0
- rasa/core/information_retrieval/milvus.py +59 -0
- rasa/core/information_retrieval/qdrant.py +96 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +320 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +70 -0
- rasa/core/persistor.py +538 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +905 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +754 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +1031 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1465 -0
- rasa/core/run.py +342 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +36 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +241 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +584 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1703 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1744 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +366 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +61 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
- rasa/dialogue_understanding/commands/restart_command.py +58 -0
- rasa/dialogue_understanding/commands/session_end_command.py +61 -0
- rasa/dialogue_understanding/commands/session_start_command.py +59 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
- rasa/dialogue_understanding/commands/utils.py +45 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +464 -0
- rasa/dialogue_understanding/generator/constants.py +27 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +920 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +486 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/repeat.py +37 -0
- rasa/dialogue_understanding/patterns/restart.py +37 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/session_start.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/patterns/user_silence.py +37 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +720 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/dialogue_understanding/utils.py +14 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +12 -0
- rasa/dialogue_understanding_test/constants.py +17 -0
- rasa/dialogue_understanding_test/du_test_case.py +118 -0
- rasa/dialogue_understanding_test/du_test_result.py +11 -0
- rasa/dialogue_understanding_test/du_test_runner.py +93 -0
- rasa/dialogue_understanding_test/io.py +54 -0
- rasa/dialogue_understanding_test/validation.py +22 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
- rasa/e2e_test/assertions.py +1345 -0
- rasa/e2e_test/assertions_schema.yml +129 -0
- rasa/e2e_test/constants.py +31 -0
- rasa/e2e_test/e2e_config.py +220 -0
- rasa/e2e_test/e2e_config_schema.yml +26 -0
- rasa/e2e_test/e2e_test_case.py +569 -0
- rasa/e2e_test/e2e_test_converter.py +363 -0
- rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
- rasa/e2e_test/e2e_test_coverage_report.py +364 -0
- rasa/e2e_test/e2e_test_result.py +54 -0
- rasa/e2e_test/e2e_test_runner.py +1192 -0
- rasa/e2e_test/e2e_test_schema.yml +181 -0
- rasa/e2e_test/pykwalify_extensions.py +39 -0
- rasa/e2e_test/stub_custom_action.py +70 -0
- rasa/e2e_test/utils/__init__.py +0 -0
- rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
- rasa/e2e_test/utils/io.py +598 -0
- rasa/e2e_test/utils/validation.py +178 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +642 -0
- rasa/engine/loader.py +48 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +41 -0
- rasa/engine/recipes/default_components.py +97 -0
- rasa/engine/recipes/default_recipe.py +1272 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +244 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +199 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +1451 -0
- rasa/env.py +14 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +96 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +111 -0
- rasa/jupyter.py +63 -0
- rasa/llm_fine_tuning/__init__.py +0 -0
- rasa/llm_fine_tuning/annotation_module.py +241 -0
- rasa/llm_fine_tuning/conversations.py +144 -0
- rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
- rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
- rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
- rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
- rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
- rasa/llm_fine_tuning/storage.py +174 -0
- rasa/llm_fine_tuning/train_test_split_module.py +441 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +40 -0
- rasa/model_manager/model_api.py +559 -0
- rasa/model_manager/runner_service.py +286 -0
- rasa/model_manager/socket_bridge.py +146 -0
- rasa/model_manager/studio_jwt_auth.py +86 -0
- rasa/model_manager/trainer_service.py +325 -0
- rasa/model_manager/utils.py +87 -0
- rasa/model_manager/warm_rasa_process.py +187 -0
- rasa/model_service.py +112 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +596 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1588 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +311 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +180 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2172 -0
- rasa/shared/core/events.py +2559 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +562 -0
- rasa/shared/core/flows/flow_path.py +84 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +258 -0
- rasa/shared/core/flows/flows_yaml_schema.json +303 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/utils.py +39 -0
- rasa/shared/core/flows/validation.py +735 -0
- rasa/shared/core/flows/yaml_flows_io.py +405 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +654 -0
- rasa/shared/core/trackers.py +1183 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +858 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +167 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +770 -0
- rasa/shared/importers/multi_project.py +215 -0
- rasa/shared/importers/rasa.py +108 -0
- rasa/shared/importers/remote_importer.py +196 -0
- rasa/shared/importers/utils.py +36 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +53 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +729 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/_configs/__init__.py +0 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +677 -0
- rasa/shared/providers/_configs/client_config.py +59 -0
- rasa/shared/providers/_configs/default_litellm_client_config.py +132 -0
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +236 -0
- rasa/shared/providers/_configs/litellm_router_client_config.py +222 -0
- rasa/shared/providers/_configs/model_group_config.py +173 -0
- rasa/shared/providers/_configs/openai_client_config.py +177 -0
- rasa/shared/providers/_configs/rasa_llm_client_config.py +75 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +178 -0
- rasa/shared/providers/_configs/utils.py +117 -0
- rasa/shared/providers/_ssl_verification_utils.py +124 -0
- rasa/shared/providers/_utils.py +79 -0
- rasa/shared/providers/constants.py +7 -0
- rasa/shared/providers/embedding/__init__.py +0 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
- rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +335 -0
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
- rasa/shared/providers/embedding/embedding_client.py +90 -0
- rasa/shared/providers/embedding/embedding_response.py +41 -0
- rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +138 -0
- rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
- rasa/shared/providers/llm/__init__.py +0 -0
- rasa/shared/providers/llm/_base_litellm_client.py +265 -0
- rasa/shared/providers/llm/azure_openai_llm_client.py +415 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +110 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +202 -0
- rasa/shared/providers/llm/llm_client.py +78 -0
- rasa/shared/providers/llm/llm_response.py +50 -0
- rasa/shared/providers/llm/openai_llm_client.py +161 -0
- rasa/shared/providers/llm/rasa_llm_client.py +120 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +276 -0
- rasa/shared/providers/mappings.py +94 -0
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +185 -0
- rasa/shared/providers/router/router_client.py +75 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +102 -0
- rasa/shared/utils/common.py +324 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
- rasa/shared/utils/health_check/health_check.py +258 -0
- rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
- rasa/shared/utils/io.py +499 -0
- rasa/shared/utils/llm.py +764 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +214 -0
- rasa/shared/utils/schemas/model_config.yml +36 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +1068 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +270 -0
- rasa/studio/config.py +136 -0
- rasa/studio/constants.py +19 -0
- rasa/studio/data_handler.py +368 -0
- rasa/studio/download.py +489 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +134 -0
- rasa/studio/upload.py +563 -0
- rasa/telemetry.py +1876 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +355 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +765 -0
- rasa/tracing/instrumentation/instrumentation.py +1306 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +639 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +331 -0
- rasa/utils/io.py +252 -0
- rasa/utils/json_utils.py +60 -0
- rasa/utils/licensing.py +542 -0
- rasa/utils/log_utils.py +181 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +147 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/sanic_error_handler.py +32 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1644 -0
- rasa/version.py +3 -0
- rasa_pro-3.12.0.dev1.dist-info/METADATA +199 -0
- rasa_pro-3.12.0.dev1.dist-info/NOTICE +5 -0
- rasa_pro-3.12.0.dev1.dist-info/RECORD +790 -0
- rasa_pro-3.12.0.dev1.dist-info/WHEEL +4 -0
- rasa_pro-3.12.0.dev1.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Dict, Text, Any, Optional
|
|
3
|
+
import copy
|
|
4
|
+
import logging
|
|
5
|
+
|
|
6
|
+
from packaging import version
|
|
7
|
+
from rasa.constants import MINIMUM_COMPATIBLE_VERSION
|
|
8
|
+
from rasa.engine.graph import GraphComponent, ExecutionContext
|
|
9
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
10
|
+
from rasa.engine.storage.resource import Resource
|
|
11
|
+
from rasa.shared.exceptions import InvalidConfigException
|
|
12
|
+
from rasa.shared.core.domain import Domain
|
|
13
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
14
|
+
import rasa.shared.utils.io
|
|
15
|
+
from rasa.utils.tensorflow.constants import EPOCHS
|
|
16
|
+
from rasa.graph_components.providers.domain_for_core_training_provider import (
|
|
17
|
+
DomainForCoreTrainingProvider,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
FINGERPRINT_CONFIG = "fingerprint-config"
|
|
21
|
+
FINGERPRINT_CORE = "fingerprint-core"
|
|
22
|
+
FINGERPRINT_NLU = "fingerprint-nlu"
|
|
23
|
+
FINGERPRINT_VERSION = "rasa-version"
|
|
24
|
+
|
|
25
|
+
logger = logging.getLogger(__name__)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class FinetuningValidator(GraphComponent):
|
|
29
|
+
"""Component that checks whether fine-tuning is possible.
|
|
30
|
+
|
|
31
|
+
This is a component at the beginning of the graph which receives all training data
|
|
32
|
+
and raises an exception in case `is_finetuning` is `True` and finetuning is not
|
|
33
|
+
possible (e.g. because new labels were added).
|
|
34
|
+
In case we are doing a regular training (and not finetuning) this persists the
|
|
35
|
+
necessary information extracted from the training data to be able to validate when
|
|
36
|
+
initialized via load whether we can finetune.
|
|
37
|
+
|
|
38
|
+
Finetuning is possible if, compared to the initial training phase, it holds that
|
|
39
|
+
1. the configuration (except for "epoch" keys) does not change
|
|
40
|
+
2. the domain (except for e.g. "responses") does not change - or we're not
|
|
41
|
+
finetuning the core part
|
|
42
|
+
3. the intents, entities, entity groups, entity roles, and action names that
|
|
43
|
+
appeared in the original NLU training data, appear in the NLU training data
|
|
44
|
+
used for finetuning, and no new such items (i.e. intents, entities, entity
|
|
45
|
+
groups, entity roles, or action names) have been added, compared to the original
|
|
46
|
+
training data - or we're not finetuning the nlu part.
|
|
47
|
+
Note that even though conditions 2. and 3. differ based on which part we finetune,
|
|
48
|
+
condition 1. always covers both parts, i.e. NLU and Core.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
FILENAME = "fingerprints-for-validation.json"
|
|
52
|
+
|
|
53
|
+
@staticmethod
|
|
54
|
+
def get_default_config() -> Dict[Text, Any]:
|
|
55
|
+
"""Default config for ProjectProvider."""
|
|
56
|
+
return {"validate_core": True, "validate_nlu": True}
|
|
57
|
+
|
|
58
|
+
def __init__(
|
|
59
|
+
self,
|
|
60
|
+
config: Dict[Text, Any],
|
|
61
|
+
model_storage: ModelStorage,
|
|
62
|
+
resource: Resource,
|
|
63
|
+
execution_context: ExecutionContext,
|
|
64
|
+
fingerprints: Optional[Dict[Text, Text]] = None,
|
|
65
|
+
) -> None:
|
|
66
|
+
"""Instantiates a `FineTuningValidator`.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
model_storage: Storage which graph components can use to persist and load
|
|
70
|
+
themselves.
|
|
71
|
+
resource: Resource locator for this component which can be used to persist
|
|
72
|
+
and load itself from the `model_storage`.
|
|
73
|
+
execution_context: Information about the current graph run.
|
|
74
|
+
fingerprints: a dictionary of fingerprints generated by a
|
|
75
|
+
`FineTuningValidator`
|
|
76
|
+
"""
|
|
77
|
+
self._is_finetuning = execution_context.is_finetuning
|
|
78
|
+
self._execution_context = execution_context
|
|
79
|
+
self._model_storage = model_storage
|
|
80
|
+
self._resource = resource
|
|
81
|
+
self._fingerprints: Dict[Text, Text] = fingerprints or {}
|
|
82
|
+
|
|
83
|
+
self._core = config["validate_core"]
|
|
84
|
+
self._nlu = config["validate_nlu"]
|
|
85
|
+
|
|
86
|
+
def validate(self, importer: TrainingDataImporter) -> TrainingDataImporter:
|
|
87
|
+
"""Validates whether we can finetune Core and NLU when finetuning is enabled.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
importer: a training data importer
|
|
91
|
+
|
|
92
|
+
Raises:
|
|
93
|
+
`InvalidConfigException` if there is a conflict
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
Training Data Importer.
|
|
97
|
+
"""
|
|
98
|
+
self._validate(importer)
|
|
99
|
+
return importer
|
|
100
|
+
|
|
101
|
+
def _validate(self, importer: TrainingDataImporter) -> None:
|
|
102
|
+
"""Validate whether the finetuning setting conflicts with other settings.
|
|
103
|
+
|
|
104
|
+
Note that this validation always takes into account the configuration of
|
|
105
|
+
nlu *and* core part, while the validation of aspects of the domain and
|
|
106
|
+
the NLU training data only happen if we request to validate finetuning
|
|
107
|
+
with respect to NLU/Core models, respectively.
|
|
108
|
+
|
|
109
|
+
For more details, see docstring of this class.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
importer: a training data importer
|
|
113
|
+
|
|
114
|
+
Raises:
|
|
115
|
+
`InvalidConfigException` if there is a conflict
|
|
116
|
+
"""
|
|
117
|
+
if self._is_finetuning and not self._fingerprints:
|
|
118
|
+
raise InvalidConfigException(
|
|
119
|
+
f"Finetuning is enabled but the {self.__class__.__name__} "
|
|
120
|
+
f"does not remember seeing a training run. Ensure that you have "
|
|
121
|
+
f"trained your model at least once (with finetuning disabled) "
|
|
122
|
+
f"and ensure that the {self.__class__.__name__} is part of the "
|
|
123
|
+
f"training graph. "
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
rasa_version = rasa.__version__
|
|
127
|
+
if self._is_finetuning:
|
|
128
|
+
old_rasa_version = self._fingerprints[FINGERPRINT_VERSION]
|
|
129
|
+
if version.parse(old_rasa_version) < version.parse(
|
|
130
|
+
MINIMUM_COMPATIBLE_VERSION
|
|
131
|
+
):
|
|
132
|
+
raise InvalidConfigException(
|
|
133
|
+
f"The minimum compatible Rasa Version is "
|
|
134
|
+
f"{MINIMUM_COMPATIBLE_VERSION} but the model we attempt to "
|
|
135
|
+
f"finetune has been generated with an older version "
|
|
136
|
+
f"({old_rasa_version}."
|
|
137
|
+
)
|
|
138
|
+
self._fingerprints[FINGERPRINT_VERSION] = rasa_version
|
|
139
|
+
|
|
140
|
+
fingerprint_config = self._get_fingerprint_of_schema_without_irrelevant_keys()
|
|
141
|
+
self._compare_or_memorize(
|
|
142
|
+
fingerprint_key=FINGERPRINT_CONFIG,
|
|
143
|
+
new_fingerprint=fingerprint_config,
|
|
144
|
+
error_message=(
|
|
145
|
+
"Cannot finetune because more than just the 'epoch' keys have been "
|
|
146
|
+
"changed in the configuration. "
|
|
147
|
+
"Please revert your configuration and only change "
|
|
148
|
+
"the 'epoch' settings where needed."
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
if self._core:
|
|
153
|
+
# NOTE: If there's a consistency check between domain and core training data
|
|
154
|
+
# that ensures domain and core training data are consistent, then we can
|
|
155
|
+
# drop this check.
|
|
156
|
+
fingerprint_core = self._get_fingerprint_of_domain_pruned_for_core(
|
|
157
|
+
domain=importer.get_domain()
|
|
158
|
+
)
|
|
159
|
+
self._compare_or_memorize(
|
|
160
|
+
fingerprint_key=FINGERPRINT_CORE,
|
|
161
|
+
new_fingerprint=fingerprint_core,
|
|
162
|
+
error_message=(
|
|
163
|
+
"Cannot finetune because keys that affect the training of core "
|
|
164
|
+
"components have changed."
|
|
165
|
+
"Please revert all settings in your domain file that affect the "
|
|
166
|
+
"training of core components."
|
|
167
|
+
),
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
if self._nlu:
|
|
171
|
+
fingerprint_nlu = importer.get_nlu_data().label_fingerprint()
|
|
172
|
+
self._compare_or_memorize(
|
|
173
|
+
fingerprint_key=FINGERPRINT_NLU,
|
|
174
|
+
new_fingerprint=fingerprint_nlu,
|
|
175
|
+
error_message=(
|
|
176
|
+
"Cannot finetune because NLU training data contains new labels "
|
|
177
|
+
"or does not contain any examples for some known labels. "
|
|
178
|
+
"Please make sure that the NLU data that you use "
|
|
179
|
+
"for finetuning contains at least one example for every label "
|
|
180
|
+
"(i.e. intent, action name, ...) that was included in the NLU "
|
|
181
|
+
"data used for training the model which we attempt to finetune "
|
|
182
|
+
"now. Moreover, you must not add labels that were not included "
|
|
183
|
+
"during training before. "
|
|
184
|
+
),
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
self.persist()
|
|
188
|
+
|
|
189
|
+
def _compare_or_memorize(
|
|
190
|
+
self, fingerprint_key: Text, new_fingerprint: Text, error_message: Text
|
|
191
|
+
) -> None:
|
|
192
|
+
"""Compares given fingerprint if we are finetuning, otherwise just saves it.
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
fingerprint_key: name of the fingerprint
|
|
196
|
+
new_fingerprint: a new fingerprint value
|
|
197
|
+
error_message: message of `InvalidConfigException` that will be raised if
|
|
198
|
+
a fingerprint is stored under `fingerprint_key` and differs from the
|
|
199
|
+
`new_fingerprint` - and we're in finetuning mode (according to the
|
|
200
|
+
execution context of this component)
|
|
201
|
+
|
|
202
|
+
Raises:
|
|
203
|
+
`InvalidConfigException` if and old fingerprint exists and differs from
|
|
204
|
+
the new one
|
|
205
|
+
"""
|
|
206
|
+
if self._is_finetuning:
|
|
207
|
+
old_fingerprint = self._fingerprints[fingerprint_key]
|
|
208
|
+
if old_fingerprint != new_fingerprint:
|
|
209
|
+
raise InvalidConfigException(error_message)
|
|
210
|
+
else:
|
|
211
|
+
self._fingerprints[fingerprint_key] = new_fingerprint
|
|
212
|
+
|
|
213
|
+
@staticmethod
|
|
214
|
+
def _get_fingerprint_of_domain_pruned_for_core(domain: Domain) -> Text:
|
|
215
|
+
"""Returns a fingerprint of a pruned version of the domain relevant for core.
|
|
216
|
+
|
|
217
|
+
Args:
|
|
218
|
+
domain: a domain
|
|
219
|
+
Returns:
|
|
220
|
+
fingerprint
|
|
221
|
+
"""
|
|
222
|
+
pruned_domain = DomainForCoreTrainingProvider.create_pruned_version(domain)
|
|
223
|
+
return pruned_domain.fingerprint()
|
|
224
|
+
|
|
225
|
+
def _get_fingerprint_of_schema_without_irrelevant_keys(self) -> Text:
|
|
226
|
+
"""Returns a fingerprint of the given schema with certain items removed.
|
|
227
|
+
|
|
228
|
+
These items include specifications that do not influence actual training
|
|
229
|
+
results such as "eager" mode. The only configuration (in your config) that is
|
|
230
|
+
allowed to change is the number of `epochs`.
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
fingerprint
|
|
234
|
+
"""
|
|
235
|
+
graph_schema = self._execution_context.graph_schema
|
|
236
|
+
schema_as_dict = graph_schema.as_dict()
|
|
237
|
+
for node_name, node_dict in schema_as_dict["nodes"].items():
|
|
238
|
+
config_copy = copy.deepcopy(node_dict["config"])
|
|
239
|
+
config_copy.pop(EPOCHS, None)
|
|
240
|
+
config_copy.pop("finetuning_epoch_fraction", None)
|
|
241
|
+
# ignore default values since they're filled in anyway later and can
|
|
242
|
+
# end up in configs (or not) in mysterious ways
|
|
243
|
+
defaults = graph_schema.nodes[node_name].uses.get_default_config()
|
|
244
|
+
for key, default_value in defaults.items():
|
|
245
|
+
if key in config_copy and config_copy[key] == default_value:
|
|
246
|
+
config_copy.pop(key)
|
|
247
|
+
node_dict["config"] = config_copy
|
|
248
|
+
node_dict.pop("eager")
|
|
249
|
+
node_dict.pop("constructor_name")
|
|
250
|
+
return rasa.shared.utils.io.deep_container_fingerprint(schema_as_dict)
|
|
251
|
+
|
|
252
|
+
@classmethod
|
|
253
|
+
def create(
|
|
254
|
+
cls,
|
|
255
|
+
config: Dict[Text, Any],
|
|
256
|
+
model_storage: ModelStorage,
|
|
257
|
+
resource: Resource,
|
|
258
|
+
execution_context: ExecutionContext,
|
|
259
|
+
) -> FinetuningValidator:
|
|
260
|
+
"""Creates a new `FineTuningValidator` (see parent class for full docstring)."""
|
|
261
|
+
return cls(
|
|
262
|
+
config=config,
|
|
263
|
+
model_storage=model_storage,
|
|
264
|
+
resource=resource,
|
|
265
|
+
execution_context=execution_context,
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
def persist(self) -> None:
|
|
269
|
+
"""Persists this `FineTuningValidator`."""
|
|
270
|
+
with self._model_storage.write_to(self._resource) as path:
|
|
271
|
+
rasa.shared.utils.io.dump_obj_as_json_to_file(
|
|
272
|
+
filename=path / self.FILENAME, obj=self._fingerprints
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
@classmethod
|
|
276
|
+
def load(
|
|
277
|
+
cls,
|
|
278
|
+
config: Dict[Text, Any],
|
|
279
|
+
model_storage: ModelStorage,
|
|
280
|
+
resource: Resource,
|
|
281
|
+
execution_context: ExecutionContext,
|
|
282
|
+
**kwargs: Any,
|
|
283
|
+
) -> GraphComponent:
|
|
284
|
+
"""Loads a `FineTuningValidator` (see parent class for full docstring)."""
|
|
285
|
+
try:
|
|
286
|
+
with model_storage.read_from(resource) as path:
|
|
287
|
+
fingerprints = rasa.shared.utils.io.read_json_file(
|
|
288
|
+
filename=path / cls.FILENAME
|
|
289
|
+
)
|
|
290
|
+
return cls(
|
|
291
|
+
config=config,
|
|
292
|
+
model_storage=model_storage,
|
|
293
|
+
execution_context=execution_context,
|
|
294
|
+
resource=resource,
|
|
295
|
+
fingerprints=fingerprints,
|
|
296
|
+
)
|
|
297
|
+
except ValueError as e:
|
|
298
|
+
raise InvalidConfigException(
|
|
299
|
+
f"Loading {cls.__name__} failed. Ensure that the {cls.__name__} "
|
|
300
|
+
f"is part of your training graph and re-train your models before "
|
|
301
|
+
f"attempting to use the {cls.__name__}."
|
|
302
|
+
) from e
|
rasa/hooks.py
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import logging
|
|
3
|
+
from typing import Optional, TYPE_CHECKING, List, Text, Union
|
|
4
|
+
|
|
5
|
+
import pluggy
|
|
6
|
+
|
|
7
|
+
from rasa.cli import SubParsersAction
|
|
8
|
+
from rasa.cli import x as rasa_x
|
|
9
|
+
from rasa.core.auth_retry_tracker_store import AuthRetryTrackerStore
|
|
10
|
+
from rasa.core.secrets_manager.factory import load_secret_manager
|
|
11
|
+
from rasa.tracing import config
|
|
12
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from rasa.core.brokers.broker import EventBroker
|
|
16
|
+
from rasa.core.tracker_store import TrackerStore
|
|
17
|
+
from rasa.shared.core.domain import Domain
|
|
18
|
+
from rasa.anonymization.anonymization_pipeline import AnonymizationPipeline
|
|
19
|
+
|
|
20
|
+
hookimpl = pluggy.HookimplMarker("rasa")
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@hookimpl # type: ignore[misc]
|
|
25
|
+
def refine_cli(
|
|
26
|
+
subparsers: SubParsersAction,
|
|
27
|
+
parent_parsers: List[argparse.ArgumentParser],
|
|
28
|
+
) -> None:
|
|
29
|
+
from rasa.cli import e2e_test, inspect, markers, dialogue_understanding_test
|
|
30
|
+
from rasa.cli.studio import studio
|
|
31
|
+
|
|
32
|
+
from rasa.cli import license as license_cli
|
|
33
|
+
|
|
34
|
+
e2e_test.add_subparser(subparsers, parent_parsers)
|
|
35
|
+
dialogue_understanding_test.add_subparser(subparsers, parent_parsers)
|
|
36
|
+
studio.add_subparser(subparsers, parent_parsers)
|
|
37
|
+
license_cli.add_subparser(subparsers, parent_parsers)
|
|
38
|
+
markers.add_subparser(subparsers, parent_parsers)
|
|
39
|
+
inspect.add_subparser(subparsers, parent_parsers)
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@hookimpl # type: ignore[misc]
|
|
44
|
+
def configure_commandline(cmdline_arguments: argparse.Namespace) -> Optional[Text]:
|
|
45
|
+
endpoints_file = None
|
|
46
|
+
|
|
47
|
+
if cmdline_arguments.func.__name__ == "rasa_x":
|
|
48
|
+
_, endpoints_file = rasa_x._get_credentials_and_endpoints_paths(
|
|
49
|
+
cmdline_arguments
|
|
50
|
+
)
|
|
51
|
+
elif "endpoints" in cmdline_arguments:
|
|
52
|
+
endpoints_file = cmdline_arguments.endpoints
|
|
53
|
+
|
|
54
|
+
if endpoints_file is not None:
|
|
55
|
+
tracer_provider = config.get_tracer_provider(endpoints_file)
|
|
56
|
+
config.configure_tracing(tracer_provider)
|
|
57
|
+
config.configure_metrics(endpoints_file)
|
|
58
|
+
|
|
59
|
+
return endpoints_file
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@hookimpl # type: ignore[misc]
|
|
63
|
+
def init_telemetry(endpoints_file: Optional[Text]) -> None:
|
|
64
|
+
import rasa.telemetry
|
|
65
|
+
|
|
66
|
+
rasa.telemetry.identify_endpoint_config_traits(endpoints_file)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@hookimpl # type: ignore[misc]
|
|
70
|
+
def init_managers(endpoints_file: Optional[Text]) -> None:
|
|
71
|
+
load_secret_manager(endpoints_file)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@hookimpl # type: ignore[misc]
|
|
75
|
+
def create_tracker_store(
|
|
76
|
+
endpoint_config: Union["TrackerStore", "EndpointConfig"],
|
|
77
|
+
domain: "Domain",
|
|
78
|
+
event_broker: Optional["EventBroker"],
|
|
79
|
+
) -> "TrackerStore":
|
|
80
|
+
if isinstance(endpoint_config, EndpointConfig):
|
|
81
|
+
return AuthRetryTrackerStore(
|
|
82
|
+
endpoint_config=endpoint_config, domain=domain, event_broker=event_broker
|
|
83
|
+
)
|
|
84
|
+
return endpoint_config
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@hookimpl # type: ignore[misc]
|
|
88
|
+
def init_anonymization_pipeline(endpoints_file: Optional[Text]) -> None:
|
|
89
|
+
"""Hook implementation for initializing the anonymization pipeline."""
|
|
90
|
+
from rasa.anonymization.anonymization_pipeline import load_anonymization_pipeline
|
|
91
|
+
|
|
92
|
+
load_anonymization_pipeline(endpoints_file)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@hookimpl # type: ignore[misc]
|
|
96
|
+
def get_anonymization_pipeline() -> Optional["AnonymizationPipeline"]:
|
|
97
|
+
"""Hook implementation for getting the anonymization pipeline."""
|
|
98
|
+
from rasa.anonymization.anonymization_pipeline import AnonymizationPipelineProvider
|
|
99
|
+
|
|
100
|
+
return AnonymizationPipelineProvider().get_anonymization_pipeline()
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@hookimpl # type: ignore[misc]
|
|
104
|
+
def after_server_stop() -> None:
|
|
105
|
+
"""Hook implementation for stopping the anonymization pipeline."""
|
|
106
|
+
from rasa.anonymization.anonymization_pipeline import AnonymizationPipelineProvider
|
|
107
|
+
|
|
108
|
+
anon_pipeline = AnonymizationPipelineProvider().get_anonymization_pipeline()
|
|
109
|
+
|
|
110
|
+
if anon_pipeline is not None:
|
|
111
|
+
anon_pipeline.stop()
|
rasa/jupyter.py
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import pprint as pretty_print
|
|
3
|
+
import typing
|
|
4
|
+
from typing import Any, Dict, Optional, Text
|
|
5
|
+
|
|
6
|
+
from rasa.shared.exceptions import RasaException
|
|
7
|
+
from rasa.shared.utils.cli import print_success
|
|
8
|
+
import rasa.core.agent
|
|
9
|
+
import rasa.utils.common
|
|
10
|
+
|
|
11
|
+
if typing.TYPE_CHECKING:
|
|
12
|
+
from rasa.core.agent import Agent
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def pprint(obj: Any) -> None:
|
|
16
|
+
"""Prints JSONs with indent."""
|
|
17
|
+
pretty_print.pprint(obj, indent=2)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def chat(
|
|
21
|
+
model_path: Optional[Text] = None,
|
|
22
|
+
endpoints: Optional[Text] = None,
|
|
23
|
+
agent: Optional["Agent"] = None,
|
|
24
|
+
) -> None:
|
|
25
|
+
"""Chat to the bot within a Jupyter notebook.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
model_path: Path to a combined Rasa model.
|
|
29
|
+
endpoints: Path to a yaml with the action server is custom actions are defined.
|
|
30
|
+
agent: Rasa Core agent (used if no Rasa model given).
|
|
31
|
+
"""
|
|
32
|
+
if model_path:
|
|
33
|
+
agent = asyncio.run(
|
|
34
|
+
rasa.core.agent.load_agent(model_path=model_path, endpoints=endpoints)
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
if agent is None:
|
|
38
|
+
raise RasaException(
|
|
39
|
+
"Either the provided model path could not load the agent "
|
|
40
|
+
"or no core agent was provided."
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
print("Your bot is ready to talk! Type your messages here or send '/stop'.")
|
|
44
|
+
while True:
|
|
45
|
+
message = input()
|
|
46
|
+
if message == "/stop":
|
|
47
|
+
break
|
|
48
|
+
|
|
49
|
+
responses = asyncio.run(agent.handle_text(message))
|
|
50
|
+
for response in responses:
|
|
51
|
+
_display_bot_response(response)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _display_bot_response(response: Dict) -> None:
|
|
55
|
+
from IPython.display import Image, display
|
|
56
|
+
|
|
57
|
+
for response_type, value in response.items():
|
|
58
|
+
if response_type == "text":
|
|
59
|
+
print_success(value)
|
|
60
|
+
|
|
61
|
+
if response_type == "image":
|
|
62
|
+
image = Image(url=value)
|
|
63
|
+
display(image)
|
|
File without changes
|