rasa-pro 3.11.3__py3-none-any.whl → 3.11.3a1.dev4__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 (75) hide show
  1. rasa/core/actions/direct_custom_actions_executor.py +31 -2
  2. rasa/core/channels/development_inspector.py +3 -0
  3. rasa/core/channels/inspector/dist/assets/{arc-632a63ec.js → arc-861ddd57.js} +1 -1
  4. rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-081e0df4.js → c4Diagram-d0fbc5ce-921f02db.js} +1 -1
  5. rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-3df0afc2.js → classDiagram-936ed81e-b436c4f8.js} +1 -1
  6. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-8c5ed31e.js → classDiagram-v2-c3cb15f1-511a23cb.js} +1 -1
  7. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-89c73b31.js → createText-62fc7601-ef476ecd.js} +1 -1
  8. rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-4fc48c3e.js → edges-f2ad444c-f1878e0a.js} +1 -1
  9. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-907e0440.js → erDiagram-9d236eb7-fac75185.js} +1 -1
  10. rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-9ec53a3c.js → flowDb-1972c806-201c5bbc.js} +1 -1
  11. rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-41da787a.js → flowDiagram-7ea5b25a-f904ae41.js} +1 -1
  12. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
  13. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-ce370633.js → flowchart-elk-definition-abe16c3d-1813da66.js} +1 -1
  14. rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-90a36523.js → ganttDiagram-9b5ea136-872af172.js} +1 -1
  15. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-41e1aa3f.js → gitGraphDiagram-99d0ae7c-34a0af5a.js} +1 -1
  16. rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-e6f2af62.js → index-2c4b9a3b-42ba3e3d.js} +1 -1
  17. rasa/core/channels/inspector/dist/assets/{index-e793d777.js → index-37817b51.js} +3 -3
  18. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-8ceba4db.js → infoDiagram-736b4530-6b731386.js} +1 -1
  19. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-960d3809.js → journeyDiagram-df861f2b-e8579ac6.js} +1 -1
  20. rasa/core/channels/inspector/dist/assets/{layout-498807d8.js → layout-89e6403a.js} +1 -1
  21. rasa/core/channels/inspector/dist/assets/{line-eeccc4e2.js → line-dc73d3fc.js} +1 -1
  22. rasa/core/channels/inspector/dist/assets/{linear-8a078617.js → linear-f5b1d2bc.js} +1 -1
  23. rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-396d17dd.js → mindmap-definition-beec6740-82cb74fa.js} +1 -1
  24. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-dc9b5e1b.js → pieDiagram-dbbf0591-bdf5f29b.js} +1 -1
  25. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-a08cba6d.js → quadrantDiagram-4d7f4fd6-c7a0cbe4.js} +1 -1
  26. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-87242b9e.js → requirementDiagram-6fc4c22a-7ec5410f.js} +1 -1
  27. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-53f6f391.js → sankeyDiagram-8f13d901-caee5554.js} +1 -1
  28. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-715c9c20.js → sequenceDiagram-b655622a-2935f8db.js} +1 -1
  29. rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-2e8fb31f.js → stateDiagram-59f0c015-8f5d9693.js} +1 -1
  30. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-7e2d2aa0.js → stateDiagram-v2-2b26beab-d565d1de.js} +1 -1
  31. rasa/core/channels/inspector/dist/assets/{styles-080da4f6-4420cea6.js → styles-080da4f6-75ad421d.js} +1 -1
  32. rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-28676cf4.js → styles-3dcbcfbf-7e764226.js} +1 -1
  33. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-cef936a6.js → styles-9c745c82-7a4e0e61.js} +1 -1
  34. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-151251e9.js → svgDrawCommon-4835440b-4019d1bf.js} +1 -1
  35. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-0d39bdb2.js → timeline-definition-5b62e21b-01ea12df.js} +1 -1
  36. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-a03fa445.js → xychartDiagram-2b33534f-89407137.js} +1 -1
  37. rasa/core/channels/inspector/dist/index.html +1 -3
  38. rasa/core/channels/inspector/index.html +0 -2
  39. rasa/core/channels/inspector/src/App.tsx +4 -1
  40. rasa/core/channels/socketio.py +40 -0
  41. rasa/core/policies/flows/flow_executor.py +26 -2
  42. rasa/dialogue_understanding/generator/command_generator.py +126 -5
  43. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +28 -1
  44. rasa/dialogue_understanding/generator/nlu_command_adapter.py +3 -0
  45. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +9 -1
  46. rasa/dialogue_understanding/utils.py +14 -0
  47. rasa/dialogue_understanding_test/__init__.py +0 -0
  48. rasa/dialogue_understanding_test/constants.py +15 -0
  49. rasa/dialogue_understanding_test/du_test_case.py +118 -0
  50. rasa/dialogue_understanding_test/du_test_result.py +11 -0
  51. rasa/e2e_test/e2e_test_case.py +2 -1
  52. rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
  53. rasa/e2e_test/utils/io.py +1 -1
  54. rasa/e2e_test/utils/validation.py +100 -2
  55. rasa/engine/recipes/default_recipe.py +63 -49
  56. rasa/engine/recipes/graph_recipe.py +8 -7
  57. rasa/model_manager/runner_service.py +1 -0
  58. rasa/model_manager/socket_bridge.py +8 -2
  59. rasa/model_training.py +2 -1
  60. rasa/server.py +1 -37
  61. rasa/shared/constants.py +17 -6
  62. rasa/shared/nlu/constants.py +4 -0
  63. rasa/shared/utils/llm.py +1 -1
  64. rasa/shared/utils/yaml.py +6 -5
  65. rasa/studio/upload.py +19 -5
  66. rasa/telemetry.py +40 -33
  67. rasa/tracing/instrumentation/attribute_extractors.py +10 -9
  68. rasa/validator.py +32 -41
  69. rasa/version.py +1 -1
  70. {rasa_pro-3.11.3.dist-info → rasa_pro-3.11.3a1.dev4.dist-info}/METADATA +6 -6
  71. {rasa_pro-3.11.3.dist-info → rasa_pro-3.11.3a1.dev4.dist-info}/RECORD +74 -69
  72. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +0 -1
  73. {rasa_pro-3.11.3.dist-info → rasa_pro-3.11.3a1.dev4.dist-info}/NOTICE +0 -0
  74. {rasa_pro-3.11.3.dist-info → rasa_pro-3.11.3a1.dev4.dist-info}/WHEEL +0 -0
  75. {rasa_pro-3.11.3.dist-info → rasa_pro-3.11.3a1.dev4.dist-info}/entry_points.txt +0 -0
