react-native-executorch 0.4.4 → 0.4.5

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.
@@ -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","console","warn","renderedChat","applyChatTemplate","tools_in_user_message","add_generation_prompt","cleanedResponse","replaceAll","eos_token","pad_token","sendMessage","message","content","messageHistoryWithPrompt","systemPrompt","slice","contextWindowLength","displayToolCalls","replace","toolCalls","toolCall","executeToolCallback","then","toolResponse","deleteMessage","index","newMessageHistory","templateFlags","chat_template","template","specialTokens","Object","fromEntries","filter","key","map","result","render"],"sourceRoot":"../../../src","sources":["controllers/LLMController.ts"],"mappings":"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","ignoreList":[]}
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 LLMController
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
- responseCallback: setResponse,
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) => model.generate(messages, tools), [model]);
58
- const sendMessage = useCallback(message => model.sendMessage(message), [model]);
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","model","responseCallback","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":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AASjE,SAASC,aAAa,QAAQ,iCAAiC;;AAE/D;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAC;EACrBC,WAAW;EACXC,eAAe;EACfC,qBAAqB;EACrBC,WAAW,GAAG;AAMhB,CAAC,KAAc;EACb,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGR,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM,CAACS,cAAc,EAAEC,iBAAiB,CAAC,GAAGV,QAAQ,CAAY,EAAE,CAAC;EACnE,MAAM,CAACW,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACa,YAAY,EAAEC,eAAe,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EACvD,MAAM,CAACe,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGhB,QAAQ,CAAC,CAAC,CAAC;EAC3D,MAAM,CAACiB,KAAK,EAAEC,QAAQ,CAAC,GAAGlB,QAAQ,CAAM,IAAI,CAAC;EAE7C,MAAMmB,KAAK,GAAGpB,OAAO,CACnB,MACE,IAAIE,aAAa,CAAC;IAChBmB,gBAAgB,EAAEZ,WAAW;IAC7Ba,sBAAsB,EAAEX,iBAAiB;IACzCY,eAAe,EAAEV,UAAU;IAC3BW,oBAAoB,EAAET,eAAe;IACrCU,0BAA0B,EAAER;EAC9B,CAAC,CAAC,EACJ,EACF,CAAC;EAEDlB,SAAS,CAAC,MAAM;IACdkB,mBAAmB,CAAC,CAAC,CAAC;IACtBE,QAAQ,CAAC,IAAI,CAAC;IAEd,IAAI,CAACZ,WAAW,EAAE;MAChB,IAAI;QACF,CAAC,YAAY;UACX,MAAMa,KAAK,CAACM,IAAI,CAAC;YACftB,WAAW;YACXC,eAAe;YACfC;UACF,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC;MACN,CAAC,CAAC,OAAOqB,CAAC,EAAE;QACVR,QAAQ,CAACQ,CAAC,CAAC;MACb;IACF;IAEA,OAAO,MAAM;MACXP,KAAK,CAACQ,MAAM,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACxB,WAAW,EAAEC,eAAe,EAAEC,qBAAqB,EAAEC,WAAW,EAAEa,KAAK,CAAC,CAAC;;EAE7E;EACA,MAAMS,SAAS,GAAG/B,WAAW,CAC3B,CAAC;IACCgC,UAAU;IACVC;EAIF,CAAC,KAAKX,KAAK,CAACS,SAAS,CAAC;IAAEC,UAAU;IAAEC;EAAY,CAAC,CAAC,EAClD,CAACX,KAAK,CACR,CAAC;EAED,MAAMY,QAAQ,GAAGlC,WAAW,CAC1B,CAACmC,QAAmB,EAAEC,KAAiB,KAAKd,KAAK,CAACY,QAAQ,CAACC,QAAQ,EAAEC,KAAK,CAAC,EAC3E,CAACd,KAAK,CACR,CAAC;EAED,MAAMe,WAAW,GAAGrC,WAAW,CAC5BsC,OAAe,IAAKhB,KAAK,CAACe,WAAW,CAACC,OAAO,CAAC,EAC/C,CAAChB,KAAK,CACR,CAAC;EAED,MAAMiB,aAAa,GAAGvC,WAAW,CAC9BwC,KAAa,IAAKlB,KAAK,CAACiB,aAAa,CAACC,KAAK,CAAC,EAC7C,CAAClB,KAAK,CACR,CAAC;EACD,MAAMmB,SAAS,GAAGzC,WAAW,CAAC,MAAMsB,KAAK,CAACmB,SAAS,CAAC,CAAC,EAAE,CAACnB,KAAK,CAAC,CAAC;EAE/D,OAAO;IACLV,cAAc;IACdF,QAAQ;IACRI,OAAO;IACPE,YAAY;IACZE,gBAAgB;IAChBE,KAAK;IACLW,SAAS,EAAEA,SAAS;IACpBG,QAAQ,EAAEA,QAAQ;IAClBG,WAAW,EAAEA,WAAW;IACxBE,aAAa,EAAEA,aAAa;IAC5BE,SAAS,EAAEA;EACb,CAAC;AACH,CAAC","ignoreList":[]}
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;EAQF,CAAC,EAAE;IACD,IAAI,CAACC,UAAU,GAAG,IAAIT,aAAa,CAAC;MAClCO,gBAAgB,EAAEA,gBAAgB;MAClCC,sBAAsB,EAAEA,sBAAsB;MAC9CF,0BAA0B,EAAEA;IAC9B,CAAC,CAAC;IACF,MAAM,IAAI,CAACG,UAAU,CAACP,IAAI,CAAC;MACzBC,WAAW;MACXC,eAAe;MACfC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOK,SAASA,CAAC;IACfC,UAAU;IACVC;EAIF,CAAC,EAAE;IACD,IAAI,CAACH,UAAU,CAACC,SAAS,CAAC;MAAEC,UAAU;MAAEC;IAAY,CAAC,CAAC;EACxD;EAEA,aAAaC,OAAOA,CAACC,KAAa,EAAmB;IACnD,MAAM,IAAI,CAACL,UAAU,CAACI,OAAO,CAACC,KAAK,CAAC;IACpC,OAAO,IAAI,CAACL,UAAU,CAACM,QAAQ;EACjC;EAEA,aAAaC,QAAQA,CACnBC,QAAmB,EACnBC,KAAiB,EACA;IACjB,MAAM,IAAI,CAACT,UAAU,CAACO,QAAQ,CAACC,QAAQ,EAAEC,KAAK,CAAC;IAC/C,OAAO,IAAI,CAACT,UAAU,CAACM,QAAQ;EACjC;EAEA,aAAaI,WAAWA,CAACC,OAAe,EAAsB;IAC5D,MAAM,IAAI,CAACX,UAAU,CAACU,WAAW,CAACC,OAAO,CAAC;IAC1C,OAAO,IAAI,CAACX,UAAU,CAACY,cAAc;EACvC;EAEA,aAAaC,aAAaA,CAACC,KAAa,EAAsB;IAC5D,MAAM,IAAI,CAACd,UAAU,CAACa,aAAa,CAACC,KAAK,CAAC;IAC1C,OAAO,IAAI,CAACd,UAAU,CAACY,cAAc;EACvC;EAEA,OAAOG,SAASA,CAAA,EAAG;IACjB,IAAI,CAACf,UAAU,CAACe,SAAS,CAAC,CAAC;EAC7B;EAEA,OAAOC,MAAMA,CAAA,EAAG;IACd,IAAI,CAAChB,UAAU,CAACgB,MAAM,CAAC,CAAC;EAC1B;AACF","ignoreList":[]}
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":[]}
@@ -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 = ['bos_token', 'eos_token', 'unk_token', 'sep_token', 'pad_token', 'cls_token', 'mask_token'];
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":";;AAgCA;AACA;;AAeA,OAAO,MAAMA,cAAc,GAAG,CAC5B,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,CACb","ignoreList":[]}
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;IAuBD,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;IAmCM,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;IAiC/C,WAAW,CAAC,OAAO,EAAE,MAAM;IA0CjC,aAAa,CAAC,KAAK,EAAE,MAAM;IAQlC,OAAO,CAAC,iBAAiB;CA0B1B"}
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,OAoFH,CAAC"}
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;IAaD,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
+ {"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: string[];
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,UAQ1B,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-executorch",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "An easy way to run AI models in react native with ExecuTorch",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/commonjs/index.js",
@@ -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 | undefined) => {
118
- if (!data) {
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
- SPECIAL_TOKENS.filter((key) => key in tokenizerConfig).map((key) => [
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 LLMController
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 [response, setResponse] = useState('');
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
- responseCallback: setResponse,
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[]) => model.generate(messages, tools),
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) => model.sendMessage(message),
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
+ };