Browse Source

enh: better custom param handling

Timothy Jaeryang Baek 4 tháng trước cách đây
mục cha
commit
4371d2c5a5
2 tập tin đã thay đổi với 30 bổ sung0 xóa
  1. 10 0
      backend/open_webui/utils/middleware.py
  2. 20 0
      backend/open_webui/utils/payload.py

+ 10 - 0
backend/open_webui/utils/middleware.py

@@ -671,6 +671,16 @@ def apply_params_to_form_data(form_data, model):
             del params[key]
 
     if custom_params:
+        # Attempt to parse custom_params if they are strings
+        for key, value in custom_params.items():
+            if isinstance(value, str):
+                try:
+                    # Attempt to parse the string as JSON
+                    custom_params[key] = json.loads(value)
+                except json.JSONDecodeError:
+                    # If it fails, keep the original string
+                    pass
+
         # If custom_params are provided, merge them into params
         params = deep_update(params, custom_params)
 

+ 20 - 0
backend/open_webui/utils/payload.py

@@ -86,6 +86,16 @@ def apply_model_params_to_body_openai(params: dict, form_data: dict) -> dict:
 
     custom_params = params.pop("custom_params", {})
     if custom_params:
+        # Attempt to parse custom_params if they are strings
+        for key, value in custom_params.items():
+            if isinstance(value, str):
+                try:
+                    # Attempt to parse the string as JSON
+                    custom_params[key] = json.loads(value)
+                except json.JSONDecodeError:
+                    # If it fails, keep the original string
+                    pass
+
         # If there are custom parameters, we need to apply them first
         params = deep_update(params, custom_params)
 
@@ -110,6 +120,16 @@ def apply_model_params_to_body_ollama(params: dict, form_data: dict) -> dict:
 
     custom_params = params.pop("custom_params", {})
     if custom_params:
+        # Attempt to parse custom_params if they are strings
+        for key, value in custom_params.items():
+            if isinstance(value, str):
+                try:
+                    # Attempt to parse the string as JSON
+                    custom_params[key] = json.loads(value)
+                except json.JSONDecodeError:
+                    # If it fails, keep the original string
+                    pass
+
         # If there are custom parameters, we need to apply them first
         params = deep_update(params, custom_params)