node-llama-cpp 3.0.0-beta.15 → 3.0.0-beta.16

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 (163) hide show
  1. package/dist/bindings/AddonTypes.d.ts +2 -0
  2. package/dist/bindings/Llama.d.ts +7 -0
  3. package/dist/bindings/Llama.js +12 -1
  4. package/dist/bindings/Llama.js.map +1 -1
  5. package/dist/bindings/getLlama.d.ts +2 -2
  6. package/dist/bindings/getLlama.js +1 -1
  7. package/dist/bindings/getLlama.js.map +1 -1
  8. package/dist/bindings/utils/cloneLlamaCppRepo.js +23 -23
  9. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -1
  10. package/dist/chatWrappers/utils/resolveChatWrapper.js +3 -1
  11. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  12. package/dist/cli/commands/BuildCommand.js +1 -1
  13. package/dist/cli/commands/BuildCommand.js.map +1 -1
  14. package/dist/cli/commands/ChatCommand.d.ts +2 -1
  15. package/dist/cli/commands/ChatCommand.js +70 -75
  16. package/dist/cli/commands/ChatCommand.js.map +1 -1
  17. package/dist/cli/commands/CompleteCommand.d.ts +2 -1
  18. package/dist/cli/commands/CompleteCommand.js +61 -57
  19. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  20. package/dist/cli/commands/DebugCommand.js +4 -4
  21. package/dist/cli/commands/DownloadCommand.js +3 -4
  22. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  23. package/dist/cli/commands/InfillCommand.d.ts +2 -1
  24. package/dist/cli/commands/InfillCommand.js +63 -61
  25. package/dist/cli/commands/InfillCommand.js.map +1 -1
  26. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +2 -1
  27. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +20 -7
  28. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -1
  29. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +42 -4
  30. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -1
  31. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +2 -1
  32. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +29 -27
  33. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  34. package/dist/cli/recommendedModels.d.ts +2 -0
  35. package/dist/cli/recommendedModels.js +281 -0
  36. package/dist/cli/recommendedModels.js.map +1 -0
  37. package/dist/cli/utils/ConsoleInteraction.d.ts +23 -0
  38. package/dist/cli/utils/ConsoleInteraction.js +122 -0
  39. package/dist/cli/utils/ConsoleInteraction.js.map +1 -0
  40. package/dist/cli/utils/ConsoleTable.js +5 -5
  41. package/dist/cli/utils/basicChooseFromListConsoleInteraction.d.ts +13 -0
  42. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js +111 -0
  43. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js.map +1 -0
  44. package/dist/cli/utils/consolePromptQuestion.d.ts +5 -0
  45. package/dist/cli/utils/consolePromptQuestion.js +80 -0
  46. package/dist/cli/utils/consolePromptQuestion.js.map +1 -0
  47. package/dist/cli/utils/getReadablePath.d.ts +1 -0
  48. package/dist/cli/utils/getReadablePath.js +14 -0
  49. package/dist/cli/utils/getReadablePath.js.map +1 -0
  50. package/dist/cli/utils/printCommonInfoLines.js +1 -1
  51. package/dist/cli/utils/printInfoLine.d.ts +4 -2
  52. package/dist/cli/utils/printInfoLine.js +15 -6
  53. package/dist/cli/utils/printInfoLine.js.map +1 -1
  54. package/dist/cli/utils/resolveCommandGgufPath.d.ts +2 -1
  55. package/dist/cli/utils/resolveCommandGgufPath.js +490 -2
  56. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
  57. package/dist/cli/utils/resolveHeaderFlag.d.ts +1 -0
  58. package/dist/cli/utils/resolveHeaderFlag.js +21 -0
  59. package/dist/cli/utils/resolveHeaderFlag.js.map +1 -0
  60. package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +19 -0
  61. package/dist/cli/utils/resolveModelRecommendationFileOptions.js +7 -0
  62. package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -0
  63. package/dist/cli/utils/splitAnsiToLines.d.ts +1 -0
  64. package/dist/cli/utils/splitAnsiToLines.js +17 -0
  65. package/dist/cli/utils/splitAnsiToLines.js.map +1 -0
  66. package/dist/config.d.ts +3 -0
  67. package/dist/config.js +5 -2
  68. package/dist/config.js.map +1 -1
  69. package/dist/consts.d.ts +2 -0
  70. package/dist/consts.js +8 -0
  71. package/dist/consts.js.map +1 -1
  72. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +8 -1
  73. package/dist/evaluator/LlamaChat/LlamaChat.js +2 -1
  74. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  75. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +9 -2
  76. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +5 -3
  77. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  78. package/dist/evaluator/LlamaCompletion.d.ts +9 -2
  79. package/dist/evaluator/LlamaCompletion.js +6 -3
  80. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  81. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +9 -19
  82. package/dist/evaluator/LlamaContext/LlamaContext.js +35 -55
  83. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  84. package/dist/evaluator/LlamaGrammar.d.ts +3 -2
  85. package/dist/evaluator/LlamaGrammar.js +3 -2
  86. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  87. package/dist/evaluator/LlamaModel.d.ts +7 -15
  88. package/dist/evaluator/LlamaModel.js +4 -201
  89. package/dist/evaluator/LlamaModel.js.map +1 -1
  90. package/dist/evaluator/TokenBias.d.ts +22 -0
  91. package/dist/evaluator/TokenBias.js +33 -0
  92. package/dist/evaluator/TokenBias.js.map +1 -0
  93. package/dist/gguf/{GgufInsights.d.ts → insights/GgufInsights.d.ts} +5 -3
  94. package/dist/gguf/{GgufInsights.js → insights/GgufInsights.js} +46 -35
  95. package/dist/gguf/insights/GgufInsights.js.map +1 -0
  96. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +87 -0
  97. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +136 -0
  98. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -0
  99. package/dist/gguf/insights/utils/resolveContextContextSizeOption.d.ts +18 -0
  100. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js +52 -0
  101. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -0
  102. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +14 -0
  103. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +177 -0
  104. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -0
  105. package/dist/gguf/insights/utils/scoreLevels.d.ts +5 -0
  106. package/dist/gguf/insights/utils/scoreLevels.js +16 -0
  107. package/dist/gguf/insights/utils/scoreLevels.js.map +1 -0
  108. package/dist/gguf/readGgufFileInfo.js +2 -1
  109. package/dist/gguf/readGgufFileInfo.js.map +1 -1
  110. package/dist/index.d.ts +2 -1
  111. package/dist/index.js +2 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/utils/getConsoleLogPrefix.js +1 -1
  114. package/dist/utils/getReadableContextSize.d.ts +1 -0
  115. package/dist/utils/getReadableContextSize.js +7 -0
  116. package/dist/utils/getReadableContextSize.js.map +1 -0
  117. package/dist/utils/isToken.d.ts +2 -0
  118. package/dist/utils/isToken.js +4 -0
  119. package/dist/utils/isToken.js.map +1 -0
  120. package/dist/utils/isUrl.d.ts +1 -0
  121. package/dist/utils/isUrl.js +15 -0
  122. package/dist/utils/isUrl.js.map +1 -0
  123. package/dist/utils/tokenizeInput.d.ts +1 -1
  124. package/dist/utils/tokenizeInput.js +3 -0
  125. package/dist/utils/tokenizeInput.js.map +1 -1
  126. package/dist/utils/withOra.d.ts +1 -0
  127. package/dist/utils/withOra.js +13 -7
  128. package/dist/utils/withOra.js.map +1 -1
  129. package/dist/utils/withProgressLog.d.ts +23 -0
  130. package/dist/utils/withProgressLog.js +211 -0
  131. package/dist/utils/withProgressLog.js.map +1 -0
  132. package/dist/utils/withStatusLogs.js +1 -1
  133. package/dist/utils/withStatusLogs.js.map +1 -1
  134. package/llama/addon.cpp +43 -5
  135. package/llama/binariesGithubRelease.json +1 -1
  136. package/llama/gitRelease.bundle +0 -0
  137. package/llama/grammars/README.md +10 -0
  138. package/llama/llama.cpp.info.json +1 -1
  139. package/llamaBins/linux-arm64/_nlcBuildMetadata.json +1 -1
  140. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  141. package/llamaBins/linux-armv7l/_nlcBuildMetadata.json +1 -1
  142. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  143. package/llamaBins/linux-x64/_nlcBuildMetadata.json +1 -1
  144. package/llamaBins/linux-x64/llama-addon.node +0 -0
  145. package/llamaBins/linux-x64-cuda/_nlcBuildMetadata.json +1 -1
  146. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  147. package/llamaBins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -1
  148. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  149. package/llamaBins/mac-arm64-metal/_nlcBuildMetadata.json +1 -1
  150. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  151. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  152. package/llamaBins/mac-x64/_nlcBuildMetadata.json +1 -1
  153. package/llamaBins/mac-x64/llama-addon.node +0 -0
  154. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -1
  155. package/llamaBins/win-arm64/llama-addon.node +0 -0
  156. package/llamaBins/win-x64/_nlcBuildMetadata.json +1 -1
  157. package/llamaBins/win-x64/llama-addon.node +0 -0
  158. package/llamaBins/win-x64-cuda/_nlcBuildMetadata.json +1 -1
  159. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  160. package/llamaBins/win-x64-vulkan/_nlcBuildMetadata.json +1 -1
  161. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  162. package/package.json +8 -7
  163. package/dist/gguf/GgufInsights.js.map +0 -1
