File size: 1,118 Bytes
10d1ab5
 
447c0ca
6434339
447c0ca
6434339
 
10d1ab5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447c0ca
 
6434339
 
447c0ca
 
 
6434339
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { HF_ACCESS_TOKEN } from "$env/static/private";
import { HfInference } from "@huggingface/inference";
import { defaultModel } from "$lib/server/models";
import type { BackendModel } from "../models";
import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint";

export async function summarizeWeb(content: string, query: string, model: BackendModel) {
	// if HF_ACCESS_TOKEN is set, we use a HF dedicated endpoint for summarization
	try {
		if (HF_ACCESS_TOKEN) {
			const summary = (
				await new HfInference(HF_ACCESS_TOKEN).summarization({
					model: "facebook/bart-large-cnn",
					inputs: content,
					parameters: {
						max_length: 512,
					},
				})
			).summary_text;
			return summary;
		}
	} catch (e) {
		console.log(e);
	}

	// else we use the LLM to generate a summary
	const summaryPrompt = defaultModel.webSearchSummaryPromptRender({
		answer: content
			.split(" ")
			.slice(0, model.parameters?.truncate ?? 0)
			.join(" "),
		query: query,
	});
	const summary = await generateFromDefaultEndpoint(summaryPrompt).then((txt: string) =>
		txt.trim()
	);

	return summary;
}