Spaces:
Sleeping
Sleeping
File size: 3,621 Bytes
658125c 36bc1d5 658125c 45d9469 36bc1d5 45d9469 658125c 45d9469 36bc1d5 45d9469 36bc1d5 45d9469 36bc1d5 45d9469 658125c 45d9469 658125c 36bc1d5 658125c 45d9469 658125c 45d9469 36bc1d5 658125c 36bc1d5 658125c 36bc1d5 45d9469 658125c 36bc1d5 658125c 45d9469 658125c 45d9469 36bc1d5 658125c 36bc1d5 658125c 36bc1d5 45d9469 658125c 89493ee 36bc1d5 89493ee 45d9469 89493ee 45d9469 36bc1d5 45d9469 89493ee 36bc1d5 89493ee 36bc1d5 45d9469 89493ee 658125c 89493ee 658125c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import { useCallback } from "react";
import { devLog, devError } from "../utils/devLogger";
const API_BASE = "https://tcmmichaelb139-evolutiontransformer.hf.space";
export const useAPI = () => {
const checkTaskStatus = useCallback(
async (taskId, successCallback, errorCallback) => {
try {
const response = await fetch(`${API_BASE}/tasks/${taskId}`, {
credentials: "include",
});
if (!response.ok) {
const error = `HTTP ${response.status}: ${response.statusText}`;
devError("Task check failed:", error);
if (errorCallback) errorCallback(error);
return;
}
const data = await response.json();
devLog("Task status:", data.status);
if (data.status === "SUCCESS") {
successCallback(data.result);
} else if (data.status === "PENDING") {
setTimeout(
() => checkTaskStatus(taskId, successCallback, errorCallback),
1000
);
} else if (data.status === "FAILURE") {
const error = data.result || "Task failed";
devError("Task failed:", error);
if (errorCallback) errorCallback(error);
}
} catch (error) {
devError("Task check error:", error);
if (errorCallback) errorCallback(error.message);
}
},
[]
);
const fetchModels = useCallback(async () => {
try {
devLog("Fetching models...");
const response = await fetch(`${API_BASE}/list_models`, {
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
});
if (!response.ok) {
const error = `HTTP ${response.status}: ${response.statusText}`;
devError("Fetch models failed:", error);
throw new Error(error);
}
const data = await response.json();
devLog("Fetch models response:", data);
return data.task_id;
} catch (error) {
devError("Fetch models error:", error);
throw error;
}
}, []);
const mergeModels = useCallback(async (mergeData) => {
try {
devLog("Merging models with data:", mergeData);
const response = await fetch(`${API_BASE}/merge`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(mergeData),
credentials: "include",
});
if (!response.ok) {
const error = `HTTP ${response.status}: ${response.statusText}`;
devError("Merge failed:", error);
throw new Error(error);
}
const data = await response.json();
devLog("Merge response:", data);
return data.task_id;
} catch (error) {
devError("Merge error:", error);
throw error;
}
}, []);
const inference = useCallback(async (inferenceData) => {
try {
devLog("Running inference with data:", inferenceData);
const response = await fetch(`${API_BASE}/generate`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(inferenceData),
credentials: "include",
});
if (!response.ok) {
const error = `HTTP ${response.status}: ${response.statusText}`;
devError("Inference failed:", error);
throw new Error(error);
}
const data = await response.json();
devLog("Inference response:", data);
return data;
} catch (error) {
devError("Inference error:", error);
throw error;
}
}, []);
return {
checkTaskStatus,
fetchModels,
mergeModels,
inference,
};
};
|