rasa-pro 3.11.0__py3-none-any.whl → 3.11.0a2__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.
- README.md +396 -17
- rasa/__main__.py +15 -31
- rasa/api.py +1 -5
- rasa/cli/arguments/default_arguments.py +2 -1
- rasa/cli/arguments/shell.py +1 -5
- rasa/cli/arguments/train.py +0 -14
- rasa/cli/e2e_test.py +1 -1
- rasa/cli/evaluate.py +8 -8
- rasa/cli/inspect.py +5 -7
- rasa/cli/interactive.py +0 -1
- rasa/cli/llm_fine_tuning.py +1 -1
- rasa/cli/project_templates/calm/config.yml +7 -5
- rasa/cli/project_templates/calm/endpoints.yml +2 -15
- rasa/cli/project_templates/tutorial/config.yml +5 -8
- rasa/cli/project_templates/tutorial/data/flows.yml +1 -1
- rasa/cli/project_templates/tutorial/data/patterns.yml +0 -5
- rasa/cli/project_templates/tutorial/domain.yml +0 -14
- rasa/cli/project_templates/tutorial/endpoints.yml +0 -5
- rasa/cli/run.py +1 -1
- rasa/cli/scaffold.py +2 -4
- rasa/cli/studio/studio.py +8 -18
- rasa/cli/studio/upload.py +15 -0
- rasa/cli/train.py +0 -3
- rasa/cli/utils.py +1 -6
- rasa/cli/x.py +8 -8
- rasa/constants.py +1 -3
- rasa/core/actions/action.py +33 -75
- rasa/core/actions/e2e_stub_custom_action_executor.py +1 -5
- rasa/core/actions/http_custom_action_executor.py +0 -4
- rasa/core/channels/channel.py +0 -20
- rasa/core/channels/development_inspector.py +2 -8
- rasa/core/channels/inspector/dist/assets/{arc-bc141fb2.js → arc-6852c607.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-be2db283.js → c4Diagram-d0fbc5ce-acc952b2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-55366915.js → classDiagram-936ed81e-848a7597.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-bb529518.js → classDiagram-v2-c3cb15f1-a73d3e68.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-b0ec81d6.js → createText-62fc7601-e5ee049d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-6166330c.js → edges-f2ad444c-771e517e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-5ccc6a8e.js → erDiagram-9d236eb7-aa347178.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-fca3bfe4.js → flowDb-1972c806-651fc57d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-4739080f.js → flowDiagram-7ea5b25a-ca67804f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-587d82d8.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-7c1b0e0f.js → flowchart-elk-definition-abe16c3d-2dbc568d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-772fd050.js → ganttDiagram-9b5ea136-25a65bd8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-8eae1dc9.js → gitGraphDiagram-99d0ae7c-fdc7378d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-f55afcdf.js → index-2c4b9a3b-6f1fd606.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-e7cef9de.js → index-efdd30c1.js} +68 -68
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-124d4a14.js → infoDiagram-736b4530-cb1a041a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-7c4fae44.js → journeyDiagram-df861f2b-14609879.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-b9885fb6.js → layout-2490f52b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-7c59abb6.js → line-40186f1f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-4776f780.js → linear-08814e93.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-2332c46c.js → mindmap-definition-beec6740-1a534584.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-8fb39303.js → pieDiagram-dbbf0591-72397b61.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-3c7180a2.js → quadrantDiagram-4d7f4fd6-3bb0b6a3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-e910bcb8.js → requirementDiagram-6fc4c22a-57334f61.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-ead16c89.js → sankeyDiagram-8f13d901-111e1297.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-29a02a19.js → sequenceDiagram-b655622a-10bcfe62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-042b3137.js → stateDiagram-59f0c015-acaf7513.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-2178c0f3.js → stateDiagram-v2-2b26beab-3ec2a235.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-080da4f6-23ffa4fc.js → styles-080da4f6-62730289.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-94f59763.js → styles-3dcbcfbf-5284ee76.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-78a6bebc.js → styles-9c745c82-642435e3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-eae2a6f6.js → svgDrawCommon-4835440b-b250a350.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-5c968d92.js → timeline-definition-5b62e21b-c2b147ed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-fd3db0d5.js → xychartDiagram-2b33534f-f92cfea9.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +1 -1
- rasa/core/channels/inspector/src/helpers/audiostream.ts +16 -77
- rasa/core/channels/socketio.py +2 -7
- rasa/core/channels/telegram.py +1 -1
- rasa/core/channels/twilio.py +1 -1
- rasa/core/channels/voice_ready/audiocodes.py +4 -15
- rasa/core/channels/voice_ready/jambonz.py +4 -15
- rasa/core/channels/voice_ready/twilio_voice.py +21 -6
- rasa/core/channels/voice_ready/utils.py +5 -6
- rasa/core/channels/voice_stream/asr/asr_engine.py +1 -19
- rasa/core/channels/voice_stream/asr/asr_event.py +0 -5
- rasa/core/channels/voice_stream/asr/deepgram.py +15 -28
- rasa/core/channels/voice_stream/audio_bytes.py +0 -1
- rasa/core/channels/voice_stream/browser_audio.py +9 -32
- rasa/core/channels/voice_stream/tts/azure.py +3 -9
- rasa/core/channels/voice_stream/tts/cartesia.py +8 -12
- rasa/core/channels/voice_stream/tts/tts_engine.py +1 -11
- rasa/core/channels/voice_stream/twilio_media_streams.py +19 -28
- rasa/core/channels/voice_stream/util.py +4 -4
- rasa/core/channels/voice_stream/voice_channel.py +42 -222
- rasa/core/featurizers/single_state_featurizer.py +1 -22
- rasa/core/featurizers/tracker_featurizers.py +18 -115
- rasa/core/information_retrieval/qdrant.py +0 -1
- rasa/core/nlg/contextual_response_rephraser.py +25 -44
- rasa/core/persistor.py +34 -191
- rasa/core/policies/enterprise_search_policy.py +60 -119
- rasa/core/policies/flows/flow_executor.py +4 -7
- rasa/core/policies/intentless_policy.py +22 -82
- rasa/core/policies/ted_policy.py +33 -58
- rasa/core/policies/unexpected_intent_policy.py +7 -15
- rasa/core/processor.py +5 -32
- rasa/core/training/interactive.py +35 -34
- rasa/core/utils.py +22 -58
- rasa/dialogue_understanding/coexistence/llm_based_router.py +12 -39
- rasa/dialogue_understanding/commands/__init__.py +0 -4
- rasa/dialogue_understanding/commands/change_flow_command.py +0 -6
- rasa/dialogue_understanding/commands/utils.py +0 -5
- rasa/dialogue_understanding/generator/constants.py +0 -2
- rasa/dialogue_understanding/generator/flow_retrieval.py +4 -49
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +23 -37
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +10 -57
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +1 -19
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +0 -3
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +10 -90
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +0 -53
- rasa/dialogue_understanding/processor/command_processor.py +1 -21
- rasa/e2e_test/assertions.py +16 -133
- rasa/e2e_test/assertions_schema.yml +0 -23
- rasa/e2e_test/e2e_test_case.py +6 -85
- rasa/e2e_test/e2e_test_runner.py +4 -6
- rasa/e2e_test/utils/io.py +1 -3
- rasa/engine/loader.py +0 -12
- rasa/engine/validation.py +11 -541
- rasa/keys +1 -0
- rasa/llm_fine_tuning/notebooks/unsloth_finetuning.ipynb +407 -0
- rasa/model_training.py +7 -29
- rasa/nlu/classifiers/diet_classifier.py +25 -38
- rasa/nlu/classifiers/logistic_regression_classifier.py +9 -22
- rasa/nlu/classifiers/sklearn_intent_classifier.py +16 -37
- rasa/nlu/extractors/crf_entity_extractor.py +50 -93
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +16 -45
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +17 -52
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +3 -5
- rasa/nlu/tokenizers/whitespace_tokenizer.py +14 -3
- rasa/server.py +1 -3
- rasa/shared/constants.py +0 -61
- rasa/shared/core/constants.py +0 -9
- rasa/shared/core/domain.py +5 -8
- rasa/shared/core/flows/flow.py +0 -5
- rasa/shared/core/flows/flows_list.py +1 -5
- rasa/shared/core/flows/flows_yaml_schema.json +0 -10
- rasa/shared/core/flows/validation.py +0 -96
- rasa/shared/core/flows/yaml_flows_io.py +4 -13
- rasa/shared/core/slots.py +0 -5
- rasa/shared/importers/importer.py +2 -19
- rasa/shared/importers/rasa.py +1 -5
- rasa/shared/nlu/training_data/features.py +2 -120
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +3 -18
- rasa/shared/providers/_configs/azure_openai_client_config.py +3 -5
- rasa/shared/providers/_configs/openai_client_config.py +1 -1
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +0 -1
- rasa/shared/providers/_configs/utils.py +0 -16
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +29 -18
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +21 -54
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +0 -24
- rasa/shared/providers/llm/_base_litellm_client.py +31 -63
- rasa/shared/providers/llm/azure_openai_llm_client.py +29 -50
- rasa/shared/providers/llm/default_litellm_llm_client.py +0 -24
- rasa/shared/providers/llm/self_hosted_llm_client.py +29 -17
- rasa/shared/providers/mappings.py +0 -19
- rasa/shared/utils/common.py +2 -37
- rasa/shared/utils/io.py +6 -28
- rasa/shared/utils/llm.py +46 -353
- rasa/shared/utils/yaml.py +82 -181
- rasa/studio/auth.py +5 -3
- rasa/studio/config.py +4 -13
- rasa/studio/constants.py +0 -1
- rasa/studio/data_handler.py +4 -13
- rasa/studio/upload.py +80 -175
- rasa/telemetry.py +17 -94
- rasa/tracing/config.py +1 -3
- rasa/tracing/instrumentation/attribute_extractors.py +17 -94
- rasa/tracing/instrumentation/instrumentation.py +0 -121
- rasa/utils/common.py +0 -5
- rasa/utils/endpoints.py +1 -27
- rasa/utils/io.py +81 -7
- rasa/utils/log_utils.py +2 -9
- rasa/utils/tensorflow/model_data.py +193 -2
- rasa/validator.py +4 -110
- rasa/version.py +1 -1
- rasa_pro-3.11.0a2.dist-info/METADATA +576 -0
- {rasa_pro-3.11.0.dist-info → rasa_pro-3.11.0a2.dist-info}/RECORD +181 -213
- rasa/core/actions/action_repeat_bot_messages.py +0 -89
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-736177bf.js +0 -1
- rasa/core/channels/voice_stream/asr/azure.py +0 -129
- rasa/core/channels/voice_stream/call_state.py +0 -23
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +0 -60
- rasa/dialogue_understanding/commands/user_silence_command.py +0 -59
- rasa/dialogue_understanding/patterns/repeat.py +0 -37
- rasa/dialogue_understanding/patterns/user_silence.py +0 -37
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +0 -40
- rasa/model_manager/model_api.py +0 -559
- rasa/model_manager/runner_service.py +0 -286
- rasa/model_manager/socket_bridge.py +0 -146
- rasa/model_manager/studio_jwt_auth.py +0 -86
- rasa/model_manager/trainer_service.py +0 -325
- rasa/model_manager/utils.py +0 -87
- rasa/model_manager/warm_rasa_process.py +0 -187
- rasa/model_service.py +0 -112
- rasa/shared/core/flows/utils.py +0 -39
- rasa/shared/providers/_configs/litellm_router_client_config.py +0 -220
- rasa/shared/providers/_configs/model_group_config.py +0 -167
- rasa/shared/providers/_configs/rasa_llm_client_config.py +0 -73
- rasa/shared/providers/_utils.py +0 -79
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +0 -135
- rasa/shared/providers/llm/litellm_router_llm_client.py +0 -182
- rasa/shared/providers/llm/rasa_llm_client.py +0 -112
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +0 -183
- rasa/shared/providers/router/router_client.py +0 -73
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +0 -31
- rasa/shared/utils/health_check/health_check.py +0 -258
- rasa/shared/utils/health_check/llm_health_check_mixin.py +0 -31
- rasa/utils/sanic_error_handler.py +0 -32
- rasa/utils/tensorflow/feature_array.py +0 -366
- rasa_pro-3.11.0.dist-info/METADATA +0 -198
- {rasa_pro-3.11.0.dist-info → rasa_pro-3.11.0a2.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.0.dist-info → rasa_pro-3.11.0a2.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.0.dist-info → rasa_pro-3.11.0a2.dist-info}/entry_points.txt +0 -0
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
from typing import Dict, Any, List, Tuple, Optional, Union
|
|
2
|
-
|
|
3
|
-
from safetensors.numpy import save_file
|
|
4
|
-
import numpy as np
|
|
5
|
-
from safetensors.numpy import load_file
|
|
6
|
-
import scipy.sparse
|
|
7
|
-
|
|
8
|
-
import rasa.shared.utils.io
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def _recursive_serialize(
|
|
12
|
-
array: Any, prefix: str, data_dict: Dict[str, Any], metadata: List[Dict[str, Any]]
|
|
13
|
-
) -> None:
|
|
14
|
-
"""Recursively serialize arrays and matrices for high dimensional data."""
|
|
15
|
-
if isinstance(array, np.ndarray) and array.ndim <= 2:
|
|
16
|
-
data_key = f"{prefix}_array"
|
|
17
|
-
data_dict[data_key] = array
|
|
18
|
-
metadata.append({"type": "dense", "key": data_key, "shape": array.shape})
|
|
19
|
-
|
|
20
|
-
elif isinstance(array, list) and all([isinstance(v, float) for v in array]):
|
|
21
|
-
data_key = f"{prefix}_list"
|
|
22
|
-
data_dict[data_key] = np.array(array, dtype=np.float32)
|
|
23
|
-
metadata.append({"type": "list", "key": data_key})
|
|
24
|
-
|
|
25
|
-
elif isinstance(array, list) and all([isinstance(v, int) for v in array]):
|
|
26
|
-
data_key = f"{prefix}_list"
|
|
27
|
-
data_dict[data_key] = np.array(array, dtype=np.int64)
|
|
28
|
-
metadata.append({"type": "list", "key": data_key})
|
|
29
|
-
|
|
30
|
-
elif isinstance(array, scipy.sparse.spmatrix):
|
|
31
|
-
data_key_data = f"{prefix}_data"
|
|
32
|
-
data_key_row = f"{prefix}_row"
|
|
33
|
-
data_key_col = f"{prefix}_col"
|
|
34
|
-
array = array.tocoo()
|
|
35
|
-
data_dict.update(
|
|
36
|
-
{
|
|
37
|
-
data_key_data: array.data,
|
|
38
|
-
data_key_row: array.row,
|
|
39
|
-
data_key_col: array.col,
|
|
40
|
-
}
|
|
41
|
-
)
|
|
42
|
-
metadata.append({"type": "sparse", "key": prefix, "shape": array.shape})
|
|
43
|
-
|
|
44
|
-
elif isinstance(array, list) or isinstance(array, np.ndarray):
|
|
45
|
-
group_metadata = {"type": "group", "subcomponents": []}
|
|
46
|
-
for idx, item in enumerate(array):
|
|
47
|
-
new_prefix = f"{prefix}_{idx}"
|
|
48
|
-
_recursive_serialize(
|
|
49
|
-
item, new_prefix, data_dict, group_metadata["subcomponents"]
|
|
50
|
-
)
|
|
51
|
-
metadata.append(group_metadata)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def _serialize_nested_data(
|
|
55
|
-
nested_data: Dict[str, Dict[str, List["FeatureArray"]]],
|
|
56
|
-
prefix: str,
|
|
57
|
-
data_dict: Dict[str, np.ndarray],
|
|
58
|
-
metadata: List[Dict[str, Union[str, List]]],
|
|
59
|
-
) -> None:
|
|
60
|
-
"""Handle serialization across dictionary and list levels."""
|
|
61
|
-
for outer_key, inner_dict in nested_data.items():
|
|
62
|
-
inner_metadata = {"key": outer_key, "components": []}
|
|
63
|
-
|
|
64
|
-
for inner_key, feature_arrays in inner_dict.items():
|
|
65
|
-
array_metadata = {
|
|
66
|
-
"key": inner_key,
|
|
67
|
-
"number_of_dimensions": feature_arrays[0].number_of_dimensions,
|
|
68
|
-
"features": [],
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
for idx, feature_array in enumerate(feature_arrays):
|
|
72
|
-
feature_prefix = f"{prefix}_{outer_key}_{inner_key}_{idx}"
|
|
73
|
-
_recursive_serialize(
|
|
74
|
-
feature_array.tolist(),
|
|
75
|
-
feature_prefix,
|
|
76
|
-
data_dict,
|
|
77
|
-
array_metadata["features"],
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
inner_metadata["components"].append(array_metadata) # type:ignore[attr-defined]
|
|
81
|
-
|
|
82
|
-
metadata.append(inner_metadata)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def serialize_nested_feature_arrays(
|
|
86
|
-
nested_feature_array: Dict[str, Dict[str, List["FeatureArray"]]],
|
|
87
|
-
data_filename: str,
|
|
88
|
-
metadata_filename: str,
|
|
89
|
-
) -> None:
|
|
90
|
-
data_dict: Dict[str, np.ndarray] = {}
|
|
91
|
-
metadata: List[Dict[str, Union[str, List]]] = []
|
|
92
|
-
|
|
93
|
-
_serialize_nested_data(nested_feature_array, "component", data_dict, metadata)
|
|
94
|
-
|
|
95
|
-
# Save serialized data and metadata
|
|
96
|
-
save_file(data_dict, data_filename)
|
|
97
|
-
rasa.shared.utils.io.dump_obj_as_json_to_file(metadata_filename, metadata)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
def _recursive_deserialize(
|
|
101
|
-
metadata: List[Dict[str, Any]], data: Dict[str, Any]
|
|
102
|
-
) -> List[Any]:
|
|
103
|
-
"""Recursively deserialize arrays and matrices for high dimensional data."""
|
|
104
|
-
result = []
|
|
105
|
-
|
|
106
|
-
for item in metadata:
|
|
107
|
-
if item["type"] == "dense":
|
|
108
|
-
key = item["key"]
|
|
109
|
-
array = np.asarray(data[key]).reshape(item["shape"])
|
|
110
|
-
result.append(array)
|
|
111
|
-
|
|
112
|
-
elif item["type"] == "list":
|
|
113
|
-
key = item["key"]
|
|
114
|
-
result.append(list(data[key]))
|
|
115
|
-
|
|
116
|
-
elif item["type"] == "sparse":
|
|
117
|
-
data_vals = data[f"{item['key']}_data"]
|
|
118
|
-
row_vals = data[f"{item['key']}_row"]
|
|
119
|
-
col_vals = data[f"{item['key']}_col"]
|
|
120
|
-
sparse_matrix = scipy.sparse.coo_matrix(
|
|
121
|
-
(data_vals, (row_vals, col_vals)), shape=item["shape"]
|
|
122
|
-
)
|
|
123
|
-
result.append(sparse_matrix)
|
|
124
|
-
elif item["type"] == "group":
|
|
125
|
-
sublist = _recursive_deserialize(item["subcomponents"], data)
|
|
126
|
-
result.append(sublist)
|
|
127
|
-
|
|
128
|
-
return result
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def _deserialize_nested_data(
|
|
132
|
-
metadata: List[Dict[str, Any]], data_dict: Dict[str, Any]
|
|
133
|
-
) -> Dict[str, Dict[str, List["FeatureArray"]]]:
|
|
134
|
-
"""Handle deserialization across all dictionary and list levels."""
|
|
135
|
-
result: Dict[str, Dict[str, List["FeatureArray"]]] = {}
|
|
136
|
-
|
|
137
|
-
for outer_item in metadata:
|
|
138
|
-
outer_key = outer_item["key"]
|
|
139
|
-
result[outer_key] = {}
|
|
140
|
-
|
|
141
|
-
for inner_item in outer_item["components"]:
|
|
142
|
-
inner_key = inner_item["key"]
|
|
143
|
-
feature_arrays = []
|
|
144
|
-
|
|
145
|
-
# Reconstruct the list of FeatureArrays
|
|
146
|
-
for feature_item in inner_item["features"]:
|
|
147
|
-
# Reconstruct the list of FeatureArrays
|
|
148
|
-
feature_array_data = _recursive_deserialize([feature_item], data_dict)
|
|
149
|
-
# Prepare the input for the FeatureArray;
|
|
150
|
-
# ensure it is np.ndarray compatible
|
|
151
|
-
input_array = np.array(feature_array_data[0], dtype=object)
|
|
152
|
-
feature_array = FeatureArray(
|
|
153
|
-
input_array, inner_item["number_of_dimensions"]
|
|
154
|
-
)
|
|
155
|
-
feature_arrays.append(feature_array)
|
|
156
|
-
|
|
157
|
-
result[outer_key][inner_key] = feature_arrays
|
|
158
|
-
|
|
159
|
-
return result
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
def deserialize_nested_feature_arrays(
|
|
163
|
-
data_filename: str, metadata_filename: str
|
|
164
|
-
) -> Dict[str, Dict[str, List["FeatureArray"]]]:
|
|
165
|
-
metadata = rasa.shared.utils.io.read_json_file(metadata_filename)
|
|
166
|
-
data_dict = load_file(data_filename)
|
|
167
|
-
|
|
168
|
-
return _deserialize_nested_data(metadata, data_dict)
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
class FeatureArray(np.ndarray):
|
|
172
|
-
"""Stores any kind of features ready to be used by a RasaModel.
|
|
173
|
-
|
|
174
|
-
Next to the input numpy array of features, it also received the number of
|
|
175
|
-
dimensions of the features.
|
|
176
|
-
As our features can have 1 to 4 dimensions we might have different number of numpy
|
|
177
|
-
arrays stacked. The number of dimensions helps us to figure out how to handle this
|
|
178
|
-
particular feature array. Also, it is automatically determined whether the feature
|
|
179
|
-
array is sparse or not and the number of units is determined as well.
|
|
180
|
-
|
|
181
|
-
Subclassing np.array: https://numpy.org/doc/stable/user/basics.subclassing.html
|
|
182
|
-
"""
|
|
183
|
-
|
|
184
|
-
def __new__(
|
|
185
|
-
cls, input_array: np.ndarray, number_of_dimensions: int
|
|
186
|
-
) -> "FeatureArray":
|
|
187
|
-
"""Create and return a new object. See help(type) for accurate signature."""
|
|
188
|
-
FeatureArray._validate_number_of_dimensions(number_of_dimensions, input_array)
|
|
189
|
-
|
|
190
|
-
feature_array = np.asarray(input_array).view(cls)
|
|
191
|
-
|
|
192
|
-
if number_of_dimensions <= 2:
|
|
193
|
-
feature_array.units = input_array.shape[-1]
|
|
194
|
-
feature_array.is_sparse = isinstance(input_array[0], scipy.sparse.spmatrix)
|
|
195
|
-
elif number_of_dimensions == 3:
|
|
196
|
-
feature_array.units = input_array[0].shape[-1]
|
|
197
|
-
feature_array.is_sparse = isinstance(input_array[0], scipy.sparse.spmatrix)
|
|
198
|
-
elif number_of_dimensions == 4:
|
|
199
|
-
feature_array.units = input_array[0][0].shape[-1]
|
|
200
|
-
feature_array.is_sparse = isinstance(
|
|
201
|
-
input_array[0][0], scipy.sparse.spmatrix
|
|
202
|
-
)
|
|
203
|
-
else:
|
|
204
|
-
raise ValueError(
|
|
205
|
-
f"Number of dimensions '{number_of_dimensions}' currently not "
|
|
206
|
-
f"supported."
|
|
207
|
-
)
|
|
208
|
-
|
|
209
|
-
feature_array.number_of_dimensions = number_of_dimensions
|
|
210
|
-
|
|
211
|
-
return feature_array
|
|
212
|
-
|
|
213
|
-
def __init__(
|
|
214
|
-
self, input_array: Any, number_of_dimensions: int, **kwargs: Any
|
|
215
|
-
) -> None:
|
|
216
|
-
"""Initialize. FeatureArray.
|
|
217
|
-
|
|
218
|
-
Needed in order to avoid 'Invalid keyword argument number_of_dimensions
|
|
219
|
-
to function FeatureArray.__init__ '
|
|
220
|
-
Args:
|
|
221
|
-
input_array: the array that contains features
|
|
222
|
-
number_of_dimensions: number of dimensions in input_array
|
|
223
|
-
"""
|
|
224
|
-
super().__init__(**kwargs)
|
|
225
|
-
self.number_of_dimensions = number_of_dimensions
|
|
226
|
-
|
|
227
|
-
def __array_finalize__(self, obj: Optional[np.ndarray]) -> None:
|
|
228
|
-
"""This method is called when the system allocates a new array from obj.
|
|
229
|
-
|
|
230
|
-
Args:
|
|
231
|
-
obj: A subclass (subtype) of ndarray.
|
|
232
|
-
"""
|
|
233
|
-
if obj is None:
|
|
234
|
-
return
|
|
235
|
-
|
|
236
|
-
self.units = getattr(obj, "units", None)
|
|
237
|
-
self.number_of_dimensions = getattr(obj, "number_of_dimensions", None) # type: ignore[assignment]
|
|
238
|
-
self.is_sparse = getattr(obj, "is_sparse", None)
|
|
239
|
-
|
|
240
|
-
default_attributes = {
|
|
241
|
-
"units": self.units,
|
|
242
|
-
"number_of_dimensions": self.number_of_dimensions,
|
|
243
|
-
"is_spare": self.is_sparse,
|
|
244
|
-
}
|
|
245
|
-
self.__dict__.update(default_attributes)
|
|
246
|
-
|
|
247
|
-
# pytype: disable=attribute-error
|
|
248
|
-
def __array_ufunc__(
|
|
249
|
-
self, ufunc: Any, method: str, *inputs: Any, **kwargs: Any
|
|
250
|
-
) -> Any:
|
|
251
|
-
"""Overwrite this method as we are subclassing numpy array.
|
|
252
|
-
|
|
253
|
-
Args:
|
|
254
|
-
ufunc: The ufunc object that was called.
|
|
255
|
-
method: A string indicating which Ufunc method was called
|
|
256
|
-
(one of "__call__", "reduce", "reduceat", "accumulate", "outer",
|
|
257
|
-
"inner").
|
|
258
|
-
*inputs: A tuple of the input arguments to the ufunc.
|
|
259
|
-
**kwargs: Any additional arguments
|
|
260
|
-
|
|
261
|
-
Returns:
|
|
262
|
-
The result of the operation.
|
|
263
|
-
"""
|
|
264
|
-
f = {
|
|
265
|
-
"reduce": ufunc.reduce,
|
|
266
|
-
"accumulate": ufunc.accumulate,
|
|
267
|
-
"reduceat": ufunc.reduceat,
|
|
268
|
-
"outer": ufunc.outer,
|
|
269
|
-
"at": ufunc.at,
|
|
270
|
-
"__call__": ufunc,
|
|
271
|
-
}
|
|
272
|
-
# convert the inputs to np.ndarray to prevent recursion, call the function,
|
|
273
|
-
# then cast it back as FeatureArray
|
|
274
|
-
output = FeatureArray(
|
|
275
|
-
f[method](*(i.view(np.ndarray) for i in inputs), **kwargs),
|
|
276
|
-
number_of_dimensions=kwargs["number_of_dimensions"],
|
|
277
|
-
)
|
|
278
|
-
output.__dict__ = self.__dict__ # carry forward attributes
|
|
279
|
-
return output
|
|
280
|
-
|
|
281
|
-
def __reduce__(self) -> Tuple[Any, Any, Any]:
|
|
282
|
-
"""Needed in order to pickle this object.
|
|
283
|
-
|
|
284
|
-
Returns:
|
|
285
|
-
A tuple.
|
|
286
|
-
"""
|
|
287
|
-
pickled_state = super(FeatureArray, self).__reduce__()
|
|
288
|
-
if isinstance(pickled_state, str):
|
|
289
|
-
raise TypeError("np array __reduce__ returned string instead of tuple.")
|
|
290
|
-
new_state = pickled_state[2] + (
|
|
291
|
-
self.number_of_dimensions,
|
|
292
|
-
self.is_sparse,
|
|
293
|
-
self.units,
|
|
294
|
-
)
|
|
295
|
-
return pickled_state[0], pickled_state[1], new_state
|
|
296
|
-
|
|
297
|
-
def __setstate__(self, state: Any, **kwargs: Any) -> None:
|
|
298
|
-
"""Sets the state.
|
|
299
|
-
|
|
300
|
-
Args:
|
|
301
|
-
state: The state argument must be a sequence that contains the following
|
|
302
|
-
elements version, shape, dtype, isFortan, rawdata.
|
|
303
|
-
**kwargs: Any additional parameter
|
|
304
|
-
"""
|
|
305
|
-
# Needed in order to load the object
|
|
306
|
-
self.number_of_dimensions = state[-3]
|
|
307
|
-
self.is_sparse = state[-2]
|
|
308
|
-
self.units = state[-1]
|
|
309
|
-
super(FeatureArray, self).__setstate__(state[0:-3], **kwargs)
|
|
310
|
-
|
|
311
|
-
# pytype: enable=attribute-error
|
|
312
|
-
|
|
313
|
-
@staticmethod
|
|
314
|
-
def _validate_number_of_dimensions(
|
|
315
|
-
number_of_dimensions: int, input_array: np.ndarray
|
|
316
|
-
) -> None:
|
|
317
|
-
"""Validates if the input array has given number of dimensions.
|
|
318
|
-
|
|
319
|
-
Args:
|
|
320
|
-
number_of_dimensions: number of dimensions
|
|
321
|
-
input_array: input array
|
|
322
|
-
|
|
323
|
-
Raises: ValueError in case the dimensions do not match
|
|
324
|
-
"""
|
|
325
|
-
# when loading the feature arrays from disk, the shape represents
|
|
326
|
-
# the correct number of dimensions
|
|
327
|
-
if len(input_array.shape) == number_of_dimensions:
|
|
328
|
-
return
|
|
329
|
-
|
|
330
|
-
_sub_array = input_array
|
|
331
|
-
dim = 0
|
|
332
|
-
# Go number_of_dimensions into the given input_array
|
|
333
|
-
for i in range(1, number_of_dimensions + 1):
|
|
334
|
-
_sub_array = _sub_array[0]
|
|
335
|
-
if isinstance(_sub_array, scipy.sparse.spmatrix):
|
|
336
|
-
dim = i
|
|
337
|
-
break
|
|
338
|
-
if isinstance(_sub_array, np.ndarray) and _sub_array.shape[0] == 0:
|
|
339
|
-
# sequence dimension is 0, we are dealing with "fake" features
|
|
340
|
-
dim = i
|
|
341
|
-
break
|
|
342
|
-
|
|
343
|
-
# If the resulting sub_array is sparse, the remaining number of dimensions
|
|
344
|
-
# should be at least 2
|
|
345
|
-
if isinstance(_sub_array, scipy.sparse.spmatrix):
|
|
346
|
-
if dim > 2:
|
|
347
|
-
raise ValueError(
|
|
348
|
-
f"Given number of dimensions '{number_of_dimensions}' does not "
|
|
349
|
-
f"match dimensions of given input array: {input_array}."
|
|
350
|
-
)
|
|
351
|
-
elif isinstance(_sub_array, np.ndarray) and _sub_array.shape[0] == 0:
|
|
352
|
-
# sequence dimension is 0, we are dealing with "fake" features,
|
|
353
|
-
# but they should be of dim 2
|
|
354
|
-
if dim > 2:
|
|
355
|
-
raise ValueError(
|
|
356
|
-
f"Given number of dimensions '{number_of_dimensions}' does not "
|
|
357
|
-
f"match dimensions of given input array: {input_array}."
|
|
358
|
-
)
|
|
359
|
-
# If the resulting sub_array is dense, the sub_array should be a single number
|
|
360
|
-
elif not np.issubdtype(type(_sub_array), np.integer) and not isinstance(
|
|
361
|
-
_sub_array, (np.float32, np.float64)
|
|
362
|
-
):
|
|
363
|
-
raise ValueError(
|
|
364
|
-
f"Given number of dimensions '{number_of_dimensions}' does not match "
|
|
365
|
-
f"dimensions of given input array: {input_array}."
|
|
366
|
-
)
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: rasa-pro
|
|
3
|
-
Version: 3.11.0
|
|
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
|
-
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
7
|
-
Author: Rasa Technologies GmbH
|
|
8
|
-
Author-email: hi@rasa.com
|
|
9
|
-
Maintainer: Tom Bocklisch
|
|
10
|
-
Maintainer-email: tom@rasa.com
|
|
11
|
-
Requires-Python: >=3.9,<3.12
|
|
12
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
-
Provides-Extra: full
|
|
20
|
-
Provides-Extra: gh-release-notes
|
|
21
|
-
Provides-Extra: jieba
|
|
22
|
-
Provides-Extra: metal
|
|
23
|
-
Provides-Extra: mlflow
|
|
24
|
-
Provides-Extra: spacy
|
|
25
|
-
Provides-Extra: transformers
|
|
26
|
-
Requires-Dist: CacheControl (>=0.14.0,<0.15.0)
|
|
27
|
-
Requires-Dist: PyJWT[crypto] (>=2.8.0,<3.0.0)
|
|
28
|
-
Requires-Dist: SQLAlchemy (>=2.0.22,<2.1.0)
|
|
29
|
-
Requires-Dist: absl-py (>=2.0,<2.1)
|
|
30
|
-
Requires-Dist: aio-pika (>=8.2.3,<9.4.4)
|
|
31
|
-
Requires-Dist: aiogram (>=2.15,<2.26)
|
|
32
|
-
Requires-Dist: aiohttp (>=3.9.4,<3.10)
|
|
33
|
-
Requires-Dist: apscheduler (>=3.10,<3.11)
|
|
34
|
-
Requires-Dist: attrs (>=23.1,<23.2)
|
|
35
|
-
Requires-Dist: azure-storage-blob (>=12.16.0,<12.17.0)
|
|
36
|
-
Requires-Dist: boto3 (>=1.35.15,<1.36.0)
|
|
37
|
-
Requires-Dist: certifi (>=2024.07.04)
|
|
38
|
-
Requires-Dist: colorama (>=0.4.6,<0.5.0) ; sys_platform == "win32"
|
|
39
|
-
Requires-Dist: colorclass (>=2.2,<2.3)
|
|
40
|
-
Requires-Dist: coloredlogs (>=15,<16)
|
|
41
|
-
Requires-Dist: colorhash (>=2.0,<2.1.0)
|
|
42
|
-
Requires-Dist: confluent-kafka (>=2.3.0,<3.0.0)
|
|
43
|
-
Requires-Dist: cryptography (>=42.0.5)
|
|
44
|
-
Requires-Dist: cvg-python-sdk (>=0.5.1,<0.6.0)
|
|
45
|
-
Requires-Dist: dask (>=2024.7.0,<2024.8.0)
|
|
46
|
-
Requires-Dist: demoji (>=1.1.0,<2.0.0)
|
|
47
|
-
Requires-Dist: diskcache (>=5.6.3,<5.7.0)
|
|
48
|
-
Requires-Dist: dnspython (==2.6.1)
|
|
49
|
-
Requires-Dist: faiss-cpu (>=1.7.4,<2.0.0)
|
|
50
|
-
Requires-Dist: faker (>=26.0.0,<27.0.0)
|
|
51
|
-
Requires-Dist: fbmessenger (>=6.0.0,<6.1.0)
|
|
52
|
-
Requires-Dist: github3.py (>=3.2.0,<3.3.0) ; extra == "gh-release-notes"
|
|
53
|
-
Requires-Dist: gitpython (>=3.1.41,<3.2.0) ; extra == "full"
|
|
54
|
-
Requires-Dist: google-auth (>=2.23.4,<3)
|
|
55
|
-
Requires-Dist: google-cloud-storage (>=2.14.0,<3.0.0)
|
|
56
|
-
Requires-Dist: hvac (>=1.2.1,<2.0.0)
|
|
57
|
-
Requires-Dist: importlib-metadata (>=8.5.0,<8.6.0)
|
|
58
|
-
Requires-Dist: importlib-resources (==6.1.3)
|
|
59
|
-
Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
|
|
60
|
-
Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
|
|
61
|
-
Requires-Dist: jsonpatch (>=1.33,<2.0)
|
|
62
|
-
Requires-Dist: jsonpickle (>=3.0,<3.1)
|
|
63
|
-
Requires-Dist: jsonschema (>=4.22)
|
|
64
|
-
Requires-Dist: keras (==2.14.0)
|
|
65
|
-
Requires-Dist: langchain (>=0.2.0,<0.3.0)
|
|
66
|
-
Requires-Dist: langchain-community (>=0.2.0,<0.3.0)
|
|
67
|
-
Requires-Dist: litellm (>=1.52.6,<1.53.0)
|
|
68
|
-
Requires-Dist: matplotlib (>=3.7,<3.8)
|
|
69
|
-
Requires-Dist: mattermostwrapper (>=2.2,<2.3)
|
|
70
|
-
Requires-Dist: mlflow (>=2.15.1,<3.0.0) ; extra == "mlflow"
|
|
71
|
-
Requires-Dist: networkx (>=3.1,<3.2)
|
|
72
|
-
Requires-Dist: numpy (>=1.26.4,<1.27.0)
|
|
73
|
-
Requires-Dist: openai (>=1.55.3,<1.56.0)
|
|
74
|
-
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
|
|
75
|
-
Requires-Dist: opentelemetry-api (>=1.16.0,<1.17.0)
|
|
76
|
-
Requires-Dist: opentelemetry-exporter-jaeger (>=1.16.0,<1.17.0)
|
|
77
|
-
Requires-Dist: opentelemetry-exporter-otlp (>=1.16.0,<1.17.0)
|
|
78
|
-
Requires-Dist: opentelemetry-sdk (>=1.16.0,<1.17.0)
|
|
79
|
-
Requires-Dist: packaging (>=23.2,<23.3)
|
|
80
|
-
Requires-Dist: pep440-version-utils (>=1.1.0,<1.2.0)
|
|
81
|
-
Requires-Dist: pluggy (>=1.2.0,<2.0.0)
|
|
82
|
-
Requires-Dist: portalocker (>=2.7.0,<3.0.0)
|
|
83
|
-
Requires-Dist: presidio-analyzer (>=2.2.33,<2.2.34)
|
|
84
|
-
Requires-Dist: presidio-anonymizer (>=2.2.354,<3.0.0)
|
|
85
|
-
Requires-Dist: prompt-toolkit (>=3.0.28,<3.0.29)
|
|
86
|
-
Requires-Dist: protobuf (>=4.23.3,<4.25.4)
|
|
87
|
-
Requires-Dist: psutil (>=5.9.5,<6.0.0)
|
|
88
|
-
Requires-Dist: psycopg2-binary (>=2.9.9,<2.10.0)
|
|
89
|
-
Requires-Dist: pycountry (>=22.3.5,<23.0.0)
|
|
90
|
-
Requires-Dist: pydantic (>=2.0,<3.0)
|
|
91
|
-
Requires-Dist: pydot (>=1.4,<1.5)
|
|
92
|
-
Requires-Dist: pykwalify (>=1.8,<1.9)
|
|
93
|
-
Requires-Dist: pymilvus (<2.4.2)
|
|
94
|
-
Requires-Dist: pymongo (>=4.10.1,<4.11.0)
|
|
95
|
-
Requires-Dist: pypred (>=0.4.0,<0.5.0)
|
|
96
|
-
Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
|
|
97
|
-
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
98
|
-
Requires-Dist: python-engineio (>=4.5.1,<6,!=5.0.0)
|
|
99
|
-
Requires-Dist: python-keycloak (>=3.12.0,<4.0.0)
|
|
100
|
-
Requires-Dist: python-socketio (>=5.8,<6)
|
|
101
|
-
Requires-Dist: pytz (>=2022.7.1,<2023.0)
|
|
102
|
-
Requires-Dist: pyyaml (>=6.0)
|
|
103
|
-
Requires-Dist: qdrant-client (>=1.9.0,<2.0.0)
|
|
104
|
-
Requires-Dist: questionary (>=1.10.0,<2.1.0)
|
|
105
|
-
Requires-Dist: randomname (>=0.2.1,<0.3.0)
|
|
106
|
-
Requires-Dist: rasa-sdk (==3.11.0)
|
|
107
|
-
Requires-Dist: redis (>=4.6.0,<6.0)
|
|
108
|
-
Requires-Dist: regex (>=2022.10.31,<2022.11)
|
|
109
|
-
Requires-Dist: requests (>=2.31.0,<2.32.0)
|
|
110
|
-
Requires-Dist: rich (>=13.4.2,<14.0.0)
|
|
111
|
-
Requires-Dist: rocketchat_API (>=1.30.0,<1.31.0)
|
|
112
|
-
Requires-Dist: ruamel.yaml (>=0.17.21,<0.17.22)
|
|
113
|
-
Requires-Dist: safetensors (>=0.4.5,<0.5.0)
|
|
114
|
-
Requires-Dist: sanic (>=22.12,<22.13)
|
|
115
|
-
Requires-Dist: sanic-cors (>=2.2.0,<2.3.0)
|
|
116
|
-
Requires-Dist: sanic-jwt (>=1.8.0,<2.0.0)
|
|
117
|
-
Requires-Dist: sanic-routing (>=22.8.0,<23.0.0)
|
|
118
|
-
Requires-Dist: scikit-learn (>=1.5.1,<1.6.0)
|
|
119
|
-
Requires-Dist: scipy (>=1.13.1,<1.14.0)
|
|
120
|
-
Requires-Dist: sentencepiece[sentencepiece] (>=0.1.99,<0.2.0) ; extra == "transformers" or extra == "full"
|
|
121
|
-
Requires-Dist: sentry-sdk (>=1.14.0,<1.15.0)
|
|
122
|
-
Requires-Dist: setuptools (>=70.0.0,<70.1.0)
|
|
123
|
-
Requires-Dist: sklearn-crfsuite (>=0.3.6,<0.4.0)
|
|
124
|
-
Requires-Dist: skops (>=0.10.0,<0.11.0)
|
|
125
|
-
Requires-Dist: slack-sdk (>=3.27.1,<3.28.0)
|
|
126
|
-
Requires-Dist: spacy (>=3.5.4,<4.0.0) ; extra == "spacy" or extra == "full"
|
|
127
|
-
Requires-Dist: structlog (>=23.1.0,<23.2.0)
|
|
128
|
-
Requires-Dist: structlog-sentry (>=2.0.3,<3.0.0)
|
|
129
|
-
Requires-Dist: tarsafe (>=0.0.5,<0.0.6)
|
|
130
|
-
Requires-Dist: tenacity (>=8.4.1,<8.5.0)
|
|
131
|
-
Requires-Dist: tensorflow (==2.14.1) ; sys_platform != "darwin" or platform_machine != "arm64"
|
|
132
|
-
Requires-Dist: tensorflow-cpu-aws (==2.14.1) ; sys_platform == "linux" and (platform_machine == "arm64" or platform_machine == "aarch64")
|
|
133
|
-
Requires-Dist: tensorflow-intel (==2.14.1) ; sys_platform == "win32"
|
|
134
|
-
Requires-Dist: tensorflow-io-gcs-filesystem (==0.31) ; sys_platform == "win32"
|
|
135
|
-
Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; sys_platform == "darwin" and platform_machine != "arm64"
|
|
136
|
-
Requires-Dist: tensorflow-io-gcs-filesystem (==0.34) ; sys_platform == "linux"
|
|
137
|
-
Requires-Dist: tensorflow-macos (==2.14.1) ; sys_platform == "darwin" and platform_machine == "arm64"
|
|
138
|
-
Requires-Dist: tensorflow-metal (==1.1.0) ; (sys_platform == "darwin" and platform_machine == "arm64") and (extra == "metal")
|
|
139
|
-
Requires-Dist: tensorflow-text (==2.14.0) ; sys_platform != "win32" and (platform_machine != "arm64" and platform_machine != "aarch64")
|
|
140
|
-
Requires-Dist: tensorflow_hub (>=0.13.0,<0.14.0)
|
|
141
|
-
Requires-Dist: terminaltables (>=3.1.10,<3.2.0)
|
|
142
|
-
Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
|
|
143
|
-
Requires-Dist: tqdm (>=4.66.2,<5.0.0)
|
|
144
|
-
Requires-Dist: transformers (>=4.36.2,<4.37.0) ; extra == "transformers" or extra == "full"
|
|
145
|
-
Requires-Dist: twilio (>=8.4,<8.5)
|
|
146
|
-
Requires-Dist: types-protobuf (==4.25.0.20240417)
|
|
147
|
-
Requires-Dist: typing-extensions (>=4.7.1,<5.0.0)
|
|
148
|
-
Requires-Dist: typing-utils (>=0.1.0,<0.2.0)
|
|
149
|
-
Requires-Dist: ujson (>=5.8,<6.0)
|
|
150
|
-
Requires-Dist: webexteamssdk (>=1.6.1,<1.7.0)
|
|
151
|
-
Requires-Dist: websockets (>=10.4,<11.0)
|
|
152
|
-
Requires-Dist: wheel (>=0.40.0)
|
|
153
|
-
Project-URL: Documentation, https://rasa.com/docs
|
|
154
|
-
Project-URL: Repository, https://github.com/rasahq/rasa
|
|
155
|
-
Description-Content-Type: text/markdown
|
|
156
|
-
|
|
157
|
-
<h1 align="center">Rasa Pro</h1>
|
|
158
|
-
|
|
159
|
-
<div align="center">
|
|
160
|
-
|
|
161
|
-
[](https://github.com/RasaHQ/rasa-private/actions)
|
|
162
|
-
[](https://sonarcloud.io/summary/new_code?id=RasaHQ_rasa)
|
|
163
|
-
[](https://rasa.com/docs/rasa-pro/)
|
|
164
|
-
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
<hr />
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
Rasa Pro is a framework for building scalable, dynamic conversational AI assistants that integrate large language models (LLMs) to enable more contextually aware and agentic interactions. Whether you’re new to conversational AI or an experienced developer, Rasa Pro offers enhanced flexibility, control, and performance for mission-critical applications.
|
|
171
|
-
|
|
172
|
-
Building on the foundation of Rasa Open Source, Rasa Pro adds advanced features like CALM (Conversational AI with Language Models) and Dialogue Understanding (DU), which enable developers to shift from traditional intent-driven systems to LLM-based agents. This allows for more robust, responsive interactions that adhere strictly to business logic, while reducing risks like prompt injection and minimizing hallucinations.
|
|
173
|
-
|
|
174
|
-
**Key Features:**
|
|
175
|
-
|
|
176
|
-
- **Flows for Business Logic:** Easily define business logic through Flows, a simplified way to describe how your AI assistant should handle conversations. Flows help streamline the development process, focusing on key tasks and reducing the complexity involved in managing conversations.
|
|
177
|
-
- **Automatic Conversation Repair:** Ensure seamless interactions by automatically handling interruptions or unexpected inputs. Developers have full control to customize these repairs based on specific use cases.
|
|
178
|
-
- **Customizable and Open:** Fully customizable code that allows developers to modify Rasa Pro to meet specific requirements, ensuring flexibility and adaptability to various conversational AI needs.
|
|
179
|
-
- **Robustness and Control:** Maintain strict adherence to business logic, preventing unwanted behaviors like prompt injection and hallucinations, leading to more reliable responses and secure interactions.
|
|
180
|
-
- **Built-in Security:** Safeguard sensitive data, control access, and ensure secure deployment, essential for production environments that demand high levels of security and compliance.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
A [free developer license](https://rasa.com/docs/rasa-pro/developer-edition/) is available so you can explore and get to know Rasa Pro. For small production deployments, the Extended Developer License allows you to take your assistant live in a limited capacity. A paid license is required for larger-scale production use, but all code is visible and can be customized as needed.
|
|
185
|
-
|
|
186
|
-
To get started right now, you can
|
|
187
|
-
|
|
188
|
-
`pip install rasa-pro`
|
|
189
|
-
|
|
190
|
-
Check out our
|
|
191
|
-
|
|
192
|
-
- [Rasa-pro Quickstart](https://rasa.com/docs/rasa-pro/installation/quickstart/),
|
|
193
|
-
- [Conversational AI with Language Models (CALM) conceptual rundown](https://rasa.com/docs/rasa-pro/calm/),
|
|
194
|
-
- [Rasa Pro / CALM tutorial](https://rasa.com/docs/rasa-pro/tutorial), and
|
|
195
|
-
- [Rasa pro changelog](https://rasa.com/docs/rasa/rasa-pro-changelog/)
|
|
196
|
-
|
|
197
|
-
for more. Also feel free to reach out to us on the [Rasa forum](https://forum.rasa.com/).
|
|
198
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|