rasa-pro 3.10.16__py3-none-any.whl → 3.11.0__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.
- rasa/__main__.py +31 -15
- rasa/api.py +12 -2
- rasa/cli/arguments/default_arguments.py +24 -4
- rasa/cli/arguments/run.py +15 -0
- rasa/cli/arguments/shell.py +5 -1
- rasa/cli/arguments/train.py +17 -9
- rasa/cli/evaluate.py +7 -7
- rasa/cli/inspect.py +19 -7
- rasa/cli/interactive.py +1 -0
- rasa/cli/llm_fine_tuning.py +11 -14
- rasa/cli/project_templates/calm/config.yml +5 -7
- rasa/cli/project_templates/calm/endpoints.yml +15 -2
- rasa/cli/project_templates/tutorial/config.yml +8 -5
- rasa/cli/project_templates/tutorial/data/flows.yml +1 -1
- rasa/cli/project_templates/tutorial/data/patterns.yml +5 -0
- rasa/cli/project_templates/tutorial/domain.yml +14 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +5 -0
- rasa/cli/run.py +7 -0
- rasa/cli/scaffold.py +4 -2
- rasa/cli/studio/upload.py +0 -15
- rasa/cli/train.py +14 -53
- rasa/cli/utils.py +14 -11
- rasa/cli/x.py +7 -7
- rasa/constants.py +3 -1
- rasa/core/actions/action.py +77 -33
- rasa/core/actions/action_hangup.py +29 -0
- rasa/core/actions/action_repeat_bot_messages.py +89 -0
- rasa/core/actions/e2e_stub_custom_action_executor.py +5 -1
- rasa/core/actions/http_custom_action_executor.py +4 -0
- rasa/core/agent.py +2 -2
- rasa/core/brokers/kafka.py +3 -1
- rasa/core/brokers/pika.py +3 -1
- rasa/core/channels/__init__.py +10 -6
- rasa/core/channels/channel.py +41 -4
- rasa/core/channels/development_inspector.py +150 -46
- rasa/core/channels/inspector/README.md +1 -1
- rasa/core/channels/inspector/dist/assets/{arc-b6e548fe.js → arc-bc141fb2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-fa03ac9e.js → c4Diagram-d0fbc5ce-be2db283.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-ee67392a.js → classDiagram-936ed81e-55366915.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-9b283fae.js → classDiagram-v2-c3cb15f1-bb529518.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-8b6fcc2a.js → createText-62fc7601-b0ec81d6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-22e77f4f.js → edges-f2ad444c-6166330c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-60ffc87f.js → erDiagram-9d236eb7-5ccc6a8e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-9dd802e4.js → flowDb-1972c806-fca3bfe4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-5fa1912f.js → flowDiagram-7ea5b25a-4739080f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-736177bf.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-622a1fd2.js → flowchart-elk-definition-abe16c3d-7c1b0e0f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-e285a63a.js → ganttDiagram-9b5ea136-772fd050.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-f237bdca.js → gitGraphDiagram-99d0ae7c-8eae1dc9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-4b03d70e.js → index-2c4b9a3b-f55afcdf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-e7cef9de.js +1317 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-72a0fa5f.js → infoDiagram-736b4530-124d4a14.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-82218c41.js → journeyDiagram-df861f2b-7c4fae44.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-78cff630.js → layout-b9885fb6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-5038b469.js → line-7c59abb6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-c4fc4098.js → linear-4776f780.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-c33c8ea6.js → mindmap-definition-beec6740-2332c46c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-a8d03059.js → pieDiagram-dbbf0591-8fb39303.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-6a0e56b2.js → quadrantDiagram-4d7f4fd6-3c7180a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-2dc7c7bd.js → requirementDiagram-6fc4c22a-e910bcb8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-2360fe39.js → sankeyDiagram-8f13d901-ead16c89.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-41b9f9ad.js → sequenceDiagram-b655622a-29a02a19.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-0aad326f.js → stateDiagram-59f0c015-042b3137.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-9847d984.js → stateDiagram-v2-2b26beab-2178c0f3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-080da4f6-564d890e.js → styles-080da4f6-23ffa4fc.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-38957613.js → styles-3dcbcfbf-94f59763.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-f0fc6921.js → styles-9c745c82-78a6bebc.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-ef3c5a77.js → svgDrawCommon-4835440b-eae2a6f6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-bf3e91c1.js → timeline-definition-5b62e21b-5c968d92.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-4d4026c0.js → xychartDiagram-2b33534f-fd3db0d5.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +18 -17
- rasa/core/channels/inspector/index.html +17 -16
- rasa/core/channels/inspector/package.json +5 -1
- rasa/core/channels/inspector/src/App.tsx +118 -68
- rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +11 -10
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +10 -25
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -3
- rasa/core/channels/inspector/src/helpers/audiostream.ts +165 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +10 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +107 -41
- rasa/core/channels/inspector/src/helpers/utils.ts +92 -7
- rasa/core/channels/inspector/src/types.ts +21 -1
- rasa/core/channels/inspector/yarn.lock +94 -1
- rasa/core/channels/rest.py +51 -46
- rasa/core/channels/socketio.py +28 -1
- rasa/core/channels/telegram.py +1 -1
- rasa/core/channels/twilio.py +1 -1
- rasa/core/channels/{audiocodes.py → voice_ready/audiocodes.py} +122 -69
- rasa/core/channels/{voice_aware → voice_ready}/jambonz.py +26 -8
- rasa/core/channels/{voice_aware → voice_ready}/jambonz_protocol.py +57 -5
- rasa/core/channels/{twilio_voice.py → voice_ready/twilio_voice.py} +64 -28
- rasa/core/channels/voice_ready/utils.py +37 -0
- rasa/core/channels/voice_stream/asr/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
- rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
- rasa/core/channels/voice_stream/asr/azure.py +129 -0
- rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
- rasa/core/channels/voice_stream/audio_bytes.py +8 -0
- rasa/core/channels/voice_stream/browser_audio.py +107 -0
- rasa/core/channels/voice_stream/call_state.py +23 -0
- rasa/core/channels/voice_stream/tts/__init__.py +0 -0
- rasa/core/channels/voice_stream/tts/azure.py +106 -0
- rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
- rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
- rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
- rasa/core/channels/voice_stream/util.py +57 -0
- rasa/core/channels/voice_stream/voice_channel.py +427 -0
- rasa/core/information_retrieval/qdrant.py +1 -0
- rasa/core/nlg/contextual_response_rephraser.py +45 -17
- rasa/{nlu → core}/persistor.py +203 -68
- rasa/core/policies/enterprise_search_policy.py +119 -63
- rasa/core/policies/flows/flow_executor.py +15 -22
- rasa/core/policies/intentless_policy.py +83 -28
- rasa/core/processor.py +25 -0
- rasa/core/run.py +12 -2
- rasa/core/secrets_manager/constants.py +4 -0
- rasa/core/secrets_manager/factory.py +8 -0
- rasa/core/secrets_manager/vault.py +11 -1
- rasa/core/training/interactive.py +33 -34
- rasa/core/utils.py +47 -21
- rasa/dialogue_understanding/coexistence/llm_based_router.py +41 -14
- rasa/dialogue_understanding/commands/__init__.py +6 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
- rasa/dialogue_understanding/commands/session_end_command.py +61 -0
- rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
- rasa/dialogue_understanding/commands/utils.py +5 -0
- rasa/dialogue_understanding/generator/constants.py +2 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +47 -9
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +38 -15
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +35 -13
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +3 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +60 -13
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +53 -0
- rasa/dialogue_understanding/patterns/repeat.py +37 -0
- rasa/dialogue_understanding/patterns/user_silence.py +37 -0
- rasa/dialogue_understanding/processor/command_processor.py +21 -1
- rasa/e2e_test/aggregate_test_stats_calculator.py +1 -11
- rasa/e2e_test/assertions.py +136 -61
- rasa/e2e_test/assertions_schema.yml +23 -0
- rasa/e2e_test/e2e_test_case.py +85 -6
- rasa/e2e_test/e2e_test_runner.py +2 -3
- rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
- rasa/engine/graph.py +3 -10
- rasa/engine/loader.py +12 -0
- rasa/engine/recipes/config_files/default_config.yml +0 -3
- rasa/engine/recipes/default_recipe.py +0 -1
- rasa/engine/recipes/graph_recipe.py +0 -1
- rasa/engine/runner/dask.py +2 -2
- rasa/engine/storage/local_model_storage.py +12 -42
- rasa/engine/storage/storage.py +1 -5
- rasa/engine/validation.py +527 -74
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +40 -0
- rasa/model_manager/model_api.py +559 -0
- rasa/model_manager/runner_service.py +286 -0
- rasa/model_manager/socket_bridge.py +146 -0
- rasa/model_manager/studio_jwt_auth.py +86 -0
- rasa/model_manager/trainer_service.py +325 -0
- rasa/model_manager/utils.py +87 -0
- rasa/model_manager/warm_rasa_process.py +187 -0
- rasa/model_service.py +112 -0
- rasa/model_training.py +42 -23
- rasa/nlu/tokenizers/whitespace_tokenizer.py +3 -14
- rasa/server.py +4 -2
- rasa/shared/constants.py +60 -8
- rasa/shared/core/constants.py +13 -0
- rasa/shared/core/domain.py +107 -50
- rasa/shared/core/events.py +29 -0
- rasa/shared/core/flows/flow.py +5 -0
- rasa/shared/core/flows/flows_list.py +19 -6
- rasa/shared/core/flows/flows_yaml_schema.json +10 -0
- rasa/shared/core/flows/utils.py +39 -0
- rasa/shared/core/flows/validation.py +121 -0
- rasa/shared/core/flows/yaml_flows_io.py +15 -27
- rasa/shared/core/slots.py +5 -0
- rasa/shared/importers/importer.py +59 -41
- rasa/shared/importers/multi_project.py +23 -11
- rasa/shared/importers/rasa.py +12 -3
- rasa/shared/importers/remote_importer.py +196 -0
- rasa/shared/importers/utils.py +3 -1
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +18 -3
- rasa/shared/nlu/training_data/training_data.py +18 -19
- rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
- rasa/shared/providers/_configs/model_group_config.py +167 -0
- rasa/shared/providers/_configs/openai_client_config.py +1 -1
- rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -0
- rasa/shared/providers/_configs/utils.py +16 -0
- rasa/shared/providers/_utils.py +79 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +13 -29
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +54 -21
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +24 -0
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +135 -0
- rasa/shared/providers/llm/_base_litellm_client.py +34 -22
- rasa/shared/providers/llm/azure_openai_llm_client.py +50 -29
- rasa/shared/providers/llm/default_litellm_llm_client.py +24 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
- rasa/shared/providers/llm/rasa_llm_client.py +112 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +5 -29
- rasa/shared/providers/mappings.py +19 -0
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +183 -0
- rasa/shared/providers/router/router_client.py +73 -0
- rasa/shared/utils/common.py +40 -24
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
- rasa/shared/utils/health_check/health_check.py +258 -0
- rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
- rasa/shared/utils/io.py +27 -6
- rasa/shared/utils/llm.py +354 -44
- rasa/shared/utils/schemas/events.py +2 -0
- rasa/shared/utils/schemas/model_config.yml +0 -10
- rasa/shared/utils/yaml.py +181 -38
- rasa/studio/data_handler.py +3 -1
- rasa/studio/upload.py +160 -74
- rasa/telemetry.py +94 -17
- rasa/tracing/config.py +3 -1
- rasa/tracing/instrumentation/attribute_extractors.py +95 -18
- rasa/tracing/instrumentation/instrumentation.py +121 -0
- rasa/utils/common.py +5 -0
- rasa/utils/endpoints.py +27 -1
- rasa/utils/io.py +8 -16
- rasa/utils/log_utils.py +9 -2
- rasa/utils/sanic_error_handler.py +32 -0
- rasa/validator.py +110 -16
- rasa/version.py +1 -1
- {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/METADATA +16 -14
- {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/RECORD +236 -185
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +0 -1040
- rasa/core/channels/voice_aware/utils.py +0 -20
- rasa/llm_fine_tuning/notebooks/unsloth_finetuning.ipynb +0 -407
- /rasa/core/channels/{voice_aware → voice_ready}/__init__.py +0 -0
- /rasa/core/channels/{voice_native → voice_stream}/__init__.py +0 -0
- {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/entry_points.txt +0 -0
rasa/validator.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import re
|
|
3
3
|
import string
|
|
4
|
+
import sys
|
|
4
5
|
from collections import defaultdict
|
|
5
6
|
from typing import Set, Text, Optional, Dict, Any, List, Tuple
|
|
6
7
|
|
|
@@ -22,6 +23,11 @@ from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
|
|
|
22
23
|
from rasa.shared.core.flows.steps.action import ActionFlowStep
|
|
23
24
|
from rasa.shared.core.flows.steps.link import LinkFlowStep
|
|
24
25
|
from rasa.shared.core.flows import FlowsList
|
|
26
|
+
from rasa.shared.core.flows.utils import (
|
|
27
|
+
warn_deprecated_collect_step_config,
|
|
28
|
+
get_duplicate_slot_persistence_config_error_message,
|
|
29
|
+
get_invalid_slot_persistence_config_error_message,
|
|
30
|
+
)
|
|
25
31
|
import rasa.shared.nlu.constants
|
|
26
32
|
from rasa.shared.constants import (
|
|
27
33
|
ASSISTANT_ID_DEFAULT_VALUE,
|
|
@@ -55,6 +61,7 @@ from rasa.shared.importers.importer import TrainingDataImporter
|
|
|
55
61
|
from rasa.shared.nlu.constants import COMMANDS
|
|
56
62
|
from rasa.shared.nlu.training_data.message import Message
|
|
57
63
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
64
|
+
|
|
58
65
|
import rasa.shared.utils.cli
|
|
59
66
|
import rasa.shared.utils.io
|
|
60
67
|
|
|
@@ -298,35 +305,23 @@ class Validator:
|
|
|
298
305
|
return any(cls.check_for_placeholder(i) for i in value)
|
|
299
306
|
return False
|
|
300
307
|
|
|
301
|
-
def
|
|
308
|
+
def check_for_no_empty_parenthesis_in_responses(self) -> bool:
|
|
302
309
|
"""Checks if there are no empty parenthesis in utterances."""
|
|
303
310
|
everything_is_alright = True
|
|
304
311
|
|
|
305
312
|
for response_text, response_variations in self.domain.responses.items():
|
|
306
|
-
if not response_variations:
|
|
307
|
-
structlogger.error(
|
|
308
|
-
"validator.empty_response",
|
|
309
|
-
response=response_text,
|
|
310
|
-
event_info=(
|
|
311
|
-
f"The response '{response_text}' in the domain file "
|
|
312
|
-
f"does not have any variations. Please add at least one "
|
|
313
|
-
f"variation to the response."
|
|
314
|
-
),
|
|
315
|
-
)
|
|
316
|
-
everything_is_alright = False
|
|
317
|
-
|
|
318
313
|
for response in response_variations:
|
|
319
314
|
if any(
|
|
320
315
|
self.check_for_placeholder(response.get(key))
|
|
321
316
|
for key in RESPONSE_KEYS_TO_INTERPOLATE
|
|
322
317
|
):
|
|
323
318
|
structlogger.error(
|
|
324
|
-
"validator.
|
|
319
|
+
"validator.empty_parenthesis_in_utterances",
|
|
325
320
|
response=response_text,
|
|
326
321
|
event_info=(
|
|
327
322
|
f"The response '{response_text}' in the domain file "
|
|
328
|
-
f"contains empty parenthesis, which is not permitted."
|
|
329
|
-
f"
|
|
323
|
+
f"contains empty parenthesis, which is not permitted. "
|
|
324
|
+
f"Please remove the empty parenthesis."
|
|
330
325
|
),
|
|
331
326
|
)
|
|
332
327
|
everything_is_alright = False
|
|
@@ -1249,6 +1244,7 @@ class Validator:
|
|
|
1249
1244
|
self.verify_flows_steps_against_domain(),
|
|
1250
1245
|
self.verify_unique_flows(),
|
|
1251
1246
|
self.verify_predicates(),
|
|
1247
|
+
self.verify_slot_persistence_configuration(),
|
|
1252
1248
|
]
|
|
1253
1249
|
|
|
1254
1250
|
all_good = all(flow_validation_conditions)
|
|
@@ -1545,3 +1541,101 @@ class Validator:
|
|
|
1545
1541
|
),
|
|
1546
1542
|
)
|
|
1547
1543
|
return False
|
|
1544
|
+
|
|
1545
|
+
def verify_slot_persistence_configuration(self) -> bool:
|
|
1546
|
+
"""Verifies the validity of slot persistence after flow ends configuration.
|
|
1547
|
+
|
|
1548
|
+
Only slots used in either a collect step or a set_slot step can be persisted and
|
|
1549
|
+
the configuration can either set at the flow level or the collect step level,
|
|
1550
|
+
but not both.
|
|
1551
|
+
|
|
1552
|
+
Returns:
|
|
1553
|
+
bool: True if all slot persistence configuration is valid, False otherwise.
|
|
1554
|
+
|
|
1555
|
+
Raises:
|
|
1556
|
+
DeprecationWarning: If reset_after_flow_ends is used in collect steps.
|
|
1557
|
+
"""
|
|
1558
|
+
all_good = True
|
|
1559
|
+
|
|
1560
|
+
for flow in self.flows.underlying_flows:
|
|
1561
|
+
flow_id = flow.id
|
|
1562
|
+
persist_slots = flow.persisted_slots
|
|
1563
|
+
has_flow_level_persistence = True if persist_slots else False
|
|
1564
|
+
flow_slots = set()
|
|
1565
|
+
|
|
1566
|
+
for step in flow.steps_with_calls_resolved:
|
|
1567
|
+
if isinstance(step, SetSlotsFlowStep):
|
|
1568
|
+
flow_slots.update([slot["key"] for slot in step.slots])
|
|
1569
|
+
|
|
1570
|
+
elif isinstance(step, CollectInformationFlowStep):
|
|
1571
|
+
collect_step = step.collect
|
|
1572
|
+
flow_slots.add(collect_step)
|
|
1573
|
+
if not step.reset_after_flow_ends:
|
|
1574
|
+
warn_deprecated_collect_step_config(flow_id, collect_step)
|
|
1575
|
+
|
|
1576
|
+
if has_flow_level_persistence:
|
|
1577
|
+
structlogger.error(
|
|
1578
|
+
"validator.verify_slot_persistence_configuration.duplicate_config",
|
|
1579
|
+
flow=flow_id,
|
|
1580
|
+
collect_step=collect_step,
|
|
1581
|
+
event_info=get_duplicate_slot_persistence_config_error_message(
|
|
1582
|
+
flow_id, collect_step
|
|
1583
|
+
),
|
|
1584
|
+
)
|
|
1585
|
+
all_good = False
|
|
1586
|
+
|
|
1587
|
+
if has_flow_level_persistence:
|
|
1588
|
+
if not self._is_persist_slots_valid(persist_slots, flow_slots, flow_id):
|
|
1589
|
+
all_good = False
|
|
1590
|
+
return all_good
|
|
1591
|
+
|
|
1592
|
+
def _is_persist_slots_valid(
|
|
1593
|
+
self, persist_slots: List[str], flow_slots: Set[str], flow_id: str
|
|
1594
|
+
) -> bool:
|
|
1595
|
+
invalid_slots = set(persist_slots) - flow_slots
|
|
1596
|
+
is_valid = False if invalid_slots else True
|
|
1597
|
+
|
|
1598
|
+
if invalid_slots:
|
|
1599
|
+
structlogger.error(
|
|
1600
|
+
"validator.verify_slot_persistence_configuration.invalid_persist_slot",
|
|
1601
|
+
flow=flow_id,
|
|
1602
|
+
event_info=get_invalid_slot_persistence_config_error_message(
|
|
1603
|
+
flow_id, invalid_slots
|
|
1604
|
+
),
|
|
1605
|
+
)
|
|
1606
|
+
return is_valid
|
|
1607
|
+
|
|
1608
|
+
def verify_studio_supported_validations(self) -> bool:
|
|
1609
|
+
"""Validates the assistant project for Rasa Studio supported features.
|
|
1610
|
+
|
|
1611
|
+
Ensure to add new validations here if they are required for
|
|
1612
|
+
Rasa Studio Upload CLI.
|
|
1613
|
+
"""
|
|
1614
|
+
if self.domain.is_empty():
|
|
1615
|
+
structlogger.error(
|
|
1616
|
+
"rasa.validator.verify_studio_supported_validations.empty_domain",
|
|
1617
|
+
event_info="Encountered empty domain during validation.",
|
|
1618
|
+
)
|
|
1619
|
+
sys.exit(1)
|
|
1620
|
+
|
|
1621
|
+
self.warn_if_config_mandatory_keys_are_not_set()
|
|
1622
|
+
|
|
1623
|
+
valid_responses = (
|
|
1624
|
+
self.check_for_no_empty_parenthesis_in_responses()
|
|
1625
|
+
and self.validate_button_payloads()
|
|
1626
|
+
)
|
|
1627
|
+
valid_nlu = self.verify_nlu()
|
|
1628
|
+
valid_flows = all(
|
|
1629
|
+
[
|
|
1630
|
+
self.verify_flows_steps_against_domain(),
|
|
1631
|
+
self.verify_unique_flows(),
|
|
1632
|
+
self.verify_predicates(),
|
|
1633
|
+
]
|
|
1634
|
+
)
|
|
1635
|
+
valid_calm_slot_mappings = self.validate_CALM_slot_mappings()
|
|
1636
|
+
|
|
1637
|
+
all_good = (
|
|
1638
|
+
valid_responses and valid_nlu and valid_flows and valid_calm_slot_mappings
|
|
1639
|
+
)
|
|
1640
|
+
|
|
1641
|
+
return all_good
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.11.0
|
|
4
4
|
Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
|
|
5
5
|
Home-page: https://rasa.com
|
|
6
6
|
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
@@ -8,12 +8,13 @@ Author: Rasa Technologies GmbH
|
|
|
8
8
|
Author-email: hi@rasa.com
|
|
9
9
|
Maintainer: Tom Bocklisch
|
|
10
10
|
Maintainer-email: tom@rasa.com
|
|
11
|
-
Requires-Python: >=3.9,<3.
|
|
11
|
+
Requires-Python: >=3.9,<3.12
|
|
12
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
18
|
Classifier: Topic :: Software Development :: Libraries
|
|
18
19
|
Provides-Extra: full
|
|
19
20
|
Provides-Extra: gh-release-notes
|
|
@@ -22,17 +23,17 @@ Provides-Extra: metal
|
|
|
22
23
|
Provides-Extra: mlflow
|
|
23
24
|
Provides-Extra: spacy
|
|
24
25
|
Provides-Extra: transformers
|
|
25
|
-
Requires-Dist: CacheControl (>=0.
|
|
26
|
+
Requires-Dist: CacheControl (>=0.14.0,<0.15.0)
|
|
26
27
|
Requires-Dist: PyJWT[crypto] (>=2.8.0,<3.0.0)
|
|
27
28
|
Requires-Dist: SQLAlchemy (>=2.0.22,<2.1.0)
|
|
28
29
|
Requires-Dist: absl-py (>=2.0,<2.1)
|
|
29
|
-
Requires-Dist: aio-pika (>=8.2.3,<
|
|
30
|
+
Requires-Dist: aio-pika (>=8.2.3,<9.4.4)
|
|
30
31
|
Requires-Dist: aiogram (>=2.15,<2.26)
|
|
31
32
|
Requires-Dist: aiohttp (>=3.9.4,<3.10)
|
|
32
33
|
Requires-Dist: apscheduler (>=3.10,<3.11)
|
|
33
34
|
Requires-Dist: attrs (>=23.1,<23.2)
|
|
34
35
|
Requires-Dist: azure-storage-blob (>=12.16.0,<12.17.0)
|
|
35
|
-
Requires-Dist: boto3 (>=1.35.
|
|
36
|
+
Requires-Dist: boto3 (>=1.35.15,<1.36.0)
|
|
36
37
|
Requires-Dist: certifi (>=2024.07.04)
|
|
37
38
|
Requires-Dist: colorama (>=0.4.6,<0.5.0) ; sys_platform == "win32"
|
|
38
39
|
Requires-Dist: colorclass (>=2.2,<2.3)
|
|
@@ -41,7 +42,8 @@ Requires-Dist: colorhash (>=2.0,<2.1.0)
|
|
|
41
42
|
Requires-Dist: confluent-kafka (>=2.3.0,<3.0.0)
|
|
42
43
|
Requires-Dist: cryptography (>=42.0.5)
|
|
43
44
|
Requires-Dist: cvg-python-sdk (>=0.5.1,<0.6.0)
|
|
44
|
-
Requires-Dist: dask (
|
|
45
|
+
Requires-Dist: dask (>=2024.7.0,<2024.8.0)
|
|
46
|
+
Requires-Dist: demoji (>=1.1.0,<2.0.0)
|
|
45
47
|
Requires-Dist: diskcache (>=5.6.3,<5.7.0)
|
|
46
48
|
Requires-Dist: dnspython (==2.6.1)
|
|
47
49
|
Requires-Dist: faiss-cpu (>=1.7.4,<2.0.0)
|
|
@@ -57,7 +59,7 @@ Requires-Dist: importlib-resources (==6.1.3)
|
|
|
57
59
|
Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
|
|
58
60
|
Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
|
|
59
61
|
Requires-Dist: jsonpatch (>=1.33,<2.0)
|
|
60
|
-
Requires-Dist: jsonpickle (>=3.
|
|
62
|
+
Requires-Dist: jsonpickle (>=3.0,<3.1)
|
|
61
63
|
Requires-Dist: jsonschema (>=4.22)
|
|
62
64
|
Requires-Dist: keras (==2.14.0)
|
|
63
65
|
Requires-Dist: langchain (>=0.2.0,<0.3.0)
|
|
@@ -67,7 +69,7 @@ Requires-Dist: matplotlib (>=3.7,<3.8)
|
|
|
67
69
|
Requires-Dist: mattermostwrapper (>=2.2,<2.3)
|
|
68
70
|
Requires-Dist: mlflow (>=2.15.1,<3.0.0) ; extra == "mlflow"
|
|
69
71
|
Requires-Dist: networkx (>=3.1,<3.2)
|
|
70
|
-
Requires-Dist: numpy (>=1.
|
|
72
|
+
Requires-Dist: numpy (>=1.26.4,<1.27.0)
|
|
71
73
|
Requires-Dist: openai (>=1.55.3,<1.56.0)
|
|
72
74
|
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
|
|
73
75
|
Requires-Dist: opentelemetry-api (>=1.16.0,<1.17.0)
|
|
@@ -88,8 +90,8 @@ Requires-Dist: pycountry (>=22.3.5,<23.0.0)
|
|
|
88
90
|
Requires-Dist: pydantic (>=2.0,<3.0)
|
|
89
91
|
Requires-Dist: pydot (>=1.4,<1.5)
|
|
90
92
|
Requires-Dist: pykwalify (>=1.8,<1.9)
|
|
91
|
-
Requires-Dist: pymilvus (
|
|
92
|
-
Requires-Dist: pymongo
|
|
93
|
+
Requires-Dist: pymilvus (<2.4.2)
|
|
94
|
+
Requires-Dist: pymongo (>=4.10.1,<4.11.0)
|
|
93
95
|
Requires-Dist: pypred (>=0.4.0,<0.5.0)
|
|
94
96
|
Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
|
|
95
97
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
@@ -101,7 +103,7 @@ Requires-Dist: pyyaml (>=6.0)
|
|
|
101
103
|
Requires-Dist: qdrant-client (>=1.9.0,<2.0.0)
|
|
102
104
|
Requires-Dist: questionary (>=1.10.0,<2.1.0)
|
|
103
105
|
Requires-Dist: randomname (>=0.2.1,<0.3.0)
|
|
104
|
-
Requires-Dist: rasa-sdk (
|
|
106
|
+
Requires-Dist: rasa-sdk (==3.11.0)
|
|
105
107
|
Requires-Dist: redis (>=4.6.0,<6.0)
|
|
106
108
|
Requires-Dist: regex (>=2022.10.31,<2022.11)
|
|
107
109
|
Requires-Dist: requests (>=2.31.0,<2.32.0)
|
|
@@ -113,14 +115,14 @@ Requires-Dist: sanic (>=22.12,<22.13)
|
|
|
113
115
|
Requires-Dist: sanic-cors (>=2.2.0,<2.3.0)
|
|
114
116
|
Requires-Dist: sanic-jwt (>=1.8.0,<2.0.0)
|
|
115
117
|
Requires-Dist: sanic-routing (>=22.8.0,<23.0.0)
|
|
116
|
-
Requires-Dist: scikit-learn (>=1.1
|
|
117
|
-
Requires-Dist: scipy (>=1.
|
|
118
|
+
Requires-Dist: scikit-learn (>=1.5.1,<1.6.0)
|
|
119
|
+
Requires-Dist: scipy (>=1.13.1,<1.14.0)
|
|
118
120
|
Requires-Dist: sentencepiece[sentencepiece] (>=0.1.99,<0.2.0) ; extra == "transformers" or extra == "full"
|
|
119
121
|
Requires-Dist: sentry-sdk (>=1.14.0,<1.15.0)
|
|
120
122
|
Requires-Dist: setuptools (>=70.0.0,<70.1.0)
|
|
121
123
|
Requires-Dist: sklearn-crfsuite (>=0.3.6,<0.4.0)
|
|
122
124
|
Requires-Dist: skops (>=0.10.0,<0.11.0)
|
|
123
|
-
Requires-Dist: slack-sdk (>=3.27.1,<
|
|
125
|
+
Requires-Dist: slack-sdk (>=3.27.1,<3.28.0)
|
|
124
126
|
Requires-Dist: spacy (>=3.5.4,<4.0.0) ; extra == "spacy" or extra == "full"
|
|
125
127
|
Requires-Dist: structlog (>=23.1.0,<23.2.0)
|
|
126
128
|
Requires-Dist: structlog-sentry (>=2.0.3,<3.0.0)
|