Spaces:
Paused
Paused
| 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" | |
| ); | |
| } | |
| /** | |
| * Find a random load-balanced endpoint | |
| */ | |
| export function modelEndpoint(model: BackendModel): Endpoint { | |
| 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) { | |
| return endpoint; | |
| } | |
| random -= endpoint.weight; | |
| } | |
| throw new Error("Invalid config, no endpoint found"); | |
| } | |