| 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"); |
| } |
|
|