Project Files
src / llm.ts
export async function completeText(
model: any,
prompt: string,
maxTokens = 2400,
temperature = 0.2
) {
const prediction = model.complete(prompt, {
maxTokens,
temperature,
});
let output = "";
for await (const chunk of prediction) {
output += chunk.content ?? "";
}
return output;
}
export function extractJson<T = any>(raw: string): T {
const firstObj = raw.indexOf("{");
const lastObj = raw.lastIndexOf("}");
const firstArr = raw.indexOf("[");
const lastArr = raw.lastIndexOf("]");
let jsonText = raw.trim();
if (firstObj !== -1 && lastObj !== -1 && lastObj > firstObj) {
jsonText = raw.slice(firstObj, lastObj + 1);
} else if (firstArr !== -1 && lastArr !== -1 && lastArr > firstArr) {
jsonText = raw.slice(firstArr, lastArr + 1);
}
return JSON.parse(jsonText);
}
export function slugify(input: string) {
const out = input
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+|-+$/g, "")
.slice(0, 64);
return out || "plugin";
}