node-llama-cpp 2.4.1 → 2.5.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 (97) hide show
  1. package/README.md +32 -2
  2. package/dist/ChatPromptWrapper.d.ts +1 -0
  3. package/dist/ChatPromptWrapper.js +6 -0
  4. package/dist/ChatPromptWrapper.js.map +1 -1
  5. package/dist/chatWrappers/ChatMLPromptWrapper.d.ts +1 -0
  6. package/dist/chatWrappers/ChatMLPromptWrapper.js +3 -0
  7. package/dist/chatWrappers/ChatMLPromptWrapper.js.map +1 -1
  8. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +19 -0
  9. package/dist/chatWrappers/FalconChatPromptWrapper.js +33 -0
  10. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +1 -0
  11. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +1 -0
  12. package/dist/chatWrappers/GeneralChatPromptWrapper.js +4 -1
  13. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +1 -1
  14. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +1 -0
  15. package/dist/chatWrappers/LlamaChatPromptWrapper.js +3 -0
  16. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +1 -1
  17. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +23 -0
  18. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +47 -0
  19. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +1 -0
  20. package/dist/cli/commands/ChatCommand.d.ts +1 -1
  21. package/dist/cli/commands/ChatCommand.js +4 -1
  22. package/dist/cli/commands/ChatCommand.js.map +1 -1
  23. package/dist/index.d.ts +3 -2
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/llamaEvaluator/LlamaChatSession.d.ts +5 -2
  27. package/dist/llamaEvaluator/LlamaChatSession.js +25 -2
  28. package/dist/llamaEvaluator/LlamaChatSession.js.map +1 -1
  29. package/dist/llamaEvaluator/LlamaContext.d.ts +2 -1
  30. package/dist/llamaEvaluator/LlamaContext.js +8 -4
  31. package/dist/llamaEvaluator/LlamaContext.js.map +1 -1
  32. package/dist/types.d.ts +4 -0
  33. package/dist/utils/compileLLamaCpp.js +2 -0
  34. package/dist/utils/compileLLamaCpp.js.map +1 -1
  35. package/dist/utils/getBin.js +20 -14
  36. package/dist/utils/getBin.js.map +1 -1
  37. package/llama/addon.cpp +2 -9
  38. package/llama/binariesGithubRelease.json +1 -1
  39. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  40. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  41. package/llamaBins/linux-ppc64le/llama-addon.node +0 -0
  42. package/llamaBins/linux-x64/llama-addon.node +0 -0
  43. package/llamaBins/{mac-arm64-18 → mac-arm64}/llama-addon.node +0 -0
  44. package/llamaBins/{mac-x64-20 → mac-x64}/llama-addon.node +0 -0
  45. package/llamaBins/win-x64/llama-addon.node +0 -0
  46. package/package.json +1 -1
  47. package/llamaBins/linux-arm64-16/llama-addon.node +0 -0
  48. package/llamaBins/linux-arm64-17/llama-addon.node +0 -0
  49. package/llamaBins/linux-arm64-18/llama-addon.node +0 -0
  50. package/llamaBins/linux-arm64-19/llama-addon.node +0 -0
  51. package/llamaBins/linux-arm64-20/llama-addon.node +0 -0
  52. package/llamaBins/linux-armv7l-16/llama-addon.node +0 -0
  53. package/llamaBins/linux-armv7l-17/llama-addon.node +0 -0
  54. package/llamaBins/linux-armv7l-18/llama-addon.node +0 -0
  55. package/llamaBins/linux-armv7l-19/llama-addon.node +0 -0
  56. package/llamaBins/linux-armv7l-20/llama-addon.node +0 -0
  57. package/llamaBins/linux-ppc64le-16/llama-addon.node +0 -0
  58. package/llamaBins/linux-ppc64le-17/llama-addon.node +0 -0
  59. package/llamaBins/linux-ppc64le-18/llama-addon.node +0 -0
  60. package/llamaBins/linux-ppc64le-19/llama-addon.node +0 -0
  61. package/llamaBins/linux-ppc64le-20/llama-addon.node +0 -0
  62. package/llamaBins/linux-x64-16/llama-addon.node +0 -0
  63. package/llamaBins/linux-x64-17/llama-addon.node +0 -0
  64. package/llamaBins/linux-x64-18/llama-addon.node +0 -0
  65. package/llamaBins/linux-x64-19/llama-addon.node +0 -0
  66. package/llamaBins/linux-x64-20/llama-addon.node +0 -0
  67. package/llamaBins/mac-arm64-16/llama-addon.node +0 -0
  68. package/llamaBins/mac-arm64-17/llama-addon.node +0 -0
  69. package/llamaBins/mac-arm64-18/ggml-metal.metal +0 -2353
  70. package/llamaBins/mac-arm64-19/ggml-metal.metal +0 -2353
  71. package/llamaBins/mac-arm64-19/llama-addon.node +0 -0
  72. package/llamaBins/mac-arm64-20/ggml-metal.metal +0 -2353
  73. package/llamaBins/mac-arm64-20/llama-addon.node +0 -0
  74. package/llamaBins/mac-x64-16/ggml-metal.metal +0 -2353
  75. package/llamaBins/mac-x64-16/llama-addon.node +0 -0
  76. package/llamaBins/mac-x64-17/ggml-metal.metal +0 -2353
  77. package/llamaBins/mac-x64-17/llama-addon.node +0 -0
  78. package/llamaBins/mac-x64-18/ggml-metal.metal +0 -2353
  79. package/llamaBins/mac-x64-18/llama-addon.node +0 -0
  80. package/llamaBins/mac-x64-19/ggml-metal.metal +0 -2353
  81. package/llamaBins/mac-x64-19/llama-addon.node +0 -0
  82. package/llamaBins/mac-x64-20/ggml-metal.metal +0 -2353
  83. package/llamaBins/win-x64-16/llama-addon.node +0 -0
  84. package/llamaBins/win-x64-17/llama-addon.exp +0 -0
  85. package/llamaBins/win-x64-17/llama-addon.lib +0 -0
  86. package/llamaBins/win-x64-17/llama-addon.node +0 -0
  87. package/llamaBins/win-x64-18/llama-addon.node +0 -0
  88. package/llamaBins/win-x64-19/llama-addon.exp +0 -0
  89. package/llamaBins/win-x64-19/llama-addon.lib +0 -0
  90. package/llamaBins/win-x64-19/llama-addon.node +0 -0
  91. package/llamaBins/win-x64-20/llama-addon.exp +0 -0
  92. package/llamaBins/win-x64-20/llama-addon.lib +0 -0
  93. package/llamaBins/win-x64-20/llama-addon.node +0 -0
  94. /package/llamaBins/{mac-arm64-16 → mac-arm64}/ggml-metal.metal +0 -0
  95. /package/llamaBins/{mac-arm64-17 → mac-x64}/ggml-metal.metal +0 -0
  96. /package/llamaBins/{win-x64-18 → win-x64}/llama-addon.exp +0 -0
  97. /package/llamaBins/{win-x64-18 → win-x64}/llama-addon.lib +0 -0