@@ -0,0 +1,211 @@
1
+ import process from "process";
2
+ import UpdateManager from "stdout-update";
3
+ import sliceAnsi from "slice-ansi";
4
+ import stripAnsi from "strip-ansi";
5
+ import chalk from "chalk";
6
+ import logSymbols from "log-symbols";
7
+ import prettyMilliseconds from "pretty-ms";
8
+ import { useCiLogs } from "../config.js";
9
+ import { clockChar } from "../consts.js";
10
+ import { ConsoleInteraction, ConsoleInteractionKey } from "../cli/utils/ConsoleInteraction.js";
11
+ import { getConsoleLogPrefix } from "./getConsoleLogPrefix.js";
12
+ import withOra from "./withOra.js";
13
+ export async function withProgressLog({ loadingText, successText, failText, liveUpdates = true, statusIcons = true, initialPercentage = 0, initialProgressBarText, progressBarLength = 40, minPercentageChangeForNonLiveUpdates = 0.1, eta = true, etaUpdateInterval = 1000, noProgress = false, progressFractionDigits = true, noSuccessLiveStatus = false, liveCtrlCSendsAbortSignal = false }, callback) {
14
+ const shouldLiveUpdate = !useCiLogs && liveUpdates;
15
+ const startTime = Date.now();
16
+ const abortController = new AbortController();
17
+ let currentProgress = initialPercentage;
18
+ let currentProgressBarText = initialProgressBarText;
19
+ let isAborted = false;
20
+ const getEta = () => {
21
+ const now = Date.now();
22
+ if (!eta || currentProgress === 1 || now - startTime < 1000)
23
+ return null;
24
+ const timeRemaining = ((now - startTime) / currentProgress) * (1 - currentProgress);
25
+ if (!Number.isFinite(timeRemaining) || typeof timeRemaining === "bigint")
26
+ return null;
27
+ if (timeRemaining < 1000)
28
+ return "0s left";
29
+ try {
30
+ return prettyMilliseconds(timeRemaining, {
31
+ keepDecimalsOnWholeSeconds: true,
32
+ secondsDecimalDigits: 2,
33
+ compact: true
34
+ }) + " left";
35
+ }
36
+ catch (err) {
37
+ return null;
38
+ }
39
+ };
40
+ if (noProgress) {
41
+ return withOra({
42
+ loading: loadingText,
43
+ success: successText,
44
+ fail: failText,
45
+ useStatusLogs: !shouldLiveUpdate,
46
+ noSuccessLiveStatus
47
+ }, () => {
48
+ const progressUpdater = {
49
+ setProgress: () => progressUpdater
50
+ };
51
+ return callback(progressUpdater);
52
+ });
53
+ }
54
+ else if (!shouldLiveUpdate) {
55
+ const getLoadingText = () => {
56
+ const formattedProgress = (currentProgress * 100)
57
+ .toLocaleString("en-US", {
58
+ minimumIntegerDigits: 1,
59
+ minimumFractionDigits: 0,
60
+ maximumFractionDigits: progressFractionDigits ? 3 : 0
61
+ }) + "%";
62
+ const etaText = getEta();
63
+ return [
64
+ chalk.cyan(clockChar),
65
+ loadingText,
66
+ chalk.yellow(formattedProgress),
67
+ (currentProgressBarText != null && currentProgressBarText !== "")
68
+ ? chalk.gray(currentProgressBarText + (etaText != null
69
+ ? (" | " + etaText)
70
+ : ""))
71
+ : chalk.gray(etaText ?? "")
72
+ ].join(" ");
73
+ };
74
+ let lastLogProgress = initialPercentage;
75
+ let lastLogProgressBarText = initialProgressBarText;
76
+ const progressUpdater = {
77
+ setProgress(progress, progressText) {
78
+ currentProgress = progress;
79
+ currentProgressBarText = progressText;
80
+ if (Math.abs(currentProgress - lastLogProgress) >= minPercentageChangeForNonLiveUpdates ||
81
+ currentProgressBarText !== lastLogProgressBarText ||
82
+ (progress === 1 && lastLogProgress !== 1)) {
83
+ console.log(getConsoleLogPrefix() + getLoadingText());
84
+ lastLogProgress = currentProgress;
85
+ lastLogProgressBarText = currentProgressBarText;
86
+ }
87
+ return progressUpdater;
88
+ }
89
+ };
90
+ console.log(getConsoleLogPrefix() + getLoadingText());
91
+ try {
92
+ const res = await callback(progressUpdater);
93
+ console.log(getConsoleLogPrefix() + `${logSymbols.success} ${successText}`);
94
+ return res;
95
+ }
96
+ catch (er) {
97
+ console.log(getConsoleLogPrefix() + `${logSymbols.error} ${failText}`);
98
+ throw er;
99
+ }
100
+ }
101
+ const updateManager = UpdateManager.getInstance();
102
+ let etaUpdateTimeout = undefined;
103
+ function getProgressLine() {
104
+ const formattedProgress = (currentProgress * 100)
105
+ .toLocaleString("en-US", {
106
+ minimumIntegerDigits: 1,
107
+ minimumFractionDigits: progressFractionDigits ? 4 : 0,
108
+ maximumFractionDigits: progressFractionDigits ? 4 : 0
109
+ })
110
+ .slice(0, 5) + "%";
111
+ const addedText = (currentProgressBarText != null && currentProgressBarText !== "")
112
+ ? currentProgressBarText
113
+ : "";
114
+ const leftPad = " ".repeat(Math.floor((progressBarLength - stripAnsi(formattedProgress + (addedText.length > 0
115
+ ? (addedText + 1)
116
+ : 0)).length) / 2));
117
+ return [
118
+ loadingText,
119
+ renderProgressBar({
120
+ barText: leftPad + ` ${chalk.black.bgWhiteBright(formattedProgress)}${addedText.length === 0 ? "" : (" " + chalk.gray(addedText))} `,
121
+ backgroundText: leftPad + ` ${chalk.yellow.bgGray(formattedProgress)}${addedText.length === 0 ? "" : (" " + chalk.white(addedText))} `,
122
+ length: progressBarLength,
123
+ loadedPercentage: Math.max(0, Math.min(1, currentProgress)),
124
+ barStyle: chalk.black.bgWhiteBright,
125
+ backgroundStyle: chalk.bgGray
126
+ }),
127
+ isAborted
128
+ ? chalk.red("Aborted")
129
+ : chalk.gray(getEta() ?? "")
130
+ ].join(" ");
131
+ }
132
+ function updateProgressBar() {
133
+ updateManager.update([
134
+ getConsoleLogPrefix() + getProgressLine()
135
+ ]);
136
+ clearTimeout(etaUpdateTimeout);
137
+ if (eta && currentProgress !== 1)
138
+ etaUpdateTimeout = setTimeout(updateProgressBar, etaUpdateInterval);
139
+ }
140
+ const progressUpdater = {
141
+ setProgress(progress, progressText) {
142
+ currentProgress = progress;
143
+ currentProgressBarText = progressText;
144
+ if (!isAborted)
145
+ updateProgressBar();
146
+ return progressUpdater;
147
+ },
148
+ abortSignal: liveCtrlCSendsAbortSignal
149
+ ? abortController.signal
150
+ : undefined
151
+ };
152
+ updateManager.hook();
153
+ const consoleInteraction = new ConsoleInteraction();
154
+ let moveCursorUpAfterUnhook = false;
155
+ consoleInteraction.onKey(ConsoleInteractionKey.ctrlC, () => {
156
+ isAborted = true;
157
+ if (liveCtrlCSendsAbortSignal) {
158
+ abortController.abort();
159
+ consoleInteraction.stop();
160
+ updateProgressBar();
161
+ updateManager.unhook(true);
162
+ }
163
+ else {
164
+ consoleInteraction.stop();
165
+ updateManager.unhook(true);
166
+ updateProgressBar();
167
+ process.exit(0);
168
+ }
169
+ });
170
+ try {
171
+ updateProgressBar();
172
+ consoleInteraction.start();
173
+ const res = await callback(progressUpdater);
174
+ clearTimeout(etaUpdateTimeout);
175
+ if (noSuccessLiveStatus) {
176
+ updateManager.update([""]);
177
+ moveCursorUpAfterUnhook = true;
178
+ }
179
+ else
180
+ updateManager.update([
181
+ getConsoleLogPrefix() + (statusIcons
182
+ ? (logSymbols.success + " ")
183
+ : "") + successText
184
+ ]);
185
+ return res;
186
+ }
187
+ catch (err) {
188
+ updateManager.update([
189
+ getConsoleLogPrefix() + (statusIcons
190
+ ? (logSymbols.error + " ")
191
+ : "") + failText
192
+ ]);
193
+ throw err;
194
+ }
195
+ finally {
196
+ consoleInteraction.stop();
197
+ updateManager.unhook(true);
198
+ if (moveCursorUpAfterUnhook)
199
+ process.stdout.moveCursor(0, -1);
200
+ }
201
+ }
202
+ function renderProgressBar({ barText, backgroundText, length, loadedPercentage, barStyle, backgroundStyle }) {
203
+ const barChars = Math.floor(length * loadedPercentage);
204
+ const backgroundChars = length - barChars;
205
+ const slicedBarText = sliceAnsi(barText, 0, barChars);
206
+ const paddedBarText = slicedBarText + " ".repeat(barChars - stripAnsi(slicedBarText).length);
207
+ const slicedBackgroundText = sliceAnsi(backgroundText, barChars, barChars + backgroundChars);
208
+ const paddedBackgroundText = slicedBackgroundText + " ".repeat(backgroundChars - stripAnsi(slicedBackgroundText).length);
209
+ return barStyle(paddedBarText) + backgroundStyle(paddedBackgroundText);
210
+ }
211
+ //# sourceMappingURL=withProgressLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withProgressLog.js","sourceRoot":"","sources":["../../src/utils/withProgressLog.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import chalk from "chalk";
2
2
  import logSymbols from "log-symbols";
