rasa-pro 3.11.5__py3-none-any.whl → 3.11.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/brokers/kafka.py +59 -20
- rasa/core/channels/voice_stream/asr/deepgram.py +57 -16
- rasa/core/channels/voice_stream/browser_audio.py +4 -1
- rasa/core/channels/voice_stream/tts/cartesia.py +11 -2
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +1 -1
- rasa/keys +1 -0
- rasa/llm_fine_tuning/conversations.py +1 -1
- rasa/shared/constants.py +1 -0
- rasa/shared/core/constants.py +2 -0
- rasa/shared/core/events.py +67 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +6 -1
- rasa/shared/utils/schemas/events.py +2 -2
- rasa/version.py +1 -1
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.11.6.dist-info}/METADATA +7 -8
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.11.6.dist-info}/RECORD +18 -17
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.11.6.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.11.6.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.5.dist-info → rasa_pro-3.11.6.dist-info}/entry_points.txt +0 -0
rasa/core/brokers/kafka.py
CHANGED
|
@@ -12,6 +12,7 @@ import time
|
|
|
12
12
|
|
|
13
13
|
from rasa.core.brokers.broker import EventBroker
|
|
14
14
|
from rasa.core.exceptions import KafkaProducerInitializationError
|
|
15
|
+
from rasa.shared.core.events import ErrorHandled
|
|
15
16
|
from rasa.shared.utils.io import DEFAULT_ENCODING
|
|
16
17
|
from rasa.utils.endpoints import EndpointConfig
|
|
17
18
|
import rasa.shared.utils.common
|
|
@@ -119,7 +120,7 @@ class KafkaEventBroker(EventBroker):
|
|
|
119
120
|
retry_delay_in_seconds: float = 5,
|
|
120
121
|
) -> None:
|
|
121
122
|
"""Publishes events."""
|
|
122
|
-
from confluent_kafka import KafkaException
|
|
123
|
+
from confluent_kafka import KafkaError, KafkaException
|
|
123
124
|
|
|
124
125
|
if retries == 1:
|
|
125
126
|
retries = 2
|
|
@@ -143,28 +144,66 @@ class KafkaEventBroker(EventBroker):
|
|
|
143
144
|
)
|
|
144
145
|
self.producer.poll(1)
|
|
145
146
|
retries -= 1
|
|
146
|
-
except Exception as
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
147
|
+
except Exception as exc:
|
|
148
|
+
if (
|
|
149
|
+
isinstance(exc, KafkaException)
|
|
150
|
+
and exc.args[0].code() == KafkaError.MSG_SIZE_TOO_LARGE
|
|
151
|
+
):
|
|
152
|
+
logger.warning(
|
|
153
|
+
"Message size is too large for the Kafka broker. "
|
|
154
|
+
"Please check the message.max.bytes configuration. "
|
|
155
|
+
"Sending error event."
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
original_event_type = event.get("event", "")
|
|
159
|
+
sender_id = event.get("sender_id", "")
|
|
160
|
+
event = ErrorHandled(
|
|
161
|
+
error_code=KafkaError.MSG_SIZE_TOO_LARGE,
|
|
162
|
+
metadata={
|
|
163
|
+
"error_msg": f"Skipping message for event type "
|
|
164
|
+
f"'{original_event_type}' because "
|
|
165
|
+
f"of Kafka message size limit: {exc.args[0].str()}.",
|
|
166
|
+
"error_source": "KafkaEventBroker",
|
|
167
|
+
},
|
|
168
|
+
).as_dict()
|
|
169
|
+
event.update({"sender_id": sender_id})
|
|
170
|
+
else:
|
|
171
|
+
logger.error(
|
|
172
|
+
f"Could not publish message to kafka url '{self.url}'. "
|
|
173
|
+
f"Failed with error: {exc}"
|
|
174
|
+
)
|
|
175
|
+
self._retry_publish(event, retries, retry_delay_in_seconds)
|
|
165
176
|
|
|
166
177
|
logger.error("Failed to publish Kafka event.")
|
|
167
178
|
|
|
179
|
+
def _retry_publish(
|
|
180
|
+
self,
|
|
181
|
+
event: Dict[Text, Any],
|
|
182
|
+
retries: int,
|
|
183
|
+
retry_delay_in_seconds: float,
|
|
184
|
+
) -> None:
|
|
185
|
+
"""Retries publishing if the producer is not connected.
|
|
186
|
+
|
|
187
|
+
Args:
|
|
188
|
+
event: The event to publish.
|
|
189
|
+
"""
|
|
190
|
+
from confluent_kafka import KafkaException
|
|
191
|
+
|
|
192
|
+
try:
|
|
193
|
+
self._check_kafka_connection()
|
|
194
|
+
except KafkaException:
|
|
195
|
+
logger.debug("Connection to kafka lost, reconnecting...")
|
|
196
|
+
self.producer = self._create_producer()
|
|
197
|
+
try:
|
|
198
|
+
self._check_kafka_connection()
|
|
199
|
+
logger.debug("Reconnection to kafka successful")
|
|
200
|
+
self._publish(event)
|
|
201
|
+
return
|
|
202
|
+
except KafkaException:
|
|
203
|
+
pass
|
|
204
|
+
retries -= 1
|
|
205
|
+
time.sleep(retry_delay_in_seconds)
|
|
206
|
+
|
|
168
207
|
def _check_kafka_connection(self) -> None:
|
|
169
208
|
"""Verifies connection with Kafka.
|
|
170
209
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
|
-
from typing import Any, Dict, Optional
|
|
3
1
|
import json
|
|
4
2
|
import os
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
from urllib.parse import urlencode
|
|
5
6
|
|
|
6
7
|
import websockets
|
|
7
8
|
from websockets.legacy.client import WebSocketClientProtocol
|
|
@@ -19,11 +20,14 @@ from rasa.shared.constants import DEEPGRAM_API_KEY_ENV_VAR
|
|
|
19
20
|
@dataclass
|
|
20
21
|
class DeepgramASRConfig(ASREngineConfig):
|
|
21
22
|
endpoint: Optional[str] = None
|
|
22
|
-
# number of
|
|
23
|
+
# number of milliseconds of silence to determine end of speech
|
|
23
24
|
endpointing: Optional[int] = None
|
|
24
25
|
language: Optional[str] = None
|
|
25
26
|
model: Optional[str] = None
|
|
26
27
|
smart_format: Optional[bool] = None
|
|
28
|
+
# number of milliseconds of no new transcript to determine end of speech
|
|
29
|
+
# should be at least 1000 according to docs
|
|
30
|
+
utterance_end_ms: Optional[int] = None
|
|
27
31
|
|
|
28
32
|
|
|
29
33
|
class DeepgramASR(ASREngine[DeepgramASRConfig]):
|
|
@@ -37,22 +41,35 @@ class DeepgramASR(ASREngine[DeepgramASRConfig]):
|
|
|
37
41
|
"""Connect to the ASR system."""
|
|
38
42
|
deepgram_api_key = os.environ[DEEPGRAM_API_KEY_ENV_VAR]
|
|
39
43
|
extra_headers = {"Authorization": f"Token {deepgram_api_key}"}
|
|
40
|
-
api_url = self._get_api_url()
|
|
41
|
-
query_params = self._get_query_params()
|
|
42
44
|
return await websockets.connect( # type: ignore
|
|
43
|
-
|
|
45
|
+
self._get_api_url_with_query_params(),
|
|
44
46
|
extra_headers=extra_headers,
|
|
45
47
|
)
|
|
46
48
|
|
|
49
|
+
def _get_api_url_with_query_params(self) -> str:
|
|
50
|
+
"""Combine api url and query params."""
|
|
51
|
+
return self._get_api_url() + self._get_query_params()
|
|
52
|
+
|
|
47
53
|
def _get_api_url(self) -> str:
|
|
54
|
+
"""Get the api url with the configured endpoint."""
|
|
48
55
|
return f"wss://{self.config.endpoint}/v1/listen?"
|
|
49
56
|
|
|
50
57
|
def _get_query_params(self) -> str:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
"""Get the configured query parameters for the api."""
|
|
59
|
+
query_params = {
|
|
60
|
+
"encoding": "mulaw",
|
|
61
|
+
"sample_rate": HERTZ,
|
|
62
|
+
"endpointing": self.config.endpointing,
|
|
63
|
+
"vad_events": "true",
|
|
64
|
+
"language": self.config.language,
|
|
65
|
+
"interim_results": "true",
|
|
66
|
+
"model": self.config.model,
|
|
67
|
+
"smart_format": str(self.config.smart_format).lower(),
|
|
68
|
+
}
|
|
69
|
+
if self.config.utterance_end_ms and self.config.utterance_end_ms > 0:
|
|
70
|
+
query_params["utterance_end_ms"] = self.config.utterance_end_ms
|
|
71
|
+
|
|
72
|
+
return urlencode(query_params)
|
|
56
73
|
|
|
57
74
|
async def signal_audio_done(self) -> None:
|
|
58
75
|
"""Signal to the ASR Api that you are done sending data."""
|
|
@@ -67,24 +84,48 @@ class DeepgramASR(ASREngine[DeepgramASRConfig]):
|
|
|
67
84
|
def engine_event_to_asr_event(self, e: Any) -> Optional[ASREvent]:
|
|
68
85
|
"""Translate an engine event to a common ASREvent."""
|
|
69
86
|
data = json.loads(e)
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
data_type = data["type"]
|
|
88
|
+
if data_type == "Results":
|
|
89
|
+
transcript_data = data["channel"]["alternatives"][0]
|
|
90
|
+
transcript = transcript_data["transcript"]
|
|
72
91
|
if data["is_final"]:
|
|
73
92
|
if data.get("speech_final"):
|
|
74
|
-
full_transcript = self.
|
|
93
|
+
full_transcript = self.concatenate_transcripts(
|
|
94
|
+
self.accumulated_transcript, transcript
|
|
95
|
+
)
|
|
75
96
|
self.accumulated_transcript = ""
|
|
76
97
|
if full_transcript:
|
|
77
98
|
return NewTranscript(full_transcript)
|
|
78
99
|
else:
|
|
79
|
-
self.accumulated_transcript
|
|
100
|
+
self.accumulated_transcript = self.concatenate_transcripts(
|
|
101
|
+
self.accumulated_transcript, transcript
|
|
102
|
+
)
|
|
80
103
|
elif transcript:
|
|
81
104
|
return UserIsSpeaking()
|
|
105
|
+
# event that comes after utterance_end_ms of no new transcript
|
|
106
|
+
elif data_type == "UtteranceEnd":
|
|
107
|
+
if self.accumulated_transcript:
|
|
108
|
+
transcript = self.accumulated_transcript
|
|
109
|
+
self.accumulated_transcript = ""
|
|
110
|
+
return NewTranscript(transcript)
|
|
82
111
|
return None
|
|
83
112
|
|
|
84
113
|
@staticmethod
|
|
85
114
|
def get_default_config() -> DeepgramASRConfig:
|
|
86
|
-
return DeepgramASRConfig(
|
|
115
|
+
return DeepgramASRConfig(
|
|
116
|
+
endpoint="api.deepgram.com",
|
|
117
|
+
endpointing=400,
|
|
118
|
+
language="en",
|
|
119
|
+
model="nova-2-general",
|
|
120
|
+
smart_format=True,
|
|
121
|
+
utterance_end_ms=1000,
|
|
122
|
+
)
|
|
87
123
|
|
|
88
124
|
@classmethod
|
|
89
125
|
def from_config_dict(cls, config: Dict) -> "DeepgramASR":
|
|
90
126
|
return DeepgramASR(DeepgramASRConfig.from_dict(config))
|
|
127
|
+
|
|
128
|
+
@staticmethod
|
|
129
|
+
def concatenate_transcripts(t1: str, t2: str) -> str:
|
|
130
|
+
"""Concatenate two transcripts making sure there is a space between them."""
|
|
131
|
+
return (t1.strip() + " " + t2.strip()).strip()
|
|
@@ -102,6 +102,9 @@ class BrowserAudioInputChannel(VoiceInputChannel):
|
|
|
102
102
|
|
|
103
103
|
@blueprint.websocket("/websocket") # type: ignore
|
|
104
104
|
async def handle_message(request: Request, ws: Websocket) -> None:
|
|
105
|
-
|
|
105
|
+
try:
|
|
106
|
+
await self.run_audio_streaming(on_new_message, ws)
|
|
107
|
+
except Exception as e:
|
|
108
|
+
logger.error("browser_audio.handle_message.error", error=e)
|
|
106
109
|
|
|
107
110
|
return blueprint
|
|
@@ -87,13 +87,22 @@ class CartesiaTTS(TTSEngine[CartesiaTTSConfig]):
|
|
|
87
87
|
async for data in response.content.iter_chunked(1024):
|
|
88
88
|
yield self.engine_bytes_to_rasa_audio_bytes(data)
|
|
89
89
|
return
|
|
90
|
+
elif response.status == 401:
|
|
91
|
+
structlogger.error(
|
|
92
|
+
"cartesia.synthesize.rest.unauthorized",
|
|
93
|
+
status_code=response.status,
|
|
94
|
+
)
|
|
95
|
+
raise TTSError(
|
|
96
|
+
"Unauthorized. Please make sure you have the correct API key."
|
|
97
|
+
)
|
|
90
98
|
else:
|
|
99
|
+
response_text = await response.text()
|
|
91
100
|
structlogger.error(
|
|
92
101
|
"cartesia.synthesize.rest.failed",
|
|
93
102
|
status_code=response.status,
|
|
94
|
-
msg=
|
|
103
|
+
msg=response_text,
|
|
95
104
|
)
|
|
96
|
-
raise TTSError(f"TTS failed: {
|
|
105
|
+
raise TTSError(f"TTS failed: {response_text}")
|
|
97
106
|
except ClientConnectorError as e:
|
|
98
107
|
raise TTSError(e)
|
|
99
108
|
except TimeoutError as e:
|
|
@@ -4,7 +4,7 @@ If the answer is not known or cannot be determined from the provided documents o
|
|
|
4
4
|
Use the following documents to answer the question:
|
|
5
5
|
{% for doc in docs %}
|
|
6
6
|
{{ loop.cycle("*")}}. {{ doc.metadata }}
|
|
7
|
-
{{ doc.
|
|
7
|
+
{{ doc.text }}
|
|
8
8
|
{% endfor %}
|
|
9
9
|
|
|
10
10
|
{% if citation_enabled %}
|
rasa/keys
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"segment": "CcvVD1I68Nkkxrv93cIqv1twIwrwG8nz", "sentry": "a283f1fde04347b099c8d729109dd450@o251570"}
|
|
@@ -45,7 +45,7 @@ class ConversationStep:
|
|
|
45
45
|
elif isinstance(command, SetSlotCommand):
|
|
46
46
|
output.append(f"SetSlot({command.name}, {command.value})")
|
|
47
47
|
elif isinstance(command, ClarifyCommand):
|
|
48
|
-
output.append(f"Clarify({command.options})")
|
|
48
|
+
output.append(f"Clarify({', '.join(command.options)})")
|
|
49
49
|
elif isinstance(command, CancelFlowCommand):
|
|
50
50
|
output.append("CancelFlow()")
|
|
51
51
|
elif isinstance(command, ChitChatAnswerCommand):
|
rasa/shared/constants.py
CHANGED
|
@@ -166,6 +166,7 @@ OPENAI_API_VERSION_CONFIG_KEY = "openai_api_version"
|
|
|
166
166
|
|
|
167
167
|
AWS_BEDROCK_PROVIDER = "bedrock"
|
|
168
168
|
AWS_SAGEMAKER_PROVIDER = "sagemaker"
|
|
169
|
+
AWS_SAGEMAKER_CHAT_PROVIDER = "sagemaker"
|
|
169
170
|
|
|
170
171
|
API_BASE_CONFIG_KEY = "api_base"
|
|
171
172
|
API_TYPE_CONFIG_KEY = "api_type"
|
rasa/shared/core/constants.py
CHANGED
rasa/shared/core/events.py
CHANGED
|
@@ -31,6 +31,7 @@ from typing import Union
|
|
|
31
31
|
|
|
32
32
|
from rasa.shared.constants import DOCS_URL_TRAINING_DATA
|
|
33
33
|
from rasa.shared.core.constants import (
|
|
34
|
+
ERROR_CODE_KEY,
|
|
34
35
|
LOOP_NAME,
|
|
35
36
|
EXTERNAL_MESSAGE_PREFIX,
|
|
36
37
|
ACTION_NAME_SENDER_ID_CONNECTOR_STR,
|
|
@@ -2557,3 +2558,69 @@ class SessionEnded(AlwaysEqualEventMixin):
|
|
|
2557
2558
|
"""Applies event to current conversation state."""
|
|
2558
2559
|
# noinspection PyProtectedMember
|
|
2559
2560
|
tracker._reset()
|
|
2561
|
+
|
|
2562
|
+
|
|
2563
|
+
class ErrorHandled(Event):
|
|
2564
|
+
"""An error occurred during the conversation.
|
|
2565
|
+
|
|
2566
|
+
The error message is stored in the metadata of the event.
|
|
2567
|
+
"""
|
|
2568
|
+
|
|
2569
|
+
type_name = "error"
|
|
2570
|
+
|
|
2571
|
+
def __init__(
|
|
2572
|
+
self,
|
|
2573
|
+
error_code: int,
|
|
2574
|
+
timestamp: Optional[float] = None,
|
|
2575
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
2576
|
+
) -> None:
|
|
2577
|
+
"""Creates event for an error.
|
|
2578
|
+
|
|
2579
|
+
Args:
|
|
2580
|
+
error_code: Error int code.
|
|
2581
|
+
timestamp: When the event was created.
|
|
2582
|
+
metadata: Additional event metadata.
|
|
2583
|
+
"""
|
|
2584
|
+
self.error_code = error_code
|
|
2585
|
+
super().__init__(timestamp, metadata)
|
|
2586
|
+
|
|
2587
|
+
def __str__(self) -> Text:
|
|
2588
|
+
"""Returns text representation of event."""
|
|
2589
|
+
return f"ErrorHandled({self.error_code})"
|
|
2590
|
+
|
|
2591
|
+
def __repr__(self) -> Text:
|
|
2592
|
+
"""Returns event as string for debugging."""
|
|
2593
|
+
return f"ErrorHandled({self.error_code}, {self.timestamp}, {self.metadata})"
|
|
2594
|
+
|
|
2595
|
+
def __hash__(self) -> int:
|
|
2596
|
+
"""Returns unique hash for event."""
|
|
2597
|
+
return hash(self.error_code)
|
|
2598
|
+
|
|
2599
|
+
def __eq__(self, other: Any) -> bool:
|
|
2600
|
+
"""Compares object with other object."""
|
|
2601
|
+
if not isinstance(other, ErrorHandled):
|
|
2602
|
+
return NotImplemented
|
|
2603
|
+
|
|
2604
|
+
return self.error_code == other.error_code
|
|
2605
|
+
|
|
2606
|
+
def as_story_string(self) -> Text:
|
|
2607
|
+
"""Returns text representation of event."""
|
|
2608
|
+
props = json.dumps({ERROR_CODE_KEY: self.error_code})
|
|
2609
|
+
return f"{ErrorHandled.type_name}{props}"
|
|
2610
|
+
|
|
2611
|
+
@classmethod
|
|
2612
|
+
def _from_story_string(cls, parameters: Dict[Text, Any]) -> List["ErrorHandled"]:
|
|
2613
|
+
"""Called to convert a parsed story line into an event."""
|
|
2614
|
+
return [
|
|
2615
|
+
ErrorHandled(
|
|
2616
|
+
parameters.get(ERROR_CODE_KEY),
|
|
2617
|
+
parameters.get("timestamp"),
|
|
2618
|
+
parameters.get("metadata"),
|
|
2619
|
+
)
|
|
2620
|
+
]
|
|
2621
|
+
|
|
2622
|
+
def as_dict(self) -> Dict[Text, Any]:
|
|
2623
|
+
"""Returns serialized event."""
|
|
2624
|
+
serialized = super().as_dict()
|
|
2625
|
+
serialized.update({ERROR_CODE_KEY: self.error_code})
|
|
2626
|
+
return serialized
|
|
@@ -3,6 +3,7 @@ from typing import Dict, Any
|
|
|
3
3
|
from rasa.shared.constants import (
|
|
4
4
|
AWS_BEDROCK_PROVIDER,
|
|
5
5
|
AWS_SAGEMAKER_PROVIDER,
|
|
6
|
+
AWS_SAGEMAKER_CHAT_PROVIDER,
|
|
6
7
|
)
|
|
7
8
|
from rasa.shared.providers._configs.default_litellm_client_config import (
|
|
8
9
|
DefaultLiteLLMClientConfig,
|
|
@@ -98,7 +99,11 @@ class DefaultLiteLLMClient(_BaseLiteLLMClient):
|
|
|
98
99
|
# SageMaker) in Rasa by allowing AWS secrets to be provided as extra
|
|
99
100
|
# parameters without triggering validation errors due to missing AWS
|
|
100
101
|
# environment variables.
|
|
101
|
-
if self.provider.lower() in [
|
|
102
|
+
if self.provider.lower() in [
|
|
103
|
+
AWS_BEDROCK_PROVIDER,
|
|
104
|
+
AWS_SAGEMAKER_PROVIDER,
|
|
105
|
+
AWS_SAGEMAKER_CHAT_PROVIDER,
|
|
106
|
+
]:
|
|
102
107
|
validate_aws_setup_for_litellm_clients(
|
|
103
108
|
self._litellm_model_name,
|
|
104
109
|
self._litellm_extra_parameters,
|
|
@@ -165,8 +165,7 @@ DIALOGUE_STACK_UPDATED = {
|
|
|
165
165
|
}
|
|
166
166
|
ROUTING_SESSION_ENDED = {"properties": {"event": {"const": "routing_session_ended"}}}
|
|
167
167
|
|
|
168
|
-
|
|
169
|
-
ROUTING_SESSION_ENDED = {"properties": {"event": {"const": "routing_session_ended"}}}
|
|
168
|
+
ERROR_HANDLED = {"properties": {"event": {"const": "error"}}}
|
|
170
169
|
|
|
171
170
|
EVENT_SCHEMA = {
|
|
172
171
|
"type": "object",
|
|
@@ -208,6 +207,7 @@ EVENT_SCHEMA = {
|
|
|
208
207
|
DIALOGUE_STACK_UPDATED,
|
|
209
208
|
ROUTING_SESSION_ENDED,
|
|
210
209
|
SESSION_ENDED,
|
|
210
|
+
ERROR_HANDLED,
|
|
211
211
|
],
|
|
212
212
|
}
|
|
213
213
|
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.11.
|
|
3
|
+
Version: 3.11.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
5
|
Home-page: https://rasa.com
|
|
6
6
|
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
@@ -8,11 +8,10 @@ Author: Rasa Technologies GmbH
|
|
|
8
8
|
Author-email: hi@rasa.com
|
|
9
9
|
Maintainer: Tom Bocklisch
|
|
10
10
|
Maintainer-email: tom@rasa.com
|
|
11
|
-
Requires-Python: >=3.9,<3.12
|
|
11
|
+
Requires-Python: >=3.9.2,<3.12
|
|
12
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Topic :: Software Development :: Libraries
|
|
@@ -40,7 +39,7 @@ Requires-Dist: colorclass (>=2.2,<2.3)
|
|
|
40
39
|
Requires-Dist: coloredlogs (>=15,<16)
|
|
41
40
|
Requires-Dist: colorhash (>=2.0,<2.1.0)
|
|
42
41
|
Requires-Dist: confluent-kafka (>=2.3.0,<3.0.0)
|
|
43
|
-
Requires-Dist: cryptography (>=
|
|
42
|
+
Requires-Dist: cryptography (>=44.0.1)
|
|
44
43
|
Requires-Dist: cvg-python-sdk (>=0.5.1,<0.6.0)
|
|
45
44
|
Requires-Dist: dask (>=2024.7.0,<2024.8.0)
|
|
46
45
|
Requires-Dist: demoji (>=1.1.0,<2.0.0)
|
|
@@ -57,13 +56,13 @@ Requires-Dist: hvac (>=1.2.1,<2.0.0)
|
|
|
57
56
|
Requires-Dist: importlib-metadata (>=8.5.0,<8.6.0)
|
|
58
57
|
Requires-Dist: importlib-resources (==6.1.3)
|
|
59
58
|
Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
|
|
60
|
-
Requires-Dist: jinja2 (>=3.1.
|
|
59
|
+
Requires-Dist: jinja2 (>=3.1.6,<3.2.0)
|
|
61
60
|
Requires-Dist: jsonpatch (>=1.33,<2.0)
|
|
62
61
|
Requires-Dist: jsonpickle (>=3.3.0,<3.4)
|
|
63
62
|
Requires-Dist: jsonschema (>=4.22)
|
|
64
63
|
Requires-Dist: keras (==2.14.0)
|
|
65
|
-
Requires-Dist: langchain (>=0.2.
|
|
66
|
-
Requires-Dist: langchain-community (>=0.2.
|
|
64
|
+
Requires-Dist: langchain (>=0.2.17,<0.3.0)
|
|
65
|
+
Requires-Dist: langchain-community (>=0.2.19,<0.3.0)
|
|
67
66
|
Requires-Dist: litellm (>=1.52.6,<1.53.0)
|
|
68
67
|
Requires-Dist: matplotlib (>=3.7,<3.8)
|
|
69
68
|
Requires-Dist: mattermostwrapper (>=2.2,<2.3)
|
|
@@ -106,7 +105,7 @@ Requires-Dist: randomname (>=0.2.1,<0.3.0)
|
|
|
106
105
|
Requires-Dist: rasa-sdk (==3.11.0)
|
|
107
106
|
Requires-Dist: redis (>=4.6.0,<6.0)
|
|
108
107
|
Requires-Dist: regex (>=2022.10.31,<2022.11)
|
|
109
|
-
Requires-Dist: requests (>=2.
|
|
108
|
+
Requires-Dist: requests (>=2.32.2,<2.33.0)
|
|
110
109
|
Requires-Dist: rich (>=13.4.2,<14.0.0)
|
|
111
110
|
Requires-Dist: rocketchat_API (>=1.30.0,<1.31.0)
|
|
112
111
|
Requires-Dist: ruamel.yaml (>=0.17.21,<0.17.22)
|
|
@@ -115,7 +115,7 @@ rasa/core/auth_retry_tracker_store.py,sha256=7tq_tcmZE4vqtbI3qur9_30pbuAUDK0VdzE
|
|
|
115
115
|
rasa/core/brokers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
116
|
rasa/core/brokers/broker.py,sha256=mwzP6R_NgQcKj7fEP9S5nwsOp7ZkO2pwyXfSgYoxj4E,4398
|
|
117
117
|
rasa/core/brokers/file.py,sha256=GpeDEgwJYAUNZwUUqzGFzzMHiVi-N_kX185cm8RF4BM,1804
|
|
118
|
-
rasa/core/brokers/kafka.py,sha256=
|
|
118
|
+
rasa/core/brokers/kafka.py,sha256=zTecA7qwD8-rLKVFrNUTtAN7KXIuQlpsCqKu5lok8k4,13712
|
|
119
119
|
rasa/core/brokers/pika.py,sha256=HPJn4Bm1KDAD9-UCK4uBTCrFWEPEkaSO9MJldO94xok,14379
|
|
120
120
|
rasa/core/brokers/sql.py,sha256=4cDqpbwXwjcq5THbrgRptfUq38-UOnckZq7S7d9wU9o,2728
|
|
121
121
|
rasa/core/channels/__init__.py,sha256=WGzKxtcaoG2yvQ7Rjsh69tbZFl3DsnQj_FbXihwsnN8,2178
|
|
@@ -275,13 +275,13 @@ rasa/core/channels/voice_stream/asr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
|
275
275
|
rasa/core/channels/voice_stream/asr/asr_engine.py,sha256=3TzPUxrSitWc1rXlasmpG5WHeACl6PqXCMtKhsbza5I,3050
|
|
276
276
|
rasa/core/channels/voice_stream/asr/asr_event.py,sha256=QDn8OdeQ-7uBedT6Eqvs8wyR5T4UNHQ32TSMPaRHXwQ,246
|
|
277
277
|
rasa/core/channels/voice_stream/asr/azure.py,sha256=om_P6NSqRlrwyGnvx1xwfwfnt72naP6PnCYKU42rf4I,5346
|
|
278
|
-
rasa/core/channels/voice_stream/asr/deepgram.py,sha256=
|
|
278
|
+
rasa/core/channels/voice_stream/asr/deepgram.py,sha256=TUJr0CuxRka7wCmHlMb9bcOOyOWlRwSFI98VxJXtvzw,5128
|
|
279
279
|
rasa/core/channels/voice_stream/audio_bytes.py,sha256=3V0QQplPD-kVfebaaeVcKgV7pwIJyjnTenujVD3y3sY,340
|
|
280
|
-
rasa/core/channels/voice_stream/browser_audio.py,sha256=
|
|
280
|
+
rasa/core/channels/voice_stream/browser_audio.py,sha256=BP5xrbUp-u3oIPDJCY299eIRRMVZWyHrV1zNL5sq_fo,3896
|
|
281
281
|
rasa/core/channels/voice_stream/call_state.py,sha256=8mveygG0YTSXEzh2j6opgFnCYKuLKCj66ZIdZA6RCLU,764
|
|
282
282
|
rasa/core/channels/voice_stream/tts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
283
283
|
rasa/core/channels/voice_stream/tts/azure.py,sha256=gGEmLdmT_-5J8B4JJ2flnbiWNfJT3P7jq-uCCH7_uL4,3924
|
|
284
|
-
rasa/core/channels/voice_stream/tts/cartesia.py,sha256=
|
|
284
|
+
rasa/core/channels/voice_stream/tts/cartesia.py,sha256=XPbH5iFNH3bYrpbF5lzfs_S-dRW00I2OSYcATdSsAh4,4813
|
|
285
285
|
rasa/core/channels/voice_stream/tts/tts_cache.py,sha256=dKYEMkIVuT2n4pJ-JMI2n1diGvFOAOvOXMt7uIiSQtc,849
|
|
286
286
|
rasa/core/channels/voice_stream/tts/tts_engine.py,sha256=VTKGe5XTXHcnr0dtQC-EzUCFsYVEYV3hjiB_kqyAPCc,1812
|
|
287
287
|
rasa/core/channels/voice_stream/twilio_media_streams.py,sha256=UIvJYPw6AGUmOLX7aqZIE1mzESo6grcL8f_veIpoq1s,6339
|
|
@@ -323,7 +323,7 @@ rasa/core/policies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
323
323
|
rasa/core/policies/ensemble.py,sha256=AjNOEy2Iubbe-LdKaoFUXG8ch6yPrg3bTvcTcAPmeOs,12959
|
|
324
324
|
rasa/core/policies/enterprise_search_policy.py,sha256=nG1vgZO5woxvXCZWayYXQzZkmxPemfsL0c62QkZcgcI,34126
|
|
325
325
|
rasa/core/policies/enterprise_search_prompt_template.jinja2,sha256=dCS_seyBGxMQoMsOjjvPp0dd31OSzZCJSZeev1FJK5Q,1187
|
|
326
|
-
rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2,sha256=
|
|
326
|
+
rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2,sha256=va9rpP97dN3PKoJZOVfyuISt3cPBlb10Pqyz25RwO_Q,3294
|
|
327
327
|
rasa/core/policies/flow_policy.py,sha256=wGb1l_59cGM9ZaexSIK5uXFi618739oNfLOxx2FC0_Y,7490
|
|
328
328
|
rasa/core/policies/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
329
329
|
rasa/core/policies/flows/flow_exceptions.py,sha256=_FQuN-cerQDM1pivce9bz4zylh5UYkljvYS1gjDukHI,1527
|
|
@@ -495,9 +495,10 @@ rasa/graph_components/validators/default_recipe_validator.py,sha256=BHrF6NTfJz42
|
|
|
495
495
|
rasa/graph_components/validators/finetuning_validator.py,sha256=38AcwmV8cF5TIlWhUIzh98wtZf934ix04HcczCJiWkU,12863
|
|
496
496
|
rasa/hooks.py,sha256=3nsfCA142V56mBQ7ktBXhD_RyaSrfj7fY3t7HnsD4Pc,3709
|
|
497
497
|
rasa/jupyter.py,sha256=x_GF9PK2zMhltb48GEIV9YZ4pRhCto8nV5SioYSCljI,1782
|
|
498
|
+
rasa/keys,sha256=2Stg1fstgJ203cOoW1B2gGMY29fhEnjIfTVxKv_fqPo,101
|
|
498
499
|
rasa/llm_fine_tuning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
499
500
|
rasa/llm_fine_tuning/annotation_module.py,sha256=wFmW3d6lI5o49OWmdbYQlgr24rqHDgA0T0hLM1pSb9U,8578
|
|
500
|
-
rasa/llm_fine_tuning/conversations.py,sha256=
|
|
501
|
+
rasa/llm_fine_tuning/conversations.py,sha256=iW2hoR23Km5wnMC7t8pOXH2Zj3LVcA62xrx2aKDRP78,5208
|
|
501
502
|
rasa/llm_fine_tuning/llm_data_preparation_module.py,sha256=t-EjZmM7MOfpo422wNuf7ZsnTGOaD5TTroYqd-Hwh6U,6082
|
|
502
503
|
rasa/llm_fine_tuning/paraphrasing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
503
504
|
rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py,sha256=JPvGXdk36yQ23L86FXWiJMTcoBse9tSnhjTnoFvt8Q0,9945
|
|
@@ -586,13 +587,13 @@ rasa/nlu/utils/spacy_utils.py,sha256=pBvsCVKVuZ3b2Pjn-XuOVZ6lzZu9Voc2R4N1VczwtCM
|
|
|
586
587
|
rasa/plugin.py,sha256=H_OZcHy_U3eAK-JHr43TSxcPqS0JEGcZkFvmumeeJEs,2670
|
|
587
588
|
rasa/server.py,sha256=X3BbY9cxul-2vI28SMim2J2ncU4hJgkNAe3TKKLS1ow,59321
|
|
588
589
|
rasa/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
589
|
-
rasa/shared/constants.py,sha256=
|
|
590
|
+
rasa/shared/constants.py,sha256=OZoAU78gHfXAv8uoxPGNeCC_ru2IGvq5tN4qMDaZANM,11272
|
|
590
591
|
rasa/shared/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
591
592
|
rasa/shared/core/command_payload_reader.py,sha256=Vhiop9LWFawaEruRifBBrVmoEJ-fj1Tli1wBvsYu2_I,3563
|
|
592
|
-
rasa/shared/core/constants.py,sha256=
|
|
593
|
+
rasa/shared/core/constants.py,sha256=NczxSU0aGYNQQRsOYyNF1VEEx2knOxbF-gUEz1RgU0E,5735
|
|
593
594
|
rasa/shared/core/conversation.py,sha256=tw1fD2XB3gOdQjDI8hHo5TAAmE2JYNogQGWe3rE929w,1385
|
|
594
595
|
rasa/shared/core/domain.py,sha256=SsRLbLIEZ-coPTEwr-XxU_O-X-0mR466YLvXJJOAEpc,81247
|
|
595
|
-
rasa/shared/core/events.py,sha256=
|
|
596
|
+
rasa/shared/core/events.py,sha256=zdGSP1bNV1RyKC9Z54S7EbQ8TfGne_n9XKj64aoghdI,85803
|
|
596
597
|
rasa/shared/core/flows/__init__.py,sha256=HszhIvEARpmyxABFc1MKYvj8oy04WiZW1xmCdToakbs,181
|
|
597
598
|
rasa/shared/core/flows/flow.py,sha256=n9vB1SKwRczlymxrY19KiWq2BXR-LKpVUr5-Zh9827s,21530
|
|
598
599
|
rasa/shared/core/flows/flow_path.py,sha256=xstwahZBU5cfMY46mREA4NoOGlKLBRAqeP_mJ3UZqOI,2283
|
|
@@ -693,7 +694,7 @@ rasa/shared/providers/embedding/openai_embedding_client.py,sha256=XNRGE7apo2v3kW
|
|
|
693
694
|
rasa/shared/providers/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
694
695
|
rasa/shared/providers/llm/_base_litellm_client.py,sha256=O5PpLKBgvAroWRyJE5YbzuVPb0jXMHjae917F8HgqIU,10004
|
|
695
696
|
rasa/shared/providers/llm/azure_openai_llm_client.py,sha256=A6sg2bvulNczuzu1J0V7CoAkXUx4EUxtiqI4R98_IKE,12976
|
|
696
|
-
rasa/shared/providers/llm/default_litellm_llm_client.py,sha256=
|
|
697
|
+
rasa/shared/providers/llm/default_litellm_llm_client.py,sha256=BFwnJy6tN06_2V_11p7QkVP--Wk2330p5mOeOrcqWjc,4049
|
|
697
698
|
rasa/shared/providers/llm/litellm_router_llm_client.py,sha256=llko2DfOpiLMpHxnW26I1Hb1wTn7VmZ_yu43GRXhqwQ,6815
|
|
698
699
|
rasa/shared/providers/llm/llm_client.py,sha256=6-gMsEJqquhUPGXzNiq_ybM_McLWxAJ_QhbmWcLnb_Q,2358
|
|
699
700
|
rasa/shared/providers/llm/llm_response.py,sha256=Ltmc8yk9cAqtK8QgwfZZywudM5ZQsT4y_AKAQ3q05hA,1490
|
|
@@ -718,7 +719,7 @@ rasa/shared/utils/pykwalify_extensions.py,sha256=4W8gde8C6QpGCY_t9IEmaZSgjMuie1x
|
|
|
718
719
|
rasa/shared/utils/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
719
720
|
rasa/shared/utils/schemas/config.yml,sha256=czxSADw9hOIZdhvFP8pVUQo810hs9_C8ZGfCPx17taM,27
|
|
720
721
|
rasa/shared/utils/schemas/domain.yml,sha256=b2k4ZYSV-QL3hGjDaRg8rfoqaTh4hbhDc_hBlMB8cuI,3409
|
|
721
|
-
rasa/shared/utils/schemas/events.py,sha256=
|
|
722
|
+
rasa/shared/utils/schemas/events.py,sha256=tB5sNkhPoBHSzGvEvgwFJ3B37vKgQXXvgAJr-kgpLAI,6910
|
|
722
723
|
rasa/shared/utils/schemas/model_config.yml,sha256=OravyVWalSwjiXYRarRzg0tiRnUFHe1q4-5Wj1TEeFk,811
|
|
723
724
|
rasa/shared/utils/schemas/stories.yml,sha256=DV3wAFnv1leD7kV-FH-GQihF1QX5oKHc8Eb24mxjizc,4737
|
|
724
725
|
rasa/shared/utils/yaml.py,sha256=x4tJJsz082KTg851vaavu3uhHiof0FiLuNat-PQdcGc,37637
|
|
@@ -777,9 +778,9 @@ rasa/utils/train_utils.py,sha256=f1NWpp5y6al0dzoQyyio4hc4Nf73DRoRSHDzEK6-C4E,212
|
|
|
777
778
|
rasa/utils/url_tools.py,sha256=JQcHL2aLqLHu82k7_d9imUoETCm2bmlHaDpOJ-dKqBc,1218
|
|
778
779
|
rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
|
|
779
780
|
rasa/validator.py,sha256=W_iCpCASGYqpvVLR-XZYRVKCN2NxGgy1eHtpGSbcCNU,67318
|
|
780
|
-
rasa/version.py,sha256=
|
|
781
|
-
rasa_pro-3.11.
|
|
782
|
-
rasa_pro-3.11.
|
|
783
|
-
rasa_pro-3.11.
|
|
784
|
-
rasa_pro-3.11.
|
|
785
|
-
rasa_pro-3.11.
|
|
781
|
+
rasa/version.py,sha256=pMIjL-WowhszkqETjDfbvdPM_R6fzCnGoOmEusPOuGI,117
|
|
782
|
+
rasa_pro-3.11.6.dist-info/METADATA,sha256=YpJVS30vj5RozZCCcRL7uFmTCl9nC1FPXLmPxYTL3nE,10755
|
|
783
|
+
rasa_pro-3.11.6.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
|
|
784
|
+
rasa_pro-3.11.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
785
|
+
rasa_pro-3.11.6.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
|
|
786
|
+
rasa_pro-3.11.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|