rasa-pro 3.11.4__py3-none-any.whl → 3.12.0__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.
- README.md +10 -13
- rasa/__main__.py +7 -7
- rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
- rasa/anonymization/anonymization_pipeline.py +3 -3
- rasa/anonymization/anonymization_rule_executor.py +17 -11
- rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
- rasa/cli/arguments/data.py +2 -2
- rasa/cli/arguments/default_arguments.py +1 -1
- rasa/cli/arguments/evaluate.py +2 -1
- rasa/cli/arguments/interactive.py +1 -1
- rasa/cli/arguments/run.py +1 -1
- rasa/cli/arguments/test.py +7 -5
- rasa/cli/arguments/train.py +3 -3
- rasa/cli/arguments/visualize.py +2 -2
- rasa/cli/arguments/x.py +1 -0
- rasa/cli/data.py +20 -3
- rasa/cli/dialogue_understanding_test.py +386 -0
- rasa/cli/evaluate.py +1 -1
- rasa/cli/export.py +6 -6
- rasa/cli/inspect.py +20 -1
- rasa/cli/interactive.py +4 -5
- rasa/cli/llm_fine_tuning.py +51 -16
- rasa/cli/markers.py +1 -2
- rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
- rasa/cli/project_templates/calm/config.yml +2 -2
- rasa/cli/project_templates/calm/domain/list_contacts.yml +1 -2
- rasa/cli/project_templates/calm/domain/remove_contact.yml +1 -2
- rasa/cli/project_templates/calm/domain/shared.yml +1 -4
- rasa/cli/project_templates/calm/endpoints.yml +2 -2
- rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
- rasa/cli/shell.py +5 -6
- rasa/cli/studio/download.py +1 -2
- rasa/cli/studio/studio.py +2 -3
- rasa/cli/studio/train.py +0 -1
- rasa/cli/telemetry.py +2 -2
- rasa/cli/test.py +11 -11
- rasa/cli/train.py +3 -0
- rasa/cli/utils.py +25 -5
- rasa/constants.py +0 -1
- rasa/core/__init__.py +0 -1
- rasa/core/actions/action.py +137 -208
- rasa/core/actions/action_handle_digressions.py +164 -0
- rasa/core/actions/action_hangup.py +1 -1
- rasa/core/actions/action_repeat_bot_messages.py +2 -2
- rasa/core/actions/action_run_slot_rejections.py +18 -6
- rasa/core/actions/action_trigger_chitchat.py +1 -1
- rasa/core/actions/action_trigger_flow.py +5 -5
- rasa/core/actions/action_trigger_search.py +1 -1
- rasa/core/actions/custom_action_executor.py +1 -1
- rasa/core/actions/direct_custom_actions_executor.py +1 -0
- rasa/core/actions/forms.py +22 -15
- rasa/core/actions/http_custom_action_executor.py +8 -1
- rasa/core/actions/loops.py +3 -3
- rasa/core/actions/two_stage_fallback.py +13 -13
- rasa/core/auth_retry_tracker_store.py +1 -2
- rasa/core/brokers/broker.py +2 -1
- rasa/core/brokers/file.py +1 -1
- rasa/core/brokers/kafka.py +8 -8
- rasa/core/brokers/pika.py +8 -9
- rasa/core/brokers/sql.py +4 -3
- rasa/core/channels/__init__.py +7 -0
- rasa/core/channels/botframework.py +2 -2
- rasa/core/channels/callback.py +4 -4
- rasa/core/channels/channel.py +11 -11
- rasa/core/channels/console.py +0 -1
- rasa/core/channels/development_inspector.py +80 -24
- rasa/core/channels/facebook.py +5 -5
- rasa/core/channels/hangouts.py +7 -8
- rasa/core/channels/inspector/dist/assets/Tableau10-1b767f5e.js +1 -0
- rasa/core/channels/inspector/dist/assets/arc-9f1365dc.js +1 -0
- rasa/core/channels/inspector/dist/assets/blockDiagram-38ab4fdb-e0f81b12.js +118 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-3d4e48cf-9deaee1c.js +10 -0
- rasa/core/channels/inspector/dist/assets/channel-44956714.js +1 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-70f12bd4-20450a96.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-f2320105-749d2abf.js +2 -0
- rasa/core/channels/inspector/dist/assets/clone-a9475142.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-62fc7601-89c73b31.js → createText-2e5e7dd3-bef0b38c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/edges-e0da2a9e-943801a7.js +4 -0
- rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-907e0440.js → erDiagram-9861fffd-d523a948.js} +4 -4
- rasa/core/channels/inspector/dist/assets/flowDb-956e92f1-54e4cf19.js +10 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-66a62f08-48bfbbe8.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-43fa749a.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-4a651766-17c30827.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-c361ad54-43086f2d.js +257 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-72cf32ee-5c8b693e.js +70 -0
- rasa/core/channels/inspector/dist/assets/graph-41a90d26.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3862675e-b43eeae9.js +1 -0
- rasa/core/channels/inspector/dist/assets/{index-e793d777.js → index-e8affe45.js} +201 -196
- rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-8ceba4db.js → infoDiagram-f8f76790-0b20676b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-960d3809.js → journeyDiagram-49397b02-39bce7b5.js} +4 -4
- rasa/core/channels/inspector/dist/assets/katex-498eb57e.js +261 -0
- rasa/core/channels/inspector/dist/assets/layout-dc8eeea4.js +1 -0
- rasa/core/channels/inspector/dist/assets/{line-eeccc4e2.js → line-c4d2e756.js} +1 -1
- rasa/core/channels/inspector/dist/assets/linear-86f6f2d9.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-fc14e90a-4216f771.js +312 -0
- rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-dc9b5e1b.js → pieDiagram-8a3498a8-1a0cfa96.js} +7 -7
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-a08cba6d.js → quadrantDiagram-120e2f19-f91e67cf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-87242b9e.js → requirementDiagram-deff3bca-d4046bed.js} +2 -2
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-04a897e0-2cf6d1d7.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-704730f1-751ac4f5.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-587899a1-f734f4d4.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-d93cdb3a-91c65710.js +1 -0
- rasa/core/channels/inspector/dist/assets/{styles-9c745c82-cef936a6.js → styles-6aaf32cf-e0cff7be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/styles-9a916d00-c8029e5d.js +160 -0
- rasa/core/channels/inspector/dist/assets/styles-c10674c1-114f312a.js +116 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-08f97a94-b7b9dc00.js +1 -0
- rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-0d39bdb2.js → timeline-definition-85554ec2-9536d189.js} +3 -3
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-a03fa445.js → xychartDiagram-e933f94c-bf3b0f36.js} +3 -3
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +11 -3
- rasa/core/channels/inspector/src/App.tsx +15 -2
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +31 -0
- rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +68 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +19 -13
- rasa/core/channels/inspector/yarn.lock +94 -99
- rasa/core/channels/mattermost.py +4 -4
- rasa/core/channels/rasa_chat.py +4 -4
- rasa/core/channels/rest.py +11 -12
- rasa/core/channels/rocketchat.py +4 -3
- rasa/core/channels/slack.py +6 -5
- rasa/core/channels/socketio.py +8 -28
- rasa/core/channels/studio_chat.py +212 -0
- rasa/core/channels/telegram.py +105 -55
- rasa/core/channels/twilio.py +3 -3
- rasa/core/channels/vier_cvg.py +2 -2
- rasa/core/channels/voice_ready/audiocodes.py +51 -32
- rasa/core/channels/voice_ready/jambonz.py +5 -5
- rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
- rasa/core/channels/voice_ready/twilio_voice.py +9 -8
- rasa/core/channels/voice_ready/utils.py +2 -2
- rasa/core/channels/voice_stream/asr/asr_engine.py +12 -6
- rasa/core/channels/voice_stream/asr/asr_event.py +5 -0
- rasa/core/channels/voice_stream/asr/azure.py +16 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +76 -19
- rasa/core/channels/voice_stream/audiocodes.py +292 -0
- rasa/core/channels/voice_stream/browser_audio.py +14 -7
- rasa/core/channels/voice_stream/call_state.py +6 -2
- rasa/core/channels/voice_stream/genesys.py +320 -0
- rasa/core/channels/voice_stream/tts/azure.py +13 -5
- rasa/core/channels/voice_stream/tts/cartesia.py +34 -14
- rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
- rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
- rasa/core/channels/voice_stream/twilio_media_streams.py +12 -8
- rasa/core/channels/voice_stream/util.py +1 -1
- rasa/core/channels/voice_stream/voice_channel.py +100 -56
- rasa/core/channels/webexteams.py +3 -4
- rasa/core/constants.py +2 -0
- rasa/core/evaluation/marker.py +7 -6
- rasa/core/evaluation/marker_base.py +15 -16
- rasa/core/evaluation/marker_stats.py +3 -4
- rasa/core/evaluation/marker_tracker_loader.py +5 -4
- rasa/core/exporter.py +4 -4
- rasa/core/featurizers/precomputation.py +8 -8
- rasa/core/featurizers/single_state_featurizer.py +7 -7
- rasa/core/featurizers/tracker_featurizers.py +13 -13
- rasa/core/http_interpreter.py +3 -4
- rasa/core/information_retrieval/__init__.py +1 -1
- rasa/core/information_retrieval/faiss.py +4 -4
- rasa/core/information_retrieval/information_retrieval.py +2 -2
- rasa/core/information_retrieval/milvus.py +3 -3
- rasa/core/information_retrieval/qdrant.py +3 -3
- rasa/core/jobs.py +1 -0
- rasa/core/lock.py +2 -3
- rasa/core/lock_store.py +3 -3
- rasa/core/migrate.py +12 -9
- rasa/core/nlg/__init__.py +1 -1
- rasa/core/nlg/callback.py +2 -3
- rasa/core/nlg/contextual_response_rephraser.py +82 -14
- rasa/core/nlg/generator.py +85 -17
- rasa/core/nlg/interpolator.py +4 -3
- rasa/core/nlg/response.py +9 -7
- rasa/core/nlg/summarize.py +1 -0
- rasa/core/nlg/translate.py +55 -0
- rasa/core/persistor.py +3 -3
- rasa/core/policies/ensemble.py +10 -9
- rasa/core/policies/enterprise_search_policy.py +87 -21
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +1 -1
- rasa/core/policies/flow_policy.py +13 -14
- rasa/core/policies/flows/flow_executor.py +85 -55
- rasa/core/policies/intentless_policy.py +6 -7
- rasa/core/policies/memoization.py +22 -20
- rasa/core/policies/policy.py +24 -22
- rasa/core/policies/rule_policy.py +37 -36
- rasa/core/policies/ted_policy.py +87 -85
- rasa/core/policies/unexpected_intent_policy.py +77 -75
- rasa/core/processor.py +167 -74
- rasa/core/run.py +5 -4
- rasa/core/secrets_manager/endpoints.py +2 -3
- rasa/core/secrets_manager/factory.py +2 -3
- rasa/core/secrets_manager/secret_manager.py +2 -3
- rasa/core/secrets_manager/vault.py +2 -2
- rasa/core/test.py +30 -30
- rasa/core/tracker_store.py +138 -49
- rasa/core/train.py +1 -1
- rasa/core/training/__init__.py +2 -2
- rasa/core/training/converters/responses_prefix_converter.py +1 -2
- rasa/core/training/interactive.py +13 -13
- rasa/core/training/story_conflict.py +4 -5
- rasa/core/training/training.py +3 -5
- rasa/core/utils.py +5 -5
- rasa/core/visualize.py +1 -1
- rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
- rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
- rasa/dialogue_understanding/commands/__init__.py +22 -22
- rasa/dialogue_understanding/commands/can_not_handle_command.py +38 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +96 -9
- rasa/dialogue_understanding/commands/change_flow_command.py +36 -2
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +36 -4
- rasa/dialogue_understanding/commands/clarify_command.py +46 -4
- rasa/dialogue_understanding/commands/command.py +3 -2
- rasa/dialogue_understanding/commands/command_syntax_manager.py +55 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +14 -5
- rasa/dialogue_understanding/commands/error_command.py +1 -1
- rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
- rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
- rasa/dialogue_understanding/commands/handle_digressions_command.py +144 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +34 -4
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +36 -4
- rasa/dialogue_understanding/commands/noop_command.py +2 -1
- rasa/dialogue_understanding/commands/prompt_command.py +94 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +34 -4
- rasa/dialogue_understanding/commands/restart_command.py +2 -5
- rasa/dialogue_understanding/commands/session_end_command.py +3 -5
- rasa/dialogue_understanding/commands/session_start_command.py +3 -5
- rasa/dialogue_understanding/commands/set_slot_command.py +55 -16
- rasa/dialogue_understanding/commands/skip_question_command.py +34 -4
- rasa/dialogue_understanding/commands/start_flow_command.py +78 -2
- rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
- rasa/dialogue_understanding/commands/utils.py +126 -43
- rasa/dialogue_understanding/constants.py +2 -0
- rasa/dialogue_understanding/generator/__init__.py +2 -0
- rasa/dialogue_understanding/generator/command_generator.py +120 -79
- rasa/dialogue_understanding/generator/command_parser.py +245 -0
- rasa/dialogue_understanding/generator/constants.py +12 -4
- rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +187 -59
- rasa/dialogue_understanding/generator/llm_command_generator.py +6 -3
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +106 -110
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +53 -11
- rasa/dialogue_understanding/generator/prompt_templates/__init__.py +0 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +58 -0
- rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +57 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +574 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +41 -386
- rasa/dialogue_understanding/generator/utils.py +76 -0
- rasa/dialogue_understanding/patterns/cancel.py +2 -1
- rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
- rasa/dialogue_understanding/patterns/chitchat.py +1 -1
- rasa/dialogue_understanding/patterns/clarify.py +2 -1
- rasa/dialogue_understanding/patterns/code_change.py +2 -0
- rasa/dialogue_understanding/patterns/collect_information.py +7 -4
- rasa/dialogue_understanding/patterns/completed.py +1 -1
- rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -1
- rasa/dialogue_understanding/patterns/correction.py +17 -3
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +78 -2
- rasa/dialogue_understanding/patterns/handle_digressions.py +81 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
- rasa/dialogue_understanding/patterns/internal_error.py +1 -0
- rasa/dialogue_understanding/patterns/search.py +1 -1
- rasa/dialogue_understanding/patterns/session_start.py +1 -1
- rasa/dialogue_understanding/patterns/skip_question.py +1 -0
- rasa/dialogue_understanding/patterns/user_silence.py +1 -1
- rasa/dialogue_understanding/patterns/validate_slot.py +65 -0
- rasa/dialogue_understanding/processor/command_processor.py +193 -43
- rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
- rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
- rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
- rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
- rasa/dialogue_understanding/stack/utils.py +56 -10
- rasa/dialogue_understanding/utils.py +164 -0
- rasa/dialogue_understanding_test/README.md +429 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_comparison.py +60 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +122 -0
- rasa/dialogue_understanding_test/constants.py +22 -0
- rasa/dialogue_understanding_test/du_test_case.py +448 -0
- rasa/dialogue_understanding_test/du_test_result.py +390 -0
- rasa/dialogue_understanding_test/du_test_runner.py +322 -0
- rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
- rasa/dialogue_understanding_test/io.py +443 -0
- rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
- rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
- rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
- rasa/dialogue_understanding_test/utils.py +70 -0
- rasa/dialogue_understanding_test/validation.py +77 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
- rasa/e2e_test/assertions.py +202 -175
- rasa/e2e_test/assertions_schema.yml +6 -0
- rasa/e2e_test/constants.py +16 -1
- rasa/e2e_test/e2e_config.py +102 -41
- rasa/e2e_test/e2e_config_schema.yml +28 -10
- rasa/e2e_test/e2e_test_case.py +5 -5
- rasa/e2e_test/e2e_test_converter.py +2 -3
- rasa/e2e_test/e2e_test_coverage_report.py +6 -6
- rasa/e2e_test/e2e_test_result.py +1 -1
- rasa/e2e_test/e2e_test_runner.py +143 -38
- rasa/e2e_test/llm_judge_prompts/answer_relevance_prompt_template.jinja2 +93 -0
- rasa/e2e_test/llm_judge_prompts/groundedness_prompt_template.jinja2 +169 -0
- rasa/e2e_test/stub_custom_action.py +1 -1
- rasa/e2e_test/utils/generative_assertions.py +243 -0
- rasa/e2e_test/utils/io.py +123 -93
- rasa/e2e_test/utils/validation.py +101 -3
- rasa/engine/caching.py +5 -7
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +3 -2
- rasa/engine/language.py +182 -0
- rasa/engine/recipes/config_files/default_config.yml +4 -0
- rasa/engine/recipes/default_components.py +13 -15
- rasa/engine/recipes/default_recipe.py +65 -49
- rasa/engine/recipes/graph_recipe.py +10 -7
- rasa/engine/recipes/recipe.py +2 -2
- rasa/engine/runner/dask.py +2 -2
- rasa/engine/runner/interface.py +1 -0
- rasa/engine/storage/local_model_storage.py +6 -4
- rasa/engine/storage/resource.py +2 -1
- rasa/engine/storage/storage.py +8 -3
- rasa/engine/training/components.py +2 -1
- rasa/engine/training/fingerprinting.py +4 -2
- rasa/engine/training/graph_trainer.py +4 -4
- rasa/engine/training/hooks.py +2 -2
- rasa/engine/validation.py +36 -33
- rasa/exceptions.py +3 -2
- rasa/graph_components/converters/nlu_message_converter.py +3 -3
- rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
- rasa/graph_components/providers/domain_provider.py +3 -2
- rasa/graph_components/providers/flows_provider.py +2 -3
- rasa/graph_components/providers/forms_provider.py +4 -4
- rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
- rasa/graph_components/providers/responses_provider.py +4 -4
- rasa/graph_components/providers/rule_only_provider.py +3 -2
- rasa/graph_components/providers/story_graph_provider.py +8 -8
- rasa/graph_components/providers/training_tracker_provider.py +3 -2
- rasa/graph_components/validators/default_recipe_validator.py +16 -16
- rasa/graph_components/validators/finetuning_validator.py +10 -8
- rasa/hooks.py +19 -14
- rasa/jupyter.py +2 -2
- rasa/llm_fine_tuning/annotation_module.py +4 -4
- rasa/llm_fine_tuning/conversations.py +5 -33
- rasa/llm_fine_tuning/llm_data_preparation_module.py +6 -4
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +18 -13
- rasa/llm_fine_tuning/paraphrasing_module.py +6 -2
- rasa/llm_fine_tuning/storage.py +3 -3
- rasa/llm_fine_tuning/train_test_split_module.py +27 -27
- rasa/llm_fine_tuning/utils.py +7 -0
- rasa/markers/marker.py +2 -3
- rasa/markers/marker_base.py +1 -2
- rasa/markers/upload.py +2 -2
- rasa/markers/validate.py +2 -3
- rasa/model.py +3 -5
- rasa/model_manager/config.py +1 -1
- rasa/model_manager/model_api.py +5 -4
- rasa/model_manager/runner_service.py +13 -10
- rasa/model_manager/socket_bridge.py +15 -9
- rasa/model_manager/studio_jwt_auth.py +1 -0
- rasa/model_manager/trainer_service.py +9 -7
- rasa/model_manager/utils.py +1 -1
- rasa/model_manager/warm_rasa_process.py +14 -9
- rasa/model_service.py +5 -6
- rasa/model_testing.py +13 -15
- rasa/model_training.py +29 -29
- rasa/nlu/classifiers/diet_classifier.py +72 -73
- rasa/nlu/classifiers/fallback_classifier.py +9 -8
- rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
- rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
- rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
- rasa/nlu/classifiers/regex_message_handler.py +3 -2
- rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
- rasa/nlu/convert.py +2 -2
- rasa/nlu/emulators/dialogflow.py +3 -3
- rasa/nlu/emulators/luis.py +5 -5
- rasa/nlu/emulators/no_emulator.py +1 -0
- rasa/nlu/emulators/wit.py +4 -4
- rasa/nlu/extractors/crf_entity_extractor.py +11 -11
- rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
- rasa/nlu/extractors/entity_synonyms.py +10 -9
- rasa/nlu/extractors/extractor.py +16 -16
- rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
- rasa/nlu/extractors/regex_entity_extractor.py +11 -10
- rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
- rasa/nlu/featurizers/featurizer.py +5 -4
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
- rasa/nlu/model.py +0 -1
- rasa/nlu/selectors/response_selector.py +67 -68
- rasa/nlu/test.py +38 -38
- rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
- rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
- rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
- rasa/nlu/tokenizers/tokenizer.py +6 -7
- rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
- rasa/nlu/utils/bilou_utils.py +7 -7
- rasa/nlu/utils/hugging_face/registry.py +22 -22
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
- rasa/nlu/utils/mitie_utils.py +2 -1
- rasa/nlu/utils/pattern_utils.py +1 -1
- rasa/nlu/utils/spacy_utils.py +3 -3
- rasa/plugin.py +12 -1
- rasa/server.py +6 -3
- rasa/shared/constants.py +45 -18
- rasa/shared/core/command_payload_reader.py +15 -7
- rasa/shared/core/constants.py +34 -4
- rasa/shared/core/conversation.py +1 -2
- rasa/shared/core/domain.py +19 -20
- rasa/shared/core/events.py +60 -39
- rasa/shared/core/flows/__init__.py +0 -1
- rasa/shared/core/flows/constants.py +11 -0
- rasa/shared/core/flows/flow.py +107 -26
- rasa/shared/core/flows/flow_step.py +4 -3
- rasa/shared/core/flows/flow_step_links.py +1 -2
- rasa/shared/core/flows/flow_step_sequence.py +1 -1
- rasa/shared/core/flows/flows_list.py +3 -3
- rasa/shared/core/flows/flows_yaml_schema.json +69 -3
- rasa/shared/core/flows/nlu_trigger.py +1 -1
- rasa/shared/core/flows/steps/__init__.py +2 -2
- rasa/shared/core/flows/steps/action.py +1 -1
- rasa/shared/core/flows/steps/call.py +1 -1
- rasa/shared/core/flows/steps/collect.py +22 -40
- rasa/shared/core/flows/steps/internal.py +1 -1
- rasa/shared/core/flows/steps/link.py +1 -1
- rasa/shared/core/flows/steps/no_operation.py +2 -2
- rasa/shared/core/flows/steps/set_slots.py +1 -1
- rasa/shared/core/flows/utils.py +44 -4
- rasa/shared/core/flows/validation.py +4 -6
- rasa/shared/core/generator.py +20 -21
- rasa/shared/core/slot_mappings.py +360 -121
- rasa/shared/core/slots.py +163 -6
- rasa/shared/core/trackers.py +108 -33
- rasa/shared/core/training_data/loading.py +1 -1
- rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
- rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
- rasa/shared/core/training_data/structures.py +11 -12
- rasa/shared/core/training_data/visualization.py +10 -10
- rasa/shared/data.py +6 -6
- rasa/shared/engine/caching.py +0 -1
- rasa/shared/exceptions.py +2 -2
- rasa/shared/importers/importer.py +58 -2
- rasa/shared/importers/rasa.py +5 -6
- rasa/shared/importers/utils.py +1 -1
- rasa/shared/nlu/constants.py +9 -0
- rasa/shared/nlu/training_data/entities_parser.py +6 -6
- rasa/shared/nlu/training_data/features.py +3 -3
- rasa/shared/nlu/training_data/formats/__init__.py +1 -1
- rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
- rasa/shared/nlu/training_data/formats/luis.py +7 -8
- rasa/shared/nlu/training_data/formats/rasa.py +4 -5
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
- rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
- rasa/shared/nlu/training_data/formats/wit.py +3 -4
- rasa/shared/nlu/training_data/loading.py +4 -4
- rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
- rasa/shared/nlu/training_data/message.py +13 -14
- rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
- rasa/shared/nlu/training_data/schemas/responses.yml +19 -11
- rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
- rasa/shared/nlu/training_data/training_data.py +12 -13
- rasa/shared/nlu/training_data/util.py +11 -10
- rasa/shared/providers/_configs/azure_entra_id_config.py +541 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +150 -15
- rasa/shared/providers/_configs/client_config.py +3 -1
- rasa/shared/providers/_configs/default_litellm_client_config.py +9 -7
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +13 -11
- rasa/shared/providers/_configs/litellm_router_client_config.py +12 -10
- rasa/shared/providers/_configs/model_group_config.py +8 -5
- rasa/shared/providers/_configs/oauth_config.py +33 -0
- rasa/shared/providers/_configs/openai_client_config.py +14 -12
- rasa/shared/providers/_configs/rasa_llm_client_config.py +5 -3
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +12 -11
- rasa/shared/providers/_configs/utils.py +1 -0
- rasa/shared/providers/_ssl_verification_utils.py +5 -6
- rasa/shared/providers/_utils.py +5 -5
- rasa/shared/providers/constants.py +6 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +32 -7
- rasa/shared/providers/embedding/embedding_client.py +1 -1
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +5 -2
- rasa/shared/providers/llm/_base_litellm_client.py +43 -18
- rasa/shared/providers/llm/azure_openai_llm_client.py +90 -34
- rasa/shared/providers/llm/default_litellm_llm_client.py +4 -2
- rasa/shared/providers/llm/litellm_router_llm_client.py +32 -9
- rasa/shared/providers/llm/llm_client.py +24 -8
- rasa/shared/providers/llm/llm_response.py +61 -2
- rasa/shared/providers/llm/openai_llm_client.py +11 -5
- rasa/shared/providers/llm/rasa_llm_client.py +17 -14
- rasa/shared/providers/llm/self_hosted_llm_client.py +35 -15
- rasa/shared/providers/mappings.py +18 -19
- rasa/shared/providers/router/_base_litellm_router_client.py +48 -15
- rasa/shared/providers/router/router_client.py +3 -1
- rasa/shared/utils/cli.py +1 -1
- rasa/shared/utils/common.py +15 -1
- rasa/shared/utils/constants.py +3 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
- rasa/shared/utils/health_check/health_check.py +3 -3
- rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
- rasa/shared/utils/io.py +1 -1
- rasa/shared/utils/llm.py +100 -18
- rasa/shared/utils/pykwalify_extensions.py +25 -1
- rasa/shared/utils/schemas/domain.yml +26 -1
- rasa/shared/utils/schemas/events.py +1 -1
- rasa/shared/utils/yaml.py +24 -20
- rasa/studio/auth.py +3 -3
- rasa/studio/config.py +1 -2
- rasa/studio/data_handler.py +3 -3
- rasa/studio/download.py +1 -1
- rasa/studio/results_logger.py +3 -3
- rasa/studio/upload.py +21 -5
- rasa/telemetry.py +127 -48
- rasa/tracing/config.py +5 -3
- rasa/tracing/constants.py +12 -0
- rasa/tracing/instrumentation/attribute_extractors.py +92 -14
- rasa/tracing/instrumentation/instrumentation.py +61 -5
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
- rasa/tracing/instrumentation/metrics.py +52 -11
- rasa/tracing/metric_instrument_provider.py +54 -14
- rasa/utils/common.py +12 -24
- rasa/utils/endpoints.py +1 -1
- rasa/utils/io.py +7 -7
- rasa/utils/licensing.py +3 -4
- rasa/utils/log_utils.py +7 -6
- rasa/utils/ml_utils.py +1 -0
- rasa/utils/plotting.py +3 -3
- rasa/utils/sanic_error_handler.py +1 -1
- rasa/utils/tensorflow/callback.py +2 -2
- rasa/utils/tensorflow/crf.py +2 -2
- rasa/utils/tensorflow/data_generator.py +5 -5
- rasa/utils/tensorflow/environment.py +3 -3
- rasa/utils/tensorflow/feature_array.py +2 -3
- rasa/utils/tensorflow/layers.py +18 -12
- rasa/utils/tensorflow/layers_utils.py +2 -1
- rasa/utils/tensorflow/metrics.py +2 -2
- rasa/utils/tensorflow/model_data.py +7 -7
- rasa/utils/tensorflow/model_data_utils.py +10 -9
- rasa/utils/tensorflow/models.py +31 -32
- rasa/utils/tensorflow/rasa_layers.py +20 -19
- rasa/utils/tensorflow/types.py +2 -1
- rasa/utils/train_utils.py +23 -21
- rasa/utils/url_tools.py +1 -1
- rasa/validator.py +594 -115
- rasa/version.py +1 -1
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/METADATA +23 -26
- rasa_pro-3.12.0.dist-info/RECORD +829 -0
- rasa/core/channels/inspector/dist/assets/arc-632a63ec.js +0 -1
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-081e0df4.js +0 -10
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-3df0afc2.js +0 -2
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-8c5ed31e.js +0 -2
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-4fc48c3e.js +0 -4
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9ec53a3c.js +0 -6
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-41da787a.js +0 -4
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-ce370633.js +0 -139
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-90a36523.js +0 -266
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-41e1aa3f.js +0 -70
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-e6f2af62.js +0 -1
- rasa/core/channels/inspector/dist/assets/layout-498807d8.js +0 -1
- rasa/core/channels/inspector/dist/assets/linear-8a078617.js +0 -1
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-396d17dd.js +0 -109
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-53f6f391.js +0 -8
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-715c9c20.js +0 -122
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-2e8fb31f.js +0 -1
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-7e2d2aa0.js +0 -1
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-4420cea6.js +0 -110
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-28676cf4.js +0 -159
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-151251e9.js +0 -1
- rasa_pro-3.11.4.dist-info/RECORD +0 -779
- /rasa/dialogue_understanding/generator/{single_step → prompt_templates}/command_prompt_template.jinja2 +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.4.dist-info → rasa_pro-3.12.0.dist-info}/entry_points.txt +0 -0
|
@@ -24,7 +24,7 @@ from opentelemetry.sdk.trace import TracerProvider
|
|
|
24
24
|
from opentelemetry.trace import SpanKind, Tracer
|
|
25
25
|
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
|
|
26
26
|
|
|
27
|
-
from rasa.core.actions.action import Action,
|
|
27
|
+
from rasa.core.actions.action import Action, CustomActionExecutor, RemoteAction
|
|
28
28
|
from rasa.core.actions.custom_action_executor import RetryCustomActionExecutor
|
|
29
29
|
from rasa.core.actions.grpc_custom_action_executor import GRPCCustomActionExecutor
|
|
30
30
|
from rasa.core.agent import Agent
|
|
@@ -41,6 +41,7 @@ from rasa.core.processor import MessageProcessor
|
|
|
41
41
|
from rasa.core.tracker_store import TrackerStore
|
|
42
42
|
from rasa.dialogue_understanding.commands import Command
|
|
43
43
|
from rasa.dialogue_understanding.generator import (
|
|
44
|
+
CompactLLMCommandGenerator,
|
|
44
45
|
LLMCommandGenerator,
|
|
45
46
|
MultiStepLLMCommandGenerator,
|
|
46
47
|
SingleStepLLMCommandGenerator,
|
|
@@ -63,13 +64,14 @@ from rasa.tracing.instrumentation.intentless_policy_instrumentation import (
|
|
|
63
64
|
_instrument_select_response_examples,
|
|
64
65
|
)
|
|
65
66
|
from rasa.tracing.instrumentation.metrics import (
|
|
67
|
+
record_callable_duration_metrics,
|
|
68
|
+
record_compact_llm_command_generator_metrics,
|
|
66
69
|
record_llm_command_generator_metrics,
|
|
67
|
-
record_single_step_llm_command_generator_metrics,
|
|
68
70
|
record_multi_step_llm_command_generator_metrics,
|
|
69
|
-
record_callable_duration_metrics,
|
|
70
71
|
record_request_size_in_bytes,
|
|
72
|
+
record_single_step_llm_command_generator_metrics,
|
|
71
73
|
)
|
|
72
|
-
from rasa.utils.endpoints import
|
|
74
|
+
from rasa.utils.endpoints import EndpointConfig, concat_url
|
|
73
75
|
|
|
74
76
|
# The `TypeVar` representing the return type for a function to be wrapped.
|
|
75
77
|
S = TypeVar("S")
|
|
@@ -84,6 +86,7 @@ COMMAND_PROCESSOR_MODULE_NAME = (
|
|
|
84
86
|
"rasa.dialogue_understanding.processor.command_processor"
|
|
85
87
|
)
|
|
86
88
|
FLOW_EXECUTOR_MODULE_NAME = "rasa.core.policies.flows.flow_executor"
|
|
89
|
+
DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME = "rasa.dialogue_understanding_test.io"
|
|
87
90
|
|
|
88
91
|
|
|
89
92
|
def _check_extractor_argument_list(
|
|
@@ -151,7 +154,11 @@ def traceable(
|
|
|
151
154
|
)
|
|
152
155
|
|
|
153
156
|
module_name = attrs.pop("module_name", "")
|
|
154
|
-
if module_name in [
|
|
157
|
+
if module_name in [
|
|
158
|
+
"command_processor",
|
|
159
|
+
FLOW_EXECUTOR_MODULE_NAME,
|
|
160
|
+
DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME,
|
|
161
|
+
]:
|
|
155
162
|
span_name = f"{module_name}.{fn.__name__}"
|
|
156
163
|
else:
|
|
157
164
|
span_name = f"{self.__class__.__name__}.{fn.__name__}"
|
|
@@ -281,6 +288,9 @@ LLMCommandGeneratorType = TypeVar("LLMCommandGeneratorType", bound=LLMCommandGen
|
|
|
281
288
|
SingleStepLLMCommandGeneratorType = TypeVar(
|
|
282
289
|
"SingleStepLLMCommandGeneratorType", bound=SingleStepLLMCommandGenerator
|
|
283
290
|
)
|
|
291
|
+
CompactLLMCommandGeneratorType = TypeVar(
|
|
292
|
+
"CompactLLMCommandGeneratorType", bound=CompactLLMCommandGenerator
|
|
293
|
+
)
|
|
284
294
|
MultiStepLLMCommandGeneratorType = TypeVar(
|
|
285
295
|
"MultiStepLLMCommandGeneratorType", bound=MultiStepLLMCommandGenerator
|
|
286
296
|
)
|
|
@@ -313,6 +323,9 @@ def instrument(
|
|
|
313
323
|
single_step_llm_command_generator_class: Optional[
|
|
314
324
|
Type[SingleStepLLMCommandGeneratorType]
|
|
315
325
|
] = None,
|
|
326
|
+
compact_llm_command_generator_class: Optional[
|
|
327
|
+
Type[CompactLLMCommandGeneratorType]
|
|
328
|
+
] = None,
|
|
316
329
|
multi_step_llm_command_generator_class: Optional[
|
|
317
330
|
Type[MultiStepLLMCommandGeneratorType]
|
|
318
331
|
] = None,
|
|
@@ -363,6 +376,9 @@ def instrument(
|
|
|
363
376
|
:param single_step_llm_command_generator_class: The `SingleStepLLMCommandGenerator`
|
|
364
377
|
to be instrumented. If `None` is given, no `SingleStepLLMCommandGenerator` will
|
|
365
378
|
be instrumented.
|
|
379
|
+
:param compact_llm_command_generator_class: The `CompactLLMCommandGenerator`
|
|
380
|
+
to be instrumented. If `None` is given, no `CompactLLMCommandGenerator` will
|
|
381
|
+
be instrumented.
|
|
366
382
|
:param multi_step_llm_command_generator_class: The `MultiStepLLMCommandGenerator`
|
|
367
383
|
to be instrumented. If `None` is given, no `MultiStepLLMCommandGenerator` will
|
|
368
384
|
be instrumented.
|
|
@@ -487,6 +503,30 @@ def instrument(
|
|
|
487
503
|
)
|
|
488
504
|
mark_class_as_instrumented(single_step_llm_command_generator_class)
|
|
489
505
|
|
|
506
|
+
if compact_llm_command_generator_class is not None and not class_is_instrumented(
|
|
507
|
+
compact_llm_command_generator_class
|
|
508
|
+
):
|
|
509
|
+
_instrument_method(
|
|
510
|
+
tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
|
|
511
|
+
compact_llm_command_generator_class,
|
|
512
|
+
"invoke_llm",
|
|
513
|
+
attribute_extractors.extract_attrs_for_llm_based_command_generator,
|
|
514
|
+
metrics_recorder=record_compact_llm_command_generator_metrics,
|
|
515
|
+
)
|
|
516
|
+
_instrument_method(
|
|
517
|
+
tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
|
|
518
|
+
compact_llm_command_generator_class,
|
|
519
|
+
"_check_commands_against_startable_flows",
|
|
520
|
+
attribute_extractors.extract_attrs_for_check_commands_against_startable_flows,
|
|
521
|
+
)
|
|
522
|
+
_instrument_perform_health_check_method_for_component(
|
|
523
|
+
tracer_provider.get_tracer(compact_llm_command_generator_class.__module__),
|
|
524
|
+
compact_llm_command_generator_class,
|
|
525
|
+
"perform_llm_health_check",
|
|
526
|
+
attribute_extractors.extract_attrs_for_performing_health_check,
|
|
527
|
+
)
|
|
528
|
+
mark_class_as_instrumented(compact_llm_command_generator_class)
|
|
529
|
+
|
|
490
530
|
if multi_step_llm_command_generator_class is not None and not class_is_instrumented(
|
|
491
531
|
multi_step_llm_command_generator_class
|
|
492
532
|
):
|
|
@@ -521,6 +561,7 @@ def instrument(
|
|
|
521
561
|
for llm_based_command_generator_class in (
|
|
522
562
|
llm_command_generator_class,
|
|
523
563
|
single_step_llm_command_generator_class,
|
|
564
|
+
compact_llm_command_generator_class,
|
|
524
565
|
multi_step_llm_command_generator_class,
|
|
525
566
|
)
|
|
526
567
|
)
|
|
@@ -583,6 +624,9 @@ def instrument(
|
|
|
583
624
|
if not module_is_instrumented(FLOW_EXECUTOR_MODULE_NAME):
|
|
584
625
|
_instrument_flow_executor_module(tracer_provider)
|
|
585
626
|
|
|
627
|
+
if not module_is_instrumented(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME):
|
|
628
|
+
_instrument_dialog_understanding_test_io_module(tracer_provider)
|
|
629
|
+
|
|
586
630
|
if policy_subclasses:
|
|
587
631
|
for policy_subclass in policy_subclasses:
|
|
588
632
|
if policy_subclass is not None and not class_is_instrumented(
|
|
@@ -974,6 +1018,18 @@ def _instrument_flow_executor_module(tracer_provider: TracerProvider) -> None:
|
|
|
974
1018
|
mark_module_as_instrumented(FLOW_EXECUTOR_MODULE_NAME)
|
|
975
1019
|
|
|
976
1020
|
|
|
1021
|
+
def _instrument_dialog_understanding_test_io_module(
|
|
1022
|
+
tracer_provider: TracerProvider,
|
|
1023
|
+
) -> None:
|
|
1024
|
+
_instrument_function(
|
|
1025
|
+
tracer_provider.get_tracer(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME),
|
|
1026
|
+
DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME,
|
|
1027
|
+
"print_test_results",
|
|
1028
|
+
attribute_extractors.extract_attrs_for_du_print_test_results,
|
|
1029
|
+
)
|
|
1030
|
+
mark_module_as_instrumented(DIALOG_UNDERSTANDING_TEST_IO_MODULE_NAME)
|
|
1031
|
+
|
|
1032
|
+
|
|
977
1033
|
def _instrument_advance_flows_until_next_action(
|
|
978
1034
|
tracer: Tracer,
|
|
979
1035
|
module_name: str,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Any, Dict
|
|
2
2
|
|
|
3
3
|
import psutil
|
|
4
4
|
|
|
@@ -6,30 +6,35 @@ from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephra
|
|
|
6
6
|
from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
|
|
7
7
|
from rasa.core.policies.intentless_policy import IntentlessPolicy
|
|
8
8
|
from rasa.dialogue_understanding.generator import (
|
|
9
|
+
CompactLLMCommandGenerator,
|
|
9
10
|
LLMCommandGenerator,
|
|
10
|
-
SingleStepLLMCommandGenerator,
|
|
11
11
|
MultiStepLLMCommandGenerator,
|
|
12
|
+
SingleStepLLMCommandGenerator,
|
|
12
13
|
)
|
|
13
14
|
from rasa.tracing.constants import (
|
|
15
|
+
COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
16
|
+
COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
17
|
+
COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
18
|
+
COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
19
|
+
CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
20
|
+
ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
21
|
+
INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
14
22
|
LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
23
|
+
LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
15
24
|
LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
16
25
|
LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
17
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
18
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
19
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
20
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
21
26
|
MULTI_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
27
|
+
MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
22
28
|
MULTI_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
23
29
|
MULTI_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
24
|
-
MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
25
30
|
PROMPT_TOKEN_LENGTH_ATTRIBUTE_NAME,
|
|
26
|
-
LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
27
|
-
ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
28
|
-
INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
29
|
-
CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
30
31
|
RASA_CLIENT_REQUEST_BODY_SIZE_METRIC_NAME,
|
|
31
32
|
RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
|
|
32
33
|
REQUEST_BODY_SIZE_IN_BYTES_ATTRIBUTE_NAME,
|
|
34
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
35
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
36
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
37
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
33
38
|
)
|
|
34
39
|
from rasa.tracing.metric_instrument_provider import MetricInstrumentProvider
|
|
35
40
|
from rasa.utils.endpoints import EndpointConfig
|
|
@@ -170,6 +175,36 @@ def record_single_step_llm_command_generator_metrics(
|
|
|
170
175
|
)
|
|
171
176
|
|
|
172
177
|
|
|
178
|
+
def record_compact_llm_command_generator_metrics(
|
|
179
|
+
attributes: Dict[str, Any],
|
|
180
|
+
) -> None:
|
|
181
|
+
"""
|
|
182
|
+
Record measurements for CompactLLMCommandGenerator specific metrics.
|
|
183
|
+
|
|
184
|
+
The recording is done by the opentelemetry.metrics.Histogram instruments.
|
|
185
|
+
These instruments are registered to the MetricInstrumentProvider internal singleton.
|
|
186
|
+
|
|
187
|
+
:param attributes: Extracted tracing attributes
|
|
188
|
+
:return: None
|
|
189
|
+
"""
|
|
190
|
+
instrument_provider = MetricInstrumentProvider()
|
|
191
|
+
|
|
192
|
+
if not instrument_provider.instruments:
|
|
193
|
+
return None
|
|
194
|
+
|
|
195
|
+
record_llm_based_command_generator_cpu_usage(
|
|
196
|
+
instrument_provider, COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME
|
|
197
|
+
)
|
|
198
|
+
record_llm_based_command_generator_memory_usage(
|
|
199
|
+
instrument_provider, COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME
|
|
200
|
+
)
|
|
201
|
+
record_llm_based_command_generator_prompt_token(
|
|
202
|
+
instrument_provider,
|
|
203
|
+
attributes,
|
|
204
|
+
COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
|
|
173
208
|
def record_multi_step_llm_command_generator_metrics(attributes: Dict[str, Any]) -> None:
|
|
174
209
|
"""
|
|
175
210
|
Record measurements for MultiStepLLMCommandGenerator specific metrics.
|
|
@@ -205,6 +240,7 @@ def record_callable_duration_metrics(
|
|
|
205
240
|
Record duration of instrumented method calls invoked for the following components:
|
|
206
241
|
- LLMCommandGenerator
|
|
207
242
|
- SingleStepLLMCommandGenerator
|
|
243
|
+
- CompactLLMCommandGenerator
|
|
208
244
|
- MultiStepLLMCommandGenerator
|
|
209
245
|
- EnterpriseSearchPolicy
|
|
210
246
|
- IntentlessPolicy
|
|
@@ -235,6 +271,11 @@ def record_callable_duration_metrics(
|
|
|
235
271
|
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
|
|
236
272
|
)
|
|
237
273
|
|
|
274
|
+
if type(self) == CompactLLMCommandGenerator:
|
|
275
|
+
metric_instrument = instrument_provider.get_instrument(
|
|
276
|
+
COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
|
|
277
|
+
)
|
|
278
|
+
|
|
238
279
|
if type(self) == MultiStepLLMCommandGenerator:
|
|
239
280
|
metric_instrument = instrument_provider.get_instrument(
|
|
240
281
|
MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME
|
|
@@ -1,30 +1,34 @@
|
|
|
1
|
-
from typing import ClassVar, Dict
|
|
1
|
+
from typing import Any, ClassVar, Dict
|
|
2
2
|
|
|
3
3
|
from opentelemetry.metrics import get_meter_provider
|
|
4
4
|
from opentelemetry.sdk.metrics import Meter
|
|
5
5
|
|
|
6
|
-
from rasa.utils.singleton import Singleton
|
|
7
6
|
from rasa.tracing.constants import (
|
|
7
|
+
COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
8
|
+
COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
9
|
+
COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
10
|
+
COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
11
|
+
CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
12
|
+
DURATION_UNIT_NAME,
|
|
13
|
+
ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
14
|
+
INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
15
|
+
LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
|
|
8
16
|
LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
17
|
+
LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
9
18
|
LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
10
19
|
LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
11
|
-
LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
12
|
-
LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
|
|
13
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
14
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
15
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
16
|
-
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
17
20
|
MULTI_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
21
|
+
MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
18
22
|
MULTI_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
19
23
|
MULTI_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
20
|
-
MULTI_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
21
|
-
DURATION_UNIT_NAME,
|
|
22
|
-
ENTERPRISE_SEARCH_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
23
|
-
INTENTLESS_POLICY_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
24
|
-
CONTEXTUAL_RESPONSE_REPHRASER_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
25
|
-
RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
|
|
26
24
|
RASA_CLIENT_REQUEST_BODY_SIZE_METRIC_NAME,
|
|
25
|
+
RASA_CLIENT_REQUEST_DURATION_METRIC_NAME,
|
|
26
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
27
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
28
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
29
|
+
SINGLE_STEP_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
27
30
|
)
|
|
31
|
+
from rasa.utils.singleton import Singleton
|
|
28
32
|
|
|
29
33
|
|
|
30
34
|
class MetricInstrumentProvider(metaclass=Singleton):
|
|
@@ -43,6 +47,7 @@ class MetricInstrumentProvider(metaclass=Singleton):
|
|
|
43
47
|
instruments = {
|
|
44
48
|
**self._create_llm_command_generator_instruments(meter),
|
|
45
49
|
**self._create_single_step_llm_command_generator_instruments(meter),
|
|
50
|
+
**self._create_compact_llm_command_generator_instruments(meter),
|
|
46
51
|
**self._create_multi_step_llm_command_generator_instruments(meter),
|
|
47
52
|
**self._create_llm_response_duration_instruments(meter),
|
|
48
53
|
**self._create_client_request_instruments(meter),
|
|
@@ -122,6 +127,41 @@ class MetricInstrumentProvider(metaclass=Singleton):
|
|
|
122
127
|
SINGLE_STEP_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME: single_step_llm_response_duration_llm_command_generator, # noqa: E501
|
|
123
128
|
}
|
|
124
129
|
|
|
130
|
+
@staticmethod
|
|
131
|
+
def _create_compact_llm_command_generator_instruments(
|
|
132
|
+
meter: Meter,
|
|
133
|
+
) -> Dict[str, Any]:
|
|
134
|
+
compact_llm_command_generator_cpu_usage = meter.create_histogram(
|
|
135
|
+
name=COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME,
|
|
136
|
+
description="CPU percentage for CompactLLMCommandGenerator",
|
|
137
|
+
unit=LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
compact_llm_command_generator_memory_usage = meter.create_histogram(
|
|
141
|
+
name=COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME,
|
|
142
|
+
description="RAM memory usage for CompactLLMCommandGenerator",
|
|
143
|
+
unit=LLM_BASED_COMMAND_GENERATOR_CPU_MEMORY_USAGE_UNIT_NAME,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
compact_llm_command_generator_prompt_token_usage = meter.create_histogram(
|
|
147
|
+
name=COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME,
|
|
148
|
+
description="CompactLLMCommandGenerator prompt token length",
|
|
149
|
+
unit="1",
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
compact_llm_response_duration_llm_command_generator = meter.create_histogram(
|
|
153
|
+
name=COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME,
|
|
154
|
+
description="The duration of CompactLLMCommandGenerator's LLM call",
|
|
155
|
+
unit=DURATION_UNIT_NAME,
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
return {
|
|
159
|
+
COMPACT_LLM_COMMAND_GENERATOR_CPU_USAGE_METRIC_NAME: compact_llm_command_generator_cpu_usage, # noqa: E501
|
|
160
|
+
COMPACT_LLM_COMMAND_GENERATOR_MEMORY_USAGE_METRIC_NAME: compact_llm_command_generator_memory_usage, # noqa: E501
|
|
161
|
+
COMPACT_LLM_COMMAND_GENERATOR_PROMPT_TOKEN_USAGE_METRIC_NAME: compact_llm_command_generator_prompt_token_usage, # noqa: E501
|
|
162
|
+
COMPACT_LLM_COMMAND_GENERATOR_LLM_RESPONSE_DURATION_METRIC_NAME: compact_llm_response_duration_llm_command_generator, # noqa: E501
|
|
163
|
+
}
|
|
164
|
+
|
|
125
165
|
@staticmethod
|
|
126
166
|
def _create_multi_step_llm_command_generator_instruments(
|
|
127
167
|
meter: Meter,
|
rasa/utils/common.py
CHANGED
|
@@ -8,38 +8,38 @@ import shutil
|
|
|
8
8
|
import tempfile
|
|
9
9
|
import warnings
|
|
10
10
|
from pathlib import Path
|
|
11
|
+
from socket import SOCK_DGRAM, SOCK_STREAM
|
|
11
12
|
from types import TracebackType
|
|
12
13
|
from typing import (
|
|
13
14
|
Any,
|
|
15
|
+
ContextManager,
|
|
14
16
|
Coroutine,
|
|
15
17
|
Dict,
|
|
16
18
|
List,
|
|
17
19
|
Optional,
|
|
20
|
+
Set,
|
|
18
21
|
Text,
|
|
22
|
+
Tuple,
|
|
19
23
|
Type,
|
|
20
24
|
TypeVar,
|
|
21
25
|
Union,
|
|
22
|
-
ContextManager,
|
|
23
|
-
Set,
|
|
24
|
-
Tuple,
|
|
25
26
|
)
|
|
26
27
|
|
|
27
|
-
from socket import SOCK_DGRAM, SOCK_STREAM
|
|
28
28
|
import numpy as np
|
|
29
|
+
|
|
30
|
+
import rasa.shared.utils.io
|
|
29
31
|
import rasa.utils.io
|
|
30
32
|
from rasa.anonymization import ENV_LOG_LEVEL_FAKER, ENV_LOG_LEVEL_PRESIDIO
|
|
31
33
|
from rasa.constants import (
|
|
32
34
|
DEFAULT_LOG_LEVEL_LIBRARIES,
|
|
35
|
+
ENV_LOG_LEVEL_KAFKA,
|
|
33
36
|
ENV_LOG_LEVEL_LIBRARIES,
|
|
34
37
|
ENV_LOG_LEVEL_MATPLOTLIB,
|
|
35
|
-
ENV_LOG_LEVEL_MLFLOW,
|
|
36
38
|
ENV_LOG_LEVEL_RABBITMQ,
|
|
37
|
-
ENV_LOG_LEVEL_KAFKA,
|
|
38
39
|
)
|
|
39
40
|
from rasa.shared.constants import DEFAULT_LOG_LEVEL, ENV_LOG_LEVEL, TCP_PROTOCOL
|
|
40
41
|
from rasa.shared.exceptions import RasaException
|
|
41
|
-
|
|
42
|
-
from rasa.shared.utils.yaml import read_yaml_file, write_yaml, read_config_file
|
|
42
|
+
from rasa.shared.utils.yaml import read_config_file, read_yaml_file, write_yaml
|
|
43
43
|
|
|
44
44
|
logger = logging.getLogger(__name__)
|
|
45
45
|
|
|
@@ -70,7 +70,6 @@ EXPECTED_WARNINGS: List[Tuple[Type[Warning], str]] = [
|
|
|
70
70
|
"Converting sparse IndexedSlices.* to a dense Tensor of unknown "
|
|
71
71
|
"shape. This may consume a large amount of memory.",
|
|
72
72
|
),
|
|
73
|
-
(UserWarning, "Slot auto-fill has been removed in 3.0 .*"),
|
|
74
73
|
# Cannot fix this deprecation warning since we need to support two
|
|
75
74
|
# numpy versions as long as we keep python 37 around
|
|
76
75
|
(DeprecationWarning, "the `interpolation=` argument to quantile was renamed"),
|
|
@@ -146,7 +145,9 @@ def read_global_config(path: Text) -> Dict[Text, Any]:
|
|
|
146
145
|
"""
|
|
147
146
|
# noinspection PyBroadException
|
|
148
147
|
try:
|
|
149
|
-
|
|
148
|
+
# set expand_env_vars to False because this is a global config file
|
|
149
|
+
# used for telemetry, in which case we don't need to expand env vars
|
|
150
|
+
return read_config_file(path, expand_env_vars=False)
|
|
150
151
|
except Exception:
|
|
151
152
|
# if things go south we pretend there is no config
|
|
152
153
|
return {}
|
|
@@ -299,7 +300,7 @@ def update_sanic_log_level(
|
|
|
299
300
|
syslog_protocol: Optional[Text] = None,
|
|
300
301
|
) -> None:
|
|
301
302
|
"""Set the log level to 'LOG_LEVEL_LIBRARIES' environment variable ."""
|
|
302
|
-
from sanic.log import
|
|
303
|
+
from sanic.log import access_logger, error_logger, logger
|
|
303
304
|
|
|
304
305
|
log_level = os.environ.get(ENV_LOG_LEVEL_LIBRARIES, DEFAULT_LOG_LEVEL_LIBRARIES)
|
|
305
306
|
|
|
@@ -393,19 +394,6 @@ def update_faker_log_level(library_log_level: Text) -> None:
|
|
|
393
394
|
logging.getLogger("faker").propagate = False
|
|
394
395
|
|
|
395
396
|
|
|
396
|
-
def update_mlflow_log_level() -> None:
|
|
397
|
-
"""Set the log level of mlflow.
|
|
398
|
-
|
|
399
|
-
Uses the library specific log level or the general libraries log level.
|
|
400
|
-
"""
|
|
401
|
-
library_log_level = os.environ.get(
|
|
402
|
-
ENV_LOG_LEVEL_LIBRARIES, DEFAULT_LOG_LEVEL_LIBRARIES
|
|
403
|
-
)
|
|
404
|
-
log_level = os.environ.get(ENV_LOG_LEVEL_MLFLOW, library_log_level)
|
|
405
|
-
logging.getLogger("mlflow").setLevel(log_level)
|
|
406
|
-
logging.getLogger("mlflow").propagate = False
|
|
407
|
-
|
|
408
|
-
|
|
409
397
|
def sort_list_of_dicts_by_first_key(dicts: List[Dict]) -> List[Dict]:
|
|
410
398
|
"""Sorts a list of dictionaries by their first key."""
|
|
411
399
|
return sorted(dicts, key=lambda d: next(iter(d.keys())))
|
rasa/utils/endpoints.py
CHANGED
rasa/utils/io.py
CHANGED
|
@@ -2,22 +2,22 @@ import asyncio
|
|
|
2
2
|
import filecmp
|
|
3
3
|
import logging
|
|
4
4
|
import os
|
|
5
|
+
import re
|
|
5
6
|
import tempfile
|
|
6
7
|
import warnings
|
|
7
|
-
import re
|
|
8
8
|
from asyncio import AbstractEventLoop
|
|
9
9
|
from collections import OrderedDict
|
|
10
10
|
from io import StringIO
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import (
|
|
13
|
-
|
|
14
|
-
Text,
|
|
13
|
+
TYPE_CHECKING,
|
|
15
14
|
Any,
|
|
16
|
-
|
|
15
|
+
Callable,
|
|
17
16
|
List,
|
|
17
|
+
Optional,
|
|
18
|
+
Text,
|
|
18
19
|
Type,
|
|
19
|
-
|
|
20
|
-
TYPE_CHECKING,
|
|
20
|
+
Union,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
from ruamel import yaml
|
|
@@ -153,8 +153,8 @@ def create_validator(
|
|
|
153
153
|
"""Helper method to create `Validator` classes from callable functions. Should be
|
|
154
154
|
removed when questionary supports `Validator` objects.
|
|
155
155
|
"""
|
|
156
|
-
from prompt_toolkit.validation import Validator, ValidationError
|
|
157
156
|
from prompt_toolkit.document import Document
|
|
157
|
+
from prompt_toolkit.validation import ValidationError, Validator
|
|
158
158
|
|
|
159
159
|
class FunctionValidator(Validator):
|
|
160
160
|
@staticmethod
|
rasa/utils/licensing.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from asyncio import AbstractEventLoop
|
|
2
1
|
import hashlib
|
|
3
2
|
import os
|
|
4
3
|
import random
|
|
@@ -6,19 +5,19 @@ import re
|
|
|
6
5
|
import time
|
|
7
6
|
import typing
|
|
8
7
|
import uuid
|
|
8
|
+
from asyncio import AbstractEventLoop
|
|
9
9
|
from datetime import datetime, timezone
|
|
10
10
|
from typing import Any, Callable, Dict, Optional, Set, Text, TypeVar
|
|
11
11
|
|
|
12
12
|
import jwt
|
|
13
|
+
import structlog
|
|
13
14
|
from dotenv import dotenv_values
|
|
14
15
|
from sanic import Sanic
|
|
15
|
-
import structlog
|
|
16
|
-
from rasa import telemetry
|
|
17
16
|
|
|
17
|
+
from rasa import telemetry
|
|
18
18
|
from rasa.core import jobs
|
|
19
19
|
from rasa.shared.utils.cli import print_error_and_exit
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
if typing.TYPE_CHECKING:
|
|
23
22
|
from rasa.core.tracker_store import TrackerStore
|
|
24
23
|
|
rasa/utils/log_utils.py
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import logging
|
|
4
|
+
import os
|
|
4
5
|
import sys
|
|
5
6
|
from typing import Any, Dict, Optional
|
|
6
7
|
|
|
7
8
|
import structlog
|
|
8
|
-
from structlog_sentry import SentryProcessor
|
|
9
9
|
from structlog.dev import ConsoleRenderer
|
|
10
10
|
from structlog.typing import EventDict, WrappedLogger
|
|
11
|
+
from structlog_sentry import SentryProcessor
|
|
12
|
+
|
|
13
|
+
from rasa.plugin import plugin_manager
|
|
11
14
|
from rasa.shared.constants import (
|
|
12
|
-
ENV_LOG_LEVEL,
|
|
13
15
|
DEFAULT_LOG_LEVEL,
|
|
16
|
+
DEFAULT_LOG_LEVEL_LLM,
|
|
17
|
+
ENV_LOG_LEVEL,
|
|
14
18
|
ENV_LOG_LEVEL_LLM,
|
|
15
19
|
ENV_LOG_LEVEL_LLM_MODULE_NAMES,
|
|
16
|
-
DEFAULT_LOG_LEVEL_LLM,
|
|
17
20
|
)
|
|
18
|
-
from rasa.plugin import plugin_manager
|
|
19
|
-
|
|
20
21
|
|
|
21
22
|
FORCE_JSON_LOGGING = os.environ.get("FORCE_JSON_LOGGING")
|
|
22
23
|
|
rasa/utils/ml_utils.py
CHANGED
|
@@ -5,6 +5,7 @@ import numpy as np
|
|
|
5
5
|
import structlog
|
|
6
6
|
from langchain.schema.embeddings import Embeddings
|
|
7
7
|
from langchain_community.vectorstores import FAISS
|
|
8
|
+
|
|
8
9
|
from rasa.shared.constants import REQUIRED_SLOTS_KEY
|
|
9
10
|
from rasa.shared.core.domain import KEY_RESPONSES_TEXT, Domain
|
|
10
11
|
from rasa.shared.utils.llm import AI
|
rasa/utils/plotting.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
import itertools
|
|
2
|
+
import logging
|
|
3
3
|
import os
|
|
4
4
|
from functools import wraps
|
|
5
|
+
from typing import Any, Callable, List, Optional, Text, Tuple, TypeVar, Union
|
|
5
6
|
|
|
6
|
-
import numpy as np
|
|
7
|
-
from typing import Any, Callable, List, Optional, Text, TypeVar, Union, Tuple
|
|
8
7
|
import matplotlib
|
|
8
|
+
import numpy as np
|
|
9
9
|
from matplotlib.ticker import FormatStrFormatter
|
|
10
10
|
|
|
11
11
|
import rasa.shared.utils.io
|
rasa/utils/tensorflow/crf.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
from typing import Any, List, Optional, Tuple, Union
|
|
2
|
+
|
|
1
3
|
import tensorflow as tf
|
|
2
4
|
from tensorflow import TensorShape
|
|
3
5
|
from tensorflow.types.experimental import TensorLike
|
|
4
|
-
from typing import Tuple, Any, List, Union, Optional
|
|
5
|
-
|
|
6
6
|
|
|
7
7
|
# original code taken from
|
|
8
8
|
# https://github.com/tensorflow/addons/blob/b8cab7fd61af4f697a1cdae4f51c37c346b9c6f0/tensorflow_addons/text/crf.py
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
import math
|
|
2
|
-
from typing import
|
|
3
|
+
from typing import Any, Dict, List, Optional, Text, Tuple, Union, cast
|
|
3
4
|
|
|
4
|
-
import logging
|
|
5
|
-
import scipy.sparse
|
|
6
5
|
import numpy as np
|
|
6
|
+
import scipy.sparse
|
|
7
7
|
from tensorflow.keras.utils import Sequence
|
|
8
8
|
|
|
9
|
-
from rasa.utils.tensorflow.constants import
|
|
10
|
-
from rasa.utils.tensorflow.model_data import
|
|
9
|
+
from rasa.utils.tensorflow.constants import BALANCED, SEQUENCE
|
|
10
|
+
from rasa.utils.tensorflow.model_data import Data, FeatureArray, RasaModelData
|
|
11
11
|
|
|
12
12
|
logger = logging.getLogger(__name__)
|
|
13
13
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
-
from typing import Text, Dict
|
|
4
3
|
import typing
|
|
4
|
+
from typing import Dict, Text
|
|
5
5
|
|
|
6
6
|
import rasa.shared.utils.io
|
|
7
7
|
from rasa.constants import (
|
|
8
|
-
ENV_GPU_CONFIG,
|
|
9
8
|
ENV_CPU_INTER_OP_CONFIG,
|
|
10
9
|
ENV_CPU_INTRA_OP_CONFIG,
|
|
10
|
+
ENV_GPU_CONFIG,
|
|
11
11
|
)
|
|
12
|
-
from rasa.utils.tensorflow.constants import TF_DETERMINISTIC_OPS
|
|
13
12
|
from rasa.shared.utils import io as shared_io_utils
|
|
13
|
+
from rasa.utils.tensorflow.constants import TF_DETERMINISTIC_OPS
|
|
14
14
|
|
|
15
15
|
if typing.TYPE_CHECKING:
|
|
16
16
|
from tensorflow import config as tf_config
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
2
2
|
|
|
3
|
-
from safetensors.numpy import save_file
|
|
4
3
|
import numpy as np
|
|
5
|
-
from safetensors.numpy import load_file
|
|
6
4
|
import scipy.sparse
|
|
5
|
+
from safetensors.numpy import load_file, save_file
|
|
7
6
|
|
|
8
7
|
import rasa.shared.utils.io
|
|
9
8
|
|