|
import { |
|
HF_ACCESS_TOKEN, |
|
HF_API_ROOT, |
|
USE_CLIENT_CERTIFICATE, |
|
CERT_PATH, |
|
KEY_PATH, |
|
CA_PATH, |
|
CLIENT_KEY_PASSWORD, |
|
REJECT_UNAUTHORIZED, |
|
} from "$env/static/private"; |
|
import { sum } from "$lib/utils/sum"; |
|
import type { BackendModel, Endpoint } from "./models"; |
|
|
|
import { loadClientCertificates } from "$lib/utils/loadClientCerts"; |
|
|
|
if (USE_CLIENT_CERTIFICATE === "true") { |
|
loadClientCertificates( |
|
CERT_PATH, |
|
KEY_PATH, |
|
CA_PATH, |
|
CLIENT_KEY_PASSWORD, |
|
REJECT_UNAUTHORIZED === "true" |
|
); |
|
} |
|
|
|
|
|
|
|
|
|
export function modelEndpoint(model: BackendModel): Endpoint { |
|
if (model.is_local ?? false) { |
|
return { |
|
host: "local", |
|
model: model.name, |
|
weight: 1, |
|
url: `${HF_API_ROOT}/${model.name}`, |
|
authorization: `Bearer ${HF_ACCESS_TOKEN}`, |
|
}; |
|
} else if (!model.endpoints) { |
|
return { |
|
host: "tgi", |
|
url: `${HF_API_ROOT}/${model.name}`, |
|
authorization: `Bearer ${HF_ACCESS_TOKEN}`, |
|
weight: 1, |
|
}; |
|
} |
|
const endpoints = model.endpoints; |
|
const totalWeight = sum(endpoints.map((e) => e.weight)); |
|
|
|
let random = Math.random() * totalWeight; |
|
for (const endpoint of endpoints) { |
|
if (random < endpoint.weight) { |
|
console.log(endpoint); |
|
return endpoint; |
|
} |
|
random -= endpoint.weight; |
|
} |
|
|
|
throw new Error("Invalid config, no endpoint found"); |
|
} |
|
|