3
+ import { clockChar } from "../consts.js";
3
4
  import { getConsoleLogPrefix } from "./getConsoleLogPrefix.js";
4
- const clockChar = "\u25f7";
5
5
  export default async function withStatusLogs(messageAndOptions, callback) {
6
6
  if (typeof messageAndOptions !== "string" && messageAndOptions.disableLogs)
7
7
  return await callback();
@@ -1 +1 @@
1
- {"version":3,"file":"withStatusLogs.js","sourceRoot":"","sources":["../../src/utils/withStatusLogs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CACxC,iBAKC,EACD,QAA0B;IAE1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,WAAW;QACtE,OAAO,MAAM,QAAQ,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzJ,IAAI;QACA,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;;YAE1F,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEtF,OAAO,GAAG,CAAC;KACd;IAAC,OAAO,EAAE,EAAE;QACT,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;;YAErF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEpF,MAAM,EAAE,CAAC;KACZ;AACL,CAAC"}
1
+ {"version":3,"file":"withStatusLogs.js","sourceRoot":"","sources":["../../src/utils/withStatusLogs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CACxC,iBAKC,EACD,QAA0B;IAE1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,WAAW;QACtE,OAAO,MAAM,QAAQ,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzJ,IAAI;QACA,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;;YAE1F,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEtF,OAAO,GAAG,CAAC;KACd;IAAC,OAAO,EAAE,EAAE;QACT,IAAI,OAAO,iBAAiB,KAAK,QAAQ;YACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;;YAErF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEpF,MAAM,EAAE,CAAC;KACZ;AACL,CAAC"}
package/llama/addon.cpp CHANGED
@@ -3,6 +3,7 @@
3
3
  #include <algorithm>
4
4
  #include <sstream>
5
5
  #include <vector>
6
+ #include <unordered_map>
6
7
 
7
8
  #include "common.h"
8
9
  #include "common/grammar-parser.h"
@@ -1091,7 +1092,7 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
1091
1092
  return info.Env().Undefined();
1092
1093
  }
1093
1094
 
1094
- return Napi::Number::From(info.Env(), llama_get_state_size(ctx));
1095
+ return Napi::Number::From(info.Env(), llama_state_get_size(ctx));
1095
1096
  }
1096
1097
 
1097
1098
  Napi::Value PrintTimings(const Napi::CallbackInfo& info) {
@@ -1219,7 +1220,7 @@ class AddonContextLoadContextWorker : public Napi::AsyncWorker {
1219
1220
  }
1220
1221
  void OnOK() {
1221
1222
  if (context->contextLoaded) {
1222
- uint64_t contextMemorySize = llama_get_state_size(context->ctx);
1223
+ uint64_t contextMemorySize = llama_state_get_size(context->ctx);
1223
1224
  adjustNapiExternalMemoryAdd(Env(), contextMemorySize);
1224
1225
  context->loadedContextMemorySize = contextMemorySize;
1225
1226
  }
@@ -1334,6 +1335,8 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1334
1335
  float repeat_penalty_presence_penalty = 0.00f; // 0.0 = disabled
1335
1336
  float repeat_penalty_frequency_penalty = 0.00f; // 0.0 = disabled
1336
1337
  std::vector<llama_token> repeat_penalty_tokens;
1338
+ std::unordered_map<llama_token, float> tokenBiases;
1339
+ bool useTokenBiases = false;
1337
1340
  bool use_repeat_penalty = false;
1338
1341
 
1339
1342
  AddonContextSampleTokenWorker(const Napi::CallbackInfo& info, AddonContext* ctx)
@@ -1378,6 +1381,19 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1378
1381
  use_repeat_penalty = true;
1379
1382
  }
1380
1383
 
1384
+ if (options.Has("tokenBiasKeys") && options.Has("tokenBiasValues")) {
1385
+ Napi::Uint32Array tokenBiasKeys = options.Get("tokenBiasKeys").As<Napi::Uint32Array>();
1386
+ Napi::Float32Array tokenBiasValues = options.Get("tokenBiasValues").As<Napi::Float32Array>();
1387
+
1388
+ if (tokenBiasKeys.ElementLength() == tokenBiasValues.ElementLength()) {
1389
+ for (size_t i = 0; i < tokenBiasKeys.ElementLength(); i++) {
1390
+ tokenBiases[static_cast<llama_token>(tokenBiasKeys[i])] = tokenBiasValues[i];
1391
+ }
1392
+
1393
+ useTokenBiases = true;
1394
+ }
1395
+ }
1396
+
1381
1397
  if (options.Has("repeatPenaltyPresencePenalty")) {
1382
1398
  repeat_penalty_presence_penalty = options.Get("repeatPenaltyPresencePenalty").As<Napi::Number>().FloatValue();
1383
1399
  }
@@ -1426,18 +1442,33 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1426
1442
  // Select the best prediction.
1427
1443
  auto logits = llama_get_logits_ith(ctx->ctx, batchLogitIndex);
1428
1444
  auto n_vocab = llama_n_vocab(ctx->model->model);
1445
+ auto eos_token = llama_token_eos(ctx->model->model);
1429
1446
 
1430
1447
  std::vector<llama_token_data> candidates;
1431
1448
  candidates.reserve(n_vocab);
1432
1449
 
1433
1450
  for (llama_token token_id = 0; token_id < n_vocab; token_id++) {
1434
- candidates.emplace_back(llama_token_data { token_id, logits[token_id], 0.0f });
1451
+ auto logit = logits[token_id];
1452
+
1453
+ if (useTokenBiases) {
1454
+ bool hasTokenBias = tokenBiases.find(token_id) != tokenBiases.end();
1455
+ if (hasTokenBias) {
1456
+ auto logitBias = tokenBiases.at(token_id);
1457
+ if (logitBias == -INFINITY || logitBias < -INFINITY) {
1458
+ if (token_id != eos_token) {
1459
+ logit = -INFINITY;
1460
+ }
1461
+ } else {
1462
+ logit += logitBias;
1463
+ }
1464
+ }
1465
+ }
1466
+
1467
+ candidates.emplace_back(llama_token_data { token_id, logit, 0.0f });
1435
1468
  }
1436
1469
 
1437
1470
  llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false };
1438
1471
 
1439
- auto eos_token = llama_token_eos(ctx->model->model);
1440
-
1441
1472
  if (use_repeat_penalty && !repeat_penalty_tokens.empty()) {
1442
1473
  llama_sample_repetition_penalties(
1443
1474
  ctx->ctx,
@@ -1452,6 +1483,13 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1452
1483
 
1453
1484
  if (use_grammar && (grammar_evaluation_state)->grammar != nullptr) {
1454
1485
  llama_sample_grammar(ctx->ctx, &candidates_p, (grammar_evaluation_state)->grammar);
1486
+
1487
+ if ((candidates_p.size == 0 || candidates_p.data[0].logit == -INFINITY) && useTokenBiases) {
1488
+ // logit biases caused grammar sampling to fail, so sampling again without logit biases
1489
+ useTokenBiases = false;
1490
+ SampleToken();
1491
+ return;
1492
+ }
1455
1493
  }
1456
1494
 
1457
1495
  if (temperature <= 0) {
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b2608"
2
+ "release": "b2665"
3
3
  }
Binary file
@@ -89,3 +89,13 @@ This guide provides a brief overview. Check out the GBNF files in this directory
89
89
  ```
90
90
  ./main -m <model> --grammar-file grammars/some-grammar.gbnf -p 'Some prompt'
91
91
  ```
92
+
93
+ ## Troubleshooting
94
+
95
+ Grammars currently have performance gotchas (see https://github.com/ggerganov/llama.cpp/issues/4218).
96
+
97
+ ### Efficient optional repetitions
98
+
99
+ A common pattern is to allow repetitions of a pattern `x` up to N times.
100
+
101
+ While semantically correct, the syntax `x? x? x?.... x?` (with N repetitions) will result in extremely slow inference. Instead, you can write `(x (x (x ... (x)?...)?)?)?` (w/ N-deep nesting)
@@ -1,4 +1,4 @@
1
1
  {
2
- "tag": "b2608",
2
+ "tag": "b2665",
3
3
  "llamaCppGithubRepo": "ggerganov/llama.cpp"
4
4
  }
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"armv7l","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"armv7l","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"arm64","gpu":"metal","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"arm64","gpu":"metal","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
Binary file
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
Binary file
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
@@ -1 +1 @@
1
- {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2608"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2665"}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "3.0.0-beta.15",
3
+ "version": "3.0.0-beta.16",
4
4
  "description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Force a JSON schema on the model output on the generation level",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -117,7 +117,6 @@
117
117
  "@semantic-release/exec": "^6.0.3",
118
118
  "@types/async-retry": "^1.4.8",
119
119
  "@types/bytes": "^3.1.4",
120
- "@types/cli-progress": "^3.11.0",
121
120
  "@types/cross-spawn": "^6.0.2",
122
121
  "@types/fs-extra": "^11.0.4",
123
122
  "@types/node": "^20.11.29",
@@ -135,14 +134,13 @@
135
134
  "eslint-plugin-jsdoc": "^46.9.0",
136
135
  "eslint-plugin-n": "^16.3.1",
137
136
  "husky": "^8.0.3",
138
- "ipull": "^3.0.5",
139
137
  "rimraf": "^5.0.1",
140
138
  "semantic-release": "^22.0.8",
141
139
  "tslib": "^2.6.1",
142
140
  "typedoc": "^0.25.3",
143
- "typedoc-plugin-markdown": "^4.0.0-next.53",
144
- "typedoc-plugin-mdn-links": "^3.1.5",
145
- "typedoc-vitepress-theme": "^1.0.0-next.9",
141
+ "typedoc-plugin-markdown": "^4.0.0-next.55",
142
+ "typedoc-plugin-mdn-links": "^3.1.19",
143
+ "typedoc-vitepress-theme": "^1.0.0-next.10",
146
144
  "typescript": "^5.2.2",
147
145
  "vite-node": "^1.4.0",
148
146
  "vitepress": "1.0.0-rc.22",
@@ -155,21 +153,24 @@
155
153
  "bytes": "^3.1.2",
156
154
  "chalk": "^5.3.0",
157
155
  "chmodrp": "^1.0.2",
158
- "cli-progress": "^3.12.0",
159
156
  "cmake-js": "^7.3.0",
160
157
  "cross-env": "^7.0.3",
161
158
  "cross-spawn": "^7.0.3",
162
159
  "env-var": "^7.3.1",
163
160
  "fs-extra": "^11.2.0",
161
+ "ipull": "^3.0.11",
162
+ "is-unicode-supported": "^2.0.0",
164
163
  "lifecycle-utils": "^1.4.1",
165
164
  "log-symbols": "^5.1.0",
166
165
  "node-addon-api": "^7.0.0",
167
166
  "octokit": "^3.1.0",
168
167
  "ora": "^7.0.1",
168
+ "pretty-ms": "^9.0.0",
169
169
  "proper-lockfile": "^4.1.2",
170
170
  "semver": "^7.6.0",
171
171
  "simple-git": "^3.19.1",
172
172
  "slice-ansi": "^7.1.0",
173
+ "stdout-update": "^4.0.1",
173
174
  "strip-ansi": "^7.1.0",
174
175
  "uuid": "^9.0.0",
175
176
  "which": "^4.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"GgufInsights.js","sourceRoot":"","sources":["../../src/gguf/GgufInsights.ts"],"names":[],"mappings":"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"}