From d862295a05167d16bfa77156f8a7eb2cd47aefb0 Mon Sep 17 00:00:00 2001 From: Peter De-Ath Date: Thu, 6 Mar 2025 23:27:52 +0000 Subject: [PATCH 1/3] fix: update chat completion tools handler to use parameters from spec fixing defaults always used --- backend/open_webui/utils/middleware.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 289d887df..f62487d7a 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -189,17 +189,11 @@ async def chat_completion_tools_handler( tool_function_params = tool_call.get("parameters", {}) try: - required_params = ( - tools[tool_function_name] - .get("spec", {}) - .get("parameters", {}) - .get("required", []) - ) + spec = tools[tool_function_name].get("spec", {}) + allowed_params = spec.get("parameters", {}).get("properties", {}).keys() tool_function = tools[tool_function_name]["callable"] tool_function_params = { - k: v - for k, v in tool_function_params.items() - if k in required_params + k: v for k, v in tool_function_params.items() if k in allowed_params } tool_output = await tool_function(**tool_function_params) From 3b39807377b945a9a36729195807658e79bd08f4 Mon Sep 17 00:00:00 2001 From: Peter De-Ath Date: Fri, 7 Mar 2025 20:07:36 +0000 Subject: [PATCH 2/3] fix: updatepost_response_handler nativ tools handler to use parameters from properties fixing defaults always used --- backend/open_webui/utils/middleware.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index f62487d7a..c82764f4b 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1759,14 +1759,12 @@ async def process_chat_response( spec = tool.get("spec", {}) try: - required_params = spec.get("parameters", {}).get( - "required", [] - ) + allowed_params = spec.get("parameters", {}).get("properties", {}).keys() tool_function = tool["callable"] tool_function_params = { k: v for k, v in tool_function_params.items() - if k in required_params + if k in allowed_params } tool_result = await tool_function( **tool_function_params From 7e3be60f0ec0004098aa960731ae7ab96a99744a Mon Sep 17 00:00:00 2001 From: Peter De-Ath Date: Fri, 7 Mar 2025 20:37:22 +0000 Subject: [PATCH 3/3] formating --- backend/open_webui/utils/middleware.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index c82764f4b..ccb459865 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -190,10 +190,14 @@ async def chat_completion_tools_handler( try: spec = tools[tool_function_name].get("spec", {}) - allowed_params = spec.get("parameters", {}).get("properties", {}).keys() + allowed_params = ( + spec.get("parameters", {}).get("properties", {}).keys() + ) tool_function = tools[tool_function_name]["callable"] tool_function_params = { - k: v for k, v in tool_function_params.items() if k in allowed_params + k: v + for k, v in tool_function_params.items() + if k in allowed_params } tool_output = await tool_function(**tool_function_params) @@ -1759,7 +1763,11 @@ async def process_chat_response( spec = tool.get("spec", {}) try: - allowed_params = spec.get("parameters", {}).get("properties", {}).keys() + allowed_params = ( + spec.get("parameters", {}) + .get("properties", {}) + .keys() + ) tool_function = tool["callable"] tool_function_params = { k: v