mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 19:24:27 +00:00
fix(proxy_server.py): don't auto-create user when creating key
This commit is contained in:
parent
9b7383ac67
commit
a408c46a67
3 changed files with 41 additions and 34 deletions
|
@ -1,21 +1,22 @@
|
||||||
model_list:
|
model_list:
|
||||||
- model_name: fake_openai
|
- model_name: fake-openai-endpoint
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: openai/my-fake-model
|
model: openai/my-fake-model
|
||||||
api_key: my-fake-key
|
api_key: my-fake-key
|
||||||
api_base: http://0.0.0.0:8080
|
api_base: https://exampleopenaiendpoint-production.up.railway.app/
|
||||||
- model_name: gpt-3.5-turbo
|
- model_name: gpt-3.5-turbo
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: gpt-3.5-turbo-1106
|
model: gpt-3.5-turbo-1106
|
||||||
api_key: os.environ/OPENAI_API_KEY
|
api_key: os.environ/OPENAI_API_KEY
|
||||||
|
|
||||||
litellm_settings:
|
# litellm_settings:
|
||||||
cache: true
|
# cache: true
|
||||||
cache_params:
|
# cache_params:
|
||||||
type: redis
|
# type: redis
|
||||||
callbacks: ["batch_redis_requests"]
|
# callbacks: ["batch_redis_requests"]
|
||||||
# success_callbacks: ["langfuse"]
|
# success_callbacks: ["langfuse"]
|
||||||
|
|
||||||
general_settings:
|
general_settings:
|
||||||
master_key: sk-1234
|
master_key: sk-1234
|
||||||
|
# disable_spend_logs: true
|
||||||
database_url: "postgresql://neondb_owner:hz8tyUlJ5ivV@ep-cool-sunset-a5ywubeh.us-east-2.aws.neon.tech/neondb?sslmode=require"
|
database_url: "postgresql://neondb_owner:hz8tyUlJ5ivV@ep-cool-sunset-a5ywubeh.us-east-2.aws.neon.tech/neondb?sslmode=require"
|
|
@ -305,7 +305,7 @@ class GenerateKeyResponse(GenerateKeyRequest):
|
||||||
key: str
|
key: str
|
||||||
key_name: Optional[str] = None
|
key_name: Optional[str] = None
|
||||||
expires: Optional[datetime]
|
expires: Optional[datetime]
|
||||||
user_id: str
|
user_id: Optional[str] = None
|
||||||
|
|
||||||
@root_validator(pre=True)
|
@root_validator(pre=True)
|
||||||
def set_model_info(cls, values):
|
def set_model_info(cls, values):
|
||||||
|
|
|
@ -2320,8 +2320,6 @@ async def generate_key_helper_fn(
|
||||||
permissions_json = json.dumps(permissions)
|
permissions_json = json.dumps(permissions)
|
||||||
metadata_json = json.dumps(metadata)
|
metadata_json = json.dumps(metadata)
|
||||||
model_max_budget_json = json.dumps(model_max_budget)
|
model_max_budget_json = json.dumps(model_max_budget)
|
||||||
|
|
||||||
user_id = user_id or str(uuid.uuid4())
|
|
||||||
user_role = user_role or "app_user"
|
user_role = user_role or "app_user"
|
||||||
tpm_limit = tpm_limit
|
tpm_limit = tpm_limit
|
||||||
rpm_limit = rpm_limit
|
rpm_limit = rpm_limit
|
||||||
|
@ -2409,6 +2407,9 @@ async def generate_key_helper_fn(
|
||||||
):
|
):
|
||||||
saved_token["expires"] = saved_token["expires"].isoformat()
|
saved_token["expires"] = saved_token["expires"].isoformat()
|
||||||
if prisma_client is not None:
|
if prisma_client is not None:
|
||||||
|
if (
|
||||||
|
table_name is None or table_name == "user"
|
||||||
|
): # do not auto-create users for `/key/generate`
|
||||||
## CREATE USER (If necessary)
|
## CREATE USER (If necessary)
|
||||||
if query_type == "insert_data":
|
if query_type == "insert_data":
|
||||||
user_row = await prisma_client.insert_data(
|
user_row = await prisma_client.insert_data(
|
||||||
|
@ -2435,15 +2436,18 @@ async def generate_key_helper_fn(
|
||||||
verbose_proxy_logger.debug("prisma_client: Creating Key= %s", key_data)
|
verbose_proxy_logger.debug("prisma_client: Creating Key= %s", key_data)
|
||||||
await prisma_client.insert_data(data=key_data, table_name="key")
|
await prisma_client.insert_data(data=key_data, table_name="key")
|
||||||
elif custom_db_client is not None:
|
elif custom_db_client is not None:
|
||||||
|
if table_name is None or table_name == "user":
|
||||||
## CREATE USER (If necessary)
|
## CREATE USER (If necessary)
|
||||||
verbose_proxy_logger.debug("CustomDBClient: Creating User= %s", user_data)
|
verbose_proxy_logger.debug(
|
||||||
|
"CustomDBClient: Creating User= %s", user_data
|
||||||
|
)
|
||||||
user_row = await custom_db_client.insert_data(
|
user_row = await custom_db_client.insert_data(
|
||||||
value=user_data, table_name="user"
|
value=user_data, table_name="user"
|
||||||
)
|
)
|
||||||
if user_row is None:
|
if user_row is None:
|
||||||
# GET USER ROW
|
# GET USER ROW
|
||||||
user_row = await custom_db_client.get_data(
|
user_row = await custom_db_client.get_data(
|
||||||
key=user_id, table_name="user"
|
key=user_id, table_name="user" # type: ignore
|
||||||
)
|
)
|
||||||
|
|
||||||
## use default user model list if no key-specific model list provided
|
## use default user model list if no key-specific model list provided
|
||||||
|
@ -4051,7 +4055,7 @@ async def generate_key_fn(
|
||||||
if "budget_duration" in data_json:
|
if "budget_duration" in data_json:
|
||||||
data_json["key_budget_duration"] = data_json.pop("budget_duration", None)
|
data_json["key_budget_duration"] = data_json.pop("budget_duration", None)
|
||||||
|
|
||||||
response = await generate_key_helper_fn(**data_json)
|
response = await generate_key_helper_fn(**data_json, table_name="key")
|
||||||
return GenerateKeyResponse(**response)
|
return GenerateKeyResponse(**response)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
@ -5042,6 +5046,8 @@ async def new_user(data: NewUserRequest):
|
||||||
param="user_role",
|
param="user_role",
|
||||||
code=status.HTTP_400_BAD_REQUEST,
|
code=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
|
if "user_id" in data_json and data_json["user_id"] is None:
|
||||||
|
data_json["user_id"] = str(uuid.uuid4())
|
||||||
response = await generate_key_helper_fn(**data_json)
|
response = await generate_key_helper_fn(**data_json)
|
||||||
return NewUserResponse(
|
return NewUserResponse(
|
||||||
key=response["token"],
|
key=response["token"],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue