node-llama-cpp 3.0.0-beta.1 → 3.0.0-beta.2

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.
Files changed (149) hide show
  1. package/README.md +2 -0
  2. package/dist/ChatWrapper.d.ts +49 -0
  3. package/dist/ChatWrapper.js +120 -0
  4. package/dist/ChatWrapper.js.map +1 -0
  5. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
  6. package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
  7. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
  8. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +13 -0
  9. package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
  10. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
  11. package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
  12. package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
  13. package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
  14. package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
  15. package/dist/chatWrappers/FalconChatWrapper.js +104 -0
  16. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
  17. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
  18. package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
  19. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
  20. package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
  21. package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
  22. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
  23. package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
  24. package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
  25. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
  26. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +4 -4
  27. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +20 -14
  28. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  29. package/dist/cli/commands/ChatCommand.d.ts +2 -1
  30. package/dist/cli/commands/ChatCommand.js +71 -33
  31. package/dist/cli/commands/ChatCommand.js.map +1 -1
  32. package/dist/config.js +1 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/index.d.ts +16 -10
  35. package/dist/index.js +15 -8
  36. package/dist/index.js.map +1 -1
  37. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -1
  38. package/dist/llamaEvaluator/LlamaChat/LlamaChat.d.ts +175 -0
  39. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js +704 -0
  40. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +1 -0
  41. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +21 -0
  42. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js +120 -0
  43. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  44. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
  45. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +117 -0
  46. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  47. package/dist/llamaEvaluator/{LlamaChatSession.d.ts → LlamaChatSession/LlamaChatSession.d.ts} +48 -25
  48. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js +211 -0
  49. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  50. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
  51. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  52. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  53. package/dist/llamaEvaluator/LlamaContext/LlamaContext.d.ts +18 -23
  54. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js +58 -101
  55. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +1 -1
  56. package/dist/llamaEvaluator/LlamaContext/types.d.ts +6 -10
  57. package/dist/llamaEvaluator/LlamaGrammar.d.ts +8 -12
  58. package/dist/llamaEvaluator/LlamaGrammar.js +7 -12
  59. package/dist/llamaEvaluator/LlamaGrammar.js.map +1 -1
  60. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js +2 -1
  61. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  62. package/dist/llamaEvaluator/LlamaModel.d.ts +10 -2
  63. package/dist/llamaEvaluator/LlamaModel.js +14 -3
  64. package/dist/llamaEvaluator/LlamaModel.js.map +1 -1
  65. package/dist/types.d.ts +41 -3
  66. package/dist/types.js +5 -1
  67. package/dist/types.js.map +1 -1
  68. package/dist/utils/LlamaText.d.ts +42 -0
  69. package/dist/utils/LlamaText.js +207 -0
  70. package/dist/utils/LlamaText.js.map +1 -0
  71. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  72. package/dist/utils/StopGenerationDetector.js +205 -0
  73. package/dist/utils/StopGenerationDetector.js.map +1 -0
  74. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  75. package/dist/utils/TokenStreamRegulator.js +96 -0
  76. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  77. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  78. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  79. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  80. package/dist/utils/compareTokens.d.ts +2 -0
  81. package/dist/utils/compareTokens.js +4 -0
  82. package/dist/utils/compareTokens.js.map +1 -0
  83. package/dist/utils/compileLLamaCpp.js +11 -6
  84. package/dist/utils/compileLLamaCpp.js.map +1 -1
  85. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  86. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  87. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  88. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  89. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  90. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  91. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  92. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  93. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  94. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  95. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  96. package/dist/utils/gbnfJson/types.d.ts +1 -1
  97. package/dist/utils/gbnfJson/types.js.map +1 -1
  98. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  99. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  100. package/dist/utils/getBin.d.ts +2 -2
  101. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  102. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  103. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  104. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  105. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  106. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  107. package/dist/utils/resolveChatWrapper.js +16 -0
  108. package/dist/utils/resolveChatWrapper.js.map +1 -0
  109. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  110. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  111. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  112. package/llama/addon.cpp +24 -12
  113. package/llama/binariesGithubRelease.json +1 -1
  114. package/llama/gitRelease.bundle +0 -0
  115. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  116. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  117. package/llamaBins/linux-x64/llama-addon.node +0 -0
  118. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  119. package/llamaBins/mac-x64/llama-addon.node +0 -0
  120. package/llamaBins/win-x64/llama-addon.node +0 -0
  121. package/package.json +21 -9
  122. package/dist/ChatPromptWrapper.d.ts +0 -11
  123. package/dist/ChatPromptWrapper.js +0 -20
  124. package/dist/ChatPromptWrapper.js.map +0 -1
  125. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  126. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  127. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  128. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  129. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  130. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  131. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  132. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  133. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  134. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  135. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  136. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  137. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  138. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  139. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  140. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -15
  141. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -39
  142. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  143. package/dist/llamaEvaluator/LlamaChatSession.js +0 -290
  144. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  145. package/dist/utils/getTextCompletion.d.ts +0 -3
  146. package/dist/utils/getTextCompletion.js +0 -12
  147. package/dist/utils/getTextCompletion.js.map +0 -1
  148. package/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
  149. package/llamaBins/mac-x64/ggml-metal.metal +0 -2929
