Spaces:
Paused
Paused
| import base64 | |
| import re | |
| from typing import List, Literal, Union | |
| from litellm.types.utils import SpecialEnums | |
| def _is_base64_encoded_unified_file_id(b64_uid: str) -> Union[str, Literal[False]]: | |
| # Add padding back if needed | |
| padded = b64_uid + "=" * (-len(b64_uid) % 4) | |
| # Decode from base64 | |
| try: | |
| decoded = base64.urlsafe_b64decode(padded).decode() | |
| if decoded.startswith(SpecialEnums.LITELM_MANAGED_FILE_ID_PREFIX.value): | |
| return decoded | |
| else: | |
| return False | |
| except Exception: | |
| return False | |
| def convert_b64_uid_to_unified_uid(b64_uid: str) -> str: | |
| is_base64_unified_file_id = _is_base64_encoded_unified_file_id(b64_uid) | |
| if is_base64_unified_file_id: | |
| return is_base64_unified_file_id | |
| else: | |
| return b64_uid | |
| def get_models_from_unified_file_id(unified_file_id: str) -> List[str]: | |
| """ | |
| Extract model names from unified file ID. | |
| Example: | |
| unified_file_id = "litellm_proxy:application/octet-stream;unified_id,c4843482-b176-4901-8292-7523fd0f2c6e;target_model_names,gpt-4o-mini,gemini-2.0-flash" | |
| returns: ["gpt-4o-mini", "gemini-2.0-flash"] | |
| """ | |
| try: | |
| match = re.search(r"target_model_names,([^;]+)", unified_file_id) | |
| if match: | |
| # Split on comma and strip whitespace from each model name | |
| return [model.strip() for model in match.group(1).split(",")] | |
| return [] | |
| except Exception: | |
| return [] | |