rasa-pro 3.12.0.dev4__py3-none-any.whl → 3.12.0.dev6__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 (95) hide show
  1. rasa/cli/dialogue_understanding_test.py +40 -5
  2. rasa/constants.py +0 -1
  3. rasa/core/actions/action.py +4 -2
  4. rasa/core/actions/custom_action_executor.py +1 -1
  5. rasa/core/channels/inspector/dist/assets/Tableau10-1b767f5e.js +1 -0
  6. rasa/core/channels/inspector/dist/assets/arc-f0f8bd46.js +1 -0
  7. rasa/core/channels/inspector/dist/assets/blockDiagram-38ab4fdb-7162c77d.js +118 -0
  8. rasa/core/channels/inspector/dist/assets/c4Diagram-3d4e48cf-b1d0d098.js +10 -0
  9. rasa/core/channels/inspector/dist/assets/channel-e265ea59.js +1 -0
  10. rasa/core/channels/inspector/dist/assets/classDiagram-70f12bd4-807a1b27.js +2 -0
  11. rasa/core/channels/inspector/dist/assets/classDiagram-v2-f2320105-5238dcdb.js +2 -0
  12. rasa/core/channels/inspector/dist/assets/clone-21f8a43d.js +1 -0
  13. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-89c73b31.js → createText-2e5e7dd3-75dfaa67.js} +1 -1
  14. rasa/core/channels/inspector/dist/assets/edges-e0da2a9e-df20501d.js +4 -0
  15. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-907e0440.js → erDiagram-9861fffd-13cf4797.js} +4 -4
  16. rasa/core/channels/inspector/dist/assets/flowDb-956e92f1-a4991264.js +10 -0
  17. rasa/core/channels/inspector/dist/assets/flowDiagram-66a62f08-ccecf773.js +4 -0
  18. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-5c8ce12d.js +1 -0
  19. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-4a651766-b5801783.js +139 -0
  20. rasa/core/channels/inspector/dist/assets/ganttDiagram-c361ad54-161e079a.js +257 -0
  21. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-72cf32ee-f38e86a4.js +70 -0
  22. rasa/core/channels/inspector/dist/assets/graph-be6ef5d8.js +1 -0
  23. rasa/core/channels/inspector/dist/assets/index-3862675e-d9ce8994.js +1 -0
  24. rasa/core/channels/inspector/dist/assets/{index-e793d777.js → index-7794b245.js} +200 -195
  25. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-8ceba4db.js → infoDiagram-f8f76790-5000a3dc.js} +1 -1
  26. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-960d3809.js → journeyDiagram-49397b02-8ef0a17a.js} +4 -4
  27. rasa/core/channels/inspector/dist/assets/katex-498eb57e.js +261 -0
  28. rasa/core/channels/inspector/dist/assets/layout-d649bc98.js +1 -0
  29. rasa/core/channels/inspector/dist/assets/{line-eeccc4e2.js → line-95add810.js} +1 -1
  30. rasa/core/channels/inspector/dist/assets/linear-f6025094.js +1 -0
  31. rasa/core/channels/inspector/dist/assets/mindmap-definition-fc14e90a-2e8531c4.js +312 -0
  32. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-dc9b5e1b.js → pieDiagram-8a3498a8-918adfdb.js} +7 -7
  33. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-a08cba6d.js → quadrantDiagram-120e2f19-cbd01797.js} +1 -1
  34. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-87242b9e.js → requirementDiagram-deff3bca-6a8b877b.js} +2 -2
  35. rasa/core/channels/inspector/dist/assets/sankeyDiagram-04a897e0-c377c3fe.js +8 -0
  36. rasa/core/channels/inspector/dist/assets/sequenceDiagram-704730f1-ab9e9b7f.js +122 -0
  37. rasa/core/channels/inspector/dist/assets/stateDiagram-587899a1-5e6ae67d.js +1 -0
  38. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-d93cdb3a-40643476.js +1 -0
  39. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-cef936a6.js → styles-6aaf32cf-afb8d108.js} +1 -1
  40. rasa/core/channels/inspector/dist/assets/styles-9a916d00-7edc9423.js +160 -0
  41. rasa/core/channels/inspector/dist/assets/styles-c10674c1-c1d8f7e9.js +116 -0
  42. rasa/core/channels/inspector/dist/assets/svgDrawCommon-08f97a94-f494b2ef.js +1 -0
  43. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-0d39bdb2.js → timeline-definition-85554ec2-11c7cdd0.js} +3 -3
  44. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-a03fa445.js → xychartDiagram-e933f94c-3f191ec1.js} +3 -3
  45. rasa/core/channels/inspector/dist/index.html +1 -1
  46. rasa/core/channels/inspector/package.json +10 -3
  47. rasa/core/channels/inspector/yarn.lock +89 -99
  48. rasa/core/channels/studio_chat.py +14 -0
  49. rasa/core/nlg/contextual_response_rephraser.py +2 -1
  50. rasa/core/policies/enterprise_search_policy.py +2 -1
  51. rasa/core/processor.py +3 -3
  52. rasa/dialogue_understanding/generator/llm_based_command_generator.py +2 -1
  53. rasa/dialogue_understanding_test/command_metric_calculation.py +8 -4
  54. rasa/dialogue_understanding_test/du_test_result.py +9 -0
  55. rasa/e2e_test/assertions.py +203 -174
  56. rasa/e2e_test/assertions_schema.yml +6 -0
  57. rasa/e2e_test/constants.py +16 -1
  58. rasa/e2e_test/e2e_config.py +102 -41
  59. rasa/e2e_test/e2e_config_schema.yml +28 -10
  60. rasa/e2e_test/llm_judge_prompts/answer_relevance_prompt_template.jinja2 +89 -0
  61. rasa/e2e_test/llm_judge_prompts/groundedness_prompt_template.jinja2 +165 -0
  62. rasa/e2e_test/utils/generative_assertions.py +243 -0
  63. rasa/server.py +3 -1
  64. rasa/shared/nlu/constants.py +1 -0
  65. rasa/shared/providers/llm/llm_response.py +21 -1
  66. rasa/tracing/instrumentation/attribute_extractors.py +23 -7
  67. rasa/utils/common.py +0 -14
  68. rasa/version.py +1 -1
  69. {rasa_pro-3.12.0.dev4.dist-info → rasa_pro-3.12.0.dev6.dist-info}/METADATA +1 -3
  70. {rasa_pro-3.12.0.dev4.dist-info → rasa_pro-3.12.0.dev6.dist-info}/RECORD +73 -64
  71. rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +0 -1
  72. rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +0 -10
  73. rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +0 -2
  74. rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +0 -2
  75. rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +0 -4
  76. rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +0 -6
  77. rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +0 -4
  78. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +0 -1
  79. rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +0 -139
  80. rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +0 -266
  81. rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +0 -70
  82. rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +0 -1
  83. rasa/core/channels/inspector/dist/assets/layout-498807d8.js +0 -1
  84. rasa/core/channels/inspector/dist/assets/linear-8a078617.js +0 -1
  85. rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +0 -109
  86. rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +0 -8
  87. rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +0 -122
  88. rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +0 -1
  89. rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +0 -1
  90. rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +0 -110
  91. rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +0 -159
  92. rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +0 -1
  93. {rasa_pro-3.12.0.dev4.dist-info → rasa_pro-3.12.0.dev6.dist-info}/NOTICE +0 -0
  94. {rasa_pro-3.12.0.dev4.dist-info → rasa_pro-3.12.0.dev6.dist-info}/WHEEL +0 -0
  95. {rasa_pro-3.12.0.dev4.dist-info → rasa_pro-3.12.0.dev6.dist-info}/entry_points.txt +0 -0
@@ -76,7 +76,7 @@ from rasa.shared.providers.embedding._langchain_embedding_client_adapter import
76
76
  _LangchainEmbeddingClientAdapter,
77
77
  )
78
78
  from rasa.shared.providers.llm.llm_client import LLMClient
79
- from rasa.shared.providers.llm.llm_response import LLMResponse
79
+ from rasa.shared.providers.llm.llm_response import LLMResponse, measure_llm_latency
80
80
  from rasa.shared.utils.cli import print_error_and_exit
81
81
  from rasa.shared.utils.health_check.embeddings_health_check_mixin import (
82
82
  EmbeddingsHealthCheckMixin,
@@ -639,6 +639,7 @@ class EnterpriseSearchPolicy(LLMHealthCheckMixin, EmbeddingsHealthCheckMixin, Po
639
639
  )
640
640
  return prompt
641
641
 
642
+ @measure_llm_latency
642
643
  async def _generate_llm_answer(
643
644
  self, llm: LLMClient, prompt: Text
644
645
  ) -> Optional[LLMResponse]:
rasa/core/processor.py CHANGED
@@ -205,6 +205,8 @@ class MessageProcessor:
205
205
  tracker = await self.run_action_extract_slots(
206
206
  message.output_channel, tracker
207
207
  )
208
+ else:
209
+ tracker = await self.run_command_processor(tracker)
208
210
 
209
211
  await self._run_prediction_loop(message.output_channel, tracker)
210
212
 
@@ -683,7 +685,7 @@ class MessageProcessor:
683
685
  )
