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<Parameters> | |
) { | |
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; | |
} | |