rasa-pro 3.10.14__py3-none-any.whl → 3.10.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.
- rasa/api.py +1 -1
- rasa/cli/e2e_test.py +1 -1
- rasa/cli/evaluate.py +1 -1
- rasa/cli/llm_fine_tuning.py +1 -1
- rasa/cli/run.py +1 -1
- rasa/cli/train.py +9 -0
- rasa/cli/x.py +1 -1
- rasa/core/policies/enterprise_search_policy.py +13 -1
- rasa/core/policies/flows/flow_executor.py +18 -8
- rasa/core/policies/intentless_policy.py +13 -1
- rasa/core/processor.py +7 -5
- rasa/core/training/interactive.py +1 -1
- rasa/core/utils.py +11 -1
- rasa/dialogue_understanding/coexistence/llm_based_router.py +8 -1
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +8 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +8 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +11 -1
- rasa/e2e_test/assertions.py +48 -6
- rasa/e2e_test/e2e_test_runner.py +4 -3
- rasa/engine/validation.py +78 -1
- rasa/model_training.py +1 -0
- rasa/shared/constants.py +5 -0
- rasa/shared/utils/llm.py +28 -7
- rasa/version.py +1 -1
- {rasa_pro-3.10.14.dist-info → rasa_pro-3.10.15.dist-info}/METADATA +1 -1
- {rasa_pro-3.10.14.dist-info → rasa_pro-3.10.15.dist-info}/RECORD +30 -30
- {rasa_pro-3.10.14.dist-info → rasa_pro-3.10.15.dist-info}/NOTICE +0 -0
- {rasa_pro-3.10.14.dist-info → rasa_pro-3.10.15.dist-info}/WHEEL +0 -0
- {rasa_pro-3.10.14.dist-info → rasa_pro-3.10.15.dist-info}/entry_points.txt +0 -0
rasa/api.py
CHANGED
|
@@ -41,7 +41,7 @@ def run(
|
|
|
41
41
|
from rasa.shared.constants import DOCS_BASE_URL
|
|
42
42
|
from rasa.shared.utils.cli import print_warning
|
|
43
43
|
|
|
44
|
-
_endpoints = AvailableEndpoints.
|
|
44
|
+
_endpoints = AvailableEndpoints.get_instance(endpoints)
|
|
45
45
|
|
|
46
46
|
if not connector and not credentials:
|
|
47
47
|
connector = "rest"
|
rasa/cli/e2e_test.py
CHANGED
|
@@ -164,7 +164,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
164
164
|
args.endpoints = rasa.cli.utils.get_validated_path(
|
|
165
165
|
args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
166
166
|
)
|
|
167
|
-
endpoints = AvailableEndpoints.
|
|
167
|
+
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
168
168
|
|
|
169
169
|
# Ignore all endpoints apart from action server, model, nlu and nlg
|
|
170
170
|
# to ensure InMemoryTrackerStore is being used instead of production
|
rasa/cli/evaluate.py
CHANGED
|
@@ -217,6 +217,6 @@ def _create_tracker_loader(
|
|
|
217
217
|
A MarkerTrackerLoader object configured with the specified strategy against
|
|
218
218
|
the configured tracker store.
|
|
219
219
|
"""
|
|
220
|
-
endpoints = AvailableEndpoints.
|
|
220
|
+
endpoints = AvailableEndpoints.get_instance(endpoint_config)
|
|
221
221
|
tracker_store = TrackerStore.create(endpoints.tracker_store, domain=domain)
|
|
222
222
|
return MarkerTrackerLoader(tracker_store, strategy, count, seed)
|
rasa/cli/llm_fine_tuning.py
CHANGED
|
@@ -352,7 +352,7 @@ def get_valid_endpoints(endpoints_file: str) -> AvailableEndpoints:
|
|
|
352
352
|
validated_endpoints_file = rasa.cli.utils.get_validated_path(
|
|
353
353
|
endpoints_file, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
354
354
|
)
|
|
355
|
-
endpoints = AvailableEndpoints.
|
|
355
|
+
endpoints = AvailableEndpoints.get_instance(validated_endpoints_file)
|
|
356
356
|
|
|
357
357
|
# Ignore all endpoints apart from action server, model, nlu and nlg
|
|
358
358
|
# to ensure InMemoryTrackerStore is being used instead of production
|
rasa/cli/run.py
CHANGED
|
@@ -106,7 +106,7 @@ def run(args: argparse.Namespace) -> None:
|
|
|
106
106
|
return
|
|
107
107
|
|
|
108
108
|
# start server if model server is configured
|
|
109
|
-
endpoints = AvailableEndpoints.
|
|
109
|
+
endpoints = AvailableEndpoints.get_instance(args.endpoints)
|
|
110
110
|
model_server = endpoints.model if endpoints and endpoints.model else None
|
|
111
111
|
if model_server is not None:
|
|
112
112
|
rasa_run(**vars(args))
|
rasa/cli/train.py
CHANGED
|
@@ -14,8 +14,10 @@ import rasa.core.utils
|
|
|
14
14
|
import rasa.utils.common
|
|
15
15
|
from rasa.api import train as train_all
|
|
16
16
|
from rasa.cli import SubParsersAction
|
|
17
|
+
from rasa.core import ContextualResponseRephraser
|
|
17
18
|
from rasa.core.nlg.generator import NaturalLanguageGenerator
|
|
18
19
|
from rasa.core.train import do_compare_training
|
|
20
|
+
from rasa.engine.validation import validate_api_type_config_key_usage
|
|
19
21
|
from rasa.nlu.persistor import get_persistor
|
|
20
22
|
from rasa.shared.constants import (
|
|
21
23
|
CONFIG_MANDATORY_KEYS,
|
|
@@ -23,6 +25,7 @@ from rasa.shared.constants import (
|
|
|
23
25
|
CONFIG_MANDATORY_KEYS_NLU,
|
|
24
26
|
DEFAULT_DATA_PATH,
|
|
25
27
|
DEFAULT_DOMAIN_PATHS,
|
|
28
|
+
LLM_CONFIG_KEY,
|
|
26
29
|
)
|
|
27
30
|
from rasa.shared.exceptions import RasaException
|
|
28
31
|
from rasa.shared.importers.importer import TrainingDataImporter
|
|
@@ -75,6 +78,12 @@ def add_subparser(
|
|
|
75
78
|
def _check_nlg_endpoint_validity(endpoint: Union[Path, str]) -> None:
|
|
76
79
|
try:
|
|
77
80
|
endpoints = rasa.core.utils.read_endpoints_from_path(endpoint)
|
|
81
|
+
if endpoints.nlg is not None:
|
|
82
|
+
validate_api_type_config_key_usage(
|
|
83
|
+
endpoints.nlg.kwargs,
|
|
84
|
+
LLM_CONFIG_KEY,
|
|
85
|
+
ContextualResponseRephraser.__name__,
|
|
86
|
+
)
|
|
78
87
|
NaturalLanguageGenerator.create(endpoints.nlg)
|
|
79
88
|
except Exception as e:
|
|
80
89
|
structlogger.error(
|
rasa/cli/x.py
CHANGED
|
@@ -179,7 +179,7 @@ def run_in_enterprise_connection_mode(args: argparse.Namespace) -> None:
|
|
|
179
179
|
print_success("Starting a Rasa server in Rasa Enterprise connection mode... 🚀")
|
|
180
180
|
|
|
181
181
|
credentials_path, endpoints_path = _get_credentials_and_endpoints_paths(args)
|
|
182
|
-
endpoints = AvailableEndpoints.
|
|
182
|
+
endpoints = AvailableEndpoints.get_instance(endpoints_path)
|
|
183
183
|
|
|
184
184
|
_rasa_service(args, endpoints, None, credentials_path)
|
|
185
185
|
|
|
@@ -76,6 +76,7 @@ from rasa.shared.utils.llm import (
|
|
|
76
76
|
sanitize_message_for_prompt,
|
|
77
77
|
tracker_as_readable_transcript,
|
|
78
78
|
try_instantiate_llm_client,
|
|
79
|
+
try_instantiate_embedder,
|
|
79
80
|
)
|
|
80
81
|
from rasa.core.information_retrieval.faiss import FAISS_Store
|
|
81
82
|
from rasa.core.information_retrieval import (
|
|
@@ -661,6 +662,18 @@ class EnterpriseSearchPolicy(Policy):
|
|
|
661
662
|
execution_context: ExecutionContext,
|
|
662
663
|
**kwargs: Any,
|
|
663
664
|
) -> "EnterpriseSearchPolicy":
|
|
665
|
+
try_instantiate_llm_client(
|
|
666
|
+
config.get(LLM_CONFIG_KEY),
|
|
667
|
+
DEFAULT_LLM_CONFIG,
|
|
668
|
+
"enterprise_search_policy.load",
|
|
669
|
+
EnterpriseSearchPolicy.__name__,
|
|
670
|
+
)
|
|
671
|
+
try_instantiate_embedder(
|
|
672
|
+
config.get(EMBEDDINGS_CONFIG_KEY),
|
|
673
|
+
DEFAULT_EMBEDDINGS_CONFIG,
|
|
674
|
+
"enterprise_search_policy.load",
|
|
675
|
+
EnterpriseSearchPolicy.__name__,
|
|
676
|
+
)
|
|
664
677
|
"""Loads a trained policy (see parent class for full docstring)."""
|
|
665
678
|
prompt_template = None
|
|
666
679
|
store_type = config.get(VECTOR_STORE_PROPERTY, {}).get(
|
|
@@ -695,7 +708,6 @@ class EnterpriseSearchPolicy(Policy):
|
|
|
695
708
|
logger.warning(
|
|
696
709
|
"enterprise_search_policy.load.failed", error=e, resource=resource.name
|
|
697
710
|
)
|
|
698
|
-
|
|
699
711
|
return cls(
|
|
700
712
|
config,
|
|
701
713
|
model_storage,
|
|
@@ -484,7 +484,8 @@ def validate_collect_step(
|
|
|
484
484
|
step: CollectInformationFlowStep,
|
|
485
485
|
stack: DialogueStack,
|
|
486
486
|
available_actions: List[str],
|
|
487
|
-
slots: Dict[
|
|
487
|
+
slots: Dict[str, Slot],
|
|
488
|
+
flow_name: str,
|
|
488
489
|
) -> bool:
|
|
489
490
|
"""Validate that a collect step can be executed.
|
|
490
491
|
|
|
@@ -507,12 +508,12 @@ def validate_collect_step(
|
|
|
507
508
|
slot_name=step.collect,
|
|
508
509
|
)
|
|
509
510
|
|
|
510
|
-
cancel_flow_and_push_internal_error(stack)
|
|
511
|
+
cancel_flow_and_push_internal_error(stack, flow_name)
|
|
511
512
|
|
|
512
513
|
return False
|
|
513
514
|
|
|
514
515
|
|
|
515
|
-
def cancel_flow_and_push_internal_error(stack: DialogueStack) -> None:
|
|
516
|
+
def cancel_flow_and_push_internal_error(stack: DialogueStack, flow_name: str) -> None:
|
|
516
517
|
"""Cancel the top user flow and push the internal error pattern."""
|
|
517
518
|
top_frame = stack.top()
|
|
518
519
|
|
|
@@ -524,7 +525,7 @@ def cancel_flow_and_push_internal_error(stack: DialogueStack) -> None:
|
|
|
524
525
|
canceled_frames = CancelFlowCommand.select_canceled_frames(stack)
|
|
525
526
|
stack.push(
|
|
526
527
|
CancelPatternFlowStackFrame(
|
|
527
|
-
canceled_name=
|
|
528
|
+
canceled_name=flow_name,
|
|
528
529
|
canceled_frames=canceled_frames,
|
|
529
530
|
)
|
|
530
531
|
)
|
|
@@ -536,6 +537,7 @@ def validate_custom_slot_mappings(
|
|
|
536
537
|
stack: DialogueStack,
|
|
537
538
|
tracker: DialogueStateTracker,
|
|
538
539
|
available_actions: List[str],
|
|
540
|
+
flow_name: str,
|
|
539
541
|
) -> bool:
|
|
540
542
|
"""Validate a slot with custom mappings.
|
|
541
543
|
|
|
@@ -556,7 +558,7 @@ def validate_custom_slot_mappings(
|
|
|
556
558
|
action=step.collect_action,
|
|
557
559
|
collect=step.collect,
|
|
558
560
|
)
|
|
559
|
-
cancel_flow_and_push_internal_error(stack)
|
|
561
|
+
cancel_flow_and_push_internal_error(stack, flow_name)
|
|
560
562
|
return False
|
|
561
563
|
|
|
562
564
|
return True
|
|
@@ -596,7 +598,12 @@ def run_step(
|
|
|
596
598
|
|
|
597
599
|
if isinstance(step, CollectInformationFlowStep):
|
|
598
600
|
return _run_collect_information_step(
|
|
599
|
-
available_actions,
|
|
601
|
+
available_actions,
|
|
602
|
+
initial_events,
|
|
603
|
+
stack,
|
|
604
|
+
step,
|
|
605
|
+
tracker,
|
|
606
|
+
flow.readable_name(),
|
|
600
607
|
)
|
|
601
608
|
|
|
602
609
|
elif isinstance(step, ActionFlowStep):
|
|
@@ -716,15 +723,18 @@ def _run_collect_information_step(
|
|
|
716
723
|
stack: DialogueStack,
|
|
717
724
|
step: CollectInformationFlowStep,
|
|
718
725
|
tracker: DialogueStateTracker,
|
|
726
|
+
flow_name: str,
|
|
719
727
|
) -> FlowStepResult:
|
|
720
|
-
is_step_valid = validate_collect_step(
|
|
728
|
+
is_step_valid = validate_collect_step(
|
|
729
|
+
step, stack, available_actions, tracker.slots, flow_name
|
|
730
|
+
)
|
|
721
731
|
|
|
722
732
|
if not is_step_valid:
|
|
723
733
|
# if we return any other FlowStepResult, the assistant will stay silent
|
|
724
734
|
# instead of triggering the internal error pattern
|
|
725
735
|
return ContinueFlowWithNextStep(events=initial_events)
|
|
726
736
|
is_mapping_valid = validate_custom_slot_mappings(
|
|
727
|
-
step, stack, tracker, available_actions
|
|
737
|
+
step, stack, tracker, available_actions, flow_name
|
|
728
738
|
)
|
|
729
739
|
|
|
730
740
|
if not is_mapping_valid:
|
|
@@ -71,6 +71,7 @@ from rasa.shared.utils.llm import (
|
|
|
71
71
|
sanitize_message_for_prompt,
|
|
72
72
|
tracker_as_readable_transcript,
|
|
73
73
|
try_instantiate_llm_client,
|
|
74
|
+
try_instantiate_embedder,
|
|
74
75
|
)
|
|
75
76
|
from rasa.utils.ml_utils import (
|
|
76
77
|
extract_ai_response_examples,
|
|
@@ -918,6 +919,18 @@ class IntentlessPolicy(Policy):
|
|
|
918
919
|
**kwargs: Any,
|
|
919
920
|
) -> "IntentlessPolicy":
|
|
920
921
|
"""Loads a trained policy (see parent class for full docstring)."""
|
|
922
|
+
try_instantiate_llm_client(
|
|
923
|
+
config.get(LLM_CONFIG_KEY),
|
|
924
|
+
DEFAULT_LLM_CONFIG,
|
|
925
|
+
"intentless_policy.load",
|
|
926
|
+
IntentlessPolicy.__name__,
|
|
927
|
+
)
|
|
928
|
+
try_instantiate_embedder(
|
|
929
|
+
config.get(EMBEDDINGS_CONFIG_KEY),
|
|
930
|
+
DEFAULT_EMBEDDINGS_CONFIG,
|
|
931
|
+
"intentless_policy.load",
|
|
932
|
+
IntentlessPolicy.__name__,
|
|
933
|
+
)
|
|
921
934
|
responses_docsearch = None
|
|
922
935
|
samples_docsearch = None
|
|
923
936
|
prompt_template = None
|
|
@@ -943,7 +956,6 @@ class IntentlessPolicy(Policy):
|
|
|
943
956
|
structlogger.warning(
|
|
944
957
|
"intentless_policy.load.failed", error=e, resource_name=resource.name
|
|
945
958
|
)
|
|
946
|
-
|
|
947
959
|
return cls(
|
|
948
960
|
config,
|
|
949
961
|
model_storage,
|
rasa/core/processor.py
CHANGED
|
@@ -1254,11 +1254,13 @@ class MessageProcessor:
|
|
|
1254
1254
|
tracker.update(events[0])
|
|
1255
1255
|
return self.should_predict_another_action(action.name())
|
|
1256
1256
|
except Exception:
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
"
|
|
1260
|
-
"
|
|
1261
|
-
"
|
|
1257
|
+
structlogger.exception(
|
|
1258
|
+
"rasa.core.processor.run_action.exception",
|
|
1259
|
+
event_info=f"Encountered an exception while "
|
|
1260
|
+
f"running action '{action.name()}'."
|
|
1261
|
+
f"Bot will continue, but the actions events are lost. "
|
|
1262
|
+
f"Please check the logs of your action server for "
|
|
1263
|
+
f"more information.",
|
|
1262
1264
|
)
|
|
1263
1265
|
events = []
|
|
1264
1266
|
|
|
@@ -1688,7 +1688,7 @@ def run_interactive_learning(
|
|
|
1688
1688
|
p = None
|
|
1689
1689
|
|
|
1690
1690
|
app = run.configure_app(port=port, conversation_id="default", enable_api=True)
|
|
1691
|
-
endpoints = AvailableEndpoints.
|
|
1691
|
+
endpoints = AvailableEndpoints.get_instance(server_args.get("endpoints"))
|
|
1692
1692
|
|
|
1693
1693
|
# before_server_start handlers make sure the agent is loaded before the
|
|
1694
1694
|
# interactive learning IO starts
|
rasa/core/utils.py
CHANGED
|
@@ -171,6 +171,8 @@ def is_limit_reached(num_messages: int, limit: Optional[int]) -> bool:
|
|
|
171
171
|
class AvailableEndpoints:
|
|
172
172
|
"""Collection of configured endpoints."""
|
|
173
173
|
|
|
174
|
+
_instance = None
|
|
175
|
+
|
|
174
176
|
@classmethod
|
|
175
177
|
def read_endpoints(cls, endpoint_file: Text) -> "AvailableEndpoints":
|
|
176
178
|
"""Read the different endpoints from a yaml file."""
|
|
@@ -217,6 +219,14 @@ class AvailableEndpoints:
|
|
|
217
219
|
self.event_broker = event_broker
|
|
218
220
|
self.vector_store = vector_store
|
|
219
221
|
|
|
222
|
+
@classmethod
|
|
223
|
+
def get_instance(cls, endpoint_file: Optional[Text] = None) -> "AvailableEndpoints":
|
|
224
|
+
"""Get the singleton instance of AvailableEndpoints."""
|
|
225
|
+
# Ensure that the instance is initialized only once.
|
|
226
|
+
if cls._instance is None:
|
|
227
|
+
cls._instance = cls.read_endpoints(endpoint_file)
|
|
228
|
+
return cls._instance
|
|
229
|
+
|
|
220
230
|
|
|
221
231
|
def read_endpoints_from_path(
|
|
222
232
|
endpoints_path: Optional[Union[Path, Text]] = None,
|
|
@@ -234,7 +244,7 @@ def read_endpoints_from_path(
|
|
|
234
244
|
endpoints_config_path = cli_utils.get_validated_path(
|
|
235
245
|
endpoints_path, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
236
246
|
)
|
|
237
|
-
return AvailableEndpoints.
|
|
247
|
+
return AvailableEndpoints.get_instance(endpoints_config_path)
|
|
238
248
|
|
|
239
249
|
|
|
240
250
|
def _lock_store_is_multi_worker_compatible(
|
|
@@ -161,7 +161,14 @@ class LLMBasedRouter(GraphComponent):
|
|
|
161
161
|
"llm_based_router.load.failed", error=e, resource=resource.name
|
|
162
162
|
)
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
router = cls(config, model_storage, resource, prompt_template=prompt_template)
|
|
165
|
+
try_instantiate_llm_client(
|
|
166
|
+
router.config.get(LLM_CONFIG_KEY),
|
|
167
|
+
DEFAULT_LLM_CONFIG,
|
|
168
|
+
"llm_based_router.load",
|
|
169
|
+
LLMBasedRouter.__name__,
|
|
170
|
+
)
|
|
171
|
+
return router
|
|
165
172
|
|
|
166
173
|
@classmethod
|
|
167
174
|
def create(
|
|
@@ -50,6 +50,7 @@ from rasa.shared.utils.llm import (
|
|
|
50
50
|
USER,
|
|
51
51
|
get_prompt_template,
|
|
52
52
|
allowed_values_for_slot,
|
|
53
|
+
try_instantiate_embedder,
|
|
53
54
|
)
|
|
54
55
|
|
|
55
56
|
DEFAULT_FLOW_DOCUMENT_TEMPLATE = importlib.resources.read_text(
|
|
@@ -142,6 +143,12 @@ class FlowRetrieval:
|
|
|
142
143
|
"""Load flow retrieval with previously populated FAISS vector store."""
|
|
143
144
|
# initialize base flow retrieval
|
|
144
145
|
flow_retrieval = FlowRetrieval(config, model_storage, resource)
|
|
146
|
+
try_instantiate_embedder(
|
|
147
|
+
flow_retrieval.config.get(EMBEDDINGS_CONFIG_KEY),
|
|
148
|
+
DEFAULT_EMBEDDINGS_CONFIG,
|
|
149
|
+
"flow_retrieval.load",
|
|
150
|
+
FlowRetrieval.__name__,
|
|
151
|
+
)
|
|
145
152
|
# load vector store
|
|
146
153
|
vector_store = cls._load_vector_store(
|
|
147
154
|
flow_retrieval.config, model_storage, resource
|
|
@@ -24,6 +24,7 @@ from rasa.dialogue_understanding.generator.constants import (
|
|
|
24
24
|
LLM_CONFIG_KEY,
|
|
25
25
|
USER_INPUT_CONFIG_KEY,
|
|
26
26
|
FLOW_RETRIEVAL_KEY,
|
|
27
|
+
DEFAULT_LLM_CONFIG,
|
|
27
28
|
)
|
|
28
29
|
from rasa.dialogue_understanding.generator.flow_retrieval import FlowRetrieval
|
|
29
30
|
from rasa.dialogue_understanding.generator.llm_based_command_generator import (
|
|
@@ -53,6 +54,7 @@ from rasa.shared.utils.llm import (
|
|
|
53
54
|
tracker_as_readable_transcript,
|
|
54
55
|
sanitize_message_for_prompt,
|
|
55
56
|
allowed_values_for_slot,
|
|
57
|
+
try_instantiate_llm_client,
|
|
56
58
|
)
|
|
57
59
|
|
|
58
60
|
# multistep template keys
|
|
@@ -141,6 +143,12 @@ class MultiStepLLMCommandGenerator(LLMBasedCommandGenerator):
|
|
|
141
143
|
prompts = cls._load_prompt_templates(model_storage, resource)
|
|
142
144
|
# init base command generator
|
|
143
145
|
command_generator = cls(config, model_storage, resource, prompts)
|
|
146
|
+
try_instantiate_llm_client(
|
|
147
|
+
command_generator.config.get(LLM_CONFIG_KEY),
|
|
148
|
+
DEFAULT_LLM_CONFIG,
|
|
149
|
+
"multi_step_llm_command_generator.load",
|
|
150
|
+
MultiStepLLMCommandGenerator.__name__,
|
|
151
|
+
)
|
|
144
152
|
# load flow retrieval if enabled
|
|
145
153
|
if command_generator.enabled_flow_retrieval:
|
|
146
154
|
command_generator.flow_retrieval = cls.load_flow_retrival(
|
|
@@ -21,6 +21,7 @@ from rasa.dialogue_understanding.generator.constants import (
|
|
|
21
21
|
LLM_CONFIG_KEY,
|
|
22
22
|
USER_INPUT_CONFIG_KEY,
|
|
23
23
|
FLOW_RETRIEVAL_KEY,
|
|
24
|
+
DEFAULT_LLM_CONFIG,
|
|
24
25
|
)
|
|
25
26
|
from rasa.dialogue_understanding.generator.flow_retrieval import (
|
|
26
27
|
FlowRetrieval,
|
|
@@ -48,6 +49,7 @@ from rasa.shared.utils.llm import (
|
|
|
48
49
|
get_prompt_template,
|
|
49
50
|
tracker_as_readable_transcript,
|
|
50
51
|
sanitize_message_for_prompt,
|
|
52
|
+
try_instantiate_llm_client,
|
|
51
53
|
)
|
|
52
54
|
from rasa.utils.log_utils import log_llm
|
|
53
55
|
|
|
@@ -136,6 +138,12 @@ class SingleStepLLMCommandGenerator(LLMBasedCommandGenerator):
|
|
|
136
138
|
)
|
|
137
139
|
# init base command generator
|
|
138
140
|
command_generator = cls(config, model_storage, resource, prompt_template)
|
|
141
|
+
try_instantiate_llm_client(
|
|
142
|
+
command_generator.config.get(LLM_CONFIG_KEY),
|
|
143
|
+
DEFAULT_LLM_CONFIG,
|
|
144
|
+
"single_step_llm_command_generator.load",
|
|
145
|
+
SingleStepLLMCommandGenerator.__name__,
|
|
146
|
+
)
|
|
139
147
|
# load flow retrieval if enabled
|
|
140
148
|
if command_generator.enabled_flow_retrieval:
|
|
141
149
|
command_generator.flow_retrieval = cls.load_flow_retrival(
|
|
@@ -35,6 +35,7 @@ class AggregateTestStatsCalculator:
|
|
|
35
35
|
self.test_cases = test_cases
|
|
36
36
|
|
|
37
37
|
self.failed_assertion_set: Set["Assertion"] = set()
|
|
38
|
+
self.failed_test_cases_without_assertion_failure: Set[str] = set()
|
|
38
39
|
self.passed_count_mapping = {
|
|
39
40
|
subclass_type: 0
|
|
40
41
|
for subclass_type in _get_all_assertion_subclasses().keys()
|
|
@@ -89,8 +90,14 @@ class AggregateTestStatsCalculator:
|
|
|
89
90
|
passed_test_case_names = [
|
|
90
91
|
passed.test_case.name for passed in self.passed_results
|
|
91
92
|
]
|
|
93
|
+
# We filter out test cases that failed without an assertion failure
|
|
94
|
+
filtered_test_cases = [
|
|
95
|
+
test_case
|
|
96
|
+
for test_case in self.test_cases
|
|
97
|
+
if test_case.name not in self.failed_test_cases_without_assertion_failure
|
|
98
|
+
]
|
|
92
99
|
|
|
93
|
-
for test_case in
|
|
100
|
+
for test_case in filtered_test_cases:
|
|
94
101
|
if test_case.name in passed_test_case_names:
|
|
95
102
|
for step in test_case.steps:
|
|
96
103
|
if step.assertions is None:
|
|
@@ -118,6 +125,9 @@ class AggregateTestStatsCalculator:
|
|
|
118
125
|
"no_assertion_failure_in_failed_result",
|
|
119
126
|
test_case=failed.test_case.name,
|
|
120
127
|
)
|
|
128
|
+
self.failed_test_cases_without_assertion_failure.add(
|
|
129
|
+
failed.test_case.name
|
|
130
|
+
)
|
|
121
131
|
continue
|
|
122
132
|
|
|
123
133
|
self.failed_assertion_set.add(failed.assertion_failure.assertion)
|
rasa/e2e_test/assertions.py
CHANGED
|
@@ -452,6 +452,11 @@ class ActionExecutedAssertion(Assertion):
|
|
|
452
452
|
**kwargs: Any,
|
|
453
453
|
) -> Tuple[Optional[AssertionFailure], Optional[Event]]:
|
|
454
454
|
"""Run the action executed assertion on the given events for that user turn."""
|
|
455
|
+
step_index = kwargs.get("step_index")
|
|
456
|
+
original_turn_events, turn_events = _get_turn_events_based_on_step_index(
|
|
457
|
+
step_index, turn_events, prior_events
|
|
458
|
+
)
|
|
459
|
+
|
|
455
460
|
try:
|
|
456
461
|
matching_event = next(
|
|
457
462
|
event
|
|
@@ -464,7 +469,7 @@ class ActionExecutedAssertion(Assertion):
|
|
|
464
469
|
error_message += assertion_order_error_message
|
|
465
470
|
|
|
466
471
|
return self._generate_assertion_failure(
|
|
467
|
-
error_message, prior_events,
|
|
472
|
+
error_message, prior_events, original_turn_events, self.line
|
|
468
473
|
)
|
|
469
474
|
|
|
470
475
|
return None, matching_event
|
|
@@ -519,6 +524,11 @@ class SlotWasSetAssertion(Assertion):
|
|
|
519
524
|
"""Run the slot_was_set assertion on the given events for that user turn."""
|
|
520
525
|
matching_event = None
|
|
521
526
|
|
|
527
|
+
step_index = kwargs.get("step_index")
|
|
528
|
+
original_turn_events, turn_events = _get_turn_events_based_on_step_index(
|
|
529
|
+
step_index, turn_events, prior_events
|
|
530
|
+
)
|
|
531
|
+
|
|
522
532
|
for slot in self.slots:
|
|
523
533
|
matching_events = [
|
|
524
534
|
event
|
|
@@ -557,7 +567,7 @@ class SlotWasSetAssertion(Assertion):
|
|
|
557
567
|
error_message += assertion_order_error_message
|
|
558
568
|
|
|
559
569
|
return self._generate_assertion_failure(
|
|
560
|
-
error_message, prior_events,
|
|
570
|
+
error_message, prior_events, original_turn_events, slot.line
|
|
561
571
|
)
|
|
562
572
|
|
|
563
573
|
return None, matching_event
|
|
@@ -595,6 +605,11 @@ class SlotWasNotSetAssertion(Assertion):
|
|
|
595
605
|
"""Run the slot_was_not_set assertion on the given events for that user turn."""
|
|
596
606
|
matching_event = None
|
|
597
607
|
|
|
608
|
+
step_index = kwargs.get("step_index")
|
|
609
|
+
original_turn_events, turn_events = _get_turn_events_based_on_step_index(
|
|
610
|
+
step_index, turn_events, prior_events
|
|
611
|
+
)
|
|
612
|
+
|
|
598
613
|
for slot in self.slots:
|
|
599
614
|
matching_events = [
|
|
600
615
|
event
|
|
@@ -630,7 +645,7 @@ class SlotWasNotSetAssertion(Assertion):
|
|
|
630
645
|
error_message += assertion_order_error_message
|
|
631
646
|
|
|
632
647
|
return self._generate_assertion_failure(
|
|
633
|
-
error_message, prior_events,
|
|
648
|
+
error_message, prior_events, original_turn_events, slot.line
|
|
634
649
|
)
|
|
635
650
|
|
|
636
651
|
return None, matching_event
|
|
@@ -723,6 +738,11 @@ class BotUtteredAssertion(Assertion):
|
|
|
723
738
|
"""Run the bot_uttered assertion on the given events for that user turn."""
|
|
724
739
|
matching_event = None
|
|
725
740
|
|
|
741
|
+
step_index = kwargs.get("step_index")
|
|
742
|
+
original_turn_events, turn_events = _get_turn_events_based_on_step_index(
|
|
743
|
+
step_index, turn_events, prior_events
|
|
744
|
+
)
|
|
745
|
+
|
|
726
746
|
if self.utter_name is not None:
|
|
727
747
|
try:
|
|
728
748
|
matching_event = next(
|
|
@@ -736,7 +756,7 @@ class BotUtteredAssertion(Assertion):
|
|
|
736
756
|
error_message += assertion_order_error_message
|
|
737
757
|
|
|
738
758
|
return self._generate_assertion_failure(
|
|
739
|
-
error_message, prior_events,
|
|
759
|
+
error_message, prior_events, original_turn_events, self.line
|
|
740
760
|
)
|
|
741
761
|
|
|
742
762
|
if self.text_matches is not None:
|
|
@@ -756,7 +776,7 @@ class BotUtteredAssertion(Assertion):
|
|
|
756
776
|
error_message += assertion_order_error_message
|
|
757
777
|
|
|
758
778
|
return self._generate_assertion_failure(
|
|
759
|
-
error_message, prior_events,
|
|
779
|
+
error_message, prior_events, original_turn_events, self.line
|
|
760
780
|
)
|
|
761
781
|
|
|
762
782
|
if self.buttons:
|
|
@@ -772,7 +792,7 @@ class BotUtteredAssertion(Assertion):
|
|
|
772
792
|
)
|
|
773
793
|
error_message += assertion_order_error_message
|
|
774
794
|
return self._generate_assertion_failure(
|
|
775
|
-
error_message, prior_events,
|
|
795
|
+
error_message, prior_events, original_turn_events, self.line
|
|
776
796
|
)
|
|
777
797
|
|
|
778
798
|
return None, matching_event
|
|
@@ -1179,3 +1199,25 @@ def _find_matching_generative_events(turn_events: List[Event]) -> List[BotUttere
|
|
|
1179
1199
|
and event.metadata.get(UTTER_SOURCE_METADATA_KEY)
|
|
1180
1200
|
in ELIGIBLE_UTTER_SOURCE_METADATA
|
|
1181
1201
|
]
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
def _get_turn_events_based_on_step_index(
|
|
1205
|
+
step_index: int, turn_events: List[Event], prior_events: List[Event]
|
|
1206
|
+
) -> Tuple[List[Event], List[Event]]:
|
|
1207
|
+
"""Get the turn events based on the step index.
|
|
1208
|
+
|
|
1209
|
+
For the first step, we need to include the prior events as well
|
|
1210
|
+
in the same user turn. For the subsequent steps, we only need the
|
|
1211
|
+
events that follow the user uttered event on which the tracker
|
|
1212
|
+
was originally sliced by.
|
|
1213
|
+
|
|
1214
|
+
Returns:
|
|
1215
|
+
List[Event]: The copy of turn_events
|
|
1216
|
+
List[Event]: The turn events based on the step index
|
|
1217
|
+
|
|
1218
|
+
"""
|
|
1219
|
+
original_turn_events = turn_events[:]
|
|
1220
|
+
if step_index == 0:
|
|
1221
|
+
return original_turn_events, prior_events + turn_events
|
|
1222
|
+
|
|
1223
|
+
return original_turn_events, turn_events
|
rasa/e2e_test/e2e_test_runner.py
CHANGED
|
@@ -136,7 +136,7 @@ class E2ETestRunner:
|
|
|
136
136
|
return turns
|
|
137
137
|
|
|
138
138
|
tracker = await self.agent.processor.fetch_tracker_with_initial_session(
|
|
139
|
-
sender_id
|
|
139
|
+
sender_id, output_channel=collector
|
|
140
140
|
)
|
|
141
141
|
# turn -1 i used to contain events that happen during
|
|
142
142
|
# the start of the session and before the first user message
|
|
@@ -442,7 +442,7 @@ class E2ETestRunner:
|
|
|
442
442
|
assertion_failure_found = False
|
|
443
443
|
input_metadata = input_metadata if input_metadata else []
|
|
444
444
|
|
|
445
|
-
for step in test_case.steps:
|
|
445
|
+
for index, step in enumerate(test_case.steps):
|
|
446
446
|
if not step.assertions:
|
|
447
447
|
structlogger.debug(
|
|
448
448
|
"e2e_test_runner.run_assertions.no_assertions.skipping_step",
|
|
@@ -490,6 +490,7 @@ class E2ETestRunner:
|
|
|
490
490
|
assertion_order_error_message=assertion_order_error_msg,
|
|
491
491
|
llm_judge_config=self.llm_judge_config,
|
|
492
492
|
step_text=step.text,
|
|
493
|
+
step_index=index,
|
|
493
494
|
)
|
|
494
495
|
|
|
495
496
|
if assertion_failure:
|
|
@@ -826,7 +827,7 @@ class E2ETestRunner:
|
|
|
826
827
|
return
|
|
827
828
|
|
|
828
829
|
tracker = await self.agent.processor.fetch_tracker_with_initial_session(
|
|
829
|
-
sender_id
|
|
830
|
+
sender_id, output_channel=CollectingOutputChannel()
|
|
830
831
|
)
|
|
831
832
|
|
|
832
833
|
for fixture in fixtures:
|
rasa/engine/validation.py
CHANGED
|
@@ -16,6 +16,7 @@ from typing import (
|
|
|
16
16
|
Union,
|
|
17
17
|
TypeVar,
|
|
18
18
|
List,
|
|
19
|
+
Literal,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
22
|
import structlog
|
|
@@ -34,6 +35,7 @@ from rasa.dialogue_understanding.coexistence.constants import (
|
|
|
34
35
|
from rasa.dialogue_understanding.generator import (
|
|
35
36
|
LLMBasedCommandGenerator,
|
|
36
37
|
)
|
|
38
|
+
from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
|
|
37
39
|
from rasa.dialogue_understanding.patterns.chitchat import FLOW_PATTERN_CHITCHAT
|
|
38
40
|
from rasa.engine.constants import RESERVED_PLACEHOLDERS
|
|
39
41
|
from rasa.engine.exceptions import GraphSchemaValidationException
|
|
@@ -47,7 +49,15 @@ from rasa.engine.graph import (
|
|
|
47
49
|
from rasa.engine.storage.resource import Resource
|
|
48
50
|
from rasa.engine.storage.storage import ModelStorage
|
|
49
51
|
from rasa.engine.training.fingerprinting import Fingerprintable
|
|
50
|
-
from rasa.shared.constants import
|
|
52
|
+
from rasa.shared.constants import (
|
|
53
|
+
DOCS_URL_GRAPH_COMPONENTS,
|
|
54
|
+
ROUTE_TO_CALM_SLOT,
|
|
55
|
+
API_TYPE_CONFIG_KEY,
|
|
56
|
+
VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY,
|
|
57
|
+
PROVIDER_CONFIG_KEY,
|
|
58
|
+
LLM_CONFIG_KEY,
|
|
59
|
+
EMBEDDINGS_CONFIG_KEY,
|
|
60
|
+
)
|
|
51
61
|
from rasa.shared.core.constants import ACTION_RESET_ROUTING, ACTION_TRIGGER_CHITCHAT
|
|
52
62
|
from rasa.shared.core.domain import Domain
|
|
53
63
|
from rasa.shared.core.flows import FlowsList, Flow
|
|
@@ -871,3 +881,70 @@ def validate_command_generator_setup(
|
|
|
871
881
|
) -> None:
|
|
872
882
|
schema = model_configuration.predict_schema
|
|
873
883
|
validate_command_generator_exclusivity(schema)
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
def validate_model_client_configuration_setup(config: Dict[str, Any]) -> None:
|
|
887
|
+
"""Validates the model client configuration setup.
|
|
888
|
+
|
|
889
|
+
Validation fails, if
|
|
890
|
+
- the LLM/embeddings provider is defined using 'api_type' key for providers other
|
|
891
|
+
than 'openai' or 'azure'
|
|
892
|
+
|
|
893
|
+
Args:
|
|
894
|
+
config: The config dictionary
|
|
895
|
+
"""
|
|
896
|
+
for outer_key in ["pipeline", "policies"]:
|
|
897
|
+
if outer_key not in config or config[outer_key] is None:
|
|
898
|
+
continue
|
|
899
|
+
|
|
900
|
+
for component_config in config[outer_key]:
|
|
901
|
+
for key in [LLM_CONFIG_KEY, EMBEDDINGS_CONFIG_KEY]:
|
|
902
|
+
validate_api_type_config_key_usage(component_config, key)
|
|
903
|
+
|
|
904
|
+
# as flow retrieval is not a component itself, we need to
|
|
905
|
+
# check it separately
|
|
906
|
+
if (
|
|
907
|
+
FLOW_RETRIEVAL_KEY in component_config
|
|
908
|
+
and EMBEDDINGS_CONFIG_KEY in component_config[FLOW_RETRIEVAL_KEY]
|
|
909
|
+
):
|
|
910
|
+
validate_api_type_config_key_usage(
|
|
911
|
+
component_config[FLOW_RETRIEVAL_KEY],
|
|
912
|
+
EMBEDDINGS_CONFIG_KEY,
|
|
913
|
+
component_config["name"] + "." + FLOW_RETRIEVAL_KEY,
|
|
914
|
+
)
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
def validate_api_type_config_key_usage(
|
|
918
|
+
component_config: Dict[str, Any],
|
|
919
|
+
key: Literal["llm", "embeddings"],
|
|
920
|
+
component_name: Optional[str] = None,
|
|
921
|
+
) -> None:
|
|
922
|
+
"""Validate the LLM/embeddings configuration of a component.
|
|
923
|
+
|
|
924
|
+
Validation fails, if
|
|
925
|
+
- the LLM/embeddings provider is defined using 'api_type' key for providers other
|
|
926
|
+
than 'openai' or 'azure'
|
|
927
|
+
|
|
928
|
+
Args:
|
|
929
|
+
component_config: The config of the component
|
|
930
|
+
key: either 'llm' or 'embeddings'
|
|
931
|
+
component_name: the name of the component
|
|
932
|
+
"""
|
|
933
|
+
if component_config is None or key not in component_config:
|
|
934
|
+
return
|
|
935
|
+
|
|
936
|
+
if API_TYPE_CONFIG_KEY in component_config[key]:
|
|
937
|
+
api_type = component_config[key][API_TYPE_CONFIG_KEY]
|
|
938
|
+
if api_type not in VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY:
|
|
939
|
+
structlogger.error(
|
|
940
|
+
"validation.component.api_type_config_key_invalid",
|
|
941
|
+
event_info=(
|
|
942
|
+
f"You specified '{API_TYPE_CONFIG_KEY}: {api_type}' for "
|
|
943
|
+
f"'{component_name or component_config['name']}', which is not "
|
|
944
|
+
f"allowed. "
|
|
945
|
+
f"The '{API_TYPE_CONFIG_KEY}' key can only be used for the "
|
|
946
|
+
f"following providers: {VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY}. "
|
|
947
|
+
f"For other providers, please use the '{PROVIDER_CONFIG_KEY}' key."
|
|
948
|
+
),
|
|
949
|
+
)
|
|
950
|
+
sys.exit(1)
|
rasa/model_training.py
CHANGED
|
@@ -312,6 +312,7 @@ async def _train_graph(
|
|
|
312
312
|
rasa.engine.validation.validate_coexistance_routing_setup(
|
|
313
313
|
domain, model_configuration, flows
|
|
314
314
|
)
|
|
315
|
+
rasa.engine.validation.validate_model_client_configuration_setup(config)
|
|
315
316
|
rasa.engine.validation.validate_flow_component_dependencies(
|
|
316
317
|
flows, model_configuration
|
|
317
318
|
)
|
rasa/shared/constants.py
CHANGED
|
@@ -213,6 +213,11 @@ AZURE_OPENAI_PROVIDER = "azure"
|
|
|
213
213
|
SELF_HOSTED_PROVIDER = "self-hosted"
|
|
214
214
|
HUGGINGFACE_LOCAL_EMBEDDING_PROVIDER = "huggingface_local"
|
|
215
215
|
|
|
216
|
+
VALID_PROVIDERS_FOR_API_TYPE_CONFIG_KEY = [
|
|
217
|
+
OPENAI_PROVIDER,
|
|
218
|
+
AZURE_OPENAI_PROVIDER,
|
|
219
|
+
]
|
|
220
|
+
|
|
216
221
|
SELF_HOSTED_VLLM_PREFIX = "hosted_vllm"
|
|
217
222
|
SELF_HOSTED_VLLM_API_KEY_ENV_VAR = "HOSTED_VLLM_API_KEY"
|
|
218
223
|
|
rasa/shared/utils/llm.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import sys
|
|
1
2
|
from functools import wraps
|
|
2
3
|
from typing import (
|
|
3
4
|
Any,
|
|
@@ -52,7 +53,6 @@ from rasa.shared.providers.mappings import (
|
|
|
52
53
|
HUGGINGFACE_LOCAL_EMBEDDING_PROVIDER,
|
|
53
54
|
get_client_config_class_from_provider,
|
|
54
55
|
)
|
|
55
|
-
from rasa.shared.utils.cli import print_error_and_exit
|
|
56
56
|
|
|
57
57
|
if TYPE_CHECKING:
|
|
58
58
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
@@ -418,12 +418,33 @@ def try_instantiate_llm_client(
|
|
|
418
418
|
except (ProviderClientValidationError, ValueError) as e:
|
|
419
419
|
structlogger.error(
|
|
420
420
|
f"{log_source_function}.llm_instantiation_failed",
|
|
421
|
-
|
|
421
|
+
event_info=(
|
|
422
|
+
f"Unable to create the LLM client for component - "
|
|
423
|
+
f"{log_source_component}. Please make sure you specified the required "
|
|
424
|
+
f"environment variables and configuration keys."
|
|
425
|
+
),
|
|
422
426
|
error=e,
|
|
423
427
|
)
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
428
|
+
sys.exit(1)
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
def try_instantiate_embedder(
|
|
432
|
+
custom_embeddings_config: Optional[Dict],
|
|
433
|
+
default_embeddings_config: Optional[Dict],
|
|
434
|
+
log_source_function: str,
|
|
435
|
+
log_source_component: str,
|
|
436
|
+
) -> EmbeddingClient:
|
|
437
|
+
"""Validate embeddings configuration."""
|
|
438
|
+
try:
|
|
439
|
+
return embedder_factory(custom_embeddings_config, default_embeddings_config)
|
|
440
|
+
except (ProviderClientValidationError, ValueError) as e:
|
|
441
|
+
structlogger.error(
|
|
442
|
+
f"{log_source_function}.embedder_instantiation_failed",
|
|
443
|
+
event_info=(
|
|
444
|
+
f"Unable to create the Embedding client for component - "
|
|
445
|
+
f"{log_source_component}. Please make sure you specified the required "
|
|
446
|
+
f"environment variables and configuration keys."
|
|
447
|
+
),
|
|
448
|
+
error=e,
|
|
429
449
|
)
|
|
450
|
+
sys.exit(1)
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.10.
|
|
3
|
+
Version: 3.10.15
|
|
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,7 +8,7 @@ rasa/anonymization/anonymization_rule_executor.py,sha256=itRjw5xFjXadSYNX9YRyC9e
|
|
|
8
8
|
rasa/anonymization/anonymization_rule_orchestrator.py,sha256=YJdkk4jVjy6PcCEpJMxUdU3sUoNPFvGe7BpVCvAFMPg,4116
|
|
9
9
|
rasa/anonymization/schemas/config.yml,sha256=EP_af8HctyRT2f6Ywv9khpO58ZdP5_LkPItrXQgdNaU,1158
|
|
10
10
|
rasa/anonymization/utils.py,sha256=y9i2tnlyG5ofNrNYGSCWl17wBYvEmTgw2zgoQ--p-vA,3623
|
|
11
|
-
rasa/api.py,sha256=
|
|
11
|
+
rasa/api.py,sha256=oBLKDMfkSecdfSwiCbyiz27wqo_1NGov6zbEcpYQGBQ,5533
|
|
12
12
|
rasa/cli/__init__.py,sha256=eO5vp9rFCANtbTVU-pxN3iMBKw4p9WRcgzytt9MzinY,115
|
|
13
13
|
rasa/cli/arguments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
rasa/cli/arguments/data.py,sha256=iINyxiRNVNhoNoY1V5jRMHXIrorW_d3k-K94Iw8a52g,3040
|
|
@@ -23,13 +23,13 @@ rasa/cli/arguments/train.py,sha256=CMf6h9oCDYS29UXEdVDuSYCkLJTobURhplmvMW4wlNQ,8
|
|
|
23
23
|
rasa/cli/arguments/visualize.py,sha256=Su0qyXv4bEx5mrteRqEyf-K3JGQ1t2WCXOYlCpGYfAk,861
|
|
24
24
|
rasa/cli/arguments/x.py,sha256=FQkarKvNBtzZ5xrPBhHWk-ZKPgEHvgE5ItwRL1TNR3I,1027
|
|
25
25
|
rasa/cli/data.py,sha256=M33oHv3PCqDx4Gc5ifGmcZoEc6h2_uP8pRIygimjT8w,12695
|
|
26
|
-
rasa/cli/e2e_test.py,sha256=
|
|
27
|
-
rasa/cli/evaluate.py,sha256=
|
|
26
|
+
rasa/cli/e2e_test.py,sha256=guHIeX7qPwv8db4j9zsDG7MQbfUq92xO51u0iOR3eqw,8359
|
|
27
|
+
rasa/cli/evaluate.py,sha256=Wpyhq_8870jNyI4atWBSoiQEeqaRsBzl8EW6IsoXEe8,7946
|
|
28
28
|
rasa/cli/export.py,sha256=60wPKS5513J7PRKZsVeCBrUGOcSizypdjg1iYDWLCMY,8203
|
|
29
29
|
rasa/cli/inspect.py,sha256=LPudl2mmkY8-a8PW28Iq4t3xnurEFduyePFgeKSx0BA,2207
|
|
30
30
|
rasa/cli/interactive.py,sha256=73r_SAdGAwkj214D5rmXyiuB_XDLidiBL3bFUMBo9QI,5974
|
|
31
31
|
rasa/cli/license.py,sha256=oFZU5cQ6CD2DvBgnlss9DgJVHzkSpEVI6eNKlMHgAMM,3565
|
|
32
|
-
rasa/cli/llm_fine_tuning.py,sha256=
|
|
32
|
+
rasa/cli/llm_fine_tuning.py,sha256=nyLb5rSg_wnZFpiMo53H4ftKqbk1WdpntelCbfpyXyE,13213
|
|
33
33
|
rasa/cli/markers.py,sha256=KN0tA69FqwfBGMU82gfoh8mtyTH3LSmuz0V5N4poRcE,2485
|
|
34
34
|
rasa/cli/project_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
rasa/cli/project_templates/calm/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -75,7 +75,7 @@ rasa/cli/project_templates/tutorial/data/flows.yml,sha256=9C23uQYm_JVguQJ7u51U4k
|
|
|
75
75
|
rasa/cli/project_templates/tutorial/data/patterns.yml,sha256=rIO8yjg6QU_l35pjQKFaqsOLpaWDMv4q1FS5O7VCV1Q,304
|
|
76
76
|
rasa/cli/project_templates/tutorial/domain.yml,sha256=DFnifO_0cD6PYKMsF011FoIDN_spaWbnuR7mhsF7dNk,402
|
|
77
77
|
rasa/cli/project_templates/tutorial/endpoints.yml,sha256=Mmjm5KDuyL_46dIe0issP8MKNzESYWU0JyYPWPVlWFw,1479
|
|
78
|
-
rasa/cli/run.py,sha256=
|
|
78
|
+
rasa/cli/run.py,sha256=KTpAq-seXO6r-gDA8jpYX0HDa56SZVNrNWZSSk5PyKw,4253
|
|
79
79
|
rasa/cli/scaffold.py,sha256=Eqv44T7b5cOd2FKLU1tSrAVPKwMfoiUIjc43PtaxJGg,7988
|
|
80
80
|
rasa/cli/shell.py,sha256=wymYOj6jdUON0y7pe-rpRqarWDGaDquU7PRp8knxqHk,4264
|
|
81
81
|
rasa/cli/studio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -85,10 +85,10 @@ rasa/cli/studio/train.py,sha256=ruXA5UkaRbO3femk8w3I2cXKs06-34FYtB_9MKdP6hw,1572
|
|
|
85
85
|
rasa/cli/studio/upload.py,sha256=kdHqrVGsEbbqH5fz_HusWwJEycB31SHaPlXer8lXAE0,2069
|
|
86
86
|
rasa/cli/telemetry.py,sha256=ZywhlOpp0l2Yz9oEcOGA2ej3SEkSTisKPpBhn_fS7tc,3538
|
|
87
87
|
rasa/cli/test.py,sha256=Ub7Cm9rFQ_tkB310jPYzVwU0Di88Z7IE0nLi1o-aYbA,8901
|
|
88
|
-
rasa/cli/train.py,sha256=
|
|
88
|
+
rasa/cli/train.py,sha256=_fQi7Sx15LGDyJDV20FJJ2oDZoPGHBfV8xf2t5Kzkpk,10298
|
|
89
89
|
rasa/cli/utils.py,sha256=Q4WFdSYrqQvMY2nZY4i2P-vBimUh_cS08KEN-PGkJlg,15662
|
|
90
90
|
rasa/cli/visualize.py,sha256=YmRAATAfxHpgE8_PknGyM-oIujwICNzVftTzz6iLNNc,1256
|
|
91
|
-
rasa/cli/x.py,sha256=
|
|
91
|
+
rasa/cli/x.py,sha256=qJtNheYwdxxwZl-M2KcEbCk8lzWVGMfI6em-5-Xj05w,6825
|
|
92
92
|
rasa/constants.py,sha256=XZYjc2dDN2q3ixchLfRRNGAqxD2uL5-z_ZYoqJwLgxM,1309
|
|
93
93
|
rasa/core/__init__.py,sha256=DYHLve7F1yQBVOZTA63efVIwLiULMuihOfdpzw1j0os,457
|
|
94
94
|
rasa/core/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -294,22 +294,22 @@ rasa/core/nlg/response.py,sha256=aHpy9BgjO7ub6v-sVPiQqutUA_7-UD1l3DJGVeQyp4k,588
|
|
|
294
294
|
rasa/core/nlg/summarize.py,sha256=JO6VCfM_RnU0QX8Us42YkNOxC0ESKV1xcVH_sCW27ZU,2108
|
|
295
295
|
rasa/core/policies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
296
296
|
rasa/core/policies/ensemble.py,sha256=AjNOEy2Iubbe-LdKaoFUXG8ch6yPrg3bTvcTcAPmeOs,12959
|
|
297
|
-
rasa/core/policies/enterprise_search_policy.py,sha256=
|
|
297
|
+
rasa/core/policies/enterprise_search_policy.py,sha256=U4vPSdODWEY6BkNxXKPXiH4yqMn8ERrvc5G-J0Kfdb0,31666
|
|
298
298
|
rasa/core/policies/enterprise_search_prompt_template.jinja2,sha256=dCS_seyBGxMQoMsOjjvPp0dd31OSzZCJSZeev1FJK5Q,1187
|
|
299
299
|
rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2,sha256=vRQBs3q13UmvRRgqA8-DmRtM7tqZP2ngwMVJ4gy7lE0,3302
|
|
300
300
|
rasa/core/policies/flow_policy.py,sha256=wGb1l_59cGM9ZaexSIK5uXFi618739oNfLOxx2FC0_Y,7490
|
|
301
301
|
rasa/core/policies/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
302
302
|
rasa/core/policies/flows/flow_exceptions.py,sha256=_FQuN-cerQDM1pivce9bz4zylh5UYkljvYS1gjDukHI,1527
|
|
303
|
-
rasa/core/policies/flows/flow_executor.py,sha256=
|
|
303
|
+
rasa/core/policies/flows/flow_executor.py,sha256=DNO_kUdisI93XIY9-QtYpqCp7faxEpkIqhcfFLkaets,25690
|
|
304
304
|
rasa/core/policies/flows/flow_step_result.py,sha256=agjPrD6lahGSe2ViO5peBeoMdI9ngVGRSgtytgxmJmg,1360
|
|
305
|
-
rasa/core/policies/intentless_policy.py,sha256=
|
|
305
|
+
rasa/core/policies/intentless_policy.py,sha256=Yc-kivB2yzbIUKD76TTnwKLQCl949UUERlcMdyz_MUU,35552
|
|
306
306
|
rasa/core/policies/intentless_prompt_template.jinja2,sha256=KhIL3cruMmkxhrs5oVbqgSvK6ZiN_6TQ_jXrgtEB-ZY,677
|
|
307
307
|
rasa/core/policies/memoization.py,sha256=XoRxUdYUGRfO47tAEyc5k5pUgt38a4fipO336EU5Vdc,19466
|
|
308
308
|
rasa/core/policies/policy.py,sha256=HeVtIaV0dA1QcAG3vjdn-4g7-oUEJPL4u01ETJt78YA,27464
|
|
309
309
|
rasa/core/policies/rule_policy.py,sha256=YNDPZUZkpKFCvZwKe1kSfP6LQnDL9CQ6JU69JRwdmWw,50729
|
|
310
310
|
rasa/core/policies/ted_policy.py,sha256=_DHiDH5Upx1yFNzMXBA3SGdHBRfsitTLlr7howUHPoo,87750
|
|
311
311
|
rasa/core/policies/unexpected_intent_policy.py,sha256=5pGe9EMS-NLHIDDhqY6KCH_Kv7_TGMzSbe_GsjuKH1w,39649
|
|
312
|
-
rasa/core/processor.py,sha256
|
|
312
|
+
rasa/core/processor.py,sha256=2bxD28CXcmsBuxDxXmYzz-e6GFsQv1j5FiNkm5wRyBY,54535
|
|
313
313
|
rasa/core/run.py,sha256=s32pZE3B1uKIs20xIbSty0HxeQ9One63_8NeCODwpQE,11050
|
|
314
314
|
rasa/core/secrets_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
315
315
|
rasa/core/secrets_manager/constants.py,sha256=jVhtn_2PN2LQVq-FkeBEipztCQPYSVQq4_n2xq0wfoY,1051
|
|
@@ -323,16 +323,16 @@ rasa/core/train.py,sha256=WLx0qMS3mNV3RsGk4TFLbZg25QkxNIAKsPNj_p-HT2A,3521
|
|
|
323
323
|
rasa/core/training/__init__.py,sha256=Hu_kfZAp0uBBLyaXlt4sOR6k5XSsgI8LRDqiOr6rFs8,3213
|
|
324
324
|
rasa/core/training/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
325
325
|
rasa/core/training/converters/responses_prefix_converter.py,sha256=5daXmnDAGjNvG4EXKO42jcR1hsr1HSxuHjn9j1V3Bfo,3879
|
|
326
|
-
rasa/core/training/interactive.py,sha256=
|
|
326
|
+
rasa/core/training/interactive.py,sha256=lk1f9klcTrWaN39nvPJEJ4762QVfmLHFL44Av01UbbQ,60343
|
|
327
327
|
rasa/core/training/story_conflict.py,sha256=34Sj-GlhVTWva7a_Mk-wdm7zfEw_rlCcPHE35r1dGIc,13593
|
|
328
328
|
rasa/core/training/training.py,sha256=Ci5s2DXiz4-j7ldLVpHRCKPnMBAJOhvc2t4ofUxhbqA,3067
|
|
329
|
-
rasa/core/utils.py,sha256=
|
|
329
|
+
rasa/core/utils.py,sha256=dKu46SiZ28all7V24uSjxjJJcqlkEGVCZapeQma1b4c,11362
|
|
330
330
|
rasa/core/visualize.py,sha256=rCtg9I1T2RsJRAoQI7czIwT7fH_P-jO5LliNu_FjsQE,2125
|
|
331
331
|
rasa/dialogue_understanding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
332
|
rasa/dialogue_understanding/coexistence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
333
333
|
rasa/dialogue_understanding/coexistence/constants.py,sha256=RpgLKMG4s7AgII0fRV0siS0Zh2QVI0OVRunhgm4q_j4,94
|
|
334
334
|
rasa/dialogue_understanding/coexistence/intent_based_router.py,sha256=3Pf7ZpmQnJWlaehAVZBSR9B1oWoR0NK7Ll0pLMCovDc,7609
|
|
335
|
-
rasa/dialogue_understanding/coexistence/llm_based_router.py,sha256=
|
|
335
|
+
rasa/dialogue_understanding/coexistence/llm_based_router.py,sha256=zM-fQJgBnYddk-cKwy0v6BIIJNM0fCWPScq9k6fHTyU,10260
|
|
336
336
|
rasa/dialogue_understanding/coexistence/router_template.jinja2,sha256=CHWFreN0sv1EbPh-hf5AlCt3zxy2_llX1Pdn9Q11Y18,357
|
|
337
337
|
rasa/dialogue_understanding/commands/__init__.py,sha256=B_1q6p2l1TOfIcmggSzXc0iETZ1RvTUSFwuQhPmRjtQ,2004
|
|
338
338
|
rasa/dialogue_understanding/commands/can_not_handle_command.py,sha256=2sNnIo1jZ2UEadkBdEWmDasm2tBES59lzvFcf0iY51U,2235
|
|
@@ -358,17 +358,17 @@ rasa/dialogue_understanding/generator/__init__.py,sha256=Ykeb2wQ1DuiUWAWO0hLIPST
|
|
|
358
358
|
rasa/dialogue_understanding/generator/command_generator.py,sha256=woJ4-59Iarugyxy0fT0zM0QnF8el8m2bBSpy-9Gh8U0,11945
|
|
359
359
|
rasa/dialogue_understanding/generator/constants.py,sha256=yh4mAiIINkDcZs_xApEjMoMn7pFm3xhFmFF3DjStTco,680
|
|
360
360
|
rasa/dialogue_understanding/generator/flow_document_template.jinja2,sha256=f4H6vVd-_nX_RtutMh1xD3ZQE_J2OyuPHAtiltfiAPY,253
|
|
361
|
-
rasa/dialogue_understanding/generator/flow_retrieval.py,sha256=
|
|
361
|
+
rasa/dialogue_understanding/generator/flow_retrieval.py,sha256=mSqXDz2DPl3Law-Smw7C3x3li85wfj8nkj6R_3Fw30w,16403
|
|
362
362
|
rasa/dialogue_understanding/generator/llm_based_command_generator.py,sha256=Aktu_gdxAIQowfQ9KBcS2w3R9Hilc2ehLPB89ek9mVs,16627
|
|
363
363
|
rasa/dialogue_understanding/generator/llm_command_generator.py,sha256=P1LA0eJxf33GKzN_baUWq1P9KNwYCvKZR-N-Z4zzdjA,2459
|
|
364
364
|
rasa/dialogue_understanding/generator/multi_step/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
365
365
|
rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2,sha256=Y0m673tAML3cFPaLM-urMXDsBYUUcXIw9YUpkAhGUuA,2933
|
|
366
366
|
rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2,sha256=8l93_QBKBYnqLICVdiTu5ejZDE8F36BU8-qwba0px44,1927
|
|
367
|
-
rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py,sha256=
|
|
367
|
+
rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py,sha256=Gvnr1hcrwF_4vvHsvIH5Au0S2g1-RxSirvhQuXXZIFE,31864
|
|
368
368
|
rasa/dialogue_understanding/generator/nlu_command_adapter.py,sha256=_mltSp6JzB6tYmhxjTVxyjOzorO7-Poj2nLpHQrDsQs,9202
|
|
369
369
|
rasa/dialogue_understanding/generator/single_step/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
370
370
|
rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2,sha256=qVTuas5XgAv2M_hsihyXl-wAnBDEpg_uhVvNrR5m-h0,3751
|
|
371
|
-
rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py,sha256=
|
|
371
|
+
rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py,sha256=fSvfcFAOh9g6Vh_vmO1RPAi5sYDgLMeVE084qfod8QA,16329
|
|
372
372
|
rasa/dialogue_understanding/patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
373
373
|
rasa/dialogue_understanding/patterns/cancel.py,sha256=IQ4GVHNnNCqwKRLlAqBtLsgolcbPPnHsHdb3aOAFhEs,3868
|
|
374
374
|
rasa/dialogue_understanding/patterns/cannot_handle.py,sha256=pg0zJHl-hDBnl6y9IyxZzW57yuMdfD8xI8eiK6EVrG8,1406
|
|
@@ -399,8 +399,8 @@ rasa/dialogue_understanding/stack/frames/pattern_frame.py,sha256=EVrYWv5dCP7XTvN
|
|
|
399
399
|
rasa/dialogue_understanding/stack/frames/search_frame.py,sha256=rJ9og28k_udUIjP-2Z5xeb_2T5HvCzwDCnxVG9K7lws,728
|
|
400
400
|
rasa/dialogue_understanding/stack/utils.py,sha256=ysH6-IeMwNnKbF1__uMlq6I8zaGXFdMEpw1iYdEz4kA,7650
|
|
401
401
|
rasa/e2e_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
402
|
-
rasa/e2e_test/aggregate_test_stats_calculator.py,sha256=
|
|
403
|
-
rasa/e2e_test/assertions.py,sha256=
|
|
402
|
+
rasa/e2e_test/aggregate_test_stats_calculator.py,sha256=XMI7t5xEP7Mo-F8cCCZx2w5ckUKa5sDvyitl6bk6hc8,4924
|
|
403
|
+
rasa/e2e_test/assertions.py,sha256=9_1TlhBCCI0y3cTFNWQkWKluHS9kQ_Itvas6basA5YU,40936
|
|
404
404
|
rasa/e2e_test/assertions_schema.yml,sha256=0li9NpY1MY7Zic_4AhXpKbStmzgFyAw0JbSMGDkyGMo,2489
|
|
405
405
|
rasa/e2e_test/constants.py,sha256=9VLGcPU-oUXseblI2pcYQifLTLC-c2dGmiEJ_feWgLw,972
|
|
406
406
|
rasa/e2e_test/e2e_config.py,sha256=9FKZOSgbKvcw9KwDnBcYSzXldSlYD4YGqqT0cvfqMks,7188
|
|
@@ -410,7 +410,7 @@ rasa/e2e_test/e2e_test_converter.py,sha256=VxIx7uk36HzLIyEumJiR6G6-CyyqkV_lYoX-X
|
|
|
410
410
|
rasa/e2e_test/e2e_test_converter_prompt.jinja2,sha256=EMy-aCd7jLARHmwAuZUGT5ABnNHjR872_pexRIMGA7c,2791
|
|
411
411
|
rasa/e2e_test/e2e_test_coverage_report.py,sha256=Cv5bMtoOC240231YMNHz10ibSqm_UD1-eskQVdjPUsw,11326
|
|
412
412
|
rasa/e2e_test/e2e_test_result.py,sha256=9LlH6vIQeK_dxDwMQ5RzlNHoxCNXpWC9S527-ch8kUA,1649
|
|
413
|
-
rasa/e2e_test/e2e_test_runner.py,sha256=
|
|
413
|
+
rasa/e2e_test/e2e_test_runner.py,sha256=ruMldKVFsJI1FjGUyi6HlnpTDYtHOf01-9wHqcEvSUA,44145
|
|
414
414
|
rasa/e2e_test/e2e_test_schema.yml,sha256=0deWjuKRHNo6e_LSCnUoiw9NLIYf6dj1-zFPl_AqLYA,5632
|
|
415
415
|
rasa/e2e_test/pykwalify_extensions.py,sha256=OGYKIKYJXd2S0NrWknoQuijyBQaE-oMLkfV_eMRkGSM,1331
|
|
416
416
|
rasa/e2e_test/stub_custom_action.py,sha256=teq8c5I6IuUsFX4lPdeBLY3j0SLSMCC95KmKx7GrE8I,2369
|
|
@@ -442,7 +442,7 @@ rasa/engine/training/components.py,sha256=ZOSTbPEHth545q41B9geXKdEtIYZ3PaZdwSXrA
|
|
|
442
442
|
rasa/engine/training/fingerprinting.py,sha256=lY4wHte37470MR6sBaERt0WT9NF06NUGTX9bRAh-W_4,2006
|
|
443
443
|
rasa/engine/training/graph_trainer.py,sha256=fCnFZAv7UNxFjaLRY0MxPd18d3mO9It4Uk1Joq7Q3Mc,10636
|
|
444
444
|
rasa/engine/training/hooks.py,sha256=u7HQXDJJT4pBzQUaIIfuM3YEreGjRdp0IEv6XUrRFtk,5469
|
|
445
|
-
rasa/engine/validation.py,sha256=
|
|
445
|
+
rasa/engine/validation.py,sha256=mrE32GzeKbnH-NYLsViKyemth_WilmPieriKCrlx6G8,36512
|
|
446
446
|
rasa/env.py,sha256=zLzQMkATVIZj6s4C7RsLLOLT8g6-Q96m5iBaHW_mEA8,480
|
|
447
447
|
rasa/exceptions.py,sha256=acZiGDb5zC1ZGv1oBPHImBeRKxyHOA_mW6N8e9nOEaU,2116
|
|
448
448
|
rasa/graph_components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -483,7 +483,7 @@ rasa/markers/upload.py,sha256=Ot1s_O-CEIB9c4CKUlfOldiJo92pdqxFUHOPCU7E_NU,2518
|
|
|
483
483
|
rasa/markers/validate.py,sha256=YypXKRS87xxrMMEz9HpAQzYJUwg0OPbczMXBRNjlJq4,709
|
|
484
484
|
rasa/model.py,sha256=GH1-N6Po3gL3nwfa9eGoN2bMRNMrn4f3mi17-osW3T0,3491
|
|
485
485
|
rasa/model_testing.py,sha256=h0QUpJu6p_TDse3aHjCfYwI6OGH47b3Iuo5Ot0HQADM,14959
|
|
486
|
-
rasa/model_training.py,sha256=
|
|
486
|
+
rasa/model_training.py,sha256=HrOTDdsVH4BRsJeeu_Lg8HiBrqQq30cGTG5myCJAy3M,20708
|
|
487
487
|
rasa/nlu/__init__.py,sha256=D0IYuTK_ZQ_F_9xsy0bXxVCAtU62Fzvp8S7J9tmfI_c,123
|
|
488
488
|
rasa/nlu/classifiers/__init__.py,sha256=Qvrf7_rfiMxm2Vt2fClb56R3QFExf7WPdFdL-AOvgsk,118
|
|
489
489
|
rasa/nlu/classifiers/classifier.py,sha256=9fm1mORuFf1vowYIXmqE9yLRKdSC4nGQW7UqNZQipKY,133
|
|
@@ -546,7 +546,7 @@ rasa/nlu/utils/spacy_utils.py,sha256=pBvsCVKVuZ3b2Pjn-XuOVZ6lzZu9Voc2R4N1VczwtCM
|
|
|
546
546
|
rasa/plugin.py,sha256=H_OZcHy_U3eAK-JHr43TSxcPqS0JEGcZkFvmumeeJEs,2670
|
|
547
547
|
rasa/server.py,sha256=pUdhi5dkhzEj4bngj2bTUKJohepjpY-aZ4MGKHYZRH0,57775
|
|
548
548
|
rasa/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
549
|
-
rasa/shared/constants.py,sha256=
|
|
549
|
+
rasa/shared/constants.py,sha256=VU-x4UaXozMn05WaDjg-eD9GYpzjOmf_PTIo1hPRrQ8,9422
|
|
550
550
|
rasa/shared/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
551
551
|
rasa/shared/core/command_payload_reader.py,sha256=Vhiop9LWFawaEruRifBBrVmoEJ-fj1Tli1wBvsYu2_I,3563
|
|
552
552
|
rasa/shared/core/constants.py,sha256=U1q0-oGMQ7aDsP5p6H4CRaBi-H-KZpm2IXpTzIbaEv8,5169
|
|
@@ -657,7 +657,7 @@ rasa/shared/utils/cli.py,sha256=bJpkf0VzzmtpmBnDnIl7SgvrntnBuaJQMHBXHm2WxcA,2916
|
|
|
657
657
|
rasa/shared/utils/common.py,sha256=Z0sfpDosVHLhGDY-72lGVTPWsNC64z3HWSLdnZRG7yE,10057
|
|
658
658
|
rasa/shared/utils/constants.py,sha256=ZNQu0RHM_7Q4A2hn6pD8XlKPEwzivNpfKiiQihwH8-U,141
|
|
659
659
|
rasa/shared/utils/io.py,sha256=cYEkHjvuIB-XaK-Qchajv4lDMb_EZc3K-3CLwiEtUcA,15236
|
|
660
|
-
rasa/shared/utils/llm.py,sha256=
|
|
660
|
+
rasa/shared/utils/llm.py,sha256=PAgk53HhCu8owKUegvXB3hQUcDrv-X2qwtWstMuAnok,14530
|
|
661
661
|
rasa/shared/utils/pykwalify_extensions.py,sha256=4W8gde8C6QpGCY_t9IEmaZSgjMuie1xH0F1DYyn83BM,883
|
|
662
662
|
rasa/shared/utils/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
663
663
|
rasa/shared/utils/schemas/config.yml,sha256=czxSADw9hOIZdhvFP8pVUQo810hs9_C8ZGfCPx17taM,27
|
|
@@ -720,9 +720,9 @@ rasa/utils/train_utils.py,sha256=f1NWpp5y6al0dzoQyyio4hc4Nf73DRoRSHDzEK6-C4E,212
|
|
|
720
720
|
rasa/utils/url_tools.py,sha256=JQcHL2aLqLHu82k7_d9imUoETCm2bmlHaDpOJ-dKqBc,1218
|
|
721
721
|
rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
|
|
722
722
|
rasa/validator.py,sha256=ToRaa4dS859CJO3H2VGqS943O5qWOg45ypbDfFMKECU,62699
|
|
723
|
-
rasa/version.py,sha256=
|
|
724
|
-
rasa_pro-3.10.
|
|
725
|
-
rasa_pro-3.10.
|
|
726
|
-
rasa_pro-3.10.
|
|
727
|
-
rasa_pro-3.10.
|
|
728
|
-
rasa_pro-3.10.
|
|
723
|
+
rasa/version.py,sha256=aHCuIHQWH7VHn-hOBTaPwWHuMVCEbQOmmTIcFYIjyIw,118
|
|
724
|
+
rasa_pro-3.10.15.dist-info/METADATA,sha256=BgLjWEGNR09ZyPW9sfS03L7AiDUwDYevse3dVR4Ep78,10919
|
|
725
|
+
rasa_pro-3.10.15.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
|
|
726
|
+
rasa_pro-3.10.15.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
727
|
+
rasa_pro-3.10.15.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
|
|
728
|
+
rasa_pro-3.10.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|