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
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import structlog
|
|
3
2
|
import copy
|
|
4
3
|
from dataclasses import asdict, dataclass
|
|
5
4
|
from typing import Any, AsyncIterator, Awaitable, Callable, Dict, List, Optional, Tuple
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
from
|
|
9
|
-
from rasa.shared.utils.common import (
|
|
10
|
-
class_from_module_path,
|
|
11
|
-
mark_as_beta_feature,
|
|
12
|
-
)
|
|
13
|
-
from rasa.shared.utils.cli import print_error_and_exit
|
|
14
|
-
|
|
6
|
+
import structlog
|
|
7
|
+
from sanic import Websocket # type: ignore
|
|
15
8
|
from sanic.exceptions import ServerError, WebsocketClosed
|
|
16
9
|
|
|
17
10
|
from rasa.core.channels import InputChannel, OutputChannel, UserMessage
|
|
18
|
-
from rasa.core.channels.voice_ready.utils import
|
|
19
|
-
|
|
11
|
+
from rasa.core.channels.voice_ready.utils import (
|
|
12
|
+
CallParameters,
|
|
13
|
+
validate_voice_license_scope,
|
|
14
|
+
)
|
|
20
15
|
from rasa.core.channels.voice_stream.asr.asr_engine import ASREngine
|
|
21
16
|
from rasa.core.channels.voice_stream.asr.asr_event import (
|
|
22
17
|
ASREvent,
|
|
23
18
|
NewTranscript,
|
|
24
19
|
UserIsSpeaking,
|
|
20
|
+
UserSilence,
|
|
25
21
|
)
|
|
26
|
-
from sanic import Websocket # type: ignore
|
|
27
|
-
|
|
28
|
-
from rasa.core.channels.voice_stream.asr.deepgram import DeepgramASR
|
|
29
22
|
from rasa.core.channels.voice_stream.asr.azure import AzureASR
|
|
23
|
+
from rasa.core.channels.voice_stream.asr.deepgram import DeepgramASR
|
|
30
24
|
from rasa.core.channels.voice_stream.audio_bytes import HERTZ, RasaAudioBytes
|
|
31
25
|
from rasa.core.channels.voice_stream.call_state import (
|
|
32
26
|
CallState,
|
|
@@ -34,9 +28,16 @@ from rasa.core.channels.voice_stream.call_state import (
|
|
|
34
28
|
call_state,
|
|
35
29
|
)
|
|
36
30
|
from rasa.core.channels.voice_stream.tts.azure import AzureTTS
|
|
37
|
-
from rasa.core.channels.voice_stream.tts.tts_engine import TTSEngine, TTSError
|
|
38
31
|
from rasa.core.channels.voice_stream.tts.cartesia import CartesiaTTS
|
|
39
32
|
from rasa.core.channels.voice_stream.tts.tts_cache import TTSCache
|
|
33
|
+
from rasa.core.channels.voice_stream.tts.tts_engine import TTSEngine, TTSError
|
|
34
|
+
from rasa.core.channels.voice_stream.util import generate_silence
|
|
35
|
+
from rasa.shared.core.constants import SLOT_SILENCE_TIMEOUT
|
|
36
|
+
from rasa.shared.utils.cli import print_error_and_exit
|
|
37
|
+
from rasa.shared.utils.common import (
|
|
38
|
+
class_from_module_path,
|
|
39
|
+
mark_as_beta_feature,
|
|
40
|
+
)
|
|
40
41
|
from rasa.utils.io import remove_emojis
|
|
41
42
|
|
|
42
43
|
logger = structlog.get_logger(__name__)
|
|
@@ -120,13 +121,14 @@ class VoiceOutputChannel(OutputChannel):
|
|
|
120
121
|
voice_websocket: Websocket,
|
|
121
122
|
tts_engine: TTSEngine,
|
|
122
123
|
tts_cache: TTSCache,
|
|
124
|
+
min_buffer_size: int = 0,
|
|
123
125
|
):
|
|
124
126
|
super().__init__()
|
|
125
127
|
self.voice_websocket = voice_websocket
|
|
126
128
|
self.tts_engine = tts_engine
|
|
127
129
|
self.tts_cache = tts_cache
|
|
128
|
-
|
|
129
130
|
self.latest_message_id: Optional[str] = None
|
|
131
|
+
self.min_buffer_size = min_buffer_size
|
|
130
132
|
|
|
131
133
|
def rasa_audio_bytes_to_channel_bytes(
|
|
132
134
|
self, rasa_audio_bytes: RasaAudioBytes
|
|
@@ -148,6 +150,19 @@ class VoiceOutputChannel(OutputChannel):
|
|
|
148
150
|
await self.voice_websocket.send(marker_message)
|
|
149
151
|
self.latest_message_id = mark_id
|
|
150
152
|
|
|
153
|
+
async def send_start_marker(self, recipient_id: str) -> None:
|
|
154
|
+
"""Send a marker message before the first audio chunk."""
|
|
155
|
+
# Default implementation uses the generic marker message
|
|
156
|
+
await self.send_marker_message(recipient_id)
|
|
157
|
+
|
|
158
|
+
async def send_intermediate_marker(self, recipient_id: str) -> None:
|
|
159
|
+
"""Send a marker message during audio streaming."""
|
|
160
|
+
await self.send_marker_message(recipient_id)
|
|
161
|
+
|
|
162
|
+
async def send_end_marker(self, recipient_id: str) -> None:
|
|
163
|
+
"""Send a marker message after the last audio chunk."""
|
|
164
|
+
await self.send_marker_message(recipient_id)
|
|
165
|
+
|
|
151
166
|
def update_silence_timeout(self) -> None:
|
|
152
167
|
"""Updates the silence timeout for the session."""
|
|
153
168
|
if self.tracker_state:
|
|
@@ -173,6 +188,14 @@ class VoiceOutputChannel(OutputChannel):
|
|
|
173
188
|
cached_audio_bytes = self.tts_cache.get(text)
|
|
174
189
|
collected_audio_bytes = RasaAudioBytes(b"")
|
|
175
190
|
seconds_marker = -1
|
|
191
|
+
last_sent_offset = 0
|
|
192
|
+
|
|
193
|
+
# Send start marker before first chunk
|
|
194
|
+
try:
|
|
195
|
+
await self.send_start_marker(recipient_id)
|
|
196
|
+
except (WebsocketClosed, ServerError):
|
|
197
|
+
call_state.connection_failed = True # type: ignore[attr-defined]
|
|
198
|
+
|
|
176
199
|
if cached_audio_bytes:
|
|
177
200
|
audio_stream = self.chunk_audio(cached_audio_bytes)
|
|
178
201
|
else:
|
|
@@ -185,19 +208,40 @@ class VoiceOutputChannel(OutputChannel):
|
|
|
185
208
|
audio_stream = self.chunk_audio(generate_silence())
|
|
186
209
|
|
|
187
210
|
async for audio_bytes in audio_stream:
|
|
188
|
-
|
|
189
|
-
await self.send_audio_bytes(recipient_id, audio_bytes)
|
|
190
|
-
full_seconds_of_audio = len(collected_audio_bytes) // HERTZ
|
|
191
|
-
if full_seconds_of_audio > seconds_marker:
|
|
192
|
-
await self.send_marker_message(recipient_id)
|
|
193
|
-
seconds_marker = full_seconds_of_audio
|
|
211
|
+
collected_audio_bytes = RasaAudioBytes(collected_audio_bytes + audio_bytes)
|
|
194
212
|
|
|
213
|
+
# Check if we have enough new bytes to send
|
|
214
|
+
current_buffer_size = len(collected_audio_bytes) - last_sent_offset
|
|
215
|
+
should_send = current_buffer_size >= self.min_buffer_size
|
|
216
|
+
|
|
217
|
+
if should_send:
|
|
218
|
+
try:
|
|
219
|
+
# Send only the new bytes since last send
|
|
220
|
+
new_bytes = RasaAudioBytes(collected_audio_bytes[last_sent_offset:])
|
|
221
|
+
await self.send_audio_bytes(recipient_id, new_bytes)
|
|
222
|
+
last_sent_offset = len(collected_audio_bytes)
|
|
223
|
+
|
|
224
|
+
full_seconds_of_audio = len(collected_audio_bytes) // HERTZ
|
|
225
|
+
if full_seconds_of_audio > seconds_marker:
|
|
226
|
+
await self.send_intermediate_marker(recipient_id)
|
|
227
|
+
seconds_marker = full_seconds_of_audio
|
|
228
|
+
|
|
229
|
+
except (WebsocketClosed, ServerError):
|
|
230
|
+
# ignore sending error, and keep collecting and caching audio bytes
|
|
231
|
+
call_state.connection_failed = True # type: ignore[attr-defined]
|
|
232
|
+
|
|
233
|
+
# Send any remaining audio not yet sent
|
|
234
|
+
remaining_bytes = len(collected_audio_bytes) - last_sent_offset
|
|
235
|
+
if remaining_bytes > 0:
|
|
236
|
+
try:
|
|
237
|
+
new_bytes = RasaAudioBytes(collected_audio_bytes[last_sent_offset:])
|
|
238
|
+
await self.send_audio_bytes(recipient_id, new_bytes)
|
|
195
239
|
except (WebsocketClosed, ServerError):
|
|
196
|
-
# ignore sending error
|
|
240
|
+
# ignore sending error
|
|
197
241
|
call_state.connection_failed = True # type: ignore[attr-defined]
|
|
198
|
-
|
|
242
|
+
|
|
199
243
|
try:
|
|
200
|
-
await self.
|
|
244
|
+
await self.send_end_marker(recipient_id)
|
|
201
245
|
except (WebsocketClosed, ServerError):
|
|
202
246
|
# ignore sending error
|
|
203
247
|
pass
|
|
@@ -244,13 +288,7 @@ class VoiceInputChannel(InputChannel):
|
|
|
244
288
|
self.monitor_silence = monitor_silence
|
|
245
289
|
self.tts_cache = TTSCache(tts_config.get("cache_size", 1000))
|
|
246
290
|
|
|
247
|
-
async def
|
|
248
|
-
self,
|
|
249
|
-
voice_websocket: Websocket,
|
|
250
|
-
on_new_message: Callable[[UserMessage], Awaitable[Any]],
|
|
251
|
-
tts_engine: TTSEngine,
|
|
252
|
-
call_parameters: CallParameters,
|
|
253
|
-
) -> None:
|
|
291
|
+
async def monitor_silence_timeout(self, asr_event_queue: asyncio.Queue) -> None:
|
|
254
292
|
timeout = call_state.silence_timeout
|
|
255
293
|
if not timeout:
|
|
256
294
|
return
|
|
@@ -258,16 +296,8 @@ class VoiceInputChannel(InputChannel):
|
|
|
258
296
|
return
|
|
259
297
|
logger.debug("voice_channel.silence_timeout_watch_started", timeout=timeout)
|
|
260
298
|
await asyncio.sleep(timeout)
|
|
299
|
+
await asr_event_queue.put(UserSilence())
|
|
261
300
|
logger.debug("voice_channel.silence_timeout_tripped")
|
|
262
|
-
output_channel = self.create_output_channel(voice_websocket, tts_engine)
|
|
263
|
-
message = UserMessage(
|
|
264
|
-
"/silence_timeout",
|
|
265
|
-
output_channel,
|
|
266
|
-
call_parameters.stream_id,
|
|
267
|
-
input_channel=self.name(),
|
|
268
|
-
metadata=asdict(call_parameters),
|
|
269
|
-
)
|
|
270
|
-
await on_new_message(message)
|
|
271
301
|
|
|
272
302
|
@staticmethod
|
|
273
303
|
def _cancel_silence_timeout_watcher() -> None:
|
|
@@ -315,6 +345,7 @@ class VoiceInputChannel(InputChannel):
|
|
|
315
345
|
def map_input_message(
|
|
316
346
|
self,
|
|
317
347
|
message: Any,
|
|
348
|
+
ws: Websocket,
|
|
318
349
|
) -> VoiceChannelAction:
|
|
319
350
|
"""Map a channel input message to a voice channel action."""
|
|
320
351
|
raise NotImplementedError
|
|
@@ -328,6 +359,7 @@ class VoiceInputChannel(InputChannel):
|
|
|
328
359
|
_call_state.set(CallState())
|
|
329
360
|
asr_engine = asr_engine_from_config(self.asr_config)
|
|
330
361
|
tts_engine = tts_engine_from_config(self.tts_config)
|
|
362
|
+
asr_event_queue: asyncio.Queue = asyncio.Queue()
|
|
331
363
|
await asr_engine.connect()
|
|
332
364
|
|
|
333
365
|
call_parameters = await self.collect_call_parameters(channel_websocket)
|
|
@@ -340,7 +372,7 @@ class VoiceInputChannel(InputChannel):
|
|
|
340
372
|
async def consume_audio_bytes() -> None:
|
|
341
373
|
async for message in channel_websocket:
|
|
342
374
|
is_bot_speaking_before = call_state.is_bot_speaking
|
|
343
|
-
channel_action = self.map_input_message(message)
|
|
375
|
+
channel_action = self.map_input_message(message, channel_websocket)
|
|
344
376
|
is_bot_speaking_after = call_state.is_bot_speaking
|
|
345
377
|
|
|
346
378
|
if not is_bot_speaking_before and is_bot_speaking_after:
|
|
@@ -354,12 +386,7 @@ class VoiceInputChannel(InputChannel):
|
|
|
354
386
|
self._cancel_silence_timeout_watcher()
|
|
355
387
|
call_state.silence_timeout_watcher = ( # type: ignore[attr-defined]
|
|
356
388
|
asyncio.create_task(
|
|
357
|
-
self.
|
|
358
|
-
channel_websocket,
|
|
359
|
-
on_new_message,
|
|
360
|
-
tts_engine,
|
|
361
|
-
call_parameters,
|
|
362
|
-
)
|
|
389
|
+
self.monitor_silence_timeout(asr_event_queue)
|
|
363
390
|
)
|
|
364
391
|
)
|
|
365
392
|
if isinstance(channel_action, NewAudioAction):
|
|
@@ -368,8 +395,13 @@ class VoiceInputChannel(InputChannel):
|
|
|
368
395
|
# end stream event came from the other side
|
|
369
396
|
break
|
|
370
397
|
|
|
371
|
-
async def
|
|
398
|
+
async def receive_asr_events() -> None:
|
|
372
399
|
async for event in asr_engine.stream_asr_events():
|
|
400
|
+
await asr_event_queue.put(event)
|
|
401
|
+
|
|
402
|
+
async def handle_asr_events() -> None:
|
|
403
|
+
while True:
|
|
404
|
+
event = await asr_event_queue.get()
|
|
373
405
|
await self.handle_asr_event(
|
|
374
406
|
event,
|
|
375
407
|
channel_websocket,
|
|
@@ -378,16 +410,18 @@ class VoiceInputChannel(InputChannel):
|
|
|
378
410
|
call_parameters,
|
|
379
411
|
)
|
|
380
412
|
|
|
381
|
-
|
|
382
|
-
|
|
413
|
+
tasks = [
|
|
414
|
+
asyncio.create_task(consume_audio_bytes()),
|
|
415
|
+
asyncio.create_task(receive_asr_events()),
|
|
416
|
+
asyncio.create_task(handle_asr_events()),
|
|
417
|
+
]
|
|
383
418
|
await asyncio.wait(
|
|
384
|
-
|
|
419
|
+
tasks,
|
|
385
420
|
return_when=asyncio.FIRST_COMPLETED,
|
|
386
421
|
)
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
asr_event_task.cancel()
|
|
422
|
+
for task in tasks:
|
|
423
|
+
if not task.done():
|
|
424
|
+
task.cancel()
|
|
391
425
|
await tts_engine.close_connection()
|
|
392
426
|
await asr_engine.close_connection()
|
|
393
427
|
await channel_websocket.close()
|
|
@@ -425,3 +459,13 @@ class VoiceInputChannel(InputChannel):
|
|
|
425
459
|
elif isinstance(e, UserIsSpeaking):
|
|
426
460
|
self._cancel_silence_timeout_watcher()
|
|
427
461
|
call_state.is_user_speaking = True # type: ignore[attr-defined]
|
|
462
|
+
elif isinstance(e, UserSilence):
|
|
463
|
+
output_channel = self.create_output_channel(voice_websocket, tts_engine)
|
|
464
|
+
message = UserMessage(
|
|
465
|
+
"/silence_timeout",
|
|
466
|
+
output_channel,
|
|
467
|
+
call_parameters.stream_id,
|
|
468
|
+
input_channel=self.name(),
|
|
469
|
+
metadata=asdict(call_parameters),
|
|
470
|
+
)
|
|
471
|
+
await on_new_message(message)
|
rasa/core/channels/webexteams.py
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
from typing import Any, Awaitable, Callable, Dict, Optional, Text
|
|
3
|
+
|
|
2
4
|
from sanic import Blueprint, response
|
|
3
5
|
from sanic.request import Request
|
|
4
|
-
from typing import Text, Optional, Dict, Any, Callable, Awaitable
|
|
5
|
-
|
|
6
6
|
from sanic.response import HTTPResponse
|
|
7
7
|
from webexteamssdk import WebexTeamsAPI, Webhook
|
|
8
8
|
|
|
9
|
-
from rasa.core.channels.channel import InputChannel
|
|
10
|
-
from rasa.core.channels.channel import UserMessage, OutputChannel
|
|
9
|
+
from rasa.core.channels.channel import InputChannel, OutputChannel, UserMessage
|
|
11
10
|
|
|
12
11
|
logger = logging.getLogger(__name__)
|
|
13
12
|
|
rasa/core/constants.py
CHANGED
|
@@ -110,3 +110,5 @@ UTTER_SOURCE_METADATA_KEY = "utter_source"
|
|
|
110
110
|
DOMAIN_GROUND_TRUTH_METADATA_KEY = "domain_ground_truth"
|
|
111
111
|
ACTIVE_FLOW_METADATA_KEY = "active_flow"
|
|
112
112
|
STEP_ID_METADATA_KEY = "step_id"
|
|
113
|
+
KEY_IS_CALM_SYSTEM = "is_calm_system"
|
|
114
|
+
KEY_IS_COEXISTENCE_ASSISTANT = "is_coexistence_assistant"
|
rasa/core/evaluation/marker.py
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
from typing import Optional, Text
|
|
1
|
+
import logging
|
|
2
|
+
from typing import List, Optional, Text
|
|
3
|
+
|
|
3
4
|
from rasa.core.evaluation.marker_base import (
|
|
4
|
-
OperatorMarker,
|
|
5
5
|
ConditionMarker,
|
|
6
|
-
MarkerRegistry,
|
|
7
6
|
Marker,
|
|
7
|
+
MarkerRegistry,
|
|
8
|
+
OperatorMarker,
|
|
8
9
|
)
|
|
9
|
-
from rasa.shared.core.
|
|
10
|
-
import
|
|
10
|
+
from rasa.shared.core.domain import Domain
|
|
11
|
+
from rasa.shared.core.events import ActionExecuted, Event, SlotSet, UserUttered
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -1,42 +1,41 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import csv
|
|
4
|
+
import logging
|
|
2
5
|
import os
|
|
6
|
+
import os.path
|
|
3
7
|
from abc import ABC, abstractmethod
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from pathlib import Path
|
|
4
10
|
from typing import (
|
|
11
|
+
TYPE_CHECKING,
|
|
12
|
+
Any,
|
|
13
|
+
AsyncIterator,
|
|
5
14
|
Dict,
|
|
6
15
|
Iterator,
|
|
16
|
+
List,
|
|
7
17
|
Optional,
|
|
8
18
|
Set,
|
|
9
19
|
Text,
|
|
10
|
-
List,
|
|
11
20
|
Tuple,
|
|
12
21
|
Type,
|
|
13
22
|
TypeVar,
|
|
14
|
-
TYPE_CHECKING,
|
|
15
23
|
Union,
|
|
16
|
-
Any,
|
|
17
|
-
AsyncIterator,
|
|
18
24
|
)
|
|
19
25
|
|
|
20
|
-
from pathlib import Path
|
|
21
|
-
from dataclasses import dataclass
|
|
22
|
-
|
|
23
26
|
import rasa.shared.core.constants
|
|
24
27
|
import rasa.shared.nlu.constants
|
|
25
|
-
import rasa.shared.utils.io
|
|
26
28
|
import rasa.shared.utils.common
|
|
27
|
-
|
|
28
|
-
from rasa.shared.exceptions import InvalidConfigException, RasaException
|
|
29
|
-
from rasa.shared.core.events import ActionExecuted, UserUttered, Event
|
|
29
|
+
import rasa.shared.utils.io
|
|
30
30
|
from rasa import telemetry
|
|
31
|
+
from rasa.shared.constants import DOCS_URL_MARKERS
|
|
31
32
|
from rasa.shared.core.domain import Domain
|
|
33
|
+
from rasa.shared.core.events import ActionExecuted, Event, UserUttered
|
|
32
34
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
35
|
+
from rasa.shared.data import is_likely_yaml_file
|
|
36
|
+
from rasa.shared.exceptions import InvalidConfigException, RasaException
|
|
33
37
|
from rasa.shared.utils.yaml import read_yaml_file
|
|
34
38
|
from rasa.utils.io import WriteRow
|
|
35
|
-
from rasa.shared.constants import DOCS_URL_MARKERS
|
|
36
|
-
|
|
37
|
-
import logging
|
|
38
|
-
import csv
|
|
39
|
-
import os.path
|
|
40
39
|
|
|
41
40
|
if TYPE_CHECKING:
|
|
42
41
|
from rasa.core.evaluation.marker import OrMarker
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from typing import Dict, Text, Union, List, Tuple
|
|
3
2
|
|
|
4
|
-
from rasa.utils.io import WriteRow
|
|
5
|
-
from pathlib import Path
|
|
6
3
|
import csv
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Dict, List, Text, Tuple, Union
|
|
7
6
|
|
|
8
7
|
import numpy as np
|
|
9
8
|
|
|
10
|
-
|
|
11
9
|
from rasa.core.evaluation.marker_base import EventMetaData
|
|
10
|
+
from rasa.utils.io import WriteRow
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
def compute_statistics(
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import random
|
|
2
|
-
from
|
|
3
|
-
|
|
4
|
-
from typing import Any, Iterable, List, Text, Optional, AsyncIterator
|
|
5
|
-
from rasa.core.tracker_store import TrackerStore
|
|
2
|
+
from typing import Any, AsyncIterator, Iterable, List, Optional, Text
|
|
3
|
+
|
|
6
4
|
import rasa.shared.utils.io
|
|
5
|
+
from rasa.core.tracker_store import TrackerStore
|
|
6
|
+
from rasa.shared.core.trackers import DialogueStateTracker
|
|
7
|
+
from rasa.shared.exceptions import RasaException
|
|
7
8
|
|
|
8
9
|
STRATEGY_ALL = "all"
|
|
9
10
|
STRATEGY_FIRST_N = "first_n"
|
rasa/core/exporter.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import datetime
|
|
1
2
|
import logging
|
|
2
3
|
import uuid
|
|
3
|
-
import
|
|
4
|
-
from typing import AsyncIterator, Text, Optional, List, Set, Dict, Any
|
|
4
|
+
from typing import Any, AsyncIterator, Dict, List, Optional, Set, Text
|
|
5
5
|
|
|
6
6
|
from tqdm import tqdm
|
|
7
7
|
|
|
@@ -11,12 +11,12 @@ from rasa.core.brokers.broker import EventBroker
|
|
|
11
11
|
from rasa.core.brokers.pika import PikaEventBroker
|
|
12
12
|
from rasa.core.constants import RASA_EXPORT_PROCESS_ID_HEADER_NAME
|
|
13
13
|
from rasa.core.tracker_store import TrackerStore
|
|
14
|
-
from rasa.shared.core.trackers import EventVerbosity
|
|
15
14
|
from rasa.exceptions import (
|
|
16
|
-
NoEventsToMigrateError,
|
|
17
15
|
NoConversationsInTrackerStoreError,
|
|
16
|
+
NoEventsToMigrateError,
|
|
18
17
|
PublishingError,
|
|
19
18
|
)
|
|
19
|
+
from rasa.shared.core.trackers import EventVerbosity
|
|
20
20
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from typing import Optional, Text, Dict, List, Union, Iterable, Any
|
|
3
|
-
from collections.abc import ValuesView, KeysView
|
|
4
2
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
3
|
+
from collections.abc import KeysView, ValuesView
|
|
4
|
+
from typing import Any, Dict, Iterable, List, Optional, Text, Union
|
|
5
|
+
|
|
6
|
+
import rasa.shared.utils.io
|
|
7
|
+
from rasa.engine.graph import ExecutionContext, GraphComponent
|
|
7
8
|
from rasa.engine.storage.resource import Resource
|
|
8
|
-
from rasa.engine.
|
|
9
|
+
from rasa.engine.storage.storage import ModelStorage
|
|
9
10
|
from rasa.shared.core.domain import Domain, SubState
|
|
10
|
-
from rasa.shared.core.events import ActionExecuted,
|
|
11
|
+
from rasa.shared.core.events import ActionExecuted, Event, UserUttered
|
|
11
12
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
12
13
|
from rasa.shared.core.training_data.structures import StoryGraph
|
|
13
14
|
from rasa.shared.nlu.constants import ACTION_NAME, ACTION_TEXT, INTENT, TEXT
|
|
15
|
+
from rasa.shared.nlu.training_data.features import Features
|
|
14
16
|
from rasa.shared.nlu.training_data.message import Message
|
|
15
17
|
from rasa.shared.nlu.training_data.training_data import TrainingData
|
|
16
|
-
from rasa.shared.nlu.training_data.features import Features
|
|
17
|
-
import rasa.shared.utils.io
|
|
18
18
|
|
|
19
19
|
# TODO: make precomputations (MessageContainerForCoreFeaturization) cacheable
|
|
20
20
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import Any, Dict, List, Optional, Set, Text
|
|
3
3
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
import scipy.sparse
|
|
@@ -8,18 +8,18 @@ from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturiz
|
|
|
8
8
|
from rasa.nlu.extractors.extractor import EntityTagSpec
|
|
9
9
|
from rasa.nlu.utils import bilou_utils
|
|
10
10
|
from rasa.nlu.utils.bilou_utils import BILOU_PREFIXES
|
|
11
|
-
from rasa.shared.core.
|
|
12
|
-
from rasa.shared.core.
|
|
11
|
+
from rasa.shared.core.constants import ACTIVE_LOOP, PREVIOUS_ACTION, SLOTS, USER
|
|
12
|
+
from rasa.shared.core.domain import Domain, State, SubState
|
|
13
13
|
from rasa.shared.core.trackers import is_prev_action_listen_in_state
|
|
14
14
|
from rasa.shared.nlu.constants import (
|
|
15
|
+
ACTION_NAME,
|
|
16
|
+
ACTION_TEXT,
|
|
15
17
|
ENTITIES,
|
|
18
|
+
ENTITY_ATTRIBUTE_TYPE,
|
|
19
|
+
ENTITY_TAGS,
|
|
16
20
|
FEATURE_TYPE_SENTENCE,
|
|
17
|
-
ACTION_TEXT,
|
|
18
|
-
ACTION_NAME,
|
|
19
21
|
INTENT,
|
|
20
22
|
NO_ENTITY_TAG,
|
|
21
|
-
ENTITY_ATTRIBUTE_TYPE,
|
|
22
|
-
ENTITY_TAGS,
|
|
23
23
|
TEXT,
|
|
24
24
|
)
|
|
25
25
|
from rasa.shared.nlu.training_data.features import Features
|
|
@@ -5,20 +5,20 @@ from abc import abstractmethod
|
|
|
5
5
|
from collections import defaultdict
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import (
|
|
8
|
-
|
|
8
|
+
Any,
|
|
9
|
+
Callable,
|
|
10
|
+
ClassVar,
|
|
11
|
+
DefaultDict,
|
|
12
|
+
Dict,
|
|
13
|
+
Iterator,
|
|
9
14
|
List,
|
|
10
15
|
Optional,
|
|
11
|
-
|
|
16
|
+
Set,
|
|
12
17
|
Text,
|
|
18
|
+
Tuple,
|
|
19
|
+
Type,
|
|
13
20
|
Union,
|
|
14
|
-
Any,
|
|
15
|
-
Iterator,
|
|
16
|
-
Set,
|
|
17
|
-
DefaultDict,
|
|
18
21
|
cast,
|
|
19
|
-
Type,
|
|
20
|
-
Callable,
|
|
21
|
-
ClassVar,
|
|
22
22
|
)
|
|
23
23
|
|
|
24
24
|
import numpy as np
|
|
@@ -30,15 +30,15 @@ from rasa.core.exceptions import InvalidTrackerFeaturizerUsageError
|
|
|
30
30
|
from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturization
|
|
31
31
|
from rasa.core.featurizers.single_state_featurizer import SingleStateFeaturizer
|
|
32
32
|
from rasa.shared.core.constants import (
|
|
33
|
-
USER,
|
|
34
33
|
ACTION_UNLIKELY_INTENT_NAME,
|
|
35
34
|
PREVIOUS_ACTION,
|
|
35
|
+
USER,
|
|
36
36
|
)
|
|
37
|
-
from rasa.shared.core.domain import
|
|
38
|
-
from rasa.shared.core.events import
|
|
37
|
+
from rasa.shared.core.domain import Domain, State
|
|
38
|
+
from rasa.shared.core.events import ActionExecuted, Event, UserUttered
|
|
39
39
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
40
40
|
from rasa.shared.exceptions import RasaException
|
|
41
|
-
from rasa.shared.nlu.constants import
|
|
41
|
+
from rasa.shared.nlu.constants import ACTION_NAME, ENTITIES, INTENT, TEXT
|
|
42
42
|
from rasa.shared.nlu.training_data.features import Features
|
|
43
43
|
from rasa.utils.tensorflow.constants import LABEL_PAD_ID
|
|
44
44
|
from rasa.utils.tensorflow.model_data import ragged_array_to_ndarray
|
rasa/core/http_interpreter.py
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import aiohttp
|
|
2
|
-
|
|
3
1
|
import copy
|
|
4
2
|
import logging
|
|
5
|
-
import
|
|
3
|
+
from typing import Any, Dict, Optional, Text
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
import aiohttp
|
|
6
|
+
import structlog
|
|
8
7
|
|
|
9
8
|
from rasa.core import constants
|
|
10
9
|
from rasa.core.channels import UserMessage
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
|
-
from typing import TYPE_CHECKING,
|
|
2
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text
|
|
3
3
|
|
|
4
4
|
import structlog
|
|
5
5
|
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
6
|
-
from langchain_community.document_loaders.text import TextLoader
|
|
7
6
|
from langchain_community.document_loaders.directory import DirectoryLoader
|
|
7
|
+
from langchain_community.document_loaders.text import TextLoader
|
|
8
8
|
from langchain_community.vectorstores.faiss import FAISS
|
|
9
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
10
9
|
|
|
11
10
|
from rasa.core.information_retrieval import (
|
|
12
|
-
SearchResultList,
|
|
13
11
|
InformationRetrieval,
|
|
14
12
|
InformationRetrievalException,
|
|
13
|
+
SearchResultList,
|
|
15
14
|
)
|
|
15
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
16
16
|
from rasa.utils.ml_utils import persist_faiss_vector_store
|
|
17
17
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import importlib
|
|
3
4
|
from dataclasses import dataclass
|
|
4
|
-
from typing import TYPE_CHECKING,
|
|
5
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Text
|
|
5
6
|
|
|
6
7
|
import structlog
|
|
7
8
|
|
|
8
9
|
from rasa.shared.exceptions import RasaException
|
|
9
10
|
from rasa.utils.endpoints import EndpointConfig
|
|
10
|
-
import importlib
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
13
|
from langchain.schema import Document
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Any, Dict, Text
|
|
2
2
|
|
|
3
3
|
import structlog
|
|
4
4
|
from langchain_community.vectorstores.milvus import Milvus
|
|
5
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
6
5
|
|
|
7
6
|
from rasa.core.information_retrieval import (
|
|
8
|
-
SearchResultList,
|
|
9
7
|
InformationRetrieval,
|
|
10
8
|
InformationRetrievalException,
|
|
9
|
+
SearchResultList,
|
|
11
10
|
)
|
|
11
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
12
12
|
|
|
13
13
|
logger = structlog.get_logger()
|
|
14
14
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Any, Dict, Text
|
|
2
2
|
|
|
3
3
|
import structlog
|
|
4
4
|
from langchain_community.vectorstores.qdrant import Qdrant
|
|
5
5
|
from pydantic import ValidationError
|
|
6
6
|
from qdrant_client import QdrantClient
|
|
7
|
-
from rasa.utils.endpoints import EndpointConfig
|
|
8
7
|
|
|
9
8
|
from rasa.core.information_retrieval import (
|
|
10
|
-
SearchResultList,
|
|
11
9
|
InformationRetrieval,
|
|
12
10
|
InformationRetrievalException,
|
|
11
|
+
SearchResultList,
|
|
13
12
|
)
|
|
13
|
+
from rasa.utils.endpoints import EndpointConfig
|
|
14
14
|
|
|
15
15
|
logger = structlog.get_logger()
|
|
16
16
|
|