rasa-pro 3.12.6.dev2__py3-none-any.whl → 3.12.7.dev1__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.

Files changed (55) hide show
  1. rasa/__init__.py +0 -6
  2. rasa/cli/run.py +10 -6
  3. rasa/cli/utils.py +7 -0
  4. rasa/core/actions/action.py +0 -6
  5. rasa/core/channels/voice_ready/audiocodes.py +46 -17
  6. rasa/core/nlg/contextual_response_rephraser.py +4 -21
  7. rasa/core/nlg/summarize.py +1 -15
  8. rasa/core/policies/enterprise_search_policy.py +3 -16
  9. rasa/core/policies/flows/flow_executor.py +3 -38
  10. rasa/core/policies/intentless_policy.py +4 -17
  11. rasa/core/policies/policy.py +0 -2
  12. rasa/core/processor.py +19 -5
  13. rasa/core/utils.py +53 -0
  14. rasa/dialogue_understanding/coexistence/llm_based_router.py +4 -18
  15. rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -59
  16. rasa/dialogue_understanding/commands/start_flow_command.py +0 -41
  17. rasa/dialogue_understanding/generator/command_generator.py +67 -0
  18. rasa/dialogue_understanding/generator/llm_based_command_generator.py +4 -20
  19. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -3
  20. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +1 -12
  21. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +0 -61
  22. rasa/dialogue_understanding/processor/command_processor.py +7 -65
  23. rasa/dialogue_understanding/stack/utils.py +0 -38
  24. rasa/e2e_test/utils/validation.py +3 -3
  25. rasa/hooks.py +0 -55
  26. rasa/shared/constants.py +0 -5
  27. rasa/shared/core/constants.py +0 -8
  28. rasa/shared/core/domain.py +12 -3
  29. rasa/shared/core/flows/flow.py +0 -17
  30. rasa/shared/core/flows/flows_yaml_schema.json +3 -38
  31. rasa/shared/core/flows/steps/collect.py +5 -18
  32. rasa/shared/core/flows/utils.py +1 -16
  33. rasa/shared/core/slot_mappings.py +11 -5
  34. rasa/shared/nlu/constants.py +0 -1
  35. rasa/shared/providers/constants.py +0 -9
  36. rasa/shared/providers/llm/_base_litellm_client.py +4 -14
  37. rasa/shared/providers/llm/litellm_router_llm_client.py +7 -17
  38. rasa/shared/providers/llm/llm_client.py +15 -24
  39. rasa/shared/providers/llm/self_hosted_llm_client.py +2 -10
  40. rasa/shared/utils/common.py +11 -1
  41. rasa/shared/utils/health_check/health_check.py +1 -7
  42. rasa/tracing/instrumentation/attribute_extractors.py +4 -4
  43. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -2
  44. rasa/utils/licensing.py +0 -15
  45. rasa/validator.py +1 -123
  46. rasa/version.py +1 -1
  47. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.12.7.dev1.dist-info}/METADATA +3 -4
  48. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.12.7.dev1.dist-info}/RECORD +51 -55
  49. rasa/core/actions/action_handle_digressions.py +0 -164
  50. rasa/dialogue_understanding/commands/handle_digressions_command.py +0 -144
  51. rasa/dialogue_understanding/patterns/handle_digressions.py +0 -81
  52. rasa/monkey_patches.py +0 -91
  53. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.12.7.dev1.dist-info}/NOTICE +0 -0
  54. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.12.7.dev1.dist-info}/WHEEL +0 -0
  55. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.12.7.dev1.dist-info}/entry_points.txt +0 -0
@@ -237,9 +237,7 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
237
237
  raise ProviderClientAPIException(e)
238
238
 
239
239
  async def acompletion(
240
- self,
241
- messages: Union[List[dict], List[str], str],
242
- metadata: Optional[Dict[str, Any]] = None,
240
+ self, messages: Union[List[dict], List[str], str]
243
241
  ) -> LLMResponse:
244
242
  """Asynchronous completion of the model with the given messages.
245
243
 
@@ -257,7 +255,6 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
257
255
  - a list of messages. Each message is a string and will be formatted
258
256
  as a user message.
259
257
  - a single message as a string which will be formatted as user message.
260
- metadata: Optional metadata to be passed to the LLM call.
261
258
 
262
259
  Returns:
263
260
  The completion response.
@@ -266,11 +263,7 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
266
263
  return await super().acompletion(messages)
267
264
  return await self._atext_completion(messages)
268
265
 
269
- def completion(
270
- self,
271
- messages: Union[List[dict], List[str], str],
272
- metadata: Optional[Dict[str, Any]] = None,
273
- ) -> LLMResponse:
266
+ def completion(self, messages: Union[List[dict], List[str], str]) -> LLMResponse:
274
267
  """Completion of the model with the given messages.
275
268
 
276
269
  Method overrides the base class method to call the appropriate
@@ -280,7 +273,6 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
280
273
 
281
274
  Args:
282
275
  messages: The messages to be used for completion.
283
- metadata: Optional metadata to be passed to the LLM call.
284
276
 
285
277
  Returns:
286
278
  The completion response.
@@ -7,7 +7,17 @@ import os
7
7
  import pkgutil
8
8
  import sys
9
9
  from types import ModuleType
10
- from typing import Any, Callable, Collection, Dict, List, Optional, Sequence, Text, Type
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
@@ -3,7 +3,6 @@ import sys
3
3
  from typing import Any, Dict, Optional
4
4
 
