mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-13 04:45:19 +00:00
Merge 7e4fe65bae into bcd50ed8f1
This commit is contained in:
commit
354d2a8a2b
63 changed files with 567 additions and 448 deletions
|
|
@ -813,7 +813,7 @@ def load_oauth_providers():
|
|||
f"⚠️ OAuth providers configured ({provider_list}) but OPENID_PROVIDER_URL not set - logout will not work!"
|
||||
)
|
||||
log.warning(
|
||||
f"Set OPENID_PROVIDER_URL to your OAuth provider's OpenID Connect discovery endpoint to fix logout functionality."
|
||||
"Set OPENID_PROVIDER_URL to your OAuth provider's OpenID Connect discovery endpoint to fix logout functionality."
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -831,9 +831,9 @@ try:
|
|||
if item.is_file() or item.is_symlink():
|
||||
try:
|
||||
item.unlink()
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
for file_path in (FRONTEND_BUILD_DIR / "static").glob("**/*"):
|
||||
|
|
@ -3109,6 +3109,12 @@ JINA_API_KEY = PersistentConfig(
|
|||
os.getenv("JINA_API_KEY", ""),
|
||||
)
|
||||
|
||||
JINA_SEARCH_API_URL = PersistentConfig(
|
||||
"JINA_SEARCH_API_URL",
|
||||
"rag.web.search.jina_search_api_url",
|
||||
os.getenv("JINA_SEARCH_API_URL", "https://s.jina.ai/"),
|
||||
)
|
||||
|
||||
SEARCHAPI_API_KEY = PersistentConfig(
|
||||
"SEARCHAPI_API_KEY",
|
||||
"rag.web.search.searchapi_api_key",
|
||||
|
|
|
|||
|
|
@ -1,526 +1,489 @@
|
|||
import asyncio
|
||||
import inspect
|
||||
import json
|
||||
import logging
|
||||
import mimetypes
|
||||
import os
|
||||
import shutil
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import random
|
||||
import re
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
from contextlib import asynccontextmanager
|
||||
from urllib.parse import urlencode, parse_qs, urlparse
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import text
|
||||
from urllib.parse import parse_qs, urlencode, urlparse
|
||||
|
||||
from typing import Optional
|
||||
from aiocache import cached
|
||||
import aiohttp
|
||||
import anyio.to_thread
|
||||
import requests
|
||||
from redis import Redis
|
||||
|
||||
|
||||
from fastapi import (
|
||||
Depends,
|
||||
FastAPI,
|
||||
File,
|
||||
Form,
|
||||
HTTPException,
|
||||
Request,
|
||||
UploadFile,
|
||||
status,
|
||||
applications,
|
||||
BackgroundTasks,
|
||||
status,
|
||||
)
|
||||
from fastapi.openapi.docs import get_swagger_ui_html
|
||||
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.openapi.docs import get_swagger_ui_html
|
||||
from fastapi.responses import FileResponse, JSONResponse, RedirectResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from starlette_compress import CompressMiddleware
|
||||
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import text
|
||||
from starlette.datastructures import Headers
|
||||
from starlette.exceptions import HTTPException as StarletteHTTPException
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.middleware.sessions import SessionMiddleware
|
||||
from starlette.responses import Response, StreamingResponse
|
||||
from starlette.datastructures import Headers
|
||||
|
||||
from starlette.responses import Response
|
||||
from starlette_compress import CompressMiddleware
|
||||
from starsessions import (
|
||||
SessionAutoloadMiddleware,
|
||||
)
|
||||
from starsessions import (
|
||||
SessionMiddleware as StarSessionsMiddleware,
|
||||
SessionAutoloadMiddleware,
|
||||
)
|
||||
from starsessions.stores.redis import RedisStore
|
||||
|
||||
from open_webui.utils import logger
|
||||
from open_webui.utils.audit import AuditLevel, AuditLoggingMiddleware
|
||||
from open_webui.utils.logger import start_logger
|
||||
from open_webui.socket.main import (
|
||||
MODELS,
|
||||
app as socket_app,
|
||||
periodic_usage_pool_cleanup,
|
||||
get_event_emitter,
|
||||
get_models_in_use,
|
||||
)
|
||||
from open_webui.routers import (
|
||||
audio,
|
||||
images,
|
||||
ollama,
|
||||
openai,
|
||||
retrieval,
|
||||
pipelines,
|
||||
tasks,
|
||||
auths,
|
||||
channels,
|
||||
chats,
|
||||
notes,
|
||||
folders,
|
||||
configs,
|
||||
groups,
|
||||
files,
|
||||
functions,
|
||||
memories,
|
||||
models,
|
||||
knowledge,
|
||||
prompts,
|
||||
evaluations,
|
||||
tools,
|
||||
users,
|
||||
utils,
|
||||
scim,
|
||||
)
|
||||
|
||||
from open_webui.routers.retrieval import (
|
||||
get_embedding_function,
|
||||
get_reranking_function,
|
||||
get_ef,
|
||||
get_rf,
|
||||
)
|
||||
|
||||
from open_webui.internal.db import Session, engine
|
||||
|
||||
from open_webui.models.functions import Functions
|
||||
from open_webui.models.models import Models
|
||||
from open_webui.models.users import UserModel, Users
|
||||
from open_webui.models.chats import Chats
|
||||
|
||||
from open_webui.config import (
|
||||
# Ollama
|
||||
ENABLE_OLLAMA_API,
|
||||
OLLAMA_BASE_URLS,
|
||||
OLLAMA_API_CONFIGS,
|
||||
# OpenAI
|
||||
ENABLE_OPENAI_API,
|
||||
OPENAI_API_BASE_URLS,
|
||||
OPENAI_API_KEYS,
|
||||
OPENAI_API_CONFIGS,
|
||||
# Direct Connections
|
||||
ENABLE_DIRECT_CONNECTIONS,
|
||||
# Model list
|
||||
ENABLE_BASE_MODELS_CACHE,
|
||||
# Thread pool size for FastAPI/AnyIO
|
||||
THREAD_POOL_SIZE,
|
||||
# Tool Server Configs
|
||||
TOOL_SERVER_CONNECTIONS,
|
||||
# Code Execution
|
||||
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,
|
||||
ADMIN_EMAIL,
|
||||
API_KEYS_ALLOWED_ENDPOINTS,
|
||||
AUDIO_STT_AZURE_API_KEY,
|
||||
AUDIO_STT_AZURE_BASE_URL,
|
||||
AUDIO_STT_AZURE_LOCALES,
|
||||
AUDIO_STT_AZURE_MAX_SPEAKERS,
|
||||
AUDIO_STT_AZURE_REGION,
|
||||
# Audio
|
||||
AUDIO_STT_ENGINE,
|
||||
AUDIO_STT_MISTRAL_API_BASE_URL,
|
||||
AUDIO_STT_MISTRAL_API_KEY,
|
||||
AUDIO_STT_MISTRAL_USE_CHAT_COMPLETIONS,
|
||||
AUDIO_STT_MODEL,
|
||||
AUDIO_STT_OPENAI_API_BASE_URL,
|
||||
AUDIO_STT_OPENAI_API_KEY,
|
||||
AUDIO_STT_SUPPORTED_CONTENT_TYPES,
|
||||
AUDIO_TTS_API_KEY,
|
||||
AUDIO_TTS_AZURE_SPEECH_BASE_URL,
|
||||
AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT,
|
||||
AUDIO_TTS_AZURE_SPEECH_REGION,
|
||||
AUDIO_TTS_ENGINE,
|
||||
AUDIO_TTS_MODEL,
|
||||
AUDIO_TTS_OPENAI_API_BASE_URL,
|
||||
AUDIO_TTS_OPENAI_API_KEY,
|
||||
AUDIO_TTS_OPENAI_PARAMS,
|
||||
AUDIO_TTS_SPLIT_ON,
|
||||
AUDIO_TTS_VOICE,
|
||||
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
|
||||
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
||||
# Image
|
||||
AUTOMATIC1111_API_AUTH,
|
||||
AUTOMATIC1111_BASE_URL,
|
||||
AUTOMATIC1111_PARAMS,
|
||||
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_VERSION,
|
||||
IMAGES_OPENAI_API_KEY,
|
||||
IMAGES_OPENAI_API_PARAMS,
|
||||
IMAGES_GEMINI_API_BASE_URL,
|
||||
IMAGES_GEMINI_API_KEY,
|
||||
IMAGES_GEMINI_ENDPOINT_METHOD,
|
||||
ENABLE_IMAGE_EDIT,
|
||||
IMAGE_EDIT_ENGINE,
|
||||
IMAGE_EDIT_MODEL,
|
||||
IMAGE_EDIT_SIZE,
|
||||
IMAGES_EDIT_OPENAI_API_BASE_URL,
|
||||
IMAGES_EDIT_OPENAI_API_KEY,
|
||||
IMAGES_EDIT_OPENAI_API_VERSION,
|
||||
IMAGES_EDIT_GEMINI_API_BASE_URL,
|
||||
IMAGES_EDIT_GEMINI_API_KEY,
|
||||
IMAGES_EDIT_COMFYUI_BASE_URL,
|
||||
IMAGES_EDIT_COMFYUI_API_KEY,
|
||||
IMAGES_EDIT_COMFYUI_WORKFLOW,
|
||||
IMAGES_EDIT_COMFYUI_WORKFLOW_NODES,
|
||||
# Audio
|
||||
AUDIO_STT_ENGINE,
|
||||
AUDIO_STT_MODEL,
|
||||
AUDIO_STT_SUPPORTED_CONTENT_TYPES,
|
||||
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_STT_AZURE_BASE_URL,
|
||||
AUDIO_STT_AZURE_MAX_SPEAKERS,
|
||||
AUDIO_STT_MISTRAL_API_KEY,
|
||||
AUDIO_STT_MISTRAL_API_BASE_URL,
|
||||
AUDIO_STT_MISTRAL_USE_CHAT_COMPLETIONS,
|
||||
AUDIO_TTS_ENGINE,
|
||||
AUDIO_TTS_MODEL,
|
||||
AUDIO_TTS_VOICE,
|
||||
AUDIO_TTS_OPENAI_API_BASE_URL,
|
||||
AUDIO_TTS_OPENAI_API_KEY,
|
||||
AUDIO_TTS_OPENAI_PARAMS,
|
||||
AUDIO_TTS_API_KEY,
|
||||
AUDIO_TTS_SPLIT_ON,
|
||||
AUDIO_TTS_AZURE_SPEECH_REGION,
|
||||
AUDIO_TTS_AZURE_SPEECH_BASE_URL,
|
||||
AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT,
|
||||
PLAYWRIGHT_WS_URL,
|
||||
PLAYWRIGHT_TIMEOUT,
|
||||
FIRECRAWL_API_BASE_URL,
|
||||
FIRECRAWL_API_KEY,
|
||||
WEB_LOADER_ENGINE,
|
||||
WEB_LOADER_CONCURRENT_REQUESTS,
|
||||
WHISPER_MODEL,
|
||||
WHISPER_VAD_FILTER,
|
||||
WHISPER_LANGUAGE,
|
||||
DEEPGRAM_API_KEY,
|
||||
WHISPER_MODEL_AUTO_UPDATE,
|
||||
WHISPER_MODEL_DIR,
|
||||
# Retrieval
|
||||
RAG_TEMPLATE,
|
||||
DEFAULT_RAG_TEMPLATE,
|
||||
RAG_FULL_CONTEXT,
|
||||
BING_SEARCH_V7_ENDPOINT,
|
||||
BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
||||
BOCHA_SEARCH_API_KEY,
|
||||
BRAVE_SEARCH_API_KEY,
|
||||
BYPASS_ADMIN_ACCESS_CONTROL,
|
||||
BYPASS_EMBEDDING_AND_RETRIEVAL,
|
||||
RAG_EMBEDDING_MODEL,
|
||||
RAG_EMBEDDING_MODEL_AUTO_UPDATE,
|
||||
RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE,
|
||||
RAG_RERANKING_ENGINE,
|
||||
RAG_RERANKING_MODEL,
|
||||
RAG_EXTERNAL_RERANKER_URL,
|
||||
RAG_EXTERNAL_RERANKER_API_KEY,
|
||||
RAG_RERANKING_MODEL_AUTO_UPDATE,
|
||||
RAG_RERANKING_MODEL_TRUST_REMOTE_CODE,
|
||||
RAG_EMBEDDING_ENGINE,
|
||||
RAG_EMBEDDING_BATCH_SIZE,
|
||||
ENABLE_ASYNC_EMBEDDING,
|
||||
RAG_TOP_K,
|
||||
RAG_TOP_K_RERANKER,
|
||||
RAG_RELEVANCE_THRESHOLD,
|
||||
RAG_HYBRID_BM25_WEIGHT,
|
||||
RAG_ALLOWED_FILE_EXTENSIONS,
|
||||
RAG_FILE_MAX_COUNT,
|
||||
RAG_FILE_MAX_SIZE,
|
||||
FILE_IMAGE_COMPRESSION_WIDTH,
|
||||
FILE_IMAGE_COMPRESSION_HEIGHT,
|
||||
RAG_OPENAI_API_BASE_URL,
|
||||
RAG_OPENAI_API_KEY,
|
||||
RAG_AZURE_OPENAI_BASE_URL,
|
||||
RAG_AZURE_OPENAI_API_KEY,
|
||||
RAG_AZURE_OPENAI_API_VERSION,
|
||||
RAG_OLLAMA_BASE_URL,
|
||||
RAG_OLLAMA_API_KEY,
|
||||
BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL,
|
||||
BYPASS_WEB_SEARCH_WEB_LOADER,
|
||||
CACHE_DIR,
|
||||
CHUNK_OVERLAP,
|
||||
CHUNK_SIZE,
|
||||
CODE_EXECUTION_ENGINE,
|
||||
CODE_EXECUTION_JUPYTER_AUTH,
|
||||
CODE_EXECUTION_JUPYTER_AUTH_PASSWORD,
|
||||
CODE_EXECUTION_JUPYTER_AUTH_TOKEN,
|
||||
CODE_EXECUTION_JUPYTER_TIMEOUT,
|
||||
CODE_EXECUTION_JUPYTER_URL,
|
||||
CODE_INTERPRETER_ENGINE,
|
||||
CODE_INTERPRETER_JUPYTER_AUTH,
|
||||
CODE_INTERPRETER_JUPYTER_AUTH_PASSWORD,
|
||||
CODE_INTERPRETER_JUPYTER_AUTH_TOKEN,
|
||||
CODE_INTERPRETER_JUPYTER_TIMEOUT,
|
||||
CODE_INTERPRETER_JUPYTER_URL,
|
||||
CODE_INTERPRETER_PROMPT_TEMPLATE,
|
||||
COMFYUI_API_KEY,
|
||||
COMFYUI_BASE_URL,
|
||||
COMFYUI_WORKFLOW,
|
||||
COMFYUI_WORKFLOW_NODES,
|
||||
CONTENT_EXTRACTION_ENGINE,
|
||||
DATALAB_MARKER_API_KEY,
|
||||
DATALAB_MARKER_API_BASE_URL,
|
||||
CORS_ALLOW_ORIGIN,
|
||||
DATALAB_MARKER_ADDITIONAL_CONFIG,
|
||||
DATALAB_MARKER_SKIP_CACHE,
|
||||
DATALAB_MARKER_FORCE_OCR,
|
||||
DATALAB_MARKER_PAGINATE,
|
||||
DATALAB_MARKER_STRIP_EXISTING_OCR,
|
||||
DATALAB_MARKER_API_BASE_URL,
|
||||
DATALAB_MARKER_API_KEY,
|
||||
DATALAB_MARKER_DISABLE_IMAGE_EXTRACTION,
|
||||
DATALAB_MARKER_FORCE_OCR,
|
||||
DATALAB_MARKER_FORMAT_LINES,
|
||||
DATALAB_MARKER_OUTPUT_FORMAT,
|
||||
MINERU_API_MODE,
|
||||
MINERU_API_URL,
|
||||
MINERU_API_KEY,
|
||||
MINERU_PARAMS,
|
||||
DATALAB_MARKER_PAGINATE,
|
||||
DATALAB_MARKER_SKIP_CACHE,
|
||||
DATALAB_MARKER_STRIP_EXISTING_OCR,
|
||||
DATALAB_MARKER_USE_LLM,
|
||||
EXTERNAL_DOCUMENT_LOADER_URL,
|
||||
EXTERNAL_DOCUMENT_LOADER_API_KEY,
|
||||
TIKA_SERVER_URL,
|
||||
DOCLING_SERVER_URL,
|
||||
DEEPGRAM_API_KEY,
|
||||
DEFAULT_GROUP_ID,
|
||||
DEFAULT_LOCALE,
|
||||
DEFAULT_MODELS,
|
||||
DEFAULT_PINNED_MODELS,
|
||||
DEFAULT_PROMPT_SUGGESTIONS,
|
||||
DEFAULT_USER_ROLE,
|
||||
DOCLING_API_KEY,
|
||||
DOCLING_PARAMS,
|
||||
DOCLING_SERVER_URL,
|
||||
DOCUMENT_INTELLIGENCE_ENDPOINT,
|
||||
DOCUMENT_INTELLIGENCE_KEY,
|
||||
DOCUMENT_INTELLIGENCE_MODEL,
|
||||
MISTRAL_OCR_API_BASE_URL,
|
||||
MISTRAL_OCR_API_KEY,
|
||||
RAG_TEXT_SPLITTER,
|
||||
TIKTOKEN_ENCODING_NAME,
|
||||
PDF_EXTRACT_IMAGES,
|
||||
YOUTUBE_LOADER_LANGUAGE,
|
||||
YOUTUBE_LOADER_PROXY_URL,
|
||||
# Admin
|
||||
ENABLE_ADMIN_CHAT_ACCESS,
|
||||
ENABLE_ADMIN_EXPORT,
|
||||
ENABLE_API_KEYS,
|
||||
ENABLE_API_KEYS_ENDPOINT_RESTRICTIONS,
|
||||
ENABLE_ASYNC_EMBEDDING,
|
||||
ENABLE_AUTOCOMPLETE_GENERATION,
|
||||
# Model list
|
||||
ENABLE_BASE_MODELS_CACHE,
|
||||
ENABLE_CHANNELS,
|
||||
# Code Execution
|
||||
ENABLE_CODE_EXECUTION,
|
||||
ENABLE_CODE_INTERPRETER,
|
||||
ENABLE_COMMUNITY_SHARING,
|
||||
# Direct Connections
|
||||
ENABLE_DIRECT_CONNECTIONS,
|
||||
ENABLE_EVALUATION_ARENA_MODELS,
|
||||
ENABLE_FOLDERS,
|
||||
ENABLE_FOLLOW_UP_GENERATION,
|
||||
ENABLE_GOOGLE_DRIVE_INTEGRATION,
|
||||
ENABLE_IMAGE_EDIT,
|
||||
ENABLE_IMAGE_GENERATION,
|
||||
ENABLE_IMAGE_PROMPT_GENERATION,
|
||||
# WebUI (LDAP)
|
||||
ENABLE_LDAP,
|
||||
ENABLE_LDAP_GROUP_CREATION,
|
||||
# LDAP Group Management
|
||||
ENABLE_LDAP_GROUP_MANAGEMENT,
|
||||
ENABLE_LOGIN_FORM,
|
||||
ENABLE_MESSAGE_RATING,
|
||||
ENABLE_NOTES,
|
||||
# WebUI (OAuth)
|
||||
ENABLE_OAUTH_ROLE_MANAGEMENT,
|
||||
# Ollama
|
||||
ENABLE_OLLAMA_API,
|
||||
ENABLE_ONEDRIVE_BUSINESS,
|
||||
ENABLE_ONEDRIVE_INTEGRATION,
|
||||
ENABLE_ONEDRIVE_PERSONAL,
|
||||
# OpenAI
|
||||
ENABLE_OPENAI_API,
|
||||
ENABLE_RAG_HYBRID_SEARCH,
|
||||
ENABLE_RAG_HYBRID_SEARCH_ENRICHED_TEXTS,
|
||||
ENABLE_RETRIEVAL_QUERY_GENERATION,
|
||||
ENABLE_SEARCH_QUERY_GENERATION,
|
||||
ENABLE_SIGNUP,
|
||||
ENABLE_TAGS_GENERATION,
|
||||
ENABLE_TITLE_GENERATION,
|
||||
ENABLE_USER_WEBHOOKS,
|
||||
ENABLE_WEB_LOADER_SSL_VERIFICATION,
|
||||
# Retrieval (Web Search)
|
||||
ENABLE_WEB_SEARCH,
|
||||
WEB_SEARCH_ENGINE,
|
||||
BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL,
|
||||
BYPASS_WEB_SEARCH_WEB_LOADER,
|
||||
WEB_SEARCH_RESULT_COUNT,
|
||||
WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||
WEB_SEARCH_TRUST_ENV,
|
||||
WEB_SEARCH_DOMAIN_FILTER_LIST,
|
||||
OLLAMA_CLOUD_WEB_SEARCH_API_KEY,
|
||||
# Misc
|
||||
ENV,
|
||||
EVALUATION_ARENA_MODELS,
|
||||
EXA_API_KEY,
|
||||
EXTERNAL_DOCUMENT_LOADER_API_KEY,
|
||||
EXTERNAL_DOCUMENT_LOADER_URL,
|
||||
EXTERNAL_WEB_LOADER_API_KEY,
|
||||
EXTERNAL_WEB_LOADER_URL,
|
||||
EXTERNAL_WEB_SEARCH_API_KEY,
|
||||
EXTERNAL_WEB_SEARCH_URL,
|
||||
FILE_IMAGE_COMPRESSION_HEIGHT,
|
||||
FILE_IMAGE_COMPRESSION_WIDTH,
|
||||
FIRECRAWL_API_BASE_URL,
|
||||
FIRECRAWL_API_KEY,
|
||||
FOLLOW_UP_GENERATION_PROMPT_TEMPLATE,
|
||||
FRONTEND_BUILD_DIR,
|
||||
GOOGLE_DRIVE_API_KEY,
|
||||
GOOGLE_DRIVE_CLIENT_ID,
|
||||
GOOGLE_PSE_API_KEY,
|
||||
GOOGLE_PSE_ENGINE_ID,
|
||||
IMAGE_EDIT_ENGINE,
|
||||
IMAGE_EDIT_MODEL,
|
||||
IMAGE_EDIT_SIZE,
|
||||
IMAGE_GENERATION_ENGINE,
|
||||
IMAGE_GENERATION_MODEL,
|
||||
IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE,
|
||||
IMAGE_SIZE,
|
||||
IMAGE_STEPS,
|
||||
IMAGES_EDIT_COMFYUI_API_KEY,
|
||||
IMAGES_EDIT_COMFYUI_BASE_URL,
|
||||
IMAGES_EDIT_COMFYUI_WORKFLOW,
|
||||
IMAGES_EDIT_COMFYUI_WORKFLOW_NODES,
|
||||
IMAGES_EDIT_GEMINI_API_BASE_URL,
|
||||
IMAGES_EDIT_GEMINI_API_KEY,
|
||||
IMAGES_EDIT_OPENAI_API_BASE_URL,
|
||||
IMAGES_EDIT_OPENAI_API_KEY,
|
||||
IMAGES_EDIT_OPENAI_API_VERSION,
|
||||
IMAGES_GEMINI_API_BASE_URL,
|
||||
IMAGES_GEMINI_API_KEY,
|
||||
IMAGES_GEMINI_ENDPOINT_METHOD,
|
||||
IMAGES_OPENAI_API_BASE_URL,
|
||||
IMAGES_OPENAI_API_KEY,
|
||||
IMAGES_OPENAI_API_PARAMS,
|
||||
IMAGES_OPENAI_API_VERSION,
|
||||
JINA_API_KEY,
|
||||
JINA_SEARCH_API_URL,
|
||||
JWT_EXPIRES_IN,
|
||||
KAGI_SEARCH_API_KEY,
|
||||
LDAP_APP_DN,
|
||||
LDAP_APP_PASSWORD,
|
||||
LDAP_ATTRIBUTE_FOR_GROUPS,
|
||||
LDAP_ATTRIBUTE_FOR_MAIL,
|
||||
LDAP_ATTRIBUTE_FOR_USERNAME,
|
||||
LDAP_CA_CERT_FILE,
|
||||
LDAP_CIPHERS,
|
||||
LDAP_SEARCH_BASE,
|
||||
LDAP_SEARCH_FILTERS,
|
||||
LDAP_SERVER_HOST,
|
||||
LDAP_SERVER_LABEL,
|
||||
LDAP_SERVER_PORT,
|
||||
LDAP_USE_TLS,
|
||||
LDAP_VALIDATE_CERT,
|
||||
MINERU_API_KEY,
|
||||
MINERU_API_MODE,
|
||||
MINERU_API_URL,
|
||||
MINERU_PARAMS,
|
||||
MISTRAL_OCR_API_BASE_URL,
|
||||
MISTRAL_OCR_API_KEY,
|
||||
MODEL_ORDER_LIST,
|
||||
MOJEEK_SEARCH_API_KEY,
|
||||
OAUTH_ADMIN_ROLES,
|
||||
OAUTH_ALLOWED_ROLES,
|
||||
OAUTH_EMAIL_CLAIM,
|
||||
OAUTH_PICTURE_CLAIM,
|
||||
OAUTH_PROVIDERS,
|
||||
OAUTH_ROLES_CLAIM,
|
||||
OAUTH_USERNAME_CLAIM,
|
||||
OLLAMA_API_CONFIGS,
|
||||
OLLAMA_BASE_URLS,
|
||||
OLLAMA_CLOUD_WEB_SEARCH_API_KEY,
|
||||
ONEDRIVE_CLIENT_ID_BUSINESS,
|
||||
ONEDRIVE_CLIENT_ID_PERSONAL,
|
||||
ONEDRIVE_SHAREPOINT_TENANT_ID,
|
||||
ONEDRIVE_SHAREPOINT_URL,
|
||||
OPENAI_API_BASE_URLS,
|
||||
OPENAI_API_CONFIGS,
|
||||
OPENAI_API_KEYS,
|
||||
PDF_EXTRACT_IMAGES,
|
||||
PENDING_USER_OVERLAY_CONTENT,
|
||||
PENDING_USER_OVERLAY_TITLE,
|
||||
PERPLEXITY_API_KEY,
|
||||
PERPLEXITY_MODEL,
|
||||
PERPLEXITY_SEARCH_API_URL,
|
||||
PERPLEXITY_SEARCH_CONTEXT_USAGE,
|
||||
PLAYWRIGHT_TIMEOUT,
|
||||
PLAYWRIGHT_WS_URL,
|
||||
QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||
RAG_ALLOWED_FILE_EXTENSIONS,
|
||||
RAG_AZURE_OPENAI_API_KEY,
|
||||
RAG_AZURE_OPENAI_API_VERSION,
|
||||
RAG_AZURE_OPENAI_BASE_URL,
|
||||
RAG_EMBEDDING_BATCH_SIZE,
|
||||
RAG_EMBEDDING_ENGINE,
|
||||
RAG_EMBEDDING_MODEL,
|
||||
RAG_EXTERNAL_RERANKER_API_KEY,
|
||||
RAG_EXTERNAL_RERANKER_URL,
|
||||
RAG_FILE_MAX_COUNT,
|
||||
RAG_FILE_MAX_SIZE,
|
||||
RAG_FULL_CONTEXT,
|
||||
RAG_HYBRID_BM25_WEIGHT,
|
||||
RAG_OLLAMA_API_KEY,
|
||||
RAG_OLLAMA_BASE_URL,
|
||||
RAG_OPENAI_API_BASE_URL,
|
||||
RAG_OPENAI_API_KEY,
|
||||
RAG_RELEVANCE_THRESHOLD,
|
||||
RAG_RERANKING_ENGINE,
|
||||
RAG_RERANKING_MODEL,
|
||||
RAG_TEMPLATE,
|
||||
RAG_TEXT_SPLITTER,
|
||||
RAG_TOP_K,
|
||||
RAG_TOP_K_RERANKER,
|
||||
RESPONSE_WATERMARK,
|
||||
SEARCHAPI_API_KEY,
|
||||
SEARCHAPI_ENGINE,
|
||||
SEARXNG_QUERY_URL,
|
||||
SERPAPI_API_KEY,
|
||||
SERPAPI_ENGINE,
|
||||
SEARXNG_QUERY_URL,
|
||||
YACY_QUERY_URL,
|
||||
YACY_USERNAME,
|
||||
YACY_PASSWORD,
|
||||
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,
|
||||
PERPLEXITY_MODEL,
|
||||
PERPLEXITY_SEARCH_CONTEXT_USAGE,
|
||||
PERPLEXITY_SEARCH_API_URL,
|
||||
SHOW_ADMIN_DETAILS,
|
||||
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_KEY,
|
||||
ENABLE_ONEDRIVE_INTEGRATION,
|
||||
ONEDRIVE_CLIENT_ID_PERSONAL,
|
||||
ONEDRIVE_CLIENT_ID_BUSINESS,
|
||||
ONEDRIVE_SHAREPOINT_URL,
|
||||
ONEDRIVE_SHAREPOINT_TENANT_ID,
|
||||
ENABLE_ONEDRIVE_PERSONAL,
|
||||
ENABLE_ONEDRIVE_BUSINESS,
|
||||
ENABLE_RAG_HYBRID_SEARCH,
|
||||
ENABLE_RAG_HYBRID_SEARCH_ENRICHED_TEXTS,
|
||||
ENABLE_RAG_LOCAL_WEB_FETCH,
|
||||
ENABLE_WEB_LOADER_SSL_VERIFICATION,
|
||||
ENABLE_GOOGLE_DRIVE_INTEGRATION,
|
||||
UPLOAD_DIR,
|
||||
EXTERNAL_WEB_SEARCH_URL,
|
||||
EXTERNAL_WEB_SEARCH_API_KEY,
|
||||
EXTERNAL_WEB_LOADER_URL,
|
||||
EXTERNAL_WEB_LOADER_API_KEY,
|
||||
# WebUI
|
||||
WEBUI_AUTH,
|
||||
WEBUI_NAME,
|
||||
WEBUI_BANNERS,
|
||||
WEBHOOK_URL,
|
||||
ADMIN_EMAIL,
|
||||
SHOW_ADMIN_DETAILS,
|
||||
JWT_EXPIRES_IN,
|
||||
ENABLE_SIGNUP,
|
||||
ENABLE_LOGIN_FORM,
|
||||
ENABLE_API_KEYS,
|
||||
ENABLE_API_KEYS_ENDPOINT_RESTRICTIONS,
|
||||
API_KEYS_ALLOWED_ENDPOINTS,
|
||||
ENABLE_FOLDERS,
|
||||
ENABLE_CHANNELS,
|
||||
ENABLE_NOTES,
|
||||
ENABLE_COMMUNITY_SHARING,
|
||||
ENABLE_MESSAGE_RATING,
|
||||
ENABLE_USER_WEBHOOKS,
|
||||
ENABLE_EVALUATION_ARENA_MODELS,
|
||||
BYPASS_ADMIN_ACCESS_CONTROL,
|
||||
USER_PERMISSIONS,
|
||||
DEFAULT_USER_ROLE,
|
||||
DEFAULT_GROUP_ID,
|
||||
PENDING_USER_OVERLAY_CONTENT,
|
||||
PENDING_USER_OVERLAY_TITLE,
|
||||
DEFAULT_PROMPT_SUGGESTIONS,
|
||||
DEFAULT_MODELS,
|
||||
DEFAULT_PINNED_MODELS,
|
||||
DEFAULT_ARENA_MODEL,
|
||||
MODEL_ORDER_LIST,
|
||||
EVALUATION_ARENA_MODELS,
|
||||
# WebUI (OAuth)
|
||||
ENABLE_OAUTH_ROLE_MANAGEMENT,
|
||||
OAUTH_ROLES_CLAIM,
|
||||
OAUTH_EMAIL_CLAIM,
|
||||
OAUTH_PICTURE_CLAIM,
|
||||
OAUTH_USERNAME_CLAIM,
|
||||
OAUTH_ALLOWED_ROLES,
|
||||
OAUTH_ADMIN_ROLES,
|
||||
# WebUI (LDAP)
|
||||
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_VALIDATE_CERT,
|
||||
LDAP_CIPHERS,
|
||||
# LDAP Group Management
|
||||
ENABLE_LDAP_GROUP_MANAGEMENT,
|
||||
ENABLE_LDAP_GROUP_CREATION,
|
||||
LDAP_ATTRIBUTE_FOR_GROUPS,
|
||||
# Misc
|
||||
ENV,
|
||||
CACHE_DIR,
|
||||
STATIC_DIR,
|
||||
FRONTEND_BUILD_DIR,
|
||||
CORS_ALLOW_ORIGIN,
|
||||
DEFAULT_LOCALE,
|
||||
OAUTH_PROVIDERS,
|
||||
WEBUI_URL,
|
||||
RESPONSE_WATERMARK,
|
||||
# Admin
|
||||
ENABLE_ADMIN_CHAT_ACCESS,
|
||||
BYPASS_ADMIN_ACCESS_CONTROL,
|
||||
ENABLE_ADMIN_EXPORT,
|
||||
TAGS_GENERATION_PROMPT_TEMPLATE,
|
||||
# Tasks
|
||||
TASK_MODEL,
|
||||
TASK_MODEL_EXTERNAL,
|
||||
ENABLE_TAGS_GENERATION,
|
||||
ENABLE_TITLE_GENERATION,
|
||||
ENABLE_FOLLOW_UP_GENERATION,
|
||||
ENABLE_SEARCH_QUERY_GENERATION,
|
||||
ENABLE_RETRIEVAL_QUERY_GENERATION,
|
||||
ENABLE_AUTOCOMPLETE_GENERATION,
|
||||
TAVILY_API_KEY,
|
||||
TAVILY_EXTRACT_DEPTH,
|
||||
# Thread pool size for FastAPI/AnyIO
|
||||
THREAD_POOL_SIZE,
|
||||
TIKA_SERVER_URL,
|
||||
TIKTOKEN_ENCODING_NAME,
|
||||
TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||
FOLLOW_UP_GENERATION_PROMPT_TEMPLATE,
|
||||
TAGS_GENERATION_PROMPT_TEMPLATE,
|
||||
IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE,
|
||||
# Tool Server Configs
|
||||
TOOL_SERVER_CONNECTIONS,
|
||||
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||
USER_PERMISSIONS,
|
||||
VOICE_MODE_PROMPT_TEMPLATE,
|
||||
QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
||||
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
|
||||
WEB_LOADER_CONCURRENT_REQUESTS,
|
||||
WEB_LOADER_ENGINE,
|
||||
WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||
WEB_SEARCH_DOMAIN_FILTER_LIST,
|
||||
WEB_SEARCH_ENGINE,
|
||||
WEB_SEARCH_RESULT_COUNT,
|
||||
WEB_SEARCH_TRUST_ENV,
|
||||
WEBHOOK_URL,
|
||||
# WebUI
|
||||
WEBUI_AUTH,
|
||||
WEBUI_BANNERS,
|
||||
WEBUI_NAME,
|
||||
WEBUI_URL,
|
||||
WHISPER_MODEL,
|
||||
WHISPER_VAD_FILTER,
|
||||
YACY_PASSWORD,
|
||||
YACY_QUERY_URL,
|
||||
YACY_USERNAME,
|
||||
YOUTUBE_LOADER_LANGUAGE,
|
||||
YOUTUBE_LOADER_PROXY_URL,
|
||||
AppConfig,
|
||||
reset_config,
|
||||
)
|
||||
from open_webui.constants import ERROR_MESSAGES
|
||||
from open_webui.env import (
|
||||
LICENSE_KEY,
|
||||
AIOHTTP_CLIENT_SESSION_SSL,
|
||||
AUDIT_EXCLUDED_PATHS,
|
||||
AUDIT_LOG_LEVEL,
|
||||
BYPASS_MODEL_ACCESS_CONTROL,
|
||||
CHANGELOG,
|
||||
REDIS_URL,
|
||||
DEPLOYMENT_ID,
|
||||
ENABLE_COMPRESSION_MIDDLEWARE,
|
||||
ENABLE_OTEL,
|
||||
# SCIM
|
||||
ENABLE_SCIM,
|
||||
ENABLE_SIGNUP_PASSWORD_CONFIRMATION,
|
||||
ENABLE_STAR_SESSIONS_MIDDLEWARE,
|
||||
ENABLE_VERSION_UPDATE_CHECK,
|
||||
ENABLE_WEBSOCKET_SUPPORT,
|
||||
EXTERNAL_PWA_MANIFEST_URL,
|
||||
GLOBAL_LOG_LEVEL,
|
||||
INSTANCE_ID,
|
||||
LICENSE_KEY,
|
||||
MAX_BODY_LOG_SIZE,
|
||||
REDIS_CLUSTER,
|
||||
REDIS_KEY_PREFIX,
|
||||
REDIS_SENTINEL_HOSTS,
|
||||
REDIS_SENTINEL_PORT,
|
||||
GLOBAL_LOG_LEVEL,
|
||||
MAX_BODY_LOG_SIZE,
|
||||
REDIS_URL,
|
||||
RESET_CONFIG_ON_START,
|
||||
SAFE_MODE,
|
||||
SCIM_TOKEN,
|
||||
SRC_LOG_LEVELS,
|
||||
VERSION,
|
||||
DEPLOYMENT_ID,
|
||||
INSTANCE_ID,
|
||||
WEBUI_AUTH_SIGNOUT_REDIRECT_URL,
|
||||
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
|
||||
WEBUI_AUTH_TRUSTED_NAME_HEADER,
|
||||
WEBUI_BUILD_HASH,
|
||||
WEBUI_SECRET_KEY,
|
||||
WEBUI_SESSION_COOKIE_SAME_SITE,
|
||||
WEBUI_SESSION_COOKIE_SECURE,
|
||||
ENABLE_SIGNUP_PASSWORD_CONFIRMATION,
|
||||
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
|
||||
WEBUI_AUTH_TRUSTED_NAME_HEADER,
|
||||
WEBUI_AUTH_SIGNOUT_REDIRECT_URL,
|
||||
# SCIM
|
||||
ENABLE_SCIM,
|
||||
SCIM_TOKEN,
|
||||
ENABLE_COMPRESSION_MIDDLEWARE,
|
||||
ENABLE_WEBSOCKET_SUPPORT,
|
||||
BYPASS_MODEL_ACCESS_CONTROL,
|
||||
RESET_CONFIG_ON_START,
|
||||
ENABLE_VERSION_UPDATE_CHECK,
|
||||
ENABLE_OTEL,
|
||||
EXTERNAL_PWA_MANIFEST_URL,
|
||||
AIOHTTP_CLIENT_SESSION_SSL,
|
||||
ENABLE_STAR_SESSIONS_MIDDLEWARE,
|
||||
)
|
||||
|
||||
|
||||
from open_webui.utils.models import (
|
||||
get_all_models,
|
||||
get_all_base_models,
|
||||
check_model_access,
|
||||
get_filtered_models,
|
||||
from open_webui.internal.db import Session, engine
|
||||
from open_webui.models.chats import Chats
|
||||
from open_webui.models.functions import Functions
|
||||
from open_webui.models.models import Models
|
||||
from open_webui.models.users import Users
|
||||
from open_webui.routers import (
|
||||
audio,
|
||||
auths,
|
||||
channels,
|
||||
chats,
|
||||
configs,
|
||||
evaluations,
|
||||
files,
|
||||
folders,
|
||||
functions,
|
||||
groups,
|
||||
images,
|
||||
knowledge,
|
||||
memories,
|
||||
models,
|
||||
notes,
|
||||
ollama,
|
||||
openai,
|
||||
pipelines,
|
||||
prompts,
|
||||
retrieval,
|
||||
scim,
|
||||
tasks,
|
||||
tools,
|
||||
users,
|
||||
utils,
|
||||
)
|
||||
from open_webui.routers.retrieval import (
|
||||
get_ef,
|
||||
get_embedding_function,
|
||||
get_reranking_function,
|
||||
get_rf,
|
||||
)
|
||||
from open_webui.socket.main import (
|
||||
MODELS,
|
||||
get_event_emitter,
|
||||
get_models_in_use,
|
||||
periodic_usage_pool_cleanup,
|
||||
)
|
||||
from open_webui.socket.main import (
|
||||
app as socket_app,
|
||||
)
|
||||
from open_webui.tasks import (
|
||||
create_task,
|
||||
list_task_ids_by_item_id,
|
||||
list_tasks,
|
||||
redis_task_command_listener,
|
||||
stop_task,
|
||||
) # Import from tasks.py
|
||||
from open_webui.utils import logger
|
||||
from open_webui.utils.audit import AuditLevel, AuditLoggingMiddleware
|
||||
from open_webui.utils.auth import (
|
||||
decode_token,
|
||||
get_admin_user,
|
||||
get_http_authorization_cred,
|
||||
get_license_data,
|
||||
get_verified_user,
|
||||
)
|
||||
from open_webui.utils.chat import (
|
||||
chat_action as chat_action_handler,
|
||||
)
|
||||
from open_webui.utils.chat import (
|
||||
chat_completed as chat_completed_handler,
|
||||
)
|
||||
from open_webui.utils.chat import (
|
||||
generate_chat_completion as chat_completion_handler,
|
||||
chat_completed as chat_completed_handler,
|
||||
chat_action as chat_action_handler,
|
||||
)
|
||||
from open_webui.utils.embeddings import generate_embeddings
|
||||
from open_webui.utils.logger import start_logger
|
||||
from open_webui.utils.middleware import process_chat_payload, process_chat_response
|
||||
from open_webui.utils.access_control import has_access
|
||||
|
||||
from open_webui.utils.auth import (
|
||||
get_license_data,
|
||||
get_http_authorization_cred,
|
||||
decode_token,
|
||||
get_admin_user,
|
||||
get_verified_user,
|
||||
from open_webui.utils.models import (
|
||||
check_model_access,
|
||||
get_all_base_models,
|
||||
get_all_models,
|
||||
get_filtered_models,
|
||||
)
|
||||
from open_webui.utils.oauth import (
|
||||
OAuthClientInformationFull,
|
||||
OAuthClientManager,
|
||||
OAuthManager,
|
||||
decrypt_data,
|
||||
encrypt_data,
|
||||
get_oauth_client_info_with_dynamic_client_registration,
|
||||
)
|
||||
from open_webui.utils.plugin import install_tool_and_function_dependencies
|
||||
from open_webui.utils.oauth import (
|
||||
get_oauth_client_info_with_dynamic_client_registration,
|
||||
encrypt_data,
|
||||
decrypt_data,
|
||||
OAuthManager,
|
||||
OAuthClientManager,
|
||||
OAuthClientInformationFull,
|
||||
)
|
||||
from open_webui.utils.redis import get_redis_connection, get_sentinels_from_env
|
||||
from open_webui.utils.security_headers import SecurityHeadersMiddleware
|
||||
from open_webui.utils.redis import get_redis_connection
|
||||
|
||||
from open_webui.tasks import (
|
||||
redis_task_command_listener,
|
||||
list_task_ids_by_item_id,
|
||||
create_task,
|
||||
stop_task,
|
||||
list_tasks,
|
||||
) # Import from tasks.py
|
||||
|
||||
from open_webui.utils.redis import get_sentinels_from_env
|
||||
|
||||
|
||||
from open_webui.constants import ERROR_MESSAGES
|
||||
|
||||
|
||||
if SAFE_MODE:
|
||||
print("SAFE MODE ENABLED")
|
||||
|
|
@ -953,6 +916,7 @@ app.state.config.SEARCHAPI_ENGINE = SEARCHAPI_ENGINE
|
|||
app.state.config.SERPAPI_API_KEY = SERPAPI_API_KEY
|
||||
app.state.config.SERPAPI_ENGINE = SERPAPI_ENGINE
|
||||
app.state.config.JINA_API_KEY = JINA_API_KEY
|
||||
app.state.config.JINA_SEARCH_API_URL = JINA_SEARCH_API_URL
|
||||
app.state.config.BING_SEARCH_V7_ENDPOINT = BING_SEARCH_V7_ENDPOINT
|
||||
app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY = BING_SEARCH_V7_SUBSCRIPTION_KEY
|
||||
app.state.config.EXA_API_KEY = EXA_API_KEY
|
||||
|
|
@ -1653,7 +1617,7 @@ async def chat_completion(
|
|||
{"type": "chat:tasks:cancel"},
|
||||
)
|
||||
)
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
raise # re-raise to ensure proper task cancellation handling
|
||||
|
|
@ -1988,7 +1952,7 @@ async def get_app_version():
|
|||
async def get_app_latest_release_version(user=Depends(get_verified_user)):
|
||||
if not ENABLE_VERSION_UPDATE_CHECK:
|
||||
log.debug(
|
||||
f"Version update check is disabled, returning current version as latest version"
|
||||
"Version update check is disabled, returning current version as latest version"
|
||||
)
|
||||
return {"current": VERSION, "latest": VERSION}
|
||||
try:
|
||||
|
|
@ -2076,7 +2040,7 @@ try:
|
|||
log.info("Using Redis for session")
|
||||
else:
|
||||
raise ValueError("No Redis URL provided")
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
app.add_middleware(
|
||||
SessionMiddleware,
|
||||
secret_key=WEBUI_SECRET_KEY,
|
||||
|
|
|
|||
|
|
@ -1,15 +1,20 @@
|
|||
import logging
|
||||
|
||||
import requests
|
||||
from open_webui.retrieval.web.main import SearchResult
|
||||
from open_webui.env import SRC_LOG_LEVELS
|
||||
from open_webui.retrieval.web.main import SearchResult
|
||||
from yarl import URL
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
log.setLevel(SRC_LOG_LEVELS["RAG"])
|
||||
|
||||
|
||||
def search_jina(api_key: str, query: str, count: int) -> list[SearchResult]:
|
||||
def search_jina(
|
||||
api_key: str,
|
||||
query: str,
|
||||
count: int,
|
||||
api_url: str = "https://s.jina.ai/",
|
||||
) -> list[SearchResult]:
|
||||
"""
|
||||
Search using Jina's Search API and return the results as a list of SearchResult objects.
|
||||
Args:
|
||||
|
|
@ -19,7 +24,12 @@ def search_jina(api_key: str, query: str, count: int) -> list[SearchResult]:
|
|||
Returns:
|
||||
list[SearchResult]: A list of search results
|
||||
"""
|
||||
jina_search_endpoint = "https://s.jina.ai/"
|
||||
# Handle PersistentConfig object
|
||||
if hasattr(api_key, "__str__"):
|
||||
api_key = str(api_key)
|
||||
|
||||
if hasattr(api_url, "__str__"):
|
||||
api_url = str(api_url)
|
||||
|
||||
headers = {
|
||||
"Accept": "application/json",
|
||||
|
|
@ -30,7 +40,7 @@ def search_jina(api_key: str, query: str, count: int) -> list[SearchResult]:
|
|||
|
||||
payload = {"q": query, "count": count if count <= 10 else 10}
|
||||
|
||||
url = str(URL(jina_search_endpoint))
|
||||
url = str(URL(api_url))
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
|
|
|||
|
|
@ -526,6 +526,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)):
|
|||
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
||||
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
||||
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
||||
"JINA_SEARCH_API_URL": request.app.state.config.JINA_SEARCH_API_URL,
|
||||
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
||||
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
||||
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
||||
|
|
@ -584,6 +585,7 @@ class WebConfig(BaseModel):
|
|||
SERPAPI_API_KEY: Optional[str] = None
|
||||
SERPAPI_ENGINE: Optional[str] = None
|
||||
JINA_API_KEY: Optional[str] = None
|
||||
JINA_SEARCH_API_URL: Optional[str] = None
|
||||
BING_SEARCH_V7_ENDPOINT: Optional[str] = None
|
||||
BING_SEARCH_V7_SUBSCRIPTION_KEY: Optional[str] = None
|
||||
EXA_API_KEY: Optional[str] = None
|
||||
|
|
@ -1051,6 +1053,7 @@ async def update_rag_config(
|
|||
request.app.state.config.SERPAPI_API_KEY = form_data.web.SERPAPI_API_KEY
|
||||
request.app.state.config.SERPAPI_ENGINE = form_data.web.SERPAPI_ENGINE
|
||||
request.app.state.config.JINA_API_KEY = form_data.web.JINA_API_KEY
|
||||
request.app.state.config.JINA_SEARCH_API_URL = form_data.web.JINA_SEARCH_API_URL
|
||||
request.app.state.config.BING_SEARCH_V7_ENDPOINT = (
|
||||
form_data.web.BING_SEARCH_V7_ENDPOINT
|
||||
)
|
||||
|
|
@ -1196,6 +1199,7 @@ async def update_rag_config(
|
|||
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
||||
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
||||
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
||||
"JINA_SEARCH_API_URL": request.app.state.config.JINA_SEARCH_API_URL,
|
||||
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
||||
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
||||
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
||||
|
|
@ -1459,7 +1463,6 @@ def process_file(
|
|||
|
||||
if file:
|
||||
try:
|
||||
|
||||
collection_name = form_data.collection_name
|
||||
|
||||
if collection_name is None:
|
||||
|
|
@ -1972,6 +1975,7 @@ def search_web(
|
|||
request.app.state.config.JINA_API_KEY,
|
||||
query,
|
||||
request.app.state.config.WEB_SEARCH_RESULT_COUNT,
|
||||
request.app.state.config.JINA_SEARCH_API_URL,
|
||||
)
|
||||
elif engine == "bing":
|
||||
return search_bing(
|
||||
|
|
@ -2058,7 +2062,6 @@ def search_web(
|
|||
async def process_web_search(
|
||||
request: Request, form_data: SearchForm, user=Depends(get_verified_user)
|
||||
):
|
||||
|
||||
urls = []
|
||||
result_items = []
|
||||
|
||||
|
|
|
|||
|
|
@ -448,19 +448,39 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{:else if webConfig.WEB_SEARCH_ENGINE === 'jina'}
|
||||
<div class="mb-2.5 flex w-full flex-col">
|
||||
<div>
|
||||
<div class=" self-center text-xs font-medium mb-1">
|
||||
{$i18n.t('Jina API Key')}
|
||||
</div>
|
||||
{:else if webConfig.WEB_SEARCH_ENGINE === 'jina'}
|
||||
<div class="mb-2.5 flex w-full flex-col">
|
||||
<div>
|
||||
<div class=" self-center text-xs font-medium mb-1">
|
||||
{$i18n.t('Jina Search API URL')}
|
||||
</div>
|
||||
|
||||
<SensitiveInput
|
||||
placeholder={$i18n.t('Enter Jina API Key')}
|
||||
bind:value={webConfig.JINA_API_KEY}
|
||||
/>
|
||||
<div class="flex w-full">
|
||||
<div class="flex-1">
|
||||
<input
|
||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-hidden"
|
||||
type="text"
|
||||
placeholder={$i18n.t('Enter Jina Search API URL')}
|
||||
bind:value={webConfig.JINA_SEARCH_API_URL}
|
||||
autocomplete="off"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2.5 flex w-full flex-col">
|
||||
<div>
|
||||
<div class=" self-center text-xs font-medium mb-1">
|
||||
{$i18n.t('Jina API Key')}
|
||||
</div>
|
||||
|
||||
<SensitiveInput
|
||||
placeholder={$i18n.t('Enter Jina API Key')}
|
||||
bind:value={webConfig.JINA_API_KEY}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{:else if webConfig.WEB_SEARCH_ENGINE === 'bing'}
|
||||
<div class="mb-2.5 flex w-full flex-col">
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "يناير",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "انضم إلى Discord للحصول على المساعدة.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "معاينة JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
|
||||
"Enter Jina API Key": "أدخل مفتاح API لـ Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "أدخل كلمة مرور Jupyter",
|
||||
"Enter Jupyter Token": "أدخل رمز Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "يناير",
|
||||
"Jina API Key": "مفتاح API لـ Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "انضم إلى Discord للحصول على المساعدة.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "معاينة JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
|
||||
"Enter Jina API Key": "Въведете API ключ за Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Въведете парола за Jupyter",
|
||||
"Enter Jupyter Token": "Въведете токен за Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Януари",
|
||||
"Jina API Key": "API ключ за Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "свържете се с нашия Discord за помощ.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON Преглед",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "জানুয়ারী",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON প্রিভিউ",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "པར་གྱི་ཆེ་ཆུང་འཇུག་པ། (དཔེར་ན། 512x512)",
|
||||
"Enter Jina API Key": "Jina API ལྡེ་མིག་འཇུག་པ།",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Jupyter གསང་གྲངས་འཇུག་པ།",
|
||||
"Enter Jupyter Token": "Jupyter Token འཇུག་པ།",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "ཟླ་བ་དང་པོ།",
|
||||
"Jina API Key": "Jina API ལྡེ་མིག",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "རོགས་རམ་ཆེད་དུ་ང་ཚོའི་ Discord ལ་མཉམ་ཞུགས་བྱེད་པ།",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON སྔོན་ལྟ།",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Unesite veličinu slike (npr. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Januar",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "pridružite se našem Discordu za pomoć.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON pretpregled",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Introdueix l'ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Introdueix la mida de la imatge (p. ex. 512x512)",
|
||||
"Enter Jina API Key": "Introdueix la clau API de Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Introdueix la configuració JSON (per exemple, {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Introdueix la contrasenya de Jupyter",
|
||||
"Enter Jupyter Token": "Introdueix el token de Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Cursiva",
|
||||
"January": "Gener",
|
||||
"Jina API Key": "Clau API de Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "uneix-te al nostre Discord per obtenir ajuda.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Vista prèvia del document JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Pagsulod sa gidak-on sa hulagway (pananglitan 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Apil sa among Discord alang sa tabang.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Zadejte velikost obrázku (např. 512x512)",
|
||||
"Enter Jina API Key": "Zadejte API klíč pro Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Zadejte JSON konfiguraci (např. {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Zadejte heslo pro Jupyter",
|
||||
"Enter Jupyter Token": "Zadejte token pro Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kurzíva",
|
||||
"January": "Leden",
|
||||
"Jina API Key": "API klíč pro Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "připojte se na náš Discord pro pomoc.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Náhled JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Indtast ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Indtast billedstørrelse (f.eks. 512x512)",
|
||||
"Enter Jina API Key": "Indtast Jina API nøgle",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Indtast JSON konfiguration (f.eks., {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Indtast Jupyter password",
|
||||
"Enter Jupyter Token": "Indtast Jupyter token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kursiv",
|
||||
"January": "Januar",
|
||||
"Jina API Key": "Jina API-nøgle",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "tilslut dig vores Discord for at få hjælp.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON-forhåndsvisning",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "ID eingeben",
|
||||
"Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)",
|
||||
"Enter Jina API Key": "Geben Sie den Jina-API-Schlüssel ein",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Geben Sie die JSON-Konfiguration ein (z.\u202fB. {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Geben Sie das Jupyter-Passwort ein",
|
||||
"Enter Jupyter Token": "Geben Sie den Jupyter-Token ein",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kursiv",
|
||||
"January": "Januar",
|
||||
"Jina API Key": "Jina-API-Schlüssel",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Treten Sie unserem Discord bei, um Hilfe zu erhalten.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON-Vorschau",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Enter Size of Wow (e.g. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "join our Discord for help.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Εισάγετε ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Εισάγετε το Μέγεθος Εικόνας (π.χ. 512x512)",
|
||||
"Enter Jina API Key": "Εισάγετε το Κλειδί API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Εισάγετε Κωδικό Jupyter",
|
||||
"Enter Jupyter Token": "Εισάγετε Jupyter Token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Ιανουάριος",
|
||||
"Jina API Key": "Κλειδί API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "συμμετέχετε στο Discord μας για βοήθεια.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Προεπισκόπηση JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "",
|
||||
"JSON": "",
|
||||
"JSON Preview": "",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "",
|
||||
"JSON": "",
|
||||
"JSON Preview": "",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Ingresar ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Ingresar Tamaño de Imagen (p.ej. 512x512)",
|
||||
"Enter Jina API Key": "Ingresar Clave API de Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Ingresar config JSON (ej., {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Ingresar Contraseña de Jupyter",
|
||||
"Enter Jupyter Token": "Ingresar Token de Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Cursiva",
|
||||
"January": "Enero",
|
||||
"Jina API Key": "Clave API de Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "unete a nuestro Discord para ayuda.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Prevista del JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Enter ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Sisestage pildi suurus (nt 512x512)",
|
||||
"Enter Jina API Key": "Sisestage Jina API võti",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Enter JSON config (e.g., {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Sisestage Jupyter parool",
|
||||
"Enter Jupyter Token": "Sisestage Jupyter token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kaldkiri",
|
||||
"January": "Jaanuar",
|
||||
"Jina API Key": "Jina API võti",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "liituge abi saamiseks meie Discordiga.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON eelvaade",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Sartu Irudi Tamaina (adib. 512x512)",
|
||||
"Enter Jina API Key": "Sartu Jina API Gakoa",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Urtarrila",
|
||||
"Jina API Key": "Jina API Gakoa",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "batu gure Discord-era laguntzarako.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON Aurrebista",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "شناسه را وارد کنید",
|
||||
"Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)",
|
||||
"Enter Jina API Key": "کلید API جینا را وارد کنید",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "پیکربندی JSON را وارد کنید (مثلاً، {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "رمز عبور ژوپیتر را وارد کنید",
|
||||
"Enter Jupyter Token": "توکن ژوپیتر را وارد کنید",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "ایتالیک",
|
||||
"January": "ژانویه",
|
||||
"Jina API Key": "کلید API جینا",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "پیش نمایش JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Kirjoita ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Kirjoita kuvan koko (esim. 512x512)",
|
||||
"Enter Jina API Key": "Kirjoita Jina API -avain",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Kirjoita JSON asetus (esim. {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Kirjoita Jupyter salasana",
|
||||
"Enter Jupyter Token": "Kirjoita Juypyter token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kursiivi",
|
||||
"January": "tammikuu",
|
||||
"Jina API Key": "Jina API -avain",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "liity Discordiimme saadaksesi apua.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON-esikatselu",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
||||
"Enter Jina API Key": "Entrez la clé API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Entrez le mot de passe Jupyter",
|
||||
"Enter Jupyter Token": "Entrez le Token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Janvier",
|
||||
"Jina API Key": "Clé API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Aperçu JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Entrez l'ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
||||
"Enter Jina API Key": "Entrez la clé API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Entrez le mot de passe Jupyter",
|
||||
"Enter Jupyter Token": "Entrez le Token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Italique",
|
||||
"January": "Janvier",
|
||||
"Jina API Key": "Clé API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Aperçu JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Ingrese o tamaño da imaxen (p.ej. 512x512)",
|
||||
"Enter Jina API Key": "Ingrese a chave API de Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Ingrese o contrasinal de Jupyter",
|
||||
"Enter Jupyter Token": "Ingrese o token de Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Xaneiro",
|
||||
"Jina API Key": "chave API de Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Únase o noso Discord para obter axuda.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Vista previa de JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "הזן גודל תמונה (למשל 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "ינואר",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "הצטרף ל-Discord שלנו לעזרה.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "תצוגה מקדימה של JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "जनवरी",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "मदद के लिए हमारे डिस्कोर्ड में शामिल हों।",
|
||||
"JSON": "ज्ञान प्रकार",
|
||||
"JSON Preview": "JSON पूर्वावलोकन",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Unesite veličinu slike (npr. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Siječanj",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "pridružite se našem Discordu za pomoć.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON pretpregled",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Add meg a kép méretet (pl. 512x512)",
|
||||
"Enter Jina API Key": "Add meg a Jina API kulcsot",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Add meg a Jupyter jelszavát",
|
||||
"Enter Jupyter Token": "Add meg a Jupyter tokent",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Január",
|
||||
"Jina API Key": "Jina API kulcs",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Csatlakozz a Discord szerverünkhöz segítségért.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON előnézet",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Januari",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "bergabunglah dengan Discord kami untuk mendapatkan bantuan.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Pratinjau JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Cuir isteach aitheantas",
|
||||
"Enter Image Size (e.g. 512x512)": "Iontráil Méid Íomhá (m.sh. 512x512)",
|
||||
"Enter Jina API Key": "Cuir isteach Eochair API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Cuir isteach cumraíocht JSON (m.sh., {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Cuir isteach Pasfhocal Jupyter",
|
||||
"Enter Jupyter Token": "Cuir isteach Jupyter Chomhartha",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Iodálach",
|
||||
"January": "Eanáir",
|
||||
"Jina API Key": "Jina API Eochair",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "bí inár Discord chun cabhair a fháil.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Réamhamharc JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Inserisci Dimensione Immagine (ad esempio 512x512)",
|
||||
"Enter Jina API Key": "Inserisci Chiave API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Inserisci Password Jupyter",
|
||||
"Enter Jupyter Token": "Inserisci Token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Gennaio",
|
||||
"Jina API Key": "Chiave API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "unisciti al nostro Discord per ricevere aiuto.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Anteprima JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "IDを入力",
|
||||
"Enter Image Size (e.g. 512x512)": "画像サイズを入力 (例: 512x512)",
|
||||
"Enter Jina API Key": "Jina APIキーを入力",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "JSON 設定を入力 (例: {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Jupyterパスワードを入力",
|
||||
"Enter Jupyter Token": "Jupyterトークンを入力",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "斜体",
|
||||
"January": "1月",
|
||||
"Jina API Key": "Jina APIキー",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "ヘルプについては、Discord に参加してください。",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON プレビュー",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "შეიყვანეთ ID",
|
||||
"Enter Image Size (e.g. 512x512)": "შეიყვანეთ სურათის ზომა (მაგ. 512x512)",
|
||||
"Enter Jina API Key": "შეიყვანეთ Jina API-ის გასაღები",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "შეიყვანეთ Jupyter-ის პაროლი",
|
||||
"Enter Jupyter Token": "შეიყვანეთ Jupyter-ის კოდი",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "კურსივი",
|
||||
"January": "იანვარი",
|
||||
"Jina API Key": "Jina API-ის გასაღები",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "დახმარებისთვის შემოდით ჩვენს Discord-ზე.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON გადახედვა",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Sekcem-d asulay ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Sekcem tugna Size (amedya 512x512)",
|
||||
"Enter Jina API Key": "Sekcem tasarut API n Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Sekcem-d tawila JSON (amedya, {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Sekcem-d awal n uɛeddi n Jupyter",
|
||||
"Enter Jupyter Token": "Sekcem-d ajiṭun n Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Uknan",
|
||||
"January": "Yennayer",
|
||||
"Jina API Key": "Tasarut API n Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "nadi-d ɣef tallalt-nneɣ.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Taskant JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "ID 입력",
|
||||
"Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)",
|
||||
"Enter Jina API Key": "Jina API 키 입력",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "JSON 설정 입력 (예: {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Jupyter 비밀번호 입력",
|
||||
"Enter Jupyter Token": "Jupyter 토큰 입력",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "기울임",
|
||||
"January": "1월",
|
||||
"Jina API Key": "Jina API 키",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON 미리 보기",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Įveskite paveiksliuko dydį (pvz. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Sausis",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "prisijunkite prie mūsų Discord.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON peržiūra",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Masukkan Saiz Imej (cth 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Januari",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "sertai Discord kami untuk mendapatkan bantuan.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Pratonton JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Angi bildestørrelse (f.eks. 512x512)",
|
||||
"Enter Jina API Key": "Angi API-nøkkel for Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Angi passord for Jupyter",
|
||||
"Enter Jupyter Token": "Angi token for Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "januar",
|
||||
"Jina API Key": "API-nøkkel for Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "bli med i Discord-fellesskapet vårt for å få hjelp.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Forhåndsvisning av JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Voeg afbeelding formaat toe (Bijv. 512x512)",
|
||||
"Enter Jina API Key": "Voer Jina API-sleutel in",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Voer Jupyter-wachtwoord in",
|
||||
"Enter Jupyter Token": "Voer Jupyter-token in",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Januari",
|
||||
"Jina API Key": "Jina API-sleutel",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "join onze Discord voor hulp.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON-voorbeeld",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "ਚਿੱਤਰ ਆਕਾਰ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "ਜਨਵਰੀ",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "ਮਦਦ ਲਈ ਸਾਡੇ ਡਿਸਕੋਰਡ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ।",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON ਪੂਰਵ-ਦਰਸ਼ਨ",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Podaj rozmiar obrazu (np. 512x512)",
|
||||
"Enter Jina API Key": "Wprowadź klucz API Jiny",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Wprowadź hasło Jupyter",
|
||||
"Enter Jupyter Token": "Wprowadź token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Pochylenie",
|
||||
"January": "Styczeń",
|
||||
"Jina API Key": "Klucz API Jiny",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "Dołącz do naszego Discorda, aby uzyskać pomoc.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Podgląd JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Digite o ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
|
||||
"Enter Jina API Key": "Digite a Chave API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Insira a configuração JSON (por exemplo, {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Digite a senha do Jupyter",
|
||||
"Enter Jupyter Token": "Insira o Token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Itálico",
|
||||
"January": "Janeiro",
|
||||
"Jina API Key": "Chave de API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "junte-se ao nosso Discord para ajudar.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Pré-visualização JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Escreva o Tamanho da Imagem (por exemplo, 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Janeiro",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Pré-visualização JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Introduceți Dimensiunea Imaginii (de ex. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Ianuarie",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "alătură-te Discord-ului nostru pentru ajutor.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Previzualizare JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Введите ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Введите размер изображения (например, 512x512)",
|
||||
"Enter Jina API Key": "Введите ключ API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Введите JSON конфигурацию (напр., {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Введите пароль Jupyter",
|
||||
"Enter Jupyter Token": "Введите токен Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Курсив",
|
||||
"January": "Январь",
|
||||
"Jina API Key": "Ключ API для Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "присоединяйтесь к нашему Discord для помощи.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Предварительный просмотр JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Zadajte veľkosť obrázka (napr. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Január",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "pripojte sa k nášmu Discordu pre pomoc.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Náhľad JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Унесите величину слике (нпр. 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Јануар",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "придружите се нашем Дискорду за помоћ.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "ЈСОН Преглед",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "Ange ID",
|
||||
"Enter Image Size (e.g. 512x512)": "Ange bildstorlek (t.ex. 512x512)",
|
||||
"Enter Jina API Key": "Ange Jina API-nyckel",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "Ange JSON-konfiguration (t.ex. {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "Ange Jupyter-lösenord",
|
||||
"Enter Jupyter Token": "Ange Jupyter-token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "Kursiv",
|
||||
"January": "januari",
|
||||
"Jina API Key": "Jina API-nyckel",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "gå med i vår Discord för hjälp.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Förhandsversion av JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "ใส่ ID",
|
||||
"Enter Image Size (e.g. 512x512)": "ใส่ขนาดภาพ (เช่น 512x512)",
|
||||
"Enter Jina API Key": "ป้อน Jina API Key",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "ป้อนการตั้งค่า JSON (เช่น {\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "ป้อนรหัสผ่าน Jupyter",
|
||||
"Enter Jupyter Token": "ป้อน Jupyter Token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "ตัวเอียง",
|
||||
"January": "มกราคม",
|
||||
"Jina API Key": "API Key ของ Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "เข้าร่วม Discord ของเราเพื่อขอความช่วยเหลือ",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "ดูตัวอย่าง JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Ýanwar",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "",
|
||||
"JSON": "",
|
||||
"JSON Preview": "",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Görüntü Boyutunu Girin (örn. 512x512)",
|
||||
"Enter Jina API Key": "Jina API Anahtarını Girin",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Ocak",
|
||||
"Jina API Key": "Jina API Anahtarı",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "yardım için Discord'umuza katılın.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON Önizlemesi",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "رەسىم چوڭلۇقى كىرگۈزۈڭ (مەسىلەن: 512x512)",
|
||||
"Enter Jina API Key": "Jina API ئاچقۇچى كىرگۈزۈڭ",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Jupyter پارول كىرگۈزۈڭ",
|
||||
"Enter Jupyter Token": "Jupyter Token كىرگۈزۈڭ",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "يانۋار",
|
||||
"Jina API Key": "Jina API ئاچقۇچى",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "ياردەم ئۈچۈن Discord غا قوشۇلىڭ.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON ئالدىن كۆرۈش",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Введіть розмір зображення (напр., 512x512)",
|
||||
"Enter Jina API Key": "Введіть ключ API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Введіть пароль Jupyter",
|
||||
"Enter Jupyter Token": "Введіть токен Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Січень",
|
||||
"Jina API Key": "Ключ API для Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "приєднуйтеся до нашого Discord для допомоги.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Перегляд JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "تصویر کا سائز درج کریں (مثال: 512x512)",
|
||||
"Enter Jina API Key": "",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "",
|
||||
"Enter Jupyter Token": "",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "جنوری",
|
||||
"Jina API Key": "",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "مدد کے لئے ہمارے ڈسکارڈ میں شامل ہوں",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON پیش منظر",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Расм ҳажмини киритинг (масалан, 512х512)",
|
||||
"Enter Jina API Key": "Jina АПИ калитини киритинг",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Jupiter паролини киритинг",
|
||||
"Enter Jupyter Token": "Jupiter токенини киритинг",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Январ",
|
||||
"Jina API Key": "Жина АПИ калити",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "ёрдам учун Дисcордимизга қўшилинг.",
|
||||
"JSON": "ЖСОН",
|
||||
"JSON Preview": "ЖСОН кўриб чиқиш",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Rasm hajmini kiriting (masalan, 512x512)",
|
||||
"Enter Jina API Key": "Jina API kalitini kiriting",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Jupyter parolini kiriting",
|
||||
"Enter Jupyter Token": "Jupyter tokenini kiriting",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Yanvar",
|
||||
"Jina API Key": "Jina API kaliti",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "yordam uchun Discordimizga qo'shiling.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON ko'rib chiqish",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "",
|
||||
"Enter Image Size (e.g. 512x512)": "Nhập Kích thước ảnh (vd: 512x512)",
|
||||
"Enter Jina API Key": "Nhập Khóa API Jina",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "",
|
||||
"Enter Jupyter Password": "Nhập Mật khẩu Jupyter",
|
||||
"Enter Jupyter Token": "Nhập Token Jupyter",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "",
|
||||
"January": "Tháng 1",
|
||||
"Jina API Key": "Khóa API Jina",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "tham gia Discord của chúng tôi để được trợ giúp.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Xem trước JSON",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "输入 ID",
|
||||
"Enter Image Size (e.g. 512x512)": "输入图像分辨率(例如:512x512)",
|
||||
"Enter Jina API Key": "输入 Jina 接口密钥",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "输入 JSON 配置(例如:{\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "输入 Jupyter 密码",
|
||||
"Enter Jupyter Token": "输入 Jupyter 令牌",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "斜体",
|
||||
"January": "一月",
|
||||
"Jina API Key": "Jina 接口密钥",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "加入我们的 Discord 寻求帮助",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON 预览",
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@
|
|||
"Enter ID": "輸入 ID",
|
||||
"Enter Image Size (e.g. 512x512)": "輸入圖片尺寸(例如:512x512)",
|
||||
"Enter Jina API Key": "輸入 Jina API 金鑰",
|
||||
"Enter Jina Search API URL": "",
|
||||
"Enter JSON config (e.g., {\"disable_links\": true})": "輸入 JSON 設定(例如:{\"disable_links\": true})",
|
||||
"Enter Jupyter Password": "輸入 Jupyter 密碼",
|
||||
"Enter Jupyter Token": "輸入 Jupyter Token",
|
||||
|
|
@ -932,6 +933,7 @@
|
|||
"Italic": "斜體",
|
||||
"January": "1 月",
|
||||
"Jina API Key": "Jina API 金鑰",
|
||||
"Jina Search API URL": "",
|
||||
"join our Discord for help.": "加入我們的 Discord 以取得協助。",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON 預覽",
|
||||
|
|
|
|||
Loading…
Reference in a new issue