node-llama-cpp 3.6.0 → 3.7.0

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 (84) hide show
  1. package/dist/ChatWrapper.d.ts +3 -5
  2. package/dist/ChatWrapper.js +20 -13
  3. package/dist/ChatWrapper.js.map +1 -1
  4. package/dist/bindings/AddonTypes.d.ts +1 -1
  5. package/dist/bindings/Llama.js +2 -0
  6. package/dist/bindings/Llama.js.map +1 -1
  7. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  8. package/dist/chatWrappers/DeepSeekChatWrapper.js +6 -6
  9. package/dist/chatWrappers/DeepSeekChatWrapper.js.map +1 -1
  10. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  11. package/dist/chatWrappers/FunctionaryChatWrapper.js +1 -1
  12. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  13. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  14. package/dist/chatWrappers/Llama2ChatWrapper.js.map +1 -1
  15. package/dist/chatWrappers/Llama3_1ChatWrapper.js +19 -9
  16. package/dist/chatWrappers/Llama3_1ChatWrapper.js.map +1 -1
  17. package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js +21 -10
  18. package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js.map +1 -1
  19. package/dist/chatWrappers/MistralChatWrapper.d.ts +2 -1
  20. package/dist/chatWrappers/MistralChatWrapper.js +39 -28
  21. package/dist/chatWrappers/MistralChatWrapper.js.map +1 -1
  22. package/dist/chatWrappers/QwenChatWrapper.d.ts +21 -0
  23. package/dist/chatWrappers/QwenChatWrapper.js +162 -0
  24. package/dist/chatWrappers/QwenChatWrapper.js.map +1 -0
  25. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +32 -3
  26. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +337 -126
  27. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
  28. package/dist/chatWrappers/generic/utils/UniqueIdGenerator.d.ts +7 -0
  29. package/dist/chatWrappers/generic/utils/UniqueIdGenerator.js +30 -0
  30. package/dist/chatWrappers/generic/utils/UniqueIdGenerator.js.map +1 -0
  31. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +5 -4
  32. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.d.ts +19 -0
  33. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js +446 -0
  34. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js.map +1 -0
  35. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.d.ts +2 -0
  36. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js +38 -0
  37. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js.map +1 -0
  38. package/dist/chatWrappers/generic/utils/getFirstValidResult.d.ts +6 -0
  39. package/dist/chatWrappers/generic/utils/getFirstValidResult.js +19 -0
  40. package/dist/chatWrappers/generic/utils/getFirstValidResult.js.map +1 -0
  41. package/dist/chatWrappers/generic/utils/squashChatHistoryItems.d.ts +2 -0
  42. package/dist/chatWrappers/generic/utils/squashChatHistoryItems.js +35 -0
  43. package/dist/chatWrappers/generic/utils/squashChatHistoryItems.js.map +1 -0
  44. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.d.ts +3 -0
  45. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js +25 -0
  46. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js.map +1 -1
  47. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +197 -30
  48. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -1
  49. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +5 -3
  50. package/dist/chatWrappers/utils/resolveChatWrapper.js +11 -5
  51. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  52. package/dist/cli/recommendedModels.js +13 -0
  53. package/dist/cli/recommendedModels.js.map +1 -1
  54. package/dist/evaluator/LlamaChat/LlamaChat.js +11 -2
  55. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  56. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +1 -8
  57. package/dist/evaluator/LlamaGrammar.js +3 -1
  58. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  59. package/dist/evaluator/LlamaModel/LlamaModel.d.ts +2 -0
  60. package/dist/evaluator/LlamaModel/LlamaModel.js +3 -0
  61. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -1
  62. package/dist/evaluator/LlamaRankingContext.js +1 -1
  63. package/dist/evaluator/LlamaRankingContext.js.map +1 -1
  64. package/dist/gguf/types/GgufMetadataTypes.d.ts +1 -1
  65. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  66. package/dist/index.d.ts +2 -1
  67. package/dist/index.js +2 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/dist/types.d.ts +8 -0
  71. package/dist/types.js.map +1 -1
  72. package/dist/utils/OpenAIFormat.d.ts +177 -0
  73. package/dist/utils/OpenAIFormat.js +488 -0
  74. package/dist/utils/OpenAIFormat.js.map +1 -0
  75. package/dist/utils/optionsMatrix.d.ts +58 -0
  76. package/dist/utils/optionsMatrix.js +97 -0
  77. package/dist/utils/optionsMatrix.js.map +1 -0
  78. package/llama/addon/AddonContext.cpp +11 -9
  79. package/llama/binariesGithubRelease.json +1 -1
  80. package/llama/gitRelease.bundle +0 -0
  81. package/llama/llama.cpp.info.json +1 -1
  82. package/package.json +47 -45
  83. package/templates/packed/electron-typescript-react.json +1 -1
  84. package/templates/packed/node-typescript.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionsMatrix.js","sourceRoot":"","sources":["../../src/utils/optionsMatrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,SAAS,CAAC,CAAC,aAAa,CAAsC,OAAiC;IACjG,MAAM,IAAI,GAAmB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAQ,EAA4B,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,CAAC;QAEb,IAAI,KAAK,GAAY,KAAK,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAE,CAAC;YAEjC,IAAI,OAAO,CAAC,CAAC,CAAE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC;oBACP,OAAO;gBAEX,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC;gBACd,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK;YACN,OAAO;IACf,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,SAAS,CACrB,OAAiC,EACjC,QAAgD;IAEhD,IAAI,UAAU,GAAuC,SAAS,CAAC;IAE/D,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACrB,UAAU,GAAG,MAAM,CAAC;YACpB,SAAS;QACb,CAAC;QAED,IAAI,CAAC;YACD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,UAAU,IAAI,IAAI;QAClB,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEhC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC"}