rasa/server.py CHANGED
@@ -62,11 +62,9 @@ from rasa.shared.constants import (
62
62
  DOCS_BASE_URL,
63
63
  DOCS_URL_TRAINING_DATA,
64
64
  TEST_STORIES_FILE_PREFIX,
65
- DOCS_URL_FLOWS,
66
65
  )
67
66
  from rasa.shared.core.domain import Domain, InvalidDomain
68
67
  from rasa.shared.core.events import Event
69
- from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
70
68
  from rasa.shared.core.trackers import (
71
69
  DialogueStateTracker,
72
70
  EventVerbosity,
@@ -74,7 +72,6 @@ from rasa.shared.core.trackers import (
74
72
  from rasa.shared.core.training_data.story_writer.yaml_story_writer import (
75
73
  YAMLStoryWriter,
76
74
  )
77
- from rasa.shared.exceptions import YamlException, RasaException
78
75
  from rasa.shared.importers.importer import TrainingDataImporter
79
76
  from rasa.shared.nlu.training_data.formats import RasaYAMLReader
80
77
  from rasa.shared.utils.schemas.events import EVENTS_SCHEMA
@@ -1569,8 +1566,7 @@ def _nlu_training_payload_from_json(
1569
1566
  )
1570
1567
 
1571
1568
 
1572
- def _validate_nlu_training_data_payload(yaml_text: str) -> None:
1573
- """Validate the NLU training data payload of the request body."""
1569
+ def _validate_yaml_training_payload(yaml_text: Text) -> None:
1574
1570
  try:
1575
1571
  RasaYAMLReader().validate(yaml_text)
1576
1572
  except Exception as e:
@@ -1582,38 +1578,6 @@ def _validate_nlu_training_data_payload(yaml_text: str) -> None:
1582
1578
  )
1583
1579
 
1584
1580
 
1585
- def _validate_flows_payload(yaml_text: str) -> None:
1586
- """Validate the flows payload of the request body."""
1587
- try:
1588
- YAMLFlowsReader().read_from_string(yaml_text)
1589
- except (YamlException, RasaException) as exc:
1590
- # if the payload does not contain any flows, we can ignore the error
1591
- if (
1592
- hasattr(exc, "validation_errors")
1593
- and exc.validation_errors is not None
1594
- and any(
1595
- [
1596
- "'flows' is a required property" in error.message
1597
- for error in exc.validation_errors
1598
- ]
1599
- )
1600
- ):
1601
- return None
1602
-
1603
- raise ErrorResponse(
1604
- HTTPStatus.BAD_REQUEST,
1605
- "BadRequest",
1606
- f"The request body does not contain valid YAML. Error: {exc}",
1607
- help_url=DOCS_URL_FLOWS,
1608
- )
1609
-
1610
-
1611
- def _validate_yaml_training_payload(yaml_text: str) -> None:
1612
- """Validate the YAML training payload of the request body."""
1613
- _validate_nlu_training_data_payload(yaml_text)
1614
- _validate_flows_payload(yaml_text)
1615
-
1616
-
1617
1581
  def _extract_core_additional_arguments(request: Request) -> Dict[Text, Any]:
1618
1582
  return {
1619
1583
  "augmentation_factor": rasa.utils.endpoints.int_arg(request, "augmentation", 50)
rasa/shared/constants.py CHANGED
@@ -19,7 +19,6 @@ DOCS_URL_GRAPH_COMPONENTS = DOCS_URL_CONCEPTS + "/components/custom-graph-compon
19
19
  DOCS_URL_GRAPH_RECIPE = DOCS_URL_CONCEPTS + "/components/graph-recipe"
20
20
  DOCS_URL_CATEGORICAL_SLOTS = DOCS_URL_CONCEPTS + "/domain#categorical-slot"
21
21
  DOCS_URL_DOMAIN = DOCS_URL_CONCEPTS + "/domain"
22
- DOCS_URL_FLOWS = DOCS_URL_CONCEPTS + "/flows"
23
22
 
24
23
  # Docs URLs for NLU-based assistants
25
24
  DOCS_URL_TRAINING_DATA = DOCS_URL_NLU_BASED + "/training-data-format"
@@ -102,16 +101,28 @@ ASSISTANT_ID_KEY = "assistant_id"
102
101
  ASSISTANT_ID_DEFAULT_VALUE = "placeholder_default"
103
102
 
104
103
  CONFIG_MANDATORY_COMMON_KEYS = [ASSISTANT_ID_KEY]
105
- CONFIG_AUTOCONFIGURABLE_KEYS_CORE = ["policies"]
106
- CONFIG_AUTOCONFIGURABLE_KEYS_NLU = ["pipeline"]
104
+ CONFIG_NAME_KEY = "name"
105
+ CONFIG_POLICIES_KEY = "policies"
106
+ CONFIG_PIPELINE_KEY = "pipeline"
107
+ CONFIG_LANGUAGE_KEY = "language"
108
+ CONFIG_RECIPE_KEY = "recipe"
109
+ CONFIG_LLM_KEY = "llm"
110
+ CONFIG_MODEL_NAME_KEY = "model_name"
111
+ CONFIG_TRAIN_SCHEMA = "train_schema"
112
+ CONFIG_PREDICT_SCHEMA = "predict_schema"
113
+ CONFIG_AUTOCONFIGURABLE_KEYS_CORE = [CONFIG_POLICIES_KEY]
114
+ CONFIG_AUTOCONFIGURABLE_KEYS_NLU = [CONFIG_PIPELINE_KEY]
107
115
  CONFIG_AUTOCONFIGURABLE_KEYS = (
108
116
  CONFIG_AUTOCONFIGURABLE_KEYS_CORE + CONFIG_AUTOCONFIGURABLE_KEYS_NLU
109
117
  )
110
- CONFIG_KEYS_CORE = ["policies"] + CONFIG_MANDATORY_COMMON_KEYS
111
- CONFIG_KEYS_NLU = ["language", "pipeline"] + CONFIG_MANDATORY_COMMON_KEYS
118
+ CONFIG_KEYS_CORE = [CONFIG_POLICIES_KEY] + CONFIG_MANDATORY_COMMON_KEYS
119
+ CONFIG_KEYS_NLU = [
120
+ CONFIG_LANGUAGE_KEY,
121
+ CONFIG_PIPELINE_KEY,
122
+ ] + CONFIG_MANDATORY_COMMON_KEYS
112
123
  CONFIG_KEYS = CONFIG_KEYS_CORE + CONFIG_KEYS_NLU
113
124
  CONFIG_MANDATORY_KEYS_CORE: List[Text] = [] + CONFIG_MANDATORY_COMMON_KEYS
114
- CONFIG_MANDATORY_KEYS_NLU = ["language"] + CONFIG_MANDATORY_COMMON_KEYS
125
+ CONFIG_MANDATORY_KEYS_NLU = [CONFIG_LANGUAGE_KEY] + CONFIG_MANDATORY_COMMON_KEYS
115
126
  CONFIG_MANDATORY_KEYS = CONFIG_MANDATORY_KEYS_CORE + CONFIG_MANDATORY_KEYS_NLU
116
127
 
117
128
  # Keys related to Forms (in the Domain)
@@ -2,6 +2,10 @@ TEXT = "text"
2
2
  TEXT_TOKENS = "text_tokens"
3
3
  INTENT = "intent"
4
4
  COMMANDS = "commands"
5
+ PREDICTED_COMMANDS = "predicted_commands"
6
+ PROMPTS = "prompts"
7
+ KEY_USER_PROMPT = "user_prompt"
8
+ KEY_SYSTEM_PROMPT = "system_prompt"
5
9
  LLM_COMMANDS = "llm_commands" # needed for fine-tuning
6
10
  LLM_PROMPT = "llm_prompt" # needed for fine-tuning
7
11
  FLOWS_FROM_SEMANTIC_SEARCH = "flows_from_semantic_search"
rasa/shared/utils/llm.py CHANGED
@@ -73,7 +73,7 @@ DEFAULT_OPENAI_GENERATE_MODEL_NAME = "gpt-3.5-turbo"
73
73
 
74
74
  DEFAULT_OPENAI_CHAT_MODEL_NAME = "gpt-3.5-turbo"
75
75
 
76
- DEFAULT_OPENAI_CHAT_MODEL_NAME_ADVANCED = "gpt-4-0613"
76
+ DEFAULT_OPENAI_CHAT_MODEL_NAME_ADVANCED = "gpt-4"
77
77
 
78
78
  DEFAULT_OPENAI_EMBEDDING_MODEL_NAME = "text-embedding-ada-002"
79
79
 
rasa/shared/utils/yaml.py CHANGED
@@ -104,6 +104,12 @@ def _add_yaml_constructor_to_replace_environment_variables() -> None:
104
104
  def env_var_constructor(loader: BaseConstructor, node: ScalarNode) -> str:
105
105
  """Process environment variables found in the YAML."""
106
106
  value = loader.construct_scalar(node)
107
+
108
+ # get key of current node
109
+ key_node = list(loader.constructed_objects)[-1]
110
+ if isinstance(key_node, ScalarNode) and key_node.value in SENSITIVE_DATA:
111
+ return value
112
+
107
113
  expanded_vars = os.path.expandvars(value)
108
114
  not_expanded = [
109
115
  w for w in expanded_vars.split() if w.startswith("$") and w in value
@@ -115,11 +121,6 @@ def _add_yaml_constructor_to_replace_environment_variables() -> None:
115
121
  f"Please make sure to also set these "
116
122
  f"environment variables: '{not_expanded}'."
117
123
  )
118
-
119
- # get key of current node
120
- key_node = list(loader.constructed_objects)[-1]
121
- if isinstance(key_node, ScalarNode) and key_node.value in SENSITIVE_DATA:
122
- return value
123
124
  return expanded_vars
124
125
 
125
126
  yaml.SafeConstructor.add_constructor("!env_var", env_var_constructor)
rasa/studio/upload.py CHANGED
@@ -2,7 +2,7 @@ import argparse
2
2
  import base64
3
3
  import re
4
4
  import sys
5
- from typing import Dict, Iterable, List, Set, Text, Tuple, Union, Any
5
+ from typing import Any, Dict, Iterable, List, Set, Text, Tuple, Union
6
6
 
7
7
  import questionary
8
8
  import requests
@@ -13,13 +13,19 @@ import rasa.cli.utils
13
13
  import rasa.shared.utils.cli
14
14
  import rasa.shared.utils.io
15
15
  from rasa.shared.constants import (
16
- DEFAULT_DOMAIN_PATHS,
16
+ CONFIG_LANGUAGE_KEY,
17
+ CONFIG_LLM_KEY,
18
+ CONFIG_MODEL_NAME_KEY,
19
+ CONFIG_PIPELINE_KEY,
20
+ CONFIG_POLICIES_KEY,
21
+ CONFIG_RECIPE_KEY,
17
22
  DEFAULT_CONFIG_PATH,
23
+ DEFAULT_DOMAIN_PATHS,
18
24
  )
19
25
  from rasa.shared.core.domain import Domain
20
26
  from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
21
27
  from rasa.shared.exceptions import RasaException
22
- from rasa.shared.importers.importer import TrainingDataImporter, FlowSyncImporter
28
+ from rasa.shared.importers.importer import FlowSyncImporter, TrainingDataImporter
23
29
  from rasa.shared.nlu.training_data.formats.rasa_yaml import (
24
30
  RasaYAMLReader,
25
31
  RasaYAMLWriter,
@@ -131,13 +137,11 @@ def handle_upload(args: argparse.Namespace) -> None:
131
137
  rasa.shared.utils.cli.print_error_and_exit(
132
138
  "No GraphQL endpoint found in config. Please run `rasa studio config`."
133
139
  )
134
- return
135
140
 
136
141
  if not is_auth_working(endpoint, verify):
137
142
  rasa.shared.utils.cli.print_error_and_exit(
138
143
  "Authentication is invalid or expired. Please run `rasa studio login`."
139
144
  )
140
- return
141
145
 
142
146
  structlogger.info("rasa.studio.upload.loading_data", event_info="Loading data...")
143
147
 
@@ -160,6 +164,16 @@ def handle_upload(args: argparse.Namespace) -> None:
160
164
  upload_nlu_assistant(args, endpoint, verify=verify)
161
165
 
162
166
 
167
+ config_keys = [
168
+ CONFIG_RECIPE_KEY,
169
+ CONFIG_POLICIES_KEY,
170
+ CONFIG_PIPELINE_KEY,
171
+ CONFIG_LANGUAGE_KEY,
172
+ CONFIG_LLM_KEY,
173
+ CONFIG_MODEL_NAME_KEY,
174
+ ]
175
+
176
+
163
177
  def extract_values(data: Dict, keys: List[Text]) -> Dict:
164
178
  """Extracts values for given keys from a dictionary."""
165
179
  return {key: data.get(key) for key in keys if data.get(key)}
rasa/telemetry.py CHANGED
@@ -32,34 +32,41 @@ from rasa.constants import (
32
32
  CONFIG_TELEMETRY_ENABLED,
33
33
  CONFIG_TELEMETRY_ID,
34
34
  )
35
+ from rasa.engine.storage.local_model_storage import LocalModelStorage
35
36
  from rasa.shared.constants import (
36
- PROMPT_CONFIG_KEY,
37
- PROMPT_TEMPLATE_CONFIG_KEY,
38
- LLM_API_HEALTH_CHECK_ENV_VAR,
37
+ CONFIG_LANGUAGE_KEY,
38
+ CONFIG_PIPELINE_KEY,
39
+ CONFIG_POLICIES_KEY,
40
+ CONFIG_PREDICT_SCHEMA,
41
+ CONFIG_RECIPE_KEY,
42
+ CONFIG_TRAIN_SCHEMA,
43
+ DOCS_URL_TELEMETRY,
39
44
  LLM_API_HEALTH_CHECK_DEFAULT_VALUE,
45
+ LLM_API_HEALTH_CHECK_ENV_VAR,
40
46
  MODEL_GROUP_CONFIG_KEY,
47
+ PROMPT_CONFIG_KEY,
48
+ PROMPT_TEMPLATE_CONFIG_KEY,
49
+ UTTER_ASK_PREFIX,
41
50
  )
42
- from rasa.engine.storage.local_model_storage import LocalModelStorage
43
- from rasa.shared.constants import DOCS_URL_TELEMETRY, UTTER_ASK_PREFIX
44
51
  from rasa.shared.core.flows import Flow
45
52
  from rasa.shared.core.flows.steps import (
53
+ CallFlowStep,
46
54
  CollectInformationFlowStep,
47
- SetSlotsFlowStep,
48
55
  LinkFlowStep,
49
- CallFlowStep,
56
+ SetSlotsFlowStep,
50
57
  )
51
58
  from rasa.shared.exceptions import RasaException
52
59
  from rasa.utils import common as rasa_utils
53
60
 
54
61
  if typing.TYPE_CHECKING:
62
+ from rasa.core.agent import Agent
55
63
  from rasa.core.brokers.broker import EventBroker
56
- from rasa.core.tracker_store import TrackerStore
57
64
  from rasa.core.channels.channel import InputChannel
58
- from rasa.core.agent import Agent
59
- from rasa.shared.nlu.training_data.training_data import TrainingData
60
- from rasa.shared.importers.importer import TrainingDataImporter
65
+ from rasa.core.tracker_store import TrackerStore
61
66
  from rasa.core.utils import AvailableEndpoints
62
- from rasa.e2e_test.e2e_test_case import TestCase, Fixture, Metadata
67
+ from rasa.e2e_test.e2e_test_case import Fixture, Metadata, TestCase
68
+ from rasa.shared.importers.importer import TrainingDataImporter
69
+ from rasa.shared.nlu.training_data.training_data import TrainingData
63
70
 
64
71
  logger = logging.getLogger(__name__)
65
72
 
@@ -352,6 +359,7 @@ def _fetch_write_key(tool: Text, environment_variable: Text) -> Optional[Text]:
352
359
  write key, if a key was present.
353
360
  """
354
361
  import importlib_resources
362
+
355
363
  from rasa import __name__ as name
356
364
 
357
365
  if os.environ.get(environment_variable):
@@ -602,7 +610,7 @@ def _default_context_fields() -> Dict[Text, Any]:
602
610
  Return:
603
611
  A new context containing information about the runtime environment.
604
612
  """
605
- from rasa.utils.licensing import property_of_active_license, get_license_hash
613
+ from rasa.utils.licensing import get_license_hash, property_of_active_license
606
614
 
607
615
  global TELEMETRY_CONTEXT
608
616
 
@@ -962,13 +970,13 @@ def track_model_training(
962
970
  training_id = uuid.uuid4().hex
963
971
 
964
972
  tracking_data = {
965
- "language": config.get("language"),
973
+ "language": config.get(CONFIG_LANGUAGE_KEY),
966
974
  "training_id": training_id,
967
975
  "type": model_type,
968
- "pipeline": config.get("pipeline"),
969
- "policies": config.get("policies"),
970
- "train_schema": config.get("train_schema"),
971
- "predict_schema": config.get("predict_schema"),
976
+ "pipeline": config.get(CONFIG_PIPELINE_KEY),
977
+ "policies": config.get(CONFIG_POLICIES_KEY),
978
+ "train_schema": config.get(CONFIG_TRAIN_SCHEMA),
979
+ "predict_schema": config.get(CONFIG_PREDICT_SCHEMA),
972
980
  "model_groups": rasa.core.utils.AvailableEndpoints.get_instance().model_groups,
973
981
  "api_health_check_enabled": (
974
982
  os.getenv(
@@ -995,7 +1003,7 @@ def track_model_training(
995
1003
  "num_synonyms": len(nlu_data.entity_synonyms),
996
1004
  "num_regexes": len(nlu_data.regex_features),
997
1005
  "is_finetuning": is_finetuning,
998
- "recipe": config.get("recipe"),
1006
+ "recipe": config.get(CONFIG_RECIPE_KEY),
999
1007
  }
1000
1008
 
1001
1009
  flow_statistics = _collect_flow_statistics(flows.underlying_flows)
@@ -1096,28 +1104,28 @@ def _get_llm_command_generator_config(config: Dict[str, Any]) -> Optional[Dict]:
1096
1104
  Includes the model name, whether a custom prompt is used, whether flow
1097
1105
  retrieval is enabled, and flow retrieval embedding model.
1098
1106
  """
1099
- from rasa.shared.constants import (
1100
- EMBEDDINGS_CONFIG_KEY,
1101
- MODEL_CONFIG_KEY,
1102
- MODEL_NAME_CONFIG_KEY,
1103
- )
1104
1107
  from rasa.dialogue_understanding.generator import (
1105
1108
  LLMCommandGenerator,
1106
- SingleStepLLMCommandGenerator,
1107
1109
  MultiStepLLMCommandGenerator,
1108
- )
1109
- from rasa.dialogue_understanding.generator.multi_step.multi_step_llm_command_generator import ( # noqa: E501
1110
- HANDLE_FLOWS_KEY,
1111
- FILL_SLOTS_KEY,
1110
+ SingleStepLLMCommandGenerator,
1112
1111
  )
1113
1112
  from rasa.dialogue_understanding.generator.constants import (
1114
- LLM_CONFIG_KEY,
1115
1113
  DEFAULT_LLM_CONFIG,
1116
1114
  FLOW_RETRIEVAL_KEY,
1115
+ LLM_CONFIG_KEY,
1117
1116
  )
1118
1117
  from rasa.dialogue_understanding.generator.flow_retrieval import (
1119
1118
  DEFAULT_EMBEDDINGS_CONFIG,
1120
1119
  )
1120
+ from rasa.dialogue_understanding.generator.multi_step.multi_step_llm_command_generator import ( # noqa: E501
1121
+ FILL_SLOTS_KEY,
1122
+ HANDLE_FLOWS_KEY,
1123
+ )
1124
+ from rasa.shared.constants import (
1125
+ EMBEDDINGS_CONFIG_KEY,
1126
+ MODEL_CONFIG_KEY,
1127
+ MODEL_NAME_CONFIG_KEY,
1128
+ )
1121
1129
 
1122
1130
  def find_command_generator_component(pipeline: List) -> Optional[Dict]:
1123
1131
  """Finds the LLMCommandGenerator component in the pipeline."""
@@ -1204,7 +1212,7 @@ def _get_llm_command_generator_config(config: Dict[str, Any]) -> Optional[Dict]:
1204
1212
  FLOW_RETRIEVAL_EMBEDDING_MODEL_GROUP_ID: None,
1205
1213
  }
1206
1214
 
1207
- pipeline = config.get("pipeline", [])
1215
+ pipeline = config.get(CONFIG_PIPELINE_KEY, [])
1208
1216
  if not isinstance(pipeline, list):
1209
1217
  return command_generator_config
1210
1218
 
@@ -1386,8 +1394,7 @@ def track_inspect_started(model_type: Text) -> None:
1386
1394
  """Track when a user starts a bot using rasa inspect.
1387
1395
 
1388
1396
  Args:
1389
- channel: Channel name `socketio` (used for chat assistants)
1390
- or `browser_audio` (used for voice).
1397
+ model_type: Type of the model, core / nlu or rasa.
1391
1398
  """
1392
1399
  _track(TELEMETRY_INSPECT_STARTED_EVENT, {"type": model_type})
1393
1400
 
@@ -5,7 +5,6 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
5
5
 
6
6
  import tiktoken
7
7
  from numpy import ndarray
8
- from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
9
8
  from rasa_sdk.grpc_py import action_webhook_pb2
10
9
 
11
10
  from rasa.core.actions.action import DirectCustomActionExecutor
@@ -19,24 +18,27 @@ from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephra
19
18
  from rasa.core.processor import MessageProcessor
20
19
  from rasa.core.tracker_store import TrackerStore
21
20
  from rasa.dialogue_understanding.commands import Command
22
- from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
23
21
  from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
22
+ from rasa.dialogue_understanding.generator.constants import FLOW_RETRIEVAL_KEY
23
+ from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
24
24
  from rasa.engine.graph import ExecutionContext, GraphModelConfiguration, GraphNode
25
25
  from rasa.engine.training.graph_trainer import GraphTrainer
26
26
  from rasa.shared.constants import (
27
+ CONFIG_RECIPE_KEY,
28
+ DEPLOYMENT_CONFIG_KEY,
27
29
  EMBEDDINGS_CONFIG_KEY,
30
+ LLM_CONFIG_KEY,
28
31
  MODEL_CONFIG_KEY,
32
+ MODEL_GROUP_ID_CONFIG_KEY,
29
33
  PROVIDER_CONFIG_KEY,
30
34
  TIMEOUT_CONFIG_KEY,
31
- DEPLOYMENT_CONFIG_KEY,
32
- MODEL_GROUP_ID_CONFIG_KEY,
33
- LLM_CONFIG_KEY,
34
35
  )
35
36
  from rasa.shared.core.constants import REQUESTED_SLOT
36
37
  from rasa.shared.core.domain import Domain
37
38
  from rasa.shared.core.events import DialogueStackUpdated, Event
38
39
  from rasa.shared.core.flows import Flow, FlowsList, FlowStep
39
40
  from rasa.shared.core.trackers import DialogueStateTracker
41
+ from rasa.shared.core.training_data.structures import StoryGraph
40
42
  from rasa.shared.importers.importer import TrainingDataImporter
41
43
  from rasa.shared.nlu.constants import INTENT_NAME_KEY, SET_SLOT_COMMAND
42
44
  from rasa.shared.utils.llm import (
@@ -46,7 +48,6 @@ from rasa.tracing.constants import (
46
48
  PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
47
49
  REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
48
50
  )
49
- from rasa.shared.core.training_data.structures import StoryGraph
50
51
 
51
52
  if TYPE_CHECKING:
52
53
  from langchain.llms.base import BaseLLM
@@ -255,7 +256,7 @@ def extract_attrs_for_graph_trainer(
255
256
  return {
256
257
  "training_type": model_configuration.training_type.model_type,
257
258
  "language": model_configuration.language,
258
- "recipe_name": importer.get_config().get("recipe"),
259
+ "recipe_name": importer.get_config().get(CONFIG_RECIPE_KEY),
259
260
  "output_filename": output_filename.name,
260
261
  "is_finetuning": is_finetuning,
261
262
  }
@@ -644,8 +645,8 @@ def extract_attrs_for_intentless_policy_generate_llm_answer(
644
645
  self: "IntentlessPolicy", llm: "BaseLLM", prompt: str
645
646
  ) -> Dict[str, Any]:
646
647
  from rasa.core.policies.intentless_policy import (
647
- DEFAULT_LLM_CONFIG,
648
648
  DEFAULT_EMBEDDINGS_CONFIG,
649
+ DEFAULT_LLM_CONFIG,
649
650
  )
650
651
 
651
652
  attributes = extract_llm_config(
@@ -661,8 +662,8 @@ def extract_attrs_for_enterprise_search_generate_llm_answer(
661
662
  self: "EnterpriseSearchPolicy", llm: "BaseLLM", prompt: str
662
663
  ) -> Dict[str, Any]:
663
664
  from rasa.core.policies.enterprise_search_policy import (
664
- DEFAULT_LLM_CONFIG,
665
665
  DEFAULT_EMBEDDINGS_CONFIG,
666
+ DEFAULT_LLM_CONFIG,
666
667
  )
667
668
 
668
669
  attributes = extract_llm_config(
rasa/validator.py CHANGED
@@ -3,54 +3,60 @@ import re
3
3
  import string
4
4
  import sys
5
5
  from collections import defaultdict
6
- from typing import Set, Text, Optional, Dict, Any, List, Tuple
6
+ from typing import Any, Dict, List, Optional, Set, Text, Tuple
7
7
 
8
8
  import structlog
9
9
  from jinja2 import Template
10
10
  from pypred import Predicate
11
- from pypred.ast import Literal, CompareOperator, NegateOperator
11
+ from pypred.ast import CompareOperator, Literal, NegateOperator
12
12
 
13
13
  import rasa.core.training.story_conflict
14
+ import rasa.shared.nlu.constants
15
+ import rasa.shared.utils.cli
16
+ import rasa.shared.utils.io
14
17
  from rasa.core.channels import UserMessage
15
18
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
16
- from rasa.shared.core.command_payload_reader import (
17
- CommandPayloadReader,
18
- MAX_NUMBER_OF_SLOTS,
19
- )
20
- from rasa.shared.core.flows.flow_step_links import IfFlowStepLink
21
- from rasa.shared.core.flows.steps.set_slots import SetSlotsFlowStep
22
- from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
23
- from rasa.shared.core.flows.steps.action import ActionFlowStep
24
- from rasa.shared.core.flows.steps.link import LinkFlowStep
25
- from rasa.shared.core.flows import FlowsList
26
- from rasa.shared.core.flows.utils import (
27
- warn_deprecated_collect_step_config,
28
- get_duplicate_slot_persistence_config_error_message,
29
- get_invalid_slot_persistence_config_error_message,
30
- )
31
- import rasa.shared.nlu.constants
32
19
  from rasa.shared.constants import (
33
20
  ASSISTANT_ID_DEFAULT_VALUE,
34
21
  ASSISTANT_ID_KEY,
35
22
  CONFIG_MANDATORY_KEYS,
23
+ CONFIG_PIPELINE_KEY,
24
+ DOCS_URL_ACTIONS,
36
25
  DOCS_URL_DOMAIN,
37
26
  DOCS_URL_DOMAINS,
38
27
  DOCS_URL_FORMS,
39
28
  DOCS_URL_RESPONSES,
40
- UTTER_PREFIX,
41
- DOCS_URL_ACTIONS,
42
29
  REQUIRED_SLOTS_KEY,
30
+ UTTER_PREFIX,
43
31
  )
44
32
  from rasa.shared.core import constants
45
- from rasa.shared.core.constants import MAPPING_CONDITIONS, ACTIVE_LOOP
46
- from rasa.shared.core.events import ActionExecuted, ActiveLoop
47
- from rasa.shared.core.events import UserUttered
33
+ from rasa.shared.core.command_payload_reader import (
34
+ MAX_NUMBER_OF_SLOTS,
35
+ CommandPayloadReader,
36
+ )
37
+ from rasa.shared.core.constants import (
38
+ ACTIVE_LOOP,
39
+ MAPPING_CONDITIONS,
40
+ MAPPING_TYPE,
41
+ SlotMappingType,
42
+ )
48
43
  from rasa.shared.core.domain import (
49
- Domain,
50
44
  RESPONSE_KEYS_TO_INTERPOLATE,
45
+ Domain,
46
+ )
47
+ from rasa.shared.core.events import ActionExecuted, ActiveLoop, UserUttered
48
+ from rasa.shared.core.flows import FlowsList
49
+ from rasa.shared.core.flows.flow_step_links import IfFlowStepLink
50
+ from rasa.shared.core.flows.steps.action import ActionFlowStep
51
+ from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
52
+ from rasa.shared.core.flows.steps.link import LinkFlowStep
53
+ from rasa.shared.core.flows.steps.set_slots import SetSlotsFlowStep
54
+ from rasa.shared.core.flows.utils import (
55
+ get_duplicate_slot_persistence_config_error_message,
56
+ get_invalid_slot_persistence_config_error_message,
57
+ warn_deprecated_collect_step_config,
51
58
  )
52
59
  from rasa.shared.core.generator import TrainingDataGenerator
53
- from rasa.shared.core.constants import SlotMappingType, MAPPING_TYPE
54
60
  from rasa.shared.core.slots import BooleanSlot, CategoricalSlot, ListSlot, Slot
55
61
  from rasa.shared.core.training_data.story_reader.yaml_story_reader import (
56
62
  YAMLStoryReader,
@@ -62,9 +68,6 @@ from rasa.shared.nlu.constants import COMMANDS
62
68
  from rasa.shared.nlu.training_data.message import Message
63
69
  from rasa.shared.nlu.training_data.training_data import TrainingData
64
70
 
65
- import rasa.shared.utils.cli
66
- import rasa.shared.utils.io
67
-
68
71
  logger = logging.getLogger(__name__)
69
72
  structlogger = structlog.get_logger()
70
73
 
@@ -310,18 +313,6 @@ class Validator:
310
313
  everything_is_alright = True
311
314
 
312
315
  for response_text, response_variations in self.domain.responses.items():
313
- if not response_variations:
314
- structlogger.error(
315
- "validator.empty_response",
316
- response=response_text,
317
- event_info=(
318
- f"The response '{response_text}' in the domain file "
319
- f"does not have any variations. Please add at least one "
320
- f"variation to the response."
321
- ),
322
- )
323
- everything_is_alright = False
324
-
325
316
  for response in response_variations:
326
317
  if any(
327
318
  self.check_for_placeholder(response.get(key))
@@ -1514,7 +1505,7 @@ class Validator:
1514
1505
  contains_nlu_command_adapter = any(
1515
1506
  [
1516
1507
  component.get("name") == "NLUCommandAdapter"
1517
- for component in self.config.get("pipeline", [])
1508
+ for component in self.config.get(CONFIG_PIPELINE_KEY, [])
1518
1509
  ]
1519
1510
  )
1520
1511
 
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.11.3"
3
+ __version__ = "3.11.3a1.dev4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rasa-pro
3
- Version: 3.11.3
3
+ Version: 3.11.3a1.dev4
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
@@ -59,7 +59,7 @@ Requires-Dist: importlib-resources (==6.1.3)
59
59
  Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
60
60
  Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
61
61
  Requires-Dist: jsonpatch (>=1.33,<2.0)
62
- Requires-Dist: jsonpickle (>=3.3.0,<3.4)
62
+ Requires-Dist: jsonpickle (>=3.0,<3.1)
63
63
  Requires-Dist: jsonschema (>=4.22)
64
64
  Requires-Dist: keras (==2.14.0)
65
65
  Requires-Dist: langchain (>=0.2.0,<0.3.0)
@@ -90,7 +90,7 @@ Requires-Dist: pycountry (>=22.3.5,<23.0.0)
90
90
  Requires-Dist: pydantic (>=2.0,<3.0)
91
91
  Requires-Dist: pydot (>=1.4,<1.5)
92
92
  Requires-Dist: pykwalify (>=1.8,<1.9)
93
- Requires-Dist: pymilvus (>=2.4.0,<2.4.2)
93
+ Requires-Dist: pymilvus (<2.4.2)
94
94
  Requires-Dist: pymongo (>=4.10.1,<4.11.0)
95
95
  Requires-Dist: pypred (>=0.4.0,<0.5.0)
96
96
  Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
@@ -105,10 +105,10 @@ Requires-Dist: questionary (>=1.10.0,<2.1.0)
105
105
  Requires-Dist: randomname (>=0.2.1,<0.3.0)
106
106
  Requires-Dist: rasa-sdk (==3.11.0)
107
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)
108
+ Requires-Dist: regex (>=2024.7.24,<2024.8.0)
109
+ Requires-Dist: requests (>=2.32.3,<2.33.0)
110
110
  Requires-Dist: rich (>=13.4.2,<14.0.0)
111
- Requires-Dist: rocketchat_API (>=1.30.0,<1.31.0)
111
+ Requires-Dist: rocketchat_API (>=1.32.0,<1.33.0)
112
112
  Requires-Dist: ruamel.yaml (>=0.17.21,<0.17.22)
113
113
  Requires-Dist: safetensors (>=0.4.5,<0.5.0)
114
114
  Requires-Dist: sanic (>=22.12,<22.13)