Skip to content

Commit ccc2639

Browse files
committed
Enhance Private AI Key Creation with Metadata and Naming
- Add name and user_id parameters to LiteLLM key generation - Update PostgresManager to support optional database name - Improve key alias and metadata generation for better tracking - Modify key creation process to include more contextual information
1 parent 05f6893 commit ccc2639

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

app/api/private_ai_keys.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ async def create_private_ai_key(
5454
# Create new postgres database
5555
postgres_manager = PostgresManager(region=region)
5656
key_credentials = await postgres_manager.create_database(
57-
owner=current_user.email
57+
owner=current_user.email,
58+
name=private_ai_key.name,
59+
user_id=current_user.id
5860
)
5961

6062
# Store private AI key info in main application database

app/db/postgres.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,14 @@ def __init__(self, region: DBRegion = None):
1818
else:
1919
raise ValueError("Region is required for PostgresManager")
2020

21-
async def create_database(self, owner: str) -> Dict:
21+
async def create_database(self, owner: str, name: str = None, user_id: int = None) -> Dict:
22+
# Generate unique database name and credentials
23+
db_name = f"db_{uuid.uuid4().hex[:8]}"
24+
db_user = f"user_{uuid.uuid4().hex[:8]}"
25+
db_password = uuid.uuid4().hex
26+
2227
# Generate LiteLLM token
23-
litellm_token = await self.litellm_service.create_key(email=owner)
28+
litellm_token = await self.litellm_service.create_key(email=owner, name=name, user_id=user_id)
2429

2530
# Connect to postgres and create database/user
2631
try:
@@ -38,11 +43,6 @@ async def create_database(self, owner: str) -> Dict:
3843
print(f"Unexpected error connecting to PostgreSQL: {str(e)}")
3944
raise
4045

41-
# Generate unique database name and credentials
42-
db_name = f"db_{uuid.uuid4().hex[:8]}"
43-
db_user = f"user_{uuid.uuid4().hex[:8]}"
44-
db_password = uuid.uuid4().hex
45-
4646
try:
4747
await conn.execute(f'CREATE DATABASE {db_name}')
4848
await conn.execute(f'CREATE USER {db_user} WITH PASSWORD \'{db_password}\'')

app/services/litellm.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def __init__(self, api_url: str = None, api_key: str = None):
99
if not self.master_key:
1010
raise ValueError("LiteLLM API key is required")
1111

12-
async def create_key(self, email: str = None) -> str:
12+
async def create_key(self, email: str = None, name: str = None, user_id: int = None) -> str:
1313
"""Create a new API key for LiteLLM"""
1414
try:
1515
request_data = {
@@ -20,10 +20,22 @@ async def create_key(self, email: str = None) -> str:
2020
"spend": 0,
2121
}
2222

23-
# Add email as key_alias and metadata if provided
23+
# Add email and name to key_alias and metadata if provided
2424
if email:
25-
request_data["key_alias"] = email
26-
request_data["metadata"] = {"service_account_id": email}
25+
key_alias = email
26+
metadata = {"service_account_id": email}
27+
28+
# Add name to key_alias and metadata if provided
29+
if name:
30+
key_alias = f"{email} - {name}"
31+
metadata["amazeeai_private_ai_key_name"] = name
32+
33+
# Add user_id to metadata if provided
34+
if user_id is not None:
35+
metadata["amazeeai_user_id"] = str(user_id)
36+
37+
request_data["key_alias"] = key_alias
38+
request_data["metadata"] = metadata
2739

2840
response = requests.post(
2941
f"{self.api_url}/key/generate",

0 commit comments

Comments
 (0)