edgellms / llama-mt /llama.js
atlury's picture
Upload 21 files
3a76a4e verified
import { action } from "./actions.js";
class LlamaCpp {
// callback have to be defined before load_worker
constructor(url, init_callback, write_result_callback, on_complete_callback) {
this.url = url;
this.init_callback = init_callback;
this.write_result_callback = write_result_callback;
this.on_complete_callback = on_complete_callback;
this.loadWorker();
}
loadWorker() {
this.worker = new Worker(
new URL("./main-worker.js", import.meta.url),
{type: "module"}
);
this.worker.onmessage = (event) => {
switch (event.data.event) {
case action.INITIALIZED:
// Load Model
if (this.init_callback) {
this.init_callback();
}
break;
case action.WRITE_RESULT:
// Capture result
if (this.write_result_callback) {
this.write_result_callback(event.data.text);
}
break;
case action.RUN_COMPLETED:
// Execution Completed
if (this.on_complete_callback) {
this.on_complete_callback();
}
break;
}
};
this.worker.postMessage({
event: action.LOAD,
url: this.url,
});
}
run({
prompt,
chatml=false,
n_predict=-2,
ctx_size=2048,
batch_size=512,
temp=0.8,
n_gpu_layers=0,
top_k=40,
top_p=0.9,
no_display_prompt=true,
}={}) {
this.worker.postMessage({
event: action.RUN_MAIN,
prompt,
chatml,
n_predict,
ctx_size,
batch_size,
temp,
n_gpu_layers,
top_k,
top_p,
no_display_prompt,
});
}
}
export { LlamaCpp };