Omar
Init commit
36079e7
/**
* API client for Model Inspector backend
*/
const API = {
baseUrl: '', // Same origin
/**
* Inspect a model by HuggingFace model ID
* @param {string} modelId - HuggingFace model ID
* @returns {Promise<{tree: Object, metadata: Object}>}
*/
async inspectModel(modelId) {
const response = await fetch(`${this.baseUrl}/api/inspect`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ model_id: modelId }),
});
if (!response.ok) {
const error = await response.json();
const detail = error.detail || 'Failed to inspect model';
// Check for common auth/access errors
const isAuthError = detail.includes('401') ||
detail.includes('403') ||
detail.includes('gated') ||
detail.includes('access') ||
detail.includes('token') ||
detail.includes('authorization') ||
detail.includes('authenticate');
if (isAuthError) {
const err = new Error(detail);
err.isAuthError = true;
throw err;
}
throw new Error(detail);
}
return response.json();
},
/**
* Inspect a model by config object
* @param {Object} config - Model config.json object
* @returns {Promise<{tree: Object, metadata: Object}>}
*/
async inspectConfig(config) {
const response = await fetch(`${this.baseUrl}/api/inspect`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ config }),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.detail || 'Failed to inspect config');
}
return response.json();
},
/**
* Upload a config.json file
* @param {File} file - The config.json file
* @returns {Promise<{tree: Object, metadata: Object}>}
*/
async uploadConfig(file) {
const formData = new FormData();
formData.append('file', file);
const response = await fetch(`${this.baseUrl}/api/upload`, {
method: 'POST',
body: formData,
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.detail || 'Failed to upload config');
}
return response.json();
},
/**
* Format parameter count for display
* @param {number} count - Parameter count
* @returns {string} Formatted string
*/
formatParams(count) {
if (count >= 1e12) {
return `${(count / 1e12).toFixed(2)}T`;
} else if (count >= 1e9) {
return `${(count / 1e9).toFixed(2)}B`;
} else if (count >= 1e6) {
return `${(count / 1e6).toFixed(2)}M`;
} else if (count >= 1e3) {
return `${(count / 1e3).toFixed(2)}K`;
}
return count.toLocaleString();
}
};