rasa-pro 3.12.6.dev2__py3-none-any.whl → 3.13.0.dev2__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 (92) hide show
  1. rasa/__init__.py +0 -6
  2. rasa/cli/scaffold.py +1 -1
  3. rasa/core/actions/action.py +38 -34
  4. rasa/core/actions/action_run_slot_rejections.py +1 -1
  5. rasa/core/channels/studio_chat.py +16 -43
  6. rasa/core/channels/voice_ready/audiocodes.py +46 -17
  7. rasa/core/information_retrieval/faiss.py +68 -7
  8. rasa/core/information_retrieval/information_retrieval.py +40 -2
  9. rasa/core/information_retrieval/milvus.py +7 -2
  10. rasa/core/information_retrieval/qdrant.py +7 -2
  11. rasa/core/nlg/contextual_response_rephraser.py +11 -27
  12. rasa/core/nlg/generator.py +5 -21
  13. rasa/core/nlg/response.py +6 -43
  14. rasa/core/nlg/summarize.py +1 -15
  15. rasa/core/nlg/translate.py +0 -8
  16. rasa/core/policies/enterprise_search_policy.py +64 -316
  17. rasa/core/policies/flows/flow_executor.py +3 -38
  18. rasa/core/policies/intentless_policy.py +4 -17
  19. rasa/core/policies/policy.py +0 -2
  20. rasa/core/processor.py +27 -6
  21. rasa/core/utils.py +53 -0
  22. rasa/dialogue_understanding/coexistence/llm_based_router.py +4 -18
  23. rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -59
  24. rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -2
  25. rasa/dialogue_understanding/commands/start_flow_command.py +0 -41
  26. rasa/dialogue_understanding/generator/command_generator.py +67 -0
  27. rasa/dialogue_understanding/generator/command_parser.py +1 -1
  28. rasa/dialogue_understanding/generator/llm_based_command_generator.py +7 -23
  29. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -3
  30. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_template.jinja2 +1 -1
  31. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +1 -1
  32. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +24 -2
  33. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +8 -12
  34. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +0 -61
  35. rasa/dialogue_understanding/processor/command_processor.py +7 -65
  36. rasa/dialogue_understanding/stack/utils.py +0 -38
  37. rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
  38. rasa/dialogue_understanding_test/command_metrics.py +38 -0
  39. rasa/dialogue_understanding_test/du_test_case.py +58 -25
  40. rasa/dialogue_understanding_test/du_test_result.py +228 -132
  41. rasa/dialogue_understanding_test/du_test_runner.py +10 -1
  42. rasa/dialogue_understanding_test/io.py +48 -16
  43. rasa/document_retrieval/__init__.py +0 -0
  44. rasa/document_retrieval/constants.py +32 -0
  45. rasa/document_retrieval/document_post_processor.py +351 -0
  46. rasa/document_retrieval/document_post_processor_prompt_template.jinja2 +0 -0
  47. rasa/document_retrieval/document_retriever.py +333 -0
  48. rasa/document_retrieval/knowledge_base_connectors/__init__.py +0 -0
  49. rasa/document_retrieval/knowledge_base_connectors/api_connector.py +39 -0
  50. rasa/document_retrieval/knowledge_base_connectors/knowledge_base_connector.py +34 -0
  51. rasa/document_retrieval/knowledge_base_connectors/vector_store_connector.py +226 -0
  52. rasa/document_retrieval/query_rewriter.py +234 -0
  53. rasa/document_retrieval/query_rewriter_prompt_template.jinja2 +8 -0
  54. rasa/engine/recipes/default_components.py +2 -0
  55. rasa/hooks.py +0 -55
  56. rasa/model_manager/model_api.py +1 -1
  57. rasa/model_manager/socket_bridge.py +0 -7
  58. rasa/shared/constants.py +0 -5
  59. rasa/shared/core/constants.py +0 -8
  60. rasa/shared/core/domain.py +12 -3
  61. rasa/shared/core/flows/flow.py +0 -17
  62. rasa/shared/core/flows/flows_yaml_schema.json +3 -38
  63. rasa/shared/core/flows/steps/collect.py +5 -18
  64. rasa/shared/core/flows/utils.py +1 -16
  65. rasa/shared/core/slot_mappings.py +11 -5
  66. rasa/shared/core/slots.py +1 -1
  67. rasa/shared/core/trackers.py +4 -10
  68. rasa/shared/nlu/constants.py +0 -1
  69. rasa/shared/providers/constants.py +0 -9
  70. rasa/shared/providers/llm/_base_litellm_client.py +4 -14
  71. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
  72. rasa/shared/providers/llm/litellm_router_llm_client.py +7 -17
  73. rasa/shared/providers/llm/llm_client.py +15 -24
  74. rasa/shared/providers/llm/self_hosted_llm_client.py +2 -10
  75. rasa/shared/utils/common.py +11 -1
  76. rasa/shared/utils/health_check/health_check.py +1 -7
  77. rasa/shared/utils/llm.py +1 -1
  78. rasa/tracing/instrumentation/attribute_extractors.py +50 -17
  79. rasa/tracing/instrumentation/instrumentation.py +12 -12
  80. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -2
  81. rasa/utils/licensing.py +0 -15
  82. rasa/validator.py +1 -123
  83. rasa/version.py +1 -1
  84. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/METADATA +2 -3
  85. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/RECORD +88 -80
  86. rasa/core/actions/action_handle_digressions.py +0 -164
  87. rasa/dialogue_understanding/commands/handle_digressions_command.py +0 -144
  88. rasa/dialogue_understanding/patterns/handle_digressions.py +0 -81
  89. rasa/monkey_patches.py +0 -91
  90. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/NOTICE +0 -0
  91. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/WHEEL +0 -0
  92. {rasa_pro-3.12.6.dev2.dist-info → rasa_pro-3.13.0.dev2.dist-info}/entry_points.txt +0 -0
