@blank-utils/llm 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/backends/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EAEpB,OAAO,EACP,MAAM,EACN,YAAY,EACb,MAAM,UAAU,CAAC;AAKlB;;;GAGG;AACH,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAW3E,CAAC;AAkGF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAkB;IAE3C,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,GAAE,0BAA+B;IAKnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAEK,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDvE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBzE,MAAM,CACV,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC;IAgCZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,0BAA0B,GAAG,oBAAoB,CAEpG"}
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/backends/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EAEpB,OAAO,EACP,MAAM,EACN,YAAY,EACb,MAAM,UAAU,CAAC;AAKlB;;;GAGG;AACH,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAc3E,CAAC;AAuBF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAkB;IAE3C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,GAAE,0BAA+B;IAKnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAEK,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDvE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBzE,MAAM,CACV,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC;IA+BZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,0BAA0B,GAAG,oBAAoB,CAEpG"}
package/dist/index.js CHANGED
@@ -56629,6 +56629,9 @@ var TRANSFORMERS_MODELS = {
56629
56629
  "qwen-2.5-1.5b": "onnx-community/Qwen2.5-1.5B-Instruct",
56630
56630
  "qwen-2.5-coder-0.5b": "onnx-community/Qwen2.5-Coder-0.5B-Instruct",
56631
56631
  "qwen-2.5-coder-1.5b": "onnx-community/Qwen2.5-Coder-1.5B-Instruct",
56632
+ "qwen-2.5-vl-3b": "onnx-community/Qwen2.5-VL-3B-Instruct",
56633
+ moondream2: "Xenova/moondream2",
56634
+ "phi-3.5-vision": "onnx-community/Phi-3.5-vision-instruct",
56632
56635
  "qwen-3-0.6b": "onnx-community/Qwen3-0.6B-ONNX",
56633
56636
  "smollm2-135m": "HuggingFaceTB/SmolLM2-135M-Instruct",
56634
56637
  "smollm2-360m": "HuggingFaceTB/SmolLM2-360M-Instruct",
@@ -56725,86 +56728,9 @@ function createWebLLMProvider() {
56725
56728
  return new WebLLMProvider;
56726
56729
  }
56727
56730
  // src/backends/transformers.ts
56728
- function detectChatFormat(modelId) {
56731
+ function isVisionModel(modelId) {
56729
56732
  const lower = modelId.toLowerCase();
56730
- if (lower.includes("qwen") || lower.includes("smollm")) {
56731
- return "chatml";
56732
- }
56733
- if (lower.includes("llama") || lower.includes("tinyllama")) {
56734
- return "llama";
56735
- }
56736
- if (lower.includes("phi")) {
56737
- return "phi";
56738
- }
56739
- return "generic";
56740
- }
56741
- function formatPrompt(messages, modelId) {
56742
- const format = detectChatFormat(modelId);
56743
- switch (format) {
56744
- case "chatml": {
56745
- let prompt = "";
56746
- for (const msg of messages) {
56747
- prompt += `<|im_start|>${msg.role}
56748
- ${msg.content}<|im_end|>
56749
- `;
56750
- }
56751
- prompt += `<|im_start|>assistant
56752
- `;
56753
- return prompt;
56754
- }
56755
- case "llama": {
56756
- let prompt = "";
56757
- for (const msg of messages) {
56758
- if (msg.role === "system") {
56759
- prompt += `<s>[INST] <<SYS>>
56760
- ${msg.content}
56761
- <</SYS>>
56762
-
56763
- `;
56764
- } else if (msg.role === "user") {
56765
- if (!prompt.includes("[INST]")) {
56766
- prompt += `<s>[INST] ${msg.content} [/INST]`;
56767
- } else {
56768
- prompt += `<s>[INST] ${msg.content} [/INST]`;
56769
- }
56770
- } else if (msg.role === "assistant") {
56771
- prompt += ` ${msg.content} </s>`;
56772
- }
56773
- }
56774
- return prompt;
56775
- }
56776
- case "phi": {
56777
- let prompt = "";
56778
- for (const msg of messages) {
56779
- if (msg.role === "system") {
56780
- prompt += `<|system|>
56781
- ${msg.content}<|end|>
56782
- `;
56783
- } else if (msg.role === "user") {
56784
- prompt += `<|user|>
56785
- ${msg.content}<|end|>
56786
- `;
56787
- } else if (msg.role === "assistant") {
56788
- prompt += `<|assistant|>
56789
- ${msg.content}<|end|>
56790
- `;
56791
- }
56792
- }
56793
- prompt += `<|assistant|>
56794
- `;
56795
- return prompt;
56796
- }
56797
- case "generic":
56798
- default: {
56799
- let prompt = "";
56800
- for (const msg of messages) {
56801
- prompt += `${msg.role}: ${msg.content}
56802
- `;
56803
- }
56804
- prompt += "assistant: ";
56805
- return prompt;
56806
- }
56807
- }
56733
+ return lower.includes("vl") || lower.includes("vision") || lower.includes("moondream");
56808
56734
  }
56809
56735
  function mapQuantization(quantization) {
56810
56736
  const map = {
@@ -56849,8 +56775,9 @@ class TransformersProvider {
56849
56775
  } catch {}
56850
56776
  }
56851
56777
  }
56778
+ const task = isVisionModel(resolvedModel) ? "image-text-to-text" : "text-generation";
56852
56779
  const dtype = mapQuantization(this.quantization);
56853
- this.pipeline = await pipeline("text-generation", resolvedModel, {
56780
+ this.pipeline = await pipeline(task, resolvedModel, {
56854
56781
  dtype,
56855
56782
  device: deviceOption,
56856
56783
  progress_callback: (progress) => {
@@ -56869,8 +56796,7 @@ class TransformersProvider {
56869
56796
  if (!this.pipeline || !this.currentModel) {
56870
56797
  throw new Error("Model not loaded. Call load() first.");
56871
56798
  }
56872
- const prompt = formatPrompt(messages, this.currentModel);
56873
- const result = await this.pipeline(prompt, {
56799
+ const result = await this.pipeline(messages, {
56874
56800
  max_new_tokens: options?.maxTokens ?? 512,
56875
56801
  temperature: options?.temperature ?? 0.7,
56876
56802
  top_p: options?.topP ?? 0.95,
@@ -56884,17 +56810,17 @@ class TransformersProvider {
56884
56810
  if (!this.pipeline || !this.currentModel) {
56885
56811
  throw new Error("Model not loaded. Call load() first.");
56886
56812
  }
56887
- const prompt = formatPrompt(messages, this.currentModel);
56888
56813
  const { TextStreamer } = await Promise.resolve().then(() => (init_transformers_web(), exports_transformers_web));
56889
56814
  let fullText = "";
56890
56815
  const streamer = new TextStreamer(this.pipeline.tokenizer, {
56891
56816
  skip_prompt: true,
56817
+ skip_special_tokens: true,
56892
56818
  callback_function: (token) => {
56893
56819
  fullText += token;
56894
56820
  onToken(token, fullText);
56895
56821
  }
56896
56822
  });
56897
- await this.pipeline(prompt, {
56823
+ await this.pipeline(messages, {
56898
56824
  max_new_tokens: options?.maxTokens ?? 512,
56899
56825
  temperature: options?.temperature ?? 0.7,
56900
56826
  top_p: options?.topP ?? 0.95,
@@ -58107,9 +58033,37 @@ function Chat2({
58107
58033
  apiMessages.push({ role: "system", content: systemPrompt });
58108
58034
  }
58109
58035
  currentMessages.forEach((m) => {
58110
- apiMessages.push({ role: m.role, content: m.content });
58036
+ let content = m.content;
58037
+ if (m.role === "user" && m.images && m.images.length > 0) {
58038
+ if (llm.backend === "webllm") {
58039
+ content = [
58040
+ { type: "text", text: m.content },
58041
+ ...m.images.map((img) => ({ type: "image_url", image_url: { url: img.dataUrl } }))
58042
+ ];
58043
+ } else {
58044
+ content = [
58045
+ ...m.images.map((img) => ({ type: "image", image: img.dataUrl })),
58046
+ { type: "text", text: m.content }
58047
+ ];
58048
+ }
58049
+ }
58050
+ apiMessages.push({ role: m.role, content });
58111
58051
  });
58112
- apiMessages.push({ role: "user", content: userContent });
58052
+ let finalUserContent = userContent;
58053
+ if (attachedImages.length > 0) {
58054
+ if (llm.backend === "webllm") {
58055
+ finalUserContent = [
58056
+ { type: "text", text: userContent },
58057
+ ...attachedImages.map((img) => ({ type: "image_url", image_url: { url: img.dataUrl } }))
58058
+ ];
58059
+ } else {
58060
+ finalUserContent = [
58061
+ ...attachedImages.map((img) => ({ type: "image", image: img.dataUrl })),
58062
+ { type: "text", text: userContent }
58063
+ ];
58064
+ }
58065
+ }
58066
+ apiMessages.push({ role: "user", content: finalUserContent });
58113
58067
  try {
58114
58068
  const response = await llm.stream(apiMessages, (_token, fullText) => {
58115
58069
  if (abortRef.current)
@@ -58520,7 +58474,8 @@ function useChat(options = {}) {
58520
58474
  if (!lastUserMessage)
58521
58475
  return "";
58522
58476
  setMessages(previousMessages);
58523
- return send(lastUserMessage.content);
58477
+ const textContent = Array.isArray(lastUserMessage.content) ? lastUserMessage.content.map((c) => c.text || "").join("") : lastUserMessage.content;
58478
+ return send(textContent);
58524
58479
  }, [messages, send]);
58525
58480
  return {
58526
58481
  messages,
package/dist/models.d.ts CHANGED
@@ -58,6 +58,9 @@ export declare const TRANSFORMERS_MODELS: {
58
58
  readonly 'qwen-2.5-1.5b': "onnx-community/Qwen2.5-1.5B-Instruct";
59
59
  readonly 'qwen-2.5-coder-0.5b': "onnx-community/Qwen2.5-Coder-0.5B-Instruct";
60
60
  readonly 'qwen-2.5-coder-1.5b': "onnx-community/Qwen2.5-Coder-1.5B-Instruct";
61
+ readonly 'qwen-2.5-vl-3b': "onnx-community/Qwen2.5-VL-3B-Instruct";
62
+ readonly moondream2: "Xenova/moondream2";
63
+ readonly 'phi-3.5-vision': "onnx-community/Phi-3.5-vision-instruct";
61
64
  readonly 'qwen-3-0.6b': "onnx-community/Qwen3-0.6B-ONNX";
62
65
  readonly 'smollm2-135m': "HuggingFaceTB/SmolLM2-135M-Instruct";
63
66
  readonly 'smollm2-360m': "HuggingFaceTB/SmolLM2-360M-Instruct";
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDhB,CAAC;AAGX;;;GAGG;AACH,eAAO,MAAM,0BAA0B,yCAAyC,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAoBtB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDhB,CAAC;AAGX;;;GAGG;AACH,eAAO,MAAM,0BAA0B,yCAAyC,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CA0BtB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAU,KAAK,cAAc,EAAsC,MAAM,SAAS,CAAC;AAE1F,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAepF,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACnD,mDAAmD;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,sBAAsB;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,qCAAqC;IACrC,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAC;IACpD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsbD,iBAAS,IAAI,CAAC,EACZ,YAAoC,EACpC,WAAiC,EACjC,KAAc,EACd,SAAS,EACT,SAAmB,EACnB,YAAY,EACZ,MAAM,EAAE,UAAU,EAClB,UAAU,EACV,OAAO,EAAE,WAAW,EACpB,UAAiB,EACjB,YAAmB,EACnB,cAAkC,EAClC,aAAa,GACd,EAAE,SAAS,2CAqPX;AAMD,iBAAS,OAAO,CAAC,EACf,YAA8B,EAC9B,cAAuB,EACvB,QAAe,EACf,aAAa,EACb,GAAG,SAAS,EACb,EAAE,YAAY,2CAqBd;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAU,KAAK,cAAc,EAAsC,MAAM,SAAS,CAAC;AAE1F,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAepF,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACnD,mDAAmD;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,sBAAsB;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,qCAAqC;IACrC,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAC;IACpD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsbD,iBAAS,IAAI,CAAC,EACZ,YAAoC,EACpC,WAAiC,EACjC,KAAc,EACd,SAAS,EACT,SAAmB,EACnB,YAAY,EACZ,MAAM,EAAE,UAAU,EAClB,UAAU,EACV,OAAO,EAAE,WAAW,EACpB,UAAiB,EACjB,YAAmB,EACnB,cAAkC,EAClC,aAAa,GACd,EAAE,SAAS,2CAmRX;AAMD,iBAAS,OAAO,CAAC,EACf,YAA8B,EAC9B,cAAuB,EACvB,QAAe,EACf,aAAa,EACb,GAAG,SAAS,EACb,EAAE,YAAY,2CAqBd;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
@@ -56632,6 +56632,9 @@ var TRANSFORMERS_MODELS = {
56632
56632
  "qwen-2.5-1.5b": "onnx-community/Qwen2.5-1.5B-Instruct",
56633
56633
  "qwen-2.5-coder-0.5b": "onnx-community/Qwen2.5-Coder-0.5B-Instruct",
56634
56634
  "qwen-2.5-coder-1.5b": "onnx-community/Qwen2.5-Coder-1.5B-Instruct",
56635
+ "qwen-2.5-vl-3b": "onnx-community/Qwen2.5-VL-3B-Instruct",
56636
+ moondream2: "Xenova/moondream2",
56637
+ "phi-3.5-vision": "onnx-community/Phi-3.5-vision-instruct",
56635
56638
  "qwen-3-0.6b": "onnx-community/Qwen3-0.6B-ONNX",
56636
56639
  "smollm2-135m": "HuggingFaceTB/SmolLM2-135M-Instruct",
56637
56640
  "smollm2-360m": "HuggingFaceTB/SmolLM2-360M-Instruct",
@@ -56726,86 +56729,9 @@ class WebLLMProvider {
56726
56729
  }
56727
56730
 
56728
56731
  // src/backends/transformers.ts
56729
- function detectChatFormat(modelId) {
56732
+ function isVisionModel(modelId) {
56730
56733
  const lower = modelId.toLowerCase();
56731
- if (lower.includes("qwen") || lower.includes("smollm")) {
56732
- return "chatml";
56733
- }
56734
- if (lower.includes("llama") || lower.includes("tinyllama")) {
56735
- return "llama";
56736
- }
56737
- if (lower.includes("phi")) {
56738
- return "phi";
56739
- }
56740
- return "generic";
56741
- }
56742
- function formatPrompt(messages, modelId) {
56743
- const format = detectChatFormat(modelId);
56744
- switch (format) {
56745
- case "chatml": {
56746
- let prompt = "";
56747
- for (const msg of messages) {
56748
- prompt += `<|im_start|>${msg.role}
56749
- ${msg.content}<|im_end|>
56750
- `;
56751
- }
56752
- prompt += `<|im_start|>assistant
56753
- `;
56754
- return prompt;
56755
- }
56756
- case "llama": {
56757
- let prompt = "";
56758
- for (const msg of messages) {
56759
- if (msg.role === "system") {
56760
- prompt += `<s>[INST] <<SYS>>
56761
- ${msg.content}
56762
- <</SYS>>
56763
-
56764
- `;
56765
- } else if (msg.role === "user") {
56766
- if (!prompt.includes("[INST]")) {
56767
- prompt += `<s>[INST] ${msg.content} [/INST]`;
56768
- } else {
56769
- prompt += `<s>[INST] ${msg.content} [/INST]`;
56770
- }
56771
- } else if (msg.role === "assistant") {
56772
- prompt += ` ${msg.content} </s>`;
56773
- }
56774
- }
56775
- return prompt;
56776
- }
56777
- case "phi": {
56778
- let prompt = "";
56779
- for (const msg of messages) {
56780
- if (msg.role === "system") {
56781
- prompt += `<|system|>
56782
- ${msg.content}<|end|>
56783
- `;
56784
- } else if (msg.role === "user") {
56785
- prompt += `<|user|>
56786
- ${msg.content}<|end|>
56787
- `;
56788
- } else if (msg.role === "assistant") {
56789
- prompt += `<|assistant|>
56790
- ${msg.content}<|end|>
56791
- `;
56792
- }
56793
- }
56794
- prompt += `<|assistant|>
56795
- `;
56796
- return prompt;
56797
- }
56798
- case "generic":
56799
- default: {
56800
- let prompt = "";
56801
- for (const msg of messages) {
56802
- prompt += `${msg.role}: ${msg.content}
56803
- `;
56804
- }
56805
- prompt += "assistant: ";
56806
- return prompt;
56807
- }
56808
- }
56734
+ return lower.includes("vl") || lower.includes("vision") || lower.includes("moondream");
56809
56735
  }
56810
56736
  function mapQuantization(quantization) {
56811
56737
  const map = {
@@ -56850,8 +56776,9 @@ class TransformersProvider {
56850
56776
  } catch {}
56851
56777
  }
56852
56778
  }
56779
+ const task = isVisionModel(resolvedModel) ? "image-text-to-text" : "text-generation";
56853
56780
  const dtype = mapQuantization(this.quantization);
56854
- this.pipeline = await pipeline("text-generation", resolvedModel, {
56781
+ this.pipeline = await pipeline(task, resolvedModel, {
56855
56782
  dtype,
56856
56783
  device: deviceOption,
56857
56784
  progress_callback: (progress) => {
@@ -56870,8 +56797,7 @@ class TransformersProvider {
56870
56797
  if (!this.pipeline || !this.currentModel) {
56871
56798
  throw new Error("Model not loaded. Call load() first.");
56872
56799
  }
56873
- const prompt = formatPrompt(messages, this.currentModel);
56874
- const result = await this.pipeline(prompt, {
56800
+ const result = await this.pipeline(messages, {
56875
56801
  max_new_tokens: options?.maxTokens ?? 512,
56876
56802
  temperature: options?.temperature ?? 0.7,
56877
56803
  top_p: options?.topP ?? 0.95,
@@ -56885,17 +56811,17 @@ class TransformersProvider {
56885
56811
  if (!this.pipeline || !this.currentModel) {
56886
56812
  throw new Error("Model not loaded. Call load() first.");
56887
56813
  }
56888
- const prompt = formatPrompt(messages, this.currentModel);
56889
56814
  const { TextStreamer } = await Promise.resolve().then(() => (init_transformers_web(), exports_transformers_web));
56890
56815
  let fullText = "";
56891
56816
  const streamer = new TextStreamer(this.pipeline.tokenizer, {
56892
56817
  skip_prompt: true,
56818
+ skip_special_tokens: true,
56893
56819
  callback_function: (token) => {
56894
56820
  fullText += token;
56895
56821
  onToken(token, fullText);
56896
56822
  }
56897
56823
  });
56898
- await this.pipeline(prompt, {
56824
+ await this.pipeline(messages, {
56899
56825
  max_new_tokens: options?.maxTokens ?? 512,
56900
56826
  temperature: options?.temperature ?? 0.7,
56901
56827
  top_p: options?.topP ?? 0.95,
@@ -58035,9 +57961,37 @@ function Chat2({
58035
57961
  apiMessages.push({ role: "system", content: systemPrompt });
58036
57962
  }
58037
57963
  currentMessages.forEach((m) => {
58038
- apiMessages.push({ role: m.role, content: m.content });
57964
+ let content = m.content;
57965
+ if (m.role === "user" && m.images && m.images.length > 0) {
57966
+ if (llm.backend === "webllm") {
57967
+ content = [
57968
+ { type: "text", text: m.content },
57969
+ ...m.images.map((img) => ({ type: "image_url", image_url: { url: img.dataUrl } }))
57970
+ ];
57971
+ } else {
57972
+ content = [
57973
+ ...m.images.map((img) => ({ type: "image", image: img.dataUrl })),
57974
+ { type: "text", text: m.content }
57975
+ ];
57976
+ }
57977
+ }
57978
+ apiMessages.push({ role: m.role, content });
58039
57979
  });
58040
- apiMessages.push({ role: "user", content: userContent });
57980
+ let finalUserContent = userContent;
57981
+ if (attachedImages.length > 0) {
57982
+ if (llm.backend === "webllm") {
57983
+ finalUserContent = [
57984
+ { type: "text", text: userContent },
57985
+ ...attachedImages.map((img) => ({ type: "image_url", image_url: { url: img.dataUrl } }))
57986
+ ];
57987
+ } else {
57988
+ finalUserContent = [
57989
+ ...attachedImages.map((img) => ({ type: "image", image: img.dataUrl })),
57990
+ { type: "text", text: userContent }
57991
+ ];
57992
+ }
57993
+ }
57994
+ apiMessages.push({ role: "user", content: finalUserContent });
58041
57995
  try {
58042
57996
  const response = await llm.stream(apiMessages, (_token, fullText) => {
58043
57997
  if (abortRef.current)
@@ -58470,7 +58424,8 @@ function useChat(options = {}) {
58470
58424
  if (!lastUserMessage)
58471
58425
  return "";
58472
58426
  setMessages(previousMessages);
58473
- return send(lastUserMessage.content);
58427
+ const textContent = Array.isArray(lastUserMessage.content) ? lastUserMessage.content.map((c) => c.text || "").join("") : lastUserMessage.content;
58428
+ return send(textContent);
58474
58429
  }, [messages, send]);
58475
58430
  return {
58476
58431
  messages,
package/dist/types.d.ts CHANGED
@@ -59,7 +59,7 @@ export type MessageRole = 'system' | 'user' | 'assistant';
59
59
  */
60
60
  export interface ChatMessage {
61
61
  role: MessageRole;
62
- content: string;
62
+ content: string | any[];
63
63
  }
64
64
  /**
65
65
  * Callback for streaming token output
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blank-utils/llm",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Run LLMs directly in your browser with WebGPU acceleration. Supports React hooks and eager background loading.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,8 +22,12 @@
22
22
  },
23
23
  "typesVersions": {
24
24
  "*": {
25
- ".": ["./dist/index.d.ts"],
26
- "react": ["./dist/react/index.d.ts"]
25
+ ".": [
26
+ "./dist/index.d.ts"
27
+ ],
28
+ "react": [
29
+ "./dist/react/index.d.ts"
30
+ ]
27
31
  }
28
32
  },
29
33
  "files": [