import { defaultModel } from "$lib/server/models"; import { modelEndpoint } from "./modelEndpoint"; import { textGeneration } from "@huggingface/inference"; import { trimSuffix } from "$lib/utils/trimSuffix"; import { trimPrefix } from "$lib/utils/trimPrefix"; import { PUBLIC_SEP_TOKEN } from "$lib/constants/publicSepToken"; interface Parameters { temperature: number; truncate: number; max_new_tokens: number; stop: string[]; } export async function generateFromDefaultEndpoint( prompt: string, parameters?: Partial ) { const newParameters = { ...defaultModel.parameters, ...parameters, return_full_text: false, }; const endpoint = modelEndpoint(defaultModel); let { generated_text } = await textGeneration( { model: endpoint.url, inputs: prompt, parameters: newParameters, }, { fetch: (url, options) => fetch(url, { ...options, headers: { ...options?.headers, Authorization: endpoint.authorization }, }), } ); generated_text = trimSuffix(trimPrefix(generated_text, "<|startoftext|>"), PUBLIC_SEP_TOKEN); return generated_text; }