| import type { Options, RequestArgs } from "@huggingface/inference"; |
|
|
| const HF_INFERENCE_API_BASE_URL = "https://api-inference.huggingface.co/models/"; |
|
|
| |
| |
| |
| export function makeRequestOptions( |
| args: RequestArgs & { |
| data?: Blob | ArrayBuffer; |
| stream?: boolean; |
| }, |
| options?: Options & { |
| /** For internal HF use, which is why it's not exposed in {@link Options} */ |
| includeCredentials?: boolean; |
| } |
| ): { url: string; info: RequestInit } { |
| const { model, accessToken, ...otherArgs } = args; |
| |
| const headers: Record<string, string> = {}; |
| if (accessToken) { |
| headers["Authorization"] = `Bearer ${accessToken}`; |
| } |
| |
| const binary = "data" in args && !!args.data; |
| |
| if (!binary) { |
| headers["Content-Type"] = "application/json"; |
| } else { |
| if (options?.wait_for_model) { |
| headers["X-Wait-For-Model"] = "true"; |
| } |
| if (options?.use_cache === false) { |
| headers["X-Use-Cache"] = "false"; |
| } |
| if (options?.dont_load_model) { |
| headers["X-Load-Model"] = "0"; |
| } |
| } |
| |
| const url = |
| /^http(s?):/.test(model) || model.startsWith("/") |
| ? model |
| : `${HF_INFERENCE_API_BASE_URL}${model}`; |
| const info: RequestInit = { |
| headers, |
| method: "POST", |
| body: binary |
| ? args.data |
| : JSON.stringify({ |
| ...otherArgs, |
| options, |
| }), |
| credentials: options?.includeCredentials ? "include" : "same-origin", |
| }; |
| |
| return { url, info }; |
| } |
| |