react-native-executorch 0.4.4 → 0.4.6
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/android/build.gradle +1 -1
- package/lib/module/controllers/LLMController.js +13 -8
- package/lib/module/controllers/LLMController.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useLLM.js +17 -5
- package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
- package/lib/module/modules/natural_language_processing/LLMModule.js +7 -0
- package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
- package/lib/module/types/llm.js +9 -1
- package/lib/module/types/llm.js.map +1 -1
- package/lib/typescript/controllers/LLMController.d.ts +4 -1
- package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +5 -1
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
- package/lib/typescript/types/llm.d.ts +10 -1
- package/lib/typescript/types/llm.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/controllers/LLMController.ts +28 -18
- package/src/hooks/natural_language_processing/useLLM.ts +19 -6
- package/src/modules/natural_language_processing/LLMModule.ts +11 -0
- package/src/types/llm.ts +10 -9
package/android/build.gradle
CHANGED
|
@@ -103,7 +103,7 @@ dependencies {
|
|
|
103
103
|
implementation "com.facebook.react:react-android:+"
|
|
104
104
|
implementation 'org.opencv:opencv:4.10.0'
|
|
105
105
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
106
|
-
implementation("com.github.software-mansion:react-native-executorch:
|
|
106
|
+
implementation("com.github.software-mansion:react-native-executorch:v0.4.5")
|
|
107
107
|
implementation 'org.opencv:opencv:4.10.0'
|
|
108
108
|
implementation("com.squareup.okhttp3:okhttp:4.9.2")
|
|
109
109
|
}
|
|
@@ -19,12 +19,19 @@ export class LLMController {
|
|
|
19
19
|
// User callbacks
|
|
20
20
|
|
|
21
21
|
constructor({
|
|
22
|
+
tokenCallback,
|
|
22
23
|
responseCallback,
|
|
23
24
|
messageHistoryCallback,
|
|
24
25
|
isReadyCallback,
|
|
25
26
|
isGeneratingCallback,
|
|
26
27
|
onDownloadProgressCallback
|
|
27
28
|
}) {
|
|
29
|
+
if (responseCallback !== undefined) {
|
|
30
|
+
console.warn('Passing response callback is deprecated and will be removed in 0.6.0');
|
|
31
|
+
}
|
|
32
|
+
this.tokenCallback = token => {
|
|
33
|
+
tokenCallback?.(token);
|
|
34
|
+
};
|
|
28
35
|
this.responseCallback = response => {
|
|
29
36
|
this._response = response;
|
|
30
37
|
responseCallback?.(response);
|
|
@@ -74,9 +81,10 @@ export class LLMController {
|
|
|
74
81
|
await this.nativeModule.loadLLM(modelFileUri, tokenizerFileUri);
|
|
75
82
|
this.isReadyCallback(true);
|
|
76
83
|
this.onToken = this.nativeModule.onToken(data => {
|
|
77
|
-
if (!data) {
|
|
84
|
+
if (!data || SPECIAL_TOKENS.EOS_TOKEN in this.tokenizerConfig && data === this.tokenizerConfig.eos_token || SPECIAL_TOKENS.PAD_TOKEN in this.tokenizerConfig && data === this.tokenizerConfig.pad_token) {
|
|
78
85
|
return;
|
|
79
86
|
}
|
|
87
|
+
this.tokenCallback(data);
|
|
80
88
|
this.responseCallback(this._response + data);
|
|
81
89
|
});
|
|
82
90
|
} catch (e) {
|
|
@@ -84,6 +92,9 @@ export class LLMController {
|
|
|
84
92
|
throw new Error(getError(e));
|
|
85
93
|
}
|
|
86
94
|
}
|
|
95
|
+
setTokenCallback(tokenCallback) {
|
|
96
|
+
this.tokenCallback = tokenCallback;
|
|
97
|
+
}
|
|
87
98
|
configure({
|
|
88
99
|
chatConfig,
|
|
89
100
|
toolsConfig
|
|
@@ -146,11 +157,6 @@ export class LLMController {
|
|
|
146
157
|
add_generation_prompt: true
|
|
147
158
|
});
|
|
148
159
|
await this.forward(renderedChat);
|
|
149
|
-
if (!this._response) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
const cleanedResponse = this._response.replaceAll(this.tokenizerConfig.eos_token, '').replaceAll(this.tokenizerConfig.pad_token, '');
|
|
153
|
-
this.responseCallback(cleanedResponse);
|
|
154
160
|
}
|
|
155
161
|
async sendMessage(message) {
|
|
156
162
|
this.messageHistoryCallback([...this._messageHistory, {
|
|
@@ -163,7 +169,6 @@ export class LLMController {
|
|
|
163
169
|
}, ...this._messageHistory.slice(-this.chatConfig.contextWindowLength)];
|
|
164
170
|
await this.generate(messageHistoryWithPrompt, this.toolsConfig?.tools);
|
|
165
171
|
if (!this.toolsConfig || this.toolsConfig.displayToolCalls) {
|
|
166
|
-
this.responseCallback(this._response.replace(this.tokenizerConfig.eos_token, ''));
|
|
167
172
|
this.messageHistoryCallback([...this._messageHistory, {
|
|
168
173
|
content: this._response,
|
|
169
174
|
role: 'assistant'
|
|
@@ -195,7 +200,7 @@ export class LLMController {
|
|
|
195
200
|
throw Error("Tokenizer config doesn't include chat_template");
|
|
196
201
|
}
|
|
197
202
|
const template = new Template(tokenizerConfig.chat_template);
|
|
198
|
-
const specialTokens = Object.fromEntries(SPECIAL_TOKENS.filter(key => key in tokenizerConfig).map(key => [key, tokenizerConfig[key]]));
|
|
203
|
+
const specialTokens = Object.fromEntries(Object.keys(SPECIAL_TOKENS).filter(key => key in tokenizerConfig).map(key => [key, tokenizerConfig[key]]));
|
|
199
204
|
const result = template.render({
|
|
200
205
|
messages,
|
|
201
206
|
tools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ResourceFetcher","ETError","getError","Template","DEFAULT_CHAT_CONFIG","readAsStringAsync","SPECIAL_TOKENS","LLMNativeModule","parseToolCall","LLMController","chatConfig","onToken","_response","_isReady","_isGenerating","_messageHistory","constructor","responseCallback","messageHistoryCallback","isReadyCallback","isGeneratingCallback","onDownloadProgressCallback","response","messageHistory","isReady","isGenerating","nativeModule","load","modelSource","tokenizerSource","tokenizerConfigSource","initialMessageHistory","tokenizerFileUri","fetch","tokenizerConfigFileUri","tokenizerConfig","JSON","parse","modelFileUri","loadLLM","data","e","Error","configure","toolsConfig","delete","ModelGenerating","remove","releaseResources","forward","input","ModuleNotLoaded","interrupt","generate","messages","tools","length","role","
|
|
1
|
+
{"version":3,"names":["ResourceFetcher","ETError","getError","Template","DEFAULT_CHAT_CONFIG","readAsStringAsync","SPECIAL_TOKENS","LLMNativeModule","parseToolCall","LLMController","chatConfig","onToken","_response","_isReady","_isGenerating","_messageHistory","constructor","tokenCallback","responseCallback","messageHistoryCallback","isReadyCallback","isGeneratingCallback","onDownloadProgressCallback","undefined","console","warn","token","response","messageHistory","isReady","isGenerating","nativeModule","load","modelSource","tokenizerSource","tokenizerConfigSource","initialMessageHistory","tokenizerFileUri","fetch","tokenizerConfigFileUri","tokenizerConfig","JSON","parse","modelFileUri","loadLLM","data","EOS_TOKEN","eos_token","PAD_TOKEN","pad_token","e","Error","setTokenCallback","configure","toolsConfig","delete","ModelGenerating","remove","releaseResources","forward","input","ModuleNotLoaded","interrupt","generate","messages","tools","length","role","renderedChat","applyChatTemplate","tools_in_user_message","add_generation_prompt","sendMessage","message","content","messageHistoryWithPrompt","systemPrompt","slice","contextWindowLength","displayToolCalls","toolCalls","toolCall","executeToolCallback","then","toolResponse","deleteMessage","index","newMessageHistory","templateFlags","chat_template","template","specialTokens","Object","fromEntries","keys","filter","key","map","result","render"],"sourceRoot":"../../../src","sources":["controllers/LLMController.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
4
4
|
import { LLMController } from '../../controllers/LLMController';
|
|
5
5
|
|
|
6
6
|
/*
|
|
7
|
-
Hook version of
|
|
7
|
+
Hook version of LLMModule
|
|
8
8
|
*/
|
|
9
9
|
export const useLLM = ({
|
|
10
10
|
modelSource,
|
|
@@ -12,19 +12,24 @@ export const useLLM = ({
|
|
|
12
12
|
tokenizerConfigSource,
|
|
13
13
|
preventLoad = false
|
|
14
14
|
}) => {
|
|
15
|
+
const [token, setToken] = useState('');
|
|
15
16
|
const [response, setResponse] = useState('');
|
|
16
17
|
const [messageHistory, setMessageHistory] = useState([]);
|
|
17
18
|
const [isReady, setIsReady] = useState(false);
|
|
18
19
|
const [isGenerating, setIsGenerating] = useState(false);
|
|
19
20
|
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
20
21
|
const [error, setError] = useState(null);
|
|
22
|
+
const tokenCallback = useCallback(newToken => {
|
|
23
|
+
setToken(newToken);
|
|
24
|
+
setResponse(prevResponse => prevResponse + newToken);
|
|
25
|
+
}, []);
|
|
21
26
|
const model = useMemo(() => new LLMController({
|
|
22
|
-
|
|
27
|
+
tokenCallback: tokenCallback,
|
|
23
28
|
messageHistoryCallback: setMessageHistory,
|
|
24
29
|
isReadyCallback: setIsReady,
|
|
25
30
|
isGeneratingCallback: setIsGenerating,
|
|
26
31
|
onDownloadProgressCallback: setDownloadProgress
|
|
27
|
-
}), []);
|
|
32
|
+
}), [tokenCallback]);
|
|
28
33
|
useEffect(() => {
|
|
29
34
|
setDownloadProgress(0);
|
|
30
35
|
setError(null);
|
|
@@ -54,13 +59,20 @@ export const useLLM = ({
|
|
|
54
59
|
chatConfig,
|
|
55
60
|
toolsConfig
|
|
56
61
|
}), [model]);
|
|
57
|
-
const generate = useCallback((messages, tools) =>
|
|
58
|
-
|
|
62
|
+
const generate = useCallback((messages, tools) => {
|
|
63
|
+
setResponse('');
|
|
64
|
+
return model.generate(messages, tools);
|
|
65
|
+
}, [model]);
|
|
66
|
+
const sendMessage = useCallback(message => {
|
|
67
|
+
setResponse('');
|
|
68
|
+
return model.sendMessage(message);
|
|
69
|
+
}, [model]);
|
|
59
70
|
const deleteMessage = useCallback(index => model.deleteMessage(index), [model]);
|
|
60
71
|
const interrupt = useCallback(() => model.interrupt(), [model]);
|
|
61
72
|
return {
|
|
62
73
|
messageHistory,
|
|
63
74
|
response,
|
|
75
|
+
token,
|
|
64
76
|
isReady,
|
|
65
77
|
isGenerating,
|
|
66
78
|
downloadProgress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useState","LLMController","useLLM","modelSource","tokenizerSource","tokenizerConfigSource","preventLoad","response","setResponse","messageHistory","setMessageHistory","isReady","setIsReady","isGenerating","setIsGenerating","downloadProgress","setDownloadProgress","error","setError","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useState","LLMController","useLLM","modelSource","tokenizerSource","tokenizerConfigSource","preventLoad","token","setToken","response","setResponse","messageHistory","setMessageHistory","isReady","setIsReady","isGenerating","setIsGenerating","downloadProgress","setDownloadProgress","error","setError","tokenCallback","newToken","prevResponse","model","messageHistoryCallback","isReadyCallback","isGeneratingCallback","onDownloadProgressCallback","load","e","delete","configure","chatConfig","toolsConfig","generate","messages","tools","sendMessage","message","deleteMessage","index","interrupt"],"sourceRoot":"../../../../src","sources":["hooks/natural_language_processing/useLLM.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,10 +7,12 @@ export class LLMModule {
|
|
|
7
7
|
tokenizerSource,
|
|
8
8
|
tokenizerConfigSource,
|
|
9
9
|
onDownloadProgressCallback,
|
|
10
|
+
tokenCallback,
|
|
10
11
|
responseCallback,
|
|
11
12
|
messageHistoryCallback
|
|
12
13
|
}) {
|
|
13
14
|
this.controller = new LLMController({
|
|
15
|
+
tokenCallback: tokenCallback,
|
|
14
16
|
responseCallback: responseCallback,
|
|
15
17
|
messageHistoryCallback: messageHistoryCallback,
|
|
16
18
|
onDownloadProgressCallback: onDownloadProgressCallback
|
|
@@ -21,6 +23,11 @@ export class LLMModule {
|
|
|
21
23
|
tokenizerConfigSource
|
|
22
24
|
});
|
|
23
25
|
}
|
|
26
|
+
static setTokenCallback({
|
|
27
|
+
tokenCallback
|
|
28
|
+
}) {
|
|
29
|
+
this.controller.setTokenCallback(tokenCallback);
|
|
30
|
+
}
|
|
24
31
|
static configure({
|
|
25
32
|
chatConfig,
|
|
26
33
|
toolsConfig
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LLMController","LLMModule","load","modelSource","tokenizerSource","tokenizerConfigSource","onDownloadProgressCallback","responseCallback","messageHistoryCallback","controller","configure","chatConfig","toolsConfig","forward","input","response","generate","messages","tools","sendMessage","message","messageHistory","deleteMessage","index","interrupt","delete"],"sourceRoot":"../../../../src","sources":["modules/natural_language_processing/LLMModule.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iCAAiC;AAI/D,OAAO,MAAMC,SAAS,CAAC;EAGrB,aAAaC,IAAIA,CAAC;IAChBC,WAAW;IACXC,eAAe;IACfC,qBAAqB;IACrBC,0BAA0B;IAC1BC,gBAAgB;IAChBC;
|
|
1
|
+
{"version":3,"names":["LLMController","LLMModule","load","modelSource","tokenizerSource","tokenizerConfigSource","onDownloadProgressCallback","tokenCallback","responseCallback","messageHistoryCallback","controller","setTokenCallback","configure","chatConfig","toolsConfig","forward","input","response","generate","messages","tools","sendMessage","message","messageHistory","deleteMessage","index","interrupt","delete"],"sourceRoot":"../../../../src","sources":["modules/natural_language_processing/LLMModule.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iCAAiC;AAI/D,OAAO,MAAMC,SAAS,CAAC;EAGrB,aAAaC,IAAIA,CAAC;IAChBC,WAAW;IACXC,eAAe;IACfC,qBAAqB;IACrBC,0BAA0B;IAC1BC,aAAa;IACbC,gBAAgB;IAChBC;EASF,CAAC,EAAE;IACD,IAAI,CAACC,UAAU,GAAG,IAAIV,aAAa,CAAC;MAClCO,aAAa,EAAEA,aAAa;MAC5BC,gBAAgB,EAAEA,gBAAgB;MAClCC,sBAAsB,EAAEA,sBAAsB;MAC9CH,0BAA0B,EAAEA;IAC9B,CAAC,CAAC;IACF,MAAM,IAAI,CAACI,UAAU,CAACR,IAAI,CAAC;MACzBC,WAAW;MACXC,eAAe;MACfC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOM,gBAAgBA,CAAC;IACtBJ;EAGF,CAAC,EAAE;IACD,IAAI,CAACG,UAAU,CAACC,gBAAgB,CAACJ,aAAa,CAAC;EACjD;EAEA,OAAOK,SAASA,CAAC;IACfC,UAAU;IACVC;EAIF,CAAC,EAAE;IACD,IAAI,CAACJ,UAAU,CAACE,SAAS,CAAC;MAAEC,UAAU;MAAEC;IAAY,CAAC,CAAC;EACxD;EAEA,aAAaC,OAAOA,CAACC,KAAa,EAAmB;IACnD,MAAM,IAAI,CAACN,UAAU,CAACK,OAAO,CAACC,KAAK,CAAC;IACpC,OAAO,IAAI,CAACN,UAAU,CAACO,QAAQ;EACjC;EAEA,aAAaC,QAAQA,CACnBC,QAAmB,EACnBC,KAAiB,EACA;IACjB,MAAM,IAAI,CAACV,UAAU,CAACQ,QAAQ,CAACC,QAAQ,EAAEC,KAAK,CAAC;IAC/C,OAAO,IAAI,CAACV,UAAU,CAACO,QAAQ;EACjC;EAEA,aAAaI,WAAWA,CAACC,OAAe,EAAsB;IAC5D,MAAM,IAAI,CAACZ,UAAU,CAACW,WAAW,CAACC,OAAO,CAAC;IAC1C,OAAO,IAAI,CAACZ,UAAU,CAACa,cAAc;EACvC;EAEA,aAAaC,aAAaA,CAACC,KAAa,EAAsB;IAC5D,MAAM,IAAI,CAACf,UAAU,CAACc,aAAa,CAACC,KAAK,CAAC;IAC1C,OAAO,IAAI,CAACf,UAAU,CAACa,cAAc;EACvC;EAEA,OAAOG,SAASA,CAAA,EAAG;IACjB,IAAI,CAAChB,UAAU,CAACgB,SAAS,CAAC,CAAC;EAC7B;EAEA,OAAOC,MAAMA,CAAA,EAAG;IACd,IAAI,CAACjB,UAAU,CAACiB,MAAM,CAAC,CAAC;EAC1B;AACF","ignoreList":[]}
|
package/lib/module/types/llm.js
CHANGED
|
@@ -3,5 +3,13 @@
|
|
|
3
3
|
// usually tool is represented with dictionary (Object), but fields depend on the model
|
|
4
4
|
// unfortunately there's no one standard so it's hard to type it better
|
|
5
5
|
|
|
6
|
-
export const SPECIAL_TOKENS =
|
|
6
|
+
export const SPECIAL_TOKENS = {
|
|
7
|
+
BOS_TOKEN: 'bos_token',
|
|
8
|
+
EOS_TOKEN: 'eos_token',
|
|
9
|
+
UNK_TOKEN: 'unk_token',
|
|
10
|
+
SEP_TOKEN: 'sep_token',
|
|
11
|
+
PAD_TOKEN: 'pad_token',
|
|
12
|
+
CLS_TOKEN: 'cls_token',
|
|
13
|
+
MASK_TOKEN: 'mask_token'
|
|
14
|
+
};
|
|
7
15
|
//# sourceMappingURL=llm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SPECIAL_TOKENS"],"sourceRoot":"../../../src","sources":["types/llm.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["SPECIAL_TOKENS","BOS_TOKEN","EOS_TOKEN","UNK_TOKEN","SEP_TOKEN","PAD_TOKEN","CLS_TOKEN","MASK_TOKEN"],"sourceRoot":"../../../src","sources":["types/llm.ts"],"mappings":";;AAiCA;AACA;;AAeA,OAAO,MAAMA,cAAc,GAAG;EAC5BC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,UAAU,EAAE;AACd,CAAC","ignoreList":[]}
|
|
@@ -10,12 +10,14 @@ export declare class LLMController {
|
|
|
10
10
|
private _isReady;
|
|
11
11
|
private _isGenerating;
|
|
12
12
|
private _messageHistory;
|
|
13
|
+
private tokenCallback;
|
|
13
14
|
private responseCallback;
|
|
14
15
|
private messageHistoryCallback;
|
|
15
16
|
private isReadyCallback;
|
|
16
17
|
private isGeneratingCallback;
|
|
17
18
|
private onDownloadProgressCallback;
|
|
18
|
-
constructor({ responseCallback, messageHistoryCallback, isReadyCallback, isGeneratingCallback, onDownloadProgressCallback, }: {
|
|
19
|
+
constructor({ tokenCallback, responseCallback, messageHistoryCallback, isReadyCallback, isGeneratingCallback, onDownloadProgressCallback, }: {
|
|
20
|
+
tokenCallback?: (token: string) => void;
|
|
19
21
|
responseCallback?: (response: string) => void;
|
|
20
22
|
messageHistoryCallback?: (messageHistory: Message[]) => void;
|
|
21
23
|
isReadyCallback?: (isReady: boolean) => void;
|
|
@@ -31,6 +33,7 @@ export declare class LLMController {
|
|
|
31
33
|
tokenizerSource: ResourceSource;
|
|
32
34
|
tokenizerConfigSource: ResourceSource;
|
|
33
35
|
}): Promise<void>;
|
|
36
|
+
setTokenCallback(tokenCallback: (token: string) => void): void;
|
|
34
37
|
configure({ chatConfig, toolsConfig, }: {
|
|
35
38
|
chatConfig?: Partial<ChatConfig>;
|
|
36
39
|
toolsConfig?: ToolsConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMController.d.ts","sourceRoot":"","sources":["../../../src/controllers/LLMController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,OAAO,EACL,UAAU,EACV,OAAO,EACP,OAAO,EAEP,WAAW,EACZ,MAAM,cAAc,CAAC;AAItB,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,sBAAsB,CAAsC;IACpE,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,0BAA0B,CAEpB;gBAEF,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,GAC3B,EAAE;QACD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9C,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAC7D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7C,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,0BAA0B,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;KACjE;
|
|
1
|
+
{"version":3,"file":"LLMController.d.ts","sourceRoot":"","sources":["../../../src/controllers/LLMController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,OAAO,EACL,UAAU,EACV,OAAO,EACP,OAAO,EAEP,WAAW,EACZ,MAAM,cAAc,CAAC;AAItB,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,sBAAsB,CAAsC;IACpE,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,0BAA0B,CAEpB;gBAEF,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,GAC3B,EAAE;QACD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9C,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAC7D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7C,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,0BAA0B,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;KACjE;IA+BD,IAAW,QAAQ,WAElB;IACD,IAAW,OAAO,YAEjB;IACD,IAAW,YAAY,YAEtB;IACD,IAAW,cAAc,cAExB;IAEY,IAAI,CAAC,EAChB,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,EAAE;QACD,WAAW,EAAE,cAAc,CAAC;QAC5B,eAAe,EAAE,cAAc,CAAC;QAChC,qBAAqB,EAAE,cAAc,CAAC;KACvC;IA2CM,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAIvD,SAAS,CAAC,EACf,UAAU,EACV,WAAW,GACZ,EAAE;QACD,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B;IAUM,MAAM;IAcA,OAAO,CAAC,KAAK,EAAE,MAAM;IAkB3B,SAAS;IAIH,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE;IAwB/C,WAAW,CAAC,OAAO,EAAE,MAAM;IAuCjC,aAAa,CAAC,KAAK,EAAE,MAAM;IAQlC,OAAO,CAAC,iBAAiB;CAyB1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLLM.d.ts","sourceRoot":"","sources":["../../../../src/hooks/natural_language_processing/useLLM.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAGL,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAMzB,eAAO,MAAM,MAAM,GAAI,uEAKpB;IACD,WAAW,EAAE,cAAc,CAAC;IAC5B,eAAe,EAAE,cAAc,CAAC;IAChC,qBAAqB,EAAE,cAAc,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,KAAG,
|
|
1
|
+
{"version":3,"file":"useLLM.d.ts","sourceRoot":"","sources":["../../../../src/hooks/natural_language_processing/useLLM.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAGL,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAMzB,eAAO,MAAM,MAAM,GAAI,uEAKpB;IACD,WAAW,EAAE,cAAc,CAAC;IAC5B,eAAe,EAAE,cAAc,CAAC;IAChC,qBAAqB,EAAE,cAAc,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,KAAG,OAiGH,CAAC"}
|
|
@@ -3,14 +3,18 @@ import { ResourceSource } from '../../types/common';
|
|
|
3
3
|
import { ChatConfig, LLMTool, Message, ToolsConfig } from '../../types/llm';
|
|
4
4
|
export declare class LLMModule {
|
|
5
5
|
static controller: LLMController;
|
|
6
|
-
static load({ modelSource, tokenizerSource, tokenizerConfigSource, onDownloadProgressCallback, responseCallback, messageHistoryCallback, }: {
|
|
6
|
+
static load({ modelSource, tokenizerSource, tokenizerConfigSource, onDownloadProgressCallback, tokenCallback, responseCallback, messageHistoryCallback, }: {
|
|
7
7
|
modelSource: ResourceSource;
|
|
8
8
|
tokenizerSource: ResourceSource;
|
|
9
9
|
tokenizerConfigSource: ResourceSource;
|
|
10
10
|
onDownloadProgressCallback?: (_downloadProgress: number) => void;
|
|
11
|
+
tokenCallback?: (token: string) => void;
|
|
11
12
|
responseCallback?: (response: string) => void;
|
|
12
13
|
messageHistoryCallback?: (messageHistory: Message[]) => void;
|
|
13
14
|
}): Promise<void>;
|
|
15
|
+
static setTokenCallback({ tokenCallback, }: {
|
|
16
|
+
tokenCallback: (token: string) => void;
|
|
17
|
+
}): void;
|
|
14
18
|
static configure({ chatConfig, toolsConfig, }: {
|
|
15
19
|
chatConfig?: Partial<ChatConfig>;
|
|
16
20
|
toolsConfig?: ToolsConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMModule.d.ts","sourceRoot":"","sources":["../../../../src/modules/natural_language_processing/LLMModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE5E,qBAAa,SAAS;IACpB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC;WAEpB,IAAI,CAAC,EAChB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,GACvB,EAAE;QACD,WAAW,EAAE,cAAc,CAAC;QAC5B,eAAe,EAAE,cAAc,CAAC;QAChC,qBAAqB,EAAE,cAAc,CAAC;QACtC,0BAA0B,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;QACjE,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9C,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KAC9D;
|
|
1
|
+
{"version":3,"file":"LLMModule.d.ts","sourceRoot":"","sources":["../../../../src/modules/natural_language_processing/LLMModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE5E,qBAAa,SAAS;IACpB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC;WAEpB,IAAI,CAAC,EAChB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,EAAE;QACD,WAAW,EAAE,cAAc,CAAC;QAC5B,eAAe,EAAE,cAAc,CAAC;QAChC,qBAAqB,EAAE,cAAc,CAAC;QACtC,0BAA0B,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;QACjE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9C,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KAC9D;IAcD,MAAM,CAAC,gBAAgB,CAAC,EACtB,aAAa,GACd,EAAE;QACD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC;IAID,MAAM,CAAC,SAAS,CAAC,EACf,UAAU,EACV,WAAW,GACZ,EAAE;QACD,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B;WAIY,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAKvC,QAAQ,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC;WAKL,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAKhD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK7D,MAAM,CAAC,SAAS;IAIhB,MAAM,CAAC,MAAM;CAGd"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface LLMType {
|
|
2
2
|
messageHistory: Message[];
|
|
3
3
|
response: string;
|
|
4
|
+
token: string;
|
|
4
5
|
isReady: boolean;
|
|
5
6
|
isGenerating: boolean;
|
|
6
7
|
downloadProgress: number;
|
|
@@ -34,5 +35,13 @@ export interface ToolsConfig {
|
|
|
34
35
|
executeToolCallback: (call: ToolCall) => Promise<string | null>;
|
|
35
36
|
displayToolCalls?: boolean;
|
|
36
37
|
}
|
|
37
|
-
export declare const SPECIAL_TOKENS:
|
|
38
|
+
export declare const SPECIAL_TOKENS: {
|
|
39
|
+
BOS_TOKEN: string;
|
|
40
|
+
EOS_TOKEN: string;
|
|
41
|
+
UNK_TOKEN: string;
|
|
42
|
+
SEP_TOKEN: string;
|
|
43
|
+
PAD_TOKEN: string;
|
|
44
|
+
CLS_TOKEN: string;
|
|
45
|
+
MASK_TOKEN: string;
|
|
46
|
+
};
|
|
38
47
|
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/types/llm.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,EACV,UAAU,EACV,WAAW,GACZ,EAAE;QACD,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,KAAK,IAAI,CAAC;IACX,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,UAAU;IACzB,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,mBAAmB,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/types/llm.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,EACV,UAAU,EACV,WAAW,GACZ,EAAE;QACD,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,KAAK,IAAI,CAAC;IACX,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,UAAU;IACzB,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,mBAAmB,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -27,6 +27,7 @@ export class LLMController {
|
|
|
27
27
|
private _messageHistory: Message[] = [];
|
|
28
28
|
|
|
29
29
|
// User callbacks
|
|
30
|
+
private tokenCallback: (token: string) => void;
|
|
30
31
|
private responseCallback: (response: string) => void;
|
|
31
32
|
private messageHistoryCallback: (messageHistory: Message[]) => void;
|
|
32
33
|
private isReadyCallback: (isReady: boolean) => void;
|
|
@@ -36,18 +37,28 @@ export class LLMController {
|
|
|
36
37
|
| undefined;
|
|
37
38
|
|
|
38
39
|
constructor({
|
|
40
|
+
tokenCallback,
|
|
39
41
|
responseCallback,
|
|
40
42
|
messageHistoryCallback,
|
|
41
43
|
isReadyCallback,
|
|
42
44
|
isGeneratingCallback,
|
|
43
45
|
onDownloadProgressCallback,
|
|
44
46
|
}: {
|
|
47
|
+
tokenCallback?: (token: string) => void;
|
|
45
48
|
responseCallback?: (response: string) => void;
|
|
46
49
|
messageHistoryCallback?: (messageHistory: Message[]) => void;
|
|
47
50
|
isReadyCallback?: (isReady: boolean) => void;
|
|
48
51
|
isGeneratingCallback?: (isGenerating: boolean) => void;
|
|
49
52
|
onDownloadProgressCallback?: (downloadProgress: number) => void;
|
|
50
53
|
}) {
|
|
54
|
+
if (responseCallback !== undefined) {
|
|
55
|
+
console.warn(
|
|
56
|
+
'Passing response callback is deprecated and will be removed in 0.6.0'
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
this.tokenCallback = (token) => {
|
|
60
|
+
tokenCallback?.(token);
|
|
61
|
+
};
|
|
51
62
|
this.responseCallback = (response) => {
|
|
52
63
|
this._response = response;
|
|
53
64
|
responseCallback?.(response);
|
|
@@ -114,10 +125,18 @@ export class LLMController {
|
|
|
114
125
|
|
|
115
126
|
await this.nativeModule.loadLLM(modelFileUri, tokenizerFileUri);
|
|
116
127
|
this.isReadyCallback(true);
|
|
117
|
-
this.onToken = this.nativeModule.onToken((data: string
|
|
118
|
-
if (
|
|
128
|
+
this.onToken = this.nativeModule.onToken((data: string) => {
|
|
129
|
+
if (
|
|
130
|
+
!data ||
|
|
131
|
+
(SPECIAL_TOKENS.EOS_TOKEN in this.tokenizerConfig &&
|
|
132
|
+
data === this.tokenizerConfig.eos_token) ||
|
|
133
|
+
(SPECIAL_TOKENS.PAD_TOKEN in this.tokenizerConfig &&
|
|
134
|
+
data === this.tokenizerConfig.pad_token)
|
|
135
|
+
) {
|
|
119
136
|
return;
|
|
120
137
|
}
|
|
138
|
+
|
|
139
|
+
this.tokenCallback(data);
|
|
121
140
|
this.responseCallback(this._response + data);
|
|
122
141
|
});
|
|
123
142
|
} catch (e) {
|
|
@@ -126,6 +145,10 @@ export class LLMController {
|
|
|
126
145
|
}
|
|
127
146
|
}
|
|
128
147
|
|
|
148
|
+
public setTokenCallback(tokenCallback: (token: string) => void) {
|
|
149
|
+
this.tokenCallback = tokenCallback;
|
|
150
|
+
}
|
|
151
|
+
|
|
129
152
|
public configure({
|
|
130
153
|
chatConfig,
|
|
131
154
|
toolsConfig,
|
|
@@ -200,15 +223,6 @@ export class LLMController {
|
|
|
200
223
|
);
|
|
201
224
|
|
|
202
225
|
await this.forward(renderedChat);
|
|
203
|
-
|
|
204
|
-
if (!this._response) {
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const cleanedResponse = this._response
|
|
209
|
-
.replaceAll(this.tokenizerConfig.eos_token, '')
|
|
210
|
-
.replaceAll(this.tokenizerConfig.pad_token, '');
|
|
211
|
-
this.responseCallback(cleanedResponse);
|
|
212
226
|
}
|
|
213
227
|
|
|
214
228
|
public async sendMessage(message: string) {
|
|
@@ -225,9 +239,6 @@ export class LLMController {
|
|
|
225
239
|
await this.generate(messageHistoryWithPrompt, this.toolsConfig?.tools);
|
|
226
240
|
|
|
227
241
|
if (!this.toolsConfig || this.toolsConfig.displayToolCalls) {
|
|
228
|
-
this.responseCallback(
|
|
229
|
-
this._response.replace(this.tokenizerConfig.eos_token, '')
|
|
230
|
-
);
|
|
231
242
|
this.messageHistoryCallback([
|
|
232
243
|
...this._messageHistory,
|
|
233
244
|
{ content: this._response, role: 'assistant' },
|
|
@@ -273,10 +284,9 @@ export class LLMController {
|
|
|
273
284
|
const template = new Template(tokenizerConfig.chat_template);
|
|
274
285
|
|
|
275
286
|
const specialTokens = Object.fromEntries(
|
|
276
|
-
|
|
277
|
-
key
|
|
278
|
-
tokenizerConfig[key]
|
|
279
|
-
])
|
|
287
|
+
Object.keys(SPECIAL_TOKENS)
|
|
288
|
+
.filter((key) => key in tokenizerConfig)
|
|
289
|
+
.map((key) => [key, tokenizerConfig[key]])
|
|
280
290
|
);
|
|
281
291
|
|
|
282
292
|
const result = template.render({
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { LLMController } from '../../controllers/LLMController';
|
|
11
11
|
|
|
12
12
|
/*
|
|
13
|
-
Hook version of
|
|
13
|
+
Hook version of LLMModule
|
|
14
14
|
*/
|
|
15
15
|
export const useLLM = ({
|
|
16
16
|
modelSource,
|
|
@@ -23,23 +23,29 @@ export const useLLM = ({
|
|
|
23
23
|
tokenizerConfigSource: ResourceSource;
|
|
24
24
|
preventLoad?: boolean;
|
|
25
25
|
}): LLMType => {
|
|
26
|
-
const [
|
|
26
|
+
const [token, setToken] = useState<string>('');
|
|
27
|
+
const [response, setResponse] = useState<string>('');
|
|
27
28
|
const [messageHistory, setMessageHistory] = useState<Message[]>([]);
|
|
28
29
|
const [isReady, setIsReady] = useState(false);
|
|
29
30
|
const [isGenerating, setIsGenerating] = useState(false);
|
|
30
31
|
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
31
32
|
const [error, setError] = useState<any>(null);
|
|
32
33
|
|
|
34
|
+
const tokenCallback = useCallback((newToken: string) => {
|
|
35
|
+
setToken(newToken);
|
|
36
|
+
setResponse((prevResponse) => prevResponse + newToken);
|
|
37
|
+
}, []);
|
|
38
|
+
|
|
33
39
|
const model = useMemo(
|
|
34
40
|
() =>
|
|
35
41
|
new LLMController({
|
|
36
|
-
|
|
42
|
+
tokenCallback: tokenCallback,
|
|
37
43
|
messageHistoryCallback: setMessageHistory,
|
|
38
44
|
isReadyCallback: setIsReady,
|
|
39
45
|
isGeneratingCallback: setIsGenerating,
|
|
40
46
|
onDownloadProgressCallback: setDownloadProgress,
|
|
41
47
|
}),
|
|
42
|
-
[]
|
|
48
|
+
[tokenCallback]
|
|
43
49
|
);
|
|
44
50
|
|
|
45
51
|
useEffect(() => {
|
|
@@ -78,12 +84,18 @@ export const useLLM = ({
|
|
|
78
84
|
);
|
|
79
85
|
|
|
80
86
|
const generate = useCallback(
|
|
81
|
-
(messages: Message[], tools?: LLMTool[]) =>
|
|
87
|
+
(messages: Message[], tools?: LLMTool[]) => {
|
|
88
|
+
setResponse('');
|
|
89
|
+
return model.generate(messages, tools);
|
|
90
|
+
},
|
|
82
91
|
[model]
|
|
83
92
|
);
|
|
84
93
|
|
|
85
94
|
const sendMessage = useCallback(
|
|
86
|
-
(message: string) =>
|
|
95
|
+
(message: string) => {
|
|
96
|
+
setResponse('');
|
|
97
|
+
return model.sendMessage(message);
|
|
98
|
+
},
|
|
87
99
|
[model]
|
|
88
100
|
);
|
|
89
101
|
|
|
@@ -96,6 +108,7 @@ export const useLLM = ({
|
|
|
96
108
|
return {
|
|
97
109
|
messageHistory,
|
|
98
110
|
response,
|
|
111
|
+
token,
|
|
99
112
|
isReady,
|
|
100
113
|
isGenerating,
|
|
101
114
|
downloadProgress,
|
|
@@ -10,6 +10,7 @@ export class LLMModule {
|
|
|
10
10
|
tokenizerSource,
|
|
11
11
|
tokenizerConfigSource,
|
|
12
12
|
onDownloadProgressCallback,
|
|
13
|
+
tokenCallback,
|
|
13
14
|
responseCallback,
|
|
14
15
|
messageHistoryCallback,
|
|
15
16
|
}: {
|
|
@@ -17,10 +18,12 @@ export class LLMModule {
|
|
|
17
18
|
tokenizerSource: ResourceSource;
|
|
18
19
|
tokenizerConfigSource: ResourceSource;
|
|
19
20
|
onDownloadProgressCallback?: (_downloadProgress: number) => void;
|
|
21
|
+
tokenCallback?: (token: string) => void;
|
|
20
22
|
responseCallback?: (response: string) => void;
|
|
21
23
|
messageHistoryCallback?: (messageHistory: Message[]) => void;
|
|
22
24
|
}) {
|
|
23
25
|
this.controller = new LLMController({
|
|
26
|
+
tokenCallback: tokenCallback,
|
|
24
27
|
responseCallback: responseCallback,
|
|
25
28
|
messageHistoryCallback: messageHistoryCallback,
|
|
26
29
|
onDownloadProgressCallback: onDownloadProgressCallback,
|
|
@@ -32,6 +35,14 @@ export class LLMModule {
|
|
|
32
35
|
});
|
|
33
36
|
}
|
|
34
37
|
|
|
38
|
+
static setTokenCallback({
|
|
39
|
+
tokenCallback,
|
|
40
|
+
}: {
|
|
41
|
+
tokenCallback: (token: string) => void;
|
|
42
|
+
}) {
|
|
43
|
+
this.controller.setTokenCallback(tokenCallback);
|
|
44
|
+
}
|
|
45
|
+
|
|
35
46
|
static configure({
|
|
36
47
|
chatConfig,
|
|
37
48
|
toolsConfig,
|
package/src/types/llm.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface LLMType {
|
|
2
2
|
messageHistory: Message[];
|
|
3
3
|
response: string;
|
|
4
|
+
token: string;
|
|
4
5
|
isReady: boolean;
|
|
5
6
|
isGenerating: boolean;
|
|
6
7
|
downloadProgress: number;
|
|
@@ -46,12 +47,12 @@ export interface ToolsConfig {
|
|
|
46
47
|
displayToolCalls?: boolean;
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
export const SPECIAL_TOKENS =
|
|
50
|
-
'bos_token',
|
|
51
|
-
'eos_token',
|
|
52
|
-
'unk_token',
|
|
53
|
-
'sep_token',
|
|
54
|
-
'pad_token',
|
|
55
|
-
'cls_token',
|
|
56
|
-
'mask_token',
|
|
57
|
-
|
|
50
|
+
export const SPECIAL_TOKENS = {
|
|
51
|
+
BOS_TOKEN: 'bos_token',
|
|
52
|
+
EOS_TOKEN: 'eos_token',
|
|
53
|
+
UNK_TOKEN: 'unk_token',
|
|
54
|
+
SEP_TOKEN: 'sep_token',
|
|
55
|
+
PAD_TOKEN: 'pad_token',
|
|
56
|
+
CLS_TOKEN: 'cls_token',
|
|
57
|
+
MASK_TOKEN: 'mask_token',
|
|
58
|
+
};
|