Skip to content

Instantly share code, notes, and snippets.

@BedirYilmaz
Created February 13, 2025 13:57
Show Gist options
  • Save BedirYilmaz/9442172dfb3e3d9f7028a22e4e2cb478 to your computer and use it in GitHub Desktop.
Save BedirYilmaz/9442172dfb3e3d9f7028a22e4e2cb478 to your computer and use it in GitHub Desktop.
delete models and versions from your replicate account.
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