@@ -33,6 +33,25 @@ def __init__(self, route: str, model_name: str):
33
33
super ().__init__ (status_code = status .HTTP_400_BAD_REQUEST , detail = detail )
34
34
35
35
36
+ def get_team_id_from_data (data : dict ) -> Optional [str ]:
37
+ """
38
+ Get the team id from the data's metadata or litellm_metadata params.
39
+ """
40
+ if (
41
+ "metadata" in data
42
+ and data ["metadata" ] is not None
43
+ and "user_api_key_team_id" in data ["metadata" ]
44
+ ):
45
+ return data ["metadata" ].get ("user_api_key_team_id" )
46
+ elif (
47
+ "litellm_metadata" in data
48
+ and data ["litellm_metadata" ] is not None
49
+ and "user_api_key_team_id" in data ["litellm_metadata" ]
50
+ ):
51
+ return data ["litellm_metadata" ].get ("user_api_key_team_id" )
52
+ return None
53
+
54
+
36
55
async def route_request (
37
56
data : dict ,
38
57
llm_router : Optional [LitellmRouter ],
@@ -55,6 +74,7 @@ async def route_request(
55
74
"""
56
75
Common helper to route the request
57
76
"""
77
+ team_id = get_team_id_from_data (data )
58
78
router_model_names = llm_router .model_names if llm_router is not None else []
59
79
if "api_key" in data or "api_base" in data :
60
80
return getattr (llm_router , f"{ route_type } " )(** data )
@@ -78,7 +98,16 @@ async def route_request(
78
98
models = [model .strip () for model in data .pop ("model" ).split ("," )]
79
99
return llm_router .abatch_completion (models = models , ** data )
80
100
elif llm_router is not None :
81
- if (
101
+ team_model_name = (
102
+ llm_router .map_team_model (data ["model" ], team_id )
103
+ if team_id is not None
104
+ else None
105
+ )
106
+ if team_model_name is not None :
107
+ data ["model" ] = team_model_name
108
+ return getattr (llm_router , f"{ route_type } " )(** data )
109
+
110
+ elif (
82
111
data ["model" ] in router_model_names
83
112
or data ["model" ] in llm_router .get_model_ids ()
84
113
):
0 commit comments