5
5
  from rasa.shared.constants import (
6
- LANGFUSE_CUSTOM_METADATA_DICT,
7
6
  LLM_API_HEALTH_CHECK_DEFAULT_VALUE,
8
7
  LLM_API_HEALTH_CHECK_ENV_VAR,
9
8
  MODELS_CONFIG_KEY,
@@ -199,12 +198,7 @@ def send_test_llm_api_request(
199
198
  config=llm_client.config,
200
199
  )
201
200
  try:
202
- llm_client.completion(
203
- "hello",
204
- metadata={
205
- LANGFUSE_CUSTOM_METADATA_DICT: {"component": log_source_component}
206
- },
207
- )
201
+ llm_client.completion("hello")
208
202
  except Exception as e:
209
203
  structlogger.error(
210
204
  f"{log_source_function}.send_test_llm_api_request_failed",
@@ -372,7 +372,6 @@ def extract_llm_config(
372
372
  def extract_attrs_for_llm_based_command_generator(
373
373
  self: "LLMBasedCommandGenerator",
374
374
  prompt: str,
375
- metadata: Optional[Dict[str, Any]] = None,
376
375
  ) -> Dict[str, Any]:
377
376
  from rasa.dialogue_understanding.generator.flow_retrieval import (
378
377
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -388,7 +387,8 @@ def extract_attrs_for_llm_based_command_generator(
388
387
 
389
388
 
390
389
  def extract_attrs_for_contextual_response_rephraser(
391
- self: Any, prompt: str, sender_id: str
390
+ self: Any,
391
+ prompt: str,
392
392
  ) -> Dict[str, Any]:
393
393
  from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
394
394
 
@@ -721,7 +721,7 @@ def extract_attrs_for_intentless_policy_find_closest_response(
721
721
 
722
722
 
723
723
  def extract_attrs_for_intentless_policy_generate_llm_answer(
724
- self: "IntentlessPolicy", llm: "BaseLLM", prompt: str, sender_id: str
724
+ self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
725
725
  ) -> Dict[str, Any]:
726
726
  from rasa.core.policies.intentless_policy import (
727
727
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -738,7 +738,7 @@ def extract_attrs_for_intentless_policy_generate_llm_answer(
738
738
 
739
739
 
740
740
  def extract_attrs_for_enterprise_search_generate_llm_answer(
741
- self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str, sender_id: str
741
+ self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
742
742
  ) -> Dict[str, Any]:
743
743
  from rasa.core.policies.enterprise_search_policy import (
744
744
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -121,13 +121,12 @@ def _instrument_generate_answer(
121
121
  response_examples: List[str],
122
122
  conversation_samples: List[str],
123
123
  history: str,
124
- sender_id: str,
125
124
  ) -> Optional[str]:
126
125
  with tracer.start_as_current_span(
127
126
  f"{self.__class__.__name__}.{fn.__name__}"
128
127
  ) as span:
129
128
  llm_response = await fn(
130
- self, response_examples, conversation_samples, history, sender_id
129
+ self, response_examples, conversation_samples, history
131
130
  )
132
131
  span.set_attributes(
133
132
  {
rasa/utils/licensing.py CHANGED
@@ -539,18 +539,3 @@ async def _count_conversations_after(
539
539
  return 0
540
540
 
541
541
  return await tracker_store.count_conversations(after_timestamp=after_timestamp)
542
-
543
-
544
- def get_human_readable_licence_owner() -> str:
545
- user_id = "unknown"
546
-
547
- try:
548
- retrieved_license = retrieve_license_from_env()
549
- if retrieved_license:
550
- decoded = License.decode(retrieved_license)
551
- if decoded:
552
- user_id = (
553
- f"{decoded.company or ''}_{decoded.email or ''}_{decoded.jti or ''}"
554
- )
555
- finally:
556
- return user_id
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 Flow, FlowsList
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,3 +1,3 @@
1
1
  # this file will automatically be changed,
2
2
  # do not add anything but the version number here!
3
- __version__ = "3.12.6.dev2"
3
+ __version__ = "3.12.7.dev1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rasa-pro
3
- Version: 3.12.6.dev2
3
+ Version: 3.12.7.dev1
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
  Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
6
6
  Author: Rasa Technologies GmbH
@@ -63,7 +63,6 @@ Requires-Dist: keras (==2.14.0)
63
63
  Requires-Dist: langchain (>=0.2.17,<0.3.0)
64
64
  Requires-Dist: langchain-community (>=0.2.19,<0.3.0)
65
65
  Requires-Dist: langcodes (>=3.5.0,<4.0.0)
66
- Requires-Dist: langfuse (>=2.60.2,<2.61.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)
@@ -117,7 +116,7 @@ Requires-Dist: scikit-learn (>=1.5.1,<1.6.0)
117
116
  Requires-Dist: scipy (>=1.13.1,<1.14.0)
118
117
  Requires-Dist: sentencepiece[sentencepiece] (>=0.1.99,<0.2.0) ; extra == "transformers" or extra == "full"
119
118
  Requires-Dist: sentry-sdk (>=1.14.0,<1.15.0)
120
- Requires-Dist: setuptools (>=70.0.0,<70.1.0)
119
+ Requires-Dist: setuptools (>=78.1.0,<78.2.0)
121
120
  Requires-Dist: sklearn-crfsuite (>=0.3.6,<0.4.0)
122
121
  Requires-Dist: skops (>=0.10.0,<0.11.0)
123
122
  Requires-Dist: slack-sdk (>=3.27.1,<3.28.0)
@@ -147,7 +146,7 @@ Requires-Dist: typing-utils (>=0.1.0,<0.2.0)
147
146
  Requires-Dist: ujson (>=5.8,<6.0)
148
147
  Requires-Dist: webexteamssdk (>=1.6.1,<1.7.0)
149
148
  Requires-Dist: websockets (>=10.4,<11.0)
150
- Requires-Dist: wheel (>=0.40.0)
149
+ Requires-Dist: wheel (>=0.45.1)
151
150
  Project-URL: Documentation, https://rasa.com/docs
152
151
  Project-URL: Homepage, https://rasa.com
153
152
  Project-URL: Repository, https://github.com/rasahq/rasa