684
686
 
685
687
  tracker = await self.run_action_extract_slots(output_channel, tracker)
686
-
688
+ tracker = await self.run_command_processor(tracker)
687
689
  await self._run_prediction_loop(output_channel, tracker)
688
690
  # save tracker state to continue conversation from this state
689
691
  await self.save_tracker(tracker)
@@ -1091,8 +1093,6 @@ class MessageProcessor:
1091
1093
  # keep taking actions decided by the policy until it chooses to 'listen'
1092
1094
  should_predict_another_action = True
1093
1095
 
1094
- tracker = await self.run_command_processor(tracker)
1095
-
1096
1096
  # action loop. predicts actions until we hit action listen
1097
1097
  while should_predict_another_action and self._should_handle_message(tracker):
1098
1098
  # this actually just calls the policy's method by the same name
@@ -30,7 +30,7 @@ from rasa.shared.exceptions import FileIOException, ProviderClientAPIException
30
30
  from rasa.shared.nlu.constants import FLOWS_IN_PROMPT
31
31
  from rasa.shared.nlu.training_data.message import Message
32
32
  from rasa.shared.nlu.training_data.training_data import TrainingData
33
- from rasa.shared.providers.llm.llm_response import LLMResponse
33
+ from rasa.shared.providers.llm.llm_response import LLMResponse, measure_llm_latency
34
34
  from rasa.shared.utils.health_check.llm_health_check_mixin import LLMHealthCheckMixin
