@blank-utils/llm 0.2.2 → 0.2.3
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.
- package/README.md +355 -87
- package/dist/backends/transformers.d.ts +3 -20
- package/dist/backends/transformers.d.ts.map +1 -1
- package/dist/backends/webllm.d.ts +3 -38
- package/dist/backends/webllm.d.ts.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +782 -64
- package/dist/models.d.ts +74 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/react/chat-input.d.ts +43 -0
- package/dist/react/chat-input.d.ts.map +1 -0
- package/dist/react/components.d.ts +52 -0
- package/dist/react/components.d.ts.map +1 -0
- package/dist/react/index.d.ts +3 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +780 -64
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/models.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported Models Configuration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default model for WebLLM backend
|
|
6
|
+
* Using Phi 3.5 Mini as it's well-tested and reasonably sized
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_WEBLLM_MODEL = "Phi-3.5-mini-instruct-q4f16_1-MLC";
|
|
9
|
+
/**
|
|
10
|
+
* Popular WebLLM model options with correct MLC model IDs
|
|
11
|
+
* These IDs must match exactly what's in web-llm's prebuiltAppConfig
|
|
12
|
+
*
|
|
13
|
+
* @see https://github.com/mlc-ai/web-llm/blob/main/src/config.ts
|
|
14
|
+
*/
|
|
15
|
+
export declare const WEBLLM_MODELS: {
|
|
16
|
+
readonly 'llama-3.2-1b': "Llama-3.2-1B-Instruct-q4f16_1-MLC";
|
|
17
|
+
readonly 'llama-3.2-3b': "Llama-3.2-3B-Instruct-q4f16_1-MLC";
|
|
18
|
+
readonly 'llama-3.1-8b': "Llama-3.1-8B-Instruct-q4f16_1-MLC";
|
|
19
|
+
readonly 'llama-3.1-8b-1k': "Llama-3.1-8B-Instruct-q4f16_1-MLC-1k";
|
|
20
|
+
readonly 'phi-3.5-mini': "Phi-3.5-mini-instruct-q4f16_1-MLC";
|
|
21
|
+
readonly 'phi-3.5-mini-1k': "Phi-3.5-mini-instruct-q4f16_1-MLC-1k";
|
|
22
|
+
readonly 'phi-3.5-vision': "Phi-3.5-vision-instruct-q4f16_1-MLC";
|
|
23
|
+
readonly 'qwen-2.5-0.5b': "Qwen2.5-0.5B-Instruct-q4f16_1-MLC";
|
|
24
|
+
readonly 'qwen-2.5-1.5b': "Qwen2.5-1.5B-Instruct-q4f16_1-MLC";
|
|
25
|
+
readonly 'qwen-2.5-3b': "Qwen2.5-3B-Instruct-q4f16_1-MLC";
|
|
26
|
+
readonly 'qwen-2.5-7b': "Qwen2.5-7B-Instruct-q4f16_1-MLC";
|
|
27
|
+
readonly 'qwen-2.5-coder-0.5b': "Qwen2.5-Coder-0.5B-Instruct-q4f16_1-MLC";
|
|
28
|
+
readonly 'qwen-2.5-coder-1.5b': "Qwen2.5-Coder-1.5B-Instruct-q4f16_1-MLC";
|
|
29
|
+
readonly 'qwen-3-0.6b': "Qwen3-0.6B-q4f16_1-MLC";
|
|
30
|
+
readonly 'qwen-3-1.7b': "Qwen3-1.7B-q4f16_1-MLC";
|
|
31
|
+
readonly 'qwen-3-4b': "Qwen3-4B-q4f16_1-MLC";
|
|
32
|
+
readonly 'qwen-3-8b': "Qwen3-8B-q4f16_1-MLC";
|
|
33
|
+
readonly 'gemma-2-2b': "gemma-2-2b-it-q4f16_1-MLC";
|
|
34
|
+
readonly 'gemma-2-2b-1k': "gemma-2-2b-it-q4f16_1-MLC-1k";
|
|
35
|
+
readonly 'gemma-2-9b': "gemma-2-9b-it-q4f16_1-MLC";
|
|
36
|
+
readonly 'smollm2-135m': "SmolLM2-135M-Instruct-q0f16-MLC";
|
|
37
|
+
readonly 'smollm2-360m': "SmolLM2-360M-Instruct-q4f16_1-MLC";
|
|
38
|
+
readonly 'smollm2-1.7b': "SmolLM2-1.7B-Instruct-q4f16_1-MLC";
|
|
39
|
+
readonly 'mistral-7b': "Mistral-7B-Instruct-v0.3-q4f16_1-MLC";
|
|
40
|
+
readonly 'deepseek-r1-qwen-7b': "DeepSeek-R1-Distill-Qwen-7B-q4f16_1-MLC";
|
|
41
|
+
readonly 'deepseek-r1-llama-8b': "DeepSeek-R1-Distill-Llama-8B-q4f16_1-MLC";
|
|
42
|
+
readonly 'hermes-3-llama-3.2-3b': "Hermes-3-Llama-3.2-3B-q4f16_1-MLC";
|
|
43
|
+
readonly 'hermes-3-llama-3.1-8b': "Hermes-3-Llama-3.1-8B-q4f16_1-MLC";
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Default model for Transformers.js backend
|
|
47
|
+
* Using Qwen2.5 0.5B as it's well-tested with ONNX
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_TRANSFORMERS_MODEL = "onnx-community/Qwen2.5-0.5B-Instruct";
|
|
50
|
+
/**
|
|
51
|
+
* Transformers.js compatible models (must have ONNX weights)
|
|
52
|
+
* These are specifically converted for browser use via transformers.js
|
|
53
|
+
*
|
|
54
|
+
* @see https://huggingface.co/onnx-community for more models
|
|
55
|
+
*/
|
|
56
|
+
export declare const TRANSFORMERS_MODELS: {
|
|
57
|
+
readonly 'qwen-2.5-0.5b': "onnx-community/Qwen2.5-0.5B-Instruct";
|
|
58
|
+
readonly 'qwen-2.5-1.5b': "onnx-community/Qwen2.5-1.5B-Instruct";
|
|
59
|
+
readonly 'qwen-2.5-coder-0.5b': "onnx-community/Qwen2.5-Coder-0.5B-Instruct";
|
|
60
|
+
readonly 'qwen-2.5-coder-1.5b': "onnx-community/Qwen2.5-Coder-1.5B-Instruct";
|
|
61
|
+
readonly 'qwen-3-0.6b': "onnx-community/Qwen3-0.6B-ONNX";
|
|
62
|
+
readonly 'smollm2-135m': "HuggingFaceTB/SmolLM2-135M-Instruct";
|
|
63
|
+
readonly 'smollm2-360m': "HuggingFaceTB/SmolLM2-360M-Instruct";
|
|
64
|
+
readonly 'smollm2-1.7b': "HuggingFaceTB/SmolLM2-1.7B-Instruct";
|
|
65
|
+
readonly 'phi-3-mini': "Xenova/Phi-3-mini-4k-instruct";
|
|
66
|
+
readonly tinyllama: "Xenova/TinyLlama-1.1B-Chat-v1.0";
|
|
67
|
+
};
|
|
68
|
+
export type WebLLMModelID = keyof typeof WEBLLM_MODELS;
|
|
69
|
+
export type TransformersModelID = keyof typeof TRANSFORMERS_MODELS;
|
|
70
|
+
/**
|
|
71
|
+
* Union of all supported model IDs for type safety
|
|
72
|
+
*/
|
|
73
|
+
export type SupportedModel = WebLLMModelID | TransformersModelID | (string & {});
|
|
74
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatInput — Self-contained auto-resizing textarea with send button.
|
|
3
|
+
* Zero external dependencies. All styles embedded via CSS-in-JS.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <ChatInput
|
|
8
|
+
* value={input}
|
|
9
|
+
* onChange={setInput}
|
|
10
|
+
* onSend={handleSend}
|
|
11
|
+
* disabled={isGenerating}
|
|
12
|
+
* placeholder="Type a message..."
|
|
13
|
+
* />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import * as React from 'react';
|
|
17
|
+
export interface ChatInputProps {
|
|
18
|
+
/** Current value of the input */
|
|
19
|
+
value: string;
|
|
20
|
+
/** Called when value changes */
|
|
21
|
+
onChange: (value: string) => void;
|
|
22
|
+
/** Called when user submits (Enter or send button) */
|
|
23
|
+
onSend: () => void;
|
|
24
|
+
/** Called when user clicks stop */
|
|
25
|
+
onStop?: () => void;
|
|
26
|
+
/** Whether the input is disabled (e.g. during generation) */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** Whether currently generating (shows stop button instead of send) */
|
|
29
|
+
isGenerating?: boolean;
|
|
30
|
+
/** Placeholder text */
|
|
31
|
+
placeholder?: string;
|
|
32
|
+
/** Maximum rows before scrolling */
|
|
33
|
+
maxRows?: number;
|
|
34
|
+
/** Optional action elements to render in the toolbar */
|
|
35
|
+
actions?: React.ReactNode;
|
|
36
|
+
/** Theme */
|
|
37
|
+
theme?: 'dark' | 'light';
|
|
38
|
+
/** Additional className for the container */
|
|
39
|
+
className?: string;
|
|
40
|
+
}
|
|
41
|
+
declare function ChatInput({ value, onChange, onSend, onStop, disabled, isGenerating, placeholder, maxRows, actions, theme, className, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
export { ChatInput };
|
|
43
|
+
//# sourceMappingURL=chat-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input.d.ts","sourceRoot":"","sources":["../../src/react/chat-input.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sDAAsD;IACtD,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4HD,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAgB,EAChB,YAAoB,EACpB,WAAiC,EACjC,OAAW,EACX,OAAO,EACP,KAAc,EACd,SAAS,GACV,EAAE,cAAc,2CAuEhB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat — A complete, self-contained chat interface for @blank-utils/llm.
|
|
3
|
+
* Drop inside <LLMProvider> and get a working chat UI in one line.
|
|
4
|
+
*
|
|
5
|
+
* Zero external dependencies. All styles embedded.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { LLMProvider, Chat } from "@blank-utils/llm/react";
|
|
10
|
+
*
|
|
11
|
+
* function App() {
|
|
12
|
+
* return (
|
|
13
|
+
* <LLMProvider model="qwen-2.5-0.5b">
|
|
14
|
+
* <Chat />
|
|
15
|
+
* </LLMProvider>
|
|
16
|
+
* );
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import * as React from 'react';
|
|
21
|
+
import type { UseChatOptions } from './index';
|
|
22
|
+
export interface ChatProps {
|
|
23
|
+
/** System prompt for the conversation */
|
|
24
|
+
systemPrompt?: string;
|
|
25
|
+
/** Placeholder text for the input */
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
/** Theme */
|
|
28
|
+
theme?: 'dark' | 'light';
|
|
29
|
+
/** Additional className for the outermost container */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** Maximum height of the chat container. Default: '600px' */
|
|
32
|
+
maxHeight?: string;
|
|
33
|
+
/** Options passed to useChat internally */
|
|
34
|
+
chatOptions?: Omit<UseChatOptions, 'systemPrompt'>;
|
|
35
|
+
/** Custom actions rendered in the input toolbar */
|
|
36
|
+
inputActions?: React.ReactNode;
|
|
37
|
+
/** Called when a message is sent */
|
|
38
|
+
onSend?: (message: string) => void;
|
|
39
|
+
/** Called when a response is received */
|
|
40
|
+
onResponse?: (response: string) => void;
|
|
41
|
+
/** Called on error */
|
|
42
|
+
onError?: (error: Error) => void;
|
|
43
|
+
/** Whether to show the model info header. Default: true */
|
|
44
|
+
showHeader?: boolean;
|
|
45
|
+
/** Whether to show loading progress. Default: true */
|
|
46
|
+
showProgress?: boolean;
|
|
47
|
+
/** Custom welcome message when chat is empty */
|
|
48
|
+
welcomeMessage?: string;
|
|
49
|
+
}
|
|
50
|
+
declare function Chat({ systemPrompt, placeholder, theme, className, maxHeight, inputActions, onSend: onSendProp, onResponse, onError: onErrorProp, showHeader, showProgress, welcomeMessage, }: ChatProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export { Chat };
|
|
52
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +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;AAG/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAa9C,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAEnD,mDAAmD;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,sBAAsB;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiSD,iBAAS,IAAI,CAAC,EACZ,YAA+E,EAC/E,WAAiC,EACjC,KAAc,EACd,SAAS,EACT,SAAmB,EACnB,YAAY,EACZ,MAAM,EAAE,UAAU,EAClB,UAAU,EACV,OAAO,EAAE,WAAW,EACpB,UAAiB,EACjB,YAAmB,EACnB,cAAmD,GACpD,EAAE,SAAS,2CA0NX;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -305,5 +305,7 @@ export interface LLMReadyProps {
|
|
|
305
305
|
* ```
|
|
306
306
|
*/
|
|
307
307
|
declare function LLMReady({ children, fallback }: LLMReadyProps): import("react/jsx-runtime").JSX.Element;
|
|
308
|
-
|
|
308
|
+
import { Chat, type ChatProps } from './components';
|
|
309
|
+
import { ChatInput, type ChatInputProps } from './chat-input';
|
|
310
|
+
export { LLMProvider, useLLM, useChat, useStream, useCompletion, LLMLoading, LLMReady, Chat, ChatInput, type ChatProps, type ChatInputProps, };
|
|
309
311
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
|