rasa-pro 3.12.6.dev2__py3-none-any.whl → 3.13.0.dev2__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/__init__.py +0 -6
- rasa/cli/scaffold.py +1 -1
- rasa/core/actions/action.py +38 -34
- rasa/core/actions/action_run_slot_rejections.py +1 -1
- rasa/core/channels/studio_chat.py +16 -43
- rasa/core/channels/voice_ready/audiocodes.py +46 -17
- rasa/core/information_retrieval/faiss.py +68 -7
- rasa/core/information_retrieval/information_retrieval.py +40 -2
- rasa/core/information_retrieval/milvus.py +7 -2
- rasa/core/information_retrieval/qdrant.py +7 -2
- rasa/core/nlg/contextual_response_rephraser.py +11 -27
- rasa/core/nlg/generator.py +5 -21
- rasa/core/nlg/response.py +6 -43
- rasa/core/nlg/summarize.py +1 -15
- rasa/core/nlg/translate.py +0 -8
- rasa/core/policies/enterprise_search_policy.py +64 -316
- rasa/core/policies/flows/flow_executor.py +3 -38
- rasa/core/policies/intentless_policy.py +4 -17
- rasa/core/policies/policy.py +0 -2
- rasa/core/processor.py +27 -6
- rasa/core/utils.py +53 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +4 -18
- rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -59
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -2
- rasa/dialogue_understanding/commands/start_flow_command.py +0 -41
- rasa/dialogue_understanding/generator/command_generator.py +67 -0
- rasa/dialogue_understanding/generator/command_parser.py +1 -1
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +7 -23
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -3
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_template.jinja2 +1 -1
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +1 -1
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +24 -2
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +8 -12
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +0 -61
- rasa/dialogue_understanding/processor/command_processor.py +7 -65
- rasa/dialogue_understanding/stack/utils.py +0 -38
- rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
- rasa/dialogue_understanding_test/command_metrics.py +38 -0
- rasa/dialogue_understanding_test/du_test_case.py +58 -25
- rasa/dialogue_understanding_test/du_test_result.py +228 -132
- rasa/dialogue_understanding_test/du_test_runner.py +10 -1
- rasa/dialogue_understanding_test/io.py +48 -16
- rasa/document_retrieval/__init__.py +0 -0
- rasa/document_retrieval/constants.py +32 -0
- rasa/document_retrieval/document_post_processor.py +351 -0
- rasa/document_retrieval/document_post_processor_prompt_template.jinja2 +0 -0
- rasa/document_retrieval/document_retriever.py +333 -0
- rasa/document_retrieval/knowledge_base_connectors/__init__.py +0 -0
- rasa/document_retrieval/knowledge_base_connectors/api_connector.py +39 -0
- rasa/document_retrieval/knowledge_base_connectors/knowledge_base_connector.py +34 -0
- rasa/document_retrieval/knowledge_base_connectors/vector_store_connector.py +226 -0
- rasa/document_retrieval/query_rewriter.py +234 -0
- rasa/document_retrieval/query_rewriter_prompt_template.jinja2 +8 -0
- rasa/engine/recipes/default_components.py +2 -0
- rasa/hooks.py +0 -55
- rasa/model_manager/model_api.py +1 -1
- rasa/model_manager/socket_bridge.py +0 -7
- rasa/shared/constants.py +0 -5
- rasa/shared/core/constants.py +0 -8
- rasa/shared/core/domain.py +12 -3
- rasa/shared/core/flows/flow.py +0 -17
- rasa/shared/core/flows/flows_yaml_schema.json +3 -38
- rasa/shared/core/flows/steps/collect.py +5 -18
- rasa/shared/core/flows/utils.py +1 -16
- rasa/shared/core/slot_mappings.py +11 -5
- rasa/shared/core/slots.py +1 -1
- rasa/shared/core/trackers.py +4 -10
- rasa/shared/nlu/constants.py +0 -1
- rasa/shared/providers/constants.py +0 -9
- rasa/shared/providers/llm/_base_litellm_client.py +4 -14
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
- rasa/shared/providers/llm/litellm_router_llm_client.py +7 -17
- rasa/shared/providers/llm/llm_client.py +15 -24
- rasa/shared/providers/llm/self_hosted_llm_client.py +2 -10
- rasa/shared/utils/common.py +11 -1
- rasa/shared/utils/health_check/health_check.py +1 -7
- rasa/shared/utils/llm.py +1 -1
- rasa/tracing/instrumentation/attribute_extractors.py +50 -17
- rasa/tracing/instrumentation/instrumentation.py +12 -12
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -2
- rasa/utils/licensing.py +0 -15
- rasa/validator.py +1 -123
- rasa/version.py +1 -1
- {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/METADATA +2 -3
- {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/RECORD +88 -80
- rasa/core/actions/action_handle_digressions.py +0 -164
- rasa/dialogue_understanding/commands/handle_digressions_command.py +0 -144
- rasa/dialogue_understanding/patterns/handle_digressions.py +0 -81
- rasa/monkey_patches.py +0 -91
- {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/WHEEL +0 -0
- {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/entry_points.txt +0 -0
|
@@ -3,7 +3,6 @@ import sys
|
|
|
3
3
|
from typing import Any, Dict, Optional
|
|
4
4
|
|
|
5
5
|
from rasa.shared.constants import (
|
|
6
|
-
LANGFUSE_CUSTOM_METADATA_DICT,
|
|
7
6
|
LLM_API_HEALTH_CHECK_DEFAULT_VALUE,
|
|
8
7
|
LLM_API_HEALTH_CHECK_ENV_VAR,
|
|
9
8
|
MODELS_CONFIG_KEY,
|
|
@@ -199,12 +198,7 @@ def send_test_llm_api_request(
|
|
|
199
198
|
config=llm_client.config,
|
|
200
199
|
)
|
|
201
200
|
try:
|
|
202
|
-
llm_client.completion(
|
|
203
|
-
"hello",
|
|
204
|
-
metadata={
|
|
205
|
-
LANGFUSE_CUSTOM_METADATA_DICT: {"component": log_source_component}
|
|
206
|
-
},
|
|
207
|
-
)
|
|
201
|
+
llm_client.completion("hello")
|
|
208
202
|
except Exception as e:
|
|
209
203
|
structlogger.error(
|
|
210
204
|
f"{log_source_function}.send_test_llm_api_request_failed",
|
rasa/shared/utils/llm.py
CHANGED
|
@@ -762,7 +762,7 @@ def allowed_values_for_slot(slot: Slot) -> Union[str, None]:
|
|
|
762
762
|
if isinstance(slot, BooleanSlot):
|
|
763
763
|
return str([True, False])
|
|
764
764
|
if isinstance(slot, CategoricalSlot):
|
|
765
|
-
return str([v for v in slot.values if v != "__other__"])
|
|
765
|
+
return str([v for v in slot.values if v != "__other__"] + ["other"])
|
|
766
766
|
else:
|
|
767
767
|
return None
|
|
768
768
|
|
|
@@ -22,8 +22,14 @@ from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
|
|
|
22
22
|
from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
|
|
23
23
|
from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
|
|
24
24
|
from rasa.dialogue_understanding_test.du_test_result import (
|
|
25
|
+
KEY_COMMANDS_F1_MACRO,
|
|
26
|
+
KEY_COMMANDS_F1_MICRO,
|
|
27
|
+
KEY_COMMANDS_F1_WEIGHTED,
|
|
25
28
|
KEY_TEST_CASES_ACCURACY,
|
|
26
29
|
KEY_USER_UTTERANCES_ACCURACY,
|
|
30
|
+
OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR,
|
|
31
|
+
OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR,
|
|
32
|
+
OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR,
|
|
27
33
|
OUTPUT_COMPLETION_TOKEN_METRICS,
|
|
28
34
|
OUTPUT_LATENCY_METRICS,
|
|
29
35
|
OUTPUT_NAMES_OF_FAILED_TESTS,
|
|
@@ -320,7 +326,7 @@ def extract_attrs_for_command(
|
|
|
320
326
|
def extract_llm_config(
|
|
321
327
|
self: Any,
|
|
322
328
|
default_llm_config: Dict[str, Any],
|
|
323
|
-
default_embeddings_config: Dict[str, Any],
|
|
329
|
+
default_embeddings_config: Optional[Dict[str, Any]],
|
|
324
330
|
) -> Dict[str, Any]:
|
|
325
331
|
if isinstance(self, ContextualResponseRephraser):
|
|
326
332
|
# ContextualResponseRephraser is not a graph component, so it's
|
|
@@ -340,8 +346,12 @@ def extract_llm_config(
|
|
|
340
346
|
default_embeddings_config,
|
|
341
347
|
)
|
|
342
348
|
else:
|
|
343
|
-
embeddings_property =
|
|
344
|
-
|
|
349
|
+
embeddings_property = (
|
|
350
|
+
combine_custom_and_default_config(
|
|
351
|
+
config.get(EMBEDDINGS_CONFIG_KEY), default_embeddings_config
|
|
352
|
+
)
|
|
353
|
+
if default_embeddings_config is not None
|
|
354
|
+
else {}
|
|
345
355
|
)
|
|
346
356
|
|
|
347
357
|
attributes = {
|
|
@@ -372,7 +382,6 @@ def extract_llm_config(
|
|
|
372
382
|
def extract_attrs_for_llm_based_command_generator(
|
|
373
383
|
self: "LLMBasedCommandGenerator",
|
|
374
384
|
prompt: str,
|
|
375
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
376
385
|
) -> Dict[str, Any]:
|
|
377
386
|
from rasa.dialogue_understanding.generator.flow_retrieval import (
|
|
378
387
|
DEFAULT_EMBEDDINGS_CONFIG,
|
|
@@ -388,7 +397,8 @@ def extract_attrs_for_llm_based_command_generator(
|
|
|
388
397
|
|
|
389
398
|
|
|
390
399
|
def extract_attrs_for_contextual_response_rephraser(
|
|
391
|
-
self: Any,
|
|
400
|
+
self: Any,
|
|
401
|
+
prompt: str,
|
|
392
402
|
) -> Dict[str, Any]:
|
|
393
403
|
from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
|
|
394
404
|
|
|
@@ -396,7 +406,7 @@ def extract_attrs_for_contextual_response_rephraser(
|
|
|
396
406
|
self,
|
|
397
407
|
default_llm_config=DEFAULT_LLM_CONFIG,
|
|
398
408
|
# rephraser is not using embeddings
|
|
399
|
-
default_embeddings_config=
|
|
409
|
+
default_embeddings_config=None,
|
|
400
410
|
)
|
|
401
411
|
|
|
402
412
|
return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
|
|
@@ -412,7 +422,7 @@ def extract_attrs_for_create_history(
|
|
|
412
422
|
self,
|
|
413
423
|
default_llm_config=DEFAULT_LLM_CONFIG,
|
|
414
424
|
# rephraser is not using embeddings
|
|
415
|
-
default_embeddings_config=
|
|
425
|
+
default_embeddings_config=None,
|
|
416
426
|
)
|
|
417
427
|
|
|
418
428
|
|
|
@@ -614,6 +624,15 @@ def extract_attrs_for_du_print_test_results(
|
|
|
614
624
|
OUTPUT_NAMES_OF_FAILED_TESTS: json.dumps(
|
|
615
625
|
test_suite_result.names_of_failed_tests
|
|
616
626
|
),
|
|
627
|
+
OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR: (
|
|
628
|
+
test_suite_result.f1_score[KEY_COMMANDS_F1_MACRO]
|
|
629
|
+
),
|
|
630
|
+
OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR: (
|
|
631
|
+
test_suite_result.f1_score[KEY_COMMANDS_F1_MICRO]
|
|
632
|
+
),
|
|
633
|
+
OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR: (
|
|
634
|
+
test_suite_result.f1_score[KEY_COMMANDS_F1_WEIGHTED]
|
|
635
|
+
),
|
|
617
636
|
}
|
|
618
637
|
if test_suite_result.command_metrics:
|
|
619
638
|
for (
|
|
@@ -638,12 +657,27 @@ def extract_attrs_for_du_print_test_results(
|
|
|
638
657
|
for key, value in test_suite_result.llm_config.items():
|
|
639
658
|
attributes_dict[f"llm_config_0_{key}"] = value
|
|
640
659
|
|
|
641
|
-
for
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
660
|
+
for component_name, latency_metric in test_suite_result.latency_metrics.items():
|
|
661
|
+
for metric_name, metric_value in latency_metric.items():
|
|
662
|
+
attributes_dict[
|
|
663
|
+
f"{OUTPUT_LATENCY_METRICS}_{component_name}_{metric_name}"
|
|
664
|
+
] = metric_value
|
|
665
|
+
for (
|
|
666
|
+
component_name,
|
|
667
|
+
prompt_token_metric,
|
|
668
|
+
) in test_suite_result.prompt_token_metrics.items():
|
|
669
|
+
for metric_name, metric_value in prompt_token_metric.items():
|
|
670
|
+
attributes_dict[
|
|
671
|
+
f"{OUTPUT_PROMPT_TOKEN_METRICS}_{component_name}_{metric_name}"
|
|
672
|
+
] = metric_value
|
|
673
|
+
for (
|
|
674
|
+
component_name,
|
|
675
|
+
completion_token_metric,
|
|
676
|
+
) in test_suite_result.completion_token_metrics.items():
|
|
677
|
+
for metric_name, metric_value in completion_token_metric.items():
|
|
678
|
+
attributes_dict[
|
|
679
|
+
f"{OUTPUT_COMPLETION_TOKEN_METRICS}_{component_name}_{metric_name}"
|
|
680
|
+
] = metric_value
|
|
647
681
|
|
|
648
682
|
return attributes_dict
|
|
649
683
|
|
|
@@ -721,7 +755,7 @@ def extract_attrs_for_intentless_policy_find_closest_response(
|
|
|
721
755
|
|
|
722
756
|
|
|
723
757
|
def extract_attrs_for_intentless_policy_generate_llm_answer(
|
|
724
|
-
self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
|
|
758
|
+
self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
|
|
725
759
|
) -> Dict[str, Any]:
|
|
726
760
|
from rasa.core.policies.intentless_policy import (
|
|
727
761
|
DEFAULT_EMBEDDINGS_CONFIG,
|
|
@@ -738,17 +772,16 @@ def extract_attrs_for_intentless_policy_generate_llm_answer(
|
|
|
738
772
|
|
|
739
773
|
|
|
740
774
|
def extract_attrs_for_enterprise_search_generate_llm_answer(
|
|
741
|
-
self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
|
|
775
|
+
self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
|
|
742
776
|
) -> Dict[str, Any]:
|
|
743
777
|
from rasa.core.policies.enterprise_search_policy import (
|
|
744
|
-
DEFAULT_EMBEDDINGS_CONFIG,
|
|
745
778
|
DEFAULT_LLM_CONFIG,
|
|
746
779
|
)
|
|
747
780
|
|
|
748
781
|
attributes = extract_llm_config(
|
|
749
782
|
self,
|
|
750
783
|
default_llm_config=DEFAULT_LLM_CONFIG,
|
|
751
|
-
default_embeddings_config=
|
|
784
|
+
default_embeddings_config=None,
|
|
752
785
|
)
|
|
753
786
|
|
|
754
787
|
return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
|
|
@@ -982,18 +982,18 @@ def _instrument_command_processor_module(tracer_provider: TracerProvider) -> Non
|
|
|
982
982
|
"validate_state_of_commands",
|
|
983
983
|
attribute_extractors.extract_attrs_for_validate_state_of_commands,
|
|
984
984
|
)
|
|
985
|
-
_instrument_function(
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
)
|
|
991
|
-
_instrument_function(
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
)
|
|
985
|
+
# _instrument_function(
|
|
986
|
+
# tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
|
|
987
|
+
# COMMAND_PROCESSOR_MODULE_NAME,
|
|
988
|
+
# "clean_up_commands",
|
|
989
|
+
# attribute_extractors.extract_attrs_for_clean_up_commands,
|
|
990
|
+
# )
|
|
991
|
+
# _instrument_function(
|
|
992
|
+
# tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
|
|
993
|
+
# COMMAND_PROCESSOR_MODULE_NAME,
|
|
994
|
+
# "remove_duplicated_set_slots",
|
|
995
|
+
# attribute_extractors.extract_attrs_for_remove_duplicated_set_slots,
|
|
996
|
+
# )
|
|
997
997
|
mark_module_as_instrumented(COMMAND_PROCESSOR_MODULE_NAME)
|
|
998
998
|
|
|
999
999
|
|
|
@@ -121,13 +121,12 @@ def _instrument_generate_answer(
|
|
|
121
121
|
response_examples: List[str],
|
|
122
122
|
conversation_samples: List[str],
|
|
123
123
|
history: str,
|
|
124
|
-
sender_id: str,
|
|
125
124
|
) -> Optional[str]:
|
|
126
125
|
with tracer.start_as_current_span(
|
|
127
126
|
f"{self.__class__.__name__}.{fn.__name__}"
|
|
128
127
|
) as span:
|
|
129
128
|
llm_response = await fn(
|
|
130
|
-
self, response_examples, conversation_samples, history
|
|
129
|
+
self, response_examples, conversation_samples, history
|
|
131
130
|
)
|
|
132
131
|
span.set_attributes(
|
|
133
132
|
{
|
rasa/utils/licensing.py
CHANGED
|
@@ -539,18 +539,3 @@ async def _count_conversations_after(
|
|
|
539
539
|
return 0
|
|
540
540
|
|
|
541
541
|
return await tracker_store.count_conversations(after_timestamp=after_timestamp)
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
def get_human_readable_licence_owner() -> str:
|
|
545
|
-
user_id = "unknown"
|
|
546
|
-
|
|
547
|
-
try:
|
|
548
|
-
retrieved_license = retrieve_license_from_env()
|
|
549
|
-
if retrieved_license:
|
|
550
|
-
decoded = License.decode(retrieved_license)
|
|
551
|
-
if decoded:
|
|
552
|
-
user_id = (
|
|
553
|
-
f"{decoded.company or ''}_{decoded.email or ''}_{decoded.jti or ''}"
|
|
554
|
-
)
|
|
555
|
-
finally:
|
|
556
|
-
return user_id
|
rasa/validator.py
CHANGED
|
@@ -48,7 +48,7 @@ from rasa.shared.core.domain import (
|
|
|
48
48
|
Domain,
|
|
49
49
|
)
|
|
50
50
|
from rasa.shared.core.events import ActionExecuted, ActiveLoop, UserUttered
|
|
51
|
-
from rasa.shared.core.flows import
|
|
51
|
+
from rasa.shared.core.flows import FlowsList
|
|
52
52
|
from rasa.shared.core.flows.constants import KEY_NAME, KEY_TRANSLATION
|
|
53
53
|
from rasa.shared.core.flows.flow_step_links import IfFlowStepLink
|
|
54
54
|
from rasa.shared.core.flows.steps.action import ActionFlowStep
|
|
@@ -56,7 +56,6 @@ from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
|
|
|
56
56
|
from rasa.shared.core.flows.steps.link import LinkFlowStep
|
|
57
57
|
from rasa.shared.core.flows.steps.set_slots import SetSlotsFlowStep
|
|
58
58
|
from rasa.shared.core.flows.utils import (
|
|
59
|
-
ALL_LABEL,
|
|
60
59
|
get_duplicate_slot_persistence_config_error_message,
|
|
61
60
|
get_invalid_slot_persistence_config_error_message,
|
|
62
61
|
warn_deprecated_collect_step_config,
|
|
@@ -1281,7 +1280,6 @@ class Validator:
|
|
|
1281
1280
|
self.verify_unique_flows(),
|
|
1282
1281
|
self.verify_predicates(),
|
|
1283
1282
|
self.verify_slot_persistence_configuration(),
|
|
1284
|
-
self.verify_digression_configuration(),
|
|
1285
1283
|
]
|
|
1286
1284
|
|
|
1287
1285
|
all_good = all(flow_validation_conditions)
|
|
@@ -1830,126 +1828,6 @@ class Validator:
|
|
|
1830
1828
|
|
|
1831
1829
|
return all_good
|
|
1832
1830
|
|
|
1833
|
-
def verify_digression_configuration(self) -> bool:
|
|
1834
|
-
"""Validates the digression configuration in flows."""
|
|
1835
|
-
all_good = True
|
|
1836
|
-
|
|
1837
|
-
for flow in self.flows.underlying_flows:
|
|
1838
|
-
all_good = self._validate_ask_confirm_digressions(flow, all_good)
|
|
1839
|
-
all_good = self._validate_block_digressions(flow, all_good)
|
|
1840
|
-
|
|
1841
|
-
return all_good
|
|
1842
|
-
|
|
1843
|
-
def _validate_ask_confirm_digressions(self, flow: Flow, all_good: bool) -> bool:
|
|
1844
|
-
"""Validates the ask_confirm_digressions configuration in a flow."""
|
|
1845
|
-
for flow_id in flow.ask_confirm_digressions:
|
|
1846
|
-
if flow_id == ALL_LABEL:
|
|
1847
|
-
continue
|
|
1848
|
-
if flow_id not in self.flows.flow_ids:
|
|
1849
|
-
structlogger.error(
|
|
1850
|
-
"validator.verify_digression_configuration.ask_confirm_digressions",
|
|
1851
|
-
flow=flow.id,
|
|
1852
|
-
event_info=(
|
|
1853
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1854
|
-
f"`ask_confirm_digressions` configuration of flow "
|
|
1855
|
-
f"'{flow.id}', but it is not found in the "
|
|
1856
|
-
f"flows file. Please make sure that the flow id is correct."
|
|
1857
|
-
),
|
|
1858
|
-
)
|
|
1859
|
-
all_good = False
|
|
1860
|
-
|
|
1861
|
-
if flow_id in flow.block_digressions:
|
|
1862
|
-
structlogger.error(
|
|
1863
|
-
"validator.verify_digression_configuration.overlap_digressions",
|
|
1864
|
-
flow=flow.id,
|
|
1865
|
-
event_info=(
|
|
1866
|
-
f"The flow '{flow_id}' is listed in both the "
|
|
1867
|
-
f"`ask_confirm_digressions` and `block_digressions` "
|
|
1868
|
-
f"configuration of flow '{flow.id}'. "
|
|
1869
|
-
f"Please make sure that the flow id is not listed in both "
|
|
1870
|
-
f"configurations."
|
|
1871
|
-
),
|
|
1872
|
-
)
|
|
1873
|
-
all_good = False
|
|
1874
|
-
|
|
1875
|
-
for step in flow.get_collect_steps():
|
|
1876
|
-
for flow_id in step.ask_confirm_digressions:
|
|
1877
|
-
if flow_id == ALL_LABEL:
|
|
1878
|
-
continue
|
|
1879
|
-
|
|
1880
|
-
if flow_id not in self.flows.flow_ids:
|
|
1881
|
-
structlogger.error(
|
|
1882
|
-
"validator.verify_digression_configuration.ask_confirm_digressions",
|
|
1883
|
-
flow=flow.id,
|
|
1884
|
-
step_id=step.id,
|
|
1885
|
-
event_info=(
|
|
1886
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1887
|
-
f"`ask_confirm_digressions` configuration of step "
|
|
1888
|
-
f"'{step.id}' in flow '{flow.id}', but it is "
|
|
1889
|
-
f"not found in the flows file. "
|
|
1890
|
-
f"Please make sure that the flow id is correct."
|
|
1891
|
-
),
|
|
1892
|
-
)
|
|
1893
|
-
all_good = False
|
|
1894
|
-
|
|
1895
|
-
if flow_id in step.block_digressions:
|
|
1896
|
-
structlogger.error(
|
|
1897
|
-
"validator.verify_digression_configuration.overlap_digressions",
|
|
1898
|
-
flow=flow.id,
|
|
1899
|
-
step_id=step.id,
|
|
1900
|
-
event_info=(
|
|
1901
|
-
f"The flow '{flow_id}' is listed in both the "
|
|
1902
|
-
f"`ask_confirm_digressions` and `block_digressions` "
|
|
1903
|
-
f"configuration of step '{step.id}' in flow '{flow.id}'. "
|
|
1904
|
-
f"Please make sure that the flow id is not listed in both "
|
|
1905
|
-
f"configurations."
|
|
1906
|
-
),
|
|
1907
|
-
)
|
|
1908
|
-
all_good = False
|
|
1909
|
-
|
|
1910
|
-
return all_good
|
|
1911
|
-
|
|
1912
|
-
def _validate_block_digressions(self, flow: Flow, all_good: bool) -> bool:
|
|
1913
|
-
"""Validates the block_digressions configuration in a flow."""
|
|
1914
|
-
for flow_id in flow.block_digressions:
|
|
1915
|
-
if flow_id == ALL_LABEL:
|
|
1916
|
-
continue
|
|
1917
|
-
|
|
1918
|
-
if flow_id not in self.flows.flow_ids:
|
|
1919
|
-
structlogger.error(
|
|
1920
|
-
"validator.verify_digression_configuration.block_digressions",
|
|
1921
|
-
flow=flow.id,
|
|
1922
|
-
event_info=(
|
|
1923
|
-
f"The flow '{flow_id}' is listed in the `block_digressions` "
|
|
1924
|
-
f"configuration of flow '{flow.id}', but it is not found "
|
|
1925
|
-
f"in the flows file. Please make sure that the flow id "
|
|
1926
|
-
f"is correct."
|
|
1927
|
-
),
|
|
1928
|
-
)
|
|
1929
|
-
all_good = False
|
|
1930
|
-
|
|
1931
|
-
for step in flow.get_collect_steps():
|
|
1932
|
-
for flow_id in step.block_digressions:
|
|
1933
|
-
if flow_id == ALL_LABEL:
|
|
1934
|
-
continue
|
|
1935
|
-
|
|
1936
|
-
if flow_id not in self.flows.flow_ids:
|
|
1937
|
-
structlogger.error(
|
|
1938
|
-
"validator.verify_digression_configuration.block_digressions",
|
|
1939
|
-
flow=flow.id,
|
|
1940
|
-
step_id=step.id,
|
|
1941
|
-
event_info=(
|
|
1942
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1943
|
-
f"`block_digressions` configuration of step "
|
|
1944
|
-
f"'{step.id}' in flow '{flow.id}', but it is "
|
|
1945
|
-
f"not found in the flows file. "
|
|
1946
|
-
f"Please make sure that the flow id is correct."
|
|
1947
|
-
),
|
|
1948
|
-
)
|
|
1949
|
-
all_good = False
|
|
1950
|
-
|
|
1951
|
-
return all_good
|
|
1952
|
-
|
|
1953
1831
|
def verify_slot_validation(self) -> bool:
|
|
1954
1832
|
"""Validates the slot validation configuration in the domain file."""
|
|
1955
1833
|
all_good = True
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.13.0.dev2
|
|
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
|
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
6
6
|
Author: Rasa Technologies GmbH
|
|
@@ -63,7 +63,6 @@ Requires-Dist: keras (==2.14.0)
|
|
|
63
63
|
Requires-Dist: langchain (>=0.2.17,<0.3.0)
|
|
64
64
|
Requires-Dist: langchain-community (>=0.2.19,<0.3.0)
|
|
65
65
|
Requires-Dist: langcodes (>=3.5.0,<4.0.0)
|
|
66
|
-
Requires-Dist: langfuse (>=2.60.2,<2.61.0)
|
|
67
66
|
Requires-Dist: litellm (>=1.52.6,<1.53.0)
|
|
68
67
|
Requires-Dist: matplotlib (>=3.7,<3.8)
|
|
69
68
|
Requires-Dist: mattermostwrapper (>=2.2,<2.3)
|
|
@@ -101,7 +100,7 @@ Requires-Dist: pyyaml (>=6.0)
|
|
|
101
100
|
Requires-Dist: qdrant-client (>=1.9.1,<1.10.0)
|
|
102
101
|
Requires-Dist: questionary (>=1.10.0,<2.1.0)
|
|
103
102
|
Requires-Dist: randomname (>=0.2.1,<0.3.0)
|
|
104
|
-
Requires-Dist: rasa-sdk (==3.
|
|
103
|
+
Requires-Dist: rasa-sdk (==3.13.0.dev1)
|
|
105
104
|
Requires-Dist: redis (>=4.6.0,<6.0)
|
|
106
105
|
Requires-Dist: regex (>=2024.7.24,<2024.8.0)
|
|
107
106
|
Requires-Dist: requests (>=2.32.3,<2.33.0)
|