File size: 853 Bytes
a7634ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import {
  Model,
  Quantization,
  default as initialize,
} from "@ratchet-ml/ratchet-web";
import ratchetWasmUrl from "@ratchet-ml/ratchet-web/ratchet-web_bg.wasm?url";

let model: Model | undefined;

export async function initializeRatchet(

  handleLoadingProgress: (loadingProgressPercentage: number) => void,

) {
  await initialize(ratchetWasmUrl);

  model = await Model.load(
    { Phi: "phi3" },
    Quantization.Q8_0,
    handleLoadingProgress,
  );
}

export async function runCompletion(

  prompt: string,

  callback: (completionChunk: string) => void,

) {
  if (!model) throw new Error("Ratchet is not initialized.");

  await model.run({ prompt, callback });
}

export async function exitRatchet() {
  if (!model) throw new Error("Ratchet is not initialized.");

  model.free();

  model = undefined;
}