rasa-pro 3.10.15__py3-none-any.whl → 3.10.17__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/cli/llm_fine_tuning.py +14 -11
- rasa/core/channels/inspector/dist/index.html +2 -0
- rasa/core/channels/inspector/index.html +2 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +9 -0
- rasa/dialogue_understanding/stack/utils.py +1 -0
- rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
- rasa/engine/graph.py +9 -3
- rasa/nlu/classifiers/fallback_classifier.py +0 -3
- rasa/shared/core/flows/flow.py +4 -4
- rasa/shared/core/flows/flow_step.py +15 -10
- rasa/shared/core/flows/flow_step_links.py +20 -12
- rasa/shared/core/flows/flow_step_sequence.py +5 -3
- rasa/shared/core/flows/steps/action.py +3 -2
- rasa/shared/core/flows/steps/call.py +3 -3
- rasa/shared/core/flows/steps/collect.py +6 -3
- rasa/shared/core/flows/steps/continuation.py +3 -1
- rasa/shared/core/flows/steps/end.py +3 -1
- rasa/shared/core/flows/steps/internal.py +2 -1
- rasa/shared/core/flows/steps/link.py +5 -3
- rasa/shared/core/flows/steps/no_operation.py +5 -3
- rasa/shared/core/flows/steps/set_slots.py +3 -2
- rasa/shared/core/flows/steps/start.py +3 -1
- rasa/shared/utils/llm.py +1 -1
- rasa/validator.py +12 -0
- rasa/version.py +1 -1
- {rasa_pro-3.10.15.dist-info → rasa_pro-3.10.17.dist-info}/METADATA +3 -3
- {rasa_pro-3.10.15.dist-info → rasa_pro-3.10.17.dist-info}/RECORD +30 -30
- {rasa_pro-3.10.15.dist-info → rasa_pro-3.10.17.dist-info}/NOTICE +0 -0
- {rasa_pro-3.10.15.dist-info → rasa_pro-3.10.17.dist-info}/WHEEL +0 -0
- {rasa_pro-3.10.15.dist-info → rasa_pro-3.10.17.dist-info}/entry_points.txt +0 -0
rasa/cli/llm_fine_tuning.py
CHANGED
|
@@ -22,6 +22,7 @@ from rasa.cli.e2e_test import (
|
|
|
22
22
|
)
|
|
23
23
|
from rasa.core.exceptions import AgentNotReady
|
|
24
24
|
from rasa.core.utils import AvailableEndpoints
|
|
25
|
+
from rasa.dialogue_understanding.generator import SingleStepLLMCommandGenerator
|
|
25
26
|
from rasa.e2e_test.e2e_test_runner import E2ETestRunner
|
|
26
27
|
from rasa.llm_fine_tuning.annotation_module import annotate_e2e_tests
|
|
27
28
|
from rasa.llm_fine_tuning.llm_data_preparation_module import convert_to_fine_tuning_data
|
|
@@ -44,6 +45,9 @@ from rasa.shared.constants import (
|
|
|
44
45
|
DEFAULT_MODELS_PATH,
|
|
45
46
|
LLM_CONFIG_KEY,
|
|
46
47
|
)
|
|
48
|
+
from rasa.shared.utils.llm import (
|
|
49
|
+
combine_custom_and_default_config,
|
|
50
|
+
)
|
|
47
51
|
from rasa.shared.utils.yaml import read_config_file
|
|
48
52
|
from rasa.utils.beta import ensure_beta_feature_is_enabled
|
|
49
53
|
|
|
@@ -275,20 +279,19 @@ def _get_llm_command_generator_config(e2e_test_runner: E2ETestRunner) -> Dict[st
|
|
|
275
279
|
|
|
276
280
|
train_schema = e2e_test_runner.agent.processor.model_metadata.train_schema # type: ignore
|
|
277
281
|
|
|
278
|
-
for node in train_schema.nodes:
|
|
279
|
-
if
|
|
280
|
-
return
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
282
|
+
for node_name, node in train_schema.nodes.items():
|
|
283
|
+
if node.matches_type(SingleStepLLMCommandGenerator, include_subtypes=True):
|
|
284
|
+
return combine_custom_and_default_config(
|
|
285
|
+
node.config.get(LLM_CONFIG_KEY, {}), DEFAULT_LLM_CONFIG
|
|
286
|
+
)
|
|
284
287
|
|
|
285
288
|
rasa.shared.utils.cli.print_error(
|
|
286
|
-
"The provided model
|
|
287
|
-
"Without
|
|
288
|
-
"
|
|
289
|
-
"train your model."
|
|
289
|
+
"The provided model is not trained using 'SingleStepLLMCommandGenerator' or "
|
|
290
|
+
"its subclasses. Without it, no data for fine-tuning can be generated. To "
|
|
291
|
+
"resolve this, please include 'SingleStepLLMCommandGenerator' or its subclass "
|
|
292
|
+
"in your config and train your model."
|
|
290
293
|
)
|
|
291
|
-
sys.exit(
|
|
294
|
+
sys.exit(1)
|
|
292
295
|
|
|
293
296
|
|
|
294
297
|
def log_start_of_module(module_name: str) -> None:
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
<script>
|
|
18
18
|
const chatDiv = document.getElementById("rasa-chat-widget");
|
|
19
19
|
const websocketUrl = window.location.origin.replace("http", "ws");
|
|
20
|
+
const initialPayload = "/session_start";
|
|
20
21
|
const maxHeight = document.documentElement.scrollHeight - 130;
|
|
21
22
|
// 21 and 25 are the rem number we're using for the columns. We add 0.75rem for the padding
|
|
22
23
|
// A potential improvement would be to add a onresize event for both width and height
|
|
@@ -28,6 +29,7 @@
|
|
|
28
29
|
const columnWidth = remReference * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
29
30
|
|
|
30
31
|
chatDiv.setAttribute("data-websocket-url", websocketUrl);
|
|
32
|
+
chatDiv.setAttribute("data-initial-payload", initialPayload);
|
|
31
33
|
chatDiv.setAttribute("data-close-on-outside-click", false);
|
|
32
34
|
chatDiv.setAttribute("data-height", maxHeight);
|
|
33
35
|
chatDiv.setAttribute("data-width", columnWidth);
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
<script>
|
|
16
16
|
const chatDiv = document.getElementById("rasa-chat-widget");
|
|
17
17
|
const websocketUrl = window.location.origin.replace("http", "ws");
|
|
18
|
+
const initialPayload = "/session_start";
|
|
18
19
|
const maxHeight = document.documentElement.scrollHeight - 130;
|
|
19
20
|
// 21 and 25 are the rem number we're using for the columns. We add 0.75rem for the padding
|
|
20
21
|
// A potential improvement would be to add a onresize event for both width and height
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
const columnWidth = remReference * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
27
28
|
|
|
28
29
|
chatDiv.setAttribute("data-websocket-url", websocketUrl);
|
|
30
|
+
chatDiv.setAttribute("data-initial-payload", initialPayload);
|
|
29
31
|
chatDiv.setAttribute("data-close-on-outside-click", false);
|
|
30
32
|
chatDiv.setAttribute("data-height", maxHeight);
|
|
31
33
|
chatDiv.setAttribute("data-width", columnWidth);
|
|
@@ -40,3 +40,12 @@ class ContinueInterruptedPatternFlowStackFrame(PatternFlowStackFrame):
|
|
|
40
40
|
step_id=data["step_id"],
|
|
41
41
|
previous_flow_name=data["previous_flow_name"],
|
|
42
42
|
)
|
|
43
|
+
|
|
44
|
+
def __eq__(self, other: Any) -> bool:
|
|
45
|
+
if not isinstance(other, ContinueInterruptedPatternFlowStackFrame):
|
|
46
|
+
return False
|
|
47
|
+
return (
|
|
48
|
+
self.flow_id == other.flow_id
|
|
49
|
+
and self.step_id == other.step_id
|
|
50
|
+
and self.previous_flow_name == other.previous_flow_name
|
|
51
|
+
)
|
|
@@ -77,6 +77,7 @@ def top_user_flow_frame(dialogue_stack: DialogueStack) -> Optional[UserFlowStack
|
|
|
77
77
|
if (
|
|
78
78
|
isinstance(frame, UserFlowStackFrame)
|
|
79
79
|
and frame.frame_type != FlowStackFrameType.CALL
|
|
80
|
+
and frame.frame_type != FlowStackFrameType.LINK
|
|
80
81
|
):
|
|
81
82
|
return frame
|
|
82
83
|
return None
|
|
@@ -45,7 +45,7 @@ class E2ETestYAMLWriter:
|
|
|
45
45
|
|
|
46
46
|
yaml_data = ruamel.yaml.safe_load(tests)
|
|
47
47
|
|
|
48
|
-
test_cases_yaml =
|
|
48
|
+
test_cases_yaml = {KEY_TEST_CASES: yaml_data}
|
|
49
49
|
with open(output_file, "w") as outfile:
|
|
50
50
|
yaml = ruamel.yaml.YAML()
|
|
51
51
|
yaml.dump(test_cases_yaml, outfile)
|
rasa/engine/graph.py
CHANGED
|
@@ -67,6 +67,14 @@ class SchemaNode:
|
|
|
67
67
|
is_input: bool = False
|
|
68
68
|
resource: Optional[Resource] = None
|
|
69
69
|
|
|
70
|
+
def matches_type(self, node_type: Type, include_subtypes: bool = True) -> bool:
|
|
71
|
+
"""Checks if schema node's 'uses' is of specified node type.
|
|
72
|
+
By default, it also checks for subtypes of the specified node type.
|
|
73
|
+
"""
|
|
74
|
+
return (self.uses is node_type) or (
|
|
75
|
+
include_subtypes and issubclass(self.uses, node_type)
|
|
76
|
+
)
|
|
77
|
+
|
|
70
78
|
|
|
71
79
|
@dataclass
|
|
72
80
|
class GraphSchema:
|
|
@@ -166,9 +174,7 @@ class GraphSchema:
|
|
|
166
174
|
By default, it also checks for subtypes of the specified node type.
|
|
167
175
|
"""
|
|
168
176
|
for node in self.nodes.values():
|
|
169
|
-
if
|
|
170
|
-
include_subtypes and issubclass(node.uses, node_type)
|
|
171
|
-
):
|
|
177
|
+
if node.matches_type(node_type, include_subtypes):
|
|
172
178
|
return True
|
|
173
179
|
return False
|
|
174
180
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
import copy
|
|
3
2
|
import logging
|
|
4
3
|
from typing import Any, List, Text, Dict, Type, Union, Tuple, Optional
|
|
5
4
|
|
|
@@ -185,8 +184,6 @@ def undo_fallback_prediction(prediction: Dict[Text, Any]) -> Dict[Text, Any]:
|
|
|
185
184
|
if len(intent_ranking) < 2:
|
|
186
185
|
return prediction
|
|
187
186
|
|
|
188
|
-
prediction = copy.deepcopy(prediction)
|
|
189
187
|
prediction[INTENT] = intent_ranking[1]
|
|
190
188
|
prediction[INTENT_RANKING_KEY] = prediction[INTENT_RANKING_KEY][1:]
|
|
191
|
-
|
|
192
189
|
return prediction
|
rasa/shared/core/flows/flow.py
CHANGED
|
@@ -77,7 +77,7 @@ class Flow:
|
|
|
77
77
|
Returns:
|
|
78
78
|
A Flow object.
|
|
79
79
|
"""
|
|
80
|
-
step_sequence = FlowStepSequence.from_json(data.get("steps"))
|
|
80
|
+
step_sequence = FlowStepSequence.from_json(flow_id, data.get("steps"))
|
|
81
81
|
nlu_triggers = NLUTriggers.from_json(data.get("nlu_trigger"))
|
|
82
82
|
|
|
83
83
|
if file_path and isinstance(file_path, Path):
|
|
@@ -180,13 +180,13 @@ class Flow:
|
|
|
180
180
|
return None
|
|
181
181
|
|
|
182
182
|
if step_id == START_STEP:
|
|
183
|
-
return StartFlowStep(self.first_step_in_flow().id)
|
|
183
|
+
return StartFlowStep(self.id, self.first_step_in_flow().id)
|
|
184
184
|
|
|
185
185
|
if step_id == END_STEP:
|
|
186
|
-
return EndFlowStep()
|
|
186
|
+
return EndFlowStep(self.id)
|
|
187
187
|
|
|
188
188
|
if step_id.startswith(CONTINUE_STEP_PREFIX):
|
|
189
|
-
return ContinueFlowStep(step_id[len(CONTINUE_STEP_PREFIX) :])
|
|
189
|
+
return ContinueFlowStep(self.id, step_id[len(CONTINUE_STEP_PREFIX) :])
|
|
190
190
|
|
|
191
191
|
for step in self.steps_with_calls_resolved:
|
|
192
192
|
if step.id == step_id:
|
|
@@ -20,10 +20,11 @@ if TYPE_CHECKING:
|
|
|
20
20
|
structlogger = structlog.get_logger()
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
def step_from_json(data: Dict[Text, Any]) -> FlowStep:
|
|
23
|
+
def step_from_json(flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
24
24
|
"""Create a specific FlowStep from serialized data.
|
|
25
25
|
|
|
26
26
|
Args:
|
|
27
|
+
flow_id: The id of the flow that contains the step.
|
|
27
28
|
data: data for a specific FlowStep object in a serialized data format.
|
|
28
29
|
|
|
29
30
|
Returns:
|
|
@@ -39,17 +40,17 @@ def step_from_json(data: Dict[Text, Any]) -> FlowStep:
|
|
|
39
40
|
)
|
|
40
41
|
|
|
41
42
|
if "action" in data:
|
|
42
|
-
return ActionFlowStep.from_json(data)
|
|
43
|
+
return ActionFlowStep.from_json(flow_id, data)
|
|
43
44
|
if "collect" in data:
|
|
44
|
-
return CollectInformationFlowStep.from_json(data)
|
|
45
|
+
return CollectInformationFlowStep.from_json(flow_id, data)
|
|
45
46
|
if "link" in data:
|
|
46
|
-
return LinkFlowStep.from_json(data)
|
|
47
|
+
return LinkFlowStep.from_json(flow_id, data)
|
|
47
48
|
if "call" in data:
|
|
48
|
-
return CallFlowStep.from_json(data)
|
|
49
|
+
return CallFlowStep.from_json(flow_id, data)
|
|
49
50
|
if "set_slots" in data:
|
|
50
|
-
return SetSlotsFlowStep.from_json(data)
|
|
51
|
+
return SetSlotsFlowStep.from_json(flow_id, data)
|
|
51
52
|
if "noop" in data:
|
|
52
|
-
return NoOperationFlowStep.from_json(data)
|
|
53
|
+
return NoOperationFlowStep.from_json(flow_id, data)
|
|
53
54
|
raise RasaException(f"Failed to parse step from json. Unknown type for {data}.")
|
|
54
55
|
|
|
55
56
|
|
|
@@ -67,12 +68,15 @@ class FlowStep:
|
|
|
67
68
|
"""Additional, unstructured information about this flow step."""
|
|
68
69
|
next: FlowStepLinks
|
|
69
70
|
"""The next steps of the flow step."""
|
|
71
|
+
flow_id: Text
|
|
72
|
+
"""The id of the flow that contains the step."""
|
|
70
73
|
|
|
71
74
|
@classmethod
|
|
72
|
-
def from_json(cls, data: Dict[Text, Any]) -> FlowStep:
|
|
75
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
73
76
|
"""Create a FlowStep object from data in a serialized format.
|
|
74
77
|
|
|
75
78
|
Args:
|
|
79
|
+
flow_id: The id of the flow that contains the step.
|
|
76
80
|
data: The data for a FlowStep object in a serialized format.
|
|
77
81
|
|
|
78
82
|
Returns:
|
|
@@ -87,7 +91,8 @@ class FlowStep:
|
|
|
87
91
|
custom_id=data.get("id"),
|
|
88
92
|
description=data.get("description"),
|
|
89
93
|
metadata=data.get("metadata", {}),
|
|
90
|
-
next=FlowStepLinks.from_json(data.get("next", [])),
|
|
94
|
+
next=FlowStepLinks.from_json(flow_id, data.get("next", [])),
|
|
95
|
+
flow_id=flow_id,
|
|
91
96
|
)
|
|
92
97
|
|
|
93
98
|
def does_allow_for_next_step(self) -> bool:
|
|
@@ -125,7 +130,7 @@ class FlowStep:
|
|
|
125
130
|
@property
|
|
126
131
|
def default_id(self) -> str:
|
|
127
132
|
"""Returns the default id of the flow step."""
|
|
128
|
-
return f"{self.idx}_{self.default_id_postfix}"
|
|
133
|
+
return f"{self.flow_id}_{self.idx}_{self.default_id_postfix}"
|
|
129
134
|
|
|
130
135
|
@property
|
|
131
136
|
def default_id_postfix(self) -> str:
|
|
@@ -17,10 +17,13 @@ class FlowStepLinks:
|
|
|
17
17
|
links: List[FlowStepLink]
|
|
18
18
|
|
|
19
19
|
@staticmethod
|
|
20
|
-
def from_json(
|
|
20
|
+
def from_json(
|
|
21
|
+
flow_id: Text, data: Union[str, List[Dict[Text, Any]]]
|
|
22
|
+
) -> FlowStepLinks:
|
|
21
23
|
"""Create a FlowStepLinks object from a serialized data format.
|
|
22
24
|
|
|
23
25
|
Args:
|
|
26
|
+
flow_id: The id of the flow that contains the step.
|
|
24
27
|
data: data for a FlowStepLinks object in a serialized format.
|
|
25
28
|
|
|
26
29
|
Returns:
|
|
@@ -30,11 +33,11 @@ class FlowStepLinks:
|
|
|
30
33
|
return FlowStepLinks(links=[])
|
|
31
34
|
|
|
32
35
|
if isinstance(data, str):
|
|
33
|
-
return FlowStepLinks(links=[StaticFlowStepLink.from_json(data)])
|
|
36
|
+
return FlowStepLinks(links=[StaticFlowStepLink.from_json(flow_id, data)])
|
|
34
37
|
|
|
35
38
|
return FlowStepLinks(
|
|
36
39
|
links=[
|
|
37
|
-
BranchingFlowStepLink.from_json(link_config)
|
|
40
|
+
BranchingFlowStepLink.from_json(flow_id, link_config)
|
|
38
41
|
for link_config in data
|
|
39
42
|
if link_config
|
|
40
43
|
]
|
|
@@ -94,10 +97,11 @@ class FlowStepLink:
|
|
|
94
97
|
raise NotImplementedError()
|
|
95
98
|
|
|
96
99
|
@staticmethod
|
|
97
|
-
def from_json(data: Any) -> FlowStepLink:
|
|
100
|
+
def from_json(flow_id: Text, data: Any) -> FlowStepLink:
|
|
98
101
|
"""Create a FlowStepLink object from a serialized data format.
|
|
99
102
|
|
|
100
103
|
Args:
|
|
104
|
+
flow_id: The id of the flow that contains the step.
|
|
101
105
|
data: data for a FlowStepLink object in a serialized format.
|
|
102
106
|
|
|
103
107
|
Returns:
|
|
@@ -163,19 +167,20 @@ class BranchingFlowStepLink(FlowStepLink):
|
|
|
163
167
|
return self.target_reference
|
|
164
168
|
|
|
165
169
|
@staticmethod
|
|
166
|
-
def from_json(data: Dict[Text, Any]) -> BranchingFlowStepLink:
|
|
170
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> BranchingFlowStepLink:
|
|
167
171
|
"""Create a BranchingFlowStepLink object from a serialized data format.
|
|
168
172
|
|
|
169
173
|
Args:
|
|
174
|
+
flow_id: The id of the flow that contains the step.
|
|
170
175
|
data: data for a BranchingFlowStepLink object in a serialized format.
|
|
171
176
|
|
|
172
177
|
Returns:
|
|
173
178
|
a BranchingFlowStepLink object.
|
|
174
179
|
"""
|
|
175
180
|
if "if" in data:
|
|
176
|
-
return IfFlowStepLink.from_json(data)
|
|
181
|
+
return IfFlowStepLink.from_json(flow_id, data)
|
|
177
182
|
else:
|
|
178
|
-
return ElseFlowStepLink.from_json(data)
|
|
183
|
+
return ElseFlowStepLink.from_json(flow_id, data)
|
|
179
184
|
|
|
180
185
|
def depth_in_tree(self) -> int:
|
|
181
186
|
"""Returns the depth in the tree."""
|
|
@@ -198,10 +203,11 @@ class IfFlowStepLink(BranchingFlowStepLink):
|
|
|
198
203
|
"""The condition that needs to be satisfied to follow this flow step link."""
|
|
199
204
|
|
|
200
205
|
@staticmethod
|
|
201
|
-
def from_json(data: Dict[Text, Any]) -> IfFlowStepLink:
|
|
206
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> IfFlowStepLink:
|
|
202
207
|
"""Create an IfFlowStepLink object from a serialized data format.
|
|
203
208
|
|
|
204
209
|
Args:
|
|
210
|
+
flow_id: The id of the flow that contains the step.
|
|
205
211
|
data: data for a IfFlowStepLink in a serialized format.
|
|
206
212
|
|
|
207
213
|
Returns:
|
|
@@ -213,7 +219,7 @@ class IfFlowStepLink(BranchingFlowStepLink):
|
|
|
213
219
|
return IfFlowStepLink(target_reference=data["then"], condition=data["if"])
|
|
214
220
|
else:
|
|
215
221
|
return IfFlowStepLink(
|
|
216
|
-
target_reference=FlowStepSequence.from_json(data["then"]),
|
|
222
|
+
target_reference=FlowStepSequence.from_json(flow_id, data["then"]),
|
|
217
223
|
condition=data["if"],
|
|
218
224
|
)
|
|
219
225
|
|
|
@@ -238,10 +244,11 @@ class ElseFlowStepLink(BranchingFlowStepLink):
|
|
|
238
244
|
"""A flow step link that is taken when conditional flow step links weren't taken."""
|
|
239
245
|
|
|
240
246
|
@staticmethod
|
|
241
|
-
def from_json(data: Dict[Text, Any]) -> ElseFlowStepLink:
|
|
247
|
+
def from_json(flow_id: Text, data: Dict[Text, Any]) -> ElseFlowStepLink:
|
|
242
248
|
"""Create an ElseFlowStepLink object from serialized data.
|
|
243
249
|
|
|
244
250
|
Args:
|
|
251
|
+
flow_id: The id of the flow that contains the step.
|
|
245
252
|
data: data for an ElseFlowStepLink in a serialized format
|
|
246
253
|
|
|
247
254
|
Returns:
|
|
@@ -253,7 +260,7 @@ class ElseFlowStepLink(BranchingFlowStepLink):
|
|
|
253
260
|
return ElseFlowStepLink(target_reference=data["else"])
|
|
254
261
|
else:
|
|
255
262
|
return ElseFlowStepLink(
|
|
256
|
-
target_reference=FlowStepSequence.from_json(data["else"])
|
|
263
|
+
target_reference=FlowStepSequence.from_json(flow_id, data["else"])
|
|
257
264
|
)
|
|
258
265
|
|
|
259
266
|
def as_json(self) -> Dict[Text, Any]:
|
|
@@ -279,10 +286,11 @@ class StaticFlowStepLink(FlowStepLink):
|
|
|
279
286
|
"""The id of the linked step."""
|
|
280
287
|
|
|
281
288
|
@staticmethod
|
|
282
|
-
def from_json(data: Text) -> StaticFlowStepLink:
|
|
289
|
+
def from_json(flow_id: Text, data: Text) -> StaticFlowStepLink:
|
|
283
290
|
"""Create a StaticFlowStepLink from serialized data
|
|
284
291
|
|
|
285
292
|
Args:
|
|
293
|
+
flow_id: The id of the flow that contains the step.
|
|
286
294
|
data: data for a StaticFlowStepLink in a serialized format
|
|
287
295
|
|
|
288
296
|
Returns:
|
|
@@ -14,17 +14,19 @@ class FlowStepSequence:
|
|
|
14
14
|
child_steps: List[FlowStep]
|
|
15
15
|
|
|
16
16
|
@staticmethod
|
|
17
|
-
def from_json(data: List[Dict[Text, Any]]) -> FlowStepSequence:
|
|
17
|
+
def from_json(flow_id: Text, data: List[Dict[Text, Any]]) -> FlowStepSequence:
|
|
18
18
|
"""Create a FlowStepSequence object from serialized data
|
|
19
19
|
|
|
20
20
|
Args:
|
|
21
|
+
flow_id: The id of the flow that contains the step.
|
|
21
22
|
data: data for a StepSequence in a serialized format
|
|
22
23
|
|
|
23
24
|
Returns:
|
|
24
25
|
A StepSequence object including its flow step objects.
|
|
25
26
|
"""
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
flow_steps: List[FlowStep] = [
|
|
28
|
+
step_from_json(flow_id, config) for config in data
|
|
29
|
+
]
|
|
28
30
|
|
|
29
31
|
return FlowStepSequence(child_steps=flow_steps)
|
|
30
32
|
|
|
@@ -15,16 +15,17 @@ class ActionFlowStep(FlowStep):
|
|
|
15
15
|
"""The action of the flow step."""
|
|
16
16
|
|
|
17
17
|
@classmethod
|
|
18
|
-
def from_json(cls, data: Dict[Text, Any]) -> ActionFlowStep:
|
|
18
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> ActionFlowStep:
|
|
19
19
|
"""Create an ActionFlowStep object from serialized data
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
|
+
flow_id: The id of the flow that contains the step.
|
|
22
23
|
data: data for an ActionFlowStep object in a serialized format
|
|
23
24
|
|
|
24
25
|
Returns:
|
|
25
26
|
An ActionFlowStep object
|
|
26
27
|
"""
|
|
27
|
-
base = super().from_json(data)
|
|
28
|
+
base = super().from_json(flow_id, data)
|
|
28
29
|
return ActionFlowStep(
|
|
29
30
|
action=data["action"],
|
|
30
31
|
**base.__dict__,
|
|
@@ -18,16 +18,17 @@ class CallFlowStep(FlowStep):
|
|
|
18
18
|
called_flow_reference: Optional["Flow"] = None
|
|
19
19
|
|
|
20
20
|
@classmethod
|
|
21
|
-
def from_json(cls, data: Dict[Text, Any]) -> CallFlowStep:
|
|
21
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> CallFlowStep:
|
|
22
22
|
"""Used to read flow steps from parsed YAML.
|
|
23
23
|
|
|
24
24
|
Args:
|
|
25
|
+
flow_id: The id of the flow that contains the step.
|
|
25
26
|
data: The parsed YAML as a dictionary.
|
|
26
27
|
|
|
27
28
|
Returns:
|
|
28
29
|
The parsed flow step.
|
|
29
30
|
"""
|
|
30
|
-
base = super().from_json(data)
|
|
31
|
+
base = super().from_json(flow_id, data)
|
|
31
32
|
return CallFlowStep(
|
|
32
33
|
call=data.get("call", ""),
|
|
33
34
|
**base.__dict__,
|
|
@@ -47,7 +48,6 @@ class CallFlowStep(FlowStep):
|
|
|
47
48
|
self, should_resolve_calls: bool = True
|
|
48
49
|
) -> Generator[FlowStep, None, None]:
|
|
49
50
|
"""Returns the steps in the tree of the flow step."""
|
|
50
|
-
|
|
51
51
|
yield self
|
|
52
52
|
|
|
53
53
|
if should_resolve_calls:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Dict, Any, List, Set
|
|
4
|
+
from typing import Dict, Any, List, Set, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.constants import UTTER_ASK_PREFIX, ACTION_ASK_PREFIX
|
|
7
7
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
@@ -61,16 +61,19 @@ class CollectInformationFlowStep(FlowStep):
|
|
|
61
61
|
"""Whether to reset the slot value at the end of the flow."""
|
|
62
62
|
|
|
63
63
|
@classmethod
|
|
64
|
-
def from_json(
|
|
64
|
+
def from_json(
|
|
65
|
+
cls, flow_id: Text, data: Dict[str, Any]
|
|
66
|
+
) -> CollectInformationFlowStep:
|
|
65
67
|
"""Create a CollectInformationFlowStep object from serialized data.
|
|
66
68
|
|
|
67
69
|
Args:
|
|
70
|
+
flow_id: The id of the flow that contains the step.
|
|
68
71
|
data: data for a CollectInformationFlowStep object in a serialized format
|
|
69
72
|
|
|
70
73
|
Returns:
|
|
71
74
|
A CollectInformationFlowStep object
|
|
72
75
|
"""
|
|
73
|
-
base = super().from_json(data)
|
|
76
|
+
base = super().from_json(flow_id, data)
|
|
74
77
|
return CollectInformationFlowStep(
|
|
75
78
|
collect=data["collect"],
|
|
76
79
|
utter=data.get("utter", f"{UTTER_ASK_PREFIX}{data['collect']}"),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Text
|
|
4
5
|
|
|
5
6
|
from rasa.shared.core.flows.flow_step_links import FlowStepLinks, StaticFlowStepLink
|
|
6
7
|
from rasa.shared.core.flows.steps.constants import (
|
|
@@ -14,7 +15,7 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
14
15
|
class ContinueFlowStep(InternalFlowStep):
|
|
15
16
|
"""A flow step that is dynamically introduced to jump to other flow steps."""
|
|
16
17
|
|
|
17
|
-
def __init__(self, target_step_id: str) -> None:
|
|
18
|
+
def __init__(self, flow_id: Text, target_step_id: str) -> None:
|
|
18
19
|
"""Initializes a continue-step flow step."""
|
|
19
20
|
super().__init__(
|
|
20
21
|
idx=UNSET_FLOW_STEP_ID,
|
|
@@ -29,6 +30,7 @@ class ContinueFlowStep(InternalFlowStep):
|
|
|
29
30
|
# This is why the continue step links to the step that should be
|
|
30
31
|
# continued.
|
|
31
32
|
next=FlowStepLinks(links=[StaticFlowStepLink(target_step_id)]),
|
|
33
|
+
flow_id=flow_id,
|
|
32
34
|
)
|
|
33
35
|
|
|
34
36
|
@staticmethod
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Text
|
|
4
5
|
|
|
5
6
|
from rasa.shared.core.flows.flow_step_links import FlowStepLinks
|
|
6
7
|
from rasa.shared.core.flows.steps.constants import END_STEP, UNSET_FLOW_STEP_ID
|
|
@@ -11,7 +12,7 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
11
12
|
class EndFlowStep(InternalFlowStep):
|
|
12
13
|
"""A dynamically added flow step that marks the end of a flow."""
|
|
13
14
|
|
|
14
|
-
def __init__(self) -> None:
|
|
15
|
+
def __init__(self, flow_id: Text) -> None:
|
|
15
16
|
"""Initializes an end flow step."""
|
|
16
17
|
super().__init__(
|
|
17
18
|
idx=UNSET_FLOW_STEP_ID,
|
|
@@ -19,4 +20,5 @@ class EndFlowStep(InternalFlowStep):
|
|
|
19
20
|
description=None,
|
|
20
21
|
metadata={},
|
|
21
22
|
next=FlowStepLinks(links=[]),
|
|
23
|
+
flow_id=flow_id,
|
|
22
24
|
)
|
|
@@ -13,10 +13,11 @@ class InternalFlowStep(FlowStep):
|
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
@classmethod
|
|
16
|
-
def from_json(cls, data: Dict[Text, Any]) -> InternalFlowStep:
|
|
16
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> InternalFlowStep:
|
|
17
17
|
"""Create an InternalFlowStep object from serialized data.
|
|
18
18
|
|
|
19
19
|
Args:
|
|
20
|
+
flow_id: The id of the flow that contains the step.
|
|
20
21
|
data: data for an InternalFlowStep in a serialized format
|
|
21
22
|
|
|
22
23
|
Returns:
|
|
@@ -16,20 +16,22 @@ class LinkFlowStep(FlowStep):
|
|
|
16
16
|
def does_allow_for_next_step(self) -> bool:
|
|
17
17
|
"""Returns whether this step allows for following steps.
|
|
18
18
|
|
|
19
|
-
Link steps need to be terminal steps, so can't have a next step.
|
|
19
|
+
Link steps need to be terminal steps, so can't have a next step.
|
|
20
|
+
"""
|
|
20
21
|
return False
|
|
21
22
|
|
|
22
23
|
@classmethod
|
|
23
|
-
def from_json(cls, data: Dict[Text, Any]) -> LinkFlowStep:
|
|
24
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> LinkFlowStep:
|
|
24
25
|
"""Create a LinkFlowStep from serialized data
|
|
25
26
|
|
|
26
27
|
Args:
|
|
28
|
+
flow_id: The id of the flow that contains the step.
|
|
27
29
|
data: data for a LinkFlowStep in a serialized format
|
|
28
30
|
|
|
29
31
|
Returns:
|
|
30
32
|
a LinkFlowStep object
|
|
31
33
|
"""
|
|
32
|
-
base = super().from_json(data)
|
|
34
|
+
base = super().from_json(flow_id, data)
|
|
33
35
|
return LinkFlowStep(
|
|
34
36
|
link=data["link"],
|
|
35
37
|
**base.__dict__,
|
|
@@ -11,22 +11,24 @@ class NoOperationFlowStep(FlowStep):
|
|
|
11
11
|
"""A step that doesn't do a thing.
|
|
12
12
|
|
|
13
13
|
This is NOT a branching step (but it can branch - but in addition to that
|
|
14
|
-
it also does nothing).
|
|
14
|
+
it also does nothing).
|
|
15
|
+
"""
|
|
15
16
|
|
|
16
17
|
noop: Any
|
|
17
18
|
"""The id of the flow that should be started subsequently."""
|
|
18
19
|
|
|
19
20
|
@classmethod
|
|
20
|
-
def from_json(cls, data: Dict[Text, Any]) -> NoOperationFlowStep:
|
|
21
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> NoOperationFlowStep:
|
|
21
22
|
"""Create a NoOperationFlowStep from serialized data
|
|
22
23
|
|
|
23
24
|
Args:
|
|
25
|
+
flow_id: The id of the flow that contains the step.
|
|
24
26
|
data: data for a NoOperationFlowStep in a serialized format
|
|
25
27
|
|
|
26
28
|
Returns:
|
|
27
29
|
a NoOperationFlowStep object
|
|
28
30
|
"""
|
|
29
|
-
base = super().from_json(data)
|
|
31
|
+
base = super().from_json(flow_id, data)
|
|
30
32
|
return NoOperationFlowStep(
|
|
31
33
|
noop=data["noop"],
|
|
32
34
|
**base.__dict__,
|
|
@@ -14,16 +14,17 @@ class SetSlotsFlowStep(FlowStep):
|
|
|
14
14
|
"""Slots and their values to set in the flow step."""
|
|
15
15
|
|
|
16
16
|
@classmethod
|
|
17
|
-
def from_json(cls, data: Dict[Text, Any]) -> SetSlotsFlowStep:
|
|
17
|
+
def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> SetSlotsFlowStep:
|
|
18
18
|
"""Create a SetSlotsFlowStep from serialized data
|
|
19
19
|
|
|
20
20
|
Args:
|
|
21
|
+
flow_id: The id of the flow that contains the step.
|
|
21
22
|
data: data for a SetSlotsFlowStep in a serialized format
|
|
22
23
|
|
|
23
24
|
Returns:
|
|
24
25
|
a SetSlotsFlowStep object
|
|
25
26
|
"""
|
|
26
|
-
base = super().from_json(data)
|
|
27
|
+
base = super().from_json(flow_id, data)
|
|
27
28
|
slots = [
|
|
28
29
|
{"key": k, "value": v}
|
|
29
30
|
for slot_sets in data["set_slots"]
|
|
@@ -15,10 +15,11 @@ from rasa.shared.core.flows.steps.internal import InternalFlowStep
|
|
|
15
15
|
class StartFlowStep(InternalFlowStep):
|
|
16
16
|
"""A dynamically added flow step that represents the beginning of a flow."""
|
|
17
17
|
|
|
18
|
-
def __init__(self, start_step_id: Text) -> None:
|
|
18
|
+
def __init__(self, flow_id: Text, start_step_id: Text) -> None:
|
|
19
19
|
"""Initializes a start flow step.
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
|
+
flow_id: The id of the flow that contains the step
|
|
22
23
|
start_step_id: The step id of the first step of the flow
|
|
23
24
|
"""
|
|
24
25
|
super().__init__(
|
|
@@ -27,4 +28,5 @@ class StartFlowStep(InternalFlowStep):
|
|
|
27
28
|
description=None,
|
|
28
29
|
metadata={},
|
|
29
30
|
next=FlowStepLinks(links=[StaticFlowStepLink(start_step_id)]),
|
|
31
|
+
flow_id=flow_id,
|
|
30
32
|
)
|
rasa/shared/utils/llm.py
CHANGED
|
@@ -67,7 +67,7 @@ DEFAULT_OPENAI_GENERATE_MODEL_NAME = "gpt-3.5-turbo"
|
|
|
67
67
|
|
|
68
68
|
DEFAULT_OPENAI_CHAT_MODEL_NAME = "gpt-3.5-turbo"
|
|
69
69
|
|
|
70
|
-
DEFAULT_OPENAI_CHAT_MODEL_NAME_ADVANCED = "gpt-4"
|
|
70
|
+
DEFAULT_OPENAI_CHAT_MODEL_NAME_ADVANCED = "gpt-4-0613"
|
|
71
71
|
|
|
72
72
|
DEFAULT_OPENAI_EMBEDDING_MODEL_NAME = "text-embedding-ada-002"
|
|
73
73
|
|
rasa/validator.py
CHANGED
|
@@ -303,6 +303,18 @@ class Validator:
|
|
|
303
303
|
everything_is_alright = True
|
|
304
304
|
|
|
305
305
|
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
|
+
|
|
306
318
|
for response in response_variations:
|
|
307
319
|
if any(
|
|
308
320
|
self.check_for_placeholder(response.get(key))
|
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.17
|
|
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
|
|
@@ -57,7 +57,7 @@ Requires-Dist: importlib-resources (==6.1.3)
|
|
|
57
57
|
Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
|
|
58
58
|
Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
|
|
59
59
|
Requires-Dist: jsonpatch (>=1.33,<2.0)
|
|
60
|
-
Requires-Dist: jsonpickle (>=3.0,<3.
|
|
60
|
+
Requires-Dist: jsonpickle (>=3.3.0,<3.4)
|
|
61
61
|
Requires-Dist: jsonschema (>=4.22)
|
|
62
62
|
Requires-Dist: keras (==2.14.0)
|
|
63
63
|
Requires-Dist: langchain (>=0.2.0,<0.3.0)
|
|
@@ -88,7 +88,7 @@ Requires-Dist: pycountry (>=22.3.5,<23.0.0)
|
|
|
88
88
|
Requires-Dist: pydantic (>=2.0,<3.0)
|
|
89
89
|
Requires-Dist: pydot (>=1.4,<1.5)
|
|
90
90
|
Requires-Dist: pykwalify (>=1.8,<1.9)
|
|
91
|
-
Requires-Dist: pymilvus (
|
|
91
|
+
Requires-Dist: pymilvus (>=2.4.0,<2.4.2)
|
|
92
92
|
Requires-Dist: pymongo[srv,tls] (>=4.6.3,<4.7)
|
|
93
93
|
Requires-Dist: pypred (>=0.4.0,<0.5.0)
|
|
94
94
|
Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
|
|
@@ -29,7 +29,7 @@ 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=PYAFqKN6Kj5moaNvG4r-137GBC1w0lyApc-ZJCui6Gg,13436
|
|
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
|
|
@@ -182,8 +182,8 @@ rasa/core/channels/inspector/dist/assets/styles-9c745c82-f0fc6921.js,sha256=LQKL
|
|
|
182
182
|
rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-ef3c5a77.js,sha256=DSdBJHhg90UYRnWjFOmeR83QGVX10N62afFU2lIM0p0,1304
|
|
183
183
|
rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-bf3e91c1.js,sha256=vA1r0ZS5HZygWBg4WDkqzjyeBGB10DLeuHOJEd_D1Yg,22627
|
|
184
184
|
rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-4d4026c0.js,sha256=snRQD2cXkJf9VdmGnsrBVm3iqMSII0HXF_Ytri39LZE,37268
|
|
185
|
-
rasa/core/channels/inspector/dist/index.html,sha256=
|
|
186
|
-
rasa/core/channels/inspector/index.html,sha256=
|
|
185
|
+
rasa/core/channels/inspector/dist/index.html,sha256=xM57yI-zs94jO3Ab1Ncnl0BtuhT1UIdYoD4NL3OlUHQ,2594
|
|
186
|
+
rasa/core/channels/inspector/index.html,sha256=Zs5n96nppdGdoVp4A4_hsA9GThy0vne5j0wAZeM-JFw,1534
|
|
187
187
|
rasa/core/channels/inspector/jest.config.ts,sha256=pDs-0q6gs0Jnm9mWKq5M1vC5wiX_Cnh4l6s--dBsskM,406
|
|
188
188
|
rasa/core/channels/inspector/package.json,sha256=9QaJDSfrNm0ESF2-ohktVjdpP8ZhjuO-fSMhOEw8Qm8,1377
|
|
189
189
|
rasa/core/channels/inspector/setupTests.ts,sha256=JaGsnR6noIcuD5kLjb9SiOkXwJARLV_gF0dULtlWPqk,75
|
|
@@ -377,7 +377,7 @@ rasa/dialogue_understanding/patterns/clarify.py,sha256=guR6rvRh6dPIShd0zczf5o0zM
|
|
|
377
377
|
rasa/dialogue_understanding/patterns/code_change.py,sha256=YXj9ZaHMUXGzdHzYiUITFxJHx3Q7l6xwt7jxubujg-0,1185
|
|
378
378
|
rasa/dialogue_understanding/patterns/collect_information.py,sha256=nfzAtvjIyP67CiR2KvaHQ2VKcZrYsrt96DfwEW4lpS4,3233
|
|
379
379
|
rasa/dialogue_understanding/patterns/completed.py,sha256=NqVaS_5-62UetGRXjR1eOGG3o6EPaIAQxbbkkNVEa9s,1278
|
|
380
|
-
rasa/dialogue_understanding/patterns/continue_interrupted.py,sha256=
|
|
380
|
+
rasa/dialogue_understanding/patterns/continue_interrupted.py,sha256=JSW6F94xh6MjBId87gHtPq5jhtZqxEsKknPDRBGIf7k,1682
|
|
381
381
|
rasa/dialogue_understanding/patterns/correction.py,sha256=ZfSGzvgLvmbebEuisYP0Ke0lQEZziuDvq1oB4wMSFr4,11001
|
|
382
382
|
rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml,sha256=6AM-nIc-JSD8wSZ7KDGInm6nP5n4EJZe4rce747V8fQ,8284
|
|
383
383
|
rasa/dialogue_understanding/patterns/human_handoff.py,sha256=ocGrnLLRW-_aiXjmSUG9nReUGQbBUxFFt4FTBWSXARM,1132
|
|
@@ -397,7 +397,7 @@ rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py,sha256=rmG09a66
|
|
|
397
397
|
rasa/dialogue_understanding/stack/frames/flow_stack_frame.py,sha256=W4mEmihIN5Bih2C9KDpKf-rxCHjLCzK9TcT6JslhW7g,5047
|
|
398
398
|
rasa/dialogue_understanding/stack/frames/pattern_frame.py,sha256=EVrYWv5dCP7XTvNV-HqtOOrseP-IkF0jD2_JacAvIYw,235
|
|
399
399
|
rasa/dialogue_understanding/stack/frames/search_frame.py,sha256=rJ9og28k_udUIjP-2Z5xeb_2T5HvCzwDCnxVG9K7lws,728
|
|
400
|
-
rasa/dialogue_understanding/stack/utils.py,sha256=
|
|
400
|
+
rasa/dialogue_understanding/stack/utils.py,sha256=UpcxXwbneAMrvc94Fi1__r17UU2BAZQQ_RYI25Mek_c,7710
|
|
401
401
|
rasa/e2e_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
402
402
|
rasa/e2e_test/aggregate_test_stats_calculator.py,sha256=XMI7t5xEP7Mo-F8cCCZx2w5ckUKa5sDvyitl6bk6hc8,4924
|
|
403
403
|
rasa/e2e_test/assertions.py,sha256=9_1TlhBCCI0y3cTFNWQkWKluHS9kQ_Itvas6basA5YU,40936
|
|
@@ -415,14 +415,14 @@ rasa/e2e_test/e2e_test_schema.yml,sha256=0deWjuKRHNo6e_LSCnUoiw9NLIYf6dj1-zFPl_A
|
|
|
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
|
|
417
417
|
rasa/e2e_test/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
418
|
-
rasa/e2e_test/utils/e2e_yaml_utils.py,sha256=
|
|
418
|
+
rasa/e2e_test/utils/e2e_yaml_utils.py,sha256=XvP14DGHMfsNXyI7uTV-GTAdqv-r5FNmpFmvEIn93OM,1601
|
|
419
419
|
rasa/e2e_test/utils/io.py,sha256=HVsFb8uVPTlu7PcQdFmMNUFf0rRrD5Wiys0oMZqu2nA,19016
|
|
420
420
|
rasa/e2e_test/utils/validation.py,sha256=BRjTg3KOAlvGtfZJApOKW29V__cX6hJIG8A5RjzoW54,2348
|
|
421
421
|
rasa/engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
422
422
|
rasa/engine/caching.py,sha256=Uu-0yn_eQGysmW7nsub-tb3gD8QNz6TNssNd-GIthuI,16451
|
|
423
423
|
rasa/engine/constants.py,sha256=w7hyRd2gU8JJyECqGG1meIS3volOCD3lYpVuzDLGz-s,623
|
|
424
424
|
rasa/engine/exceptions.py,sha256=1aV48nLrlAGzEeIDuXeB0qjxe5qaqzOhrK52OBs66xc,437
|
|
425
|
-
rasa/engine/graph.py,sha256=
|
|
425
|
+
rasa/engine/graph.py,sha256=lblyLsvM66ewismY8sLVj39vGaZqMfaqcwyWdlRIH44,24491
|
|
426
426
|
rasa/engine/loader.py,sha256=ommFdjddJWkb-KHpemxRhWYlMYRAUs8rcmtJx_DzqnM,1384
|
|
427
427
|
rasa/engine/recipes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
428
428
|
rasa/engine/recipes/config_files/default_config.yml,sha256=M1ehmJScNbVCQD_wkBktmf0YqXn-O4UzJVbB7tnAtqs,1219
|
|
@@ -488,7 +488,7 @@ 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
|
|
490
490
|
rasa/nlu/classifiers/diet_classifier.py,sha256=jhzvTqC_Ln-eFCrE1o3uQf1JRR7d6mCPn5ZRewePUas,72565
|
|
491
|
-
rasa/nlu/classifiers/fallback_classifier.py,sha256=
|
|
491
|
+
rasa/nlu/classifiers/fallback_classifier.py,sha256=4vuVdtTSGuDvpD01HmL67JuijymwBHSX66mBCQ3FqTk,7094
|
|
492
492
|
rasa/nlu/classifiers/keyword_intent_classifier.py,sha256=dxDzCK7YzYKslZiXYkBD1Al1y_yZWdZYkBBl7FLyPm8,7581
|
|
493
493
|
rasa/nlu/classifiers/logistic_regression_classifier.py,sha256=C7GkIaVNC5MHu5xOaqKzRiV1LTu_19I5vk_Oa9BIDDU,9589
|
|
494
494
|
rasa/nlu/classifiers/mitie_intent_classifier.py,sha256=_hf0aKWjcjZ8NdH61gbutgY5vAjMmpYDhCpO3dwIrDk,5559
|
|
@@ -554,26 +554,26 @@ rasa/shared/core/conversation.py,sha256=tw1fD2XB3gOdQjDI8hHo5TAAmE2JYNogQGWe3rE9
|
|
|
554
554
|
rasa/shared/core/domain.py,sha256=zHnwLneOmRRQQp7ZGAt0RSzH_jyhzRgEPRXCa_b70wo,80054
|
|
555
555
|
rasa/shared/core/events.py,sha256=HXBy-DfulOhcHxrfVtP-uUBVnCx40wkRwqDx80mOFX4,82791
|
|
556
556
|
rasa/shared/core/flows/__init__.py,sha256=HszhIvEARpmyxABFc1MKYvj8oy04WiZW1xmCdToakbs,181
|
|
557
|
-
rasa/shared/core/flows/flow.py,sha256=
|
|
557
|
+
rasa/shared/core/flows/flow.py,sha256=C8TxzxxEtZVrEMLUY57BNA8rEIwcYZaLtJ6pPYeBMRI,21242
|
|
558
558
|
rasa/shared/core/flows/flow_path.py,sha256=xstwahZBU5cfMY46mREA4NoOGlKLBRAqeP_mJ3UZqOI,2283
|
|
559
|
-
rasa/shared/core/flows/flow_step.py,sha256=
|
|
560
|
-
rasa/shared/core/flows/flow_step_links.py,sha256=
|
|
561
|
-
rasa/shared/core/flows/flow_step_sequence.py,sha256=
|
|
559
|
+
rasa/shared/core/flows/flow_step.py,sha256=6hoVOMXryTKHgT7-p7jzTqH2r9QREmy_6d6bX2OyxI0,4550
|
|
560
|
+
rasa/shared/core/flows/flow_step_links.py,sha256=zMZV_9rWVjEa8kHIFSIbXCWA1qaUvp8r4uSCK_NsKKs,10548
|
|
561
|
+
rasa/shared/core/flows/flow_step_sequence.py,sha256=tXUEhubX3g312G2FH8Hiez7_v9XG9EaspKlANRa7Sa8,2362
|
|
562
562
|
rasa/shared/core/flows/flows_list.py,sha256=PtcoK9d7gabFeofdGzQ0bYGh7tYyQDs9t8Wa3F6fkAc,8119
|
|
563
563
|
rasa/shared/core/flows/flows_yaml_schema.json,sha256=ZoVbDzNM89miI3q00J7JtkZRM5dBnicsCpuy9B76jr8,10896
|
|
564
564
|
rasa/shared/core/flows/nlu_trigger.py,sha256=gfnRUi7QJaUjMb43RTyQWbLoIUSx2I78LeM8CjDIIDE,3907
|
|
565
565
|
rasa/shared/core/flows/steps/__init__.py,sha256=M43kHDuB8okcIE3WLivnvuCBzIsA5Qi2ATXUGTVW2Rw,655
|
|
566
|
-
rasa/shared/core/flows/steps/action.py,sha256=
|
|
567
|
-
rasa/shared/core/flows/steps/call.py,sha256=
|
|
568
|
-
rasa/shared/core/flows/steps/collect.py,sha256=
|
|
566
|
+
rasa/shared/core/flows/steps/action.py,sha256=SoeNNgoq6Aq3eIP9aYKYj8en4vXoDMjEAERPXlige6Q,1730
|
|
567
|
+
rasa/shared/core/flows/steps/call.py,sha256=6y0929pM2n8Z1TQ2avfr3g2l7w7bPSKyCRJzljvGtoE,1856
|
|
568
|
+
rasa/shared/core/flows/steps/collect.py,sha256=p79c69BCHNR5pcVl20EmaAkoSBG52yoEbODZh0UAAok,3959
|
|
569
569
|
rasa/shared/core/flows/steps/constants.py,sha256=DCxrEUGbJciBknHm-_t4tmcnH19IZKP-WYxqix9gm7M,132
|
|
570
|
-
rasa/shared/core/flows/steps/continuation.py,sha256=
|
|
571
|
-
rasa/shared/core/flows/steps/end.py,sha256=
|
|
572
|
-
rasa/shared/core/flows/steps/internal.py,sha256=
|
|
573
|
-
rasa/shared/core/flows/steps/link.py,sha256=
|
|
574
|
-
rasa/shared/core/flows/steps/no_operation.py,sha256=
|
|
575
|
-
rasa/shared/core/flows/steps/set_slots.py,sha256=
|
|
576
|
-
rasa/shared/core/flows/steps/start.py,sha256=
|
|
570
|
+
rasa/shared/core/flows/steps/continuation.py,sha256=5Rzayr80FsgS4bAajuRObVvVcLqPEh9nxGbT2te85xY,1498
|
|
571
|
+
rasa/shared/core/flows/steps/end.py,sha256=0XrPlQMVBnQKVeZs0or8P9IrVqG7i6RoSNDsVrvAeDk,749
|
|
572
|
+
rasa/shared/core/flows/steps/internal.py,sha256=vqBapuLBYQin3Me-YZKn_Tyg5VKozRIJ-tFmjVvmFBs,1449
|
|
573
|
+
rasa/shared/core/flows/steps/link.py,sha256=dlx56o-VnFRAn9Xmsu67Di3Fc9MjkDVXzIttHHRaTzA,1507
|
|
574
|
+
rasa/shared/core/flows/steps/no_operation.py,sha256=I0xWFWJqhUAbvU0HSFXtw4v2gmIiTEveGv4AImvLDfo,1399
|
|
575
|
+
rasa/shared/core/flows/steps/set_slots.py,sha256=NgBXLPl5adIa0-M-Tgt2Teg3gXYggcDqpaf96BPpvKE,1492
|
|
576
|
+
rasa/shared/core/flows/steps/start.py,sha256=AJpKIm0S3GZYLEs3ybXW0Zrq03Pu9lvirNahiUy2I6k,1010
|
|
577
577
|
rasa/shared/core/flows/validation.py,sha256=OnSXfWp5S_IMAUEvU_fN2bwAL5gi8PYZDA4PsOO4X7A,22935
|
|
578
578
|
rasa/shared/core/flows/yaml_flows_io.py,sha256=jaF5NgFAfaLUznZF57ZDvb0L9KdaE0cKBSJOZBKUXZQ,14804
|
|
579
579
|
rasa/shared/core/generator.py,sha256=y2B2Vn2xOl7k_smzefryoX048b_MTtSDqclx9Ompz9s,35687
|
|
@@ -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=zeoo9SztpUkVIalulOSrql9E3z8fj5MBb6OAA0qwNZg,14535
|
|
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
|
|
@@ -719,10 +719,10 @@ rasa/utils/tensorflow/types.py,sha256=XGkfDZqvLVoaNQRpSTKdB2C4MGmXTarKdIJcLREvPl
|
|
|
719
719
|
rasa/utils/train_utils.py,sha256=f1NWpp5y6al0dzoQyyio4hc4Nf73DRoRSHDzEK6-C4E,21257
|
|
720
720
|
rasa/utils/url_tools.py,sha256=JQcHL2aLqLHu82k7_d9imUoETCm2bmlHaDpOJ-dKqBc,1218
|
|
721
721
|
rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
|
|
722
|
-
rasa/validator.py,sha256=
|
|
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.
|
|
722
|
+
rasa/validator.py,sha256=gGsuHZivo9MDGA8WCkvYEK5Payi2lpLpOi_PLGwg1Qk,63202
|
|
723
|
+
rasa/version.py,sha256=5GPZiAhXwU0CPUM9M9e331V5ua3IGUOJWo43WawWYQ4,118
|
|
724
|
+
rasa_pro-3.10.17.dist-info/METADATA,sha256=0qJVR32zcVfHJFgr1fWQ2wzFbK2zWN7N8DEMF_tX4DQ,10929
|
|
725
|
+
rasa_pro-3.10.17.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
|
|
726
|
+
rasa_pro-3.10.17.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
727
|
+
rasa_pro-3.10.17.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
|
|
728
|
+
rasa_pro-3.10.17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|