@@ -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",
rasa/shared/utils/llm.py CHANGED
@@ -762,7 +762,7 @@ def allowed_values_for_slot(slot: Slot) -> Union[str, None]:
762
762
  if isinstance(slot, BooleanSlot):
763
763
  return str([True, False])
764
764
  if isinstance(slot, CategoricalSlot):
765
- return str([v for v in slot.values if v != "__other__"])
765
+ return str([v for v in slot.values if v != "__other__"] + ["other"])
766
766
  else:
767
767
  return None
768
768
 
@@ -22,8 +22,14 @@ from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
22
22
  from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
23
23
  from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
24
24
  from rasa.dialogue_understanding_test.du_test_result import (
25
+ KEY_COMMANDS_F1_MACRO,
26
+ KEY_COMMANDS_F1_MICRO,
27
+ KEY_COMMANDS_F1_WEIGHTED,
25
28
  KEY_TEST_CASES_ACCURACY,
26
29
  KEY_USER_UTTERANCES_ACCURACY,
30
+ OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR,
31
+ OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR,
32
+ OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR,
27
33
  OUTPUT_COMPLETION_TOKEN_METRICS,
28
34
  OUTPUT_LATENCY_METRICS,
29
35
  OUTPUT_NAMES_OF_FAILED_TESTS,
@@ -320,7 +326,7 @@ def extract_attrs_for_command(
320
326
  def extract_llm_config(
321
327
  self: Any,
322
328
  default_llm_config: Dict[str, Any],
323
- default_embeddings_config: Dict[str, Any],
329
+ default_embeddings_config: Optional[Dict[str, Any]],
324
330
  ) -> Dict[str, Any]:
325
331
  if isinstance(self, ContextualResponseRephraser):
326
332
  # ContextualResponseRephraser is not a graph component, so it's
@@ -340,8 +346,12 @@ def extract_llm_config(
340
346
  default_embeddings_config,
341
347
  )
342
348
  else:
343
- embeddings_property = combine_custom_and_default_config(
344
- config.get(EMBEDDINGS_CONFIG_KEY), default_embeddings_config
349
+ embeddings_property = (
350
+ combine_custom_and_default_config(
351
+ config.get(EMBEDDINGS_CONFIG_KEY), default_embeddings_config
352
+ )
353
+ if default_embeddings_config is not None
354
+ else {}
345
355
  )
346
356
 
347
357
  attributes = {
@@ -372,7 +382,6 @@ def extract_llm_config(
372
382
  def extract_attrs_for_llm_based_command_generator(
373
383
  self: "LLMBasedCommandGenerator",
374
384
  prompt: str,
375
- metadata: Optional[Dict[str, Any]] = None,
376
385
  ) -> Dict[str, Any]:
377
386
  from rasa.dialogue_understanding.generator.flow_retrieval import (
378
387
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -388,7 +397,8 @@ def extract_attrs_for_llm_based_command_generator(
388
397
 
389
398
 
390
399
  def extract_attrs_for_contextual_response_rephraser(
391
- self: Any, prompt: str, sender_id: str
400
+ self: Any,
401
+ prompt: str,
392
402
  ) -> Dict[str, Any]:
393
403
  from rasa.core.nlg.contextual_response_rephraser import DEFAULT_LLM_CONFIG
394
404
 
@@ -396,7 +406,7 @@ def extract_attrs_for_contextual_response_rephraser(
396
406
  self,
397
407
  default_llm_config=DEFAULT_LLM_CONFIG,
398
408
  # rephraser is not using embeddings
399
- default_embeddings_config={},
409
+ default_embeddings_config=None,
400
410
  )
401
411
 
402
412
  return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
@@ -412,7 +422,7 @@ def extract_attrs_for_create_history(
412
422
  self,
413
423
  default_llm_config=DEFAULT_LLM_CONFIG,
414
424
  # rephraser is not using embeddings
415
- default_embeddings_config={},
425
+ default_embeddings_config=None,
416
426
  )
417
427
 
418
428
 
@@ -614,6 +624,15 @@ def extract_attrs_for_du_print_test_results(
614
624
  OUTPUT_NAMES_OF_FAILED_TESTS: json.dumps(
615
625
  test_suite_result.names_of_failed_tests
616
626
  ),
627
+ OUTPUT_COMMANDS_F1_MACRO_INSTRUMENTATION_ATTR: (
628
+ test_suite_result.f1_score[KEY_COMMANDS_F1_MACRO]
629
+ ),
630
+ OUTPUT_COMMANDS_F1_MICRO_INSTRUMENTATION_ATTR: (
631
+ test_suite_result.f1_score[KEY_COMMANDS_F1_MICRO]
632
+ ),
633
+ OUTPUT_COMMANDS_F1_WEIGHTED_INSTRUMENTATION_ATTR: (
634
+ test_suite_result.f1_score[KEY_COMMANDS_F1_WEIGHTED]
635
+ ),
617
636
  }
618
637
  if test_suite_result.command_metrics:
619
638
  for (
@@ -638,12 +657,27 @@ def extract_attrs_for_du_print_test_results(
638
657
  for key, value in test_suite_result.llm_config.items():
639
658
  attributes_dict[f"llm_config_0_{key}"] = value
640
659
 
641
- for key, value in test_suite_result.latency_metrics.items():
642
- attributes_dict[f"{OUTPUT_LATENCY_METRICS}_{key}"] = value
643
- for key, value in test_suite_result.prompt_token_metrics.items():
644
- attributes_dict[f"{OUTPUT_PROMPT_TOKEN_METRICS}_{key}"] = value
645
- for key, value in test_suite_result.completion_token_metrics.items():
646
- attributes_dict[f"{OUTPUT_COMPLETION_TOKEN_METRICS}_{key}"] = value
660
+ for component_name, latency_metric in test_suite_result.latency_metrics.items():
661
+ for metric_name, metric_value in latency_metric.items():
662
+ attributes_dict[
663
+ f"{OUTPUT_LATENCY_METRICS}_{component_name}_{metric_name}"
664
+ ] = metric_value
665
+ for (
666
+ component_name,
667
+ prompt_token_metric,
668
+ ) in test_suite_result.prompt_token_metrics.items():
669
+ for metric_name, metric_value in prompt_token_metric.items():
670
+ attributes_dict[
671
+ f"{OUTPUT_PROMPT_TOKEN_METRICS}_{component_name}_{metric_name}"
672
+ ] = metric_value
673
+ for (
674
+ component_name,
675
+ completion_token_metric,
676
+ ) in test_suite_result.completion_token_metrics.items():
677
+ for metric_name, metric_value in completion_token_metric.items():
678
+ attributes_dict[
679
+ f"{OUTPUT_COMPLETION_TOKEN_METRICS}_{component_name}_{metric_name}"
680
+ ] = metric_value
647
681
 
648
682
  return attributes_dict
649
683
 
@@ -721,7 +755,7 @@ def extract_attrs_for_intentless_policy_find_closest_response(
721
755
 
722
756
 
723
757
  def extract_attrs_for_intentless_policy_generate_llm_answer(
724
- self: "IntentlessPolicy", llm: "BaseLLM", prompt: str, sender_id: str
758
+ self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
725
759
  ) -> Dict[str, Any]:
726
760
  from rasa.core.policies.intentless_policy import (
727
761
  DEFAULT_EMBEDDINGS_CONFIG,
@@ -738,17 +772,16 @@ def extract_attrs_for_intentless_policy_generate_llm_answer(
738
772
 
739
773
 
740
774
  def extract_attrs_for_enterprise_search_generate_llm_answer(
741
- self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str, sender_id: str
775
+ self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
742
776
  ) -> Dict[str, Any]:
743
777
  from rasa.core.policies.enterprise_search_policy import (
744
- DEFAULT_EMBEDDINGS_CONFIG,
745
778
  DEFAULT_LLM_CONFIG,
746
779
  )
747
780
 
748
781
  attributes = extract_llm_config(
749
782
  self,
750
783
  default_llm_config=DEFAULT_LLM_CONFIG,
751
- default_embeddings_config=DEFAULT_EMBEDDINGS_CONFIG,
784
+ default_embeddings_config=None,
752
785
  )
753
786
 
754
787
  return extend_attributes_with_prompt_tokens_length(self, attributes, prompt)
@@ -982,18 +982,18 @@ def _instrument_command_processor_module(tracer_provider: TracerProvider) -> Non
982
982
  "validate_state_of_commands",
983
983
  attribute_extractors.extract_attrs_for_validate_state_of_commands,
984
984
  )
985
- _instrument_function(
986
- tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
987
- COMMAND_PROCESSOR_MODULE_NAME,
988
- "clean_up_commands",
989
- attribute_extractors.extract_attrs_for_clean_up_commands,
990
- )
991
- _instrument_function(
992
- tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
993
- COMMAND_PROCESSOR_MODULE_NAME,
994
- "remove_duplicated_set_slots",
995
- attribute_extractors.extract_attrs_for_remove_duplicated_set_slots,
996
- )
985
+ # _instrument_function(
986
+ # tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
987
+ # COMMAND_PROCESSOR_MODULE_NAME,
988
+ # "clean_up_commands",
989
+ # attribute_extractors.extract_attrs_for_clean_up_commands,
990
+ # )
991
+ # _instrument_function(
992
+ # tracer_provider.get_tracer(COMMAND_PROCESSOR_MODULE_NAME),
993
+ # COMMAND_PROCESSOR_MODULE_NAME,
994
+ # "remove_duplicated_set_slots",
995
+ # attribute_extractors.extract_attrs_for_remove_duplicated_set_slots,
996
+ # )
997
997
  mark_module_as_instrumented(COMMAND_PROCESSOR_MODULE_NAME)
998
998
 
999
999
 
@@ -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.13.0.dev2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rasa-pro
3
- Version: 3.12.6.dev2
3
+ Version: 3.13.0.dev2
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)
@@ -101,7 +100,7 @@ Requires-Dist: pyyaml (>=6.0)
101
100
  Requires-Dist: qdrant-client (>=1.9.1,<1.10.0)
102
101
  Requires-Dist: questionary (>=1.10.0,<2.1.0)
103
102
  Requires-Dist: randomname (>=0.2.1,<0.3.0)
104
- Requires-Dist: rasa-sdk (==3.12.0)
103
+ Requires-Dist: rasa-sdk (==3.13.0.dev1)
105
104
  Requires-Dist: redis (>=4.6.0,<6.0)
106
105
  Requires-Dist: regex (>=2024.7.24,<2024.8.0)
107
106
  Requires-Dist: requests (>=2.32.3,<2.33.0)