mirror of
https://github.com/BerriAI/litellm.git
synced 2026-08-28 05:25:59 +00:00
fix(team_callback_endpoints.py): fix adding callbacks to teams
Resolves error caused by the migration to a standard 'logging' field in metadata
This commit is contained in:
parent
83522016f2
commit
c620d76fe4
1 changed files with 18 additions and 54 deletions
|
|
@ -6,7 +6,7 @@ Use this when each team should control its own callbacks
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import traceback
|
import traceback
|
||||||
from typing import Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Header, HTTPException, Request, status
|
from fastapi import APIRouter, Depends, Header, HTTPException, Request, status
|
||||||
|
|
||||||
|
|
@ -102,66 +102,30 @@ async def add_team_callbacks(
|
||||||
|
|
||||||
# store team callback settings in metadata
|
# store team callback settings in metadata
|
||||||
team_metadata = _existing_team.metadata
|
team_metadata = _existing_team.metadata
|
||||||
team_callback_settings = team_metadata.get("callback_settings", {})
|
team_callback_settings: List[dict] = team_metadata.get(
|
||||||
# expect callback settings to be
|
"logging"
|
||||||
team_callback_settings_obj = TeamCallbackMetadata(**team_callback_settings)
|
) # will be dict of type AddTeamCallback
|
||||||
|
if team_callback_settings is None or not isinstance(
|
||||||
|
team_callback_settings, list
|
||||||
|
):
|
||||||
|
team_callback_settings = []
|
||||||
|
|
||||||
if data.callback_type == "success":
|
## check if it already exists, for the same callback event
|
||||||
if team_callback_settings_obj.success_callback is None:
|
for callback in team_callback_settings:
|
||||||
team_callback_settings_obj.success_callback = []
|
if (
|
||||||
|
callback.get("callback_name") == data.callback_name
|
||||||
if data.callback_name in team_callback_settings_obj.success_callback:
|
and callback.get("callback_type") == data.callback_type
|
||||||
|
):
|
||||||
raise ProxyException(
|
raise ProxyException(
|
||||||
message=f"callback_name = {data.callback_name} already exists in success_callback, for team_id = {team_id}. \n Existing failure_callback = {team_callback_settings_obj.success_callback}",
|
message=f"callback_name = {data.callback_name} already exists in team_callback_settings, for team_id = {team_id} and event = {data.callback_type}",
|
||||||
code=status.HTTP_400_BAD_REQUEST,
|
code=status.HTTP_400_BAD_REQUEST,
|
||||||
type=ProxyErrorTypes.bad_request_error,
|
type=ProxyErrorTypes.bad_request_error,
|
||||||
param="callback_name",
|
param="callback_name",
|
||||||
)
|
)
|
||||||
|
|
||||||
team_callback_settings_obj.success_callback.append(data.callback_name)
|
team_callback_settings.append(data.model_dump())
|
||||||
elif data.callback_type == "failure":
|
|
||||||
if team_callback_settings_obj.failure_callback is None:
|
|
||||||
team_callback_settings_obj.failure_callback = []
|
|
||||||
|
|
||||||
if data.callback_name in team_callback_settings_obj.failure_callback:
|
team_metadata["logging"] = team_callback_settings
|
||||||
raise ProxyException(
|
|
||||||
message=f"callback_name = {data.callback_name} already exists in failure_callback, for team_id = {team_id}. \n Existing failure_callback = {team_callback_settings_obj.failure_callback}",
|
|
||||||
code=status.HTTP_400_BAD_REQUEST,
|
|
||||||
type=ProxyErrorTypes.bad_request_error,
|
|
||||||
param="callback_name",
|
|
||||||
)
|
|
||||||
team_callback_settings_obj.failure_callback.append(data.callback_name)
|
|
||||||
elif data.callback_type == "success_and_failure":
|
|
||||||
if team_callback_settings_obj.success_callback is None:
|
|
||||||
team_callback_settings_obj.success_callback = []
|
|
||||||
if team_callback_settings_obj.failure_callback is None:
|
|
||||||
team_callback_settings_obj.failure_callback = []
|
|
||||||
if data.callback_name in team_callback_settings_obj.success_callback:
|
|
||||||
raise ProxyException(
|
|
||||||
message=f"callback_name = {data.callback_name} already exists in success_callback, for team_id = {team_id}. \n Existing success_callback = {team_callback_settings_obj.success_callback}",
|
|
||||||
code=status.HTTP_400_BAD_REQUEST,
|
|
||||||
type=ProxyErrorTypes.bad_request_error,
|
|
||||||
param="callback_name",
|
|
||||||
)
|
|
||||||
|
|
||||||
if data.callback_name in team_callback_settings_obj.failure_callback:
|
|
||||||
raise ProxyException(
|
|
||||||
message=f"callback_name = {data.callback_name} already exists in failure_callback, for team_id = {team_id}. \n Existing failure_callback = {team_callback_settings_obj.failure_callback}",
|
|
||||||
code=status.HTTP_400_BAD_REQUEST,
|
|
||||||
type=ProxyErrorTypes.bad_request_error,
|
|
||||||
param="callback_name",
|
|
||||||
)
|
|
||||||
|
|
||||||
team_callback_settings_obj.success_callback.append(data.callback_name)
|
|
||||||
team_callback_settings_obj.failure_callback.append(data.callback_name)
|
|
||||||
for var, value in data.callback_vars.items():
|
|
||||||
if team_callback_settings_obj.callback_vars is None:
|
|
||||||
team_callback_settings_obj.callback_vars = {}
|
|
||||||
team_callback_settings_obj.callback_vars[var] = value
|
|
||||||
|
|
||||||
team_callback_settings_obj_dict = team_callback_settings_obj.model_dump()
|
|
||||||
|
|
||||||
team_metadata["callback_settings"] = team_callback_settings_obj_dict
|
|
||||||
team_metadata_json = json.dumps(team_metadata) # update team_metadata
|
team_metadata_json = json.dumps(team_metadata) # update team_metadata
|
||||||
|
|
||||||
new_team_row = await prisma_client.db.litellm_teamtable.update(
|
new_team_row = await prisma_client.db.litellm_teamtable.update(
|
||||||
|
|
@ -178,7 +142,7 @@ async def add_team_callbacks(
|
||||||
except ProxyException as e:
|
except ProxyException as e:
|
||||||
raise e
|
raise e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
verbose_proxy_logger.error(
|
verbose_proxy_logger.exception(
|
||||||
"litellm.proxy.proxy_server.add_team_callbacks(): Exception occured - {}".format(
|
"litellm.proxy.proxy_server.add_team_callbacks(): Exception occured - {}".format(
|
||||||
str(e)
|
str(e)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue