� ���g:���4=�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z mZmZddlmZddlmZddlmZddlmZddlZddlZddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$dd l%m&Z&dd l'm(Z(dd l)m*Z*m+Z+dd l,m-Z-dd l.mZ/ddl0m1Z1ddl2m3Z3ddl4m5Z5m6Z6ddl7m8Z8ddl9m:Z:m;Z;ddl<m=Z=ddl>m?Z@mAZAddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYddlZm[Z[m\Z\m]Z]ddl^m_Z_m`Z`ddlambZbddlcmdZdddlemfZfmgZgddlhmiZiddljmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�mpZpm�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z��m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m �Z �m �Z �m �Z �m �Z �m �Z �m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m �Z �m!�Z!�m"�Z"�m#�Z#�m$�Z$�m%�Z%�m&�Z&�m'�Z'�m(�Z(�m)�Z)�m*�Z*�m+�Z+�m,�Z,�m-�Z-�m.�Z.�m/�Z/�m0�Z0�m1�Z1�m2�Z2�m3�Z3�m4�Z4�m5�Z5�m6�Z6�m7�Z7�m8�Z8�m9�Z9�m:�Z:�m;�Z;�m<�Z<�m=�Z=�m>�Z>�m?�Z?�m@�Z@dd�lA�mB�ZB�mC�ZC�mD�ZD�mE�ZE�mF�ZF�mG�ZG�mH�ZH�mI�ZI�mJ�ZJ�mK�ZK�mL�ZL�mM�ZM�mN�ZN�mO�ZO�mP�ZP�mQ�ZQ�mR�ZR�mS�ZS�mT�ZT�mU�ZU�mV�ZV�mW�ZW�mX�ZXdd�lY�mZ�ZZ�m[�Z[�m\�Z\dd�l]�m^�Z_�m`�Za�mb�Zcdd �ld�me�Ze�mf�Zfdd!�lg�mh�Zhdd"�li�mj�Zj�mk�Zk�ml�Zl�mm�Zm�mn�Zndd#�lo�mp�Zpdd$�lq�mr�Zrdd%�ls�mt�Zt�mu�Zu�mv�Zvdd&�lw�mx�Zx�eJr�eyd'��eb�jz��e�j{e�j|�eH�(��e�j}�e~���Z�e����eKd)��Gd*�d+e-���Z��eyd,�eL�d-�eMd.krd/�eM��nd0�d1���e d2efd3����Z�ed4�e'd5krd6nd�e'd5krd7ndd�e��8��Z?�epe?���Z��e?�eE�ex�eF�eG���9��e?�j��_�e�e?�j�_�de?�j��_��eWrdd:�l��m��Z��e�e?e`�;��ele?�j��j�_leme?�j��j�_mene?�j��j�_nie?�j��_�eoe?�j��j�_oeqe?�j��j�_qere?�j��j�_rese?�j��j�_sie?�j��_�eue?�j��j�_uge?�j��_�ete?�j��j�_t�e.e?�j��j��_.�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_e�e?�j��j�_��ee?�j��j��_�ee?�j��j��_�e e?�j��j��_ �e e?�j��j��_ e�e?�j��j�_�e�e?�j��j��_��ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�e e?�j��j��_ �e e?�j��j��_ �e e?�j��j��_ �ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�ee?�j��j��_�e"e?�j��j��_"�e#e?�j��j��_#�e!e?�j��j��_!�e e?�j��j��_ �e$e?�j��j��_$�e%e?�j��j��_%�e&e?�j��j��_&�eQe?�j��_��eRe?�j��_��eXe?�j��_Xde?�j��_�ie?�j��_�ie?�j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j��_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�de?�j��_�de?�j��_�de?�j��_�de?�j��_� e\e?�j��j�j�e?�j��j�j�e���e?�j��_�e]e?�j��j�j�e���e?�j��_�n3#�e�$r*�Z��e���d<�e�����Yd�Z��[�n d�Z��[�wwxYwe[e?�j��j�j�e?�j��j�j�e?�j��j�e?�j��j�j�d=kre?�j��j�j�ne?�j��j�j�e?�j��j�j�d=kre?�j��j�j�ne?�j��j�j�e?�j��j�j���e?�j��_�eve?�j��j�_vewe?�j��j�_wexe?�j��j�_xeye?�j��j�_yeze?�j��j�_ze{e?�j��j�_{e|e?�j��j�_|e}e?�j��j�_}e~e?�j��j�_~ee?�j��j�_e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j�_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�e�e?�j��j��_�de?�j��_�de?�j��_�de?�j��_��e1e?�j��j��_1�e2e?�j��j��_2�e5e?�j��j��_5�e6e?�j��j��_6�e7e?�j��j��_7�e3e?�j��j��_3�e4e?�j��j��_4�e8e?�j��j��_8�e9e?�j��j��_9�e:e?�j��j��_:�e;e?�j��j��_;�e<e?�j��j��_<�e=e?�j��j��_=�e>e?�j��j��_>ie?�j��_�Gd>�d?e1���Z�e?����e���e?����er��e?���d@��dAe fdB����Z�e?���d@��dAe fdC����Z�e?���d@��dAe fdD����Z�e?���e(�e+dEdFgdFg�G��e?���dHe@��e?���eE�j�dIdJg�K��e?���eF�j�dLd=g�K��e?���eH�j�dMdNg�K��e?���eI�j�dOdPg�K��e?���eD�j�dQdRg�K��e?���eC�j�dSdTg�K��e?���eG�j�dUdVg�K��e?���eN�j�dWdXg�K��e?���eJ�j�dYdZg�K��e?���eX�j�d[d\g�K��e?���eK�j�d]d^g�K��e?���eL�j�d_d`g�K��e?���eS�j�dadbg�K��e?���eT�j�dcddg�K��e?���eU�j�dedfg�K��e?���eW�j�dgdhg�K��e?���eR�j�didjg�K��e?���eM�j�dkdlg�K��e?���eO�j�dmdng�K��e?���eP�j�dodpg�K��e?���eQ�j�dqdrg�K��e?���eV�j�dsdtg�K��e?���eY�j�dudvg�K�� e:�eC���Z�n:#�e�$r1�Z�e8�j�dw�eC�dx�e�����e:�j��Z�Yd�Z��[�n d�Z��[�wwxYw�e�e:�j�kre?���e;�e��eB�eI�y��e?���dz��e�en��fdAe fd{����Z�e?���d|��e�em��fdAe fd}����Z�e?���d~��e�en��fdAe d�e�fd�����ZeZÐeZ^e?���d���e�en��fdAe d�e�fd�����Z`e?���d���e�en��fdAe d��e�d�e�fd�����Zbe?���d���e�en��fd��e�fd�����Z�e?���d���e�en��fd�����Z�e?���d���e�en��fd��e�fd�����Z�e?���d���dAe fd�����Z�Gd��d�e���Z�e?���d���e�em��fd�����Z�e?���d���e�em��fd�e�fd�����Z�e?���d���d�����Z�e?���d���e�en��fd�����Z�e?���d���d�����Z��eϐe-��dkre?���e3�eNd��eO�eP����e?���d���d��e�dAe fd�����Z�e?���d���d��e�dAe d�e5fd�����Z�e?���d���d�����Z�e?���d���d�����Z�e?���d���d�����Z�e?���d���d�����Z�e?���d�e-�e)����d�����e?���d�e-�e(����d�����d���Z֐e�e#_&e�j�����e*��r:e�j�d�d���e?���d��e��e*dE����d�����dS�e���d��e*�d����dS)��N)�asynccontextmanager)� urlencode�parse_qs�urlparse)� BaseModel)�text)�Optional)�cached) �Depends�FastAPI�File�Form� HTTPException�Request� UploadFile�status� applications�BackgroundTasks��get_swagger_ui_html)�CORSMiddleware)� JSONResponse�RedirectResponse)� StaticFiles)r)�BaseHTTPMiddleware)�SessionMiddleware)�Response�StreamingResponse)�logger)� AuditLevel�AuditLoggingMiddleware)� start_logger)�app�periodic_usage_pool_cleanup)�audio�images�ollama�openai� retrieval� pipelines�tasks�auths�channels�chats�folders�configs�groups�files� functions�memories�models� knowledge�prompts� evaluations�tools�users�utils)�get_embedding_function�get_ef�get_rf)�Session�engine)� Functions)�Models)� UserModel�Users)�Chats)�� LICENSE_KEY�ENABLE_OLLAMA_API�OLLAMA_BASE_URLS�OLLAMA_API_CONFIGS�ENABLE_OPENAI_API�ONEDRIVE_CLIENT_ID�OPENAI_API_BASE_URLS�OPENAI_API_KEYS�OPENAI_API_CONFIGS�ENABLE_DIRECT_CONNECTIONS�TOOL_SERVER_CONNECTIONS�ENABLE_CODE_EXECUTION�CODE_EXECUTION_ENGINE�CODE_EXECUTION_JUPYTER_URL�CODE_EXECUTION_JUPYTER_AUTH�!CODE_EXECUTION_JUPYTER_AUTH_TOKEN�$CODE_EXECUTION_JUPYTER_AUTH_PASSWORD�CODE_EXECUTION_JUPYTER_TIMEOUT�ENABLE_CODE_INTERPRETER�CODE_INTERPRETER_ENGINE� CODE_INTERPRETER_PROMPT_TEMPLATE�CODE_INTERPRETER_JUPYTER_URL�CODE_INTERPRETER_JUPYTER_AUTH�#CODE_INTERPRETER_JUPYTER_AUTH_TOKEN�&CODE_INTERPRETER_JUPYTER_AUTH_PASSWORD� CODE_INTERPRETER_JUPYTER_TIMEOUT�AUTOMATIC1111_API_AUTH�AUTOMATIC1111_BASE_URL�AUTOMATIC1111_CFG_SCALE�AUTOMATIC1111_SAMPLER�AUTOMATIC1111_SCHEDULER�COMFYUI_BASE_URL�COMFYUI_API_KEY�COMFYUI_WORKFLOW�COMFYUI_WORKFLOW_NODES�ENABLE_IMAGE_GENERATION�ENABLE_IMAGE_PROMPT_GENERATION�IMAGE_GENERATION_ENGINE�IMAGE_GENERATION_MODEL� IMAGE_SIZE� IMAGE_STEPS�IMAGES_OPENAI_API_BASE_URL�IMAGES_OPENAI_API_KEY�IMAGES_GEMINI_API_BASE_URL�IMAGES_GEMINI_API_KEY�AUDIO_STT_ENGINE�AUDIO_STT_MODEL�AUDIO_STT_OPENAI_API_BASE_URL�AUDIO_STT_OPENAI_API_KEY�AUDIO_STT_AZURE_API_KEY�AUDIO_STT_AZURE_REGION�AUDIO_STT_AZURE_LOCALES�AUDIO_TTS_API_KEY�AUDIO_TTS_ENGINE�AUDIO_TTS_MODEL�AUDIO_TTS_OPENAI_API_BASE_URL�AUDIO_TTS_OPENAI_API_KEY�AUDIO_TTS_SPLIT_ON�AUDIO_TTS_VOICE�AUDIO_TTS_AZURE_SPEECH_REGION�$AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT�PLAYWRIGHT_WS_URL�PLAYWRIGHT_TIMEOUT�FIRECRAWL_API_BASE_URL�FIRECRAWL_API_KEY�WEB_LOADER_ENGINE� WHISPER_MODEL�WHISPER_VAD_FILTER�DEEPGRAM_API_KEY�WHISPER_MODEL_AUTO_UPDATE�WHISPER_MODEL_DIR� RAG_TEMPLATE�DEFAULT_RAG_TEMPLATE�RAG_FULL_CONTEXT�BYPASS_EMBEDDING_AND_RETRIEVAL�RAG_EMBEDDING_MODEL�RAG_EMBEDDING_MODEL_AUTO_UPDATE�%RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE�RAG_RERANKING_MODEL�RAG_RERANKING_MODEL_AUTO_UPDATE�%RAG_RERANKING_MODEL_TRUST_REMOTE_CODE�RAG_EMBEDDING_ENGINE�RAG_EMBEDDING_BATCH_SIZE�RAG_RELEVANCE_THRESHOLD�RAG_FILE_MAX_COUNT�RAG_FILE_MAX_SIZE�RAG_OPENAI_API_BASE_URL�RAG_OPENAI_API_KEY�RAG_OLLAMA_BASE_URL�RAG_OLLAMA_API_KEY� CHUNK_OVERLAP� CHUNK_SIZE�CONTENT_EXTRACTION_ENGINE�TIKA_SERVER_URL�DOCLING_SERVER_URL�DOCUMENT_INTELLIGENCE_ENDPOINT�DOCUMENT_INTELLIGENCE_KEY�MISTRAL_OCR_API_KEY� RAG_TOP_K�RAG_TOP_K_RERANKER�RAG_TEXT_SPLITTER�TIKTOKEN_ENCODING_NAME�PDF_EXTRACT_IMAGES�YOUTUBE_LOADER_LANGUAGE�YOUTUBE_LOADER_PROXY_URL�ENABLE_WEB_SEARCH�WEB_SEARCH_ENGINE�)BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL�WEB_SEARCH_RESULT_COUNT�WEB_SEARCH_CONCURRENT_REQUESTS�WEB_SEARCH_TRUST_ENV�WEB_SEARCH_DOMAIN_FILTER_LIST� JINA_API_KEY�SEARCHAPI_API_KEY�SEARCHAPI_ENGINE�SERPAPI_API_KEY�SERPAPI_ENGINE�SEARXNG_QUERY_URL�SERPER_API_KEY�SERPLY_API_KEY�SERPSTACK_API_KEY�SERPSTACK_HTTPS�TAVILY_API_KEY�TAVILY_EXTRACT_DEPTH�BING_SEARCH_V7_ENDPOINT�BING_SEARCH_V7_SUBSCRIPTION_KEY�BRAVE_SEARCH_API_KEY� EXA_API_KEY�PERPLEXITY_API_KEY�SOUGOU_API_SID� SOUGOU_API_SK�KAGI_SEARCH_API_KEY�MOJEEK_SEARCH_API_KEY�BOCHA_SEARCH_API_KEY�GOOGLE_PSE_API_KEY�GOOGLE_PSE_ENGINE_ID�GOOGLE_DRIVE_CLIENT_ID�GOOGLE_DRIVE_API_KEYrK�ENABLE_RAG_HYBRID_SEARCH�ENABLE_RAG_LOCAL_WEB_FETCH�"ENABLE_WEB_LOADER_SSL_VERIFICATION�ENABLE_GOOGLE_DRIVE_INTEGRATION�ENABLE_ONEDRIVE_INTEGRATION� UPLOAD_DIR� WEBUI_AUTH� WEBUI_NAME� WEBUI_BANNERS� WEBHOOK_URL� ADMIN_EMAIL�SHOW_ADMIN_DETAILS�JWT_EXPIRES_IN� ENABLE_SIGNUP�ENABLE_LOGIN_FORM�ENABLE_API_KEY�$ENABLE_API_KEY_ENDPOINT_RESTRICTIONS�API_KEY_ALLOWED_ENDPOINTS�ENABLE_CHANNELS�ENABLE_COMMUNITY_SHARING�ENABLE_MESSAGE_RATING�ENABLE_USER_WEBHOOKS�ENABLE_EVALUATION_ARENA_MODELS�USER_PERMISSIONS�DEFAULT_USER_ROLE�DEFAULT_PROMPT_SUGGESTIONS�DEFAULT_MODELS�DEFAULT_ARENA_MODEL�MODEL_ORDER_LIST�EVALUATION_ARENA_MODELS�ENABLE_OAUTH_ROLE_MANAGEMENT�OAUTH_ROLES_CLAIM�OAUTH_EMAIL_CLAIM�OAUTH_PICTURE_CLAIM�OAUTH_USERNAME_CLAIM�OAUTH_ALLOWED_ROLES�OAUTH_ADMIN_ROLES� ENABLE_LDAP�LDAP_SERVER_LABEL�LDAP_SERVER_HOST�LDAP_SERVER_PORT�LDAP_ATTRIBUTE_FOR_MAIL�LDAP_ATTRIBUTE_FOR_USERNAME�LDAP_SEARCH_FILTERS�LDAP_SEARCH_BASE� LDAP_APP_DN�LDAP_APP_PASSWORD� LDAP_USE_TLS�LDAP_CA_CERT_FILE� LDAP_CIPHERS�ENV� CACHE_DIR� STATIC_DIR�FRONTEND_BUILD_DIR�CORS_ALLOW_ORIGIN�DEFAULT_LOCALE�OAUTH_PROVIDERS� WEBUI_URL�ENABLE_ADMIN_CHAT_ACCESS�ENABLE_ADMIN_EXPORT� TASK_MODEL�TASK_MODEL_EXTERNAL�ENABLE_TAGS_GENERATION�ENABLE_TITLE_GENERATION�ENABLE_SEARCH_QUERY_GENERATION�!ENABLE_RETRIEVAL_QUERY_GENERATION�ENABLE_AUTOCOMPLETE_GENERATION� TITLE_GENERATION_PROMPT_TEMPLATE�TAGS_GENERATION_PROMPT_TEMPLATE�'IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE�&TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE� QUERY_GENERATION_PROMPT_TEMPLATE�'AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE�(AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH� AppConfig� reset_config)�AUDIT_EXCLUDED_PATHS�AUDIT_LOG_LEVEL� CHANGELOG� REDIS_URL�REDIS_SENTINEL_HOSTS�REDIS_SENTINEL_PORT�GLOBAL_LOG_LEVEL�MAX_BODY_LOG_SIZE� SAFE_MODE�SRC_LOG_LEVELS�VERSION�WEBUI_BUILD_HASH�WEBUI_SECRET_KEY�WEBUI_SESSION_COOKIE_SAME_SITE�WEBUI_SESSION_COOKIE_SECURE�WEBUI_AUTH_TRUSTED_EMAIL_HEADER�WEBUI_AUTH_TRUSTED_NAME_HEADER�ENABLE_WEBSOCKET_SUPPORT�BYPASS_MODEL_ACCESS_CONTROL�RESET_CONFIG_ON_START� OFFLINE_MODE� ENABLE_OTEL�EXTERNAL_PWA_MANIFEST_URL)�get_all_models�get_all_base_models�check_model_access)�generate_chat_completion�chat_completed� chat_action)�process_chat_payload�process_chat_response)� has_access)�get_license_data�get_http_authorization_cred� decode_token�get_admin_user�get_verified_user)� OAuthManager)�SecurityHeadersMiddleware)�list_task_ids_by_chat_id� stop_task� list_tasks)�get_sentinels_from_envzSAFE MODE ENABLED)�stream�level�MAINc�$��eZdZdef�fd� Z�xZS)�SPAStaticFiles�pathc��.�K� t���||���d{V��S#ttf$rV}|jdkrD|�d��r|�t���d|���d{V��cYd}~S|�d}~wwxYw)Ni��.jsz index.html)�super� get_responser�StarletteHTTPException� status_code�endswith)�selfrL�scope�ex� __class__s ��_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/open_webui/main.pyrPzSPAStaticFiles.get_response�s������ ����-�-�d�E�:�:�:�:�:�:�:�:� :���5�6� � � ��~��$�$��=�=��'�'�K��H�!&���!5�!5�l�E�!J�!J�J�J�J�J�J�J�J�J�J�J�J�J������� ���s!�'-�B�A B�B� B�B)�__name__� __module__� __qualname__�strrP� __classcell__)rWs@rXrKrK�sD������� �s� � � � � � � � � � �rKu� ██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║ ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║ ╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ vz4 - building the best open-source AI user interface. z dev-buildzCommit: �z* https://github.com/open-webui/open-webui r#c��K�t��trt��trt |t��t jt����dWV�dS�N)r"r/rrFr<�asyncio� create_taskr$)r#s rX�lifespanrd�s_�����N�N�N��������+���k�*�*�*� ��3�5�5�6�6�6� �E�E�E�E�E�Er^z Open WebUI�devz/docsz /openapi.json)�title�docs_url� openapi_url� redoc_urlrd)� redis_url�redis_sentinels)�setup)r#� db_enginezError updating models: r(c��eZdZdefd�ZdS)�RedirectMiddleware�requestc ��tK�|jdkr�|jj}tt t t |j����j����}|�d��r8d|vr4|dd}td|i��}d|��}t|���S||���d{V��}|S)N�GETz/watch�vr�youtubez/?)�url) �methodrurL�dictrrr\�queryrSrr) rTrp� call_nextrL� query_params�video_id�encoded_video_id� redirect_url�responses rX�dispatchzRedirectMiddleware.dispatch`s����� �>�U� "� "��;�#�D����#�g�k�2B�2B�)C�)C�)I� J� J�K�K�L��}�}�X�&�&� :�3�,�+>�+>�'��,�Q�/��#,�i��-B�#C�#C� �6�$4�6�6� �'�L�9�9�9�9�#��7�+�+�+�+�+�+�+�+���r^N)rYrZr[rr�r^rXroro_s/�������g������r^ro�httprpc��RK�||���d{V��}tj��|Sra)r?�commit)rpryr~s rX�commit_session_after_requestr�ws:�����Y�w�'�'�'�'�'�'�'�'�H� �N���� �Or^c��K�ttj����}t|j�d����|j_tjjj |j_ ||���d{V��}ttj����|z }t|��|jd<|S)N� AuthorizationzX-Process-Time) �int�timer=�headers�get�state�tokenr#�configr��enable_api_keyr\)rpry� start_timer~� process_times rX� check_urlr�s������T�Y�[�[�!�!�J�5�����O�,�,���G�M��$'�9�#3�#B�G�M� ��Y�w�'�'�'�'�'�'�'�'�H��t�y�{�{�#�#�j�0�L�),�\�):�):�H��%�&� �Or^c��K�d|jjvr�|j�d��dkr�|j�d��pd���}|j�d��pd����d��}|dksd|vrttj d d i� ��S||���d{V��S) Nz /ws/socket.io� transport� websocket�Upgrader_� Connection�,�upgrade�detailz!Invalid WebSocket upgrade request)rR�content) rurLrzr�r��lower�splitrr�HTTP_400_BAD_REQUEST)rpryr�� connections rX�inspect_websocketr��s����� �7�;�+�+�+� � � $� $�[� 1� 1�[� @� @��?�&�&�y�1�1�7�R�>�>�@�@���o�)�)�,�7�7�=�2�D�D�F�F�L�L�S�Q�Q� � �k� !� !�Y�j�%@�%@��"�7�!�#F�G���� ���7�#�#� #� #� #� #� #� #�#r^T�*)� allow_origins�allow_credentials� allow_methods� allow_headersz/wsz/ollamar')�prefix�tagsz/openaiz/api/v1/pipelinesr*z /api/v1/tasksr+z/api/v1/imagesr&z /api/v1/audior%z/api/v1/retrievalr)z/api/v1/configsr0z /api/v1/authsr,z /api/v1/usersr:z/api/v1/channelsr-z /api/v1/chatsr.z/api/v1/modelsr5z/api/v1/knowledger6z/api/v1/promptsr7z /api/v1/toolsr9z/api/v1/memoriesr4z/api/v1/foldersr/z/api/v1/groupsr1z /api/v1/filesr2z/api/v1/functionsr3z/api/v1/evaluationsr8z /api/v1/utilsr;zInvalid audit level: z . Error: )� audit_level�excluded_paths� max_body_sizez /api/modelsc��� K�d�}t||����d{V��}g}|D�] }d|vr!|d�dd��dkr�( d�|�di���di���d g��D��}d �|�d g��D��}tt||z����}d �|D��|d <n9#t$r,}t �d |����g|d <Yd}~nd}~wwxYw|j|���� |jj j j } | r-d �t| ��D��� |j � fd����|jdkrts |||��}t �dt!jd�|D��������d|iS)Nc ���g}|D]�}|�d��rit|jd|�di���di���di�����r|�|����t j|d��}|rA|j|jkst|jd|j���r|�|����|S)N�arena�read�info�meta�access_control)�typer��id)r�r;r��appendrB�get_model_by_id�user_idr�)r5�user�filtered_models�model� model_infos rX�get_filtered_modelsz'get_models.<locals>.get_filtered_models�s������ 2� 2�E��y�y��!�!� ���G��#(�9�9�V�R�#8�#8��S���_�_��S�)�2�.�.� ���2�$�*�*�5�1�1�1���/��d� �<�<�J�� 2��7�j�0�0�0�J��G�&��9R�5�5�5�0�$�*�*�5�1�1�1���r^�r��pipeliner��filterc�8�g|]}|�d����S��name�r���.0�tags rX� <listcomp>zget_models.<locals>.<listcomp>s2��������������r^r�r�r�c�8�g|]}|�d����Sr�r�r�s rXr�zget_models.<locals>.<listcomp> s"��E�E�E��C�G�G�F�O�O�E�E�Er^c��g|]}d|i��Sr�r�r�s rXr�zget_models.<locals>.<listcomp> s��;�;�;�s�f�c�]�;�;�;r^zError processing model tags: c��i|]\}}||�� Sr�r�)r��i�model_ids rX� <dictcomp>zget_models.<locals>.<dictcomp>s��W�W�W�K�A�x�H�a�W�W�Wr^c�f����|dtd����|dfS)Nr��infr�)r��float)�x�model_order_dicts �rX�<lambda>zget_models.<locals>.<lambda>s+���+�/�/��$���u���F�F��&� �R�r^)�keyr�z=/api/models returned filtered models accessible to the user: c��g|] }|d�� S)r�r�)r�r�s rXr�zget_models.<locals>.<listcomp>!s ��St�St�St�di�TY�Z^�T_�St�St�Str^�data)r3r��list�set� Exception�log�debugr�r#r�r�r�� enumerate�sort�roler.�json�dumps) rpr�r�� all_modelsr5r�� model_tagsr��e�model_order_listr�s @rX� get_modelsr��sV��������.&�g�D�9�9�9�9�9�9�9�9�9�J� �F����� �� � �5��#4�#8�#8���#F�#F�(�#R�#R� � ��� �9�9�V�R�0�0�4�4�V�R�@�@�D�D�V�R�P�P����J�F�E�u�y�y���/D�/D�E�E�E�D���J��-�.�.�/�/�D�;�;�d�;�;�;�E�&�M�M��� � � � �I�I�9�a�9�9� :� :� :��E�&�M� �D�D�D�D����� ���� �� �e������{�(�/�@��� �W�W�9�EU�;V�;V�W�W�W���� �R�R�R�R� � � � �  �y�F���#>��$�$�V�T�2�2���I�I�w�� �St�St�ms�St�St�St�Hu�Hu�w�w���� �F� �s� BC"�" D�,"D�Dz/api/models/basec��<K�t||����d{V��}d|iS)Nr�r�)r4)rpr�r5s rX�get_base_modelsr�&s5����&�w�T�:�:�:� :� :� :� :� :� :�F� �F� �r^z/api/chat/completions� form_datac��JK�|jjjst||����d{V��|�di��}|�dd��}i} |�dd��s�|�dd��}||jjjvrt d���|jjj|}tj|��}ts1|j dkr& t||��n1#t $r} | �d} ~ wwxYwn|}d}d |j_ ||j_ |j|�d d��|�d d��|�d d��|�d d��|�dd��|�dd��|�dd��|�dd��||�dd��d� |�di���d��dks2|r4|j����d��dkrddini�}||j_||d<t%|||||���d{V��\}}} n�#t $r�} t&�d| ����|�d ��rH|�d��r3t+j|d |dddt/| ��ii��t1t2jt/| ������d} ~ wwxYw t7|||���d{V��} t9|| ||||| |���d{V��S#t $r-} t1t2jt/| ������d} ~ wwxYw)Nr�� model_item�background_tasks�directFr�zModel not foundr�T�chat_idr�� session_id�tool_ids� tool_serversr2�features� variables) r�r�� message_idr�r�r�r2r�r�r�r��params�function_calling�native�metadatazError processing chat payload: r��errorr��rRr�)r#r��MODELSr3�popr�r�rBr�r.r�r5r�r�r�r�� model_dumpr�r9r�r�rE�+upsert_message_to_chat_by_id_and_message_idr\rrr��chat_completion_handlerr:) rpr�r�r�r+r�r�r�r�r��eventsr~s rX�chat_completionr�,sD���� �;� � #�1��W�4�0�0�0�0�0�0�0�0�0�0����|�R�0�0�J� �M�M�,�d� 3� 3�E��H�D ��~�~�h��.�.� (� �}�}�W�d�3�3�H��w�{�0�7�7�7�� 1�2�2�2��K�%�,�X�6�E��/��9�9�J�/� �4�9��3F�3F��&�t�U�3�3�3�3�� �����G�����������E��J�#'�G�M� �"'�G�M� ��w� �}�}�Y��5�5�#�-�-��d�3�3�#�-�-� �d�;�;�!� � �j�$�7�7�%�M�M�.�$�?�?��]�]�7�D�1�1�!� � �j�$�7�7�"���{�D�9�9�� �n�n�X�u�5�5� � ��=�=��2�.�.�2�2�3E�F�F�(�R�R��S�#�)�4�4�6�6�:�:�;M�N�N�� � � $�X�.�.��) ��0"*�� �� (� �*��,@� �Y��h��- �- �' �' �' �' �' �' �#� �8�V�V�� � � � � � � �7�A�7�7�8�8�8� �<�<� � "� "� �x�|�|�L�'A�'A� � � =���#���&��i��Q���0�� � � ���3��q�6�6� � � � ����� ����"  �0��)�T�J�J�J�J�J�J�J�J��*� �X�y�$��%��� � � � � � � � � �� � � � ���3��q�6�6� � � � ����� ���sW�B J�&C7�6J�7 D�D�D�E:J� L4� B"L/�/L4�82M+�+ N"�5(N�N"z/api/chat/completedc��2K� |�di��}|�dd��rd|j_||j_t |||���d{V��S#t $r-}ttj t|������d}~wwxYw�Nr�r�FTr�) r�r�r�r�r��chat_completed_handlerr�rrr�r\)rpr�r�r�r�s rXr7r7�s�����  ��]�]�<��4�4� � �>�>�(�E� *� *� -�#'�G�M� �",�G�M� �+�G�Y��E�E�E�E�E�E�E�E�E�� � � � ���3��q�6�6� � � � ����� ���s�AA� B�)(B�Bz/api/chat/actions/{action_id}� action_idc��4K� |�di��}|�dd��rd|j_||j_t ||||���d{V��S#t $r-}ttj t|������d}~wwxYwr) r�r�r�r�r��chat_action_handlerr�rrr�r\)rprr�r�r�r�s rXr8r8�s�����  ��]�]�<��4�4� � �>�>�(�E� *� *� -�#'�G�M� �",�G�M� �(��)�Y��M�M�M�M�M�M�M�M�M�� � � � ���3��q�6�6� � � � ����� ���s�AA � B�*(B�Bz/api/tasks/stop/{task_id}�task_idc��K� t|���d{V��}|S#t$r-}ttjt |������d}~wwxYw)Nr�)rD� ValueErrorrr�HTTP_404_NOT_FOUNDr\)rr��resultr�s rX�stop_task_endpointr �so����R� ��)�)�)�)�)�)�)�)��� �� �R�R�R���(A�#�a�&�&�Q�Q�Q�Q�����R���s�� A�(A � Az /api/tasksc��&K�dt��iS)Nr+)rEr�s rX�list_tasks_endpointr �s���� �Z�\�\� "�"r^z/api/tasks/chat/{chat_id}r�c��K�tj|��}|�|j|jkrdgiSt |��}t d|�d|����d|iS)N�task_idszTask IDs for chat z: )rE�get_chat_by_idr�r�rC�print)r�r��chatrs rX�list_tasks_by_chat_id_endpointr�sk���� � �� (� (�D� �|�t�|�t�w�.�.��B���'��0�0�H� � 4�w� 4� 4�(� 4� 4�5�5�5� �� !�!r^z /api/configc��K�d}d|jvr�|j�d��} t|��}nG#t$r:}t�|��t tjd����d}~wwxYw|�d|vrtj |d��}tj ��}d}|�|dk}i|rddini�dtj jtt!t"��d d �t%j��D��it(t+tj j��tj jjtj jjtj jjtj jjt8d �|�� tj jjtj jjtj jjtj jj tj jj!tj jj"tj jj#tj jj$tj jj%tj jj&tNtPtj jj)tj jj*d �ni�d ��|��7tj jj+tj jj,|dtj jj-itj jj.tj jj/tj jj0d�dtj jj1id�tj jj2tj jj3d�itj jj4�tjj6tnj6d�dtpj6itj j9d� |j:dkrdtj j;ini�ni�S)Nr�z Invalid tokenr�r�Fr� onboardingT� providersc�B�i|]\}}||�d|����Sr�r�)r�r�r�s rXr�z"get_app_config.<locals>.<dictcomp>�s<����� �D�&��f�j�j���.�.���r^)�auth�auth_trusted_header� enable_ldapr�� enable_signup�enable_login_form�enable_websocket)�enable_direct_connections�enable_channels�enable_web_search�enable_code_execution�enable_code_interpreter�enable_image_generation�enable_autocomplete_generation�enable_community_sharing�enable_message_rating�enable_user_webhooks�enable_admin_export�enable_admin_chat_access�enable_google_drive_integration�enable_onedrive_integration)rr��version�default_locale�oauthr�r@)r@�voice�split_on)�tts�stt)�max_size� max_count)� client_id�api_keyr4) �default_models�default_prompt_suggestions� user_count�coder%�file� permissions� google_drive�onedrive�license_metadata�admin�active_entries)<�cookiesr�r>r�r�r�rr�HTTP_401_UNAUTHORIZEDrD�get_user_by_id� get_num_usersr#r�r�r&r\rr�itemsr��bool�AUTH_TRUSTED_EMAIL_HEADERr�r�r�r�r�r-rOr�r�rQrXrirr�r�r�r r r�r�r�r�rR� TTS_ENGINE� TTS_VOICE� TTS_SPLIT_ON� STT_ENGINE� FILE_MAX_SIZE�FILE_MAX_COUNTr�r��valuer�rK�LICENSE_METADATAr�� USER_COUNT)rpr�r�r�r�r8rs rX�get_app_configrQ�s{���� �D��'�/�!�!���#�#�G�,�,�� ���&�&�D�D��� � � � �I�I�a�L�L�L��"�8�&���� ����� ���� � ��� � ��'��T� �3�3�D��$�&�&�J��J� �|��1�_� �Q �#-� 5�L�$� � �2�Q ��� �$���n�-�-� ���$3�$9�$;�$;���� ��#'�� �(K�#L�#L��9�+�7�!�i�.�=� �Y�-�;�!$��!1�!C� 8� � �2�#�25��1A�1[�'*�y�'7�'G�),��)9�)K�-0�Y�-=�-S�/2�y�/?�/W�/2�y�/?�/W�69�i�6F�6e�03� �0@�0Y�-0�Y�-=�-S�,/�I�,<�,Q�+>�0H�7:�y�7G�7g�36�9�3C�3_����"�5 �Q �Q �Q �\��G#&�)�"2�"A�.1�i�.>�.Y�(��c�i�.�D�� #&�)�"2�"=�!$��!1�!;�$'�I�$4�$A��� !�#�)�"2�"=�� � �!$� � 0� >�!$��!1�!@��� E�#�)�"2�"C�D�!7�!=�3�9�!�!�)�*<�*B�C�$'�I�$>�7# �# �@�y�G�+�+�)�#�)�*>����C# �# �J�_Q �Qs�9� A=�5A8�8A=c��eZdZUeed<dS)�UrlFormruN)rYrZr[r\�__annotations__r�r^rXrSrSBs������� �H�H�H�H�Hr^rSz /api/webhookc��6K�dtjjjiS�Nru)r#r�r�r�r�s rX�get_webhook_urlrWFs���� �s�y��+� �r^c��K�|jtjj_tjjjtj_dtjjjiSrV)rur#r�r�r�)r�r�s rX�update_webhook_urlrYMs:����#,�=�C�I�� ��I�,�8�C�I�� �3�9�#�/� 0�0r^z /api/versionc��K�dtiS)Nr+)r&r�r^rX�get_app_versionr[Ts���� �7� �r^z/api/version/updatesc���K�tr)t�d��ttd�S t jd���}t j|d���4�d{V��}|�d��4�d{V�� }|���|� ���d{V��}|d}t|dd�d�cddd���d{V��cddd���d{V��S#1�d{V��swxYwY ddd���d{V��dS#1�d{V��swxYwYdS#t$r3}t�|��ttd�cYd}~Sd}~wwxYw) NzDOffline mode is enabled, returning current version as latest version)�current�latest�)�totalT)�timeout� trust_envzBhttps://api.github.com/repos/open-webui/open-webui/releases/latest�tag_name) r0r�r�r&�aiohttp� ClientTimeout� ClientSessionr��raise_for_statusr�r�)r�ra�sessionr~r��latest_versionr�s rX�get_app_latest_release_versionrj[s'�����7� � � � S� � � �#�g�6�6�6� 7��'�a�0�0�0���(��D�I�I�I� J� J� J� J� J� J� J�W��{�{�T��� J� J� J� J� J� J� J� J���)�)�+�+�+�%�]�]�_�_�,�,�,�,�,�,��!%�j�!1��#*�n�Q�R�R�6H�I�I� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J���� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J� J���� J� J� J� J� J� J�� �7�7�7� � � �!� � � �"�g�6�6�6�6�6�6�6�6�����7���sl�1D'�%D�AC/� D�D'�/ C9 �9D�<C9 �=D�D'� D�D'�!D�"D'�' E$�1(E�E$�E$z/api/changelogc��BK�d�tt��D��S)Nc�<�i|]\}}|dk� |t|��S)�)r)r��idxr�s rXr�z%get_app_changelog.<locals>.<dictcomp>ts'�� P� P� P�H�C���a���C��3����r^)r�rr�r^rX�get_app_changelogrors"���� P� P� �)�0D�0D� P� P� P�Pr^z oui-session)� secret_key�session_cookie� same_site� https_onlyz/oauth/{provider}/login�providerc��HK�t�||���d{V��Sra)� oauth_manager� handle_login)rtrps rX� oauth_loginrx�s.�����+�+�G�X�>�>� >� >� >� >� >� >�>r^z/oauth/{provider}/callbackr~c��JK�t�|||���d{V��Sra)rv�handle_callback)rtrpr~s rX�oauth_callbackr{�s0�����.�.�w��(�K�K� K� K� K� K� K� K�Kr^z/manifest.jsonc ���K�tjjr5tjtjj�����Stjjtjjddddddddd d �dddd d �gd �S) Nz_Open WebUI is an open, extensible, user-friendly interface for AI that adapts to your workflow.�/� standalonez#343541�naturalz/static/logo.pngz image/png�500x500�any)�srcr��sizes�purpose�maskable)r�� short_name� description� start_url�display�background_color� orientation�icons)r#r�r2�requestsr�r�r�r�r^rX�get_manifest_jsonr��s����� �y�*� ��|�C�I�?�@�@�E�E�G�G�G��I�(��)�.�|��#� )�$�.�'�&�$� ��.�'�&�)� �� � � � r^z/opensearch.xmlc ��K�dtjj�dtjj�dtjjj�dtjjj�dd�dtjjj�d� }t |d � ��S) Nz� <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"> <ShortName>z%</ShortName> <Description>Search zn</Description> <InputEncoding>UTF-8</InputEncoding> <Image width="16" height="16" type="image/x-icon">zM/static/favicon.png</Image> <Url type="text/html" method="get" template="z/?q=z {searchTerms}z"/> <moz:SearchForm>z3</moz:SearchForm> </OpenSearchDescription> zapplication/xml)r�� media_type)r#r�r�r�r r)� xml_contents rX�get_opensearch_xmlr��s����� �� �$� � ���-� � � 8;�y�7G�7Q� � � 36�)�2B�2L� � � Sb� � ��Y�%�/� � � �K� �K�4E� F� F� F�Fr^z/healthc��K�ddiS)NrTr�r�r^rX� healthcheckr��s���� �d� �r^z /health/dbc��tK�tjtd�������ddiS)Nz SELECT 1;rT)r?�executer�allr�r^rX�healthcheck_with_dbr��s5���� �O�D��%�%�&�&�*�*�,�,�,� �d� �r^z/static)� directory�staticr�z/cache�cachec�&�t|i|�dddd���S)Nz'/static/swagger-ui/swagger-ui-bundle.jsz!/static/swagger-ui/swagger-ui.cssz/static/swagger-ui/favicon.png)�swagger_js_url�swagger_css_url�swagger_favicon_urlr)�args�kwargss rX�swagger_ui_htmlr��s:�� � � � � �A�;�<�  � � � �r^ztext/javascriptrNr})r��htmlzspa-static-filesz'Frontend build directory not found at 'z'. Serving API only.(�rb�inspectr��logging� mimetypes�os�shutil�sysr��random� contextlibr� urllib.parserrr�pydanticr� sqlalchemyr�typingr �aiocacher rdr��fastapir r r rrrrrrr�fastapi.openapi.docsr�fastapi.middleware.corsr�fastapi.responsesrr�fastapi.staticfilesr�starlette.exceptionsrQ�starlette.middleware.baser�starlette.middleware.sessionsr�starlette.responsesrr�open_webui.utilsr�open_webui.utils.auditr r!�open_webui.utils.loggerr"�open_webui.socket.mainr#� socket_appr$�open_webui.routersr%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;�open_webui.routers.retrievalr<r=r>�open_webui.internal.dbr?r@�open_webui.models.functionsrA�open_webui.models.modelsrB�open_webui.models.usersrCrD�open_webui.models.chatsrE�open_webui.configrFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_r`rarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrr r r r r rrrrrrrrrrrrrr�open_webui.envrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2�open_webui.utils.modelsr3r4r5�open_webui.utils.chatr6r�r7rr8r�open_webui.utils.middlewarer9r:�open_webui.utils.access_controlr;�open_webui.utils.authr<r=r>r?r@�open_webui.utils.oauthrA�!open_webui.utils.security_headersrB�open_webui.tasksrCrDrE�open_webui.utils.redisrFr�deactivate_all_functions� basicConfig�stdout� getLoggerrYr��setLevelrKrdrvr�r�rO� open_webui.utils.telemetry.setuprl�setup_opentelemetry� OLLAMA_MODELS� OPENAI_MODELS� TOOL_SERVERS�BANNERSrG�AUTH_TRUSTED_NAME_HEADERrP�TOOLS� FUNCTIONS�TOP_K�TOP_K_RERANKER�RELEVANCE_THRESHOLDrLrM� TEXT_SPLITTER�EMBEDDING_FUNCTION�ef�rf�YOUTUBE_LOADER_TRANSLATIONr�r�r��STT_OPENAI_API_BASE_URL�STT_OPENAI_API_KEYrK� STT_MODEL�TTS_OPENAI_API_BASE_URL�TTS_OPENAI_API_KEYrH� TTS_MODELrI� TTS_API_KEYrJ�TTS_AZURE_SPEECH_REGION�TTS_AZURE_SPEECH_OUTPUT_FORMAT�faster_whisper_model�speech_synthesiser�!speech_speaker_embeddings_datasetr�ro�add_middleware� middlewarer�r�r��mount�include_router�routerr�r�NONEr�r�r��postrwr��generate_chat_completionsr\r r rrQrSrWrYr[rjro�lenrxr{r�r�r�r�r�rL�exists�add_type�warningr�r^rX�<module>r�s/)���������� � � � ��������� � � � � � � � � � � � � � � � � � � � �*�*�*�*�*�*�6�6�6�6�6�6�6�6�6�6��������������������������������� � � � � � � � � � � � � � � � � � � � � � � � �5�4�4�4�4�4�2�2�2�2�2�2�<�<�<�<�<�<�<�<�+�+�+�+�+�+�H�H�H�H�H�H�8�8�8�8�8�8�;�;�;�;�;�;�;�;�;�;�;�;�;�;�$�#�#�#�#�#�E�E�E�E�E�E�E�E�0�0�0�0�0�0�����������������������������������������������������������4���������� 3�2�2�2�2�2�2�2�1�1�1�1�1�1�+�+�+�+�+�+�4�4�4�4�4�4�4�4�)�)�)�)�)�)�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�P��������������������������������������������������6���������� ���������� T�S�S�S�S�S�S�S�6�6�6�6�6�6���������������0�/�/�/�/�/�G�G�G�G�G�G����������� :�9�9�9�9�9� �)� �E� ����&�I�&�(�(�(����3�:�-=�>�>�>�>��g���!�!��� � �^�F� #�$�$�$� � � � � �[� � � ��� � � � �#3�k�"A�"A�� ����r� � � ����"�  ��  �  �  ���  ��g� ��u� � �W�W�$�#&�%�<�<���T�� � ����� �S�!�!� ��9��*�*�+?�AT�U�U����� �� "�� ��!�� ���3�M�M�M�M�M�M���C�6�2�2�2�2�&7�� ��"�$4�� ��!�&8�� ��#��� ��&7�� ��"�(<�� ��%�#2�� �� �&8�� ��#��� ��,C�� ��(��� ��.G�� ��*�'�� ���!.�� ���%6�� ��"�"0�� ���(�� ��5�.G�� ��*�"0�� ���&8�� ��#�*�� ���#1�� ���.H�� ��+�%6�� ��"�$4�� ��!�*�� ���(�� ���$4�� ��!�$3�� �� �,D�� ��)�)>�� ��&�(<�� ��%�2P�� ��/�+B�� ��(�(<�� ��%�':�� ��$�%6�� ��"�0L�� ��-�%6�� ��"�':�� ��$�%6�� ��"�*�� ���%6�� ��"�$4�� ��!�$4�� ��!�+B�� ��(�/J�� ��,�*�� ���%6�� ��"�$4�� ��!�':�� ��$� ,�� ���%6�� ��"� ,�� ���'F�� �#�%C�� �"�&?�� �#��� ���� ���� ��#�� ���"4�� ���'>�� ��$�!2�� ���"4�� ���%5�� ��!�2P�� ��/�,D�� ��)�6X�� ��3�-F�� ��*�#2�� �� �&8�� ��#�2P�� ��/�-F�� ��*�':�� ��$�!2�� ���*@�� ��'�(�� ���!.�� ���(<�� ��%�':�� ��$�,D�� ��)�':�� ��$� ,�� ���+B�� ��(�&8�� ��#�':�� ��$�&8�� ��#�&8�� ��#�+B�� ��(�,D�� ��)�&7�� ��"�%6�� ��"�1N�� ��.�+B�� ��(�2P�� ��/�%6�� ��"�(<�� ��%�-�� ��:�4S�� ��0�/J�� ��,�%6�� ��"�&8�� ��#�(<�� ��%�(<�� ��%�':�� ��$�)>�� ��&�(<�� ��%�%6�� ��"�#2�� �� �"0�� ���"0�� ���"0�� ���%6�� ��"�$4�� ��!�#2�� �� �"0�� ��� ,�� ���+B�� ��(�3R�� ��0�*�� ���&8�� ��#�"0�� ���!.�� ���&7�� ��"�&8�� ��#�*@�� ��'�%6�� ��"�(<�� ��%�#�� ���� � ��� � �'+�� �$�  ��6� � ��-� � ��,�'���C�I�L� �6� � ��,�'���C�I�L�L��� � � ��I�I�+��+�+�,�,�,��D�D�D�D����� ���� 6�5��I��)��I��(��I�L� �9� � 0�H� <� <� � ��0�0� �Y� � 1� �9� � 0�H� <� <� � ��+�+� �Y� � 0��I��-� � �� ��.*?�� ��&�)>�� ��&�.H�� ��+�/J�� ��,�5V�� ��2�(�� ��5�3Q�� ��/�+B�� ��(�+B�� ��(�4T�� ��1�0L�� ��-�1N�� ��.�'�� ��4�+�� ��7�5U�� ��1�,C�� ��(�+B�� ��(�2P�� ��/�.H�� ��+�)>�� ��&�.H�� ��+�)>�� ��&�*@�� ��'�*@�� ��'�*@�� ��'�+B�� ��(�)>�� ��&�+B�� ��(�$4�� ��!�#2�� �� �$4�� ��!�*@�� ��'�(�� ���*�� ���,I�� ��(�&>�� ��#�.�� ���,�� ���!.�� ���&8�� ��#�$4�� ��!�+B�� ��(�*@�� ��'�+B�� ��(�+H�� ��(�&>�� ��#�.�� ���,�� ���,�� ���0�� ��� 2�� ���,I�� ��(�2V�� ��/�"&�� ��#�� ��.2�� �+�)�� ���':�� ��$�3Q�� ��/�5V�� ��2�2P�� ��/�*@�� ��'�+B�� ��(�5U�� ��1�3R�� ��0�+�� ��8� +�� ��7�5U�� ��1�+�� ��8�-�� ��9��� �������+����(���%�&�&�&����,�-�-�-��������������������� �W� � � ��� �������$�W�$�$�$���$�"����#���%��%� ����� � �%��������6�=��(���D�D�D����6�=��(���D�D�D����9�#�,?�{�m��T�T�T����5�<��w�i��H�H�H����6�=�)9�� ��K�K�K����5�<��w�i��H�H�H����9�#�,?�{�m��T�T�T����7�>�*;�9�+��N�N�N����5�<��w�i��H�H�H����5�<��w�i��H�H�H����8�?�+=�Z�L��Q�Q�Q����5�<��w�i��H�H�H����6�=�)9�� ��K�K�K����9�#�,?�{�m��T�T�T����7�>�*;�9�+��N�N�N����5�<��w�i��H�H�H����8�?�+=�Z�L��Q�Q�Q����7�>�*;�9�+��N�N�N����6�=�)9�� ��K�K�K����5�<��w�i��H�H�H����9�#�,?�{�m��T�T�T������4�M�?��������5�<��w�i��H�H�H�"��*�_�-�-�K�K���"�"�"��F�L�F��F�F�1�F�F�G�G�G��/�K�K�K�K�K�K�����"�����*�/�!�!������+�'� ����������,3�G�4E�,F�,F�?�?�g�?�?�?���?�D��� ���18���1H�1H���7������� ��� !�"�"� ��"� #� #�\ �\ � �\ ��\ �\ �\ �#�"�\ �@,��*����� � � �,3�G�4E�,F�,F� � � � �!%� � � �!� � �$��� )�*�*�<C�G�DU�<V�<V� � � � �!$� �15� � � �+�*� �$��� %�&�&�07��8I�0J�0J�R�R�c�R�R�R�'�&�R�������#*�7�+<�#=�#=�#�#�#���#���� $�%�%�<C�G�DU�<V�<V�"�"�#�"�"�"�&�%�"�$������f�'�f�f�f���f�R � � � � �i� � � �������&�w�~�6�6������� ���.���6=�g�n�6M�6M�1�1��1�1�1���1� ����������� ��� � � �.5�g�6G�.H�.H�7�7�7�!� �7�,��� ���Q�Q���Q��3����!�������#�$�0�.� ������� "�#�#�?��?�g�?�?�?�$�#�?���� %�&�&�L�3�L��L�H�L�L�L�'�&�L���� ��� � ��� �:��� ��� G� G��� G����������������������� � � �)�[�[�:�6�6�6�X� �F�F�F�� � �(�K�K�)�4�4�4�7� �C�C�C����$3� � ��7�>�>�$�%�%� ��I��(�%�0�0�0��I�I� ���!3�$�?�?�?� ������� �K�K�Z�2D�Z�Z�Z�����s9�A$�3� ,�,3�g Ag+�g+Ah"�g2"Ah�hAh"
Memory