Merge branch 'dev' into feature/translation-fixes-croatian

This commit is contained in:
Timothy Jaeryang Baek 2024-05-22 09:41:53 -10:00 committed by GitHub
commit 1c2c244041
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
48 changed files with 905 additions and 240 deletions

View File

@ -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: .

View File

@ -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 }}

View File

@ -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

View File

@ -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 }}

View File

@ -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"]}

View File

@ -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"
)

View File

@ -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
pytube==15.0.0

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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 @@
<hr class=" dark:border-gray-700" />
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Ollama Base URL')}</div>
<div class="flex w-full gap-1.5">
<div class="flex-1 flex flex-col gap-2">
{#each OLLAMA_BASE_URLS as url, idx}
<div class="flex gap-1.5">
<input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('Enter URL (e.g. http://localhost:11434)')}
bind:value={url}
/>
<div class="pr-1.5 space-y-2">
<div class="flex justify-between items-center text-sm">
<div class=" font-medium">{$i18n.t('Ollama API')}</div>
<div class="self-center flex items-center">
{#if idx === 0}
<button
class="px-1"
on:click={() => {
OLLAMA_BASE_URLS = [...OLLAMA_BASE_URLS, ''];
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z"
/>
</svg>
</button>
{:else}
<button
class="px-1"
on:click={() => {
OLLAMA_BASE_URLS = OLLAMA_BASE_URLS.filter((url, urlIdx) => idx !== urlIdx);
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-4 h-4"
>
<path d="M3.75 7.25a.75.75 0 0 0 0 1.5h8.5a.75.75 0 0 0 0-1.5h-8.5Z" />
</svg>
</button>
{/if}
</div>
</div>
{/each}
</div>
<div class="">
<button
class="p-2.5 bg-gray-200 hover:bg-gray-300 dark:bg-gray-850 dark:hover:bg-gray-800 rounded-lg transition"
on:click={() => {
updateOllamaUrlsHandler();
<div class="mt-1">
<Switch
bind:state={ENABLE_OLLAMA_API}
on:change={async () => {
updateOllamaConfig(localStorage.token, ENABLE_OLLAMA_API);
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenodd"
d="M15.312 11.424a5.5 5.5 0 01-9.201 2.466l-.312-.311h2.433a.75.75 0 000-1.5H3.989a.75.75 0 00-.75.75v4.242a.75.75 0 001.5 0v-2.43l.31.31a7 7 0 0011.712-3.138.75.75 0 00-1.449-.39zm1.23-3.723a.75.75 0 00.219-.53V2.929a.75.75 0 00-1.5 0V5.36l-.31-.31A7 7 0 003.239 8.188a.75.75 0 101.448.389A5.5 5.5 0 0113.89 6.11l.311.31h-2.432a.75.75 0 000 1.5h4.243a.75.75 0 00.53-.219z"
clip-rule="evenodd"
/>
</svg>
</button>
/>
</div>
</div>
{#if ENABLE_OLLAMA_API}
<div class="flex w-full gap-1.5">
<div class="flex-1 flex flex-col gap-2">
{#each OLLAMA_BASE_URLS as url, idx}
<div class="flex gap-1.5">
<input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('Enter URL (e.g. http://localhost:11434)')}
bind:value={url}
/>
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t('Trouble accessing Ollama?')}
<a
class=" text-gray-300 font-medium underline"
href="https://github.com/open-webui/open-webui#troubleshooting"
target="_blank"
>
{$i18n.t('Click here for help.')}
</a>
</div>
<div class="self-center flex items-center">
{#if idx === 0}
<button
class="px-1"
on:click={() => {
OLLAMA_BASE_URLS = [...OLLAMA_BASE_URLS, ''];
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z"
/>
</svg>
</button>
{:else}
<button
class="px-1"
on:click={() => {
OLLAMA_BASE_URLS = OLLAMA_BASE_URLS.filter((url, urlIdx) => idx !== urlIdx);
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-4 h-4"
>
<path d="M3.75 7.25a.75.75 0 0 0 0 1.5h8.5a.75.75 0 0 0 0-1.5h-8.5Z" />
</svg>
</button>
{/if}
</div>
</div>
{/each}
</div>
<div class="flex">
<button
class="self-center p-2 bg-gray-200 hover:bg-gray-300 dark:bg-gray-900 dark:hover:bg-gray-850 rounded-lg transition"
on:click={() => {
updateOllamaUrlsHandler();
}}
type="button"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenodd"
d="M15.312 11.424a5.5 5.5 0 01-9.201 2.466l-.312-.311h2.433a.75.75 0 000-1.5H3.989a.75.75 0 00-.75.75v4.242a.75.75 0 001.5 0v-2.43l.31.31a7 7 0 0011.712-3.138.75.75 0 00-1.449-.39zm1.23-3.723a.75.75 0 00.219-.53V2.929a.75.75 0 00-1.5 0V5.36l-.31-.31A7 7 0 003.239 8.188a.75.75 0 101.448.389A5.5 5.5 0 0113.89 6.11l.311.31h-2.432a.75.75 0 000 1.5h4.243a.75.75 0 00.53-.219z"
clip-rule="evenodd"
/>
</svg>
</button>
</div>
</div>
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t('Trouble accessing Ollama?')}
<a
class=" text-gray-300 font-medium underline"
href="https://github.com/open-webui/open-webui#troubleshooting"
target="_blank"
>
{$i18n.t('Click here for help.')}
</a>
</div>
{/if}
</div>
</div>

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "حسنا دعنا نذهب!",
"OLED Dark": "OLED داكن",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama الرابط الافتراضي",
"Ollama API": "",
"Ollama Version": "Ollama الاصدار",
"On": "تشغيل",
"Only": "فقط",

View File

@ -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": "Само",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
"OLED Dark": "OLED ডার্ক",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama বেজ ইউআরএল",
"Ollama API": "",
"Ollama Version": "Ollama ভার্সন",
"On": "চালু",
"Only": "শুধুমাত্র",

View File

@ -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",

View File

@ -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",
"Whats 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": ""
}

View File

@ -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",

View File

@ -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",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "",
"OLED Dark": "",
"Ollama": "",
"Ollama Base URL": "",
"Ollama API": "",
"Ollama Version": "",
"On": "",
"Only": "",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "",
"OLED Dark": "",
"Ollama": "",
"Ollama Base URL": "",
"Ollama API": "",
"Ollama Version": "",
"On": "",
"Only": "",

View File

@ -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",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "باشه، بزن بریم!",
"OLED Dark": "OLED تیره",
"Ollama": "Ollama",
"Ollama Base URL": "URL پایه اولاما",
"Ollama API": "",
"Ollama Version": "نسخه اولاما",
"On": "روشن",
"Only": "فقط",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": "רק",

View File

@ -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": "केवल",

View File

@ -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",

View File

@ -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",

View File

@ -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": "のみ",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "კარგი, წავედით!",
"OLED Dark": "OLED მუქი",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama ბაზისური მისამართი",
"Ollama API": "",
"Ollama Version": "Ollama ვერსია",
"On": "ჩართვა",
"Only": "მხოლოდ",

View File

@ -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": "오직",

View File

@ -23,6 +23,10 @@
"code": "ca-ES",
"title": "Catalan (català)"
},
{
"code": "ceb-PH",
"title": "Cebuano (Filipino)"
},
{
"code": "de-DE",
"title": "German (Deutsch)"

View File

@ -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",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "ਠੀਕ ਹੈ, ਚੱਲੋ ਚੱਲੀਏ!",
"OLED Dark": "OLED ਗੂੜ੍ਹਾ",
"Ollama": "ਓਲਾਮਾ",
"Ollama Base URL": "ਓਲਾਮਾ ਬੇਸ URL",
"Ollama API": "",
"Ollama Version": "ਓਲਾਮਾ ਵਰਜਨ",
"On": "ਚਾਲੂ",
"Only": "ਸਿਰਫ਼",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": "Только",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "У реду, хајде да кренемо!",
"OLED Dark": "OLED тамна",
"Ollama": "Ollama",
"Ollama Base URL": "Основна адреса Ollama-е",
"Ollama API": "",
"Ollama Version": "Издање Ollama-е",
"On": "Укључено",
"Only": "Само",

View File

@ -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",

View File

@ -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",

View File

@ -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": "Тільки",

View File

@ -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",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "好的,我们开始吧!",
"OLED Dark": "暗黑色",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama 基础 URL",
"Ollama API": "",
"Ollama Version": "Ollama 版本",
"On": "开",
"Only": "仅",

View File

@ -302,7 +302,7 @@
"Okay, Let's Go!": "好的,啟動吧!",
"OLED Dark": "`",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama 基本 URL",
"Ollama API": "",
"Ollama Version": "Ollama 版本",
"On": "開啟",
"Only": "僅有",

View File

@ -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) {