rasa-pro 3.9.18__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 +415 -0
- rasa/__init__.py +10 -0
- rasa/__main__.py +156 -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 +146 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +81 -0
- rasa/cli/arguments/default_arguments.py +165 -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 +204 -0
- rasa/cli/arguments/shell.py +13 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +263 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +292 -0
- rasa/cli/e2e_test.py +586 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +63 -0
- rasa/cli/interactive.py +164 -0
- rasa/cli/license.py +65 -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 +12 -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 +45 -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.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +11 -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 +6 -0
- rasa/cli/project_templates/tutorial/domain.yml +21 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
- rasa/cli/run.py +135 -0
- rasa/cli/scaffold.py +269 -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 +266 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +77 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +260 -0
- rasa/cli/utils.py +464 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +37 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1225 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_run_slot_rejections.py +207 -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 +188 -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 +140 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +555 -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 +322 -0
- rasa/core/brokers/pika.py +386 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +55 -0
- rasa/core/channels/audiocodes.py +463 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +419 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +93 -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-b6e548fe.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-fa03ac9e.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-ee67392a.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-9b283fae.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-8b6fcc2a.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-22e77f4f.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-60ffc87f.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9dd802e4.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-5fa1912f.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-622a1fd2.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-e285a63a.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-f237bdca.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-4b03d70e.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +1040 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-72a0fa5f.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-82218c41.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-78cff630.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-5038b469.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-c4fc4098.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-c33c8ea6.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-a8d03059.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-6a0e56b2.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-2dc7c7bd.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-2360fe39.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-41b9f9ad.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-0aad326f.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-9847d984.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-564d890e.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-38957613.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-f0fc6921.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-ef3c5a77.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-bf3e91c1.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-4d4026c0.js +7 -0
- rasa/core/channels/inspector/dist/index.html +41 -0
- rasa/core/channels/inspector/index.html +39 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +48 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +170 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +107 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -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 +19 -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/formatters.test.ts +382 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +240 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +42 -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 +64 -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 +6156 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +225 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +274 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/twilio_voice.py +367 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +107 -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 +121 -0
- rasa/core/information_retrieval/information_retrieval.py +129 -0
- rasa/core/information_retrieval/milvus.py +52 -0
- rasa/core/information_retrieval/qdrant.py +95 -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 +270 -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 +69 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +781 -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 +705 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +922 -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 +1422 -0
- rasa/core/run.py +331 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +32 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +233 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +574 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1699 -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 +1745 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +339 -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 +260 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +49 -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/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/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +343 -0
- rasa/dialogue_understanding/generator/constants.py +18 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +412 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -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 +827 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +218 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +57 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -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 +248 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +687 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +39 -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/constants.py +11 -0
- rasa/e2e_test/e2e_test_case.py +366 -0
- rasa/e2e_test/e2e_test_result.py +34 -0
- rasa/e2e_test/e2e_test_runner.py +768 -0
- rasa/e2e_test/e2e_test_schema.yml +85 -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 +637 -0
- rasa/engine/loader.py +36 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +44 -0
- rasa/engine/recipes/default_components.py +99 -0
- rasa/engine/recipes/default_recipe.py +1251 -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 +246 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +203 -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 +873 -0
- rasa/env.py +5 -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 +43 -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/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_testing.py +457 -0
- rasa/model_training.py +536 -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/llm_intent_classifier.py +519 -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/persistor.py +282 -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 +106 -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 +1551 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +192 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +167 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2107 -0
- rasa/shared/core/events.py +2504 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +362 -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 +223 -0
- rasa/shared/core/flows/flows_yaml_schema.json +217 -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/validation.py +527 -0
- rasa/shared/core/flows/yaml_flows_io.py +278 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +649 -0
- rasa/shared/core/trackers.py +1177 -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 +838 -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 +163 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +704 -0
- rasa/shared/importers/multi_project.py +203 -0
- rasa/shared/importers/rasa.py +99 -0
- rasa/shared/importers/utils.py +34 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +47 -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 +603 -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 +730 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/openai/__init__.py +0 -0
- rasa/shared/providers/openai/clients.py +43 -0
- rasa/shared/providers/openai/session_handler.py +110 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +72 -0
- rasa/shared/utils/common.py +308 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/io.py +415 -0
- rasa/shared/utils/llm.py +404 -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 +212 -0
- rasa/shared/utils/schemas/model_config.yml +46 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +786 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +268 -0
- rasa/studio/config.py +127 -0
- rasa/studio/constants.py +18 -0
- rasa/studio/data_handler.py +359 -0
- rasa/studio/download.py +483 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +135 -0
- rasa/studio/upload.py +433 -0
- rasa/telemetry.py +1737 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +353 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +672 -0
- rasa/tracing/instrumentation/instrumentation.py +1185 -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 +635 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +302 -0
- rasa/utils/io.py +260 -0
- rasa/utils/licensing.py +534 -0
- rasa/utils/log_utils.py +174 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +145 -0
- rasa/utils/plotting.py +362 -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 +1337 -0
- rasa/version.py +3 -0
- rasa_pro-3.9.18.dist-info/METADATA +563 -0
- rasa_pro-3.9.18.dist-info/NOTICE +5 -0
- rasa_pro-3.9.18.dist-info/RECORD +662 -0
- rasa_pro-3.9.18.dist-info/WHEEL +4 -0
- rasa_pro-3.9.18.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import List, Optional, Dict, Text, Set, Any
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
import scipy.sparse
|
|
6
|
+
|
|
7
|
+
from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturization
|
|
8
|
+
from rasa.nlu.extractors.extractor import EntityTagSpec
|
|
9
|
+
from rasa.nlu.utils import bilou_utils
|
|
10
|
+
from rasa.nlu.utils.bilou_utils import BILOU_PREFIXES
|
|
11
|
+
from rasa.shared.core.domain import SubState, State, Domain
|
|
12
|
+
from rasa.shared.core.constants import PREVIOUS_ACTION, ACTIVE_LOOP, USER, SLOTS
|
|
13
|
+
from rasa.shared.core.trackers import is_prev_action_listen_in_state
|
|
14
|
+
from rasa.shared.nlu.constants import (
|
|
15
|
+
ENTITIES,
|
|
16
|
+
FEATURE_TYPE_SENTENCE,
|
|
17
|
+
ACTION_TEXT,
|
|
18
|
+
ACTION_NAME,
|
|
19
|
+
INTENT,
|
|
20
|
+
NO_ENTITY_TAG,
|
|
21
|
+
ENTITY_ATTRIBUTE_TYPE,
|
|
22
|
+
ENTITY_TAGS,
|
|
23
|
+
TEXT,
|
|
24
|
+
)
|
|
25
|
+
from rasa.shared.nlu.training_data.features import Features
|
|
26
|
+
from rasa.utils.tensorflow import model_data_utils
|
|
27
|
+
|
|
28
|
+
logger = logging.getLogger(__name__)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class SingleStateFeaturizer:
|
|
32
|
+
"""Base class to transform the dialogue state into an ML format.
|
|
33
|
+
|
|
34
|
+
Subclasses of SingleStateFeaturizer will decide how a bot will
|
|
35
|
+
transform the dialogue state into a dictionary mapping an attribute
|
|
36
|
+
to its features. Possible attributes are: `INTENT`, `TEXT`, `ACTION_NAME`,
|
|
37
|
+
`ACTION_TEXT`, `ENTITIES`, `SLOTS` and `ACTIVE_LOOP`. Each attribute will be
|
|
38
|
+
featurized into a list of `rasa.utils.features.Features`.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def __init__(self) -> None:
|
|
42
|
+
"""Initialize the single state featurizer."""
|
|
43
|
+
self._default_feature_states: Dict[Text, Any] = {}
|
|
44
|
+
self.action_texts: List[Text] = []
|
|
45
|
+
self.entity_tag_specs: List[EntityTagSpec] = []
|
|
46
|
+
|
|
47
|
+
def _create_entity_tag_specs(
|
|
48
|
+
self, bilou_tagging: bool = False
|
|
49
|
+
) -> List[EntityTagSpec]:
|
|
50
|
+
"""Returns the tag to index mapping for entities.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Tag to index mapping.
|
|
54
|
+
"""
|
|
55
|
+
if ENTITIES not in self._default_feature_states:
|
|
56
|
+
return []
|
|
57
|
+
|
|
58
|
+
if bilou_tagging:
|
|
59
|
+
tag_id_index_mapping = {
|
|
60
|
+
f"{prefix}{tag}": idx_1 * len(BILOU_PREFIXES) + idx_2 + 1
|
|
61
|
+
for tag, idx_1 in self._default_feature_states[ENTITIES].items()
|
|
62
|
+
for idx_2, prefix in enumerate(BILOU_PREFIXES)
|
|
63
|
+
}
|
|
64
|
+
else:
|
|
65
|
+
tag_id_index_mapping = {
|
|
66
|
+
tag: idx + 1 # +1 to keep 0 for the NO_ENTITY_TAG
|
|
67
|
+
for tag, idx in self._default_feature_states[ENTITIES].items()
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# NO_ENTITY_TAG corresponds to non-entity which should correspond to 0 index
|
|
71
|
+
# needed for correct prediction for padding
|
|
72
|
+
tag_id_index_mapping[NO_ENTITY_TAG] = 0
|
|
73
|
+
|
|
74
|
+
# TODO
|
|
75
|
+
# The entity states used to create the tag-idx-mapping contains the
|
|
76
|
+
# entities and the concatenated entity and roles/groups. We do not
|
|
77
|
+
# distinguish between entities and roles/groups right now.
|
|
78
|
+
# we return a list to anticipate that
|
|
79
|
+
return [
|
|
80
|
+
EntityTagSpec(
|
|
81
|
+
tag_name=ENTITY_ATTRIBUTE_TYPE,
|
|
82
|
+
tags_to_ids=tag_id_index_mapping,
|
|
83
|
+
ids_to_tags={value: key for key, value in tag_id_index_mapping.items()},
|
|
84
|
+
num_tags=len(tag_id_index_mapping),
|
|
85
|
+
)
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
def prepare_for_training(self, domain: Domain, bilou_tagging: bool = False) -> None:
|
|
89
|
+
"""Gets necessary information for featurization from domain.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
domain: An instance of :class:`rasa.shared.core.domain.Domain`.
|
|
93
|
+
bilou_tagging: indicates whether BILOU tagging should be used or not
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
# store feature states for each attribute in order to create binary features
|
|
97
|
+
def convert_to_dict(feature_states: List[Text]) -> Dict[Text, int]:
|
|
98
|
+
return {
|
|
99
|
+
feature_state: idx for idx, feature_state in enumerate(feature_states)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
self._default_feature_states[INTENT] = convert_to_dict(domain.intents)
|
|
103
|
+
self._default_feature_states[ACTION_NAME] = convert_to_dict(
|
|
104
|
+
domain.action_names_or_texts
|
|
105
|
+
)
|
|
106
|
+
self._default_feature_states[ENTITIES] = convert_to_dict(domain.entity_states)
|
|
107
|
+
self._default_feature_states[SLOTS] = convert_to_dict(domain.slot_states)
|
|
108
|
+
self._default_feature_states[ACTIVE_LOOP] = convert_to_dict(domain.form_names)
|
|
109
|
+
self.action_texts = domain.action_texts
|
|
110
|
+
self.entity_tag_specs = self._create_entity_tag_specs(bilou_tagging)
|
|
111
|
+
|
|
112
|
+
def _state_features_for_attribute(
|
|
113
|
+
self, sub_state: SubState, attribute: Text
|
|
114
|
+
) -> Dict[Text, int]:
|
|
115
|
+
# FIXME: the code below is not type-safe, but fixing it
|
|
116
|
+
# would require more refactoring, for instance using
|
|
117
|
+
# data classes in our states
|
|
118
|
+
if attribute in {INTENT, ACTION_NAME}:
|
|
119
|
+
return {sub_state[attribute]: 1} # type: ignore[dict-item]
|
|
120
|
+
elif attribute == ENTITIES:
|
|
121
|
+
return {entity: 1 for entity in sub_state.get(ENTITIES, [])} # type: ignore[misc]
|
|
122
|
+
elif attribute == ACTIVE_LOOP:
|
|
123
|
+
return {sub_state["name"]: 1} # type: ignore[dict-item]
|
|
124
|
+
elif attribute == SLOTS:
|
|
125
|
+
return {
|
|
126
|
+
f"{slot_name}_{i}": value # type: ignore[misc]
|
|
127
|
+
for slot_name, slot_as_feature in sub_state.items()
|
|
128
|
+
for i, value in enumerate(slot_as_feature)
|
|
129
|
+
}
|
|
130
|
+
else:
|
|
131
|
+
raise ValueError(
|
|
132
|
+
f"Given attribute '{attribute}' is not supported. "
|
|
133
|
+
f"It must be one of '{self._default_feature_states.keys()}'."
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
def _create_features(
|
|
137
|
+
self, sub_state: SubState, attribute: Text, sparse: bool = False
|
|
138
|
+
) -> List[Features]:
|
|
139
|
+
state_features = self._state_features_for_attribute(sub_state, attribute)
|
|
140
|
+
|
|
141
|
+
features = np.zeros(len(self._default_feature_states[attribute]), np.float32)
|
|
142
|
+
for state_feature, value in state_features.items():
|
|
143
|
+
# check that the value is in default_feature_states to be able to assign
|
|
144
|
+
# its value
|
|
145
|
+
if state_feature in self._default_feature_states[attribute]:
|
|
146
|
+
features[self._default_feature_states[attribute][state_feature]] = value
|
|
147
|
+
features = np.expand_dims(features, 0)
|
|
148
|
+
|
|
149
|
+
if sparse:
|
|
150
|
+
features = scipy.sparse.coo_matrix(features)
|
|
151
|
+
|
|
152
|
+
return [
|
|
153
|
+
Features(
|
|
154
|
+
features, FEATURE_TYPE_SENTENCE, attribute, self.__class__.__name__
|
|
155
|
+
)
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
@staticmethod
|
|
159
|
+
def _to_sparse_sentence_features(
|
|
160
|
+
sparse_sequence_features: List[Features],
|
|
161
|
+
) -> List[Features]:
|
|
162
|
+
return [
|
|
163
|
+
Features(
|
|
164
|
+
scipy.sparse.coo_matrix(feature.features.sum(0)),
|
|
165
|
+
FEATURE_TYPE_SENTENCE,
|
|
166
|
+
feature.attribute,
|
|
167
|
+
feature.origin,
|
|
168
|
+
)
|
|
169
|
+
for feature in sparse_sequence_features
|
|
170
|
+
]
|
|
171
|
+
|
|
172
|
+
@staticmethod
|
|
173
|
+
def _get_name_attribute(attributes: Set[Text]) -> Optional[Text]:
|
|
174
|
+
# there is always either INTENT or ACTION_NAME
|
|
175
|
+
return next(
|
|
176
|
+
(
|
|
177
|
+
attribute
|
|
178
|
+
for attribute in attributes
|
|
179
|
+
if attribute in {INTENT, ACTION_NAME}
|
|
180
|
+
),
|
|
181
|
+
None,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
def _extract_state_features(
|
|
185
|
+
self,
|
|
186
|
+
sub_state: SubState,
|
|
187
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
188
|
+
sparse: bool = False,
|
|
189
|
+
) -> Dict[Text, List[Features]]:
|
|
190
|
+
# Remove entities from possible attributes
|
|
191
|
+
attributes = set(
|
|
192
|
+
attribute for attribute in sub_state.keys() if attribute != ENTITIES
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
if precomputations is not None:
|
|
196
|
+
# Collect features for all those attributes
|
|
197
|
+
attributes_to_features = precomputations.collect_features(
|
|
198
|
+
sub_state, attributes=attributes
|
|
199
|
+
)
|
|
200
|
+
# if features for INTENT or ACTION_NAME exist,
|
|
201
|
+
# they are always sparse sequence features;
|
|
202
|
+
# transform them to sentence sparse features
|
|
203
|
+
if attributes_to_features.get(INTENT):
|
|
204
|
+
attributes_to_features[INTENT] = self._to_sparse_sentence_features(
|
|
205
|
+
attributes_to_features[INTENT]
|
|
206
|
+
)
|
|
207
|
+
if attributes_to_features.get(ACTION_NAME):
|
|
208
|
+
attributes_to_features[ACTION_NAME] = self._to_sparse_sentence_features(
|
|
209
|
+
attributes_to_features[ACTION_NAME]
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
# Combine and sort the features:
|
|
213
|
+
# Per attribute, combine features of same type and level into one Feature,
|
|
214
|
+
# and (if there are any such features) store the results in a list where
|
|
215
|
+
# - all the sparse features are listed first and a
|
|
216
|
+
# - sequence feature is always listed before the sentence feature of the
|
|
217
|
+
# same type (sparse/not sparse).
|
|
218
|
+
output = {
|
|
219
|
+
attribute: Features.reduce(
|
|
220
|
+
features_list=features_list, expected_origins=None
|
|
221
|
+
)
|
|
222
|
+
for attribute, features_list in attributes_to_features.items()
|
|
223
|
+
if len(features_list) > 0 # otherwise, following will fail
|
|
224
|
+
}
|
|
225
|
+
else:
|
|
226
|
+
output = {}
|
|
227
|
+
|
|
228
|
+
# Check that the name attribute has features
|
|
229
|
+
name_attribute = self._get_name_attribute(attributes)
|
|
230
|
+
if name_attribute and name_attribute not in output:
|
|
231
|
+
# nlu pipeline didn't create features for user or action
|
|
232
|
+
# this might happen, for example, when we have action_name in the state
|
|
233
|
+
# but it did not get featurized because only character level
|
|
234
|
+
# CountVectorsFeaturizer was included in the config.
|
|
235
|
+
output[name_attribute] = self._create_features(
|
|
236
|
+
sub_state, name_attribute, sparse
|
|
237
|
+
)
|
|
238
|
+
return output
|
|
239
|
+
|
|
240
|
+
def encode_state(
|
|
241
|
+
self,
|
|
242
|
+
state: State,
|
|
243
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
244
|
+
) -> Dict[Text, List[Features]]:
|
|
245
|
+
"""Encode the given state.
|
|
246
|
+
|
|
247
|
+
Args:
|
|
248
|
+
state: The state to encode
|
|
249
|
+
precomputations: Contains precomputed features and attributes.
|
|
250
|
+
|
|
251
|
+
Returns:
|
|
252
|
+
A dictionary of state_type to list of features.
|
|
253
|
+
"""
|
|
254
|
+
state_features = {}
|
|
255
|
+
for state_type, sub_state in state.items():
|
|
256
|
+
if state_type == PREVIOUS_ACTION:
|
|
257
|
+
state_features.update(
|
|
258
|
+
self._extract_state_features(
|
|
259
|
+
sub_state, precomputations=precomputations, sparse=True
|
|
260
|
+
)
|
|
261
|
+
)
|
|
262
|
+
# featurize user only if it is "real" user input,
|
|
263
|
+
# i.e. input from a turn after action_listen
|
|
264
|
+
if state_type == USER and is_prev_action_listen_in_state(state):
|
|
265
|
+
state_features.update(
|
|
266
|
+
self._extract_state_features(
|
|
267
|
+
sub_state, precomputations=precomputations, sparse=True
|
|
268
|
+
)
|
|
269
|
+
)
|
|
270
|
+
if sub_state.get(ENTITIES):
|
|
271
|
+
state_features[ENTITIES] = self._create_features(
|
|
272
|
+
sub_state, ENTITIES, sparse=True
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
if state_type in {SLOTS, ACTIVE_LOOP}:
|
|
276
|
+
state_features[state_type] = self._create_features(
|
|
277
|
+
sub_state, state_type, sparse=True
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
return state_features
|
|
281
|
+
|
|
282
|
+
def encode_entities(
|
|
283
|
+
self,
|
|
284
|
+
entity_data: Dict[Text, Any],
|
|
285
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
286
|
+
bilou_tagging: bool = False,
|
|
287
|
+
) -> Dict[Text, List[Features]]:
|
|
288
|
+
"""Encode the given entity data.
|
|
289
|
+
|
|
290
|
+
Produce numeric entity tags for tokens.
|
|
291
|
+
|
|
292
|
+
Args:
|
|
293
|
+
entity_data: The dict containing the text and entity labels and locations
|
|
294
|
+
precomputations: Contains precomputed features and attributes.
|
|
295
|
+
bilou_tagging: indicates whether BILOU tagging should be used or not
|
|
296
|
+
|
|
297
|
+
Returns:
|
|
298
|
+
A dictionary of entity type to list of features.
|
|
299
|
+
"""
|
|
300
|
+
# TODO
|
|
301
|
+
# The entity states used to create the tag-idx-mapping contains the
|
|
302
|
+
# entities and the concatenated entity and roles/groups. We do not
|
|
303
|
+
# distinguish between entities and roles/groups right now.
|
|
304
|
+
if (
|
|
305
|
+
not entity_data
|
|
306
|
+
or not self.entity_tag_specs
|
|
307
|
+
or self.entity_tag_specs[0].num_tags < 2
|
|
308
|
+
):
|
|
309
|
+
# we cannot build a classifier with fewer than 2 classes
|
|
310
|
+
return {}
|
|
311
|
+
if precomputations is None:
|
|
312
|
+
message = None
|
|
313
|
+
else:
|
|
314
|
+
message = precomputations.lookup_message(user_text=entity_data[TEXT])
|
|
315
|
+
message.data[ENTITIES] = entity_data[ENTITIES]
|
|
316
|
+
|
|
317
|
+
if not message:
|
|
318
|
+
return {}
|
|
319
|
+
|
|
320
|
+
if bilou_tagging:
|
|
321
|
+
bilou_utils.apply_bilou_schema_to_message(message)
|
|
322
|
+
|
|
323
|
+
return {
|
|
324
|
+
ENTITY_TAGS: [
|
|
325
|
+
model_data_utils.get_tag_ids(
|
|
326
|
+
message, self.entity_tag_specs[0], bilou_tagging
|
|
327
|
+
)
|
|
328
|
+
]
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
def _encode_action(
|
|
332
|
+
self,
|
|
333
|
+
action: Text,
|
|
334
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
335
|
+
) -> Dict[Text, List[Features]]:
|
|
336
|
+
if action in self.action_texts:
|
|
337
|
+
action_as_sub_state = {ACTION_TEXT: action}
|
|
338
|
+
else:
|
|
339
|
+
action_as_sub_state = {ACTION_NAME: action}
|
|
340
|
+
|
|
341
|
+
return self._extract_state_features(
|
|
342
|
+
action_as_sub_state, precomputations=precomputations
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
def encode_all_labels(
|
|
346
|
+
self,
|
|
347
|
+
domain: Domain,
|
|
348
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
349
|
+
) -> List[Dict[Text, List[Features]]]:
|
|
350
|
+
"""Encode all action from the domain.
|
|
351
|
+
|
|
352
|
+
Args:
|
|
353
|
+
domain: The domain that contains the actions.
|
|
354
|
+
precomputations: Contains precomputed features and attributes.
|
|
355
|
+
|
|
356
|
+
Returns:
|
|
357
|
+
A list of encoded actions.
|
|
358
|
+
"""
|
|
359
|
+
return [
|
|
360
|
+
self._encode_action(action, precomputations)
|
|
361
|
+
for action in domain.action_names_or_texts
|
|
362
|
+
]
|
|
363
|
+
|
|
364
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
365
|
+
return {
|
|
366
|
+
"action_texts": self.action_texts,
|
|
367
|
+
"entity_tag_specs": self.entity_tag_specs,
|
|
368
|
+
"feature_states": self._default_feature_states,
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
@classmethod
|
|
372
|
+
def create_from_dict(
|
|
373
|
+
cls, data: Dict[str, Any]
|
|
374
|
+
) -> Optional["SingleStateFeaturizer"]:
|
|
375
|
+
if not data:
|
|
376
|
+
return None
|
|
377
|
+
|
|
378
|
+
featurizer = SingleStateFeaturizer()
|
|
379
|
+
featurizer.action_texts = data["action_texts"]
|
|
380
|
+
featurizer._default_feature_states = data["feature_states"]
|
|
381
|
+
featurizer.entity_tag_specs = data["entity_tag_specs"]
|
|
382
|
+
return featurizer
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
class IntentTokenizerSingleStateFeaturizer(SingleStateFeaturizer):
|
|
386
|
+
"""A SingleStateFeaturizer for use with policies that predict intent labels."""
|
|
387
|
+
|
|
388
|
+
def _encode_intent(
|
|
389
|
+
self,
|
|
390
|
+
intent: Text,
|
|
391
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
392
|
+
) -> Dict[Text, List[Features]]:
|
|
393
|
+
"""Extracts a numeric representation of an intent.
|
|
394
|
+
|
|
395
|
+
Args:
|
|
396
|
+
intent: Intent to be encoded.
|
|
397
|
+
precomputations: Contains precomputed features and attributes.
|
|
398
|
+
|
|
399
|
+
Returns:
|
|
400
|
+
Encoded representation of intent.
|
|
401
|
+
"""
|
|
402
|
+
intent_as_sub_state = {INTENT: intent}
|
|
403
|
+
return self._extract_state_features(intent_as_sub_state, precomputations)
|
|
404
|
+
|
|
405
|
+
def encode_all_labels(
|
|
406
|
+
self,
|
|
407
|
+
domain: Domain,
|
|
408
|
+
precomputations: Optional[MessageContainerForCoreFeaturization],
|
|
409
|
+
) -> List[Dict[Text, List[Features]]]:
|
|
410
|
+
"""Encodes all relevant labels from the domain using the given precomputations.
|
|
411
|
+
|
|
412
|
+
Args:
|
|
413
|
+
domain: The domain that contains the labels.
|
|
414
|
+
precomputations: Contains precomputed features and attributes.
|
|
415
|
+
|
|
416
|
+
Returns:
|
|
417
|
+
A list of encoded labels.
|
|
418
|
+
"""
|
|
419
|
+
return [
|
|
420
|
+
self._encode_intent(intent, precomputations) for intent in domain.intents
|
|
421
|
+
]
|