35
35
  from rasa.shared.utils.llm import (
36
36
  allowed_values_for_slot,
@@ -303,6 +303,7 @@ class LLMBasedCommandGenerator(
303
303
  )
304
304
  return filtered_flows
305
305
 
306
+ @measure_llm_latency
306
307
  async def invoke_llm(self, prompt: Text) -> Optional[LLMResponse]:
307
308
  """Use LLM to generate a response.
308
309
 
@@ -79,12 +79,16 @@ def calculate_command_metrics(
79
79
  return metrics
80
80
 
81
81
 
82
+ def _get_command_name(command: Command) -> str:
83
+ return command.command().replace(" ", "_")
84
+
85
+
82
86
  def _increase_total_count(
83
87
  commands: List[Command],
84
88
  metrics: Dict[str, CommandMetrics],
85
89
  ) -> None:
86
90
  for command in commands:
87
- metrics[command.command()].total_count += 1
91
+ metrics[_get_command_name(command)].total_count += 1
88
92
 
89
93
 
90
94
  def _increase_tp(
@@ -92,7 +96,7 @@ def _increase_tp(
92
96
  metrics: Dict[str, CommandMetrics],
93
97
  ) -> None:
94
98
  for command in commands:
95
- metrics[command.command()].tp += 1
99
+ metrics[_get_command_name(command)].tp += 1
96
100
 
97
101
 
98
102
  def _update_metrics_true_positive_and_false_negative(
@@ -101,7 +105,7 @@ def _update_metrics_true_positive_and_false_negative(
101
105
  metrics: Dict[str, CommandMetrics],
102
106
  ) -> None:
103
107
  for expected_command in expected_commands:
104
- command_name = expected_command.command()
108
+ command_name = _get_command_name(expected_command)
105
109
  if is_command_present_in_list(expected_command, predicted_commands):
106
110
  metrics[command_name].tp += 1
107
111
  else:
@@ -115,4 +119,4 @@ def _update_metrics_false_positive(
115
119
  ) -> None:
116
120
  for predicted_command in predicted_commands:
117
121
  if not is_command_present_in_list(predicted_command, expected_commands):
118
- metrics[predicted_command.command()].fp += 1
122
+ metrics[_get_command_name(predicted_command)].fp += 1
@@ -27,6 +27,7 @@ OUTPUT_NUMBER_OF_FAILED_USER_UTTERANCES = "number_of_failed_user_utterances"
27
27
  OUTPUT_COMMAND_METRICS = "command_metrics"
28
28
  OUTPUT_NAMES_OF_FAILED_TESTS = "names_of_failed_tests"
29
29
  OUTPUT_NAMES_OF_PASSED_TESTS = "names_of_passed_tests"
30
+ OUTPUT_LLM_COMMAND_GENERATOR_CONFIG = "llm_command_generator_config"
30
31
 
31
32
 
32
33
  class DialogueUnderstandingTestResult(BaseModel):
@@ -151,6 +152,7 @@ class DialogueUnderstandingTestSuiteResult:
151
152
  self.names_of_failed_tests: List[str] = []
152
153
  self.names_of_passed_tests: List[str] = []
153
154
  self.failed_test_steps: List[FailedTestStep] = []
155
+ self.llm_config: Optional[Dict[str, Any]] = None
154
156
 
155
157
  @classmethod
156
158
  def from_results(
@@ -158,6 +160,7 @@ class DialogueUnderstandingTestSuiteResult:
158
160
  failing_test_results: List[DialogueUnderstandingTestResult],
159
161
  passing_test_results: List[DialogueUnderstandingTestResult],
160
162
  command_metrics: Dict[str, "CommandMetrics"],
163
+ llm_config: Optional[Dict[str, Any]],
161
164
  ) -> "DialogueUnderstandingTestSuiteResult":
162
165
  """Create a DialogueUnderstandingTestSuiteResult object from the test results.
163
166
 
@@ -171,6 +174,7 @@ class DialogueUnderstandingTestSuiteResult:
171
174
  representing the test cases that passed.
172
175
  command_metrics: A dictionary of command-specific performance metrics, keyed
173
176
  by command name.
177
+ llm_config: A dictionary containing the command generator configuration.
174
178
 
175
179
  Returns:
176
180
  A DialogueUnderstandingTestSuiteResult object containing aggregated test
@@ -202,6 +206,8 @@ class DialogueUnderstandingTestSuiteResult:
202
206
  failing_test_results
203
207
  )
204
208
 
209
+ instance.llm_config = llm_config
210
+
205
211
  return instance
206
212
 
207
213
  def _set_user_utterance_metrics(
@@ -297,4 +303,7 @@ class DialogueUnderstandingTestSuiteResult:
297
303
 
298
304
  result_dict["failed_test_steps"] = failed_steps_list
299
305
 
306
+ if self.llm_config:
307
+ result_dict[OUTPUT_LLM_COMMAND_GENERATOR_CONFIG] = self.llm_config
308
+
300
309
  return result_dict