rasa-pro 3.14.0.dev5__py3-none-any.whl → 3.14.0.dev6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- rasa/agents/agent_factory.py +122 -0
- rasa/agents/agent_manager.py +163 -0
- rasa/agents/constants.py +40 -0
- rasa/agents/core/agent_protocol.py +107 -0
- rasa/agents/core/types.py +70 -0
- rasa/agents/exceptions.py +8 -0
- rasa/agents/protocol/__init__.py +5 -0
- rasa/agents/protocol/a2a/a2a_agent.py +662 -0
- rasa/agents/protocol/mcp/mcp_base_agent.py +684 -0
- rasa/agents/protocol/mcp/mcp_open_agent.py +290 -0
- rasa/agents/protocol/mcp/mcp_task_agent.py +484 -0
- rasa/agents/schemas/__init__.py +12 -0
- rasa/agents/schemas/agent_input.py +38 -0
- rasa/agents/schemas/agent_output.py +26 -0
- rasa/agents/schemas/agent_tool_result.py +67 -0
- rasa/agents/schemas/agent_tool_schema.py +134 -0
- rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +15 -0
- rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +17 -0
- rasa/agents/utils.py +72 -0
- rasa/api.py +5 -0
- rasa/cli/arguments/default_arguments.py +12 -0
- rasa/cli/arguments/run.py +2 -0
- rasa/cli/dialogue_understanding_test.py +4 -0
- rasa/cli/e2e_test.py +4 -0
- rasa/cli/inspect.py +3 -0
- rasa/cli/llm_fine_tuning.py +5 -0
- rasa/cli/project_templates/tutorial/config.yml +1 -2
- rasa/cli/run.py +4 -0
- rasa/cli/scaffold.py +2 -46
- rasa/cli/shell.py +3 -0
- rasa/constants.py +6 -0
- rasa/core/actions/action.py +56 -10
- rasa/core/agent.py +19 -1
- rasa/core/available_agents.py +199 -0
- rasa/core/available_endpoints.py +30 -0
- rasa/core/channels/channel.py +3 -4
- rasa/core/channels/development_inspector.py +4 -4
- rasa/core/channels/hangouts.py +2 -2
- rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-63212852.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-eecf6b13.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-8f798a9a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-df71a04c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-9b275968.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-1c669cad.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-b1553799.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-112388d6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-fdebec47.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-6280ede1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-e1dc03e5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-83f68c51.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-22f8666f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-ca9e6217.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-c5ceb692.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-3e293924.js +1353 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-faa9999b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-c4dda8d9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-d4307784.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-0567aaa7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-c11b95cf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-0c7d3ca9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-34b433fa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-4cab816e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-8c22fa9e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-70ce9e8e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-fbcd7fc9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-45f05ea6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-beab1ea6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-2f29dbd5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-951eac83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-897fbfdd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-d667fac1.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e3205144.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-4abeb0e2.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +2 -2
- rasa/core/channels/inspector/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +11 -10
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +3 -12
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +6 -4
- rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
- rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
- rasa/core/channels/inspector/src/types.ts +4 -0
- rasa/core/channels/socketio.py +51 -212
- rasa/core/channels/studio_chat.py +29 -49
- rasa/core/channels/voice_stream/genesys.py +1 -1
- rasa/core/channels/voice_stream/voice_channel.py +3 -5
- rasa/core/constants.py +4 -0
- rasa/core/policies/enterprise_search_policy.py +11 -6
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/flow_executor.py +470 -45
- rasa/core/policies/flows/mcp_tool_executor.py +277 -0
- rasa/core/policies/intentless_policy.py +1 -1
- rasa/core/policies/unexpected_intent_policy.py +1 -0
- rasa/core/processor.py +18 -15
- rasa/core/run.py +11 -14
- rasa/core/tracker_stores/tracker_store.py +3 -7
- rasa/core/train.py +1 -1
- rasa/core/training/interactive.py +16 -16
- rasa/core/training/story_conflict.py +5 -5
- rasa/core/utils.py +21 -1
- rasa/dialogue_understanding/commands/__init__.py +8 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +97 -4
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +11 -0
- rasa/dialogue_understanding/commands/clarify_command.py +10 -0
- rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +11 -0
- rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +164 -8
- rasa/dialogue_understanding/commands/utils.py +6 -2
- rasa/dialogue_understanding/generator/command_parser.py +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +9 -10
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +61 -0
- rasa/{cli/project_templates/telco/prompts/command-generator.jinja2 → dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2} +7 -3
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +81 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +81 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +7 -6
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +7 -6
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +41 -2
- rasa/dialogue_understanding/patterns/continue_interrupted.py +163 -1
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +52 -8
- rasa/dialogue_understanding/processor/command_processor.py +31 -15
- rasa/dialogue_understanding/stack/dialogue_stack.py +123 -2
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
- rasa/dialogue_understanding/stack/utils.py +17 -2
- rasa/dialogue_understanding_test/du_test_runner.py +7 -2
- rasa/e2e_test/e2e_test_runner.py +12 -2
- rasa/engine/caching.py +2 -2
- rasa/engine/recipes/default_components.py +10 -18
- rasa/engine/storage/local_model_storage.py +2 -45
- rasa/graph_components/validators/default_recipe_validator.py +134 -134
- rasa/hooks.py +5 -5
- rasa/llm_fine_tuning/utils.py +2 -2
- rasa/model_manager/model_api.py +5 -4
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +14 -20
- rasa/model_manager/trainer_service.py +9 -12
- rasa/model_manager/utils.py +29 -1
- rasa/model_manager/warm_rasa_process.py +1 -1
- rasa/nlu/extractors/extractor.py +2 -1
- rasa/plugin.py +8 -8
- rasa/privacy/privacy_manager.py +11 -2
- rasa/server.py +14 -2
- rasa/shared/agents/utils.py +35 -0
- rasa/shared/constants.py +5 -0
- rasa/shared/core/constants.py +12 -1
- rasa/shared/core/domain.py +11 -58
- rasa/shared/core/events.py +327 -0
- rasa/shared/core/flows/flow_step.py +1 -7
- rasa/shared/core/flows/flows_list.py +15 -5
- rasa/shared/core/flows/flows_yaml_schema.json +112 -186
- rasa/shared/core/flows/steps/call.py +53 -5
- rasa/shared/core/flows/validation.py +177 -7
- rasa/shared/core/flows/yaml_flows_io.py +9 -17
- rasa/shared/core/slots.py +2 -6
- rasa/shared/core/trackers.py +5 -2
- rasa/shared/exceptions.py +4 -0
- rasa/shared/importers/importer.py +0 -6
- rasa/shared/importers/rasa.py +1 -1
- rasa/shared/importers/utils.py +10 -80
- rasa/shared/providers/_utils.py +44 -60
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +0 -2
- rasa/shared/providers/llm/_base_litellm_client.py +39 -7
- rasa/shared/providers/llm/default_litellm_llm_client.py +0 -2
- rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
- rasa/shared/providers/llm/llm_client.py +7 -3
- rasa/shared/providers/llm/llm_response.py +66 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
- rasa/shared/utils/llm.py +28 -5
- rasa/shared/utils/mcp/server_connection.py +166 -0
- rasa/shared/utils/schemas/events.py +42 -0
- rasa/shared/utils/yaml.py +3 -1
- rasa/studio/upload.py +47 -16
- rasa/telemetry.py +23 -97
- rasa/tracing/instrumentation/instrumentation.py +14 -10
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
- rasa/utils/common.py +79 -0
- rasa/utils/io.py +9 -27
- rasa/utils/json_utils.py +1 -6
- rasa/utils/log_utils.py +2 -6
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/tensorflow/rasa_layers.py +1 -1
- rasa/utils/train_utils.py +15 -15
- rasa/validator.py +19 -21
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/METADATA +14 -17
- {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/RECORD +201 -432
- rasa/builder/README.md +0 -120
- rasa/builder/auth.py +0 -176
- rasa/builder/config.py +0 -115
- rasa/builder/copilot/constants.py +0 -25
- rasa/builder/copilot/copilot.py +0 -372
- rasa/builder/copilot/copilot_response_handler.py +0 -487
- rasa/builder/copilot/copilot_templated_message_provider.py +0 -58
- rasa/builder/copilot/exceptions.py +0 -20
- rasa/builder/copilot/models.py +0 -431
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +0 -726
- rasa/builder/copilot/telemetry.py +0 -195
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +0 -16
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +0 -26
- rasa/builder/document_retrieval/constants.py +0 -15
- rasa/builder/document_retrieval/inkeep-rag-response-schema.json +0 -64
- rasa/builder/document_retrieval/inkeep_document_retrieval.py +0 -238
- rasa/builder/document_retrieval/models.py +0 -62
- rasa/builder/download.py +0 -140
- rasa/builder/exceptions.py +0 -55
- rasa/builder/guardrails/__init__.py +0 -1
- rasa/builder/guardrails/constants.py +0 -3
- rasa/builder/guardrails/exceptions.py +0 -4
- rasa/builder/guardrails/lakera.py +0 -206
- rasa/builder/guardrails/models.py +0 -199
- rasa/builder/guardrails/utils.py +0 -305
- rasa/builder/job_manager.py +0 -87
- rasa/builder/jobs.py +0 -234
- rasa/builder/llm_service.py +0 -246
- rasa/builder/logging_utils.py +0 -209
- rasa/builder/main.py +0 -174
- rasa/builder/models.py +0 -197
- rasa/builder/project_generator.py +0 -450
- rasa/builder/project_info.py +0 -72
- rasa/builder/scrape_rasa_docs.py +0 -97
- rasa/builder/service.py +0 -1142
- rasa/builder/shared/tracker_context.py +0 -212
- rasa/builder/skill_to_bot_prompt.jinja2 +0 -164
- rasa/builder/training_service.py +0 -132
- rasa/builder/validation_service.py +0 -93
- rasa/cli/project_templates/basic/actions/action_api.py +0 -15
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +0 -44
- rasa/cli/project_templates/basic/config.yml +0 -23
- rasa/cli/project_templates/basic/credentials.yml +0 -34
- rasa/cli/project_templates/basic/data/general/feedback.yml +0 -20
- rasa/cli/project_templates/basic/data/general/goodbye.yml +0 -6
- rasa/cli/project_templates/basic/data/general/hello.yml +0 -7
- rasa/cli/project_templates/basic/data/general/help.yml +0 -6
- rasa/cli/project_templates/basic/data/general/human_handoff.yml +0 -16
- rasa/cli/project_templates/basic/data/general/welcome.yml +0 -9
- rasa/cli/project_templates/basic/data/system/pattern_completed.yml +0 -7
- rasa/cli/project_templates/basic/data/system/pattern_correction.yml +0 -7
- rasa/cli/project_templates/basic/data/system/pattern_search.yml +0 -8
- rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +0 -8
- rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +0 -65
- rasa/cli/project_templates/basic/docs/template.txt +0 -7
- rasa/cli/project_templates/basic/domain/general/assistant_details.yml +0 -12
- rasa/cli/project_templates/basic/domain/general/bot_identity.yml +0 -5
- rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +0 -5
- rasa/cli/project_templates/basic/domain/general/feedback.yml +0 -28
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +0 -7
- rasa/cli/project_templates/basic/domain/general/help.yml +0 -5
- rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +0 -35
- rasa/cli/project_templates/basic/domain/general/utils.yml +0 -13
- rasa/cli/project_templates/basic/domain/general/welcome.yml +0 -7
- rasa/cli/project_templates/basic/endpoints.yml +0 -73
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
- rasa/cli/project_templates/finance/actions/__init__.py +0 -46
- rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
- rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
- rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
- rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
- rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
- rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
- rasa/cli/project_templates/finance/actions/database.py +0 -277
- rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
- rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
- rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
- rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
- rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
- rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +0 -18
- rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
- rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
- rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
- rasa/cli/project_templates/finance/config.yml +0 -21
- rasa/cli/project_templates/finance/credentials.yml +0 -32
- rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
- rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
- rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
- rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
- rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
- rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
- rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
- rasa/cli/project_templates/finance/csvs/users.csv +0 -4
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +0 -10
- rasa/cli/project_templates/finance/data/cards/block_card.yml +0 -66
- rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
- rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
- rasa/cli/project_templates/finance/data/general/feedback.yml +0 -20
- rasa/cli/project_templates/finance/data/general/goodbye.yml +0 -6
- rasa/cli/project_templates/finance/data/general/hello.yml +0 -7
- rasa/cli/project_templates/finance/data/general/help.yml +0 -9
- rasa/cli/project_templates/finance/data/general/human_handoff.yml +0 -16
- rasa/cli/project_templates/finance/data/general/welcome.yml +0 -9
- rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
- rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +0 -7
- rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +0 -7
- rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +0 -8
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +0 -8
- rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
- rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
- rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
- rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
- rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
- rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
- rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
- rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
- rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
- rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
- rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +0 -67
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +0 -11
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +0 -101
- rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
- rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
- rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +0 -5
- rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
- rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -28
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +0 -7
- rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +0 -30
- rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
- rasa/cli/project_templates/finance/domain/general/welcome.yml +0 -8
- rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
- rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
- rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +0 -79
- rasa/cli/project_templates/finance/endpoints.yml +0 -63
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions_billing.py +0 -204
- rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +0 -48
- rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +0 -28
- rasa/cli/project_templates/telco/actions/actions_session_start.py +0 -18
- rasa/cli/project_templates/telco/config.yml +0 -25
- rasa/cli/project_templates/telco/credentials.yml +0 -33
- rasa/cli/project_templates/telco/csvs/billing.csv +0 -10
- rasa/cli/project_templates/telco/csvs/customers.csv +0 -5
- rasa/cli/project_templates/telco/data/flows/flow_global.yml +0 -5
- rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +0 -8
- rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +0 -7
- rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +0 -73
- rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +0 -45
- rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +0 -7
- rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +0 -6
- rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +0 -7
- rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +0 -9
- rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +0 -1
- rasa/cli/project_templates/telco/docs/restart_router.txt +0 -6
- rasa/cli/project_templates/telco/docs/run_speed_test.txt +0 -6
- rasa/cli/project_templates/telco/domain/domain_global.yml +0 -29
- rasa/cli/project_templates/telco/domain/domain_patterns.yml +0 -17
- rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +0 -20
- rasa/cli/project_templates/telco/domain/domain_reset_router.yml +0 -11
- rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +0 -24
- rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +0 -74
- rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +0 -102
- rasa/cli/project_templates/telco/endpoints.yml +0 -60
- rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +0 -62
- rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +0 -130
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +0 -68
- rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +0 -13
- rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +0 -47
- rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +0 -21
- rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +0 -15
- rasa/core/channels/constants.py +0 -3
- rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
- rasa/utils/openapi.py +0 -144
- /rasa/{builder → agents}/__init__.py +0 -0
- /rasa/{builder/copilot → agents/core}/__init__.py +0 -0
- /rasa/{builder/copilot/prompts → agents/protocol/a2a}/__init__.py +0 -0
- /rasa/{builder/copilot/templated_messages → agents/protocol/mcp}/__init__.py +0 -0
- /rasa/{builder/document_retrieval → agents/templates}/__init__.py +0 -0
- /rasa/{cli/project_templates/finance/actions/accounts → shared/agents}/__init__.py +0 -0
- /rasa/{cli/project_templates/finance/actions/cards → shared/utils/mcp}/__init__.py +0 -0
- {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
from typing import Any, Callable, Dict, Optional
|
|
2
|
+
|
|
3
|
+
from mcp import Tool
|
|
4
|
+
from pydantic import BaseModel
|
|
5
|
+
|
|
6
|
+
from rasa.agents.constants import (
|
|
7
|
+
TOOL_ADDITIONAL_PROPERTIES_KEY,
|
|
8
|
+
TOOL_DESCRIPTION_KEY,
|
|
9
|
+
TOOL_EXECUTOR_KEY,
|
|
10
|
+
TOOL_NAME_KEY,
|
|
11
|
+
TOOL_PARAMETERS_KEY,
|
|
12
|
+
TOOL_PROPERTIES_KEY,
|
|
13
|
+
TOOL_PROPERTY_TYPE_KEY,
|
|
14
|
+
TOOL_REQUIRED_KEY,
|
|
15
|
+
TOOL_STRICT_KEY,
|
|
16
|
+
TOOL_TYPE_FUNCTION_KEY,
|
|
17
|
+
TOOL_TYPE_KEY,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AgentToolSchema(BaseModel):
|
|
22
|
+
name: str
|
|
23
|
+
parameters: dict[str, Any]
|
|
24
|
+
strict: bool
|
|
25
|
+
description: Optional[str] = None
|
|
26
|
+
type: str = "function"
|
|
27
|
+
|
|
28
|
+
@classmethod
|
|
29
|
+
def from_mcp_tool(cls, tool: Tool) -> "AgentToolSchema":
|
|
30
|
+
"""Convert MCP Tool to AgentToolSchema."""
|
|
31
|
+
parameters = tool.inputSchema.copy() if tool.inputSchema else {}
|
|
32
|
+
|
|
33
|
+
if parameters:
|
|
34
|
+
cls._validate_and_fix_parameters(parameters)
|
|
35
|
+
|
|
36
|
+
return cls(
|
|
37
|
+
name=tool.name,
|
|
38
|
+
description=tool.description,
|
|
39
|
+
parameters=parameters,
|
|
40
|
+
strict=False,
|
|
41
|
+
type=TOOL_TYPE_FUNCTION_KEY,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_openai_json_format(cls, tool: Dict[str, Any]) -> "AgentToolSchema":
|
|
46
|
+
"""Convert OpenAI dict format to AgentToolSchema."""
|
|
47
|
+
function_data = tool[TOOL_TYPE_FUNCTION_KEY]
|
|
48
|
+
parameters = function_data.get(TOOL_PARAMETERS_KEY, {})
|
|
49
|
+
|
|
50
|
+
if parameters:
|
|
51
|
+
cls._validate_and_fix_parameters(parameters)
|
|
52
|
+
|
|
53
|
+
return cls(
|
|
54
|
+
name=function_data[TOOL_NAME_KEY],
|
|
55
|
+
description=function_data[TOOL_DESCRIPTION_KEY],
|
|
56
|
+
parameters=parameters,
|
|
57
|
+
strict=function_data.get(TOOL_STRICT_KEY, False),
|
|
58
|
+
type=tool[TOOL_TYPE_KEY],
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
@staticmethod
|
|
62
|
+
def _validate_and_fix_parameters(parameters: Dict[str, Any]) -> None:
|
|
63
|
+
"""Validate and fix parameters to ensure they meet OpenAI function calling
|
|
64
|
+
requirements."""
|
|
65
|
+
if not parameters:
|
|
66
|
+
return
|
|
67
|
+
|
|
68
|
+
# Ensure additionalProperties is set at the top level
|
|
69
|
+
if TOOL_ADDITIONAL_PROPERTIES_KEY not in parameters:
|
|
70
|
+
parameters[TOOL_ADDITIONAL_PROPERTIES_KEY] = False
|
|
71
|
+
|
|
72
|
+
# Ensure required is set at the top level
|
|
73
|
+
if TOOL_REQUIRED_KEY not in parameters:
|
|
74
|
+
parameters[TOOL_REQUIRED_KEY] = []
|
|
75
|
+
|
|
76
|
+
# Ensure all properties have types, required field and additionalProperties
|
|
77
|
+
if TOOL_PROPERTIES_KEY in parameters:
|
|
78
|
+
AgentToolSchema._ensure_property_types(parameters)
|
|
79
|
+
|
|
80
|
+
@staticmethod
|
|
81
|
+
def _ensure_property_types(parameters: Dict[str, Any]) -> None:
|
|
82
|
+
"""Ensure all properties in parameters have a type defined and
|
|
83
|
+
additionalProperties is set."""
|
|
84
|
+
properties = parameters[TOOL_PROPERTIES_KEY]
|
|
85
|
+
|
|
86
|
+
if not properties:
|
|
87
|
+
return
|
|
88
|
+
|
|
89
|
+
for _, prop_schema in properties.items():
|
|
90
|
+
if not isinstance(prop_schema, dict):
|
|
91
|
+
continue
|
|
92
|
+
|
|
93
|
+
# Ensure the property has a type
|
|
94
|
+
if TOOL_PROPERTY_TYPE_KEY not in prop_schema:
|
|
95
|
+
prop_schema[TOOL_PROPERTY_TYPE_KEY] = "string"
|
|
96
|
+
|
|
97
|
+
# If it's an object type, ensure additionalProperties and required
|
|
98
|
+
# fields are set
|
|
99
|
+
if prop_schema[TOOL_PROPERTY_TYPE_KEY] == "object":
|
|
100
|
+
if TOOL_ADDITIONAL_PROPERTIES_KEY not in prop_schema:
|
|
101
|
+
prop_schema[TOOL_ADDITIONAL_PROPERTIES_KEY] = False
|
|
102
|
+
|
|
103
|
+
# Ensure required key exists for object properties
|
|
104
|
+
if TOOL_REQUIRED_KEY not in prop_schema:
|
|
105
|
+
prop_schema[TOOL_REQUIRED_KEY] = []
|
|
106
|
+
|
|
107
|
+
def to_openai_json_format(self) -> Dict[str, Any]:
|
|
108
|
+
"""Convert AgentToolSchema to OpenAI format."""
|
|
109
|
+
# Ensure the schema is valid before conversion
|
|
110
|
+
return {
|
|
111
|
+
TOOL_TYPE_KEY: TOOL_TYPE_FUNCTION_KEY,
|
|
112
|
+
TOOL_TYPE_FUNCTION_KEY: self.model_dump(exclude={TOOL_TYPE_KEY}),
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class CustomToolSchema(BaseModel):
|
|
117
|
+
"""A class that represents the schema of a custom agent tool."""
|
|
118
|
+
|
|
119
|
+
tool_name: str
|
|
120
|
+
tool_definition: AgentToolSchema
|
|
121
|
+
tool_executor: Callable
|
|
122
|
+
|
|
123
|
+
@classmethod
|
|
124
|
+
def from_dict(cls, config: Dict[str, Any]) -> "CustomToolSchema":
|
|
125
|
+
"""Convert a custom tool config to CustomToolSchema."""
|
|
126
|
+
agent_tool_schema = AgentToolSchema.from_openai_json_format(config)
|
|
127
|
+
if TOOL_EXECUTOR_KEY not in config:
|
|
128
|
+
raise ValueError("Custom tool executor is required.")
|
|
129
|
+
|
|
130
|
+
return cls(
|
|
131
|
+
tool_name=agent_tool_schema.name,
|
|
132
|
+
tool_definition=agent_tool_schema,
|
|
133
|
+
tool_executor=config[TOOL_EXECUTOR_KEY],
|
|
134
|
+
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
You are a helpful assistant that should assist the user in the best possible way.
|
|
2
|
+
|
|
3
|
+
### Primary Task
|
|
4
|
+
{{ description }}
|
|
5
|
+
|
|
6
|
+
### Instructions
|
|
7
|
+
* Always make sure to output responses to the user in a clear, helpful format.
|
|
8
|
+
* Always avoid asking multiple questions at once. Ask questions sequentially one at a time and wait for the user's response before proceeding to next question.
|
|
9
|
+
* Always avoid making assumptions about what values to pass into tools. Ask for clarification if a user's request is ambiguous.
|
|
10
|
+
* Once your primary task, described above, is completed, you must call the `task_completed` tool to signal that you have finished assisting the user. Do not end the conversation or indicate completion without the `task_completed` tool call.
|
|
11
|
+
* Do NOT call the `task_completed` tool unless you're absolutely certain that your primary task (NOT the slot corrections, updates, etc), described above, is fully completed. Focus on the task given in the task description above.
|
|
12
|
+
* Strictly avoid making up information or ability to take some action which is not available in `tool` provided.
|
|
13
|
+
|
|
14
|
+
### Conversation history
|
|
15
|
+
{{ conversation_history }}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
You are a helpful assistant that should assist the user in the best possible way.
|
|
2
|
+
|
|
3
|
+
### Description of your capabilities
|
|
4
|
+
{{ description }}
|
|
5
|
+
|
|
6
|
+
### Task
|
|
7
|
+
* Use the tools available to gather the required information to set the following slots: {{ slot_names }}.
|
|
8
|
+
* In order to set the slot values, use the `set_slot_<slot_name>` tool.
|
|
9
|
+
|
|
10
|
+
### Instructions
|
|
11
|
+
* Always make sure to output responses to the user in a clear, helpful format.
|
|
12
|
+
* Always avoid asking multiple questions at once. Ask questions sequentially one at a time and wait for the user's response before proceeding to next question.
|
|
13
|
+
* Always avoid making assumptions about what values to pass into tools. Ask for clarification if a user's request is ambiguous.
|
|
14
|
+
* Strictly avoid making up information or ability to take some action which is not available in `tool` provided.
|
|
15
|
+
|
|
16
|
+
### Conversation history
|
|
17
|
+
{{ conversation_history }}
|
rasa/agents/utils.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from rasa.agents.agent_manager import AgentManager
|
|
4
|
+
from rasa.agents.exceptions import AgentNotFoundException
|
|
5
|
+
from rasa.core.available_agents import (
|
|
6
|
+
AgentConfig,
|
|
7
|
+
AgentMCPServerConfig,
|
|
8
|
+
AvailableAgents,
|
|
9
|
+
)
|
|
10
|
+
from rasa.core.available_endpoints import AvailableEndpoints
|
|
11
|
+
from rasa.shared.agents.utils import get_protocol_type
|
|
12
|
+
from rasa.shared.core.domain import Domain
|
|
13
|
+
from rasa.shared.core.flows import FlowsList
|
|
14
|
+
from rasa.shared.core.flows.steps import CallFlowStep
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def resolve_agent_config(
|
|
18
|
+
agent_config: AgentConfig,
|
|
19
|
+
available_endpoints: AvailableEndpoints,
|
|
20
|
+
) -> Optional[AgentConfig]:
|
|
21
|
+
if agent_config is None:
|
|
22
|
+
return None
|
|
23
|
+
|
|
24
|
+
connections = agent_config.connections
|
|
25
|
+
mcp_connections: List[AgentMCPServerConfig] = (
|
|
26
|
+
connections.mcp_servers
|
|
27
|
+
if connections and connections.mcp_servers is not None
|
|
28
|
+
else []
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
for mcp_server in mcp_connections:
|
|
32
|
+
for mcp_server_endpoint in available_endpoints.mcp_servers or []:
|
|
33
|
+
if mcp_server_endpoint.name == mcp_server.name:
|
|
34
|
+
mcp_server.url = mcp_server_endpoint.url
|
|
35
|
+
mcp_server.type = mcp_server_endpoint.type
|
|
36
|
+
|
|
37
|
+
return agent_config
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
async def initialize_agents(
|
|
41
|
+
flows: FlowsList,
|
|
42
|
+
domain: Domain,
|
|
43
|
+
sub_agents: AvailableAgents,
|
|
44
|
+
) -> None:
|
|
45
|
+
"""Iterate over flows and create/connect the referenced agents."""
|
|
46
|
+
agent_manager: AgentManager = AgentManager()
|
|
47
|
+
endpoints = AvailableEndpoints.get_instance()
|
|
48
|
+
|
|
49
|
+
for flow in flows.underlying_flows:
|
|
50
|
+
for step in flow.steps:
|
|
51
|
+
if isinstance(step, CallFlowStep):
|
|
52
|
+
if flows.flow_by_id(step.call) is not None:
|
|
53
|
+
continue
|
|
54
|
+
|
|
55
|
+
if step.is_calling_mcp_tool():
|
|
56
|
+
# The call step is calling an MCP tool, so we don't need to
|
|
57
|
+
# initialize any agent.
|
|
58
|
+
continue
|
|
59
|
+
|
|
60
|
+
if not step.is_calling_agent():
|
|
61
|
+
raise AgentNotFoundException(step.call)
|
|
62
|
+
|
|
63
|
+
agent_name = step.call
|
|
64
|
+
agent_config = sub_agents.get_agent_config(agent_name)
|
|
65
|
+
resolved_agent_config = resolve_agent_config(agent_config, endpoints)
|
|
66
|
+
protocol_type = get_protocol_type(step, agent_config)
|
|
67
|
+
|
|
68
|
+
await agent_manager.connect_agent(
|
|
69
|
+
agent_name,
|
|
70
|
+
protocol_type,
|
|
71
|
+
resolved_agent_config,
|
|
72
|
+
)
|
rasa/api.py
CHANGED
|
@@ -20,6 +20,7 @@ if TYPE_CHECKING:
|
|
|
20
20
|
def run(
|
|
21
21
|
model: Text,
|
|
22
22
|
endpoints: Text,
|
|
23
|
+
sub_agents: Text,
|
|
23
24
|
connector: Optional[Text] = None,
|
|
24
25
|
credentials: Optional[Text] = None,
|
|
25
26
|
**kwargs: Dict[Text, Any],
|
|
@@ -29,6 +30,7 @@ def run(
|
|
|
29
30
|
Args:
|
|
30
31
|
model: Path to model archive.
|
|
31
32
|
endpoints: Path to endpoints file.
|
|
33
|
+
sub_agents: Path to sub-agents directory.
|
|
32
34
|
connector: Connector which should be use (overwrites `credentials`
|
|
33
35
|
field).
|
|
34
36
|
credentials: Path to channel credentials file.
|
|
@@ -38,11 +40,13 @@ def run(
|
|
|
38
40
|
"""
|
|
39
41
|
import rasa.core.run
|
|
40
42
|
import rasa.shared.utils.common
|
|
43
|
+
from rasa.core.available_agents import AvailableAgents
|
|
41
44
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
42
45
|
from rasa.shared.constants import DOCS_BASE_URL
|
|
43
46
|
from rasa.shared.utils.cli import print_warning
|
|
44
47
|
|
|
45
48
|
_endpoints = AvailableEndpoints.get_instance(endpoints)
|
|
49
|
+
_sub_agents = AvailableAgents.get_instance(sub_agents)
|
|
46
50
|
|
|
47
51
|
if not connector and not credentials:
|
|
48
52
|
connector = "rest"
|
|
@@ -61,6 +65,7 @@ def run(
|
|
|
61
65
|
channel=connector,
|
|
62
66
|
credentials=credentials,
|
|
63
67
|
endpoints=_endpoints,
|
|
68
|
+
sub_agents=_sub_agents,
|
|
64
69
|
**kwargs,
|
|
65
70
|
)
|
|
66
71
|
|
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import List, Optional, Text, Union
|
|
5
5
|
|
|
6
|
+
from rasa.core.constants import DEFAULT_SUB_AGENTS
|
|
6
7
|
from rasa.core.persistor import RemoteStorageType, StorageType, parse_remote_storage
|
|
7
8
|
from rasa.shared.constants import (
|
|
8
9
|
DEFAULT_CONFIG_PATH,
|
|
@@ -217,3 +218,14 @@ def add_skip_validation_flag(
|
|
|
217
218
|
action="append",
|
|
218
219
|
help="Skip YAML validation for selected parts of the training data.",
|
|
219
220
|
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def add_sub_agents_param(
|
|
224
|
+
parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
|
|
225
|
+
) -> None:
|
|
226
|
+
parser.add_argument(
|
|
227
|
+
"--sub-agents",
|
|
228
|
+
type=str,
|
|
229
|
+
default=DEFAULT_SUB_AGENTS,
|
|
230
|
+
help="Directory that specifies sub-agents to use (default: %(default)s).",
|
|
231
|
+
)
|
rasa/cli/arguments/run.py
CHANGED
|
@@ -7,6 +7,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
7
7
|
add_model_param,
|
|
8
8
|
add_remote_storage_param,
|
|
9
9
|
add_skip_validation_flag,
|
|
10
|
+
add_sub_agents_param,
|
|
10
11
|
)
|
|
11
12
|
from rasa.core import constants
|
|
12
13
|
from rasa.env import (
|
|
@@ -24,6 +25,7 @@ def set_run_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
24
25
|
add_server_arguments(parser)
|
|
25
26
|
add_inspect_argument(parser)
|
|
26
27
|
add_skip_validation_flag(parser)
|
|
28
|
+
add_sub_agents_param(parser)
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
def set_run_action_arguments(parser: argparse.ArgumentParser) -> None:
|
|
@@ -14,6 +14,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
14
14
|
add_endpoint_param,
|
|
15
15
|
add_model_param,
|
|
16
16
|
add_remote_storage_param,
|
|
17
|
+
add_sub_agents_param,
|
|
17
18
|
)
|
|
18
19
|
from rasa.core.agent import Agent
|
|
19
20
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
@@ -174,6 +175,8 @@ def add_du_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
174
175
|
),
|
|
175
176
|
)
|
|
176
177
|
|
|
178
|
+
add_sub_agents_param(du_arguments)
|
|
179
|
+
|
|
177
180
|
|
|
178
181
|
def ensure_calm_only_bot(agent: Agent) -> None:
|
|
179
182
|
if agent.domain is None or agent.processor is None:
|
|
@@ -218,6 +221,7 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
|
|
|
218
221
|
model_path=args.model,
|
|
219
222
|
model_server=endpoints.model,
|
|
220
223
|
remote_storage=args.remote_storage,
|
|
224
|
+
sub_agents_path=args.sub_agents,
|
|
221
225
|
)
|
|
222
226
|
except AgentNotReady as error:
|
|
223
227
|
structlogger.error(
|
rasa/cli/e2e_test.py
CHANGED
|
@@ -17,6 +17,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
17
17
|
add_endpoint_param,
|
|
18
18
|
add_model_param,
|
|
19
19
|
add_remote_storage_param,
|
|
20
|
+
add_sub_agents_param,
|
|
20
21
|
)
|
|
21
22
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
22
23
|
from rasa.core.exceptions import AgentNotReady
|
|
@@ -147,6 +148,8 @@ def add_e2e_test_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
147
148
|
help="Directory where to save coverage report to.",
|
|
148
149
|
)
|
|
149
150
|
|
|
151
|
+
add_sub_agents_param(parser)
|
|
152
|
+
|
|
150
153
|
|
|
151
154
|
def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
152
155
|
"""Run the end-to-end tests.
|
|
@@ -192,6 +195,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
|
|
|
192
195
|
model_server=endpoints.model,
|
|
193
196
|
endpoints=endpoints,
|
|
194
197
|
test_case_path=Path(test_case_path),
|
|
198
|
+
sub_agents_path=args.sub_agents,
|
|
195
199
|
)
|
|
196
200
|
except AgentNotReady as error:
|
|
197
201
|
structlogger.error(
|
rasa/cli/inspect.py
CHANGED
|
@@ -8,6 +8,7 @@ from sanic import Sanic
|
|
|
8
8
|
from rasa import telemetry
|
|
9
9
|
from rasa.cli import SubParsersAction
|
|
10
10
|
from rasa.cli.arguments import shell as arguments
|
|
11
|
+
from rasa.cli.arguments.default_arguments import add_sub_agents_param
|
|
11
12
|
from rasa.core import constants
|
|
12
13
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
13
14
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
@@ -44,6 +45,8 @@ def add_subparser(
|
|
|
44
45
|
"--voice", help="Enable voice", action="store_true", default=False
|
|
45
46
|
)
|
|
46
47
|
|
|
48
|
+
add_sub_agents_param(inspect_parser)
|
|
49
|
+
|
|
47
50
|
# it'd be confusing to expose those arguments to the user,
|
|
48
51
|
# so we remove them
|
|
49
52
|
remove_argument_from_parser(inspect_parser, "--credentials")
|
rasa/cli/llm_fine_tuning.py
CHANGED
|
@@ -14,6 +14,7 @@ from rasa.cli.arguments.default_arguments import (
|
|
|
14
14
|
add_endpoint_param,
|
|
15
15
|
add_model_param,
|
|
16
16
|
add_remote_storage_param,
|
|
17
|
+
add_sub_agents_param,
|
|
17
18
|
)
|
|
18
19
|
from rasa.cli.e2e_test import (
|
|
19
20
|
RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
|
|
@@ -137,6 +138,8 @@ def add_data_preparation_arguments(parser: argparse.ArgumentParser) -> None:
|
|
|
137
138
|
default=DEFAULT_INPUT_E2E_TEST_PATH,
|
|
138
139
|
)
|
|
139
140
|
|
|
141
|
+
add_sub_agents_param(parser)
|
|
142
|
+
|
|
140
143
|
add_remote_storage_param(parser)
|
|
141
144
|
|
|
142
145
|
rephrasing_arguments = parser.add_argument_group("Rephrasing Module")
|
|
@@ -376,6 +379,7 @@ def write_params(
|
|
|
376
379
|
"rephrase_config": rephrase_config,
|
|
377
380
|
"model": args.model,
|
|
378
381
|
"endpoints": args.endpoints,
|
|
382
|
+
"sub-agents": args.sub_agents,
|
|
379
383
|
"remote-storage": args.remote_storage,
|
|
380
384
|
"train_frac": args.train_frac,
|
|
381
385
|
"output_format": args.output_format,
|
|
@@ -420,6 +424,7 @@ def set_up_e2e_test_runner(args: argparse.Namespace) -> E2ETestRunner:
|
|
|
420
424
|
model_path=args.model,
|
|
421
425
|
model_server=endpoints.model,
|
|
422
426
|
endpoints=endpoints,
|
|
427
|
+
sub_agents_path=args.sub_agents,
|
|
423
428
|
)
|
|
424
429
|
except AgentNotReady as error:
|
|
425
430
|
structlogger.error(
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
recipe: default.v1
|
|
2
2
|
language: en
|
|
3
|
-
assistant_id: placeholder_default
|
|
4
3
|
pipeline:
|
|
5
4
|
- name: CompactLLMCommandGenerator
|
|
6
5
|
llm:
|
|
@@ -10,4 +9,4 @@ pipeline:
|
|
|
10
9
|
|
|
11
10
|
policies:
|
|
12
11
|
- name: FlowPolicy
|
|
13
|
-
# - name: EnterpriseSearchPolicy
|
|
12
|
+
# - name: EnterpriseSearchPolicy
|
rasa/cli/run.py
CHANGED
|
@@ -109,6 +109,7 @@ def run(args: argparse.Namespace) -> None:
|
|
|
109
109
|
# configured
|
|
110
110
|
|
|
111
111
|
import rasa.model
|
|
112
|
+
from rasa.core.available_agents import AvailableAgents
|
|
112
113
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
113
114
|
|
|
114
115
|
# start server if remote storage is configured
|
|
@@ -123,6 +124,9 @@ def run(args: argparse.Namespace) -> None:
|
|
|
123
124
|
rasa_run(**vars(args))
|
|
124
125
|
return
|
|
125
126
|
|
|
127
|
+
# load sub-agents
|
|
128
|
+
AvailableAgents.get_instance(args.sub_agents)
|
|
129
|
+
|
|
126
130
|
# start server if local model found
|
|
127
131
|
args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
128
132
|
local_model_set = True
|
rasa/cli/scaffold.py
CHANGED
|
@@ -5,9 +5,6 @@ from collections import defaultdict
|
|
|
5
5
|
from enum import Enum
|
|
6
6
|
from typing import List, Text
|
|
7
7
|
|
|
8
|
-
import randomname
|
|
9
|
-
import structlog
|
|
10
|
-
|
|
11
8
|
from rasa import telemetry
|
|
12
9
|
from rasa.api import train
|
|
13
10
|
from rasa.cli import SubParsersAction
|
|
@@ -19,38 +16,21 @@ from rasa.shared.constants import (
|
|
|
19
16
|
DEFAULT_MODELS_PATH,
|
|
20
17
|
DOCS_BASE_URL,
|
|
21
18
|
)
|
|
22
|
-
from rasa.shared.utils import yaml
|
|
23
19
|
from rasa.shared.utils.cli import print_error_and_exit, print_success
|
|
24
20
|
|
|
25
|
-
structlogger = structlog.get_logger(__name__)
|
|
26
|
-
|
|
27
21
|
|
|
28
22
|
class ProjectTemplateName(Enum):
|
|
29
23
|
"""Enum of CALM project templates."""
|
|
30
24
|
|
|
31
25
|
DEFAULT = "default"
|
|
32
26
|
TUTORIAL = "tutorial"
|
|
33
|
-
BASIC = "basic"
|
|
34
|
-
FINANCE = "finance"
|
|
35
|
-
TELCO = "telco"
|
|
36
27
|
|
|
37
28
|
def __str__(self) -> str:
|
|
38
29
|
return self.value
|
|
39
30
|
|
|
40
|
-
@classmethod
|
|
41
|
-
def get_all_values(cls) -> List[str]:
|
|
42
|
-
return [name.value for name in cls]
|
|
43
|
-
|
|
44
|
-
@classmethod
|
|
45
|
-
def supported_values(cls) -> str:
|
|
46
|
-
return ", ".join(cls.get_all_values())
|
|
47
|
-
|
|
48
31
|
|
|
49
32
|
template_domain_path = defaultdict(lambda: DEFAULT_DOMAIN_PATH)
|
|
50
33
|
template_domain_path[ProjectTemplateName.DEFAULT] = "domain"
|
|
51
|
-
template_domain_path[ProjectTemplateName.BASIC] = "domain"
|
|
52
|
-
template_domain_path[ProjectTemplateName.FINANCE] = "domain"
|
|
53
|
-
template_domain_path[ProjectTemplateName.TELCO] = "domain"
|
|
54
34
|
|
|
55
35
|
|
|
56
36
|
def add_subparser(
|
|
@@ -179,33 +159,9 @@ def create_initial_project(
|
|
|
179
159
|
path: Text, template: ProjectTemplateName = ProjectTemplateName.DEFAULT
|
|
180
160
|
) -> None:
|
|
181
161
|
"""Creates directory structure and templates for initial project."""
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
# clear the cache of the copy_tree function, this avoids issues if
|
|
185
|
-
# a project directory existed before and we removed folders in it
|
|
186
|
-
# with shutil.rmtree. see
|
|
187
|
-
# https://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree
|
|
188
|
-
if hasattr(dir_util, "_path_created"):
|
|
189
|
-
dir_util._path_created.clear()
|
|
190
|
-
else:
|
|
191
|
-
dir_util.SkipRepeatAbsolutePaths.clear() # type: ignore[attr-defined]
|
|
192
|
-
dir_util.copy_tree(scaffold_path(template), path)
|
|
162
|
+
from distutils.dir_util import copy_tree
|
|
193
163
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
def create_random_assistant_id(path: Text) -> None:
|
|
198
|
-
"""Create a random assistant id."""
|
|
199
|
-
assistant_id = f"{randomname.get_name()}"
|
|
200
|
-
config = yaml.read_yaml_file(os.path.join(path, "config.yml"))
|
|
201
|
-
|
|
202
|
-
if isinstance(config, dict):
|
|
203
|
-
config["assistant_id"] = assistant_id
|
|
204
|
-
yaml.write_yaml(config, os.path.join(path, "config.yml"))
|
|
205
|
-
else:
|
|
206
|
-
structlogger.warning(
|
|
207
|
-
"cli.scaffold.create_random_assistant_id.invalid_config", config=config
|
|
208
|
-
)
|
|
164
|
+
copy_tree(scaffold_path(template), path)
|
|
209
165
|
|
|
210
166
|
|
|
211
167
|
def scaffold_path(template: ProjectTemplateName) -> Text:
|
rasa/cli/shell.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import List
|
|
|
6
6
|
from rasa import telemetry
|
|
7
7
|
from rasa.cli import SubParsersAction
|
|
8
8
|
from rasa.cli.arguments import shell as arguments
|
|
9
|
+
from rasa.cli.arguments.default_arguments import add_sub_agents_param
|
|
9
10
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
10
11
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
11
12
|
from rasa.exceptions import ModelNotFound
|
|
@@ -45,6 +46,8 @@ def add_subparser(
|
|
|
45
46
|
help="Set the conversation ID.",
|
|
46
47
|
)
|
|
47
48
|
|
|
49
|
+
add_sub_agents_param(shell_parser)
|
|
50
|
+
|
|
48
51
|
run_subparsers = shell_parser.add_subparsers()
|
|
49
52
|
|
|
50
53
|
shell_nlu_subparser = run_subparsers.add_parser(
|
rasa/constants.py
CHANGED
|
@@ -22,8 +22,14 @@ MINIMUM_COMPATIBLE_VERSION = "3.11.0rc1"
|
|
|
22
22
|
|
|
23
23
|
GLOBAL_USER_CONFIG_PATH = os.path.expanduser("~/.config/rasa/global.yml")
|
|
24
24
|
|
|
25
|
+
# Logging level for external libraries (default: ERROR to reduce noise)
|
|
25
26
|
DEFAULT_LOG_LEVEL_LIBRARIES = "ERROR"
|
|
26
27
|
ENV_LOG_LEVEL_LIBRARIES = "LOG_LEVEL_LIBRARIES"
|
|
28
|
+
|
|
29
|
+
# MCP (Model Context Protocol) logging configuration
|
|
30
|
+
ENV_LOG_LEVEL_MCP = "LOG_LEVEL_MCP"
|
|
31
|
+
ENV_MCP_LOGGING_ENABLED = "MCP_LOGGING_ENABLED"
|
|
32
|
+
|
|
27
33
|
ENV_LOG_LEVEL_MATPLOTLIB = "LOG_LEVEL_MATPLOTLIB"
|
|
28
34
|
ENV_LOG_LEVEL_RABBITMQ = "LOG_LEVEL_RABBITMQ"
|
|
29
35
|
ENV_LOG_LEVEL_KAFKA = "LOG_LEVEL_KAFKA"
|