SDK & paquet npm
L'API complète du paquet brimkern : un widget de chat en un appel, ou des sessions sans interface et de la génération one-shot pour votre propre UI. Tout tourne sur le GPU du visiteur — aucun serveur, aucune clé d'API, rien ne quitte le navigateur. Pour la visite guidée et la démo live, voir la page SDK.
Installation
Depuis npm — types TypeScript inclus :
npm i brimkern
import { embed, createSession, generate, preload, status } from 'brimkern';Ou en balise script, sans étape de build — l’IIFE expose la même API sur une globale :
<script src="https://brimkern.com/sdk.js"></script>
<script>
Brimkern.embed({ title: "Ask us anything" });
</script>embed(config?)
Monte le widget de chat dans la page (il attend le document si l'appel arrive tôt). Le modèle ne se télécharge que lorsqu'un visiteur ouvre réellement le widget : votre vitesse de page reste intacte.
systemstringtitlestringgreetingstringaccentstringmodelstringmaxTokensnumberexamples{ user, assistant }[]knowledge / knowledgeBudgetsee belowworker / workerUrlboolean / stringcreateSession(config?)
Sans interface : un objet conversation pour votre propre UI. Même config que embed() moins les options visuelles, plus temperature.
const session = createSession({ system: "You are a sommelier.", temperature: 0.7 });
const reply = await session.ask("A wine for oysters?", {
onToken: (text) => output.textContent += text, // streaming
signal: controller.signal, // cancellable
});
session.history // the Msg[] so far
session.reset() // same config, blank history
session.destroy()generate(options)
One-shot : un prompt, une réponse, pas d’historique conservé. Prend la config de session plus prompt, onToken et signal.
const answer = await generate({
system: "Answer in one sentence.",
prompt: "Why is the sky blue?",
onToken: (text) => process(text),
});Documents de connaissance
Donnez vos contenus à l'assistant — pages, FAQ, fiches produit. Les documents sont découpés en passages dans le navigateur, et seuls les 1 à 3 passages les plus proches de la question du visiteur sont donnés au modèle. Le tri est local (lexical) : rien n'est envoyé où que ce soit.
knowledge: [
"Plain strings work.",
{ title: "Shipping", text: "Free in France from 60 euros." },
],
knowledgeBudget: 800 // tokens de passages max par questionpreload() & status()
preload() télécharge le moteur et le modèle avant la première question — appelez-le sur un survol, ou sur la page tarifs avant l'ouverture du support. onProgress reçoit la phase et, pendant le téléchargement, les octets : de quoi afficher une vraie barre de progression.
await preload({
onProgress: (status, p) => {
if (p) bar.style.width = (100 * p.loaded / p.total) + "%";
},
});
status() // 'unavailable' (pas de WebGPU) | 'idle' | 'loading' | 'ready' | 'error'status() répond de façon synchrone — utile pour décider d'afficher ou non le widget sur les navigateurs sans WebGPU.
Versions & CDN
Épinglez une version si vous préférez que le widget ne change pas sous vos pieds :
https://brimkern.com/sdk-0.1.0.js au lieu de https://brimkern.com/sdk.js <!-- ou depuis les CDN npm --> https://unpkg.com/brimkern@0.1.0/dist/brimkern.iife.js https://cdn.jsdelivr.net/npm/brimkern@0.1.0/dist/brimkern.iife.js
Serveur, licence, liens
Importer le paquet côté serveur ne fait rien tant qu'un navigateur ne l'exécute pas : Next.js, Remix et Astro passent sans garde-fou. Licence MIT, comme tout le moteur.
Brimkern — moteur WebGPU open, conçu par Romain Khanoyan. IA locale, WebGPU, moteurs on-device.