rasa-pro 3.12.0.dev1__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 +41 -0
- rasa/__init__.py +9 -0
- rasa/__main__.py +177 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +160 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +106 -0
- rasa/cli/arguments/default_arguments.py +207 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +219 -0
- rasa/cli/arguments/shell.py +17 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +279 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +354 -0
- rasa/cli/dialogue_understanding_test.py +251 -0
- rasa/cli/e2e_test.py +259 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +75 -0
- rasa/cli/interactive.py +166 -0
- rasa/cli/license.py +65 -0
- rasa/cli/llm_fine_tuning.py +403 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +10 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +58 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions/__init__.py +0 -0
- rasa/cli/project_templates/tutorial/actions/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +12 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +11 -0
- rasa/cli/project_templates/tutorial/domain.yml +35 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +55 -0
- rasa/cli/run.py +143 -0
- rasa/cli/scaffold.py +273 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +296 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +62 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +278 -0
- rasa/cli/utils.py +484 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +45 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1318 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_hangup.py +29 -0
- rasa/core/actions/action_repeat_bot_messages.py +89 -0
- rasa/core/actions/action_run_slot_rejections.py +210 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +191 -0
- rasa/core/actions/direct_custom_actions_executor.py +109 -0
- rasa/core/actions/e2e_stub_custom_action_executor.py +72 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +145 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +559 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +324 -0
- rasa/core/brokers/pika.py +388 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +61 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +456 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +197 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-861ddd57.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-921f02db.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-b436c4f8.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-511a23cb.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-ef476ecd.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-f1878e0a.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-fac75185.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-201c5bbc.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-f904ae41.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-1813da66.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-872af172.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-34a0af5a.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-42ba3e3d.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-37817b51.js +1317 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-6b731386.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-e8579ac6.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-89e6403a.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-dc73d3fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-f5b1d2bc.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-82cb74fa.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-bdf5f29b.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-c7a0cbe4.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-7ec5410f.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-caee5554.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-2935f8db.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-8f5d9693.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-d565d1de.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-75ad421d.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-7e764226.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-7a4e0e61.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-4019d1bf.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-01ea12df.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-89407137.js +7 -0
- rasa/core/channels/inspector/dist/index.html +42 -0
- rasa/core/channels/inspector/index.html +40 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +52 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +220 -0
- rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +108 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +136 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +22 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/audiostream.ts +191 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +392 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +306 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +127 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +84 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6249 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +230 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +302 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/voice_ready/__init__.py +0 -0
- rasa/core/channels/voice_ready/audiocodes.py +501 -0
- rasa/core/channels/voice_ready/jambonz.py +121 -0
- rasa/core/channels/voice_ready/jambonz_protocol.py +396 -0
- rasa/core/channels/voice_ready/twilio_voice.py +403 -0
- rasa/core/channels/voice_ready/utils.py +37 -0
- rasa/core/channels/voice_stream/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/__init__.py +0 -0
- rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
- rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
- rasa/core/channels/voice_stream/asr/azure.py +130 -0
- rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
- rasa/core/channels/voice_stream/audio_bytes.py +8 -0
- rasa/core/channels/voice_stream/browser_audio.py +107 -0
- rasa/core/channels/voice_stream/call_state.py +23 -0
- rasa/core/channels/voice_stream/tts/__init__.py +0 -0
- rasa/core/channels/voice_stream/tts/azure.py +106 -0
- rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
- rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
- rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
- rasa/core/channels/voice_stream/util.py +57 -0
- rasa/core/channels/voice_stream/voice_channel.py +427 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +112 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +124 -0
- rasa/core/information_retrieval/information_retrieval.py +137 -0
- rasa/core/information_retrieval/milvus.py +59 -0
- rasa/core/information_retrieval/qdrant.py +96 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +320 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +70 -0
- rasa/core/persistor.py +538 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +905 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +754 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +1031 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1465 -0
- rasa/core/run.py +342 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +36 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +241 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +584 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1703 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1744 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +366 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +327 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +61 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
- rasa/dialogue_understanding/commands/restart_command.py +58 -0
- rasa/dialogue_understanding/commands/session_end_command.py +61 -0
- rasa/dialogue_understanding/commands/session_start_command.py +59 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
- rasa/dialogue_understanding/commands/utils.py +45 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +464 -0
- rasa/dialogue_understanding/generator/constants.py +27 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +466 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +500 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +920 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +261 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +60 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +486 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +301 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/repeat.py +37 -0
- rasa/dialogue_understanding/patterns/restart.py +37 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/session_start.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/patterns/user_silence.py +37 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +720 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +43 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/dialogue_understanding/utils.py +14 -0
- rasa/dialogue_understanding_test/__init__.py +0 -0
- rasa/dialogue_understanding_test/command_metric_calculation.py +12 -0
- rasa/dialogue_understanding_test/constants.py +17 -0
- rasa/dialogue_understanding_test/du_test_case.py +118 -0
- rasa/dialogue_understanding_test/du_test_result.py +11 -0
- rasa/dialogue_understanding_test/du_test_runner.py +93 -0
- rasa/dialogue_understanding_test/io.py +54 -0
- rasa/dialogue_understanding_test/validation.py +22 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/aggregate_test_stats_calculator.py +134 -0
- rasa/e2e_test/assertions.py +1345 -0
- rasa/e2e_test/assertions_schema.yml +129 -0
- rasa/e2e_test/constants.py +31 -0
- rasa/e2e_test/e2e_config.py +220 -0
- rasa/e2e_test/e2e_config_schema.yml +26 -0
- rasa/e2e_test/e2e_test_case.py +569 -0
- rasa/e2e_test/e2e_test_converter.py +363 -0
- rasa/e2e_test/e2e_test_converter_prompt.jinja2 +70 -0
- rasa/e2e_test/e2e_test_coverage_report.py +364 -0
- rasa/e2e_test/e2e_test_result.py +54 -0
- rasa/e2e_test/e2e_test_runner.py +1192 -0
- rasa/e2e_test/e2e_test_schema.yml +181 -0
- rasa/e2e_test/pykwalify_extensions.py +39 -0
- rasa/e2e_test/stub_custom_action.py +70 -0
- rasa/e2e_test/utils/__init__.py +0 -0
- rasa/e2e_test/utils/e2e_yaml_utils.py +55 -0
- rasa/e2e_test/utils/io.py +598 -0
- rasa/e2e_test/utils/validation.py +178 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +642 -0
- rasa/engine/loader.py +48 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +41 -0
- rasa/engine/recipes/default_components.py +97 -0
- rasa/engine/recipes/default_recipe.py +1272 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +244 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +199 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +1451 -0
- rasa/env.py +14 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +96 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +111 -0
- rasa/jupyter.py +63 -0
- rasa/llm_fine_tuning/__init__.py +0 -0
- rasa/llm_fine_tuning/annotation_module.py +241 -0
- rasa/llm_fine_tuning/conversations.py +144 -0
- rasa/llm_fine_tuning/llm_data_preparation_module.py +178 -0
- rasa/llm_fine_tuning/paraphrasing/__init__.py +0 -0
- rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +281 -0
- rasa/llm_fine_tuning/paraphrasing/default_rephrase_prompt_template.jina2 +44 -0
- rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +121 -0
- rasa/llm_fine_tuning/paraphrasing/rephrased_user_message.py +10 -0
- rasa/llm_fine_tuning/paraphrasing_module.py +128 -0
- rasa/llm_fine_tuning/storage.py +174 -0
- rasa/llm_fine_tuning/train_test_split_module.py +441 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_manager/__init__.py +0 -0
- rasa/model_manager/config.py +40 -0
- rasa/model_manager/model_api.py +559 -0
- rasa/model_manager/runner_service.py +286 -0
- rasa/model_manager/socket_bridge.py +146 -0
- rasa/model_manager/studio_jwt_auth.py +86 -0
- rasa/model_manager/trainer_service.py +325 -0
- rasa/model_manager/utils.py +87 -0
- rasa/model_manager/warm_rasa_process.py +187 -0
- rasa/model_service.py +112 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +596 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +95 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1588 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +311 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +180 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2172 -0
- rasa/shared/core/events.py +2559 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +562 -0
- rasa/shared/core/flows/flow_path.py +84 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +258 -0
- rasa/shared/core/flows/flows_yaml_schema.json +303 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/utils.py +39 -0
- rasa/shared/core/flows/validation.py +735 -0
- rasa/shared/core/flows/yaml_flows_io.py +405 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +654 -0
- rasa/shared/core/trackers.py +1183 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +858 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +167 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +770 -0
- rasa/shared/importers/multi_project.py +215 -0
- rasa/shared/importers/rasa.py +108 -0
- rasa/shared/importers/remote_importer.py +196 -0
- rasa/shared/importers/utils.py +36 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +53 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +618 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +729 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/_configs/__init__.py +0 -0
- rasa/shared/providers/_configs/azure_openai_client_config.py +677 -0
- rasa/shared/providers/_configs/client_config.py +59 -0
- rasa/shared/providers/_configs/default_litellm_client_config.py +132 -0
- rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +236 -0
- rasa/shared/providers/_configs/litellm_router_client_config.py +222 -0
- rasa/shared/providers/_configs/model_group_config.py +173 -0
- rasa/shared/providers/_configs/openai_client_config.py +177 -0
- rasa/shared/providers/_configs/rasa_llm_client_config.py +75 -0
- rasa/shared/providers/_configs/self_hosted_llm_client_config.py +178 -0
- rasa/shared/providers/_configs/utils.py +117 -0
- rasa/shared/providers/_ssl_verification_utils.py +124 -0
- rasa/shared/providers/_utils.py +79 -0
- rasa/shared/providers/constants.py +7 -0
- rasa/shared/providers/embedding/__init__.py +0 -0
- rasa/shared/providers/embedding/_base_litellm_embedding_client.py +243 -0
- rasa/shared/providers/embedding/_langchain_embedding_client_adapter.py +74 -0
- rasa/shared/providers/embedding/azure_openai_embedding_client.py +335 -0
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +126 -0
- rasa/shared/providers/embedding/embedding_client.py +90 -0
- rasa/shared/providers/embedding/embedding_response.py +41 -0
- rasa/shared/providers/embedding/huggingface_local_embedding_client.py +191 -0
- rasa/shared/providers/embedding/litellm_router_embedding_client.py +138 -0
- rasa/shared/providers/embedding/openai_embedding_client.py +172 -0
- rasa/shared/providers/llm/__init__.py +0 -0
- rasa/shared/providers/llm/_base_litellm_client.py +265 -0
- rasa/shared/providers/llm/azure_openai_llm_client.py +415 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +110 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +202 -0
- rasa/shared/providers/llm/llm_client.py +78 -0
- rasa/shared/providers/llm/llm_response.py +50 -0
- rasa/shared/providers/llm/openai_llm_client.py +161 -0
- rasa/shared/providers/llm/rasa_llm_client.py +120 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +276 -0
- rasa/shared/providers/mappings.py +94 -0
- rasa/shared/providers/router/__init__.py +0 -0
- rasa/shared/providers/router/_base_litellm_router_client.py +185 -0
- rasa/shared/providers/router/router_client.py +75 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +102 -0
- rasa/shared/utils/common.py +324 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/health_check/__init__.py +0 -0
- rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
- rasa/shared/utils/health_check/health_check.py +258 -0
- rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
- rasa/shared/utils/io.py +499 -0
- rasa/shared/utils/llm.py +764 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +214 -0
- rasa/shared/utils/schemas/model_config.yml +36 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +1068 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +270 -0
- rasa/studio/config.py +136 -0
- rasa/studio/constants.py +19 -0
- rasa/studio/data_handler.py +368 -0
- rasa/studio/download.py +489 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +134 -0
- rasa/studio/upload.py +563 -0
- rasa/telemetry.py +1876 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +355 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +765 -0
- rasa/tracing/instrumentation/instrumentation.py +1306 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +639 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +331 -0
- rasa/utils/io.py +252 -0
- rasa/utils/json_utils.py +60 -0
- rasa/utils/licensing.py +542 -0
- rasa/utils/log_utils.py +181 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +147 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/sanic_error_handler.py +32 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1644 -0
- rasa/version.py +3 -0
- rasa_pro-3.12.0.dev1.dist-info/METADATA +199 -0
- rasa_pro-3.12.0.dev1.dist-info/NOTICE +5 -0
- rasa_pro-3.12.0.dev1.dist-info/RECORD +790 -0
- rasa_pro-3.12.0.dev1.dist-info/WHEEL +4 -0
- rasa_pro-3.12.0.dev1.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Any, Dict, List, Optional
|
|
3
|
+
|
|
4
|
+
import structlog
|
|
5
|
+
|
|
6
|
+
from rasa.shared.constants import (
|
|
7
|
+
API_BASE_CONFIG_KEY,
|
|
8
|
+
API_KEY,
|
|
9
|
+
API_VERSION_CONFIG_KEY,
|
|
10
|
+
AZURE_API_BASE_ENV_VAR,
|
|
11
|
+
AZURE_API_KEY_ENV_VAR,
|
|
12
|
+
AZURE_API_TYPE_ENV_VAR,
|
|
13
|
+
AZURE_API_VERSION_ENV_VAR,
|
|
14
|
+
AZURE_OPENAI_PROVIDER,
|
|
15
|
+
OPENAI_API_BASE_ENV_VAR,
|
|
16
|
+
OPENAI_API_KEY_ENV_VAR,
|
|
17
|
+
OPENAI_API_TYPE_ENV_VAR,
|
|
18
|
+
OPENAI_API_VERSION_ENV_VAR,
|
|
19
|
+
)
|
|
20
|
+
from rasa.shared.exceptions import ProviderClientValidationError
|
|
21
|
+
from rasa.shared.providers._configs.azure_openai_client_config import (
|
|
22
|
+
AzureOAuthConfig,
|
|
23
|
+
AzureOpenAIClientConfig,
|
|
24
|
+
)
|
|
25
|
+
from rasa.shared.providers.constants import (
|
|
26
|
+
DEFAULT_AZURE_API_KEY_NAME,
|
|
27
|
+
LITE_LLM_API_KEY_FIELD,
|
|
28
|
+
LITE_LLM_AZURE_AD_TOKEN,
|
|
29
|
+
LITE_LLM_AZURE_AD_TOKEN_PROVIDER,
|
|
30
|
+
)
|
|
31
|
+
from rasa.shared.providers.embedding._base_litellm_embedding_client import (
|
|
32
|
+
_BaseLiteLLMEmbeddingClient,
|
|
33
|
+
)
|
|
34
|
+
from rasa.shared.utils.io import raise_deprecation_warning
|
|
35
|
+
|
|
36
|
+
structlogger = structlog.get_logger()
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class AzureOpenAIEmbeddingClient(_BaseLiteLLMEmbeddingClient):
|
|
40
|
+
"""A client for interfacing with Azure's OpenAI embedding deployments.
|
|
41
|
+
|
|
42
|
+
Parameters:
|
|
43
|
+
deployment (str): The deployment name.
|
|
44
|
+
model (Optional[str]): The embedding model name.
|
|
45
|
+
api_base (Optional[str]): The base URL for the API endpoints.
|
|
46
|
+
If not provided, it will be set via environment variable.
|
|
47
|
+
api_type (Optional[str]): The type of the API to use.
|
|
48
|
+
If not provided, it will be set via environment variable.
|
|
49
|
+
api_version (Optional[str]): The version of the API to use.
|
|
50
|
+
If not provided, it will be set via environment variable.
|
|
51
|
+
oauth (Optional[AzureOAuthConfig]): Optional OAuth configuration. If provided,
|
|
52
|
+
the client will use OAuth for authentication.
|
|
53
|
+
kwargs (Optional[Dict[str, Any]]): Optional configuration parameters specific
|
|
54
|
+
to the embedding model deployment.
|
|
55
|
+
|
|
56
|
+
Raises:
|
|
57
|
+
ProviderClientValidationError: If validation of the client setup fails.
|
|
58
|
+
DeprecationWarning: If deprecated environment variables are used for
|
|
59
|
+
configuration.
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
def __init__(
|
|
63
|
+
self,
|
|
64
|
+
deployment: str,
|
|
65
|
+
model: Optional[str] = None,
|
|
66
|
+
api_base: Optional[str] = None,
|
|
67
|
+
api_type: Optional[str] = None,
|
|
68
|
+
api_version: Optional[str] = None,
|
|
69
|
+
oauth: Optional[AzureOAuthConfig] = None,
|
|
70
|
+
**kwargs: Any,
|
|
71
|
+
):
|
|
72
|
+
super().__init__() # type: ignore
|
|
73
|
+
self._deployment = deployment
|
|
74
|
+
self._model = model
|
|
75
|
+
self._extra_parameters = kwargs or {}
|
|
76
|
+
|
|
77
|
+
# Set api_base with the following priority:
|
|
78
|
+
# parameter -> Azure Env Var -> (deprecated) OpenAI Env Var
|
|
79
|
+
self._api_base = (
|
|
80
|
+
api_base
|
|
81
|
+
or os.environ.get(AZURE_API_BASE_ENV_VAR)
|
|
82
|
+
or os.environ.get(OPENAI_API_BASE_ENV_VAR)
|
|
83
|
+
)
|
|
84
|
+
self._api_type = (
|
|
85
|
+
api_type
|
|
86
|
+
or os.environ.get(AZURE_API_TYPE_ENV_VAR)
|
|
87
|
+
or os.environ.get(OPENAI_API_TYPE_ENV_VAR)
|
|
88
|
+
)
|
|
89
|
+
self._api_version = (
|
|
90
|
+
api_version
|
|
91
|
+
or os.environ.get(AZURE_API_VERSION_ENV_VAR)
|
|
92
|
+
or os.environ.get(OPENAI_API_VERSION_ENV_VAR)
|
|
93
|
+
)
|
|
94
|
+
# Litellm does not support use of OPENAI_API_KEY, so we need to map it
|
|
95
|
+
# because of backward compatibility. However, we're first looking at
|
|
96
|
+
# AZURE_API_KEY.
|
|
97
|
+
|
|
98
|
+
self._oauth = oauth
|
|
99
|
+
self._api_key_env_var = (
|
|
100
|
+
self._resolve_api_key_env_var() if not self._oauth else None
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
self.validate_client_setup()
|
|
104
|
+
|
|
105
|
+
def _resolve_api_key_env_var(self) -> str:
|
|
106
|
+
"""Resolves the environment variable to use for the API key.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
str: The env variable in dollar syntax format to use for the API key.
|
|
110
|
+
"""
|
|
111
|
+
if API_KEY in self._extra_parameters:
|
|
112
|
+
# API key is set to an env var in the config itself
|
|
113
|
+
# in case the model is defined in the endpoints.yml
|
|
114
|
+
return self._extra_parameters[API_KEY]
|
|
115
|
+
|
|
116
|
+
if os.getenv(AZURE_API_KEY_ENV_VAR) is not None:
|
|
117
|
+
return f"${DEFAULT_AZURE_API_KEY_NAME}"
|
|
118
|
+
|
|
119
|
+
if os.getenv(OPENAI_API_KEY_ENV_VAR) is not None:
|
|
120
|
+
# API key can be set through OPENAI_API_KEY too,
|
|
121
|
+
# because of the backward compatibility
|
|
122
|
+
raise_deprecation_warning(
|
|
123
|
+
message=(
|
|
124
|
+
f"Usage of '{OPENAI_API_KEY_ENV_VAR}' environment variable "
|
|
125
|
+
"for setting the API key of "
|
|
126
|
+
"Azure OpenAI client is deprecated and will "
|
|
127
|
+
"be removed in 4.0.0. Please "
|
|
128
|
+
f"use '{AZURE_API_KEY_ENV_VAR}' instead."
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
return "${OPENAI_API_KEY}"
|
|
132
|
+
|
|
133
|
+
structlogger.error(
|
|
134
|
+
"azure_openai_embedding_client.api_key_not_set",
|
|
135
|
+
event_info=(
|
|
136
|
+
"API key not set, it is required for API calls. "
|
|
137
|
+
f"Set it either via the environment variable "
|
|
138
|
+
f"'{AZURE_API_KEY_ENV_VAR}' or directly"
|
|
139
|
+
f"via the config key '{API_KEY}'."
|
|
140
|
+
),
|
|
141
|
+
)
|
|
142
|
+
raise ProviderClientValidationError(
|
|
143
|
+
f"Missing required environment variable/config key '{API_KEY}' for "
|
|
144
|
+
f"API calls."
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
@classmethod
|
|
148
|
+
def from_config(cls, config: Dict[str, Any]) -> "AzureOpenAIEmbeddingClient":
|
|
149
|
+
"""Initializes the client from given configuration.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
config (Dict[str, Any]): Configuration.
|
|
153
|
+
|
|
154
|
+
Raises:
|
|
155
|
+
ValueError: Raised in cases of invalid configuration:
|
|
156
|
+
- If any of the required configuration keys are missing.
|
|
157
|
+
- If `api_type` has a value different from `azure`.
|
|
158
|
+
|
|
159
|
+
Returns:
|
|
160
|
+
AzureOpenAIEmbeddingClient: Initialized client.
|
|
161
|
+
"""
|
|
162
|
+
try:
|
|
163
|
+
azure_openai_config = AzureOpenAIClientConfig.from_dict(config)
|
|
164
|
+
except ValueError as e:
|
|
165
|
+
message = "Cannot instantiate a client from the passed configuration."
|
|
166
|
+
structlogger.error(
|
|
167
|
+
"azure_openai_embedding_client.from_config.error",
|
|
168
|
+
message=message,
|
|
169
|
+
config=config,
|
|
170
|
+
original_error=e,
|
|
171
|
+
)
|
|
172
|
+
raise
|
|
173
|
+
|
|
174
|
+
return cls(
|
|
175
|
+
deployment=azure_openai_config.deployment,
|
|
176
|
+
model=azure_openai_config.model,
|
|
177
|
+
api_base=azure_openai_config.api_base,
|
|
178
|
+
api_type=azure_openai_config.api_type,
|
|
179
|
+
api_version=azure_openai_config.api_version,
|
|
180
|
+
oauth=azure_openai_config.oauth,
|
|
181
|
+
**azure_openai_config.extra_parameters,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def config(self) -> dict:
|
|
186
|
+
"""Returns the configuration for that the llm client
|
|
187
|
+
in dictionary form.
|
|
188
|
+
"""
|
|
189
|
+
config = AzureOpenAIClientConfig(
|
|
190
|
+
deployment=self.deployment,
|
|
191
|
+
model=self.model,
|
|
192
|
+
api_base=self.api_base,
|
|
193
|
+
api_type=self.api_type,
|
|
194
|
+
api_version=self.api_version,
|
|
195
|
+
oauth=self._oauth,
|
|
196
|
+
extra_parameters=self._extra_parameters,
|
|
197
|
+
)
|
|
198
|
+
return config.to_dict()
|
|
199
|
+
|
|
200
|
+
@property
|
|
201
|
+
def model(self) -> Optional[str]:
|
|
202
|
+
"""Returns the name of the model deployed on Azure. If model name is not
|
|
203
|
+
provided, returns "N/A".
|
|
204
|
+
"""
|
|
205
|
+
return self._model
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def deployment(self) -> str:
|
|
209
|
+
"""Return the deployment name for the azure openai embedding client."""
|
|
210
|
+
return self._deployment
|
|
211
|
+
|
|
212
|
+
@property
|
|
213
|
+
def api_base(self) -> Optional[str]:
|
|
214
|
+
"""Returns the base API URL for the oazure penai embedding client."""
|
|
215
|
+
return self._api_base
|
|
216
|
+
|
|
217
|
+
@property
|
|
218
|
+
def api_type(self) -> Optional[str]:
|
|
219
|
+
"""Returns the API type for the azure openai embedding client."""
|
|
220
|
+
return self._api_type
|
|
221
|
+
|
|
222
|
+
@property
|
|
223
|
+
def api_version(self) -> Optional[str]:
|
|
224
|
+
"""Returns the API version for the azure openai embedding client."""
|
|
225
|
+
return self._api_version
|
|
226
|
+
|
|
227
|
+
@property
|
|
228
|
+
def _litellm_extra_parameters(self) -> Dict[str, Any]:
|
|
229
|
+
"""Returns the model parameters for the azure openai embedding client.
|
|
230
|
+
|
|
231
|
+
Returns:
|
|
232
|
+
Dictionary containing the model parameters.
|
|
233
|
+
"""
|
|
234
|
+
return self._extra_parameters
|
|
235
|
+
|
|
236
|
+
@property
|
|
237
|
+
def _embedding_fn_args(self) -> dict:
|
|
238
|
+
auth_parameter = (
|
|
239
|
+
{
|
|
240
|
+
LITE_LLM_AZURE_AD_TOKEN: self._oauth.get_bearer_token(),
|
|
241
|
+
LITE_LLM_AZURE_AD_TOKEN_PROVIDER: self._oauth.get_bearer_token_provider(), # noqa: E501
|
|
242
|
+
}
|
|
243
|
+
if self._oauth
|
|
244
|
+
else {LITE_LLM_API_KEY_FIELD: self._api_key_env_var}
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
return {
|
|
248
|
+
**self._litellm_extra_parameters,
|
|
249
|
+
"model": self._litellm_model_name,
|
|
250
|
+
"api_base": self.api_base,
|
|
251
|
+
"api_type": self.api_type,
|
|
252
|
+
"api_version": self.api_version,
|
|
253
|
+
**auth_parameter,
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@property
|
|
257
|
+
def _litellm_model_name(self) -> str:
|
|
258
|
+
"""Get the model name formatted for azure openai embedding client."""
|
|
259
|
+
if self.deployment and f"{AZURE_OPENAI_PROVIDER}/" not in self.deployment:
|
|
260
|
+
return f"{AZURE_OPENAI_PROVIDER}/{self.deployment}"
|
|
261
|
+
return self.deployment
|
|
262
|
+
|
|
263
|
+
def validate_client_setup(self) -> None:
|
|
264
|
+
"""Perform client validation.
|
|
265
|
+
|
|
266
|
+
By default, only environment variables are validated.
|
|
267
|
+
|
|
268
|
+
Raises:
|
|
269
|
+
ProviderClientValidationError if validation fails.
|
|
270
|
+
|
|
271
|
+
Throws:
|
|
272
|
+
DeprecationWarning: If deprecated environment variables are used.
|
|
273
|
+
"""
|
|
274
|
+
_substitute_env_key_mapper = [
|
|
275
|
+
{
|
|
276
|
+
"param_name": "API base",
|
|
277
|
+
"config_key": API_BASE_CONFIG_KEY,
|
|
278
|
+
"deprecated_env_key": OPENAI_API_BASE_ENV_VAR,
|
|
279
|
+
"current_value": self.api_base,
|
|
280
|
+
"new_env_key": AZURE_API_BASE_ENV_VAR,
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"param_name": "API version",
|
|
284
|
+
"config_key": API_VERSION_CONFIG_KEY,
|
|
285
|
+
"deprecated_env_key": OPENAI_API_VERSION_ENV_VAR,
|
|
286
|
+
"current_value": self.api_version,
|
|
287
|
+
"new_env_key": AZURE_API_VERSION_ENV_VAR,
|
|
288
|
+
},
|
|
289
|
+
]
|
|
290
|
+
|
|
291
|
+
self._throw_deprecation_warnings(_substitute_env_key_mapper)
|
|
292
|
+
self._validate_client_setup(_substitute_env_key_mapper)
|
|
293
|
+
|
|
294
|
+
def _throw_deprecation_warnings(self, mappings: List[Dict[str, Any]]) -> None:
|
|
295
|
+
"""Throw deprecation warnings for deprecated environment variables."""
|
|
296
|
+
for mapping in mappings:
|
|
297
|
+
# Value was set through the new environment variable
|
|
298
|
+
if os.environ.get(mapping["new_env_key"]) is not None and mapping[
|
|
299
|
+
"current_value"
|
|
300
|
+
] == os.environ.get(mapping["new_env_key"]):
|
|
301
|
+
continue
|
|
302
|
+
|
|
303
|
+
# Value was set through the deprecated environment variable
|
|
304
|
+
if mapping["current_value"] == os.environ.get(
|
|
305
|
+
mapping["deprecated_env_key"]
|
|
306
|
+
):
|
|
307
|
+
raise_deprecation_warning(
|
|
308
|
+
message=(
|
|
309
|
+
f"Usage of {mapping['deprecated_env_key']} environment "
|
|
310
|
+
f"variable for setting the {mapping['param_name']} of Azure "
|
|
311
|
+
f"OpenAI client is deprecated and will be removed in 4.0.0. "
|
|
312
|
+
f"Please use {mapping['new_env_key']} instead."
|
|
313
|
+
)
|
|
314
|
+
)
|
|
315
|
+
|
|
316
|
+
def _validate_client_setup(self, mappings: List[Dict[str, Any]]) -> None:
|
|
317
|
+
"""Validate environment variables for the client."""
|
|
318
|
+
missing_environment_variable = False
|
|
319
|
+
for mapping in mappings:
|
|
320
|
+
if not mapping["current_value"]:
|
|
321
|
+
event_info = (
|
|
322
|
+
f"Environment variable: {mapping['new_env_key']} or config key: "
|
|
323
|
+
f"{mapping['config_key']} is not set. Required for API calls. "
|
|
324
|
+
)
|
|
325
|
+
structlogger.error(
|
|
326
|
+
"azure_openai_embedding_client.validate_environment_variables",
|
|
327
|
+
event_info=event_info,
|
|
328
|
+
missing_environment_variable=mapping["new_env_key"],
|
|
329
|
+
)
|
|
330
|
+
missing_environment_variable = True
|
|
331
|
+
|
|
332
|
+
if missing_environment_variable:
|
|
333
|
+
raise ProviderClientValidationError(
|
|
334
|
+
"Missing required environment variables/config keys for API calls."
|
|
335
|
+
)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
|
|
3
|
+
from rasa.shared.constants import (
|
|
4
|
+
AWS_BEDROCK_PROVIDER,
|
|
5
|
+
AWS_SAGEMAKER_PROVIDER,
|
|
6
|
+
)
|
|
7
|
+
from rasa.shared.providers._configs.default_litellm_client_config import (
|
|
8
|
+
DefaultLiteLLMClientConfig,
|
|
9
|
+
)
|
|
10
|
+
from rasa.shared.providers._utils import validate_aws_setup_for_litellm_clients
|
|
11
|
+
from rasa.shared.providers.embedding._base_litellm_embedding_client import (
|
|
12
|
+
_BaseLiteLLMEmbeddingClient,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class DefaultLiteLLMEmbeddingClient(_BaseLiteLLMEmbeddingClient):
|
|
17
|
+
"""A default client for interfacing with LiteLLM Embedding endpoints.
|
|
18
|
+
|
|
19
|
+
Parameters:
|
|
20
|
+
model (str): The OpenAI model name.
|
|
21
|
+
kwargs: Any: Additional configuration parameters that can include, but
|
|
22
|
+
are not limited to model parameters and lite-llm specific
|
|
23
|
+
parameters. These parameters will be passed to the
|
|
24
|
+
embedding/aembedding calls.
|
|
25
|
+
|
|
26
|
+
Raises:
|
|
27
|
+
ProviderClientValidationError: If validation of the client setup fails.
|
|
28
|
+
ProviderClientAPIException: If the API request fails.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def __init__(self, provider: str, model: str, **kwargs: Any):
|
|
32
|
+
super().__init__() # type: ignore
|
|
33
|
+
self._provider = provider
|
|
34
|
+
self._model = model
|
|
35
|
+
self._extra_parameters = kwargs
|
|
36
|
+
self.validate_client_setup()
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def from_config(cls, config: Dict[str, Any]) -> "DefaultLiteLLMEmbeddingClient":
|
|
40
|
+
default_config = DefaultLiteLLMClientConfig.from_dict(config)
|
|
41
|
+
return cls(
|
|
42
|
+
model=default_config.model,
|
|
43
|
+
provider=default_config.provider,
|
|
44
|
+
# Pass the rest of the configuration as extra parameters
|
|
45
|
+
**default_config.extra_parameters,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def config(self) -> Dict:
|
|
50
|
+
"""
|
|
51
|
+
Returns the configuration for the default litellm embedding client.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Dictionary containing the configuration.
|
|
55
|
+
"""
|
|
56
|
+
config = DefaultLiteLLMClientConfig(
|
|
57
|
+
model=self.model,
|
|
58
|
+
provider=self.provider,
|
|
59
|
+
extra_parameters=self._extra_parameters,
|
|
60
|
+
)
|
|
61
|
+
return config.to_dict()
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def provider(self) -> str:
|
|
65
|
+
return self._provider
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def model(self) -> str:
|
|
69
|
+
"""
|
|
70
|
+
Returns the model name for the default litellm embedding client.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
String representing the model name.
|
|
74
|
+
"""
|
|
75
|
+
return self._model
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def _litellm_extra_parameters(self) -> Dict[str, Any]:
|
|
79
|
+
"""
|
|
80
|
+
Returns optional configuration parameters specific to the client provider
|
|
81
|
+
and deployed model.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Dictionary containing the model parameters.
|
|
85
|
+
"""
|
|
86
|
+
return self._extra_parameters
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def _litellm_model_name(self) -> str:
|
|
90
|
+
"""
|
|
91
|
+
Returns the value of LiteLLM's model parameter to be used in
|
|
92
|
+
embedding/aembedding in LiteLLM format:
|
|
93
|
+
<provider>/<model or deployment name>
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
String representing the model name in LiteLLM format.
|
|
97
|
+
"""
|
|
98
|
+
if self.model and f"{self.provider}/" not in self.model:
|
|
99
|
+
return f"{self.provider}/{self.model}"
|
|
100
|
+
return self.model
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def _embedding_fn_args(self) -> Dict[str, Any]:
|
|
104
|
+
return {
|
|
105
|
+
"model": self._litellm_model_name,
|
|
106
|
+
**self._litellm_extra_parameters,
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
def validate_client_setup(self) -> None:
|
|
110
|
+
# TODO: Temporarily disable environment variable validation for AWS setup
|
|
111
|
+
# (Bedrock and SageMaker) until resolved by either:
|
|
112
|
+
# 1. An update from the LiteLLM package addressing the issue.
|
|
113
|
+
# 2. The implementation of a Bedrock client on our end.
|
|
114
|
+
# ---
|
|
115
|
+
# This fix ensures a consistent user experience for Bedrock (and
|
|
116
|
+
# SageMaker) in Rasa by allowing AWS secrets to be provided as extra
|
|
117
|
+
# parameters without triggering validation errors due to missing AWS
|
|
118
|
+
# environment variables.
|
|
119
|
+
if self.provider.lower() in [AWS_BEDROCK_PROVIDER, AWS_SAGEMAKER_PROVIDER]:
|
|
120
|
+
validate_aws_setup_for_litellm_clients(
|
|
121
|
+
self._litellm_model_name,
|
|
122
|
+
self._litellm_extra_parameters,
|
|
123
|
+
"default_litellm_embedding_client",
|
|
124
|
+
)
|
|
125
|
+
else:
|
|
126
|
+
super().validate_client_setup()
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
from typing import Protocol, Dict, List, TYPE_CHECKING, runtime_checkable
|
|
2
|
+
|
|
3
|
+
if TYPE_CHECKING:
|
|
4
|
+
from rasa.shared.providers.embedding.embedding_response import EmbeddingResponse
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@runtime_checkable
|
|
8
|
+
class EmbeddingClient(Protocol):
|
|
9
|
+
@classmethod
|
|
10
|
+
def from_config(cls, config: dict) -> "EmbeddingClient":
|
|
11
|
+
"""
|
|
12
|
+
Initializes the embedding client with the given configuration.
|
|
13
|
+
|
|
14
|
+
This class method should be implemented to parse the given
|
|
15
|
+
configuration and create an instance of llm client.
|
|
16
|
+
"""
|
|
17
|
+
...
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def config(self) -> Dict:
|
|
21
|
+
"""
|
|
22
|
+
Returns the configuration for the embedding client.
|
|
23
|
+
|
|
24
|
+
This property should be implemented to return a dictionary containing
|
|
25
|
+
the configuration settings for the embedding client.
|
|
26
|
+
"""
|
|
27
|
+
...
|
|
28
|
+
|
|
29
|
+
def embed(self, documents: List[str]) -> "EmbeddingResponse":
|
|
30
|
+
"""
|
|
31
|
+
Embeds a list of documents synchronously.
|
|
32
|
+
|
|
33
|
+
This method should be implemented to take a list of documents (as strings)
|
|
34
|
+
and return a list of embedding vectors (each represented as a list of floats).
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
documents: List of documents to be embedded.
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
List of embedding vectors.
|
|
41
|
+
|
|
42
|
+
Raises:
|
|
43
|
+
ProviderClientAPIException: If API calls raised an error.
|
|
44
|
+
"""
|
|
45
|
+
...
|
|
46
|
+
|
|
47
|
+
async def aembed(self, documents: List[str]) -> "EmbeddingResponse":
|
|
48
|
+
"""
|
|
49
|
+
Embeds a list of documents asynchronously.
|
|
50
|
+
|
|
51
|
+
This method should be implemented to take a list of documents (as strings)
|
|
52
|
+
and return a list of embedding vectors (each represented as a list of floats).
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
documents: List of documents to be embedded.
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
List of embedding vectors.
|
|
59
|
+
|
|
60
|
+
Raises:
|
|
61
|
+
ProviderClientAPIException: If API calls raised an error.
|
|
62
|
+
"""
|
|
63
|
+
...
|
|
64
|
+
|
|
65
|
+
def validate_documents(self, documents: List[str]) -> None:
|
|
66
|
+
"""
|
|
67
|
+
Validates a list of documents to ensure they are suitable for embedding.
|
|
68
|
+
|
|
69
|
+
This method should be implemented for document validation. It should raise
|
|
70
|
+
a ValueError if any document is invalid.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
documents: List of documents to be validated.
|
|
74
|
+
|
|
75
|
+
Raises:
|
|
76
|
+
ValueError: If any document is invalid.
|
|
77
|
+
"""
|
|
78
|
+
...
|
|
79
|
+
|
|
80
|
+
def validate_client_setup(self, *args, **kwargs) -> None: # type: ignore
|
|
81
|
+
"""
|
|
82
|
+
Perform client setup validation.
|
|
83
|
+
|
|
84
|
+
This method should be implemented to validate whether the client can be used
|
|
85
|
+
with the parameters provided through configuration or environment variables.
|
|
86
|
+
|
|
87
|
+
If there are any issues, the client should raise a ValidationError.
|
|
88
|
+
If no validation is needed, this check can simply pass.
|
|
89
|
+
"""
|
|
90
|
+
...
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
from typing import Dict, List, Optional
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class EmbeddingUsage:
|
|
7
|
+
prompt_tokens: int
|
|
8
|
+
"""Number of prompt tokens used to generate completion."""
|
|
9
|
+
|
|
10
|
+
completion_tokens: int
|
|
11
|
+
"""Number of generated tokens."""
|
|
12
|
+
|
|
13
|
+
total_tokens: int
|
|
14
|
+
"""Total number of used tokens."""
|
|
15
|
+
|
|
16
|
+
def to_dict(self) -> dict:
|
|
17
|
+
"""Converts the EmbeddingUsage dataclass instance into a dictionary."""
|
|
18
|
+
return asdict(self)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class EmbeddingResponse:
|
|
23
|
+
data: List[List[float]]
|
|
24
|
+
"""The embedding data returned by the API call."""
|
|
25
|
+
|
|
26
|
+
model: Optional[str] = None
|
|
27
|
+
"""The model used for the embedding."""
|
|
28
|
+
|
|
29
|
+
usage: Optional[EmbeddingUsage] = None
|
|
30
|
+
"""An optional details about the token usage for the API call."""
|
|
31
|
+
|
|
32
|
+
additional_info: Optional[Dict] = None
|
|
33
|
+
"""Optional dictionary for storing additional information related to the
|
|
34
|
+
completion that may not be covered by other fields."""
|
|
35
|
+
|
|
36
|
+
def to_dict(self) -> dict:
|
|
37
|
+
"""Converts the EmbeddingResponse dataclass instance into a dictionary."""
|
|
38
|
+
result = asdict(self)
|
|
39
|
+
if self.usage:
|
|
40
|
+
result["usage"] = self.usage.to_dict()
|
|
41
|
+
return result
|