From 16ec25d2962e82346b773679033275e755257f30 Mon Sep 17 00:00:00 2001 From: Michael Poluektov Date: Thu, 22 Aug 2024 13:34:35 +0100 Subject: [PATCH 1/8] fix user valves --- backend/apps/webui/main.py | 45 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index bede4b4f83..661e2fbd64 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -56,12 +56,15 @@ from apps.socket.main import get_event_call, get_event_emitter import inspect import json +import logging from typing import Iterator, Generator, AsyncGenerator from pydantic import BaseModel app = FastAPI() +log = logging.getLogger(__name__) + app.state.config = AppConfig() app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP @@ -243,33 +246,23 @@ def get_pipe_id(form_data: dict) -> str: return pipe_id -def get_function_params(function_module, form_data, user, extra_params={}): +def get_function_params(function_module, form_data, user, extra_params=None): + if extra_params is None: + extra_params = {} + pipe_id = get_pipe_id(form_data) # Get the signature of the function sig = inspect.signature(function_module.pipe) - params = {"body": form_data} + addition_params = {k: v for k, v in extra_params.items() if k in sig.parameters} + params = {"body": form_data} | addition_params - for key, value in extra_params.items(): - if key in sig.parameters: - params[key] = value - - if "__user__" in sig.parameters: - __user__ = { - "id": user.id, - "email": user.email, - "name": user.name, - "role": user.role, - } - - try: - if hasattr(function_module, "UserValves"): - __user__["valves"] = function_module.UserValves( - **Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) - ) - except Exception as e: - print(e) - - params["__user__"] = __user__ + if "__user__" in params and hasattr(function_module, "UserValves"): + user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) + if user_valves: + try: + params["__user__"]["valves"] = function_module.UserValves(**user_valves) + except Exception as e: + log.exception(e) return params @@ -298,6 +291,12 @@ async def generate_function_chat_completion(form_data, user): "__event_emitter__": __event_emitter__, "__event_call__": __event_call__, "__task__": __task__, + "__user__": { + "id": user.id, + "email": user.email, + "name": user.name, + "role": user.role, + }, } tools_params = { **extra_params, From 9b5dfe64b7942b1eb2b23696b8a99b4d6b4fe92d Mon Sep 17 00:00:00 2001 From: Michael Poluektov Date: Thu, 22 Aug 2024 13:58:10 +0100 Subject: [PATCH 2/8] fix: is not None --- backend/apps/webui/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index 661e2fbd64..a039de895c 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -258,7 +258,7 @@ def get_function_params(function_module, form_data, user, extra_params=None): if "__user__" in params and hasattr(function_module, "UserValves"): user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) - if user_valves: + if user_valves is not None: try: params["__user__"]["valves"] = function_module.UserValves(**user_valves) except Exception as e: From 06f067fda9d44c885286882e865795e3e428c27f Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:03:39 +0200 Subject: [PATCH 3/8] refacfix --- backend/apps/webui/main.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index a039de895c..3b2df3988d 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -258,11 +258,10 @@ def get_function_params(function_module, form_data, user, extra_params=None): if "__user__" in params and hasattr(function_module, "UserValves"): user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) - if user_valves is not None: - try: - params["__user__"]["valves"] = function_module.UserValves(**user_valves) - except Exception as e: - log.exception(e) + params["__user__"]["valves"] = function_module.UserValves( + **(user_valves if user_valves else {}) + ) + return params From 14187b027d1fd4d36592d4b94bc1d24f3eb66874 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:09:06 +0200 Subject: [PATCH 4/8] refac --- backend/apps/webui/main.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index 3b2df3988d..0c5fdebd27 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -256,7 +256,7 @@ def get_function_params(function_module, form_data, user, extra_params=None): addition_params = {k: v for k, v in extra_params.items() if k in sig.parameters} params = {"body": form_data} | addition_params - if "__user__" in params and hasattr(function_module, "UserValves"): + if hasattr(function_module, "UserValves"): user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) params["__user__"]["valves"] = function_module.UserValves( **(user_valves if user_valves else {}) @@ -268,10 +268,11 @@ def get_function_params(function_module, form_data, user, extra_params=None): async def generate_function_chat_completion(form_data, user): model_id = form_data.get("model") model_info = Models.get_model_by_id(model_id) + metadata = form_data.pop("metadata", {}) + files = metadata.get("files", []) tool_ids = metadata.get("tool_ids", []) - # Check if tool_ids is None if tool_ids is None: tool_ids = [] @@ -297,15 +298,18 @@ async def generate_function_chat_completion(form_data, user): "role": user.role, }, } - tools_params = { - **extra_params, - "__model__": app.state.MODELS[form_data["model"]], - "__messages__": form_data["messages"], - "__files__": files, - } - tools = get_tools(app, tool_ids, user, tools_params) - extra_params["__tools__"] = tools + extra_params["__tools__"] = get_tools( + app, + tool_ids, + user, + { + **extra_params, + "__model__": app.state.MODELS[form_data["model"]], + "__messages__": form_data["messages"], + "__files__": files, + }, + ) if model_info: if model_info.base_model_id: From 3bf7d569c6808abc4e9f16c8e349cf11c22396eb Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:11:31 +0200 Subject: [PATCH 5/8] refac --- backend/apps/webui/main.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index 0c5fdebd27..f75e5cf9e8 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -297,20 +297,19 @@ async def generate_function_chat_completion(form_data, user): "name": user.name, "role": user.role, }, + "__tools__": get_tools( + app, + tool_ids, + user, + { + **extra_params, + "__model__": app.state.MODELS[form_data["model"]], + "__messages__": form_data["messages"], + "__files__": files, + }, + ), } - extra_params["__tools__"] = get_tools( - app, - tool_ids, - user, - { - **extra_params, - "__model__": app.state.MODELS[form_data["model"]], - "__messages__": form_data["messages"], - "__files__": files, - }, - ) - if model_info: if model_info.base_model_id: form_data["model"] = model_info.base_model_id From 589420c20890ff91fe50c86f894f266542e581d8 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:20:19 +0200 Subject: [PATCH 6/8] refac --- backend/apps/webui/main.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index f75e5cf9e8..a540dc4402 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -256,11 +256,13 @@ def get_function_params(function_module, form_data, user, extra_params=None): addition_params = {k: v for k, v in extra_params.items() if k in sig.parameters} params = {"body": form_data} | addition_params - if hasattr(function_module, "UserValves"): + if "__user__" in params and hasattr(function_module, "UserValves"): user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) - params["__user__"]["valves"] = function_module.UserValves( - **(user_valves if user_valves else {}) - ) + try: + params["__user__"]["valves"] = function_module.UserValves(**user_valves) + except Exception as e: + log.exception(e) + params["__user__"]["valves"] = function_module.UserValves() return params From 97808ba1c369033aa1055695a6f730c11e5f1f3d Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:23:32 +0200 Subject: [PATCH 7/8] refac --- backend/apps/webui/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index a540dc4402..065cdeba09 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -251,10 +251,12 @@ def get_function_params(function_module, form_data, user, extra_params=None): extra_params = {} pipe_id = get_pipe_id(form_data) + # Get the signature of the function sig = inspect.signature(function_module.pipe) - addition_params = {k: v for k, v in extra_params.items() if k in sig.parameters} - params = {"body": form_data} | addition_params + params = {"body": form_data} | { + k: v for k, v in extra_params.items() if k in sig.parameters + } if "__user__" in params and hasattr(function_module, "UserValves"): user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) From a3089e0472d4d8695849fdb68105e9c4c8ed85cc Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Thu, 22 Aug 2024 15:24:48 +0200 Subject: [PATCH 8/8] fix --- backend/apps/webui/main.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index 4b3fbad680..40f264860d 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -301,7 +301,9 @@ async def generate_function_chat_completion(form_data, user): "name": user.name, "role": user.role, }, - "__tools__": get_tools( + } + extra_params["__tools__"] = ( + get_tools( app, tool_ids, user, @@ -312,9 +314,8 @@ async def generate_function_chat_completion(form_data, user): "__files__": files, }, ), - } - - + ) + if model_info: if model_info.base_model_id: form_data["model"] = model_info.base_model_id