rasa-pro 3.12.5__py3-none-any.whl → 3.12.6__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/core/actions/action.py +0 -6
- rasa/core/channels/voice_ready/audiocodes.py +52 -17
- rasa/core/channels/voice_stream/audiocodes.py +53 -9
- rasa/core/channels/voice_stream/genesys.py +146 -16
- rasa/core/policies/flows/flow_executor.py +3 -38
- rasa/core/processor.py +19 -5
- rasa/core/utils.py +53 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -59
- rasa/dialogue_understanding/commands/start_flow_command.py +0 -41
- rasa/dialogue_understanding/generator/command_generator.py +67 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +2 -12
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +0 -61
- rasa/dialogue_understanding/processor/command_processor.py +7 -65
- rasa/dialogue_understanding/stack/utils.py +0 -38
- rasa/shared/core/constants.py +0 -8
- rasa/shared/core/domain.py +12 -3
- rasa/shared/core/flows/flow.py +0 -17
- rasa/shared/core/flows/flows_yaml_schema.json +3 -38
- rasa/shared/core/flows/steps/collect.py +5 -18
- rasa/shared/core/flows/utils.py +1 -16
- rasa/shared/core/slot_mappings.py +23 -5
- rasa/shared/nlu/constants.py +0 -1
- rasa/shared/utils/common.py +11 -1
- rasa/validator.py +1 -123
- rasa/version.py +1 -1
- {rasa_pro-3.12.5.dist-info → rasa_pro-3.12.6.dist-info}/METADATA +4 -5
- {rasa_pro-3.12.5.dist-info → rasa_pro-3.12.6.dist-info}/RECORD +30 -35
- {rasa_pro-3.12.5.dist-info → rasa_pro-3.12.6.dist-info}/WHEEL +1 -1
- README.md +0 -38
- rasa/core/actions/action_handle_digressions.py +0 -164
- rasa/dialogue_understanding/commands/handle_digressions_command.py +0 -144
- rasa/dialogue_understanding/patterns/handle_digressions.py +0 -81
- rasa/keys +0 -1
- {rasa_pro-3.12.5.dist-info → rasa_pro-3.12.6.dist-info}/NOTICE +0 -0
- {rasa_pro-3.12.5.dist-info → rasa_pro-3.12.6.dist-info}/entry_points.txt +0 -0
|
@@ -217,15 +217,12 @@
|
|
|
217
217
|
"reset_after_flow_ends": {
|
|
218
218
|
"type": "boolean"
|
|
219
219
|
},
|
|
220
|
-
"ask_confirm_digressions": {
|
|
221
|
-
"$ref": "#/$defs/ask_confirm_digressions"
|
|
222
|
-
},
|
|
223
|
-
"block_digressions": {
|
|
224
|
-
"$ref": "#/$defs/block_digressions"
|
|
225
|
-
},
|
|
226
220
|
"utter": {
|
|
227
221
|
"type": "string"
|
|
228
222
|
},
|
|
223
|
+
"force_slot_filling": {
|
|
224
|
+
"type": "boolean"
|
|
225
|
+
},
|
|
229
226
|
"rejections": {
|
|
230
227
|
"type": "array",
|
|
231
228
|
"schema_name": "list of rejections",
|
|
@@ -253,32 +250,6 @@
|
|
|
253
250
|
}
|
|
254
251
|
}
|
|
255
252
|
},
|
|
256
|
-
"ask_confirm_digressions": {
|
|
257
|
-
"oneOf": [
|
|
258
|
-
{
|
|
259
|
-
"type": "boolean"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"type": "array",
|
|
263
|
-
"items": {
|
|
264
|
-
"type": "string"
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
]
|
|
268
|
-
},
|
|
269
|
-
"block_digressions": {
|
|
270
|
-
"oneOf": [
|
|
271
|
-
{
|
|
272
|
-
"type": "boolean"
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
"type": "array",
|
|
276
|
-
"items": {
|
|
277
|
-
"type": "string"
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
]
|
|
281
|
-
},
|
|
282
253
|
"flow": {
|
|
283
254
|
"required": [
|
|
284
255
|
"steps",
|
|
@@ -340,12 +311,6 @@
|
|
|
340
311
|
"persisted_slots": {
|
|
341
312
|
"$ref": "#/$defs/persisted_slots"
|
|
342
313
|
},
|
|
343
|
-
"ask_confirm_digressions": {
|
|
344
|
-
"$ref": "#/$defs/ask_confirm_digressions"
|
|
345
|
-
},
|
|
346
|
-
"block_digressions": {
|
|
347
|
-
"$ref": "#/$defs/block_digressions"
|
|
348
|
-
},
|
|
349
314
|
"run_pattern_completed": {
|
|
350
315
|
"type": "boolean"
|
|
351
316
|
}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from dataclasses import dataclass
|
|
3
|
+
from dataclasses import dataclass
|
|
4
4
|
from typing import Any, Dict, List, Set, Text
|
|
5
5
|
|
|
6
6
|
from rasa.shared.constants import ACTION_ASK_PREFIX, UTTER_ASK_PREFIX
|
|
7
|
-
from rasa.shared.core.constants import (
|
|
8
|
-
KEY_ASK_CONFIRM_DIGRESSIONS,
|
|
9
|
-
KEY_BLOCK_DIGRESSIONS,
|
|
10
|
-
)
|
|
11
7
|
from rasa.shared.core.flows.flow_step import FlowStep
|
|
12
|
-
from rasa.shared.core.flows.utils import extract_digression_prop
|
|
13
8
|
from rasa.shared.core.slots import SlotRejection
|
|
14
9
|
|
|
15
10
|
|
|
@@ -29,10 +24,8 @@ class CollectInformationFlowStep(FlowStep):
|
|
|
29
24
|
"""Whether to always ask the question even if the slot is already filled."""
|
|
30
25
|
reset_after_flow_ends: bool = True
|
|
31
26
|
"""Whether to reset the slot value at the end of the flow."""
|
|
32
|
-
|
|
33
|
-
"""
|
|
34
|
-
block_digressions: List[str] = field(default_factory=list)
|
|
35
|
-
"""The flow id digressions that should be blocked during the flow step."""
|
|
27
|
+
force_slot_filling: bool = False
|
|
28
|
+
"""Whether to keep only the SetSlot command for the collected slot."""
|
|
36
29
|
|
|
37
30
|
@classmethod
|
|
38
31
|
def from_json(
|
|
@@ -60,10 +53,7 @@ class CollectInformationFlowStep(FlowStep):
|
|
|
60
53
|
SlotRejection.from_dict(rejection)
|
|
61
54
|
for rejection in data.get("rejections", [])
|
|
62
55
|
],
|
|
63
|
-
|
|
64
|
-
KEY_ASK_CONFIRM_DIGRESSIONS, data
|
|
65
|
-
),
|
|
66
|
-
block_digressions=extract_digression_prop(KEY_BLOCK_DIGRESSIONS, data),
|
|
56
|
+
force_slot_filling=data.get("force_slot_filling", False),
|
|
67
57
|
**base.__dict__,
|
|
68
58
|
)
|
|
69
59
|
|
|
@@ -79,10 +69,7 @@ class CollectInformationFlowStep(FlowStep):
|
|
|
79
69
|
data["ask_before_filling"] = self.ask_before_filling
|
|
80
70
|
data["reset_after_flow_ends"] = self.reset_after_flow_ends
|
|
81
71
|
data["rejections"] = [rejection.as_dict() for rejection in self.rejections]
|
|
82
|
-
data["
|
|
83
|
-
data["block_digressions"] = (
|
|
84
|
-
self.block_digressions if self.block_digressions else False
|
|
85
|
-
)
|
|
72
|
+
data["force_slot_filling"] = self.force_slot_filling
|
|
86
73
|
|
|
87
74
|
return data
|
|
88
75
|
|
rasa/shared/core/flows/utils.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Any, Dict,
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Dict, Set, Text
|
|
2
2
|
|
|
3
3
|
from rasa.shared.utils.io import raise_deprecation_warning
|
|
4
4
|
|
|
@@ -8,7 +8,6 @@ if TYPE_CHECKING:
|
|
|
8
8
|
|
|
9
9
|
RESET_PROPERTY_NAME = "reset_after_flow_ends"
|
|
10
10
|
PERSIST_PROPERTY_NAME = "persisted_slots"
|
|
11
|
-
ALL_LABEL = "ALL"
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
def warn_deprecated_collect_step_config() -> None:
|
|
@@ -45,20 +44,6 @@ def get_invalid_slot_persistence_config_error_message(
|
|
|
45
44
|
)
|
|
46
45
|
|
|
47
46
|
|
|
48
|
-
def extract_digression_prop(prop: str, data: Dict[str, Any]) -> List[str]:
|
|
49
|
-
"""Extracts the digression property from the data.
|
|
50
|
-
|
|
51
|
-
There can be two types of properties: ask_confirm_digressions and
|
|
52
|
-
block_digressions.
|
|
53
|
-
"""
|
|
54
|
-
digression_property = data.get(prop, [])
|
|
55
|
-
|
|
56
|
-
if isinstance(digression_property, bool):
|
|
57
|
-
digression_property = [ALL_LABEL] if digression_property else []
|
|
58
|
-
|
|
59
|
-
return digression_property
|
|
60
|
-
|
|
61
|
-
|
|
62
47
|
def extract_translations(
|
|
63
48
|
translation_data: Dict[Text, Any],
|
|
64
49
|
) -> Dict[Text, "FlowLanguageTranslation"]:
|
|
@@ -115,6 +115,18 @@ class SlotMapping(BaseModel):
|
|
|
115
115
|
)
|
|
116
116
|
data_copy[KEY_RUN_ACTION_EVERY_TURN] = deprecated_action
|
|
117
117
|
|
|
118
|
+
structlogger.warning(
|
|
119
|
+
"slot_mapping.deprecated_action_key_replaced_with_run_action_every_turn",
|
|
120
|
+
slot_name=slot_name,
|
|
121
|
+
event_info=f"The `{KEY_ACTION}` key in slot mappings "
|
|
122
|
+
f"has been replaced with "
|
|
123
|
+
f"the `{KEY_RUN_ACTION_EVERY_TURN}` key. "
|
|
124
|
+
f"This will result in the custom action "
|
|
125
|
+
f"being executed at every conversation turn "
|
|
126
|
+
f"automatically. Remove the key "
|
|
127
|
+
f"to avoid this behavior.",
|
|
128
|
+
)
|
|
129
|
+
|
|
118
130
|
run_action_every_turn = data_copy.pop(KEY_RUN_ACTION_EVERY_TURN, None)
|
|
119
131
|
|
|
120
132
|
coexistence_system = data_copy.pop(KEY_COEXISTENCE_SYSTEM, None)
|
|
@@ -636,12 +648,14 @@ class SlotFillingManager:
|
|
|
636
648
|
output_channel: "OutputChannel",
|
|
637
649
|
nlg: "NaturalLanguageGenerator",
|
|
638
650
|
recreate_tracker: bool = False,
|
|
651
|
+
slot_events: Optional[List[Event]] = None,
|
|
639
652
|
) -> List[Event]:
|
|
640
653
|
from rasa.core.actions.action import RemoteAction
|
|
641
654
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
642
655
|
from rasa.utils.endpoints import ClientResponseError
|
|
643
656
|
|
|
644
|
-
|
|
657
|
+
validated_slot_events: List[Event] = []
|
|
658
|
+
slot_events = slot_events if slot_events is not None else []
|
|
645
659
|
remote_action = RemoteAction(custom_action, self._action_endpoint)
|
|
646
660
|
disallowed_types = set()
|
|
647
661
|
|
|
@@ -661,9 +675,9 @@ class SlotFillingManager:
|
|
|
661
675
|
)
|
|
662
676
|
for event in custom_events:
|
|
663
677
|
if isinstance(event, SlotSet):
|
|
664
|
-
|
|
678
|
+
validated_slot_events.append(event)
|
|
665
679
|
elif isinstance(event, BotUttered):
|
|
666
|
-
|
|
680
|
+
validated_slot_events.append(event)
|
|
667
681
|
else:
|
|
668
682
|
disallowed_types.add(event.type_name)
|
|
669
683
|
except (RasaException, ClientResponseError) as e:
|
|
@@ -687,7 +701,7 @@ class SlotFillingManager:
|
|
|
687
701
|
f"updated with this event.",
|
|
688
702
|
)
|
|
689
703
|
|
|
690
|
-
return
|
|
704
|
+
return validated_slot_events
|
|
691
705
|
|
|
692
706
|
async def execute_validation_action(
|
|
693
707
|
self,
|
|
@@ -710,7 +724,11 @@ class SlotFillingManager:
|
|
|
710
724
|
return cast(List[Event], slot_events)
|
|
711
725
|
|
|
712
726
|
validate_events = await self._run_custom_action(
|
|
713
|
-
ACTION_VALIDATE_SLOT_MAPPINGS,
|
|
727
|
+
ACTION_VALIDATE_SLOT_MAPPINGS,
|
|
728
|
+
output_channel,
|
|
729
|
+
nlg,
|
|
730
|
+
recreate_tracker=True,
|
|
731
|
+
slot_events=cast(List[Event], slot_events),
|
|
714
732
|
)
|
|
715
733
|
validated_slot_names = [
|
|
716
734
|
event.key for event in validate_events if isinstance(event, SlotSet)
|
rasa/shared/nlu/constants.py
CHANGED
rasa/shared/utils/common.py
CHANGED
|
@@ -7,7 +7,17 @@ import os
|
|
|
7
7
|
import pkgutil
|
|
8
8
|
import sys
|
|
9
9
|
from types import ModuleType
|
|
10
|
-
from typing import
|
|
10
|
+
from typing import (
|
|
11
|
+
Any,
|
|
12
|
+
Callable,
|
|
13
|
+
Collection,
|
|
14
|
+
Dict,
|
|
15
|
+
List,
|
|
16
|
+
Optional,
|
|
17
|
+
Sequence,
|
|
18
|
+
Text,
|
|
19
|
+
Type,
|
|
20
|
+
)
|
|
11
21
|
|
|
12
22
|
import rasa.shared.utils.io
|
|
13
23
|
from rasa.exceptions import MissingDependencyException
|
rasa/validator.py
CHANGED
|
@@ -48,7 +48,7 @@ from rasa.shared.core.domain import (
|
|
|
48
48
|
Domain,
|
|
49
49
|
)
|
|
50
50
|
from rasa.shared.core.events import ActionExecuted, ActiveLoop, UserUttered
|
|
51
|
-
from rasa.shared.core.flows import
|
|
51
|
+
from rasa.shared.core.flows import FlowsList
|
|
52
52
|
from rasa.shared.core.flows.constants import KEY_NAME, KEY_TRANSLATION
|
|
53
53
|
from rasa.shared.core.flows.flow_step_links import IfFlowStepLink
|
|
54
54
|
from rasa.shared.core.flows.steps.action import ActionFlowStep
|
|
@@ -56,7 +56,6 @@ from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
|
|
|
56
56
|
from rasa.shared.core.flows.steps.link import LinkFlowStep
|
|
57
57
|
from rasa.shared.core.flows.steps.set_slots import SetSlotsFlowStep
|
|
58
58
|
from rasa.shared.core.flows.utils import (
|
|
59
|
-
ALL_LABEL,
|
|
60
59
|
get_duplicate_slot_persistence_config_error_message,
|
|
61
60
|
get_invalid_slot_persistence_config_error_message,
|
|
62
61
|
warn_deprecated_collect_step_config,
|
|
@@ -1281,7 +1280,6 @@ class Validator:
|
|
|
1281
1280
|
self.verify_unique_flows(),
|
|
1282
1281
|
self.verify_predicates(),
|
|
1283
1282
|
self.verify_slot_persistence_configuration(),
|
|
1284
|
-
self.verify_digression_configuration(),
|
|
1285
1283
|
]
|
|
1286
1284
|
|
|
1287
1285
|
all_good = all(flow_validation_conditions)
|
|
@@ -1830,126 +1828,6 @@ class Validator:
|
|
|
1830
1828
|
|
|
1831
1829
|
return all_good
|
|
1832
1830
|
|
|
1833
|
-
def verify_digression_configuration(self) -> bool:
|
|
1834
|
-
"""Validates the digression configuration in flows."""
|
|
1835
|
-
all_good = True
|
|
1836
|
-
|
|
1837
|
-
for flow in self.flows.underlying_flows:
|
|
1838
|
-
all_good = self._validate_ask_confirm_digressions(flow, all_good)
|
|
1839
|
-
all_good = self._validate_block_digressions(flow, all_good)
|
|
1840
|
-
|
|
1841
|
-
return all_good
|
|
1842
|
-
|
|
1843
|
-
def _validate_ask_confirm_digressions(self, flow: Flow, all_good: bool) -> bool:
|
|
1844
|
-
"""Validates the ask_confirm_digressions configuration in a flow."""
|
|
1845
|
-
for flow_id in flow.ask_confirm_digressions:
|
|
1846
|
-
if flow_id == ALL_LABEL:
|
|
1847
|
-
continue
|
|
1848
|
-
if flow_id not in self.flows.flow_ids:
|
|
1849
|
-
structlogger.error(
|
|
1850
|
-
"validator.verify_digression_configuration.ask_confirm_digressions",
|
|
1851
|
-
flow=flow.id,
|
|
1852
|
-
event_info=(
|
|
1853
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1854
|
-
f"`ask_confirm_digressions` configuration of flow "
|
|
1855
|
-
f"'{flow.id}', but it is not found in the "
|
|
1856
|
-
f"flows file. Please make sure that the flow id is correct."
|
|
1857
|
-
),
|
|
1858
|
-
)
|
|
1859
|
-
all_good = False
|
|
1860
|
-
|
|
1861
|
-
if flow_id in flow.block_digressions:
|
|
1862
|
-
structlogger.error(
|
|
1863
|
-
"validator.verify_digression_configuration.overlap_digressions",
|
|
1864
|
-
flow=flow.id,
|
|
1865
|
-
event_info=(
|
|
1866
|
-
f"The flow '{flow_id}' is listed in both the "
|
|
1867
|
-
f"`ask_confirm_digressions` and `block_digressions` "
|
|
1868
|
-
f"configuration of flow '{flow.id}'. "
|
|
1869
|
-
f"Please make sure that the flow id is not listed in both "
|
|
1870
|
-
f"configurations."
|
|
1871
|
-
),
|
|
1872
|
-
)
|
|
1873
|
-
all_good = False
|
|
1874
|
-
|
|
1875
|
-
for step in flow.get_collect_steps():
|
|
1876
|
-
for flow_id in step.ask_confirm_digressions:
|
|
1877
|
-
if flow_id == ALL_LABEL:
|
|
1878
|
-
continue
|
|
1879
|
-
|
|
1880
|
-
if flow_id not in self.flows.flow_ids:
|
|
1881
|
-
structlogger.error(
|
|
1882
|
-
"validator.verify_digression_configuration.ask_confirm_digressions",
|
|
1883
|
-
flow=flow.id,
|
|
1884
|
-
step_id=step.id,
|
|
1885
|
-
event_info=(
|
|
1886
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1887
|
-
f"`ask_confirm_digressions` configuration of step "
|
|
1888
|
-
f"'{step.id}' in flow '{flow.id}', but it is "
|
|
1889
|
-
f"not found in the flows file. "
|
|
1890
|
-
f"Please make sure that the flow id is correct."
|
|
1891
|
-
),
|
|
1892
|
-
)
|
|
1893
|
-
all_good = False
|
|
1894
|
-
|
|
1895
|
-
if flow_id in step.block_digressions:
|
|
1896
|
-
structlogger.error(
|
|
1897
|
-
"validator.verify_digression_configuration.overlap_digressions",
|
|
1898
|
-
flow=flow.id,
|
|
1899
|
-
step_id=step.id,
|
|
1900
|
-
event_info=(
|
|
1901
|
-
f"The flow '{flow_id}' is listed in both the "
|
|
1902
|
-
f"`ask_confirm_digressions` and `block_digressions` "
|
|
1903
|
-
f"configuration of step '{step.id}' in flow '{flow.id}'. "
|
|
1904
|
-
f"Please make sure that the flow id is not listed in both "
|
|
1905
|
-
f"configurations."
|
|
1906
|
-
),
|
|
1907
|
-
)
|
|
1908
|
-
all_good = False
|
|
1909
|
-
|
|
1910
|
-
return all_good
|
|
1911
|
-
|
|
1912
|
-
def _validate_block_digressions(self, flow: Flow, all_good: bool) -> bool:
|
|
1913
|
-
"""Validates the block_digressions configuration in a flow."""
|
|
1914
|
-
for flow_id in flow.block_digressions:
|
|
1915
|
-
if flow_id == ALL_LABEL:
|
|
1916
|
-
continue
|
|
1917
|
-
|
|
1918
|
-
if flow_id not in self.flows.flow_ids:
|
|
1919
|
-
structlogger.error(
|
|
1920
|
-
"validator.verify_digression_configuration.block_digressions",
|
|
1921
|
-
flow=flow.id,
|
|
1922
|
-
event_info=(
|
|
1923
|
-
f"The flow '{flow_id}' is listed in the `block_digressions` "
|
|
1924
|
-
f"configuration of flow '{flow.id}', but it is not found "
|
|
1925
|
-
f"in the flows file. Please make sure that the flow id "
|
|
1926
|
-
f"is correct."
|
|
1927
|
-
),
|
|
1928
|
-
)
|
|
1929
|
-
all_good = False
|
|
1930
|
-
|
|
1931
|
-
for step in flow.get_collect_steps():
|
|
1932
|
-
for flow_id in step.block_digressions:
|
|
1933
|
-
if flow_id == ALL_LABEL:
|
|
1934
|
-
continue
|
|
1935
|
-
|
|
1936
|
-
if flow_id not in self.flows.flow_ids:
|
|
1937
|
-
structlogger.error(
|
|
1938
|
-
"validator.verify_digression_configuration.block_digressions",
|
|
1939
|
-
flow=flow.id,
|
|
1940
|
-
step_id=step.id,
|
|
1941
|
-
event_info=(
|
|
1942
|
-
f"The flow '{flow_id}' is listed in the "
|
|
1943
|
-
f"`block_digressions` configuration of step "
|
|
1944
|
-
f"'{step.id}' in flow '{flow.id}', but it is "
|
|
1945
|
-
f"not found in the flows file. "
|
|
1946
|
-
f"Please make sure that the flow id is correct."
|
|
1947
|
-
),
|
|
1948
|
-
)
|
|
1949
|
-
all_good = False
|
|
1950
|
-
|
|
1951
|
-
return all_good
|
|
1952
|
-
|
|
1953
1831
|
def verify_slot_validation(self) -> bool:
|
|
1954
1832
|
"""Validates the slot validation configuration in the domain file."""
|
|
1955
1833
|
all_good = True
|
rasa/version.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.12.
|
|
3
|
+
Version: 3.12.6
|
|
4
4
|
Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
|
|
5
|
-
Home-page: https://rasa.com
|
|
6
5
|
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
7
6
|
Author: Rasa Technologies GmbH
|
|
8
7
|
Author-email: hi@rasa.com
|
|
@@ -86,7 +85,6 @@ Requires-Dist: protobuf (>=4.23.3,<4.25.4)
|
|
|
86
85
|
Requires-Dist: psutil (>=5.9.5,<6.0.0)
|
|
87
86
|
Requires-Dist: psycopg2-binary (>=2.9.9,<2.10.0)
|
|
88
87
|
Requires-Dist: pycountry (>=22.3.5,<23.0.0)
|
|
89
|
-
Requires-Dist: pydantic (>=2.0,<3.0)
|
|
90
88
|
Requires-Dist: pydot (>=1.4,<1.5)
|
|
91
89
|
Requires-Dist: pykwalify (>=1.8,<1.9)
|
|
92
90
|
Requires-Dist: pymilvus (>=2.4.1,<2.4.2)
|
|
@@ -135,7 +133,7 @@ Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; sys_platform == "darwin"
|
|
|
135
133
|
Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; sys_platform == "linux"
|
|
136
134
|
Requires-Dist: tensorflow-macos (==2.14.1) ; sys_platform == "darwin" and platform_machine == "arm64"
|
|
137
135
|
Requires-Dist: tensorflow-metal (==1.1.0) ; (sys_platform == "darwin" and platform_machine == "arm64") and (extra == "metal")
|
|
138
|
-
Requires-Dist: tensorflow-text (==2.14.0) ; sys_platform != "win32" and
|
|
136
|
+
Requires-Dist: tensorflow-text (==2.14.0) ; sys_platform != "win32" and platform_machine != "arm64" and platform_machine != "aarch64"
|
|
139
137
|
Requires-Dist: tensorflow_hub (>=0.13.0,<0.14.0)
|
|
140
138
|
Requires-Dist: terminaltables (>=3.1.10,<3.2.0)
|
|
141
139
|
Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
|
|
@@ -150,6 +148,7 @@ Requires-Dist: webexteamssdk (>=1.6.1,<1.7.0)
|
|
|
150
148
|
Requires-Dist: websockets (>=10.4,<11.0)
|
|
151
149
|
Requires-Dist: wheel (>=0.40.0)
|
|
152
150
|
Project-URL: Documentation, https://rasa.com/docs
|
|
151
|
+
Project-URL: Homepage, https://rasa.com
|
|
153
152
|
Project-URL: Repository, https://github.com/rasahq/rasa
|
|
154
153
|
Description-Content-Type: text/markdown
|
|
155
154
|
|