diff --git a/CHANGELOG.md b/CHANGELOG.md index 71bd2af53..5ca694e65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.3.35] - 2024-10-26 + +### Added + +- **📁 Robust File Handling**: Enhanced file input handling for chat. If the content extraction fails or is empty, users will now receive a clear warning, preventing silent failures and ensuring you always know what's happening with your uploads. +- **🌍 New Language Support**: Introduced Hungarian translations and updated French translations, expanding the platform's language accessibility for a more global user base. + +### Fixed + +- **📚 Knowledge Base Loading Issue**: Resolved a critical bug where the Knowledge Base was not loading, ensuring smooth access to your stored documents and improving information retrieval in RAG-enhanced workflows. +- **🛠️ Tool Parameters Issue**: Fixed an error where tools were not functioning correctly when required parameters were missing, ensuring reliable tool performance and more efficient task completions. +- **🔗 Merged Response Loss in Multi-Model Chats**: Addressed an issue where responses in multi-model chat workflows were being deleted after follow-up queries, improving consistency and ensuring smoother interactions across models. + ## [0.3.34] - 2024-10-26 ### Added diff --git a/backend/open_webui/apps/webui/models/files.py b/backend/open_webui/apps/webui/models/files.py index 5e5fbaadb..31c9164b6 100644 --- a/backend/open_webui/apps/webui/models/files.py +++ b/backend/open_webui/apps/webui/models/files.py @@ -73,6 +73,8 @@ class FileModelResponse(BaseModel): created_at: int # timestamp in epoch updated_at: int # timestamp in epoch + model_config = ConfigDict(extra="allow") + class FileMetadataResponse(BaseModel): id: str diff --git a/backend/open_webui/apps/webui/routers/files.py b/backend/open_webui/apps/webui/routers/files.py index 5e316fa12..b8695eb67 100644 --- a/backend/open_webui/apps/webui/routers/files.py +++ b/backend/open_webui/apps/webui/routers/files.py @@ -38,7 +38,7 @@ router = APIRouter() ############################ -@router.post("/") +@router.post("/", response_model=FileModelResponse) def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)): log.info(f"file.content_type: {file.content_type}") try: @@ -73,6 +73,12 @@ def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)): except Exception as e: log.exception(e) log.error(f"Error processing file: {file_item.id}") + file_item = FileModelResponse( + **{ + **file_item.model_dump(), + "error": str(e.detail) if hasattr(e, "detail") else str(e), + } + ) if file_item: return file_item diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 17340427c..35f707328 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -439,10 +439,17 @@ async def chat_completion_tools_handler( tool_function_params = result.get("parameters", {}) try: + required_params = ( + tools[tool_function_name] + .get("spec", {}) + .get("parameters", {}) + .get("required", []) + ) tool_function = tools[tool_function_name]["callable"] - sig = inspect.signature(tool_function) tool_function_params = { - k: v for k, v in tool_function_params.items() if k in sig.parameters + k: v + for k, v in tool_function_params.items() + if k in required_params } tool_output = await tool_function(**tool_function_params) diff --git a/package-lock.json b/package-lock.json index 4481f9f1d..6cf21ae1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.3.34", + "version": "0.3.35", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.3.34", + "version": "0.3.35", "dependencies": { "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-python": "^6.1.6", diff --git a/package.json b/package.json index 1c433efd6..319402307 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.3.34", + "version": "0.3.35", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 051ae306b..a0feda057 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1070,7 +1070,7 @@ // Prepare the base message object const baseMessage = { role: message.role, - content: message.content + content: message?.merged?.content ?? message.content }; // Extract and format image URLs if any exist @@ -1535,10 +1535,7 @@ content: [ { type: 'text', - text: - arr.length - 1 !== idx - ? message.content - : (message?.raContent ?? message.content) + text: message?.merged?.content ?? message.content }, ...message.files .filter((file) => file.type === 'image') @@ -1551,10 +1548,7 @@ ] } : { - content: - arr.length - 1 !== idx - ? message.content - : (message?.raContent ?? message.content) + content: message?.merged?.content ?? message.content }) })), seed: params?.seed ?? $settings?.params?.seed ?? undefined, diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index ce48d9dfb..6dd6ff258 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -1,5 +1,7 @@