@@ -9,29 +9,25 @@ import { getUsedBinFlag } from "./usedBinFlag.js";
9
9
  import { getCompiledLlamaCppBinaryPath } from "./compileLLamaCpp.js";
10
10
  const require = createRequire(import.meta.url);
11
11
  export async function getPrebuildBinPath() {
12
- const majorNodeVersion = parseInt(process.version.slice("v".length));
13
- const supportedVersions = [majorNodeVersion, majorNodeVersion - 1];
14
- function createPath(platform, arch, nodeVersion) {
15
- return path.join(llamaBinsDirectory, `${platform}-${arch}-${nodeVersion}/llama-addon.node`);
12
+ function createPath(platform, arch) {
13
+ return path.join(llamaBinsDirectory, `${platform}-${arch}/llama-addon.node`);
16
14
  }
17
- async function resolvePath(platform, arch, nodeVersions) {
18
- for (const nodeVersion of nodeVersions) {
19
- const binPath = createPath(platform, arch, nodeVersion);
20
- if (await fs.pathExists(binPath))
21
- return binPath;
22
- }
15
+ async function resolvePath(platform, arch) {
16
+ const binPath = createPath(platform, arch);
17
+ if (await fs.pathExists(binPath))
18
+ return binPath;
23
19
  return null;
24
20
  }
25
21
  async function getPath() {
26
22
  switch (process.platform) {
27
23
  case "win32":
28
24
  case "cygwin":
29
- return resolvePath("win", process.arch, supportedVersions);
25
+ return resolvePath("win", process.arch);
30
26
  case "linux":
31
27
  case "android":
32
- return resolvePath("linux", process.arch, supportedVersions);
28
+ return resolvePath("linux", process.arch);
33
29
  case "darwin":
34
- return resolvePath("mac", process.arch, supportedVersions);
30
+ return resolvePath("mac", process.arch);
35
31
  }
36
32
  return null;
37
33
  }
@@ -45,7 +41,17 @@ export async function loadBin() {
45
41
  console.warn("Prebuild binaries not found, falling back to to locally built binaries");
46
42
  }
47
43
  else {
48
- return require(prebuildBinPath);
44
+ try {
45
+ return require(prebuildBinPath);
46
+ }
47
+ catch (err) {
48
+ console.error(`Failed to load prebuilt binary for platform "${process.platform}" "${process.arch}". Error:`, err);
49
+ console.info("Falling back to locally built binaries");
50
+ try {
51
+ delete require.cache[require.resolve(prebuildBinPath)];
52
+ }
53
+ catch (err) { }
54
+ }
49
55
  }
50
56
  }
51
57
  const modulePath = await getCompiledLlamaCppBinaryPath();
@@ -1 +1 @@
1
- {"version":3,"file":"getBin.js","sourceRoot":"","sources":["../../src/utils/getBin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getBin.js","sourceRoot":"","sources":["../../src/utils/getBin.ts"],"names":[],"mappings":"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"}
package/llama/addon.cpp CHANGED
@@ -193,16 +193,9 @@ class LLAMAContext : public Napi::ObjectWrap<LLAMAContext> {
193
193
  Napi::Value Encode(const Napi::CallbackInfo& info) {
194
194
  std::string text = info[0].As<Napi::String>().Utf8Value();
195
195
 
196
- std::vector<llama_token> tokens(text.size());
197
- int n = llama_tokenize(ctx, text.data(), tokens.data(), text.size(), false);
196
+ std::vector<llama_token> tokens = llama_tokenize(ctx, text, false);
198
197
 
199
- if (n < 0) {
200
- Napi::Error::New(info.Env(), "String expected").ThrowAsJavaScriptException();
201
- return info.Env().Undefined();
202
- }
203
- tokens.resize(n);
204
-
205
- Napi::Uint32Array result = Napi::Uint32Array::New(info.Env(), n);
198
+ Napi::Uint32Array result = Napi::Uint32Array::New(info.Env(), tokens.size());
206
199
  for (size_t i = 0; i < tokens.size(); ++i) { result[i] = static_cast<uint32_t>(tokens[i]); }
207
200
 
208
201
  return result;
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b1247"
2
+ "release": "b1273"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "description": "Run AI models locally on your machine with node.js bindings for llama.cpp",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",