@@ -31,6 +31,8 @@ export class LlamaModel {
31
31
  }));
32
32
  this._tokens = LlamaModelTokens._create(this._model, this._disposedState);
33
33
  this._filename = path.basename(modelPath);
34
+ this.tokenize = this.tokenize.bind(this);
35
+ this.detokenize = this.detokenize.bind(this);
34
36
  }
35
37
  dispose() {
36
38
  if (this._disposedState.disposed)
@@ -52,12 +54,21 @@ export class LlamaModel {
52
54
  get filename() {
53
55
  return this._filename;
54
56
  }
55
- /** Transform text into tokens that can be fed to the model */
56
- tokenize(text) {
57
+ tokenize(text, specialTokens = false) {
57
58
  this._ensureNotDisposed();
58
59
  if (text === "")
59
60
  return [];
60
- return Array.from(this._model.tokenize(text));
61
+ if (specialTokens === "builtin") {
62
+ const builtinToken = text;
63
+ switch (builtinToken) {
64
+ case "BOS": return this.tokens.bos == null ? [] : [this.tokens.bos];
65
+ case "EOS": return this.tokens.eos == null ? [] : [this.tokens.eos];
66
+ case "NL": return this.tokens.nl == null ? [] : [this.tokens.nl];
67
+ }
68
+ void (builtinToken);
69
+ throw new Error(`Unknown builtin special token: ${builtinToken}`);
70
+ }
71
+ return Array.from(this._model.tokenize(text, specialTokens));
61
72
  }
62
73
  /** Transform tokens into text */
63
74
  detokenize(tokens) {
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaModel.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlamaModel.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaModel.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,45 @@
1
+ import { GbnfJsonSchema, GbnfJsonSchemaToType } from "./utils/gbnfJson/types.js";
2
+ import { BuiltinSpecialTokenValue } from "./utils/LlamaText.js";
1
3
  export type Token = number & {
2
4
  __token: never;
3
5
  };
4
- export type ConversationInteraction = {
5
- prompt: string;
6
- response: string;
6
+ export type Tokenizer = {
7
+ tokenize(text: string, specialTokens?: boolean): Token[];
8
+ tokenize(text: BuiltinSpecialTokenValue, specialTokens: "builtin"): Token[];
9
+ }["tokenize"];
10
+ export type ChatHistoryItem = ChatSystemMessage | ChatUserMessage | ChatModelResponse;
11
+ export type ChatSystemMessage = {
12
+ type: "system";
13
+ text: string;
7
14
  };
15
+ export type ChatUserMessage = {
16
+ type: "user";
17
+ text: string;
18
+ };
19
+ export type ChatModelResponse = {
20
+ type: "model";
21
+ response: (string | ChatModelFunctionCall)[];
22
+ };
23
+ export type ChatModelFunctionCall = {
24
+ type: "functionCall";
25
+ name: string;
26
+ description?: string;
27
+ params: any;
28
+ result: any;
29
+ raw?: string;
30
+ };
31
+ export type ChatModelFunctions = {
32
+ readonly [name: string]: {
33
+ readonly description?: string;
34
+ readonly params?: GbnfJsonSchema | undefined | null;
35
+ };
36
+ };
37
+ export type ChatSessionModelFunctions = {
38
+ readonly [name: string]: ChatSessionModelFunction<any>;
39
+ };
40
+ export type ChatSessionModelFunction<Params extends GbnfJsonSchema | undefined = GbnfJsonSchema | undefined> = {
41
+ readonly description?: string;
42
+ readonly params?: Params;
43
+ readonly handler: (params: GbnfJsonSchemaToType<Params>) => any;
44
+ };
45
+ export declare function isChatModelResponseFunctionCall(item: ChatModelResponse["response"][number]): item is ChatModelFunctionCall;
package/dist/types.js CHANGED
@@ -1,2 +1,6 @@
1
- export {};
1
+ export function isChatModelResponseFunctionCall(item) {
2
+ if (typeof item === "string")
3
+ return false;
4
+ return item.type === "functionCall";
5
+ }
2
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqDA,MAAM,UAAU,+BAA+B,CAAC,IAA2C;IACvF,IAAI,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,KAAK,CAAC;IAEjB,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;AACxC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Token, Tokenizer } from "../types.js";
2
+ export type LlamaTextClass = {
3
+ <const V extends LlamaTextValue = LlamaTextValue, const V2 extends LlamaTextValue = LlamaTextValue>(strings: TemplateStringsArray | V | LlamaText<V> | readonly (LlamaText<V> | V)[], ...values: readonly (V | LlamaText<V> | V2 | LlamaText<V2> | number | boolean | readonly (LlamaText<V> | V | LlamaText<V2> | V2)[])[]): LlamaText<V | V2>;
4
+ fromJSON(json: LlamaTextJSON): LlamaText;
5
+ };
6
+ export type LlamaText<T extends LlamaTextValue = LlamaTextValue> = {
7
+ <const V extends LlamaTextValue = LlamaTextValue, const V2 extends LlamaTextValue = LlamaTextValue>(strings: TemplateStringsArray | V | LlamaText | readonly (LlamaText | V)[], ...values: readonly (V | V2 | LlamaText | number | boolean | readonly (LlamaText | V | V2)[])[]): LlamaText<T | V>;
8
+ readonly type: "LlamaText";
9
+ readonly values: readonly T[];
10
+ mapValues<V extends LlamaTextValue = LlamaTextValue>(mapper: (value: T) => V): LlamaText<V>;
11
+ joinValues<V extends LlamaTextValue = LlamaTextValue>(separator: LlamaText<V> | V): LlamaText<T | V>;
12
+ toString(): string;
13
+ toJSON(): LlamaTextJSON;
14
+ tokenize(tokenizer: Tokenizer): Token[];
15
+ };
16
+ export type LlamaTextValue = string | SpecialToken;
17
+ export type LlamaTextJSON = Array<LlamaTextJSONValue>;
18
+ export type LlamaTextJSONValue = string | LlamaTextSpecialTokenJSON;
19
+ export type LlamaTextSpecialTokenJSON = {
20
+ type: "specialToken";
21
+ value: string;
22
+ builtin?: true;
23
+ };
24
+ export declare const LlamaText: LlamaTextClass;
25
+ export declare class SpecialToken {
26
+ readonly value: string;
27
+ constructor(value: string);
28
+ toString(): string;
29
+ tokenize(tokenizer: Tokenizer): Token[];
30
+ toJSON(): LlamaTextSpecialTokenJSON;
31
+ static fromJSON(json: LlamaTextSpecialTokenJSON): SpecialToken;
32
+ static isSpecialTokenJSON(value: LlamaTextJSONValue): value is LlamaTextSpecialTokenJSON;
33
+ }
34
+ export type BuiltinSpecialTokenValue = "BOS" | "EOS" | "NL";
35
+ export declare class BuiltinSpecialToken extends SpecialToken {
36
+ readonly value: BuiltinSpecialTokenValue;
37
+ constructor(value: BuiltinSpecialTokenValue);
38
+ tokenize(tokenizer: Tokenizer): Token[];
39
+ toJSON(): LlamaTextSpecialTokenJSON;
40
+ }
41
+ export declare function isLlamaText(value: unknown): value is LlamaText;
42
+ export declare function tokenizeText(text: string | LlamaText, tokenizer: Tokenizer): Token[];
@@ -0,0 +1,207 @@
1
+ export const LlamaText = function LlamaText(strings, ...values) {
2
+ return createLlamaText(createHistoryFromStringsAndValues(strings, values));
3
+ };
4
+ LlamaText.fromJSON = function fromJSON(json) {
5
+ return createLlamaText(json.map((value) => {
6
+ if (typeof value === "string")
7
+ return value;
8
+ else if (SpecialToken.isSpecialTokenJSON(value))
9
+ return SpecialToken.fromJSON(value);
10
+ else {
11
+ void (value);
12
+ throw new Error(`Unknown value type: ${value}`);
13
+ }
14
+ }));
15
+ };
16
+ export class SpecialToken {
17
+ value;
18
+ constructor(value) {
19
+ this.value = value;
20
+ }
21
+ toString() {
22
+ return this.value;
23
+ }
24
+ tokenize(tokenizer) {
25
+ return tokenizer(this.value, true);
26
+ }
27
+ toJSON() {
28
+ return {
29
+ type: "specialToken",
30
+ value: this.value
31
+ };
32
+ }
33
+ static fromJSON(json) {
34
+ if (json.builtin)
35
+ return new BuiltinSpecialToken(json.value);
36
+ else
37
+ return new SpecialToken(json.value);
38
+ }
39
+ static isSpecialTokenJSON(value) {
40
+ return value != null && typeof value === "object" && value.type === "specialToken";
41
+ }
42
+ }
43
+ export class BuiltinSpecialToken extends SpecialToken {
44
+ value;
45
+ constructor(value) {
46
+ super(value);
47
+ this.value = value;
48
+ }
49
+ tokenize(tokenizer) {
50
+ return tokenizer(this.value, "builtin");
51
+ }
52
+ toJSON() {
53
+ return {
54
+ type: "specialToken",
55
+ value: this.value,
56
+ builtin: true
57
+ };
58
+ }
59
+ }
60
+ export function isLlamaText(value) {
61
+ return typeof value === "function" && "type" in value && value.type === "LlamaText";
62
+ }
63
+ export function tokenizeText(text, tokenizer) {
64
+ if (typeof text === "string")
65
+ return tokenizer(text, false);
66
+ else
67
+ return text.tokenize(tokenizer);
68
+ }
69
+ const LlamaTextPrototypeFunctions = {
70
+ mapValues: function mapValues(mapper) {
71
+ return createLlamaText(this.values.map(mapper));
72
+ },
73
+ joinValues(separator) {
74
+ const newValues = [];
75
+ for (let i = 0; i < this.values.length; i++) {
76
+ newValues.push(this.values[i]);
77
+ if (i !== this.values.length - 1) {
78
+ if (isLlamaText(separator))
79
+ newValues.push(...separator.values);
80
+ else
81
+ newValues.push(separator);
82
+ }
83
+ }
84
+ return createLlamaText(newValues);
85
+ },
86
+ toString() {
87
+ return this.values
88
+ .map((value) => {
89
+ if (value instanceof SpecialToken)
90
+ return value.toString();
91
+ else
92
+ return value;
93
+ })
94
+ .join("");
95
+ },
96
+ tokenize(tokenizer) {
97
+ let textToTokenize = "";
98
+ const res = [];
99
+ for (const value of this.values) {
100
+ if (value instanceof SpecialToken) {
101
+ res.push(...tokenizer(textToTokenize, false), ...value.tokenize(tokenizer));
102
+ textToTokenize = "";
103
+ }
104
+ else
105
+ textToTokenize += value;
106
+ }
107
+ res.push(...tokenizer(textToTokenize, false));
108
+ return res;
109
+ },
110
+ toJSON() {
111
+ return this.values.map((value) => {
112
+ if (value instanceof SpecialToken)
113
+ return { type: "specialToken", value: value.value };
114
+ else
115
+ return value;
116
+ });
117
+ }
118
+ };
119
+ function createLlamaText(history) {
120
+ const llamaText = function LlamaText(strings, ...values) {
121
+ return createLlamaText(llamaText.values.concat(createHistoryFromStringsAndValues(strings, values)));
122
+ };
123
+ Object.defineProperties(llamaText, {
124
+ ["type"]: {
125
+ value: "LlamaText",
126
+ writable: false,
127
+ configurable: false,
128
+ enumerable: true
129
+ },
130
+ ["values"]: {
131
+ value: Object.freeze(history.slice()),
132
+ writable: false,
133
+ configurable: false,
134
+ enumerable: true
135
+ },
136
+ ["mapValues"]: {
137
+ value: LlamaTextPrototypeFunctions.mapValues,
138
+ writable: false,
139
+ configurable: false,
140
+ enumerable: false
141
+ },
142
+ ["joinValues"]: {
143
+ value: LlamaTextPrototypeFunctions.joinValues,
144
+ writable: false,
145
+ configurable: false,
146
+ enumerable: false
147
+ },
148
+ ["toString"]: {
149
+ value: LlamaTextPrototypeFunctions.toString,
150
+ writable: false,
151
+ configurable: false,
152
+ enumerable: false
153
+ },
154
+ ["tokenize"]: {
155
+ value: LlamaTextPrototypeFunctions.tokenize,
156
+ writable: false,
157
+ configurable: false,
158
+ enumerable: false
159
+ },
160
+ ["toJSON"]: {
161
+ value: LlamaTextPrototypeFunctions.toJSON,
162
+ writable: false,
163
+ configurable: false,
164
+ enumerable: false
165
+ }
166
+ });
167
+ return llamaText;
168
+ }
169
+ function createHistoryFromStringsAndValues(strings, values) {
170
+ function addItemToRes(res, item) {
171
+ if (item === undefined || item === "")
172
+ return res;
173
+ else if (typeof item === "string" || item instanceof SpecialToken)
174
+ return res.concat([item]);
175
+ else if (isLlamaText(item))
176
+ return res.concat(item.values);
177
+ else if (item instanceof Array) {
178
+ return res.concat(item.reduce((res, value) => {
179
+ if (isLlamaText(value))
180
+ return res.concat(value.values);
181
+ else if (value === "")
182
+ return res;
183
+ return res.concat([value]);
184
+ }, []));
185
+ }
186
+ else if (typeof item === "number" || typeof item === "boolean")
187
+ return res.concat([String(item)]);
188
+ return item;
189
+ }
190
+ if (!isTemplateStringsArray(strings)) {
191
+ return [strings]
192
+ .concat(values)
193
+ .reduce(addItemToRes, []);
194
+ }
195
+ let res = [];
196
+ for (let i = 0; i < strings.length; i++) {
197
+ res.push(strings[i]);
198
+ if (i < values.length)
199
+ res = addItemToRes(res, values[i]);
200
+ }
201
+ return res;
202
+ }
203
+ function isTemplateStringsArray(value) {
204
+ return value instanceof Array && value.raw instanceof Array &&
205
+ value.length === value.raw.length;
206
+ }
207
+ //# sourceMappingURL=LlamaText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LlamaText.js","sourceRoot":"","sources":["../../src/utils/LlamaText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Token, Tokenizer } from "../types.js";
2
+ import { LlamaText } from "./LlamaText.js";
3
+ import { QueuedTokenRelease, QueuedTokenReleaseLock } from "./TokenStreamRegulator.js";
4
+ export type StopGenerationTrigger = (string | Token)[];
5
+ export declare class StopGenerationDetector<T extends string = string> {
6
+ recordGeneration({ text, tokens, queuedTokenRelease, startNewChecks }: {
7
+ text: string;
8
+ tokens: Token[];
9
+ queuedTokenRelease?: QueuedTokenRelease;
10
+ startNewChecks?: boolean;
11
+ }): void;
12
+ addStopTrigger(stopTrigger: StopGenerationTrigger, completeEvent?: T): this;
13
+ /** Whether there are some stops that have been found and triggered. */
14
+ get hasTriggeredStops(): boolean;
15
+ /** Whether there are some stops that have been found, but not triggered yet. */
16
+ get hasInProgressStops(): boolean;
17
+ /** Gets the stops that have been found and triggered. */
18
+ getTriggeredStops(): {
19
+ stopTrigger: StopGenerationTrigger;
20
+ events: T[];
21
+ remainingGenerations: (string | Token[])[];
22
+ queuedTokenReleaseLocks: QueuedTokenReleaseLock[];
23
+ }[];
24
+ clearTriggeredStops(): void;
25
+ clearInProgressStops(): void;
26
+ static resolveStopTriggers(stopTriggers: readonly (StopGenerationTrigger | LlamaText)[], tokenizer: Tokenizer): StopGenerationTrigger[];
27
+ static resolveLlamaTextTrigger(llamaText: LlamaText, tokenizer: Tokenizer): StopGenerationTrigger;
28
+ }
@@ -0,0 +1,205 @@
1
+ import { isLlamaText, SpecialToken } from "./LlamaText.js";
2
+ export class StopGenerationDetector {
3
+ /** @internal */ _stopTriggers = new Map();
4
+ /** @internal */ _activeChecks = new Set();
5
+ /** @internal */ _triggeredStops = new Map();
6
+ recordGeneration({ text, tokens, queuedTokenRelease, startNewChecks = true }) {
7
+ const currentActiveChecks = this._activeChecks;
8
+ this._activeChecks = new Set();
9
+ for (const check of currentActiveChecks) {
10
+ let lockUsed = false;
11
+ if (text.length > 0)
12
+ lockUsed ||= this._checkTriggerPart(check, text);
13
+ else {
14
+ this._activeChecks.add(check);
15
+ lockUsed = true;
16
+ }
17
+ if (tokens.length > 0)
18
+ lockUsed ||= this._checkTriggerPart(check, tokens);
19
+ else {
20
+ this._activeChecks.add(check);
21
+ lockUsed = true;
22
+ }
23
+ if (!lockUsed)
24
+ check.queuedTokenReleaseLock?.dispose();
25
+ }
26
+ if (!startNewChecks)
27
+ return;
28
+ for (let i = 0; i < text.length; i++) {
29
+ const char = text[i];
30
+ const currentPart = this._stopTriggers.get(char);
31
+ if (currentPart == null)
32
+ continue;
33
+ const textCheck = {
34
+ queuedTokenReleaseLock: queuedTokenRelease?.createTextIndexLock(i),
35
+ currentPart
36
+ };
37
+ const lockUsed = this._checkTriggerPart(textCheck, text.slice(i + 1));
38
+ if (!lockUsed)
39
+ textCheck.queuedTokenReleaseLock?.dispose();
40
+ }
41
+ for (let i = 0; i < tokens.length; i++) {
42
+ const token = tokens[i];
43
+ const currentPart = this._stopTriggers.get(token);
44
+ if (currentPart == null)
45
+ continue;
46
+ const tokenCheck = {
47
+ queuedTokenReleaseLock: queuedTokenRelease?.createTokenIndexLock(i),
48
+ currentPart
49
+ };
50
+ const lockUsed = this._checkTriggerPart(tokenCheck, tokens.slice(i + 1));
51
+ if (!lockUsed)
52
+ tokenCheck.queuedTokenReleaseLock?.dispose();
53
+ }
54
+ }
55
+ addStopTrigger(stopTrigger, completeEvent) {
56
+ const simplifiedTrigger = simplifyStopTrigger(stopTrigger);
57
+ const triggerValues = simplifiedTrigger
58
+ .map((item) => {
59
+ if (typeof item === "string")
60
+ return item.split("");
61
+ else
62
+ return [item];
63
+ })
64
+ .flat(1);
65
+ let currentMap = this._stopTriggers;
66
+ for (let i = 0; i < triggerValues.length; i++) {
67
+ const value = triggerValues[i];
68
+ const isLast = i === triggerValues.length - 1;
69
+ if (!currentMap.has(value)) {
70
+ currentMap.set(value, {
71
+ next: new Map()
72
+ });
73
+ }
74
+ const part = currentMap.get(value);
75
+ if (isLast) {
76
+ part.next = undefined;
77
+ part.completesTrigger = simplifiedTrigger;
78
+ part.completeEvents = part.completeEvents ?? new Set();
79
+ if (completeEvent != null)
80
+ part.completeEvents.add(completeEvent);
81
+ }
82
+ else if (part.next == null)
83
+ break;
84
+ else
85
+ currentMap = part.next;
86
+ }
87
+ return this;
88
+ }
89
+ /** Whether there are some stops that have been found and triggered. */
90
+ get hasTriggeredStops() {
91
+ return this._triggeredStops.size > 0;
92
+ }
93
+ /** Whether there are some stops that have been found, but not triggered yet. */
94
+ get hasInProgressStops() {
95
+ return this._activeChecks.size > 0;
96
+ }
97
+ /** Gets the stops that have been found and triggered. */
98
+ getTriggeredStops() {
99
+ const res = [];
100
+ for (const [triggerPart, triggeredStop] of this._triggeredStops.entries()) {
101
+ res.push({
102
+ stopTrigger: triggerPart.completesTrigger,
103
+ events: Array.from(triggerPart.completeEvents ?? new Set()),
104
+ remainingGenerations: Array.from(triggeredStop.remainingGenerations),
105
+ queuedTokenReleaseLocks: Array.from(triggeredStop.queuedTokenReleaseLocks)
106
+ });
107
+ }
108
+ return res;
109
+ }
110
+ clearTriggeredStops() {
111
+ for (const triggeredStop of this._triggeredStops.values()) {
112
+ for (const queuedTokenReleaseLock of triggeredStop.queuedTokenReleaseLocks)
113
+ queuedTokenReleaseLock.dispose();
114
+ }
115
+ this._triggeredStops.clear();
116
+ }
117
+ clearInProgressStops() {
118
+ for (const check of this._activeChecks)
119
+ check.queuedTokenReleaseLock?.dispose();
120
+ this._activeChecks.clear();
121
+ }
122
+ /** @internal */
123
+ _addFoundStop(part, remainingGeneration, queuedTokenReleaseLock) {
124
+ if (!this._triggeredStops.has(part))
125
+ this._triggeredStops.set(part, {
126
+ remainingGenerations: new Set(),
127
+ queuedTokenReleaseLocks: new Set()
128
+ });
129
+ const triggeredStop = this._triggeredStops.get(part);
130
+ if (remainingGeneration != null)
131
+ triggeredStop.remainingGenerations.add(remainingGeneration);
132
+ if (queuedTokenReleaseLock != null)
133
+ triggeredStop.queuedTokenReleaseLocks.add(queuedTokenReleaseLock);
134
+ }
135
+ /** @internal */
136
+ _checkTriggerPart(check, value) {
137
+ if (check == null)
138
+ return false;
139
+ let part = check.currentPart;
140
+ for (let i = 0; i < value.length && part != null; i++) {
141
+ const item = value[i];
142
+ if (part.next == null) {
143
+ this._addFoundStop(part, value.slice(i), check.queuedTokenReleaseLock);
144
+ return true;
145
+ }
146
+ if (part.next.has(item)) {
147
+ part = part.next.get(item);
148
+ continue;
149
+ }
150
+ return false;
151
+ }
152
+ if (part == null)
153
+ return false;
154
+ if (part.next == null) {
155
+ this._addFoundStop(part, undefined, check.queuedTokenReleaseLock);
156
+ return true;
157
+ }
158
+ else {
159
+ this._activeChecks.add({
160
+ ...check,
161
+ currentPart: part
162
+ });
163
+ return true;
164
+ }
165
+ }
166
+ static resolveStopTriggers(stopTriggers, tokenizer) {
167
+ return stopTriggers.map((stopTrigger) => {
168
+ if (isLlamaText(stopTrigger))
169
+ return StopGenerationDetector.resolveLlamaTextTrigger(stopTrigger, tokenizer);
170
+ else
171
+ return simplifyStopTrigger(stopTrigger);
172
+ });
173
+ }
174
+ static resolveLlamaTextTrigger(llamaText, tokenizer) {
175
+ return simplifyStopTrigger(llamaText.values
176
+ .filter(value => value !== "")
177
+ .map((value) => {
178
+ if (typeof value === "string")
179
+ return [value];
180
+ else if (value instanceof SpecialToken)
181
+ return value.tokenize(tokenizer);
182
+ return value;
183
+ })
184
+ .flat(1));
185
+ }
186
+ }
187
+ function simplifyStopTrigger(stopTrigger) {
188
+ let text = "";
189
+ const res = [];
190
+ for (const item of stopTrigger) {
191
+ if (typeof item === "string") {
192
+ text += item;
193
+ continue;
194
+ }
195
+ if (text !== "") {
196
+ res.push(text);
197
+ text = "";
198
+ }
199
+ res.push(item);
200
+ }
201
+ if (text !== "")
202
+ res.push(text);
203
+ return res;
204
+ }
205
+ //# sourceMappingURL=StopGenerationDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopGenerationDetector.js","sourceRoot":"","sources":["../../src/utils/StopGenerationDetector.ts"],"names":[],"mappings":"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"}