From 12d3157283c7348ed59ee1e726abcf03ca807cdd Mon Sep 17 00:00:00 2001 From: ShallowDream724 <2045093190@qq.com> Date: Thu, 28 Nov 2024 15:46:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20UserValves=20?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=BA=8F=E5=88=97=E5=8C=96=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=20=5Fprepare=5Fuser=5Fdict=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=A4=84=E7=90=86=20"Object=20of=20type=20Us?= =?UTF-8?q?erValves=20is=20not=20JSON=20serializable"=20=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/functions/openwebui_monitor.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/resources/functions/openwebui_monitor.py b/resources/functions/openwebui_monitor.py index 8ba60d1..d6da64f 100644 --- a/resources/functions/openwebui_monitor.py +++ b/resources/functions/openwebui_monitor.py @@ -30,6 +30,16 @@ def __init__(self): self.outage = False self.start_time = None + def _prepare_user_dict(self, __user__: dict) -> dict: + """将 __user__ 对象转换为可序列化的字典""" + user_dict = dict(__user__) # 创建副本以避免修改原始对象 + + # 如果存在 valves 且是 BaseModel 的实例,将其转换为字典 + if "valves" in user_dict and hasattr(user_dict["valves"], "model_dump"): + user_dict["valves"] = user_dict["valves"].model_dump() + + return user_dict + def inlet( self, body: dict, user: Optional[dict] = None, __user__: dict = {} ) -> dict: @@ -38,8 +48,12 @@ def inlet( try: post_url = f"{self.valves.API_ENDPOINT}/api/v1/inlet" headers = {"Authorization": f"Bearer {self.valves.API_KEY}"} + + # 使用 _prepare_user_dict 处理 __user__ 对象 + user_dict = self._prepare_user_dict(__user__) + response = requests.post( - post_url, headers=headers, json={"user": __user__, "body": body} + post_url, headers=headers, json={"user": user_dict, "body": body} ) if response.status_code == 401: @@ -82,8 +96,12 @@ async def outlet( try: post_url = f"{self.valves.API_ENDPOINT}/api/v1/outlet" headers = {"Authorization": f"Bearer {self.valves.API_KEY}"} + + # 使用 _prepare_user_dict 处理 __user__ 对象 + user_dict = self._prepare_user_dict(__user__) + request_data = { - "user": __user__, + "user": user_dict, "body": body, }