mirror of
https://github.com/open-webui/open-webui.git
synced 2026-09-07 08:27:05 +00:00
fix: thread bypass flag into ollama.py secondary base-model checks
Address review feedback: the four other chat-completion-like endpoints in ollama.py (generate_openai_completion, generate_openai_chat_completion, generate_anthropic_messages, generate_responses) received the new check_base_model_access call without a bypass flag. The native generate_chat_completion path in the same file and in routers/openai.py thread bypass_filter through, so base-model enforcement was inconsistent between closely related routes. Derive bypass_filter the same way — request.state.bypass_filter OR BYPASS_MODEL_ACCESS_CONTROL — at each of the four sites and pass it to check_base_model_access. Pre-existing check_model_access calls on the user-facing model at these sites already ignore bypass; that is a separate, pre-existing inconsistency that this PR does not take on.
This commit is contained in:
parent
980dd2141f
commit
e874469d0f
1 changed files with 8 additions and 4 deletions
|
|
@ -1198,10 +1198,11 @@ async def generate_openai_completion(
|
|||
|
||||
model_id = form_data.model
|
||||
model_info = await Models.get_model_by_id(model_id)
|
||||
base_bypass_filter = getattr(request.state, 'bypass_filter', False) or BYPASS_MODEL_ACCESS_CONTROL
|
||||
if model_info:
|
||||
if model_info.base_model_id:
|
||||
payload['model'] = model_info.base_model_id
|
||||
await check_base_model_access(user, model_info.base_model_id)
|
||||
await check_base_model_access(user, model_info.base_model_id, base_bypass_filter)
|
||||
params = model_info.params.model_dump()
|
||||
|
||||
if params:
|
||||
|
|
@ -1261,10 +1262,11 @@ async def generate_openai_chat_completion(
|
|||
|
||||
model_id = completion_form.model
|
||||
model_info = await Models.get_model_by_id(model_id)
|
||||
base_bypass_filter = getattr(request.state, 'bypass_filter', False) or BYPASS_MODEL_ACCESS_CONTROL
|
||||
if model_info:
|
||||
if model_info.base_model_id:
|
||||
payload['model'] = model_info.base_model_id
|
||||
await check_base_model_access(user, model_info.base_model_id)
|
||||
await check_base_model_access(user, model_info.base_model_id, base_bypass_filter)
|
||||
|
||||
params = model_info.params.model_dump()
|
||||
|
||||
|
|
@ -1322,10 +1324,11 @@ async def generate_anthropic_messages(
|
|||
model_id = payload.get('model', '')
|
||||
|
||||
model_info = await Models.get_model_by_id(model_id)
|
||||
base_bypass_filter = getattr(request.state, 'bypass_filter', False) or BYPASS_MODEL_ACCESS_CONTROL
|
||||
if model_info:
|
||||
if model_info.base_model_id:
|
||||
payload['model'] = model_info.base_model_id
|
||||
await check_base_model_access(user, model_info.base_model_id)
|
||||
await check_base_model_access(user, model_info.base_model_id, base_bypass_filter)
|
||||
|
||||
await check_model_access(user, model_info)
|
||||
else:
|
||||
|
|
@ -1381,10 +1384,11 @@ async def generate_responses(
|
|||
model_id = form_data.model
|
||||
|
||||
model_info = await Models.get_model_by_id(model_id)
|
||||
base_bypass_filter = getattr(request.state, 'bypass_filter', False) or BYPASS_MODEL_ACCESS_CONTROL
|
||||
if model_info:
|
||||
if model_info.base_model_id:
|
||||
payload['model'] = model_info.base_model_id
|
||||
await check_base_model_access(user, model_info.base_model_id)
|
||||
await check_base_model_access(user, model_info.base_model_id, base_bypass_filter)
|
||||
|
||||
# Check if user has access to the model
|
||||
if user.role == 'user':
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue