rasa-pro 3.8.18__py3-none-any.whl → 3.9.15__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 +6 -42
- rasa/__main__.py +14 -9
- rasa/anonymization/anonymization_pipeline.py +0 -1
- rasa/anonymization/anonymization_rule_executor.py +3 -3
- rasa/anonymization/utils.py +4 -3
- rasa/api.py +2 -2
- rasa/cli/arguments/default_arguments.py +1 -1
- rasa/cli/arguments/run.py +2 -2
- rasa/cli/arguments/test.py +1 -1
- rasa/cli/arguments/train.py +10 -10
- rasa/cli/e2e_test.py +27 -7
- rasa/cli/export.py +0 -1
- rasa/cli/license.py +3 -3
- rasa/cli/project_templates/calm/actions/action_template.py +1 -1
- rasa/cli/project_templates/calm/config.yml +1 -1
- rasa/cli/project_templates/calm/credentials.yml +1 -1
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +1 -1
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +1 -1
- rasa/cli/project_templates/calm/domain/add_contact.yml +8 -2
- rasa/cli/project_templates/calm/domain/list_contacts.yml +3 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +9 -2
- rasa/cli/project_templates/calm/domain/shared.yml +5 -0
- rasa/cli/project_templates/calm/endpoints.yml +4 -4
- rasa/cli/project_templates/default/actions/actions.py +1 -1
- rasa/cli/project_templates/default/config.yml +5 -5
- rasa/cli/project_templates/default/credentials.yml +1 -1
- rasa/cli/project_templates/default/endpoints.yml +4 -4
- rasa/cli/project_templates/default/tests/test_stories.yml +1 -1
- rasa/cli/project_templates/tutorial/config.yml +1 -1
- rasa/cli/project_templates/tutorial/credentials.yml +1 -1
- rasa/cli/project_templates/tutorial/data/patterns.yml +6 -0
- rasa/cli/project_templates/tutorial/domain.yml +4 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +6 -6
- rasa/cli/run.py +0 -1
- rasa/cli/scaffold.py +3 -2
- rasa/cli/studio/download.py +11 -0
- rasa/cli/studio/studio.py +180 -24
- rasa/cli/studio/upload.py +0 -8
- rasa/cli/telemetry.py +18 -6
- rasa/cli/utils.py +21 -10
- rasa/cli/x.py +3 -2
- rasa/constants.py +1 -1
- rasa/core/actions/action.py +90 -315
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/constants.py +3 -0
- rasa/core/actions/custom_action_executor.py +188 -0
- rasa/core/actions/forms.py +11 -7
- 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 +3 -0
- rasa/core/actions/two_stage_fallback.py +1 -1
- rasa/core/agent.py +2 -4
- rasa/core/brokers/pika.py +1 -2
- rasa/core/channels/audiocodes.py +1 -1
- rasa/core/channels/botframework.py +0 -1
- rasa/core/channels/callback.py +0 -1
- rasa/core/channels/console.py +6 -8
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/facebook.py +0 -3
- rasa/core/channels/hangouts.py +0 -6
- rasa/core/channels/inspector/dist/assets/{arc-5623b6dc.js → arc-b6e548fe.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-685c106a.js → c4Diagram-d0fbc5ce-fa03ac9e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-8cbed007.js → classDiagram-936ed81e-ee67392a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-5889cf12.js → classDiagram-v2-c3cb15f1-9b283fae.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-24c249d7.js → createText-62fc7601-8b6fcc2a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-7dd06a75.js → edges-f2ad444c-22e77f4f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-62c1e54c.js → erDiagram-9d236eb7-60ffc87f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-ce49b86f.js → flowDb-1972c806-9dd802e4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-4067e48f.js → flowDiagram-7ea5b25a-5fa1912f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-59fe4051.js → flowchart-elk-definition-abe16c3d-622a1fd2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-47e3a43b.js → ganttDiagram-9b5ea136-e285a63a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-5a2ac0d9.js → gitGraphDiagram-99d0ae7c-f237bdca.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-dfb8efc4.js → index-2c4b9a3b-4b03d70e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-268a75c0.js → index-a5d3e69d.js} +4 -4
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-b0c470f2.js → infoDiagram-736b4530-72a0fa5f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-2edb829a.js → journeyDiagram-df861f2b-82218c41.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-b6873d69.js → layout-78cff630.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-1efc5781.js → line-5038b469.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-661e9b94.js → linear-c4fc4098.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-2d2e727f.js → mindmap-definition-beec6740-c33c8ea6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-9d3ea93d.js → pieDiagram-dbbf0591-a8d03059.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-06a178a2.js → quadrantDiagram-4d7f4fd6-6a0e56b2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-0bfedffc.js → requirementDiagram-6fc4c22a-2dc7c7bd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-d76d0a04.js → sankeyDiagram-8f13d901-2360fe39.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-37bb4341.js → sequenceDiagram-b655622a-41b9f9ad.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-f52f7f57.js → stateDiagram-59f0c015-0aad326f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-4a986a20.js → stateDiagram-v2-2b26beab-9847d984.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-080da4f6-7dd9ae12.js → styles-080da4f6-564d890e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-46e1ca14.js → styles-3dcbcfbf-38957613.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-4a97439a.js → styles-9c745c82-f0fc6921.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-823917a3.js → svgDrawCommon-4835440b-ef3c5a77.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-9ea72896.js → timeline-definition-5b62e21b-bf3e91c1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-b631a8b6.js → xychartDiagram-2b33534f-4d4026c0.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +10 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -7
- rasa/core/channels/inspector/src/helpers/formatters.ts +3 -2
- rasa/core/channels/rest.py +36 -21
- rasa/core/channels/rocketchat.py +0 -1
- rasa/core/channels/socketio.py +1 -1
- rasa/core/channels/telegram.py +3 -3
- rasa/core/channels/webexteams.py +0 -1
- rasa/core/concurrent_lock_store.py +1 -1
- rasa/core/evaluation/marker_base.py +1 -3
- rasa/core/evaluation/marker_stats.py +1 -2
- rasa/core/featurizers/single_state_featurizer.py +3 -26
- rasa/core/featurizers/tracker_featurizers.py +18 -122
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +9 -4
- rasa/core/information_retrieval/information_retrieval.py +64 -7
- rasa/core/information_retrieval/milvus.py +7 -14
- rasa/core/information_retrieval/qdrant.py +8 -15
- rasa/core/lock_store.py +0 -1
- rasa/core/migrate.py +1 -2
- rasa/core/nlg/callback.py +3 -4
- rasa/core/policies/enterprise_search_policy.py +86 -22
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +4 -41
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flows/flow_executor.py +104 -2
- rasa/core/policies/intentless_policy.py +7 -9
- rasa/core/policies/memoization.py +3 -3
- rasa/core/policies/policy.py +18 -9
- rasa/core/policies/rule_policy.py +8 -11
- rasa/core/policies/ted_policy.py +61 -88
- rasa/core/policies/unexpected_intent_policy.py +8 -17
- rasa/core/processor.py +136 -47
- rasa/core/run.py +41 -25
- rasa/core/secrets_manager/endpoints.py +2 -2
- rasa/core/secrets_manager/vault.py +6 -8
- rasa/core/test.py +3 -5
- rasa/core/tracker_store.py +49 -14
- rasa/core/train.py +1 -3
- rasa/core/training/interactive.py +9 -6
- rasa/core/utils.py +5 -10
- rasa/dialogue_understanding/coexistence/intent_based_router.py +11 -4
- rasa/dialogue_understanding/coexistence/llm_based_router.py +2 -3
- rasa/dialogue_understanding/commands/__init__.py +4 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +9 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +9 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +38 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/clarify_command.py +9 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +9 -0
- rasa/dialogue_understanding/commands/error_command.py +12 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +9 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +9 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/noop_command.py +9 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +38 -3
- rasa/dialogue_understanding/commands/skip_question_command.py +9 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +9 -0
- rasa/dialogue_understanding/generator/__init__.py +16 -1
- rasa/dialogue_understanding/generator/command_generator.py +92 -6
- rasa/dialogue_understanding/generator/constants.py +18 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -5
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +39 -609
- 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 +69 -8
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +36 -31
- rasa/dialogue_understanding/processor/command_processor.py +112 -3
- rasa/e2e_test/constants.py +1 -0
- rasa/e2e_test/e2e_test_case.py +44 -0
- rasa/e2e_test/e2e_test_runner.py +114 -11
- rasa/e2e_test/e2e_test_schema.yml +18 -0
- rasa/engine/caching.py +0 -1
- rasa/engine/graph.py +18 -6
- rasa/engine/recipes/config_files/default_config.yml +3 -3
- rasa/engine/recipes/default_components.py +1 -1
- rasa/engine/recipes/default_recipe.py +4 -5
- rasa/engine/recipes/recipe.py +1 -1
- rasa/engine/runner/dask.py +3 -9
- rasa/engine/storage/local_model_storage.py +0 -2
- rasa/engine/validation.py +179 -145
- rasa/exceptions.py +2 -2
- rasa/graph_components/validators/default_recipe_validator.py +3 -5
- rasa/hooks.py +0 -1
- rasa/model.py +1 -1
- rasa/model_training.py +1 -0
- rasa/nlu/classifiers/diet_classifier.py +33 -52
- rasa/nlu/classifiers/logistic_regression_classifier.py +9 -22
- rasa/nlu/classifiers/sklearn_intent_classifier.py +16 -37
- rasa/nlu/extractors/crf_entity_extractor.py +54 -97
- rasa/nlu/extractors/duckling_entity_extractor.py +1 -1
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +1 -5
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +0 -4
- rasa/nlu/featurizers/featurizer.py +1 -1
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +18 -49
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +26 -64
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +3 -5
- rasa/nlu/persistor.py +68 -26
- rasa/nlu/selectors/response_selector.py +7 -10
- rasa/nlu/test.py +0 -3
- rasa/nlu/utils/hugging_face/registry.py +1 -1
- rasa/nlu/utils/spacy_utils.py +1 -3
- rasa/server.py +22 -7
- rasa/shared/constants.py +12 -1
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +4 -5
- rasa/shared/core/domain.py +57 -56
- rasa/shared/core/events.py +4 -7
- rasa/shared/core/flows/flow.py +9 -0
- rasa/shared/core/flows/flows_list.py +12 -0
- rasa/shared/core/flows/steps/action.py +7 -2
- rasa/shared/core/generator.py +12 -11
- rasa/shared/core/slot_mappings.py +315 -24
- rasa/shared/core/slots.py +4 -2
- rasa/shared/core/trackers.py +32 -14
- rasa/shared/core/training_data/loading.py +0 -1
- rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +11 -11
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +5 -3
- rasa/shared/core/training_data/structures.py +1 -1
- rasa/shared/core/training_data/visualization.py +1 -1
- rasa/shared/data.py +58 -1
- rasa/shared/exceptions.py +36 -2
- rasa/shared/importers/importer.py +1 -2
- rasa/shared/importers/rasa.py +0 -1
- rasa/shared/nlu/constants.py +2 -0
- rasa/shared/nlu/training_data/entities_parser.py +1 -2
- rasa/shared/nlu/training_data/features.py +2 -120
- rasa/shared/nlu/training_data/formats/dialogflow.py +3 -2
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +3 -5
- rasa/shared/nlu/training_data/formats/readerwriter.py +0 -1
- rasa/shared/nlu/training_data/message.py +13 -0
- rasa/shared/nlu/training_data/training_data.py +0 -2
- rasa/shared/providers/openai/session_handler.py +2 -2
- rasa/shared/utils/constants.py +3 -0
- rasa/shared/utils/io.py +11 -1
- rasa/shared/utils/llm.py +1 -2
- rasa/shared/utils/pykwalify_extensions.py +1 -0
- rasa/shared/utils/schemas/domain.yml +3 -0
- rasa/shared/utils/yaml.py +44 -35
- rasa/studio/auth.py +26 -10
- rasa/studio/constants.py +2 -0
- rasa/studio/data_handler.py +114 -107
- rasa/studio/download.py +160 -27
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +6 -7
- rasa/studio/upload.py +159 -134
- rasa/telemetry.py +188 -34
- rasa/tracing/config.py +18 -3
- rasa/tracing/constants.py +26 -2
- rasa/tracing/instrumentation/attribute_extractors.py +50 -41
- rasa/tracing/instrumentation/instrumentation.py +290 -44
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +7 -5
- rasa/tracing/instrumentation/metrics.py +109 -21
- rasa/tracing/metric_instrument_provider.py +83 -3
- rasa/utils/cli.py +2 -1
- rasa/utils/common.py +1 -1
- rasa/utils/endpoints.py +1 -2
- rasa/utils/io.py +72 -6
- rasa/utils/licensing.py +246 -31
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/tensorflow/data_generator.py +1 -1
- rasa/utils/tensorflow/environment.py +1 -1
- rasa/utils/tensorflow/model_data.py +201 -12
- rasa/utils/tensorflow/model_data_utils.py +499 -500
- rasa/utils/tensorflow/models.py +5 -6
- rasa/utils/tensorflow/rasa_layers.py +15 -15
- rasa/utils/train_utils.py +1 -1
- rasa/utils/url_tools.py +53 -0
- rasa/validator.py +305 -3
- rasa/version.py +1 -1
- {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/METADATA +25 -61
- {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/RECORD +276 -259
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-85583a23.js +0 -1
- rasa/utils/tensorflow/feature_array.py +0 -370
- /rasa/dialogue_understanding/generator/{command_prompt_template.jinja2 → single_step/command_prompt_template.jinja2} +0 -0
- {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/NOTICE +0 -0
- {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/WHEEL +0 -0
- {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/entry_points.txt +0 -0
README.md
CHANGED
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
<hr />
|
|
12
12
|
|
|
13
|
-
<img align="right" height="255" src="https://www.rasa.com/assets/img/sara/sara-open-source-2.0.png" alt="An image of Sara, the Rasa mascot bird, holding a flag that reads Open Source with one wing, and a wrench in the other" title="Rasa
|
|
13
|
+
<img align="right" height="255" src="https://www.rasa.com/assets/img/sara/sara-open-source-2.0.png" alt="An image of Sara, the Rasa mascot bird, holding a flag that reads Open Source with one wing, and a wrench in the other" title="Rasa Pro">
|
|
14
14
|
|
|
15
15
|
Rasa Pro is an open core product that extends Rasa Open Source. With over 50 million downloads, Rasa Open Source is the most popular open source framework for building chat and voice-based AI assistants.
|
|
16
16
|
|
|
17
|
-
Rasa Pro
|
|
17
|
+
Rasa Pro introduces CALM, a generative AI-native approach to developing assistants, combined with enterprise-ready analytics, security, and observability capabilities. A paid license is required to run Rasa Pro, but all Rasa Pro code is visible to end users and can be customized as needed.
|
|
18
18
|
|
|
19
19
|
Rasa Pro is the pro-code component of our enterprise solution, Rasa Platform, for implementing resilient and trustworthy AI assistants at scale. Rasa Studio complements Rasa Pro with a low-code user interface, enabling anyone on your team to create and improve your assistant.
|
|
20
20
|
|
|
@@ -212,8 +212,8 @@ The Docker image is available on your local machine as `rasa-private-dev`.
|
|
|
212
212
|
|
|
213
213
|
### Code Style
|
|
214
214
|
|
|
215
|
-
To ensure a standardized code style we use the
|
|
216
|
-
To ensure our type annotations are correct we use the type checker [
|
|
215
|
+
To ensure a standardized code style we use the [ruff](https://docs.astral.sh/ruff/formatter/) formatter.
|
|
216
|
+
To ensure our type annotations are correct we use the type checker [mypy](https://mypy.readthedocs.io/en/stable/).
|
|
217
217
|
If your code is not formatted properly or doesn't type check, GitHub will fail to build.
|
|
218
218
|
|
|
219
219
|
#### Formatting
|
|
@@ -222,7 +222,7 @@ If you want to automatically format your code on every commit, you can use [pre-
|
|
|
222
222
|
Just install it via `pip install pre-commit` and execute `pre-commit install` in the root folder.
|
|
223
223
|
This will add a hook to the repository, which reformats files on every commit.
|
|
224
224
|
|
|
225
|
-
If you want to set it up manually, install
|
|
225
|
+
If you want to set it up manually, install `ruff` via `poetry install`.
|
|
226
226
|
To reformat files execute
|
|
227
227
|
```
|
|
228
228
|
make formatter
|
|
@@ -236,39 +236,6 @@ To check the types execute
|
|
|
236
236
|
make types
|
|
237
237
|
```
|
|
238
238
|
|
|
239
|
-
### Backporting
|
|
240
|
-
|
|
241
|
-
In order to port changes to `main` and across release branches, we use the `backport` workflow located at
|
|
242
|
-
the `.github/workflows/backport.yml` path.
|
|
243
|
-
This workflow is triggered by the `backport-to-<release-branch>` label applied to a PR, for example `backport-to-3.8.x`.
|
|
244
|
-
Current available target branches are `main` and maintained release branches.
|
|
245
|
-
|
|
246
|
-
When a PR gets labelled `backport-to-<release-branch>`, a PR is opened by the `backport-github-action` as soon as the
|
|
247
|
-
source PR gets closed (by merging). If you want to close the PR without merging changes, make sure to remove the `backport-to-<release-branch>` label.
|
|
248
|
-
|
|
249
|
-
The PR author which the action assigns to the backporting PR has to resolve any conflicts before approving and merging.
|
|
250
|
-
Release PRs should also be labelled with `backport-to-main` to backport the `CHANGELOG.md` updates to `main`.
|
|
251
|
-
Backporting version updates should be accepted to the `main` branch from the latest release branch only.
|
|
252
|
-
|
|
253
|
-
Here are some guidelines to follow when backporting changes and resolving conflicts:
|
|
254
|
-
|
|
255
|
-
a) for conflicts in `version.py`: accept only the version from the latest release branch. Do not merge version changes
|
|
256
|
-
from earlier release branches into `main` because this could cause issues when trying to make the next minor release.
|
|
257
|
-
|
|
258
|
-
b) for conflicts in `pyproject.toml`: if related to the `rasa-pro` version, accept only the latest release branch;
|
|
259
|
-
if related to other dependencies, accept `main` or whichever is the higher upgrade (main usually has the updated
|
|
260
|
-
dependencies because we only do housekeeping on `main`, apart from vulnerability updates). Be mindful of dependencies that
|
|
261
|
-
are removed from `main` but still exist in former release branches (for example `langchain`).
|
|
262
|
-
|
|
263
|
-
c) for conflicts in `poetry.lock`: accept changes which were already present on the target branch, then run
|
|
264
|
-
`poetry lock --no-update` so that the lock file contains your changes from `pyproject.toml` too.
|
|
265
|
-
|
|
266
|
-
d) for conflicts in `CHANGELOG.md`: Manually place the changelog in their allocated section (e.g. 3.8.10 will go under the
|
|
267
|
-
3.8 section with the other releases, rather than go at the top of the file)
|
|
268
|
-
|
|
269
|
-
If the backporting workflow fails, you are encouraged to cherry-pick the commits manually and create a PR to
|
|
270
|
-
the target branch. Alternatively, you can install the backporting CLI tool as described [here](https://github.com/sorenlouv/backport?tab=readme-ov-file#install).
|
|
271
|
-
|
|
272
239
|
## Releases
|
|
273
240
|
Rasa has implemented robust policies governing version naming, as well as release pace for major, minor, and patch releases.
|
|
274
241
|
|
|
@@ -351,12 +318,9 @@ Releasing a new version is quite simple, as the packages are build and distribut
|
|
|
351
318
|
9. If however an error occurs in the build, then we should see a failure message automatically posted in the company's Slack (`dev-tribe` channel) like this [one](https://rasa-hq.slack.com/archives/C01M5TAHDHA/p1701444735622919)
|
|
352
319
|
(In this case do the following checks):
|
|
353
320
|
- Check the workflows in [Github Actions](https://github.com/RasaHQ/rasa-private/actions) and make sure that the merged PR of the current release is completed successfully. To easily find your PR you can use the filters `event: push` and `branch: <version number>` (example on release 2.4 you can see [here](https://github.com/RasaHQ/rasa/actions/runs/643344876))
|
|
354
|
-
- If the workflow is not completed, then try to re
|
|
321
|
+
- If the workflow is not completed, then try to re run the workflow in case that solves the problem
|
|
355
322
|
- If the problem persists, check also the log files and try to find the root cause of the issue
|
|
356
323
|
- If you still cannot resolve the error, contact the infrastructure team by providing any helpful information from your investigation
|
|
357
|
-
10. If the release is successful, add the newly created release branch to the backporting configuration in the `.backportrc.json` file to
|
|
358
|
-
the `targetBranchesChoices` list. This is necessary for the backporting workflow to work correctly with new release branches.
|
|
359
|
-
|
|
360
324
|
|
|
361
325
|
### Cutting a Patch release
|
|
362
326
|
|
rasa/__main__.py
CHANGED
|
@@ -30,6 +30,7 @@ from rasa.cli.arguments.default_arguments import add_logging_options
|
|
|
30
30
|
from rasa.cli.utils import (
|
|
31
31
|
parse_last_positional_argument_as_model_path,
|
|
32
32
|
warn_if_rasa_plus_package_installed,
|
|
33
|
+
check_if_studio_command,
|
|
33
34
|
)
|
|
34
35
|
from rasa.plugin import plugin_manager
|
|
35
36
|
from rasa.shared.exceptions import RasaException
|
|
@@ -115,18 +116,22 @@ def main() -> None:
|
|
|
115
116
|
if hasattr(cmdline_arguments, "func"):
|
|
116
117
|
rasa.utils.io.configure_colored_logging(log_level)
|
|
117
118
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
is_studio_command = check_if_studio_command()
|
|
120
|
+
|
|
121
|
+
if not is_studio_command:
|
|
122
|
+
result = plugin_manager().hook.configure_commandline(
|
|
123
|
+
cmdline_arguments=cmdline_arguments
|
|
124
|
+
)
|
|
125
|
+
endpoints_file = result[0] if result else None
|
|
122
126
|
|
|
123
127
|
rasa.telemetry.initialize_telemetry()
|
|
124
128
|
rasa.telemetry.initialize_error_reporting()
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
if not is_studio_command:
|
|
130
|
+
plugin_manager().hook.init_telemetry(endpoints_file=endpoints_file)
|
|
131
|
+
plugin_manager().hook.init_managers(endpoints_file=endpoints_file)
|
|
132
|
+
plugin_manager().hook.init_anonymization_pipeline(
|
|
133
|
+
endpoints_file=endpoints_file
|
|
134
|
+
)
|
|
130
135
|
# configure structlog
|
|
131
136
|
configure_structlog(log_level)
|
|
132
137
|
|
|
@@ -87,19 +87,19 @@ class AnonymizationAnalyzer(metaclass=Singleton):
|
|
|
87
87
|
if anonymization_rule_list.model_provider == "transformers":
|
|
88
88
|
nlp_engine = TransformersNlpEngine(
|
|
89
89
|
models={
|
|
90
|
-
anonymization_rule_list.language: anonymization_rule_list.models
|
|
90
|
+
anonymization_rule_list.language: anonymization_rule_list.models
|
|
91
91
|
},
|
|
92
92
|
)
|
|
93
93
|
elif anonymization_rule_list.model_provider == "stanza":
|
|
94
94
|
nlp_engine = StanzaNlpEngine(
|
|
95
95
|
models={
|
|
96
|
-
anonymization_rule_list.language: anonymization_rule_list.models
|
|
96
|
+
anonymization_rule_list.language: anonymization_rule_list.models
|
|
97
97
|
},
|
|
98
98
|
)
|
|
99
99
|
else:
|
|
100
100
|
nlp_engine = SpacyNlpEngine(
|
|
101
101
|
models={
|
|
102
|
-
anonymization_rule_list.language: anonymization_rule_list.models
|
|
102
|
+
anonymization_rule_list.language: anonymization_rule_list.models
|
|
103
103
|
},
|
|
104
104
|
)
|
|
105
105
|
|
rasa/anonymization/utils.py
CHANGED
|
@@ -30,8 +30,9 @@ def read_endpoint_config(
|
|
|
30
30
|
return content
|
|
31
31
|
except FileNotFoundError:
|
|
32
32
|
logger.error(
|
|
33
|
-
"Failed to read configuration "
|
|
34
|
-
|
|
33
|
+
"Failed to read configuration from {}. No such file.".format(
|
|
34
|
+
os.path.abspath(filename)
|
|
35
|
+
),
|
|
35
36
|
)
|
|
36
37
|
return None
|
|
37
38
|
|
|
@@ -96,7 +97,7 @@ def validate_anonymization_yaml(yaml_content: Dict[Text, Any]) -> None:
|
|
|
96
97
|
|
|
97
98
|
If the yaml_content is not in the right format, an exception will be raised.
|
|
98
99
|
"""
|
|
99
|
-
schema = read_yaml_file(SCHEMA_FILE, reader_type=
|
|
100
|
+
schema = read_yaml_file(SCHEMA_FILE, reader_type=("safe", "rt"))
|
|
100
101
|
try:
|
|
101
102
|
validate_yaml_content_using_schema(yaml_content, schema)
|
|
102
103
|
except YamlException as exception:
|
rasa/api.py
CHANGED
|
@@ -142,5 +142,5 @@ def test(
|
|
|
142
142
|
if additional_arguments is None:
|
|
143
143
|
additional_arguments = {}
|
|
144
144
|
|
|
145
|
-
test_core(model, stories, output, additional_arguments) # type: ignore[unused-coroutine]
|
|
146
|
-
test_nlu(model, nlu_data, output, additional_arguments) # type: ignore[unused-coroutine]
|
|
145
|
+
test_core(model, stories, output, additional_arguments) # type: ignore[unused-coroutine]
|
|
146
|
+
test_nlu(model, nlu_data, output, additional_arguments) # type: ignore[unused-coroutine]
|
rasa/cli/arguments/run.py
CHANGED
|
@@ -28,7 +28,7 @@ def set_run_action_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def add_interface_argument(
|
|
31
|
-
parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup]
|
|
31
|
+
parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup],
|
|
32
32
|
) -> None:
|
|
33
33
|
"""Binds the RASA process to a network interface."""
|
|
34
34
|
parser.add_argument(
|
|
@@ -42,7 +42,7 @@ def add_interface_argument(
|
|
|
42
42
|
|
|
43
43
|
# noinspection PyProtectedMember
|
|
44
44
|
def add_port_argument(
|
|
45
|
-
parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup]
|
|
45
|
+
parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup],
|
|
46
46
|
) -> None:
|
|
47
47
|
"""Add an argument for port."""
|
|
48
48
|
parser.add_argument(
|
rasa/cli/arguments/test.py
CHANGED
|
@@ -96,7 +96,7 @@ def add_test_core_argument_group(
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def add_test_nlu_argument_group(
|
|
99
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
99
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
100
100
|
) -> None:
|
|
101
101
|
add_nlu_data_param(parser, help_text="File or folder containing your NLU data.")
|
|
102
102
|
|
rasa/cli/arguments/train.py
CHANGED
|
@@ -75,7 +75,7 @@ def set_train_nlu_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
def add_force_param(
|
|
78
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
78
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
79
79
|
) -> None:
|
|
80
80
|
"""Specifies if the model should be trained from scratch."""
|
|
81
81
|
parser.add_argument(
|
|
@@ -86,7 +86,7 @@ def add_force_param(
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
def add_data_param(
|
|
89
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
89
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
90
90
|
) -> None:
|
|
91
91
|
"""Specifies path to training data."""
|
|
92
92
|
parser.add_argument(
|
|
@@ -110,7 +110,7 @@ def _add_core_config_param(parser: argparse.ArgumentParser) -> None:
|
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
def _add_compare_params(
|
|
113
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
113
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
114
114
|
) -> None:
|
|
115
115
|
parser.add_argument(
|
|
116
116
|
"--percentages",
|
|
@@ -125,7 +125,7 @@ def _add_compare_params(
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
def add_dry_run_param(
|
|
128
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
128
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
129
129
|
) -> None:
|
|
130
130
|
"""Adds `--dry-run` argument to a specified `parser`.
|
|
131
131
|
|
|
@@ -149,7 +149,7 @@ def add_dry_run_param(
|
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
def add_validate_before_train(
|
|
152
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
152
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
153
153
|
) -> None:
|
|
154
154
|
"""Adds parameters for validating the domain and data files before training.
|
|
155
155
|
|
|
@@ -180,7 +180,7 @@ def add_validate_before_train(
|
|
|
180
180
|
|
|
181
181
|
|
|
182
182
|
def add_augmentation_param(
|
|
183
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
183
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
184
184
|
) -> None:
|
|
185
185
|
"""Sets the augmentation factor for the Core training.
|
|
186
186
|
|
|
@@ -196,7 +196,7 @@ def add_augmentation_param(
|
|
|
196
196
|
|
|
197
197
|
|
|
198
198
|
def add_debug_plots_param(
|
|
199
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
199
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
200
200
|
) -> None:
|
|
201
201
|
"""Specifies if conversation flow should be visualized."""
|
|
202
202
|
parser.add_argument(
|
|
@@ -210,7 +210,7 @@ def add_debug_plots_param(
|
|
|
210
210
|
|
|
211
211
|
|
|
212
212
|
def _add_num_threads_param(
|
|
213
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
213
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
214
214
|
) -> None:
|
|
215
215
|
parser.add_argument(
|
|
216
216
|
"--num-threads",
|
|
@@ -229,7 +229,7 @@ def _add_model_name_param(parser: argparse.ArgumentParser) -> None:
|
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
def add_persist_nlu_data_param(
|
|
232
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
232
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
233
233
|
) -> None:
|
|
234
234
|
"""Adds parameters for persisting the NLU training data with the model."""
|
|
235
235
|
parser.add_argument(
|
|
@@ -240,7 +240,7 @@ def add_persist_nlu_data_param(
|
|
|
240
240
|
|
|
241
241
|
|
|
242
242
|
def add_finetune_params(
|
|
243
|
-
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
|
|
243
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
244
244
|
) -> None:
|
|
245
245
|
"""Adds parameters for model finetuning."""
|
|
246
246
|
parser.add_argument(
|
rasa/cli/e2e_test.py
CHANGED
|
@@ -22,7 +22,14 @@ from rasa.exceptions import RasaException
|
|
|
22
22
|
from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, DEFAULT_MODELS_PATH
|
|
23
23
|
|
|
24
24
|
from rasa.e2e_test.constants import SCHEMA_FILE_PATH, KEY_TEST_CASE
|
|
25
|
-
from rasa.e2e_test.e2e_test_case import
|
|
25
|
+
from rasa.e2e_test.e2e_test_case import (
|
|
26
|
+
KEY_FIXTURES,
|
|
27
|
+
KEY_METADATA,
|
|
28
|
+
Fixture,
|
|
29
|
+
Metadata,
|
|
30
|
+
TestCase,
|
|
31
|
+
TestSuite,
|
|
32
|
+
)
|
|
26
33
|
from rasa.e2e_test.e2e_test_result import TestResult
|
|
27
34
|
from rasa.e2e_test.e2e_test_runner import E2ETestRunner
|
|
28
35
|
import rasa.utils.io
|
|
@@ -194,15 +201,14 @@ def validate_test_case(test_case_name: Text, input_test_cases: List[TestCase]) -
|
|
|
194
201
|
sys.exit(1)
|
|
195
202
|
|
|
196
203
|
|
|
197
|
-
def read_test_cases(path: Text) ->
|
|
204
|
+
def read_test_cases(path: Text) -> TestSuite:
|
|
198
205
|
"""Read test cases from the given path.
|
|
199
206
|
|
|
200
207
|
Args:
|
|
201
208
|
path: Path to the file or folder containing test cases.
|
|
202
209
|
|
|
203
210
|
Returns:
|
|
204
|
-
|
|
205
|
-
list of all global fixtures found in the file or folder.
|
|
211
|
+
TestSuite.
|
|
206
212
|
"""
|
|
207
213
|
path, test_case_name = extract_test_case_from_path(path)
|
|
208
214
|
validate_path_to_test_cases(path)
|
|
@@ -212,6 +218,7 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
|
|
|
212
218
|
|
|
213
219
|
input_test_cases = []
|
|
214
220
|
fixtures: Dict[Text, Fixture] = {}
|
|
221
|
+
metadata: Dict[Text, Metadata] = {}
|
|
215
222
|
|
|
216
223
|
for test_file in test_files:
|
|
217
224
|
test_file_content = parse_raw_yaml(Path(test_file).read_text())
|
|
@@ -233,6 +240,7 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
|
|
|
233
240
|
|
|
234
241
|
input_test_cases.extend(test_cases)
|
|
235
242
|
fixtures_content = test_file_content.get(KEY_FIXTURES) or []
|
|
243
|
+
metadata_contents = test_file_content.get(KEY_METADATA) or []
|
|
236
244
|
for fixture in fixtures_content:
|
|
237
245
|
fixture_obj = Fixture.from_dict(fixture_dict=fixture)
|
|
238
246
|
|
|
@@ -240,8 +248,15 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
|
|
|
240
248
|
if fixtures.get(fixture_obj.name) is None:
|
|
241
249
|
fixtures[fixture_obj.name] = fixture_obj
|
|
242
250
|
|
|
251
|
+
for metadata_content in metadata_contents:
|
|
252
|
+
metadata_obj = Metadata.from_dict(metadata_dict=metadata_content)
|
|
253
|
+
|
|
254
|
+
# avoid adding duplicates from across multiple files
|
|
255
|
+
if metadata.get(metadata_obj.name) is None:
|
|
256
|
+
metadata[metadata_obj.name] = metadata_obj
|
|
257
|
+
|
|
243
258
|
validate_test_case(test_case_name, input_test_cases)
|
|
244
|
-
return input_test_cases, list(fixtures.values())
|
|
259
|
+
return TestSuite(input_test_cases, list(fixtures.values()), list(metadata.values()))
|
|
245
260
|
|
|
246
261
|
|
|
247
262
|
def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
@@ -269,7 +284,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
269
284
|
args, "path-to-test-cases", DEFAULT_E2E_INPUT_TESTS_PATH
|
|
270
285
|
)
|
|
271
286
|
|
|
272
|
-
|
|
287
|
+
test_suite = read_test_cases(path_to_test_cases)
|
|
273
288
|
|
|
274
289
|
try:
|
|
275
290
|
test_runner = E2ETestRunner(
|
|
@@ -283,7 +298,12 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
283
298
|
sys.exit(1)
|
|
284
299
|
|
|
285
300
|
results = asyncio.run(
|
|
286
|
-
test_runner.run_tests(
|
|
301
|
+
test_runner.run_tests(
|
|
302
|
+
test_suite.test_cases,
|
|
303
|
+
test_suite.fixtures,
|
|
304
|
+
args.fail_fast,
|
|
305
|
+
input_metadata=test_suite.metadata,
|
|
306
|
+
)
|
|
287
307
|
)
|
|
288
308
|
|
|
289
309
|
if args.e2e_results is not None:
|
rasa/cli/export.py
CHANGED
|
@@ -177,7 +177,6 @@ def export_trackers(args: argparse.Namespace) -> None:
|
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
async def _export_trackers(args: argparse.Namespace) -> None:
|
|
180
|
-
|
|
181
180
|
_assert_max_timestamp_is_greater_than_min_timestamp(args)
|
|
182
181
|
|
|
183
182
|
endpoints = rasa.core.utils.read_endpoints_from_path(args.endpoints)
|
rasa/cli/license.py
CHANGED
|
@@ -28,9 +28,9 @@ def display_license_information(_: argparse.Namespace) -> None:
|
|
|
28
28
|
"""Display licensing information to stdout."""
|
|
29
29
|
rasa.shared.utils.cli.print_info(
|
|
30
30
|
"By installing and using this software, you agree to be "
|
|
31
|
-
"bound by the terms and conditions of the
|
|
32
|
-
"
|
|
33
|
-
"Please review the
|
|
31
|
+
"bound by the terms and conditions of the Developer Terms "
|
|
32
|
+
"available at https://rasa.com/developer-terms. "
|
|
33
|
+
"Please review the Developer Terms carefully before proceeding.\n\n"
|
|
34
34
|
"Rasa Pro relies on several 3rd-party dependencies. "
|
|
35
35
|
"The ones below require a license disclorure:\n",
|
|
36
36
|
PSYCOPG2_LICENSE_DISCLOSURE,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file contains the credentials for the voice & chat platforms
|
|
2
2
|
# which your bot is using.
|
|
3
|
-
# https://rasa.com/docs/rasa/messaging-and-voice-channels
|
|
3
|
+
# https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
|
|
4
4
|
|
|
5
5
|
rest:
|
|
6
6
|
# # you don't need to provide anything here - this channel doesn't
|
|
@@ -6,18 +6,24 @@ actions:
|
|
|
6
6
|
slots:
|
|
7
7
|
add_contact_confirmation:
|
|
8
8
|
type: bool
|
|
9
|
+
mappings:
|
|
10
|
+
- type: from_llm
|
|
9
11
|
add_contact_name:
|
|
10
12
|
type: text
|
|
13
|
+
mappings:
|
|
14
|
+
- type: from_llm
|
|
11
15
|
add_contact_handle:
|
|
12
16
|
type: text
|
|
17
|
+
mappings:
|
|
18
|
+
- type: from_llm
|
|
13
19
|
|
|
14
20
|
responses:
|
|
15
21
|
utter_ask_add_contact_confirmation:
|
|
16
22
|
- text: Do you want to add {add_contact_name}({add_contact_handle}) to your contacts?
|
|
17
23
|
buttons:
|
|
18
|
-
- payload: "
|
|
24
|
+
- payload: "/SetSlots(add_contact_confirmation=true)"
|
|
19
25
|
title: Yes
|
|
20
|
-
- payload: "
|
|
26
|
+
- payload: "/SetSlots(add_contact_confirmation=false)"
|
|
21
27
|
title: No, cancel
|
|
22
28
|
utter_ask_add_contact_handle:
|
|
23
29
|
- text: What's the handle of the user you want to add?
|
|
@@ -6,10 +6,17 @@ actions:
|
|
|
6
6
|
slots:
|
|
7
7
|
remove_contact_name:
|
|
8
8
|
type: text
|
|
9
|
+
mappings:
|
|
10
|
+
- type: custom
|
|
11
|
+
action: remove_contact
|
|
9
12
|
remove_contact_handle:
|
|
10
13
|
type: text
|
|
14
|
+
mappings:
|
|
15
|
+
- type: from_llm
|
|
11
16
|
remove_contact_confirmation:
|
|
12
17
|
type: text
|
|
18
|
+
mappings:
|
|
19
|
+
- type: from_llm
|
|
13
20
|
|
|
14
21
|
responses:
|
|
15
22
|
utter_ask_remove_contact_handle:
|
|
@@ -22,9 +29,9 @@ responses:
|
|
|
22
29
|
- text: "Removed {remove_contact_handle}({remove_contact_name}) from your contacts."
|
|
23
30
|
utter_ask_remove_contact_confirmation:
|
|
24
31
|
- buttons:
|
|
25
|
-
- payload: "
|
|
32
|
+
- payload: "/SetSlots(remove_contact_confirmation=true)"
|
|
26
33
|
title: Yes
|
|
27
|
-
- payload: "false"
|
|
34
|
+
- payload: "/SetSlots(remove_contact_confirmation=false)"
|
|
28
35
|
title: No, cancel the removal
|
|
29
36
|
text: "Should I remove {remove_contact_handle} from your contact list?"
|
|
30
37
|
utter_remove_contact_cancelled:
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# This file contains the different endpoints your bot can use.
|
|
2
2
|
|
|
3
3
|
# Server where the models are pulled from.
|
|
4
|
-
# https://rasa.com/docs/rasa/model-storage#fetching-models-from-a-server
|
|
4
|
+
# https://rasa.com/docs/rasa-pro/production/model-storage#fetching-models-from-a-server
|
|
5
5
|
|
|
6
6
|
#models:
|
|
7
7
|
# url: http://my-server.com/models/default_core@latest
|
|
8
8
|
# wait_time_between_pulls: 10 # [optional](default: 100)
|
|
9
9
|
|
|
10
10
|
# Server which runs your custom actions.
|
|
11
|
-
# https://rasa.com/docs/rasa/custom-actions
|
|
11
|
+
# https://rasa.com/docs/rasa-pro/concepts/custom-actions
|
|
12
12
|
|
|
13
13
|
action_endpoint:
|
|
14
14
|
url: "http://localhost:5055/webhook"
|
|
15
15
|
|
|
16
16
|
# Tracker store which is used to store the conversations.
|
|
17
17
|
# By default the conversations are stored in memory.
|
|
18
|
-
# https://rasa.com/docs/rasa/tracker-stores
|
|
18
|
+
# https://rasa.com/docs/rasa-pro/production/tracker-stores
|
|
19
19
|
|
|
20
20
|
#tracker_store:
|
|
21
21
|
# type: redis
|
|
@@ -33,7 +33,7 @@ action_endpoint:
|
|
|
33
33
|
# password: <password used for authentication>
|
|
34
34
|
|
|
35
35
|
# Event broker which all conversation events should be streamed to.
|
|
36
|
-
# https://rasa.com/docs/rasa/event-brokers
|
|
36
|
+
# https://rasa.com/docs/rasa-pro/production/event-brokers
|
|
37
37
|
|
|
38
38
|
#event_broker:
|
|
39
39
|
# url: localhost
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# The config recipe.
|
|
2
|
-
# https://rasa.com/docs/rasa/model-configuration/
|
|
2
|
+
# https://rasa.com/docs/rasa-pro/nlu-based-assistants/model-configuration/
|
|
3
3
|
recipe: default.v1
|
|
4
4
|
|
|
5
5
|
# The assistant project unique identifier
|
|
@@ -7,13 +7,13 @@ recipe: default.v1
|
|
|
7
7
|
assistant_id: placeholder_default
|
|
8
8
|
|
|
9
9
|
# Configuration for Rasa NLU.
|
|
10
|
-
# https://rasa.com/docs/rasa/nlu/components/
|
|
10
|
+
# https://rasa.com/docs/rasa-pro/nlu-based-assistants/components/
|
|
11
11
|
language: en
|
|
12
12
|
|
|
13
13
|
pipeline:
|
|
14
14
|
# # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
|
|
15
15
|
# # If you'd like to customize it, uncomment and adjust the pipeline.
|
|
16
|
-
# # See https://rasa.com/docs/rasa/tuning-your-model for more information.
|
|
16
|
+
# # See https://rasa.com/docs/rasa-pro/nlu-based-assistants/tuning-your-model for more information.
|
|
17
17
|
# - name: WhitespaceTokenizer
|
|
18
18
|
# - name: RegexFeaturizer
|
|
19
19
|
# - name: LexicalSyntacticFeaturizer
|
|
@@ -32,11 +32,11 @@ pipeline:
|
|
|
32
32
|
# ambiguity_threshold: 0.1
|
|
33
33
|
|
|
34
34
|
# Configuration for Rasa Core.
|
|
35
|
-
# https://rasa.com/docs/rasa/
|
|
35
|
+
# https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/
|
|
36
36
|
policies:
|
|
37
37
|
# # No configuration for policies was provided. The following default policies were used to train your model.
|
|
38
38
|
# # If you'd like to customize them, uncomment and adjust the policies.
|
|
39
|
-
# # See https://rasa.com/docs/rasa/policies for more information.
|
|
39
|
+
# # See https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/ for more information.
|
|
40
40
|
# - name: MemoizationPolicy
|
|
41
41
|
# - name: TEDPolicy
|
|
42
42
|
# max_history: 5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file contains the credentials for the voice & chat platforms
|
|
2
2
|
# which your bot is using.
|
|
3
|
-
# https://rasa.com/docs/rasa/messaging-and-voice-channels
|
|
3
|
+
# https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
|
|
4
4
|
|
|
5
5
|
rest:
|
|
6
6
|
# # you don't need to provide anything here - this channel doesn't
|