@@ -583,7 +583,7 @@ Napi::Value AddonContext::DisposeSequence(const Napi::CallbackInfo& info) {
583
583
 
584
584
  int32_t sequenceId = info[0].As<Napi::Number>().Int32Value();
585
585
 
586
- bool result = llama_kv_cache_seq_rm(ctx, sequenceId, -1, -1);
586
+ bool result = llama_kv_self_seq_rm(ctx, sequenceId, -1, -1);
587
587
 
588
588
  if (!result) {
589
589
  Napi::Error::New(info.Env(), "Failed to dispose sequence").ThrowAsJavaScriptException();
@@ -602,7 +602,7 @@ Napi::Value AddonContext::RemoveTokenCellsFromSequence(const Napi::CallbackInfo&
602
602
  int32_t startPos = info[1].As<Napi::Number>().Int32Value();
603
603
  int32_t endPos = info[2].As<Napi::Number>().Int32Value();
604
604
 
605
- bool result = llama_kv_cache_seq_rm(ctx, sequenceId, startPos, endPos);
605
+ bool result = llama_kv_self_seq_rm(ctx, sequenceId, startPos, endPos);
606
606
 
607
607
  return Napi::Boolean::New(info.Env(), result);
608
608
  }
@@ -617,7 +617,7 @@ Napi::Value AddonContext::ShiftSequenceTokenCells(const Napi::CallbackInfo& info
617
617
  int32_t endPos = info[2].As<Napi::Number>().Int32Value();
618
618
  int32_t shiftDelta = info[3].As<Napi::Number>().Int32Value();
619
619
 
620
- llama_kv_cache_seq_add(ctx, sequenceId, startPos, endPos, shiftDelta);
620
+ llama_kv_self_seq_add(ctx, sequenceId, startPos, endPos, shiftDelta);
621
621
 
622
622
  return info.Env().Undefined();
623
623
  }
@@ -639,6 +639,7 @@ Napi::Value AddonContext::GetEmbedding(const Napi::CallbackInfo& info) {
639
639
  }
640
640
 
641
641
  int32_t inputTokensLength = info[0].As<Napi::Number>().Int32Value();
642
+ int32_t maxVectorSize = (info.Length() > 1 && info[1].IsNumber()) ? info[1].As<Napi::Number>().Int32Value() : 0;
642
643
 
643
644
  if (inputTokensLength <= 0) {
644
645
  Napi::Error::New(info.Env(), "Invalid input tokens length").ThrowAsJavaScriptException();
@@ -650,15 +651,16 @@ Napi::Value AddonContext::GetEmbedding(const Napi::CallbackInfo& info) {
650
651
  const auto* embeddings = pooling_type == LLAMA_POOLING_TYPE_NONE ? NULL : llama_get_embeddings_seq(ctx, 0);
651
652
  if (embeddings == NULL) {
652
653
  embeddings = llama_get_embeddings_ith(ctx, inputTokensLength - 1);
654
+ }
653
655
 
654
- if (embeddings == NULL) {
655
- Napi::Error::New(info.Env(), std::string("Failed to get embeddings for token ") + std::to_string(inputTokensLength - 1)).ThrowAsJavaScriptException();
656
- return info.Env().Undefined();
657
- }
656
+ if (embeddings == NULL) {
657
+ Napi::Error::New(info.Env(), std::string("Failed to get embeddings for token ") + std::to_string(inputTokensLength - 1)).ThrowAsJavaScriptException();
658
+ return info.Env().Undefined();
658
659
  }
659
660
 
660
- Napi::Float64Array result = Napi::Float64Array::New(info.Env(), n_embd);
661
- for (size_t i = 0; i < n_embd; ++i) {
661
+ size_t resultSize = maxVectorSize == 0 ? n_embd : std::min(n_embd, maxVectorSize);
662
+ Napi::Float64Array result = Napi::Float64Array::New(info.Env(), resultSize);
663
+ for (size_t i = 0; i < resultSize; i++) {
662
664
  result[i] = embeddings[i];
663
665
  }
664
666
 
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b4753"
2
+ "release": "b4980"
3
3
  }
Binary file
@@ -1,4 +1,4 @@
1
1
  {
2
- "tag": "b4753",
2
+ "tag": "b4980",
3
3
  "llamaCppGithubRepo": "ggml-org/llama.cpp"
4
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "3.6.0",
3
+ "version": "3.7.0",
4
4
  "description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Enforce a JSON schema on the model output on the generation level",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
@@ -39,10 +39,10 @@
39
39
  }
40
40
  },
41
41
  "engines": {
42
- "node": ">=18.0.0"
42
+ "node": ">=20.0.0"
43
43
  },
44
44
  "scripts": {
45
- "prepare": "[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky",
45
+ "prepare": "node --experimental-require-module -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"",
46
46
  "postinstall": "node ./dist/cli/cli.js postinstall",
47
47
  "postversion": "vite-node scripts/postVersion.ts",
48
48
  "prebuild": "rimraf ./dist ./tsconfig.tsbuildinfo",
@@ -111,6 +111,8 @@
111
111
  "catai",
112
112
  "mistral",
113
113
  "deepseek",
114
+ "qwen",
115
+ "qwq",
114
116
  "typescript",
115
117
  "lora",
116
118
  "batching",
@@ -131,53 +133,53 @@
131
133
  },
132
134
  "homepage": "https://node-llama-cpp.withcat.ai",
133
135
  "devDependencies": {
134
- "@commitlint/cli": "^19.6.1",
135
- "@commitlint/config-conventional": "^19.6.0",
136
- "@eslint/compat": "^1.2.5",
137
- "@fontsource/inter": "^5.1.1",
138
- "@nolebase/vitepress-plugin-git-changelog": "^2.12.1",
139
- "@nolebase/vitepress-plugin-og-image": "^2.12.1",
136
+ "@commitlint/cli": "^19.8.0",
137
+ "@commitlint/config-conventional": "^19.8.0",
138
+ "@eslint/compat": "^1.2.7",
139
+ "@fontsource/inter": "^5.2.5",
140
+ "@nolebase/vitepress-plugin-git-changelog": "^2.15.1",
141
+ "@nolebase/vitepress-plugin-og-image": "^2.15.1",
140
142
  "@resvg/resvg-js": "^2.6.2",
141
- "@semantic-release/exec": "^6.0.3",
143
+ "@semantic-release/exec": "^7.0.3",
142
144
  "@semantic-release/github": "11.0.1",
143
145
  "@semantic-release/npm": "12.0.1",
144
- "@shikijs/vitepress-twoslash": "^2.2.0",
145
- "@stylistic/eslint-plugin": "^3.0.1",
146
+ "@shikijs/vitepress-twoslash": "^3.2.1",
147
+ "@stylistic/eslint-plugin": "^4.2.0",
146
148
  "@types/async-retry": "^1.4.9",
147
149
  "@types/bytes": "^3.1.5",
148
150
  "@types/cross-spawn": "^6.0.6",
149
151
  "@types/fs-extra": "^11.0.4",
150
- "@types/node": "^22.12.0",
152
+ "@types/node": "^22.13.11",
151
153
  "@types/proper-lockfile": "^4.1.4",
152
154
  "@types/semver": "^7.5.8",
153
155
  "@types/validate-npm-package-name": "^4.0.2",
154
156
  "@types/which": "^3.0.4",
155
157
  "@types/yargs": "^17.0.33",
156
- "@vitest/coverage-v8": "^3.0.4",
157
- "@vitest/ui": "^3.0.4",
158
- "electron": "^34.0.2",
159
- "eslint": "^9.19.0",
160
- "eslint-import-resolver-typescript": "^3.7.0",
158
+ "@vitest/coverage-v8": "^3.0.9",
159
+ "@vitest/ui": "^3.0.9",
160
+ "electron": "^35.0.3",
161
+ "eslint": "^9.23.0",
162
+ "eslint-import-resolver-typescript": "^4.2.2",
161
163
  "eslint-plugin-import": "^2.31.0",
162
- "eslint-plugin-jsdoc": "^50.6.3",
163
- "eslint-plugin-n": "^17.15.1",
164
+ "eslint-plugin-jsdoc": "^50.6.8",
165
+ "eslint-plugin-n": "^17.16.2",
164
166
  "feed": "^4.2.2",
165
167
  "husky": "^9.1.7",
166
168
  "rehype": "^13.0.2",
167
169
  "rimraf": "^6.0.1",
168
- "semantic-release": "^24.2.1",
170
+ "semantic-release": "^24.2.3",
169
171
  "sharp": "^0.33.5",
170
172
  "tslib": "^2.8.1",
171
- "typedoc": "^0.27.6",
172
- "typedoc-plugin-markdown": "^4.4.1",
173
- "typedoc-plugin-mdn-links": "^4.0.10",
173
+ "typedoc": "^0.28.1",
174
+ "typedoc-plugin-markdown": "^4.5.2",
175
+ "typedoc-plugin-mdn-links": "^5.0.1",
174
176
  "typedoc-vitepress-theme": "^1.1.2",
175
- "typescript": "^5.7.3",
176
- "typescript-eslint": "^8.22.0",
177
- "vite-node": "^3.0.4",
177
+ "typescript": "^5.8.2",
178
+ "typescript-eslint": "^8.27.0",
179
+ "vite-node": "^3.0.9",
178
180
  "vitepress": "^1.6.3",
179
- "vitest": "^3.0.4",
180
- "zx": "^8.3.1"
181
+ "vitest": "^3.0.9",
182
+ "zx": "^8.4.1"
181
183
  },
182
184
  "dependencies": {
183
185
  "@huggingface/jinja": "^0.3.3",
@@ -196,13 +198,13 @@
196
198
  "is-unicode-supported": "^2.1.0",
197
199
  "lifecycle-utils": "^2.0.0",
198
200
  "log-symbols": "^7.0.0",
199
- "nanoid": "^5.0.9",
200
- "node-addon-api": "^8.3.0",
201
- "octokit": "^4.1.0",
202
- "ora": "^8.1.1",
201
+ "nanoid": "^5.1.5",
202
+ "node-addon-api": "^8.3.1",
203
+ "octokit": "^4.1.2",
204
+ "ora": "^8.2.0",
203
205
  "pretty-ms": "^9.2.0",
204
206
  "proper-lockfile": "^4.1.2",
205
- "semver": "^7.7.0",
207
+ "semver": "^7.7.1",
206
208
  "simple-git": "^3.27.0",
207
209
  "slice-ansi": "^7.1.0",
208
210
  "stdout-update": "^4.0.1",
@@ -220,16 +222,16 @@
220
222
  }
221
223
  },
222
224
  "optionalDependencies": {
223
- "@node-llama-cpp/linux-arm64": "3.6.0",
224
- "@node-llama-cpp/linux-armv7l": "3.6.0",
225
- "@node-llama-cpp/linux-x64": "3.6.0",
226
- "@node-llama-cpp/linux-x64-cuda": "3.6.0",
227
- "@node-llama-cpp/linux-x64-vulkan": "3.6.0",
228
- "@node-llama-cpp/mac-arm64-metal": "3.6.0",
229
- "@node-llama-cpp/mac-x64": "3.6.0",
230
- "@node-llama-cpp/win-arm64": "3.6.0",
231
- "@node-llama-cpp/win-x64": "3.6.0",
232
- "@node-llama-cpp/win-x64-cuda": "3.6.0",
233
- "@node-llama-cpp/win-x64-vulkan": "3.6.0"
225
+ "@node-llama-cpp/linux-arm64": "3.7.0",
226
+ "@node-llama-cpp/linux-armv7l": "3.7.0",
227
+ "@node-llama-cpp/linux-x64": "3.7.0",
228
+ "@node-llama-cpp/linux-x64-cuda": "3.7.0",
229
+ "@node-llama-cpp/linux-x64-vulkan": "3.7.0",
230
+ "@node-llama-cpp/mac-arm64-metal": "3.7.0",
231
+ "@node-llama-cpp/mac-x64": "3.7.0",
232
+ "@node-llama-cpp/win-arm64": "3.7.0",
233
+ "@node-llama-cpp/win-x64": "3.7.0",
234
+ "@node-llama-cpp/win-x64-cuda": "3.7.0",
235
+ "@node-llama-cpp/win-x64-vulkan": "3.7.0"
234
236
  }
235
237
  }