Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions resources/functions/openwebui_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def __init__(self):
self.outage = False
self.start_time = None
self.translations = TRANSLATIONS
self.inlet_temp = None

def get_text(self, key: str, **kwargs) -> str:
"""获取指定语言的文本"""
Expand All @@ -86,7 +87,14 @@ def _prepare_body_dict(self, body: dict) -> dict:
body_dict["metadata"]["model"] = body_dict["metadata"]["model"].model_dump()

return body_dict

def _modify_outlet_body(self, body: dict) -> dict:
body_modify = dict(body)
last_message = body_modify["messages"][-1]

if "info" not in last_message and self.inlet_temp is not None:
body_modify["messages"][:-1] = self.inlet_temp["messages"]
return body_modify

def inlet(
self, body: dict, user: Optional[dict] = None, __user__: dict = {}
) -> dict:
Expand All @@ -98,6 +106,7 @@ def inlet(

user_dict = self._prepare_user_dict(__user__)
body_dict = self._prepare_body_dict(body)
self.inlet_temp = body_dict
response = requests.post(
post_url, headers=headers, json={"user": user_dict, "body": body_dict}
)
Expand All @@ -116,7 +125,6 @@ def inlet(
self.outage = response_data.get("balance", 0) <= 0
if self.outage:
raise Exception(self.get_text("insufficient_balance", balance=response_data['balance']))

return body

except requests.exceptions.RequestException as e:
Expand Down Expand Up @@ -144,10 +152,11 @@ async def outlet(
headers = {"Authorization": f"Bearer {self.valves.API_KEY}"}

user_dict = self._prepare_user_dict(__user__)
body_modify = self._modify_outlet_body(body)

request_data = {
"user": user_dict,
"body": body,
"body": body_modify,
}

response = requests.post(post_url, headers=headers, json=request_data)
Expand Down
19 changes: 15 additions & 4 deletions resources/functions/openwebui_monitor_invisible.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def __init__(self):
self.valves = self.Valves()
self.outage = False
self.start_time = None
self.inlet_temp = None

def _prepare_request_body(self, body: dict) -> dict:
"""Convert body and nested objects to JSON-serializable format"""
Expand All @@ -45,6 +46,14 @@ def _prepare_user_dict(self, __user__: dict) -> dict:

return user_dict

def _modify_outlet_body(self, body: dict) -> dict:
body_modify = dict(body)
last_message = body_modify["messages"][-1]

if "info" not in last_message and self.inlet_temp is not None:
body_modify["messages"][:-1] = self.inlet_temp["messages"]
return body_modify

def inlet(
self, body: dict, user: Optional[dict] = None, __user__: dict = {}
) -> dict:
Expand All @@ -56,10 +65,11 @@ def inlet(

# 使用 _prepare_user_dict 处理 __user__ 对象
user_dict = self._prepare_user_dict(__user__)

body_dict = self._prepare_request_body(body)
self.inlet_temp = body_dict
request_data = {
"user": user_dict,
"body": self._prepare_request_body(body)
"body": body_dict
}
response = requests.post(post_url, headers=headers, json=request_data)

Expand Down Expand Up @@ -106,10 +116,11 @@ async def outlet(

# 使用 _prepare_user_dict 处理 __user__ 对象
user_dict = self._prepare_user_dict(__user__)

body_dict = self._prepare_request_body(body)
body_modify = self._modify_outlet_body(body_dict)
request_data = {
"user": user_dict,
"body": self._prepare_request_body(body)
"body": body_modify
}
response = requests.post(post_url, headers=headers, json=request_data)

Expand Down