rougail-ai/webllm/index.js
2026-09-14 21:22:34 +02:00

55 lines
1.7 KiB
JavaScript

// import { CreateMLCEngine } from "@mlc-ai/web-llm";
import { CreateMLCEngine } from "./node_modules/@mlc-ai/web-llm/lib/index.js";
// Callback function to update model loading progress
const initProgressCallback = (initProgress) => {
console.log(initProgress);
};
const selectedModel = "Llama-3.1-8B-Instruct-q4f32_1-MLC";
const engine = await CreateMLCEngine(
selectedModel,
{ initProgressCallback: initProgressCallback }, // engineConfig
);
// chat
const messages = [
{ role: "system", content: "You are a helpful AI assistant." },
{ role: "user", content: "Hello!" },
];
// 1. Définir la persona (comme votre instruction SYSTEM dans Ollama)
//const systemPrompt = "Tu es un assistant culinaire expert, spécialisé dans la cuisine française. Tu réponds toujours avec enthousiasme et proposes des alternatives aux ingrédients difficiles à trouver. Tu ne parles jamais de sujets hors de la cuisine.";
//const messages = [
// // 2. Le message système définit le comportement pour toute la conversation
// { role: "system", content: systemPrompt },
// { role: "user", content: "Comment faire une bonne quiche lorraine ?" }
//];
//import { loadPersona } from './personaLoader.js';
// ---
// Chunks is an AsyncGenerator object
const chunks = await engine.chat.completions.create({
messages,
temperature: 0
// stream: true, // <-- Enable streaming
// stream_options: { include_usage: true },
});
let reply = "";
for await (const chunk of chunks) {
reply += chunk.choices[0]?.delta.content || "";
console.log(reply);
if (chunk.usage) {
console.log(chunk.usage); // only last chunk has usage
}
}
const fullReply = await engine.getMessage();
console.log(fullReply);