diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 036bb97ae..cae363f42 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check for changes in package.json run: | @@ -36,7 +36,7 @@ jobs: echo "::set-output name=content::$CHANGELOG_ESCAPED" - name: Create GitHub release - uses: actions/github-script@v5 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -51,7 +51,7 @@ jobs: console.log(`Created release ${release.data.html_url}`) - name: Upload package to GitHub release - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: package path: . diff --git a/.github/workflows/format-backend.yaml b/.github/workflows/format-backend.yaml index dd0e94868..2e980de41 100644 --- a/.github/workflows/format-backend.yaml +++ b/.github/workflows/format-backend.yaml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/format-build-frontend.yaml b/.github/workflows/format-build-frontend.yaml index 6f89f14a9..9ee57f475 100644 --- a/.github/workflows/format-build-frontend.yaml +++ b/.github/workflows/format-build-frontend.yaml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '20' # Or specify any other version you want to use diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 96ba50289..2426aff27 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -99,7 +99,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} diff --git a/backend/apps/ollama/main.py b/backend/apps/ollama/main.py index df268067f..fb8a35a17 100644 --- a/backend/apps/ollama/main.py +++ b/backend/apps/ollama/main.py @@ -43,6 +43,7 @@ from utils.utils import ( from config import ( SRC_LOG_LEVELS, OLLAMA_BASE_URLS, + ENABLE_OLLAMA_API, ENABLE_MODEL_FILTER, MODEL_FILTER_LIST, UPLOAD_DIR, @@ -67,6 +68,8 @@ app.state.config = AppConfig() app.state.config.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER app.state.config.MODEL_FILTER_LIST = MODEL_FILTER_LIST + +app.state.config.ENABLE_OLLAMA_API = ENABLE_OLLAMA_API app.state.config.OLLAMA_BASE_URLS = OLLAMA_BASE_URLS app.state.MODELS = {} @@ -96,6 +99,21 @@ async def get_status(): return {"status": True} +@app.get("/config") +async def get_config(user=Depends(get_admin_user)): + return {"ENABLE_OLLAMA_API": app.state.config.ENABLE_OLLAMA_API} + + +class OllamaConfigForm(BaseModel): + enable_ollama_api: Optional[bool] = None + + +@app.post("/config/update") +async def update_config(form_data: OllamaConfigForm, user=Depends(get_admin_user)): + app.state.config.ENABLE_OLLAMA_API = form_data.enable_ollama_api + return {"ENABLE_OLLAMA_API": app.state.config.ENABLE_OLLAMA_API} + + @app.get("/urls") async def get_ollama_api_urls(user=Depends(get_admin_user)): return {"OLLAMA_BASE_URLS": app.state.config.OLLAMA_BASE_URLS} @@ -156,14 +174,23 @@ def merge_models_lists(model_lists): async def get_all_models(): log.info("get_all_models()") - tasks = [fetch_url(f"{url}/api/tags") for url in app.state.config.OLLAMA_BASE_URLS] - responses = await asyncio.gather(*tasks) - models = { - "models": merge_models_lists( - map(lambda response: response["models"] if response else None, responses) - ) - } + if app.state.config.ENABLE_OLLAMA_API: + tasks = [ + fetch_url(f"{url}/api/tags") for url in app.state.config.OLLAMA_BASE_URLS + ] + responses = await asyncio.gather(*tasks) + + models = { + "models": merge_models_lists( + map( + lambda response: response["models"] if response else None, responses + ) + ) + } + + else: + models = {"models": []} app.state.MODELS = {model["model"]: model for model in models["models"]} diff --git a/backend/config.py b/backend/config.py index 9ba059008..0b18eab43 100644 --- a/backend/config.py +++ b/backend/config.py @@ -384,6 +384,13 @@ if not os.path.exists(LITELLM_CONFIG_PATH): # OLLAMA_BASE_URL #################################### + +ENABLE_OLLAMA_API = PersistentConfig( + "ENABLE_OLLAMA_API", + "ollama.enable", + os.environ.get("ENABLE_OLLAMA_API", "True").lower() == "true", +) + OLLAMA_API_BASE_URL = os.environ.get( "OLLAMA_API_BASE_URL", "http://localhost:11434/api" ) diff --git a/backend/requirements.txt b/backend/requirements.txt index a82da1966..29e37f8b8 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,42 +1,42 @@ -fastapi==0.109.2 +fastapi==0.111.0 uvicorn[standard]==0.22.0 pydantic==2.7.1 python-multipart==0.0.9 Flask==3.0.3 -Flask-Cors==4.0.0 +Flask-Cors==4.0.1 python-socketio==5.11.2 python-jose==3.3.0 passlib[bcrypt]==1.7.4 -requests==2.31.0 +requests==2.32.2 aiohttp==3.9.5 -peewee==3.17.3 +peewee==3.17.5 peewee-migrate==1.12.2 psycopg2-binary==2.9.9 -PyMySQL==1.1.0 -bcrypt==4.1.2 +PyMySQL==1.1.1 +bcrypt==4.1.3 -litellm[proxy]==1.35.28 +litellm[proxy]==1.37.20 -boto3==1.34.95 +boto3==1.34.110 argon2-cffi==23.1.0 APScheduler==3.10.4 -google-generativeai==0.5.2 +google-generativeai==0.5.4 -langchain==0.1.16 -langchain-community==0.0.34 -langchain-chroma==0.1.0 +langchain==0.2.0 +langchain-community==0.2.0 +langchain-chroma==0.1.1 fake-useragent==1.5.1 -chromadb==0.4.24 +chromadb==0.5.0 sentence-transformers==2.7.0 pypdf==4.2.0 docx2txt==0.8 python-pptx==0.6.23 -unstructured==0.11.8 +unstructured==0.14.0 Markdown==3.6 pypandoc==1.13 pandas==2.2.2 @@ -46,16 +46,16 @@ xlrd==2.0.1 validators==0.28.1 opencv-python-headless==4.9.0.80 -rapidocr-onnxruntime==1.2.3 +rapidocr-onnxruntime==1.3.22 -fpdf2==2.7.8 +fpdf2==2.7.9 rank-bm25==0.2.2 -faster-whisper==1.0.1 +faster-whisper==1.0.2 PyJWT[crypto]==2.8.0 black==24.4.2 -langfuse==2.27.3 +langfuse==2.33.0 youtube-transcript-api==0.6.2 -pytube \ No newline at end of file +pytube==15.0.0 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5cc29ec97..004ce374b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,44 +6,44 @@ authors = [ ] license = { file = "LICENSE" } dependencies = [ - "fastapi==0.109.2", + "fastapi==0.111.0", "uvicorn[standard]==0.22.0", "pydantic==2.7.1", "python-multipart==0.0.9", "Flask==3.0.3", - "Flask-Cors==4.0.0", + "Flask-Cors==4.0.1", "python-socketio==5.11.2", "python-jose==3.3.0", "passlib[bcrypt]==1.7.4", - "requests==2.31.0", + "requests==2.32.2", "aiohttp==3.9.5", - "peewee==3.17.3", + "peewee==3.17.5", "peewee-migrate==1.12.2", "psycopg2-binary==2.9.9", "PyMySQL==1.1.0", - "bcrypt==4.1.2", + "bcrypt==4.1.3", - "litellm[proxy]==1.35.28", + "litellm[proxy]==1.37.20", - "boto3==1.34.95", + "boto3==1.34.110", "argon2-cffi==23.1.0", "APScheduler==3.10.4", - "google-generativeai==0.5.2", + "google-generativeai==0.5.4", - "langchain==0.1.16", - "langchain-community==0.0.34", - "langchain-chroma==0.1.0", + "langchain==0.2.0", + "langchain-community==0.2.0", + "langchain-chroma==0.1.1", "fake-useragent==1.5.1", - "chromadb==0.4.24", + "chromadb==0.5.0", "sentence-transformers==2.7.0", "pypdf==4.2.0", "docx2txt==0.8", - "unstructured==0.11.8", + "unstructured==0.14.0", "Markdown==3.6", "pypandoc==1.13", "pandas==2.2.2", @@ -53,19 +53,19 @@ dependencies = [ "validators==0.28.1", "opencv-python-headless==4.9.0.80", - "rapidocr-onnxruntime==1.2.3", + "rapidocr-onnxruntime==1.3.22", - "fpdf2==2.7.8", + "fpdf2==2.7.9", "rank-bm25==0.2.2", - "faster-whisper==1.0.1", + "faster-whisper==1.0.2", "PyJWT[crypto]==2.8.0", "black==24.4.2", - "langfuse==2.27.3", + "langfuse==2.33.0", "youtube-transcript-api==0.6.2", - "pytube", + "pytube==15.0.0", ] readme = "README.md" requires-python = ">= 3.11, < 3.12.0a1" diff --git a/requirements-dev.lock b/requirements-dev.lock index 7e2d1d241..93c126eb4 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -41,7 +41,7 @@ backoff==2.2.1 # via litellm # via posthog # via unstructured -bcrypt==4.1.2 +bcrypt==4.1.3 # via chromadb # via open-webui # via passlib @@ -53,9 +53,9 @@ black==24.4.2 # via open-webui blinker==1.8.2 # via flask -boto3==1.34.95 +boto3==1.34.110 # via open-webui -botocore==1.34.103 +botocore==1.34.110 # via boto3 # via s3transfer build==1.2.1 @@ -66,7 +66,6 @@ certifi==2024.2.2 # via httpcore # via httpx # via kubernetes - # via pulsar-client # via requests # via unstructured-client cffi==1.16.0 @@ -79,7 +78,7 @@ charset-normalizer==3.3.2 # via unstructured-client chroma-hnswlib==0.7.3 # via chromadb -chromadb==0.4.24 +chromadb==0.5.0 # via langchain-chroma # via open-webui click==8.1.7 @@ -119,6 +118,7 @@ docx2txt==0.8 ecdsa==0.19.0 # via python-jose email-validator==2.1.1 + # via fastapi # via pydantic emoji==2.11.1 # via unstructured @@ -126,15 +126,17 @@ et-xmlfile==1.1.0 # via openpyxl fake-useragent==1.5.1 # via open-webui -fastapi==0.109.2 +fastapi==0.111.0 # via chromadb # via fastapi-sso # via langchain-chroma # via litellm # via open-webui +fastapi-cli==0.0.4 + # via fastapi fastapi-sso==0.10.0 # via litellm -faster-whisper==1.0.1 +faster-whisper==1.0.2 # via open-webui filelock==3.14.0 # via huggingface-hub @@ -145,13 +147,13 @@ filetype==1.2.0 flask==3.0.3 # via flask-cors # via open-webui -flask-cors==4.0.0 +flask-cors==4.0.1 # via open-webui flatbuffers==24.3.25 # via onnxruntime fonttools==4.51.0 # via fpdf2 -fpdf2==2.7.8 +fpdf2==2.7.9 # via open-webui frozenlist==1.4.1 # via aiohttp @@ -159,7 +161,7 @@ frozenlist==1.4.1 fsspec==2024.3.1 # via huggingface-hub # via torch -google-ai-generativelanguage==0.6.2 +google-ai-generativelanguage==0.6.4 # via google-generativeai google-api-core==2.19.0 # via google-ai-generativelanguage @@ -176,7 +178,7 @@ google-auth==2.29.0 # via kubernetes google-auth-httplib2==0.2.0 # via google-api-python-client -google-generativeai==0.5.2 +google-generativeai==0.5.4 # via open-webui googleapis-common-protos==1.63.0 # via google-api-core @@ -189,7 +191,7 @@ grpcio==1.63.0 # via opentelemetry-exporter-otlp-proto-grpc grpcio-status==1.62.2 # via google-api-core -gunicorn==21.2.0 +gunicorn==22.0.0 # via litellm h11==0.14.0 # via httpcore @@ -203,6 +205,7 @@ httplib2==0.22.0 httptools==0.6.1 # via uvicorn httpx==0.27.0 + # via fastapi # via fastapi-sso # via langfuse # via openai @@ -229,6 +232,7 @@ importlib-resources==6.4.0 itsdangerous==2.2.0 # via flask jinja2==3.1.4 + # via fastapi # via flask # via litellm # via torch @@ -239,7 +243,6 @@ joblib==1.4.2 # via nltk # via scikit-learn jsonpatch==1.33 - # via langchain # via langchain-core jsonpath-python==1.0.6 # via unstructured-client @@ -247,29 +250,30 @@ jsonpointer==2.4 # via jsonpatch kubernetes==29.0.0 # via chromadb -langchain==0.1.16 +langchain==0.2.0 + # via langchain-community # via open-webui -langchain-chroma==0.1.0 +langchain-chroma==0.1.1 # via open-webui -langchain-community==0.0.34 - # via langchain +langchain-community==0.2.0 # via open-webui -langchain-core==0.1.52 +langchain-core==0.2.1 # via langchain # via langchain-chroma # via langchain-community # via langchain-text-splitters -langchain-text-splitters==0.0.1 +langchain-text-splitters==0.2.0 # via langchain langdetect==1.0.9 # via unstructured -langfuse==2.27.3 +langfuse==2.33.0 # via open-webui langsmith==0.1.57 # via langchain # via langchain-community # via langchain-core -litellm==1.35.28 +litellm==1.37.20 + # via litellm # via open-webui lxml==5.2.2 # via unstructured @@ -372,6 +376,7 @@ ordered-set==4.1.0 # via deepdiff orjson==3.10.3 # via chromadb + # via fastapi # via langsmith # via litellm overrides==7.7.0 @@ -391,9 +396,10 @@ pandas==2.2.2 # via open-webui passlib==1.7.4 # via open-webui + # via passlib pathspec==0.12.1 # via black -peewee==3.17.3 +peewee==3.17.5 # via open-webui # via peewee-migrate peewee-migrate==1.12.2 @@ -420,8 +426,6 @@ protobuf==4.25.3 # via proto-plus psycopg2-binary==2.9.9 # via open-webui -pulsar-client==3.5.0 - # via chromadb pyasn1==0.6.0 # via pyasn1-modules # via python-jose @@ -450,6 +454,7 @@ pygments==2.18.0 pyjwt==2.8.0 # via litellm # via open-webui + # via pyjwt pymysql==1.1.0 # via open-webui pypandoc==1.13 @@ -481,6 +486,7 @@ python-jose==3.3.0 python-magic==0.4.27 # via unstructured python-multipart==0.0.9 + # via fastapi # via litellm # via open-webui python-socketio==5.11.2 @@ -508,7 +514,7 @@ rank-bm25==0.2.2 # via open-webui rapidfuzz==3.9.0 # via unstructured -rapidocr-onnxruntime==1.2.3 +rapidocr-onnxruntime==1.3.22 # via open-webui redis==5.0.4 # via rq @@ -516,7 +522,7 @@ regex==2024.5.10 # via nltk # via tiktoken # via transformers -requests==2.31.0 +requests==2.32.2 # via chromadb # via google-api-core # via huggingface-hub @@ -553,9 +559,6 @@ scipy==1.13.0 # via sentence-transformers sentence-transformers==2.7.0 # via open-webui -setuptools==69.5.1 - # via ctranslate2 - # via opentelemetry-instrumentation shapely==2.0.4 # via rapidocr-onnxruntime shellingham==1.5.4 @@ -580,7 +583,7 @@ soupsieve==2.5 sqlalchemy==2.0.30 # via langchain # via langchain-community -starlette==0.36.3 +starlette==0.37.2 # via fastapi sympy==1.12 # via onnxruntime @@ -615,6 +618,7 @@ transformers==4.39.3 # via sentence-transformers typer==0.12.3 # via chromadb + # via fastapi-cli typing-extensions==4.11.0 # via chromadb # via fastapi @@ -637,7 +641,9 @@ tzdata==2024.1 # via pandas tzlocal==5.2 # via apscheduler -unstructured==0.11.8 +ujson==5.10.0 + # via fastapi +unstructured==0.14.0 # via open-webui unstructured-client==0.22.0 # via unstructured @@ -650,8 +656,10 @@ urllib3==2.2.1 # via unstructured-client uvicorn==0.22.0 # via chromadb + # via fastapi # via litellm # via open-webui + # via uvicorn uvloop==0.19.0 # via uvicorn validators==0.28.1 @@ -679,3 +687,6 @@ youtube-transcript-api==0.6.2 # via open-webui zipp==3.18.1 # via importlib-metadata +setuptools==69.5.1 + # via ctranslate2 + # via opentelemetry-instrumentation diff --git a/requirements.lock b/requirements.lock index 7e2d1d241..93c126eb4 100644 --- a/requirements.lock +++ b/requirements.lock @@ -41,7 +41,7 @@ backoff==2.2.1 # via litellm # via posthog # via unstructured -bcrypt==4.1.2 +bcrypt==4.1.3 # via chromadb # via open-webui # via passlib @@ -53,9 +53,9 @@ black==24.4.2 # via open-webui blinker==1.8.2 # via flask -boto3==1.34.95 +boto3==1.34.110 # via open-webui -botocore==1.34.103 +botocore==1.34.110 # via boto3 # via s3transfer build==1.2.1 @@ -66,7 +66,6 @@ certifi==2024.2.2 # via httpcore # via httpx # via kubernetes - # via pulsar-client # via requests # via unstructured-client cffi==1.16.0 @@ -79,7 +78,7 @@ charset-normalizer==3.3.2 # via unstructured-client chroma-hnswlib==0.7.3 # via chromadb -chromadb==0.4.24 +chromadb==0.5.0 # via langchain-chroma # via open-webui click==8.1.7 @@ -119,6 +118,7 @@ docx2txt==0.8 ecdsa==0.19.0 # via python-jose email-validator==2.1.1 + # via fastapi # via pydantic emoji==2.11.1 # via unstructured @@ -126,15 +126,17 @@ et-xmlfile==1.1.0 # via openpyxl fake-useragent==1.5.1 # via open-webui -fastapi==0.109.2 +fastapi==0.111.0 # via chromadb # via fastapi-sso # via langchain-chroma # via litellm # via open-webui +fastapi-cli==0.0.4 + # via fastapi fastapi-sso==0.10.0 # via litellm -faster-whisper==1.0.1 +faster-whisper==1.0.2 # via open-webui filelock==3.14.0 # via huggingface-hub @@ -145,13 +147,13 @@ filetype==1.2.0 flask==3.0.3 # via flask-cors # via open-webui -flask-cors==4.0.0 +flask-cors==4.0.1 # via open-webui flatbuffers==24.3.25 # via onnxruntime fonttools==4.51.0 # via fpdf2 -fpdf2==2.7.8 +fpdf2==2.7.9 # via open-webui frozenlist==1.4.1 # via aiohttp @@ -159,7 +161,7 @@ frozenlist==1.4.1 fsspec==2024.3.1 # via huggingface-hub # via torch -google-ai-generativelanguage==0.6.2 +google-ai-generativelanguage==0.6.4 # via google-generativeai google-api-core==2.19.0 # via google-ai-generativelanguage @@ -176,7 +178,7 @@ google-auth==2.29.0 # via kubernetes google-auth-httplib2==0.2.0 # via google-api-python-client -google-generativeai==0.5.2 +google-generativeai==0.5.4 # via open-webui googleapis-common-protos==1.63.0 # via google-api-core @@ -189,7 +191,7 @@ grpcio==1.63.0 # via opentelemetry-exporter-otlp-proto-grpc grpcio-status==1.62.2 # via google-api-core -gunicorn==21.2.0 +gunicorn==22.0.0 # via litellm h11==0.14.0 # via httpcore @@ -203,6 +205,7 @@ httplib2==0.22.0 httptools==0.6.1 # via uvicorn httpx==0.27.0 + # via fastapi # via fastapi-sso # via langfuse # via openai @@ -229,6 +232,7 @@ importlib-resources==6.4.0 itsdangerous==2.2.0 # via flask jinja2==3.1.4 + # via fastapi # via flask # via litellm # via torch @@ -239,7 +243,6 @@ joblib==1.4.2 # via nltk # via scikit-learn jsonpatch==1.33 - # via langchain # via langchain-core jsonpath-python==1.0.6 # via unstructured-client @@ -247,29 +250,30 @@ jsonpointer==2.4 # via jsonpatch kubernetes==29.0.0 # via chromadb -langchain==0.1.16 +langchain==0.2.0 + # via langchain-community # via open-webui -langchain-chroma==0.1.0 +langchain-chroma==0.1.1 # via open-webui -langchain-community==0.0.34 - # via langchain +langchain-community==0.2.0 # via open-webui -langchain-core==0.1.52 +langchain-core==0.2.1 # via langchain # via langchain-chroma # via langchain-community # via langchain-text-splitters -langchain-text-splitters==0.0.1 +langchain-text-splitters==0.2.0 # via langchain langdetect==1.0.9 # via unstructured -langfuse==2.27.3 +langfuse==2.33.0 # via open-webui langsmith==0.1.57 # via langchain # via langchain-community # via langchain-core -litellm==1.35.28 +litellm==1.37.20 + # via litellm # via open-webui lxml==5.2.2 # via unstructured @@ -372,6 +376,7 @@ ordered-set==4.1.0 # via deepdiff orjson==3.10.3 # via chromadb + # via fastapi # via langsmith # via litellm overrides==7.7.0 @@ -391,9 +396,10 @@ pandas==2.2.2 # via open-webui passlib==1.7.4 # via open-webui + # via passlib pathspec==0.12.1 # via black -peewee==3.17.3 +peewee==3.17.5 # via open-webui # via peewee-migrate peewee-migrate==1.12.2 @@ -420,8 +426,6 @@ protobuf==4.25.3 # via proto-plus psycopg2-binary==2.9.9 # via open-webui -pulsar-client==3.5.0 - # via chromadb pyasn1==0.6.0 # via pyasn1-modules # via python-jose @@ -450,6 +454,7 @@ pygments==2.18.0 pyjwt==2.8.0 # via litellm # via open-webui + # via pyjwt pymysql==1.1.0 # via open-webui pypandoc==1.13 @@ -481,6 +486,7 @@ python-jose==3.3.0 python-magic==0.4.27 # via unstructured python-multipart==0.0.9 + # via fastapi # via litellm # via open-webui python-socketio==5.11.2 @@ -508,7 +514,7 @@ rank-bm25==0.2.2 # via open-webui rapidfuzz==3.9.0 # via unstructured -rapidocr-onnxruntime==1.2.3 +rapidocr-onnxruntime==1.3.22 # via open-webui redis==5.0.4 # via rq @@ -516,7 +522,7 @@ regex==2024.5.10 # via nltk # via tiktoken # via transformers -requests==2.31.0 +requests==2.32.2 # via chromadb # via google-api-core # via huggingface-hub @@ -553,9 +559,6 @@ scipy==1.13.0 # via sentence-transformers sentence-transformers==2.7.0 # via open-webui -setuptools==69.5.1 - # via ctranslate2 - # via opentelemetry-instrumentation shapely==2.0.4 # via rapidocr-onnxruntime shellingham==1.5.4 @@ -580,7 +583,7 @@ soupsieve==2.5 sqlalchemy==2.0.30 # via langchain # via langchain-community -starlette==0.36.3 +starlette==0.37.2 # via fastapi sympy==1.12 # via onnxruntime @@ -615,6 +618,7 @@ transformers==4.39.3 # via sentence-transformers typer==0.12.3 # via chromadb + # via fastapi-cli typing-extensions==4.11.0 # via chromadb # via fastapi @@ -637,7 +641,9 @@ tzdata==2024.1 # via pandas tzlocal==5.2 # via apscheduler -unstructured==0.11.8 +ujson==5.10.0 + # via fastapi +unstructured==0.14.0 # via open-webui unstructured-client==0.22.0 # via unstructured @@ -650,8 +656,10 @@ urllib3==2.2.1 # via unstructured-client uvicorn==0.22.0 # via chromadb + # via fastapi # via litellm # via open-webui + # via uvicorn uvloop==0.19.0 # via uvicorn validators==0.28.1 @@ -679,3 +687,6 @@ youtube-transcript-api==0.6.2 # via open-webui zipp==3.18.1 # via importlib-metadata +setuptools==69.5.1 + # via ctranslate2 + # via opentelemetry-instrumentation diff --git a/src/lib/apis/ollama/index.ts b/src/lib/apis/ollama/index.ts index 7ecd65efe..b7f842177 100644 --- a/src/lib/apis/ollama/index.ts +++ b/src/lib/apis/ollama/index.ts @@ -1,6 +1,73 @@ import { OLLAMA_API_BASE_URL } from '$lib/constants'; import { promptTemplate } from '$lib/utils'; +export const getOllamaConfig = async (token: string = '') => { + let error = null; + + const res = await fetch(`${OLLAMA_API_BASE_URL}/config`, { + method: 'GET', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + ...(token && { authorization: `Bearer ${token}` }) + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + console.log(err); + if ('detail' in err) { + error = err.detail; + } else { + error = 'Server connection failed'; + } + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const updateOllamaConfig = async (token: string = '', enable_ollama_api: boolean) => { + let error = null; + + const res = await fetch(`${OLLAMA_API_BASE_URL}/config/update`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + ...(token && { authorization: `Bearer ${token}` }) + }, + body: JSON.stringify({ + enable_ollama_api: enable_ollama_api + }) + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + console.log(err); + if ('detail' in err) { + error = err.detail; + } else { + error = 'Server connection failed'; + } + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + export const getOllamaUrls = async (token: string = '') => { let error = null; diff --git a/src/lib/components/chat/Settings/Connections.svelte b/src/lib/components/chat/Settings/Connections.svelte index 01a47efbc..b9978e129 100644 --- a/src/lib/components/chat/Settings/Connections.svelte +++ b/src/lib/components/chat/Settings/Connections.svelte @@ -3,7 +3,13 @@ import { createEventDispatcher, onMount, getContext } from 'svelte'; const dispatch = createEventDispatcher(); - import { getOllamaUrls, getOllamaVersion, updateOllamaUrls } from '$lib/apis/ollama'; + import { + getOllamaConfig, + getOllamaUrls, + getOllamaVersion, + updateOllamaConfig, + updateOllamaUrls + } from '$lib/apis/ollama'; import { getOpenAIConfig, getOpenAIKeys, @@ -26,6 +32,7 @@ let OPENAI_API_BASE_URLS = ['']; let ENABLE_OPENAI_API = false; + let ENABLE_OLLAMA_API = false; const updateOpenAIHandler = async () => { OPENAI_API_BASE_URLS = await updateOpenAIUrls(localStorage.token, OPENAI_API_BASE_URLS); @@ -50,10 +57,13 @@ onMount(async () => { if ($user.role === 'admin') { - OLLAMA_BASE_URLS = await getOllamaUrls(localStorage.token); + const ollamaConfig = await getOllamaConfig(localStorage.token); + const openaiConfig = await getOpenAIConfig(localStorage.token); - const config = await getOpenAIConfig(localStorage.token); - ENABLE_OPENAI_API = config.ENABLE_OPENAI_API; + ENABLE_OPENAI_API = openaiConfig.ENABLE_OPENAI_API; + ENABLE_OLLAMA_API = ollamaConfig.ENABLE_OLLAMA_API; + + OLLAMA_BASE_URLS = await getOllamaUrls(localStorage.token); OPENAI_API_BASE_URLS = await getOpenAIUrls(localStorage.token); OPENAI_API_KEYS = await getOpenAIKeys(localStorage.token); @@ -161,95 +171,108 @@
-
-
{$i18n.t('Ollama Base URL')}
-
-
- {#each OLLAMA_BASE_URLS as url, idx} -
- +
+
+
{$i18n.t('Ollama API')}
-
- {#if idx === 0} - - {:else} - - {/if} -
-
- {/each} -
- -
- + />
+ {#if ENABLE_OLLAMA_API} +
+
+ {#each OLLAMA_BASE_URLS as url, idx} +
+ -
- {$i18n.t('Trouble accessing Ollama?')} - - {$i18n.t('Click here for help.')} - -
+
+ {#if idx === 0} + + {:else} + + {/if} +
+
+ {/each} +
+ +
+ +
+
+ +
+ {$i18n.t('Trouble accessing Ollama?')} + + {$i18n.t('Click here for help.')} + +
+ {/if}
diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index b778c37bf..04541073a 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "حسنا دعنا نذهب!", "OLED Dark": "OLED داكن", "Ollama": "Ollama", - "Ollama Base URL": "Ollama الرابط الافتراضي", + "Ollama API": "", "Ollama Version": "Ollama الاصدار", "On": "تشغيل", "Only": "فقط", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 72b4dfe95..3d41a8089 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "ОК, Нека започваме!", "OLED Dark": "OLED тъмно", "Ollama": "Ollama", - "Ollama Base URL": "Ollama Базов URL", + "Ollama API": "", "Ollama Version": "Ollama Версия", "On": "Вкл.", "Only": "Само", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index af8458215..f81b41145 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "ঠিক আছে, চলুন যাই!", "OLED Dark": "OLED ডার্ক", "Ollama": "Ollama", - "Ollama Base URL": "Ollama বেজ ইউআরএল", + "Ollama API": "", "Ollama Version": "Ollama ভার্সন", "On": "চালু", "Only": "শুধুমাত্র", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index ab545a8a6..e7b3d7f1f 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "D'acord, Anem!", "OLED Dark": "OLED Fosc", "Ollama": "Ollama", - "Ollama Base URL": "URL Base d'Ollama", + "Ollama API": "", "Ollama Version": "Versió d'Ollama", "On": "Activat", "Only": "Només", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json new file mode 100644 index 000000000..c52149b47 --- /dev/null +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -0,0 +1,503 @@ +{ + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' o '-1' para walay expiration.", + "(Beta)": "(Beta)", + "(e.g. `sh webui.sh --api`)": "(pananglitan `sh webui.sh --api`)", + "(latest)": "", + "{{modelName}} is thinking...": "{{modelName}} hunahunaa...", + "{{user}}'s Chats": "", + "{{webUIName}} Backend Required": "Backend {{webUIName}} gikinahanglan", + "a user": "usa ka user", + "About": "Mahitungod sa", + "Account": "Account", + "Accurate information": "", + "Add": "", + "Add a model": "Pagdugang ug template", + "Add a model tag name": "Pagdugang usa ka ngalan sa tag alang sa template", + "Add a short description about what this modelfile does": "Pagdugang usa ka mubo nga paghulagway kung unsa ang gibuhat sa kini nga template file", + "Add a short title for this prompt": "Pagdugang og usa ka mubo nga titulo alang niini nga prompt", + "Add a tag": "Pagdugang og tag", + "Add custom prompt": "Pagdugang og custom prompt", + "Add Docs": "Pagdugang og mga dokumento", + "Add Files": "Idugang ang mga file", + "Add Memory": "", + "Add message": "Pagdugang og mensahe", + "Add Model": "", + "Add Tags": "idugang ang mga tag", + "Add User": "", + "Adjusting these settings will apply changes universally to all users.": "Ang pag-adjust niini nga mga setting magamit ang mga pagbag-o sa tanan nga tiggamit.", + "admin": "Administrator", + "Admin Panel": "Admin Panel", + "Admin Settings": "Mga setting sa administratibo", + "Advanced Parameters": "advanced settings", + "all": "tanan", + "All Documents": "", + "All Users": "Ang tanan nga mga tiggamit", + "Allow": "Sa pagtugot", + "Allow Chat Deletion": "Tugoti nga mapapas ang mga chat", + "alphanumeric characters and hyphens": "alphanumeric nga mga karakter ug hyphen", + "Already have an account?": "Naa na kay account ?", + "an assistant": "usa ka katabang", + "and": "Ug", + "and create a new shared link.": "", + "API Base URL": "API Base URL", + "API Key": "yawe sa API", + "API Key created.": "", + "API keys": "", + "API RPM": "RPM API", + "April": "", + "Archive": "", + "Archived Chats": "pagrekord sa chat", + "are allowed - Activate this command by typing": "gitugotan - I-enable kini nga sugo pinaagi sa pag-type", + "Are you sure?": "Sigurado ka ?", + "Attach file": "Ilakip ang usa ka file", + "Attention to detail": "Pagtagad sa mga detalye", + "Audio": "Audio", + "August": "", + "Auto-playback response": "Autoplay nga tubag", + "Auto-send input after 3 sec.": "Awtomatikong ipadala ang entry pagkahuman sa 3 segundos.", + "AUTOMATIC1111 Base URL": "Base URL AUTOMATIC1111", + "AUTOMATIC1111 Base URL is required.": "Ang AUTOMATIC1111 base URL gikinahanglan.", + "available!": "magamit!", + "Back": "Balik", + "Bad Response": "", + "before": "", + "Being lazy": "", + "Builder Mode": "Mode sa Magtutukod", + "Bypass SSL verification for Websites": "", + "Cancel": "Pagkanselar", + "Categories": "Mga kategoriya", + "Change Password": "Usba ang password", + "Chat": "Panaghisgot", + "Chat Bubble UI": "", + "Chat direction": "", + "Chat History": "Kasaysayan sa chat", + "Chat History is off for this browser.": "Ang kasaysayan sa chat gi-disable alang niini nga browser.", + "Chats": "Mga panaghisgot", + "Check Again": "Susiha pag-usab", + "Check for updates": "Susiha ang mga update", + "Checking for updates...": "Pagsusi alang sa mga update...", + "Choose a model before saving...": "Pagpili og template sa dili pa i-save...", + "Chunk Overlap": "Block overlap", + "Chunk Params": "Mga Setting sa Block", + "Chunk Size": "Gidak-on sa block", + "Citation": "Mga kinutlo", + "Click here for help.": "I-klik dinhi alang sa tabang.", + "Click here to": "", + "Click here to check other modelfiles.": "Pag-klik dinhi aron susihon ang ubang mga file sa template.", + "Click here to select": "I-klik dinhi aron makapili", + "Click here to select a csv file.": "", + "Click here to select documents.": "Pag-klik dinhi aron mapili ang mga dokumento.", + "click here.": "I-klik dinhi.", + "Click on the user role button to change a user's role.": "I-klik ang User Role button aron usbon ang role sa user.", + "Close": "Suod nga", + "Collection": "Koleksyon", + "ComfyUI": "", + "ComfyUI Base URL": "", + "ComfyUI Base URL is required.": "", + "Command": "Pag-order", + "Confirm Password": "Kumpirma ang password", + "Connections": "Mga koneksyon", + "Content": "Kontento", + "Context Length": "Ang gitas-on sa konteksto", + "Continue Response": "", + "Conversation Mode": "Talk mode", + "Copied shared chat URL to clipboard!": "", + "Copy": "", + "Copy last code block": "Kopyaha ang katapusang bloke sa code", + "Copy last response": "Kopyaha ang kataposang tubag", + "Copy Link": "", + "Copying to clipboard was successful!": "Ang pagkopya sa clipboard malampuson!", + "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Paghimo og mugbo nga 3-5 ka pulong nga sentence isip usa ka ulohan alang sa mosunod nga pangutana, hugot nga pagsunod sa 3-5 ka pulong nga limitasyon ug paglikay sa paggamit sa pulong nga 'titulo':", + "Create a modelfile": "Paghimo ug template file", + "Create Account": "Paghimo og account", + "Create new key": "", + "Create new secret key": "", + "Created at": "Gihimo ang", + "Created At": "", + "Current Model": "Kasamtangang modelo", + "Current Password": "Kasamtangang Password", + "Custom": "Custom", + "Customize Ollama models for a specific purpose": "Ipasibo ang mga template sa Ollama alang sa usa ka piho nga katuyoan", + "Dark": "Ngitngit", + "Dashboard": "", + "Database": "Database", + "December": "", + "Default": "Pinaagi sa default", + "Default (Automatic1111)": "Default (Awtomatiko1111)", + "Default (SentenceTransformers)": "", + "Default (Web API)": "Default (Web API)", + "Default model updated": "Gi-update nga default template", + "Default Prompt Suggestions": "Default nga prompt nga mga sugyot", + "Default User Role": "Default nga Papel sa Gumagamit", + "delete": "DELETE", + "Delete": "", + "Delete a model": "Pagtangtang sa usa ka template", + "Delete chat": "Pagtangtang sa panaghisgot", + "Delete Chat": "", + "Delete Chats": "Pagtangtang sa mga chat", + "delete this link": "", + "Delete User": "", + "Deleted {{deleteModelTag}}": "{{deleteModelTag}} gipapas", + "Deleted {{tagName}}": "", + "Description": "Deskripsyon", + "Didn't fully follow instructions": "", + "Disabled": "Nabaldado", + "Discover a modelfile": "Pagdiskobre ug template file", + "Discover a prompt": "Pagkaplag usa ka prompt", + "Discover, download, and explore custom prompts": "Pagdiskubre, pag-download ug pagsuhid sa mga naandan nga pag-aghat", + "Discover, download, and explore model presets": "Pagdiskobre, pag-download, ug pagsuhid sa mga preset sa template", + "Display the username instead of You in the Chat": "Ipakita ang username imbes nga 'Ikaw' sa Panaghisgutan", + "Document": "Dokumento", + "Document Settings": "Mga Setting sa Dokumento", + "Documents": "Mga dokumento", + "does not make any external connections, and your data stays securely on your locally hosted server.": "wala maghimo ug eksternal nga koneksyon, ug ang imong data nagpabiling luwas sa imong lokal nga host server.", + "Don't Allow": "Dili tugotan", + "Don't have an account?": "Wala kay account ?", + "Don't like the style": "", + "Download": "", + "Download canceled": "", + "Download Database": "I-download ang database", + "Drop any files here to add to the conversation": "Ihulog ang bisan unsang file dinhi aron idugang kini sa panag-istoryahanay", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ", + "Edit": "", + "Edit Doc": "I-edit ang dokumento", + "Edit User": "I-edit ang tiggamit", + "Email": "E-mail", + "Embedding Model": "", + "Embedding Model Engine": "", + "Embedding model set to \"{{embedding_model}}\"": "", + "Enable Chat History": "I-enable ang kasaysayan sa chat", + "Enable New Sign Ups": "I-enable ang bag-ong mga rehistro", + "Enabled": "Gipaandar", + "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", + "Enter {{role}} message here": "Pagsulod sa mensahe {{role}} dinhi", + "Enter a detail about yourself for your LLMs to recall": "", + "Enter Chunk Overlap": "Pagsulod sa block overlap", + "Enter Chunk Size": "Isulod ang block size", + "Enter Image Size (e.g. 512x512)": "Pagsulod sa gidak-on sa hulagway (pananglitan 512x512)", + "Enter language codes": "", + "Enter LiteLLM API Base URL (litellm_params.api_base)": "Pagsulod sa LiteLLM API base URL (litelm_params.api_base)", + "Enter LiteLLM API Key (litellm_params.api_key)": "Isulod ang LiteLLM API key (litelm_params.api_key)", + "Enter LiteLLM API RPM (litellm_params.rpm)": "Isulod ang LiteLLM API RPM (litelm_params.rpm)", + "Enter LiteLLM Model (litellm_params.model)": "Pagsulod sa LiteLLM nga modelo (litelm_params.model)", + "Enter Max Tokens (litellm_params.max_tokens)": "Pagsulod sa max nga gidaghanon sa mga token (litelm_params.max_tokens)", + "Enter model tag (e.g. {{modelTag}})": "Pagsulod sa template tag (e.g. {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Pagsulod sa gidaghanon sa mga lakang (e.g. 50)", + "Enter Score": "", + "Enter stop sequence": "Pagsulod sa katapusan nga han-ay", + "Enter Top K": "Pagsulod sa Top K", + "Enter URL (e.g. http://127.0.0.1:7860/)": "Pagsulod sa URL (e.g. http://127.0.0.1:7860/)", + "Enter URL (e.g. http://localhost:11434)": "", + "Enter Your Email": "Pagsulod sa imong e-mail address", + "Enter Your Full Name": "Ibutang ang imong tibuok nga ngalan", + "Enter Your Password": "Ibutang ang imong password", + "Enter Your Role": "", + "Experimental": "Eksperimento", + "Export All Chats (All Users)": "I-export ang tanan nga mga chat (Tanan nga tiggamit)", + "Export Chats": "I-export ang mga chat", + "Export Documents Mapping": "I-export ang pagmapa sa dokumento", + "Export Modelfiles": "I-export ang mga file sa modelo", + "Export Prompts": "Export prompts", + "Failed to create API Key.": "", + "Failed to read clipboard contents": "Napakyas sa pagbasa sa sulod sa clipboard", + "February": "", + "Feel free to add specific details": "", + "File Mode": "File mode", + "File not found.": "Wala makit-an ang file.", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "", + "Fluidly stream large external response chunks": "Hapsay nga paghatud sa daghang mga tipik sa eksternal nga mga tubag", + "Focus chat input": "Pag-focus sa entry sa diskusyon", + "Followed instructions perfectly": "", + "Format your variables using square brackets like this:": "I-format ang imong mga variable gamit ang square brackets sama niini:", + "From (Base Model)": "Gikan sa (Basic nga modelo)", + "Full Screen Mode": "Full screen mode", + "General": "Heneral", + "General Settings": "kinatibuk-ang mga setting", + "Generation Info": "", + "Good Response": "", + "h:mm a": "", + "has no conversations.": "", + "Hello, {{name}}": "Maayong buntag, {{name}}", + "Help": "", + "Hide": "Tagoa", + "Hide Additional Params": "Tagoa ang dugang nga mga setting", + "How can I help you today?": "Unsaon nako pagtabang kanimo karon?", + "Hybrid Search": "", + "Image Generation (Experimental)": "Pagmugna og hulagway (Eksperimento)", + "Image Generation Engine": "Makina sa paghimo og imahe", + "Image Settings": "Mga Setting sa Imahen", + "Images": "Mga hulagway", + "Import Chats": "Import nga mga chat", + "Import Documents Mapping": "Import nga pagmapa sa dokumento", + "Import Modelfiles": "Import nga mga file sa modelo", + "Import Prompts": "Import prompt", + "Include `--api` flag when running stable-diffusion-webui": "Iapil ang `--api` nga bandila kung nagdagan nga stable-diffusion-webui", + "Input commands": "Pagsulod sa input commands", + "Interface": "Interface", + "Invalid Tag": "", + "January": "", + "join our Discord for help.": "Apil sa among Discord alang sa tabang.", + "JSON": "JSON", + "July": "", + "June": "", + "JWT Expiration": "Pag-expire sa JWT", + "JWT Token": "JWT token", + "Keep Alive": "Padayon nga aktibo", + "Keyboard shortcuts": "Mga shortcut sa keyboard", + "Language": "Pinulongan", + "Last Active": "", + "Light": "Kahayag", + "Listening...": "Paminaw...", + "LLMs can make mistakes. Verify important information.": "Ang mga LLM mahimong masayop. ", + "LTR": "", + "Made by OpenWebUI Community": "Gihimo sa komunidad sa OpenWebUI", + "Make sure to enclose them with": "Siguruha nga palibutan sila", + "Manage LiteLLM Models": "Pagdumala sa mga modelo sa LiteLLM", + "Manage Models": "Pagdumala sa mga templates", + "Manage Ollama Models": "Pagdumala sa mga modelo sa Ollama", + "March": "", + "Max Tokens": "Maximum nga mga token", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Ang labing taas nga 3 nga mga disenyo mahimong ma-download nga dungan. ", + "May": "", + "Memories accessible by LLMs will be shown here.": "", + "Memory": "", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "", + "Minimum Score": "", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "MMMM DD, YYYY HH:mm": "", + "Model '{{modelName}}' has been successfully downloaded.": "Ang modelo'{{modelName}}' malampuson nga na-download.", + "Model '{{modelTag}}' is already in queue for downloading.": "Ang modelo'{{modelTag}}' naa na sa pila para ma-download.", + "Model {{modelId}} not found": "Modelo {{modelId}} wala makit-an", + "Model {{modelName}} already exists.": "Ang modelo {{modelName}} Anaa na.", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "", + "Model Name": "Ngalan sa Modelo", + "Model not selected": "Wala gipili ang modelo", + "Model Tag Name": "Ngalan sa tag sa modelo", + "Model Whitelisting": "Whitelist sa modelo", + "Model(s) Whitelisted": "Gi-whitelist nga (mga) modelo", + "Modelfile": "File sa template", + "Modelfile Advanced Settings": "Advanced nga template file setting", + "Modelfile Content": "Mga sulod sa template file", + "Modelfiles": "Mga file sa modelo", + "Models": "Mga modelo", + "More": "", + "Name": "Ngalan", + "Name Tag": "Tag sa ngalan", + "Name your modelfile": "Ngalan ang imong template file", + "New Chat": "Bag-ong diskusyon", + "New Password": "Bag-ong Password", + "No results found": "", + "No source available": "Walay tinubdan nga anaa", + "Not factually correct": "", + "Not sure what to add?": "Dili sigurado kung unsa ang idugang?", + "Not sure what to write? Switch to": "Dili sigurado kung unsa ang isulat? ", + "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "", + "Notifications": "Mga pahibalo sa desktop", + "November": "", + "October": "", + "Off": "Napuo", + "Okay, Let's Go!": "Okay, lakaw na!", + "OLED Dark": "", + "Ollama": "", + "Ollama Base URL": "Ollama Base URL", + "Ollama Version": "Ollama nga bersyon", + "On": "Gipaandar", + "Only": "Lamang", + "Only alphanumeric characters and hyphens are allowed in the command string.": "Ang alphanumeric nga mga karakter ug hyphen lang ang gitugotan sa command string.", + "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Oops! ", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! ", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! ", + "Open": "Bukas", + "Open AI": "Buksan ang AI", + "Open AI (Dall-E)": "Buksan ang AI (Dall-E)", + "Open new chat": "Ablihi ang bag-ong diskusyon", + "OpenAI": "", + "OpenAI API": "OpenAI API", + "OpenAI API Config": "", + "OpenAI API Key is required.": "Ang yawe sa OpenAI API gikinahanglan.", + "OpenAI URL/Key required.": "", + "or": "O", + "Other": "", + "Overview": "", + "Parameters": "Mga setting", + "Password": "Password", + "PDF document (.pdf)": "", + "PDF Extract Images (OCR)": "PDF Image Extraction (OCR)", + "pending": "gipugngan", + "Permission denied when accessing microphone: {{error}}": "Gidili ang pagtugot sa dihang nag-access sa mikropono: {{error}}", + "Personalization": "", + "Plain text (.txt)": "", + "Playground": "Dulaanan", + "Positive attitude": "", + "Previous 30 days": "", + "Previous 7 days": "", + "Profile Image": "", + "Prompt": "", + "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Prompt Content": "Ang sulod sa prompt", + "Prompt suggestions": "Maabtik nga mga Sugyot", + "Prompts": "Mga aghat", + "Pull \"{{searchValue}}\" from Ollama.com": "", + "Pull a model from Ollama.com": "Pagkuha ug template gikan sa Ollama.com", + "Pull Progress": "Pag-uswag sa pag-download", + "Query Params": "Mga parameter sa pangutana", + "RAG Template": "RAG nga modelo", + "Raw Format": "Hilaw nga pormat", + "Read Aloud": "", + "Record voice": "Irekord ang tingog", + "Redirecting you to OpenWebUI Community": "Gi-redirect ka sa komunidad sa OpenWebUI", + "Refused when it shouldn't have": "", + "Regenerate": "", + "Release Notes": "Release Notes", + "Remove": "", + "Remove Model": "", + "Rename": "", + "Repeat Last N": "Balika ang katapusang N", + "Repeat Penalty": "Balika ang silot", + "Request Mode": "Query mode", + "Reranking Model": "", + "Reranking model disabled": "", + "Reranking model set to \"{{reranking_model}}\"": "", + "Reset Vector Storage": "I-reset ang pagtipig sa vector", + "Response AutoCopy to Clipboard": "Awtomatikong kopya sa tubag sa clipboard", + "Role": "Papel", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Aube Pine Rosé", + "RTL": "", + "Save": "Tipigi", + "Save & Create": "I-save ug Paghimo", + "Save & Update": "I-save ug I-update", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ang pag-save sa mga chat log direkta sa imong browser storage dili na suportado. ", + "Scan": "Aron ma-scan", + "Scan complete!": "Nakompleto ang pag-scan!", + "Scan for documents from {{path}}": "I-scan ang mga dokumento gikan sa {{path}}", + "Search": "Pagpanukiduki", + "Search a model": "", + "Search Documents": "Pangitaa ang mga dokumento", + "Search Prompts": "Pangitaa ang mga prompt", + "See readme.md for instructions": "Tan-awa ang readme.md alang sa mga panudlo", + "See what's new": "Tan-awa unsay bag-o", + "Seed": "Binhi", + "Select a mode": "Pagpili og mode", + "Select a model": "Pagpili og modelo", + "Select an Ollama instance": "Pagpili usa ka pananglitan sa Ollama", + "Select model": "Pagpili og modelo", + "Send": "", + "Send a Message": "Magpadala ug mensahe", + "Send message": "Magpadala ug mensahe", + "September": "", + "Server connection verified": "Gipamatud-an nga koneksyon sa server", + "Set as default": "Define pinaagi sa default", + "Set Default Model": "Ibutang ang default template", + "Set embedding model (e.g. {{model}})": "", + "Set Image Size": "Ibutang ang gidak-on sa hulagway", + "Set Model": "I-configure ang template", + "Set reranking model (e.g. {{model}})": "", + "Set Steps": "Ipasabot ang mga lakang", + "Set Title Auto-Generation Model": "Itakda ang awtomatik nga template sa paghimo sa titulo", + "Set Voice": "Ibutang ang tingog", + "Settings": "Mga setting", + "Settings saved successfully!": "Malampuson nga na-save ang mga setting!", + "Share": "", + "Share Chat": "", + "Share to OpenWebUI Community": "Ipakigbahin sa komunidad sa OpenWebUI", + "short-summary": "mubo nga summary", + "Show": "Pagpakita", + "Show Additional Params": "Ipakita ang dugang nga mga setting", + "Show shortcuts": "Ipakita ang mga shortcut", + "Showcased creativity": "", + "sidebar": "lateral bar", + "Sign in": "Para maka log in", + "Sign Out": "Pag-sign out", + "Sign up": "Pagrehistro", + "Signing in": "", + "Source": "Tinubdan", + "Speech recognition error: {{error}}": "Sayop sa pag-ila sa tingog: {{error}}", + "Speech-to-Text Engine": "Engine sa pag-ila sa tingog", + "SpeechRecognition API is not supported in this browser.": "Ang SpeechRecognition API wala gisuportahan niini nga browser.", + "Stop Sequence": "Pagkasunod-sunod sa pagsira", + "STT Settings": "Mga setting sa STT", + "Submit": "Isumite", + "Subtitle (e.g. about the Roman Empire)": "", + "Success": "Kalampusan", + "Successfully updated.": "Malampuson nga na-update.", + "Suggested": "", + "Sync All": "I-synchronize ang tanan", + "System": "Sistema", + "System Prompt": "Madasig nga Sistema", + "Tags": "Mga tag", + "Tell us more:": "", + "Temperature": "Temperatura", + "Template": "Modelo", + "Text Completion": "Pagkompleto sa teksto", + "Text-to-Speech Engine": "Text-to-speech nga makina", + "Tfs Z": "Tfs Z", + "Thanks for your feedback!": "", + "The score should be a value between 0.0 (0%) and 1.0 (100%).": "", + "Theme": "Tema", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Kini nagsiguro nga ang imong bililhon nga mga panag-istoryahanay luwas nga natipig sa imong backend database. ", + "This setting does not sync across browsers or devices.": "Kini nga setting wala mag-sync tali sa mga browser o device.", + "Thorough explanation": "", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Sugyot: Pag-update sa daghang variable nga lokasyon nga sunud-sunod pinaagi sa pagpindot sa tab key sa chat entry pagkahuman sa matag puli.", + "Title": "Titulo", + "Title (e.g. Tell me a fun fact)": "", + "Title Auto-Generation": "Awtomatikong paghimo sa titulo", + "Title cannot be an empty string.": "", + "Title Generation Prompt": "Madasig nga henerasyon sa titulo", + "to": "adunay", + "To access the available model names for downloading,": "Aron ma-access ang mga ngalan sa modelo nga ma-download,", + "To access the GGUF models available for downloading,": "Aron ma-access ang mga modelo sa GGUF nga magamit alang sa pag-download,", + "to chat input.": "sa entrada sa iring.", + "Today": "", + "Toggle settings": "I-toggle ang mga setting", + "Toggle sidebar": "I-toggle ang sidebar", + "Top K": "Top K", + "Top P": "Ibabaw nga P", + "Trouble accessing Ollama?": "Adunay mga problema sa pag-access sa Ollama?", + "TTS Settings": "Mga Setting sa TTS", + "Type Hugging Face Resolve (Download) URL": "Pagsulod sa resolusyon (pag-download) URL Hugging Face", + "Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! {{provider}}.", + "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Wala mailhi nga tipo sa file '{{file_type}}', apan gidawat ug gitratar ingon yano nga teksto", + "Update and Copy Link": "", + "Update password": "I-update ang password", + "Upload a GGUF model": "Pag-upload ug modelo sa GGUF", + "Upload files": "Pag-upload og mga file", + "Upload Progress": "Pag-uswag sa Pag-upload", + "URL Mode": "URL mode", + "Use '#' in the prompt input to load and select your documents.": "Gamita ang '#' sa dali nga pagsulod aron makarga ug mapili ang imong mga dokumento.", + "Use Gravatar": "Paggamit sa Gravatar", + "Use Initials": "", + "user": "tiggamit", + "User Permissions": "Mga permiso sa tiggamit", + "Users": "Mga tiggamit", + "Utilize": "Sa paggamit", + "Valid time units:": "Balido nga mga yunit sa oras:", + "variable": "variable", + "variable to have them replaced with clipboard content.": "variable aron pulihan kini sa mga sulud sa clipboard.", + "Version": "Bersyon", + "Warning: If you update or change your embedding model, you will need to re-import all documents.": "", + "Web": "Web", + "Web Loader Settings": "", + "Web Params": "", + "Webhook URL": "", + "WebUI Add-ons": "Mga add-on sa WebUI", + "WebUI Settings": "Mga Setting sa WebUI", + "WebUI will make requests to": "Ang WebUI maghimo mga hangyo sa", + "What’s New in": "Unsay bag-o sa", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kung ang kasaysayan gipalong, ang mga bag-ong chat sa kini nga browser dili makita sa imong kasaysayan sa bisan unsang mga aparato.", + "Whisper (Local)": "Whisper (Lokal)", + "Workspace": "", + "Write a prompt suggestion (e.g. Who are you?)": "Pagsulat og gisugyot nga prompt (eg. Kinsa ka?)", + "Write a summary in 50 words that summarizes [topic or keyword].": "Pagsulat og 50 ka pulong nga summary nga nagsumaryo [topic o keyword].", + "Yesterday": "", + "You": "", + "You have no archived conversations.": "", + "You have shared this chat": "", + "You're a helpful assistant.": "Usa ka ka mapuslanon nga katabang", + "You're now logged in.": "Konektado ka na karon.", + "Youtube": "", + "Youtube Loader Settings": "" +} diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 25ebab0b7..aa916c7d6 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okay, los geht's!", "OLED Dark": "OLED Dunkel", "Ollama": "Ollama", - "Ollama Base URL": "Ollama Basis URL", + "Ollama API": "", "Ollama Version": "Ollama-Version", "On": "Ein", "Only": "Nur", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index d54df74a3..6c977c9af 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okay, Let's Go!", "OLED Dark": "OLED Dark", "Ollama": "", - "Ollama Base URL": "Ollama Base Bark", + "Ollama API": "", "Ollama Version": "Ollama Version", "On": "On", "Only": "Only", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 6e3039b79..b6bca05bd 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "", "OLED Dark": "", "Ollama": "", - "Ollama Base URL": "", + "Ollama API": "", "Ollama Version": "", "On": "", "Only": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 6e3039b79..b6bca05bd 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "", "OLED Dark": "", "Ollama": "", - "Ollama Base URL": "", + "Ollama API": "", "Ollama Version": "", "On": "", "Only": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 2a9e42a9f..0e5864abc 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Bien, ¡Vamos!", "OLED Dark": "OLED oscuro", "Ollama": "Ollama", - "Ollama Base URL": "URL base de Ollama", + "Ollama API": "", "Ollama Version": "Versión de Ollama", "On": "Activado", "Only": "Solamente", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 942373448..61f3f8516 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "باشه، بزن بریم!", "OLED Dark": "OLED تیره", "Ollama": "Ollama", - "Ollama Base URL": "URL پایه اولاما", + "Ollama API": "", "Ollama Version": "نسخه اولاما", "On": "روشن", "Only": "فقط", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 2a66d006a..1f6801eaa 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Eikun menoksi!", "OLED Dark": "OLED-tumma", "Ollama": "Ollama", - "Ollama Base URL": "Ollama-perus-URL", + "Ollama API": "", "Ollama Version": "Ollama-versio", "On": "Päällä", "Only": "Vain", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 1debbbb1a..592986c49 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okay, Allons-y !", "OLED Dark": "OLED Sombre", "Ollama": "Ollama", - "Ollama Base URL": "URL de Base Ollama", + "Ollama API": "", "Ollama Version": "Version Ollama", "On": "Activé", "Only": "Seulement", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 7dd5b1940..cac5fda10 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "D'accord, allons-y !", "OLED Dark": "OLED Sombre", "Ollama": "Ollama", - "Ollama Base URL": "URL de Base Ollama", + "Ollama API": "", "Ollama Version": "Version Ollama", "On": "Activé", "Only": "Seulement", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index e6fa67190..b11c7ffeb 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "בסדר, בואו נתחיל!", "OLED Dark": "OLED כהה", "Ollama": "Ollama", - "Ollama Base URL": "כתובת URL בסיסית של Ollama", + "Ollama API": "", "Ollama Version": "גרסת Ollama", "On": "פועל", "Only": "רק", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 3386ac838..9b4a96c00 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "ठीक है, चलिए चलते हैं!", "OLED Dark": "OLEDescuro", "Ollama": "Ollama", - "Ollama Base URL": "Ollama URL", + "Ollama API": "", "Ollama Version": "Ollama Version", "On": "चालू", "Only": "केवल", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 79174ddbf..498accd6c 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "U redu, idemo!", "OLED Dark": "OLED Tamno", "Ollama": "Ollama", - "Ollama Base URL": "Osnovni URL Ollama", + "Ollama API": "", "Ollama Version": "Ollama verzija", "On": "Uključeno", "Only": "Samo", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 08a77da94..8013004f6 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Ok, andiamo!", "OLED Dark": "OLED scuro", "Ollama": "Ollama", - "Ollama Base URL": "URL base Ollama", + "Ollama API": "", "Ollama Version": "Versione Ollama", "On": "Attivato", "Only": "Solo", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index ae6e1d8de..223fed93a 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "OK、始めましょう!", "OLED Dark": "OLED ダーク", "Ollama": "Ollama", - "Ollama Base URL": "Ollama ベース URL", + "Ollama API": "", "Ollama Version": "Ollama バージョン", "On": "オン", "Only": "のみ", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 878ba41b2..6b5ac3036 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "კარგი, წავედით!", "OLED Dark": "OLED მუქი", "Ollama": "Ollama", - "Ollama Base URL": "Ollama ბაზისური მისამართი", + "Ollama API": "", "Ollama Version": "Ollama ვერსია", "On": "ჩართვა", "Only": "მხოლოდ", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index e2da47fd1..06955e0e2 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "그렇습니다, 시작합시다!", "OLED Dark": "OLED 어두운", "Ollama": "Ollama", - "Ollama Base URL": "Ollama 기본 URL", + "Ollama API": "", "Ollama Version": "Ollama 버전", "On": "켜기", "Only": "오직", diff --git a/src/lib/i18n/locales/languages.json b/src/lib/i18n/locales/languages.json index dd311d982..02afc4a38 100644 --- a/src/lib/i18n/locales/languages.json +++ b/src/lib/i18n/locales/languages.json @@ -23,6 +23,10 @@ "code": "ca-ES", "title": "Catalan (català)" }, + { + "code": "ceb-PH", + "title": "Cebuano (Filipino)" + }, { "code": "de-DE", "title": "German (Deutsch)" diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 908d79d48..2eeea4662 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okay, Laten we gaan!", "OLED Dark": "OLED Donker", "Ollama": "Ollama", - "Ollama Base URL": "Ollama Basis URL", + "Ollama API": "", "Ollama Version": "Ollama Versie", "On": "Aan", "Only": "Alleen", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 1ead6089f..65c64481b 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "ਠੀਕ ਹੈ, ਚੱਲੋ ਚੱਲੀਏ!", "OLED Dark": "OLED ਗੂੜ੍ਹਾ", "Ollama": "ਓਲਾਮਾ", - "Ollama Base URL": "ਓਲਾਮਾ ਬੇਸ URL", + "Ollama API": "", "Ollama Version": "ਓਲਾਮਾ ਵਰਜਨ", "On": "ਚਾਲੂ", "Only": "ਸਿਰਫ਼", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index a62bf39e7..e2fb93696 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okej, zaczynamy!", "OLED Dark": "Ciemny OLED", "Ollama": "Ollama", - "Ollama Base URL": "Adres bazowy URL Ollama", + "Ollama API": "", "Ollama Version": "Wersja Ollama", "On": "Włączony", "Only": "Tylko", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 776a3fc5f..9a33d2ef6 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Ok, Vamos Lá!", "OLED Dark": "OLED Escuro", "Ollama": "Ollama", - "Ollama Base URL": "URL Base do Ollama", + "Ollama API": "", "Ollama Version": "Versão do Ollama", "On": "Ligado", "Only": "Somente", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 327de5fde..2b54c6cbc 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Ok, Vamos Lá!", "OLED Dark": "OLED Escuro", "Ollama": "Ollama", - "Ollama Base URL": "URL Base do Ollama", + "Ollama API": "", "Ollama Version": "Versão do Ollama", "On": "Ligado", "Only": "Somente", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index eb25352d3..402d822f8 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Давайте начнём!", "OLED Dark": "OLED темная", "Ollama": "Ollama", - "Ollama Base URL": "Базовый адрес URL Ollama", + "Ollama API": "", "Ollama Version": "Версия Ollama", "On": "Включено.", "Only": "Только", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 9d0d248ee..169b6b99d 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "У реду, хајде да кренемо!", "OLED Dark": "OLED тамна", "Ollama": "Ollama", - "Ollama Base URL": "Основна адреса Ollama-е", + "Ollama API": "", "Ollama Version": "Издање Ollama-е", "On": "Укључено", "Only": "Само", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index c53ca885a..8de10a51c 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Okej, nu kör vi!", "OLED Dark": "OLED mörkt", "Ollama": "Ollama", - "Ollama Base URL": "Ollama bas-URL", + "Ollama API": "", "Ollama Version": "Ollama-version", "On": "På", "Only": "Endast", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 3a43cc4cd..4bf5825b8 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Tamam, Hadi Başlayalım!", "OLED Dark": "OLED Koyu", "Ollama": "Ollama", - "Ollama Base URL": "Ollama Temel URL", + "Ollama API": "", "Ollama Version": "Ollama Sürümü", "On": "Açık", "Only": "Yalnızca", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 8ba50e675..2a4cbb42c 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Гаразд, давайте почнемо!", "OLED Dark": "Темний OLED", "Ollama": "Ollama", - "Ollama Base URL": "URL-адреса Ollama", + "Ollama API": "", "Ollama Version": "Версія Ollama", "On": "Увімк", "Only": "Тільки", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index c7b929223..f270c5d82 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "Được rồi, Bắt đầu thôi!", "OLED Dark": "OLED Dark", "Ollama": "Ollama", - "Ollama Base URL": "Đường dẫn tới API của Ollama (Ollama Base URL)", + "Ollama API": "", "Ollama Version": "Phiên bản Ollama", "On": "Bật", "Only": "Only", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 157f3f856..e7e4397cb 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "好的,我们开始吧!", "OLED Dark": "暗黑色", "Ollama": "Ollama", - "Ollama Base URL": "Ollama 基础 URL", + "Ollama API": "", "Ollama Version": "Ollama 版本", "On": "开", "Only": "仅", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 426ccc096..874798c9f 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -302,7 +302,7 @@ "Okay, Let's Go!": "好的,啟動吧!", "OLED Dark": "`", "Ollama": "Ollama", - "Ollama Base URL": "Ollama 基本 URL", + "Ollama API": "", "Ollama Version": "Ollama 版本", "On": "開啟", "Only": "僅有", diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index d59e316ff..ec52b5bc1 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -87,17 +87,29 @@ // IndexedDB Not Found } - await models.set(await getModels()); - await settings.set(JSON.parse(localStorage.getItem('settings') ?? '{}')); + settings.set(JSON.parse(localStorage.getItem('settings') ?? '{}')); - await modelfiles.set(await getModelfiles(localStorage.token)); - await prompts.set(await getPrompts(localStorage.token)); - await documents.set(await getDocs(localStorage.token)); - await tags.set(await getAllChatTags(localStorage.token)); + await Promise.all([ + (async () => { + models.set(await getModels()); + })(), + (async () => { + modelfiles.set(await getModelfiles(localStorage.token)); + })(), + (async () => { + prompts.set(await getPrompts(localStorage.token)); + })(), + (async () => { + documents.set(await getDocs(localStorage.token)); + })(), + (async () => { + tags.set(await getAllChatTags(localStorage.token)); + })() + ]); modelfiles.subscribe(async () => { // should fetch models - await models.set(await getModels()); + models.set(await getModels()); }); document.addEventListener('keydown', function (event) {