Created
February 13, 2025 13:57
-
-
Save BedirYilmaz/9442172dfb3e3d9f7028a22e4e2cb478 to your computer and use it in GitHub Desktop.
delete models and versions from your replicate account.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from os import environ | |
import requests | |
from replicate.client import Client | |
# Get token from environment | |
token = environ.get("REPLICATE_TOKEN") | |
if not token: | |
raise ValueError("REPLICATE_TOKEN environment variable is not set") | |
headers = {"Authorization": f"Bearer {token}"} | |
base_url = "https://api.replicate.com/v1" | |
def delete_version(owner, model_name, version_id): | |
"""Delete a specific version of a model""" | |
url = f"{base_url}/models/{owner}/{model_name}/versions/{version_id}" | |
response = requests.delete(url, headers=headers) | |
if response.status_code == 204: | |
print(f"Successfully deleted version {version_id} of {owner}/{model_name}") | |
else: | |
error_msg = "" | |
if response.status_code == 401: | |
error_msg = "Unauthorized - Please check your API token" | |
elif response.status_code == 403: | |
error_msg = "Forbidden - You don't have permission to delete this version" | |
elif response.status_code == 404: | |
error_msg = "Not found - Version doesn't exist" | |
else: | |
try: | |
error_msg = response.json().get('error', 'Unknown error') | |
except: | |
error_msg = f"HTTP {response.status_code}" | |
print(f"Failed to delete version {version_id} of {owner}/{model_name}: {error_msg}") | |
def delete_model(owner, model_name): | |
"""Delete a model""" | |
url = f"{base_url}/models/{owner}/{model_name}" | |
response = requests.delete(url, headers=headers) | |
if response.status_code == 204: | |
print(f"Successfully deleted model {owner}/{model_name}") | |
else: | |
error_msg = "" | |
if response.status_code == 401: | |
error_msg = "Unauthorized - Please check your API token" | |
elif response.status_code == 403: | |
error_msg = "Forbidden - You don't have permission to delete this model" | |
elif response.status_code == 404: | |
error_msg = "Not found - Model doesn't exist" | |
elif response.status_code == 400: | |
error_msg = "Bad request - Model may have existing versions that need to be deleted first" | |
else: | |
try: | |
error_msg = response.json().get('error', 'Unknown error') | |
except: | |
error_msg = f"HTTP {response.status_code}" | |
print(f"Failed to delete model {owner}/{model_name}: {error_msg}") | |
# Read and parse deletion list | |
with open("scripts/generation/deletion_list.txt", "r") as f: | |
lines = f.readlines() | |
# Process models to delete | |
models_to_delete = [] | |
versions_to_delete = [] | |
for line in lines: | |
line = line.strip() | |
if line and not line.startswith("#"): | |
if ":" in line: # This is a version | |
model_path, version_id = line.split(":") | |
versions_to_delete.append((model_path, version_id)) | |
else: # This is a model | |
models_to_delete.append(line) | |
# Delete versions first | |
for model_path, version_id in versions_to_delete: | |
owner, model_name = model_path.split("/", 1) | |
delete_version(owner, model_name, version_id) | |
# Then delete models | |
for model_path in models_to_delete: | |
if "/" in model_path: # Ensure the path is valid | |
owner, model_name = model_path.split("/", 1) | |
delete_model(owner, model_name) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment