mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
refac/fix: open webui params handling
This commit is contained in:
parent
661625f362
commit
d43bbcae28
@ -253,8 +253,13 @@ async def generate_function_chat_completion(
|
|||||||
form_data["model"] = model_info.base_model_id
|
form_data["model"] = model_info.base_model_id
|
||||||
|
|
||||||
params = model_info.params.model_dump()
|
params = model_info.params.model_dump()
|
||||||
form_data = apply_model_params_to_body_openai(params, form_data)
|
|
||||||
form_data = apply_model_system_prompt_to_body(params, form_data, metadata, user)
|
if params:
|
||||||
|
system = params.pop("system", None)
|
||||||
|
form_data = apply_model_params_to_body_openai(params, form_data)
|
||||||
|
form_data = apply_model_system_prompt_to_body(
|
||||||
|
system, form_data, metadata, user
|
||||||
|
)
|
||||||
|
|
||||||
pipe_id = get_pipe_id(form_data)
|
pipe_id = get_pipe_id(form_data)
|
||||||
function_module = get_function_module_by_id(request, pipe_id)
|
function_module = get_function_module_by_id(request, pipe_id)
|
||||||
|
@ -1289,7 +1289,9 @@ async def generate_chat_completion(
|
|||||||
payload["options"] = apply_model_params_to_body_ollama(
|
payload["options"] = apply_model_params_to_body_ollama(
|
||||||
params, payload["options"]
|
params, payload["options"]
|
||||||
)
|
)
|
||||||
payload = apply_model_system_prompt_to_body(params, payload, metadata, user)
|
payload = apply_model_system_prompt_to_body(
|
||||||
|
params.get("system"), payload, metadata, user
|
||||||
|
)
|
||||||
|
|
||||||
# Check if user has access to the model
|
# Check if user has access to the model
|
||||||
if not bypass_filter and user.role == "user":
|
if not bypass_filter and user.role == "user":
|
||||||
@ -1471,8 +1473,10 @@ async def generate_openai_chat_completion(
|
|||||||
params = model_info.params.model_dump()
|
params = model_info.params.model_dump()
|
||||||
|
|
||||||
if params:
|
if params:
|
||||||
|
system = params.pop("system", None)
|
||||||
|
|
||||||
payload = apply_model_params_to_body_openai(params, payload)
|
payload = apply_model_params_to_body_openai(params, payload)
|
||||||
payload = apply_model_system_prompt_to_body(params, payload, metadata, user)
|
payload = apply_model_system_prompt_to_body(system, payload, metadata, user)
|
||||||
|
|
||||||
# Check if user has access to the model
|
# Check if user has access to the model
|
||||||
if user.role == "user":
|
if user.role == "user":
|
||||||
|
@ -715,8 +715,12 @@ async def generate_chat_completion(
|
|||||||
model_id = model_info.base_model_id
|
model_id = model_info.base_model_id
|
||||||
|
|
||||||
params = model_info.params.model_dump()
|
params = model_info.params.model_dump()
|
||||||
payload = apply_model_params_to_body_openai(params, payload)
|
|
||||||
payload = apply_model_system_prompt_to_body(params, payload, metadata, user)
|
if params:
|
||||||
|
system = params.pop("system", None)
|
||||||
|
|
||||||
|
payload = apply_model_params_to_body_openai(params, payload)
|
||||||
|
payload = apply_model_system_prompt_to_body(system, payload, metadata, user)
|
||||||
|
|
||||||
# Check if user has access to the model
|
# Check if user has access to the model
|
||||||
if not bypass_filter and user.role == "user":
|
if not bypass_filter and user.role == "user":
|
||||||
|
@ -660,6 +660,16 @@ def apply_params_to_form_data(form_data, model):
|
|||||||
params = form_data.pop("params", {})
|
params = form_data.pop("params", {})
|
||||||
custom_params = params.pop("custom_params", {})
|
custom_params = params.pop("custom_params", {})
|
||||||
|
|
||||||
|
open_webui_params = {
|
||||||
|
"stream_response": bool,
|
||||||
|
"function_calling": str,
|
||||||
|
"system": str,
|
||||||
|
}
|
||||||
|
|
||||||
|
for key in list(params.keys()):
|
||||||
|
if key in open_webui_params:
|
||||||
|
del params[key]
|
||||||
|
|
||||||
if custom_params:
|
if custom_params:
|
||||||
# If custom_params are provided, merge them into params
|
# If custom_params are provided, merge them into params
|
||||||
params = deep_update(params, custom_params)
|
params = deep_update(params, custom_params)
|
||||||
|
@ -10,9 +10,8 @@ import json
|
|||||||
|
|
||||||
# inplace function: form_data is modified
|
# inplace function: form_data is modified
|
||||||
def apply_model_system_prompt_to_body(
|
def apply_model_system_prompt_to_body(
|
||||||
params: dict, form_data: dict, metadata: Optional[dict] = None, user=None
|
system: Optional[str], form_data: dict, metadata: Optional[dict] = None, user=None
|
||||||
) -> dict:
|
) -> dict:
|
||||||
system = params.get("system", None)
|
|
||||||
if not system:
|
if not system:
|
||||||
return form_data
|
return form_data
|
||||||
|
|
||||||
@ -58,8 +57,33 @@ def apply_model_params_to_body(
|
|||||||
return form_data
|
return form_data
|
||||||
|
|
||||||
|
|
||||||
|
def remove_open_webui_params(params: dict) -> dict:
|
||||||
|
"""
|
||||||
|
Removes OpenWebUI specific parameters from the provided dictionary.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
params (dict): The dictionary containing parameters.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: The modified dictionary with OpenWebUI parameters removed.
|
||||||
|
"""
|
||||||
|
open_webui_params = {
|
||||||
|
"stream_response": bool,
|
||||||
|
"function_calling": str,
|
||||||
|
"system": str,
|
||||||
|
}
|
||||||
|
|
||||||
|
for key in list(params.keys()):
|
||||||
|
if key in open_webui_params:
|
||||||
|
del params[key]
|
||||||
|
|
||||||
|
return params
|
||||||
|
|
||||||
|
|
||||||
# inplace function: form_data is modified
|
# inplace function: form_data is modified
|
||||||
def apply_model_params_to_body_openai(params: dict, form_data: dict) -> dict:
|
def apply_model_params_to_body_openai(params: dict, form_data: dict) -> dict:
|
||||||
|
params = remove_open_webui_params(params)
|
||||||
|
|
||||||
custom_params = params.pop("custom_params", {})
|
custom_params = params.pop("custom_params", {})
|
||||||
if custom_params:
|
if custom_params:
|
||||||
# If there are custom parameters, we need to apply them first
|
# If there are custom parameters, we need to apply them first
|
||||||
@ -82,6 +106,8 @@ def apply_model_params_to_body_openai(params: dict, form_data: dict) -> dict:
|
|||||||
|
|
||||||
|
|
||||||
def apply_model_params_to_body_ollama(params: dict, form_data: dict) -> dict:
|
def apply_model_params_to_body_ollama(params: dict, form_data: dict) -> dict:
|
||||||
|
params = remove_open_webui_params(params)
|
||||||
|
|
||||||
custom_params = params.pop("custom_params", {})
|
custom_params = params.pop("custom_params", {})
|
||||||
if custom_params:
|
if custom_params:
|
||||||
# If there are custom parameters, we need to apply them first
|
# If there are custom parameters, we need to apply them first
|
||||||
|
Loading…
Reference in New Issue
Block a user