rasa-pro 3.13.0.dev20250613__py3-none-any.whl → 3.13.0rc2__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/cli/e2e_test.py +0 -7
- rasa/cli/export.py +2 -0
- rasa/cli/project_templates/tutorial/config.yml +1 -1
- rasa/cli/project_templates/tutorial/endpoints.yml +1 -1
- rasa/cli/studio/download.py +1 -23
- rasa/cli/studio/link.py +0 -17
- rasa/cli/studio/pull.py +3 -2
- rasa/cli/studio/push.py +1 -1
- rasa/cli/studio/train.py +1 -5
- rasa/cli/studio/upload.py +1 -1
- rasa/core/agent.py +6 -0
- rasa/core/channels/__init__.py +3 -0
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/facebook.py +1 -4
- rasa/core/channels/inspector/README.md +3 -3
- rasa/core/channels/inspector/dist/assets/{arc-c4b064fc.js → arc-371401b1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-215b5026.js → blockDiagram-38ab4fdb-3f126156.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-2b54a0a3.js → c4Diagram-3d4e48cf-12f22eb7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-f1efda17.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-daacea5f.js → classDiagram-70f12bd4-03b1d386.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-930d4dc2.js → classDiagram-v2-f2320105-84f69d63.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-fdf164e2.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-83c206ba.js → createText-2e5e7dd3-ca47fd38.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b0eb01d0.js → edges-e0da2a9e-f837ca8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-17586500.js → erDiagram-9861fffd-8717ac54.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-be2a1776.js → flowDb-956e92f1-94f38b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c2120ebd.js → flowDiagram-66a62f08-b616f9fb.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-7d7a1629.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-a6ab5c48.js → flowchart-elk-definition-4a651766-f5d24bb8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-ef613457.js → ganttDiagram-c361ad54-b43ba8d9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-d59185b3.js → gitGraphDiagram-72cf32ee-c3aafaa5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-0f155405.js → graph-0d0a2c10.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-d5f1d1b7.js → index-3862675e-58ea0305.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-47737d3a.js → index-cce6f8a1.js} +3 -3
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-b07d141f.js → infoDiagram-f8f76790-b8f60461.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-1936d429.js → journeyDiagram-49397b02-95be5545.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-dde8d0f3.js → layout-da885b9b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-0c2c7ee0.js → line-f1c817d3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-35dd89a4.js → linear-d42801e6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-56192851.js → mindmap-definition-fc14e90a-a38923a6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-fc21ed78.js → pieDiagram-8a3498a8-ca6e71e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-25e98518.js → quadrantDiagram-120e2f19-b290dae9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-546ff1f5.js → requirementDiagram-deff3bca-03f02ceb.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-02d8b82d.js → sankeyDiagram-04a897e0-c49eee40.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-3ca5a92e.js → sequenceDiagram-704730f1-b2cd6a3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-128ea07c.js → stateDiagram-587899a1-e53a2028.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-95f290af.js → stateDiagram-v2-d93cdb3a-e1982a03.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-4984898a.js → styles-6aaf32cf-d0226ca5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-1bf266ba.js → styles-9a916d00-0e21dc00.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-60521c63.js → styles-c10674c1-9588494e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-a25b6e12.js → svgDrawCommon-08f97a94-be478d4f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-0fc086bf.js → timeline-definition-85554ec2-74631749.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-44ee592e.js → xychartDiagram-e933f94c-a043552f.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +1 -1
- rasa/core/channels/socketio.py +56 -41
- rasa/core/channels/studio_chat.py +311 -8
- rasa/core/channels/voice_ready/audiocodes.py +1 -1
- rasa/core/channels/voice_ready/jambonz.py +5 -6
- rasa/core/channels/voice_ready/twilio_voice.py +13 -12
- rasa/core/channels/voice_ready/utils.py +22 -0
- rasa/core/channels/voice_stream/asr/azure.py +9 -0
- rasa/core/channels/voice_stream/audiocodes.py +5 -11
- rasa/core/channels/voice_stream/browser_audio.py +1 -1
- rasa/core/channels/voice_stream/genesys.py +35 -16
- rasa/core/channels/voice_stream/jambonz.py +232 -0
- rasa/core/channels/voice_stream/tts/__init__.py +8 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +12 -7
- rasa/core/channels/voice_stream/voice_channel.py +53 -15
- rasa/core/exporter.py +36 -0
- rasa/core/information_retrieval/faiss.py +18 -11
- rasa/core/information_retrieval/ingestion/faq_parser.py +158 -0
- rasa/core/nlg/contextual_response_rephraser.py +10 -1
- rasa/core/policies/enterprise_search_policy.py +189 -263
- rasa/core/policies/enterprise_search_policy_config.py +241 -0
- rasa/core/policies/enterprise_search_prompt_with_relevancy_check_and_citation_template.jinja2 +6 -5
- rasa/core/policies/intentless_policy.py +47 -10
- rasa/core/processor.py +6 -0
- rasa/core/utils.py +11 -2
- rasa/dialogue_understanding/coexistence/llm_based_router.py +13 -11
- rasa/dialogue_understanding/commands/__init__.py +4 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -2
- rasa/dialogue_understanding/commands/clarify_command.py +2 -2
- rasa/dialogue_understanding/commands/correct_slots_command.py +5 -6
- rasa/dialogue_understanding/commands/error_command.py +1 -1
- rasa/dialogue_understanding/commands/human_handoff_command.py +1 -3
- rasa/dialogue_understanding/commands/set_slot_command.py +4 -4
- rasa/dialogue_understanding/commands/skip_question_command.py +1 -3
- rasa/dialogue_understanding/commands/start_flow_command.py +3 -3
- rasa/dialogue_understanding/generator/command_generator.py +11 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +3 -2
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +2 -2
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_template.jinja2 +0 -2
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +1 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +1 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +79 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +1 -0
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +2 -2
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -18
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +17 -11
- rasa/dialogue_understanding/patterns/cancel.py +1 -2
- rasa/dialogue_understanding/patterns/clarify.py +1 -1
- rasa/dialogue_understanding/patterns/correction.py +2 -2
- rasa/dialogue_understanding/processor/command_processor.py +11 -12
- rasa/dialogue_understanding/stack/utils.py +3 -1
- rasa/e2e_test/constants.py +1 -1
- rasa/e2e_test/e2e_test_coverage_report.py +1 -1
- rasa/engine/graph.py +2 -2
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +2 -6
- rasa/model_manager/runner_service.py +20 -4
- rasa/model_manager/trainer_service.py +6 -0
- rasa/privacy/privacy_manager.py +26 -11
- rasa/shared/constants.py +14 -0
- rasa/shared/core/command_payload_reader.py +1 -5
- rasa/shared/core/events.py +1 -3
- rasa/shared/core/flows/constants.py +2 -0
- rasa/shared/core/flows/flow.py +126 -12
- rasa/shared/core/flows/flows_list.py +18 -1
- rasa/shared/core/flows/steps/link.py +7 -2
- rasa/shared/core/flows/validation.py +25 -5
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +1 -4
- rasa/shared/providers/_configs/azure_openai_client_config.py +2 -2
- rasa/shared/providers/_configs/default_litellm_client_config.py +1 -1
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -1
- rasa/shared/providers/_configs/openai_client_config.py +1 -1
- rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -1
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -1
- rasa/shared/providers/_configs/utils.py +0 -99
- rasa/shared/utils/common.py +1 -1
- rasa/shared/utils/configs.py +110 -0
- rasa/shared/utils/constants.py +0 -3
- rasa/shared/utils/llm.py +123 -8
- rasa/shared/utils/pykwalify_extensions.py +0 -9
- rasa/studio/constants.py +1 -0
- rasa/studio/data_handler.py +30 -9
- rasa/studio/download.py +171 -0
- rasa/studio/link.py +13 -2
- rasa/studio/prompts.py +221 -0
- rasa/studio/pull/__init__.py +0 -0
- rasa/studio/{download/flows.py → pull/data.py} +2 -131
- rasa/studio/{download → pull}/domains.py +1 -1
- rasa/studio/pull/pull.py +239 -0
- rasa/studio/push.py +7 -0
- rasa/studio/train.py +1 -1
- rasa/studio/upload.py +61 -5
- rasa/studio/utils.py +33 -0
- rasa/tracing/instrumentation/attribute_extractors.py +21 -7
- rasa/utils/common.py +11 -0
- rasa/version.py +1 -1
- {rasa_pro-3.13.0.dev20250613.dist-info → rasa_pro-3.13.0rc2.dist-info}/METADATA +4 -4
- {rasa_pro-3.13.0.dev20250613.dist-info → rasa_pro-3.13.0rc2.dist-info}/RECORD +155 -147
- rasa/core/channels/inspector/dist/assets/channel-3730f5fd.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-e847561e.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-efbbfe00.js +0 -1
- rasa/studio/download/download.py +0 -416
- rasa/studio/pull.py +0 -94
- /rasa/{studio/download → core/information_retrieval/ingestion}/__init__.py +0 -0
- {rasa_pro-3.13.0.dev20250613.dist-info → rasa_pro-3.13.0rc2.dist-info}/NOTICE +0 -0
- {rasa_pro-3.13.0.dev20250613.dist-info → rasa_pro-3.13.0rc2.dist-info}/WHEEL +0 -0
- {rasa_pro-3.13.0.dev20250613.dist-info → rasa_pro-3.13.0rc2.dist-info}/entry_points.txt +0 -0
rasa/studio/upload.py
CHANGED
|
@@ -31,6 +31,7 @@ from rasa.shared.nlu.training_data.formats.rasa_yaml import (
|
|
|
31
31
|
RasaYAMLReader,
|
|
32
32
|
RasaYAMLWriter,
|
|
33
33
|
)
|
|
34
|
+
from rasa.shared.utils.llm import collect_custom_prompts
|
|
34
35
|
from rasa.shared.utils.yaml import (
|
|
35
36
|
dump_obj_as_yaml_to_string,
|
|
36
37
|
read_yaml,
|
|
@@ -40,6 +41,7 @@ from rasa.studio import results_logger
|
|
|
40
41
|
from rasa.studio.auth import KeycloakTokenReader
|
|
41
42
|
from rasa.studio.config import StudioConfig
|
|
42
43
|
from rasa.studio.results_logger import StudioResult, with_studio_error_handler
|
|
44
|
+
from rasa.studio.utils import validate_argument_paths
|
|
43
45
|
from rasa.telemetry import track_upload_to_studio_failed
|
|
44
46
|
|
|
45
47
|
structlogger = structlog.get_logger()
|
|
@@ -115,7 +117,7 @@ def run_validation(args: argparse.Namespace) -> None:
|
|
|
115
117
|
|
|
116
118
|
training_data_importer = TrainingDataImporter.load_from_dict(
|
|
117
119
|
domain_path=args.domain,
|
|
118
|
-
training_data_paths=args.data,
|
|
120
|
+
training_data_paths=[args.data],
|
|
119
121
|
config_path=args.config,
|
|
120
122
|
expand_env_vars=False,
|
|
121
123
|
)
|
|
@@ -142,6 +144,7 @@ def run_validation(args: argparse.Namespace) -> None:
|
|
|
142
144
|
|
|
143
145
|
def handle_upload(args: argparse.Namespace) -> None:
|
|
144
146
|
"""Uploads primitives to rasa studio."""
|
|
147
|
+
validate_argument_paths(args)
|
|
145
148
|
studio_config = StudioConfig.read_config()
|
|
146
149
|
endpoint = studio_config.studio_url
|
|
147
150
|
verify = not studio_config.disable_verify
|
|
@@ -166,6 +169,13 @@ def handle_upload(args: argparse.Namespace) -> None:
|
|
|
166
169
|
args.config, "config", DEFAULT_CONFIG_PATH
|
|
167
170
|
)
|
|
168
171
|
|
|
172
|
+
config = read_yaml_file(args.config, expand_env_vars=False)
|
|
173
|
+
assistant_name = args.assistant_name or _get_assistant_name(config)
|
|
174
|
+
if not _handle_existing_assistant(
|
|
175
|
+
assistant_name, studio_config.studio_url, verify, args
|
|
176
|
+
):
|
|
177
|
+
return
|
|
178
|
+
|
|
169
179
|
Domain.expand_env_vars = False
|
|
170
180
|
RasaYAMLReader.expand_env_vars = False
|
|
171
181
|
YAMLFlowsReader.expand_env_vars = False
|
|
@@ -253,7 +263,7 @@ def build_calm_import_parts(
|
|
|
253
263
|
domain = extract_values(domain_from_files, DOMAIN_KEYS)
|
|
254
264
|
|
|
255
265
|
flow_importer = FlowSyncImporter.load_from_dict(
|
|
256
|
-
training_data_paths=data_path, expand_env_vars=False
|
|
266
|
+
training_data_paths=[str(data_path)], expand_env_vars=False
|
|
257
267
|
)
|
|
258
268
|
|
|
259
269
|
flows = list(flow_importer.get_user_flows())
|
|
@@ -261,7 +271,7 @@ def build_calm_import_parts(
|
|
|
261
271
|
flows = read_yaml(flows_yaml, expand_env_vars=False)
|
|
262
272
|
|
|
263
273
|
nlu_importer = TrainingDataImporter.load_from_dict(
|
|
264
|
-
training_data_paths=data_path, expand_env_vars=False
|
|
274
|
+
training_data_paths=[str(data_path)], expand_env_vars=False
|
|
265
275
|
)
|
|
266
276
|
nlu_data = nlu_importer.get_nlu_data()
|
|
267
277
|
nlu_examples = nlu_data.filter_training_examples(
|
|
@@ -297,8 +307,10 @@ def upload_calm_assistant(
|
|
|
297
307
|
domain_path=args.domain,
|
|
298
308
|
config_path=args.config,
|
|
299
309
|
endpoints_path=args.endpoints,
|
|
310
|
+
assistant_name=args.assistant_name,
|
|
300
311
|
)
|
|
301
312
|
|
|
313
|
+
prompts_json = collect_custom_prompts(parts.config, parts.endpoints)
|
|
302
314
|
graphql_req = build_import_request(
|
|
303
315
|
assistant_name,
|
|
304
316
|
flows_yaml=yaml_or_empty(parts.flows),
|
|
@@ -306,7 +318,9 @@ def upload_calm_assistant(
|
|
|
306
318
|
config_yaml=yaml_or_empty(parts.config),
|
|
307
319
|
endpoints=yaml_or_empty(parts.endpoints),
|
|
308
320
|
nlu_yaml=yaml_or_empty(parts.nlu),
|
|
321
|
+
prompts_json=prompts_json,
|
|
309
322
|
)
|
|
323
|
+
|
|
310
324
|
structlogger.info(
|
|
311
325
|
"rasa.studio.upload.calm", event_info="Uploading to Rasa Studio..."
|
|
312
326
|
)
|
|
@@ -336,7 +350,7 @@ def upload_nlu_assistant(
|
|
|
336
350
|
)
|
|
337
351
|
importer = TrainingDataImporter.load_from_dict(
|
|
338
352
|
domain_path=args.domain,
|
|
339
|
-
training_data_paths=args.data,
|
|
353
|
+
training_data_paths=[args.data],
|
|
340
354
|
config_path=args.config,
|
|
341
355
|
expand_env_vars=False,
|
|
342
356
|
)
|
|
@@ -451,6 +465,7 @@ def build_import_request(
|
|
|
451
465
|
config_yaml: Optional[str] = None,
|
|
452
466
|
endpoints: Optional[str] = None,
|
|
453
467
|
nlu_yaml: Optional[str] = None,
|
|
468
|
+
prompts_json: Optional[Dict[str, str]] = None,
|
|
454
469
|
) -> Dict:
|
|
455
470
|
"""Builds the GraphQL request for uploading a modern assistant.
|
|
456
471
|
|
|
@@ -461,6 +476,7 @@ def build_import_request(
|
|
|
461
476
|
config_yaml: The YAML representation of the config
|
|
462
477
|
endpoints: The YAML representation of the endpoints
|
|
463
478
|
nlu_yaml: The YAML representation of the NLU data
|
|
479
|
+
prompts_json: The JSON representation of the prompts
|
|
464
480
|
|
|
465
481
|
Returns:
|
|
466
482
|
A dictionary representing the GraphQL request for uploading the assistant.
|
|
@@ -473,12 +489,15 @@ def build_import_request(
|
|
|
473
489
|
"nlu": nlu_yaml,
|
|
474
490
|
}
|
|
475
491
|
|
|
476
|
-
payload = {
|
|
492
|
+
payload: Dict[Text, Any] = {
|
|
477
493
|
field: convert_string_to_base64(value)
|
|
478
494
|
for field, value in inputs_map.items()
|
|
479
495
|
if value is not None
|
|
480
496
|
}
|
|
481
497
|
|
|
498
|
+
if prompts_json:
|
|
499
|
+
payload["prompts"] = prompts_json
|
|
500
|
+
|
|
482
501
|
variables_input = {"assistantName": assistant_name, **payload}
|
|
483
502
|
|
|
484
503
|
graphql_req = {
|
|
@@ -677,3 +696,40 @@ def build_get_assistant_by_name_request(
|
|
|
677
696
|
},
|
|
678
697
|
}
|
|
679
698
|
return graphql_req
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
def _handle_existing_assistant(
|
|
702
|
+
assistant_name: str,
|
|
703
|
+
endpoint: str,
|
|
704
|
+
verify: bool,
|
|
705
|
+
args: argparse.Namespace,
|
|
706
|
+
) -> bool:
|
|
707
|
+
"""Deal with the case that an assistant with the same name already exists.
|
|
708
|
+
|
|
709
|
+
Args:
|
|
710
|
+
assistant_name: The name of the assistant
|
|
711
|
+
endpoint: The studio endpoint
|
|
712
|
+
verify: Whether to verify SSL
|
|
713
|
+
args: The command line arguments
|
|
714
|
+
|
|
715
|
+
Returns:
|
|
716
|
+
bool: True if the assistant does not exist and can be created,
|
|
717
|
+
False if the assistant already exists and was linked.
|
|
718
|
+
"""
|
|
719
|
+
from rasa.studio.link import handle_link
|
|
720
|
+
|
|
721
|
+
if not check_if_assistant_already_exists(assistant_name, endpoint, verify):
|
|
722
|
+
return True
|
|
723
|
+
|
|
724
|
+
should_link = questionary.confirm(
|
|
725
|
+
f"An assistant named {assistant_name} already exists in Studio. "
|
|
726
|
+
f"Would you like to link your local project to this existing assistant?"
|
|
727
|
+
).ask()
|
|
728
|
+
|
|
729
|
+
if not should_link:
|
|
730
|
+
rasa.shared.utils.cli.print_error_and_exit("Upload cancelled.")
|
|
731
|
+
return False
|
|
732
|
+
|
|
733
|
+
args.assistant_name = assistant_name
|
|
734
|
+
handle_link(args)
|
|
735
|
+
return False
|
rasa/studio/utils.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
import rasa.shared.utils.cli
|
|
5
|
+
from rasa.shared.constants import (
|
|
6
|
+
DEFAULT_CONFIG_PATH,
|
|
7
|
+
DEFAULT_DATA_PATH,
|
|
8
|
+
DEFAULT_ENDPOINTS_PATH,
|
|
9
|
+
)
|
|
10
|
+
from rasa.studio.constants import DOMAIN_FILENAME
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def validate_argument_paths(args: argparse.Namespace) -> None:
|
|
14
|
+
"""Validates the paths provided in the command line arguments.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
args: The command line arguments containing paths to validate.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def validate_path(arg_name: str, default: str) -> None:
|
|
21
|
+
path_value = getattr(args, arg_name, None)
|
|
22
|
+
if path_value and path_value != default:
|
|
23
|
+
resolved_path = Path(path_value).resolve()
|
|
24
|
+
if not resolved_path.exists():
|
|
25
|
+
rasa.shared.utils.cli.print_error_and_exit(
|
|
26
|
+
f"{arg_name.capitalize()} file or directory "
|
|
27
|
+
f"'{path_value}' does not exist."
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
validate_path("domain", DOMAIN_FILENAME)
|
|
31
|
+
validate_path("config", DEFAULT_CONFIG_PATH)
|
|
32
|
+
validate_path("endpoints", DEFAULT_ENDPOINTS_PATH)
|
|
33
|
+
validate_path("data", DEFAULT_DATA_PATH)
|
|
@@ -64,7 +64,10 @@ from rasa.shared.core.trackers import DialogueStateTracker
|
|
|
64
64
|
from rasa.shared.core.training_data.structures import StoryGraph
|
|
65
65
|
from rasa.shared.importers.importer import TrainingDataImporter
|
|
66
66
|
from rasa.shared.nlu.constants import INTENT_NAME_KEY, SET_SLOT_COMMAND
|
|
67
|
-
from rasa.shared.utils.llm import
|
|
67
|
+
from rasa.shared.utils.llm import (
|
|
68
|
+
combine_custom_and_default_config,
|
|
69
|
+
resolve_model_client_config,
|
|
70
|
+
)
|
|
68
71
|
from rasa.tracing.constants import (
|
|
69
72
|
PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
|
|
70
73
|
REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
|
|
@@ -335,9 +338,8 @@ def extract_llm_config(
|
|
|
335
338
|
else:
|
|
336
339
|
config = self.config
|
|
337
340
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
)
|
|
341
|
+
llm_config = resolve_model_client_config(config.get(LLM_CONFIG_KEY))
|
|
342
|
+
llm_property = combine_custom_and_default_config(llm_config, default_llm_config)
|
|
341
343
|
|
|
342
344
|
if isinstance(self, LLMBasedCommandGenerator):
|
|
343
345
|
flow_retrieval_config = config.get(FLOW_RETRIEVAL_KEY, {}) or {}
|
|
@@ -346,8 +348,11 @@ def extract_llm_config(
|
|
|
346
348
|
default_embeddings_config,
|
|
347
349
|
)
|
|
348
350
|
else:
|
|
351
|
+
embeddings_config = resolve_model_client_config(
|
|
352
|
+
config.get(EMBEDDINGS_CONFIG_KEY)
|
|
353
|
+
)
|
|
349
354
|
embeddings_property = combine_custom_and_default_config(
|
|
350
|
-
|
|
355
|
+
embeddings_config, default_embeddings_config
|
|
351
356
|
)
|
|
352
357
|
|
|
353
358
|
attributes = {
|
|
@@ -814,14 +819,23 @@ def compute_prompt_tokens_length(
|
|
|
814
819
|
)
|
|
815
820
|
return None
|
|
816
821
|
|
|
817
|
-
if model_name
|
|
822
|
+
if model_name == "gpt-4":
|
|
818
823
|
logger.debug(
|
|
819
824
|
f"Model {model_name} may update over time. "
|
|
820
825
|
f"Returning num tokens assuming model '{model_name}-0613.'"
|
|
821
826
|
)
|
|
822
827
|
model_name = f"{model_name}-0613"
|
|
823
828
|
|
|
824
|
-
|
|
829
|
+
try:
|
|
830
|
+
encoding = tiktoken.encoding_for_model(model_name)
|
|
831
|
+
except KeyError:
|
|
832
|
+
# Fallback for unknown models
|
|
833
|
+
logger.warning(
|
|
834
|
+
f"Unknown model name '{model_name}', "
|
|
835
|
+
f"using 'cl100k_base' encoding as fallback."
|
|
836
|
+
)
|
|
837
|
+
encoding = tiktoken.get_encoding("cl100k_base")
|
|
838
|
+
|
|
825
839
|
return len(encoding.encode(prompt))
|
|
826
840
|
|
|
827
841
|
|
rasa/utils/common.py
CHANGED
|
@@ -280,6 +280,7 @@ def configure_library_logging() -> None:
|
|
|
280
280
|
update_matplotlib_log_level(library_log_level)
|
|
281
281
|
update_kafka_log_level(library_log_level)
|
|
282
282
|
update_rabbitmq_log_level(library_log_level)
|
|
283
|
+
update_websockets_log_level(library_log_level)
|
|
283
284
|
|
|
284
285
|
|
|
285
286
|
def update_apscheduler_log_level() -> None:
|
|
@@ -404,6 +405,16 @@ def update_rabbitmq_log_level(library_log_level: Text) -> None:
|
|
|
404
405
|
logging.getLogger("aiormq").setLevel(log_level)
|
|
405
406
|
|
|
406
407
|
|
|
408
|
+
def update_websockets_log_level(library_log_level: Text) -> None:
|
|
409
|
+
"""Set the log level of websockets.
|
|
410
|
+
|
|
411
|
+
Uses the library specific log level or the general libraries log level.
|
|
412
|
+
"""
|
|
413
|
+
log_level = os.environ.get(ENV_LOG_LEVEL_LIBRARIES, library_log_level)
|
|
414
|
+
logging.getLogger("websockets").setLevel(log_level)
|
|
415
|
+
logging.getLogger("websockets").propagate = False
|
|
416
|
+
|
|
417
|
+
|
|
407
418
|
def sort_list_of_dicts_by_first_key(dicts: List[Dict]) -> List[Dict]:
|
|
408
419
|
"""Sorts a list of dictionaries by their first key."""
|
|
409
420
|
return sorted(dicts, key=lambda d: next(iter(d.keys())))
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.13.
|
|
3
|
+
Version: 3.13.0rc2
|
|
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
|
|
@@ -23,7 +23,7 @@ Provides-Extra: spacy
|
|
|
23
23
|
Provides-Extra: transformers
|
|
24
24
|
Requires-Dist: CacheControl (>=0.14.2,<0.15.0)
|
|
25
25
|
Requires-Dist: PyJWT[crypto] (>=2.8.0,<3.0.0)
|
|
26
|
-
Requires-Dist: SQLAlchemy (>=2.0.
|
|
26
|
+
Requires-Dist: SQLAlchemy (>=2.0.41,<2.1.0)
|
|
27
27
|
Requires-Dist: absl-py (>=2.0,<2.1)
|
|
28
28
|
Requires-Dist: aio-pika (>=8.2.3,<9.4.4)
|
|
29
29
|
Requires-Dist: aiogram (>=3.15,<3.16)
|
|
@@ -91,7 +91,7 @@ Requires-Dist: pymongo (>=4.10.1,<4.11.0)
|
|
|
91
91
|
Requires-Dist: pypred (>=0.4.0,<0.5.0)
|
|
92
92
|
Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
|
|
93
93
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
94
|
-
Requires-Dist: python-engineio (>=4.12.
|
|
94
|
+
Requires-Dist: python-engineio (>=4.12.2,<4.13.0)
|
|
95
95
|
Requires-Dist: python-keycloak (>=3.12.0,<4.0.0)
|
|
96
96
|
Requires-Dist: python-socketio (>=5.8,<6)
|
|
97
97
|
Requires-Dist: pytz (>=2022.7.1,<2023.0)
|
|
@@ -99,7 +99,7 @@ Requires-Dist: pyyaml (>=6.0)
|
|
|
99
99
|
Requires-Dist: qdrant-client (>=1.9.1,<1.10.0)
|
|
100
100
|
Requires-Dist: questionary (>=1.10.0,<2.1.0)
|
|
101
101
|
Requires-Dist: randomname (>=0.2.1,<0.3.0)
|
|
102
|
-
Requires-Dist: rasa-sdk (==3.13.
|
|
102
|
+
Requires-Dist: rasa-sdk (==3.13.0rc1)
|
|
103
103
|
Requires-Dist: redis (>=4.6.0,<6.0)
|
|
104
104
|
Requires-Dist: regex (>=2024.7.24,<2024.8.0)
|
|
105
105
|
Requires-Dist: requests (>=2.32.3,<2.33.0)
|