mirror of
https://github.com/open-webui/open-webui.git
synced 2026-04-30 17:28:51 -05:00
refac
This commit is contained in:
@@ -21,70 +21,70 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def chat_action(request: Request, action_id: str, form_data: dict, user: Any):
|
||||
if "." in action_id:
|
||||
action_id, sub_action_id = action_id.split(".")
|
||||
if '.' in action_id:
|
||||
action_id, sub_action_id = action_id.split('.')
|
||||
else:
|
||||
sub_action_id = None
|
||||
|
||||
action = Functions.get_function_by_id(action_id)
|
||||
if not action:
|
||||
raise Exception(f"Action not found: {action_id}")
|
||||
raise Exception(f'Action not found: {action_id}')
|
||||
|
||||
if not request.app.state.MODELS:
|
||||
await get_all_models(request, user=user)
|
||||
|
||||
if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
|
||||
if getattr(request.state, 'direct', False) and hasattr(request.state, 'model'):
|
||||
models = {
|
||||
request.state.model["id"]: request.state.model,
|
||||
request.state.model['id']: request.state.model,
|
||||
}
|
||||
else:
|
||||
models = request.app.state.MODELS
|
||||
|
||||
data = form_data
|
||||
model_id = data["model"]
|
||||
model_id = data['model']
|
||||
|
||||
if model_id not in models:
|
||||
raise Exception("Model not found")
|
||||
raise Exception('Model not found')
|
||||
model = models[model_id]
|
||||
|
||||
__event_emitter__ = get_event_emitter(
|
||||
{
|
||||
"chat_id": data["chat_id"],
|
||||
"message_id": data["id"],
|
||||
"session_id": data["session_id"],
|
||||
"user_id": user.id,
|
||||
'chat_id': data['chat_id'],
|
||||
'message_id': data['id'],
|
||||
'session_id': data['session_id'],
|
||||
'user_id': user.id,
|
||||
}
|
||||
)
|
||||
__event_call__ = get_event_call(
|
||||
{
|
||||
"chat_id": data["chat_id"],
|
||||
"message_id": data["id"],
|
||||
"session_id": data["session_id"],
|
||||
"user_id": user.id,
|
||||
'chat_id': data['chat_id'],
|
||||
'message_id': data['id'],
|
||||
'session_id': data['session_id'],
|
||||
'user_id': user.id,
|
||||
}
|
||||
)
|
||||
|
||||
function_module, _, _ = get_function_module_from_cache(request, action_id)
|
||||
|
||||
if hasattr(function_module, "valves") and hasattr(function_module, "Valves"):
|
||||
if hasattr(function_module, 'valves') and hasattr(function_module, 'Valves'):
|
||||
valves = Functions.get_function_valves_by_id(action_id)
|
||||
function_module.valves = function_module.Valves(**(valves if valves else {}))
|
||||
|
||||
if hasattr(function_module, "action"):
|
||||
if hasattr(function_module, 'action'):
|
||||
try:
|
||||
action = function_module.action
|
||||
|
||||
# Get the signature of the function
|
||||
sig = inspect.signature(action)
|
||||
params = {"body": data}
|
||||
params = {'body': data}
|
||||
|
||||
# Extra parameters to be passed to the function
|
||||
extra_params = {
|
||||
"__model__": model,
|
||||
"__id__": sub_action_id if sub_action_id is not None else action_id,
|
||||
"__event_emitter__": __event_emitter__,
|
||||
"__event_call__": __event_call__,
|
||||
"__request__": request,
|
||||
'__model__': model,
|
||||
'__id__': sub_action_id if sub_action_id is not None else action_id,
|
||||
'__event_emitter__': __event_emitter__,
|
||||
'__event_call__': __event_call__,
|
||||
'__request__': request,
|
||||
}
|
||||
|
||||
# Add extra params in contained in function signature
|
||||
@@ -92,20 +92,18 @@ async def chat_action(request: Request, action_id: str, form_data: dict, user: A
|
||||
if key in sig.parameters:
|
||||
params[key] = value
|
||||
|
||||
if "__user__" in sig.parameters:
|
||||
if '__user__' in sig.parameters:
|
||||
__user__ = user.model_dump() if isinstance(user, UserModel) else {}
|
||||
|
||||
try:
|
||||
if hasattr(function_module, "UserValves"):
|
||||
__user__["valves"] = function_module.UserValves(
|
||||
**Functions.get_user_valves_by_id_and_user_id(
|
||||
action_id, user.id
|
||||
)
|
||||
if hasattr(function_module, 'UserValves'):
|
||||
__user__['valves'] = function_module.UserValves(
|
||||
**Functions.get_user_valves_by_id_and_user_id(action_id, user.id)
|
||||
)
|
||||
except Exception as e:
|
||||
log.exception(f"Failed to get user values: {e}")
|
||||
log.exception(f'Failed to get user values: {e}')
|
||||
|
||||
params = {**params, "__user__": __user__}
|
||||
params = {**params, '__user__': __user__}
|
||||
|
||||
if inspect.iscoroutinefunction(action):
|
||||
data = await action(**params)
|
||||
@@ -117,15 +115,15 @@ async def chat_action(request: Request, action_id: str, form_data: dict, user: A
|
||||
request,
|
||||
action_id,
|
||||
data,
|
||||
"action",
|
||||
'action',
|
||||
)
|
||||
|
||||
if action_embeds:
|
||||
await __event_emitter__(
|
||||
{
|
||||
"type": "embeds",
|
||||
"data": {
|
||||
"embeds": action_embeds,
|
||||
'type': 'embeds',
|
||||
'data': {
|
||||
'embeds': action_embeds,
|
||||
},
|
||||
}
|
||||
)
|
||||
@@ -134,6 +132,6 @@ async def chat_action(request: Request, action_id: str, form_data: dict, user: A
|
||||
data = processed_result
|
||||
|
||||
except Exception as e:
|
||||
raise Exception(f"Error: {e}")
|
||||
raise Exception(f'Error: {e}')
|
||||
|
||||
return data
|
||||
|
||||
Reference in New Issue
Block a user