mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
This commit fixes do_picture_description feature when using Docling as an external document parser.
Merge branch 'dev' into vaclavs-picture-description
This commit is contained in:
commit
0b3719cc65
50
.gitattributes
vendored
50
.gitattributes
vendored
@ -1 +1,49 @@
|
|||||||
*.sh text eol=lf
|
# TypeScript
|
||||||
|
*.ts text eol=lf
|
||||||
|
*.tsx text eol=lf
|
||||||
|
|
||||||
|
# JavaScript
|
||||||
|
*.js text eol=lf
|
||||||
|
*.jsx text eol=lf
|
||||||
|
*.mjs text eol=lf
|
||||||
|
*.cjs text eol=lf
|
||||||
|
|
||||||
|
# Svelte
|
||||||
|
*.svelte text eol=lf
|
||||||
|
|
||||||
|
# HTML/CSS
|
||||||
|
*.html text eol=lf
|
||||||
|
*.css text eol=lf
|
||||||
|
*.scss text eol=lf
|
||||||
|
*.less text eol=lf
|
||||||
|
|
||||||
|
# Config files and JSON
|
||||||
|
*.json text eol=lf
|
||||||
|
*.jsonc text eol=lf
|
||||||
|
*.yml text eol=lf
|
||||||
|
*.yaml text eol=lf
|
||||||
|
*.toml text eol=lf
|
||||||
|
|
||||||
|
# Shell scripts
|
||||||
|
*.sh text eol=lf
|
||||||
|
|
||||||
|
# Markdown & docs
|
||||||
|
*.md text eol=lf
|
||||||
|
*.mdx text eol=lf
|
||||||
|
*.txt text eol=lf
|
||||||
|
|
||||||
|
# Git-related
|
||||||
|
.gitattributes text eol=lf
|
||||||
|
.gitignore text eol=lf
|
||||||
|
|
||||||
|
# Prettier and other dotfiles
|
||||||
|
.prettierrc text eol=lf
|
||||||
|
.prettierignore text eol=lf
|
||||||
|
.eslintrc text eol=lf
|
||||||
|
.eslintignore text eol=lf
|
||||||
|
.stylelintrc text eol=lf
|
||||||
|
.editorconfig text eol=lf
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
*.env text eol=lf
|
||||||
|
*.lock text eol=lf
|
@ -5,5 +5,6 @@
|
|||||||
"printWidth": 100,
|
"printWidth": 100,
|
||||||
"plugins": ["prettier-plugin-svelte"],
|
"plugins": ["prettier-plugin-svelte"],
|
||||||
"pluginSearchDirs": ["."],
|
"pluginSearchDirs": ["."],
|
||||||
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }],
|
||||||
|
"endOfLine": "lf"
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ from open_webui.socket.main import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
from open_webui.models.users import UserModel
|
||||||
from open_webui.models.functions import Functions
|
from open_webui.models.functions import Functions
|
||||||
from open_webui.models.models import Models
|
from open_webui.models.models import Models
|
||||||
|
|
||||||
@ -227,12 +228,7 @@ async def generate_function_chat_completion(
|
|||||||
"__task__": __task__,
|
"__task__": __task__,
|
||||||
"__task_body__": __task_body__,
|
"__task_body__": __task_body__,
|
||||||
"__files__": files,
|
"__files__": files,
|
||||||
"__user__": {
|
"__user__": user.model_dump() if isinstance(user, UserModel) else {},
|
||||||
"id": user.id,
|
|
||||||
"email": user.email,
|
|
||||||
"name": user.name,
|
|
||||||
"role": user.role,
|
|
||||||
},
|
|
||||||
"__metadata__": metadata,
|
"__metadata__": metadata,
|
||||||
"__request__": request,
|
"__request__": request,
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ from fastapi import (
|
|||||||
from fastapi.openapi.docs import get_swagger_ui_html
|
from fastapi.openapi.docs import get_swagger_ui_html
|
||||||
|
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import JSONResponse, RedirectResponse
|
from fastapi.responses import FileResponse, JSONResponse, RedirectResponse
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from starlette_compress import CompressMiddleware
|
from starlette_compress import CompressMiddleware
|
||||||
@ -1634,7 +1634,20 @@ async def healthcheck_with_db():
|
|||||||
|
|
||||||
|
|
||||||
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
|
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
|
||||||
app.mount("/cache", StaticFiles(directory=CACHE_DIR), name="cache")
|
|
||||||
|
|
||||||
|
@app.get("/cache/{path:path}")
|
||||||
|
async def serve_cache_file(
|
||||||
|
path: str,
|
||||||
|
user=Depends(get_verified_user),
|
||||||
|
):
|
||||||
|
file_path = os.path.abspath(os.path.join(CACHE_DIR, path))
|
||||||
|
# prevent path traversal
|
||||||
|
if not file_path.startswith(os.path.abspath(CACHE_DIR)):
|
||||||
|
raise HTTPException(status_code=404, detail="File not found")
|
||||||
|
if not os.path.isfile(file_path):
|
||||||
|
raise HTTPException(status_code=404, detail="File not found")
|
||||||
|
return FileResponse(file_path)
|
||||||
|
|
||||||
|
|
||||||
def swagger_ui_html(*args, **kwargs):
|
def swagger_ui_html(*args, **kwargs):
|
||||||
|
@ -320,12 +320,7 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
|
|||||||
extra_params = {
|
extra_params = {
|
||||||
"__event_emitter__": get_event_emitter(metadata),
|
"__event_emitter__": get_event_emitter(metadata),
|
||||||
"__event_call__": get_event_call(metadata),
|
"__event_call__": get_event_call(metadata),
|
||||||
"__user__": {
|
"__user__": user.model_dump() if isinstance(user, UserModel) else {},
|
||||||
"id": user.id,
|
|
||||||
"email": user.email,
|
|
||||||
"name": user.name,
|
|
||||||
"role": user.role,
|
|
||||||
},
|
|
||||||
"__metadata__": metadata,
|
"__metadata__": metadata,
|
||||||
"__request__": request,
|
"__request__": request,
|
||||||
"__model__": model,
|
"__model__": model,
|
||||||
@ -424,12 +419,7 @@ async def chat_action(request: Request, action_id: str, form_data: dict, user: A
|
|||||||
params[key] = value
|
params[key] = value
|
||||||
|
|
||||||
if "__user__" in sig.parameters:
|
if "__user__" in sig.parameters:
|
||||||
__user__ = {
|
__user__ = (user.model_dump() if isinstance(user, UserModel) else {},)
|
||||||
"id": user.id,
|
|
||||||
"email": user.email,
|
|
||||||
"name": user.name,
|
|
||||||
"role": user.role,
|
|
||||||
}
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if hasattr(function_module, "UserValves"):
|
if hasattr(function_module, "UserValves"):
|
||||||
|
@ -727,12 +727,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||||||
extra_params = {
|
extra_params = {
|
||||||
"__event_emitter__": event_emitter,
|
"__event_emitter__": event_emitter,
|
||||||
"__event_call__": event_call,
|
"__event_call__": event_call,
|
||||||
"__user__": {
|
"__user__": user.model_dump() if isinstance(user, UserModel) else {},
|
||||||
"id": user.id,
|
|
||||||
"email": user.email,
|
|
||||||
"name": user.name,
|
|
||||||
"role": user.role,
|
|
||||||
},
|
|
||||||
"__metadata__": metadata,
|
"__metadata__": metadata,
|
||||||
"__request__": request,
|
"__request__": request,
|
||||||
"__model__": model,
|
"__model__": model,
|
||||||
@ -1327,12 +1322,7 @@ async def process_chat_response(
|
|||||||
extra_params = {
|
extra_params = {
|
||||||
"__event_emitter__": event_emitter,
|
"__event_emitter__": event_emitter,
|
||||||
"__event_call__": event_caller,
|
"__event_call__": event_caller,
|
||||||
"__user__": {
|
"__user__": user.model_dump() if isinstance(user, UserModel) else {},
|
||||||
"id": user.id,
|
|
||||||
"email": user.email,
|
|
||||||
"name": user.name,
|
|
||||||
"role": user.role,
|
|
||||||
},
|
|
||||||
"__metadata__": metadata,
|
"__metadata__": metadata,
|
||||||
"__request__": request,
|
"__request__": request,
|
||||||
"__model__": model,
|
"__model__": model,
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<!-- svelte-ignore a11y-media-has-caption -->
|
<!-- svelte-ignore a11y-media-has-caption -->
|
||||||
<video
|
<video
|
||||||
class="w-full my-2"
|
class="w-full my-2"
|
||||||
src={videoSrc}
|
src={videoSrc.replaceAll('&', '&')}
|
||||||
title="Video player"
|
title="Video player"
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
referrerpolicy="strict-origin-when-cross-origin"
|
referrerpolicy="strict-origin-when-cross-origin"
|
||||||
|
Loading…
Reference in New Issue
Block a user