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

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 (115) hide show
  1. package/dist/ChatWrapper.d.ts +1 -15
  2. package/dist/ChatWrapper.js +19 -29
  3. package/dist/ChatWrapper.js.map +1 -1
  4. package/dist/bindings/AddonTypes.d.ts +3 -1
  5. package/dist/chatWrappers/FunctionaryChatWrapper.js +39 -40
  6. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  7. package/dist/chatWrappers/{LlamaChatWrapper.d.ts → Llama2ChatWrapper.d.ts} +1 -1
  8. package/dist/chatWrappers/{LlamaChatWrapper.js → Llama2ChatWrapper.js} +3 -3
  9. package/dist/chatWrappers/Llama2ChatWrapper.js.map +1 -0
  10. package/dist/chatWrappers/Llama3ChatWrapper.d.ts +31 -0
  11. package/dist/chatWrappers/Llama3ChatWrapper.js +129 -0
  12. package/dist/chatWrappers/Llama3ChatWrapper.js.map +1 -0
  13. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +2 -2
  14. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +6 -2
  15. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
  16. package/dist/chatWrappers/generic/TemplateChatWrapper.d.ts +2 -2
  17. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -1
  18. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.d.ts +42 -0
  19. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js +82 -0
  20. package/dist/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.js.map +1 -0
  21. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +1 -1
  22. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -1
  23. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +6 -4
  24. package/dist/chatWrappers/utils/resolveChatWrapper.js +23 -17
  25. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  26. package/dist/cli/commands/ChatCommand.d.ts +2 -0
  27. package/dist/cli/commands/ChatCommand.js +26 -9
  28. package/dist/cli/commands/ChatCommand.js.map +1 -1
  29. package/dist/cli/commands/CompleteCommand.d.ts +2 -0
  30. package/dist/cli/commands/CompleteCommand.js +24 -7
  31. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  32. package/dist/cli/commands/InfillCommand.d.ts +2 -0
  33. package/dist/cli/commands/InfillCommand.js +24 -7
  34. package/dist/cli/commands/InfillCommand.js.map +1 -1
  35. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +2 -0
  36. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +41 -10
  37. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  38. package/dist/cli/recommendedModels.js +69 -0
  39. package/dist/cli/recommendedModels.js.map +1 -1
  40. package/dist/cli/utils/printCommonInfoLines.js +4 -3
  41. package/dist/cli/utils/printCommonInfoLines.js.map +1 -1
  42. package/dist/cli/utils/resolveCommandGgufPath.js +77 -16
  43. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
  44. package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +2 -2
  45. package/dist/cli/utils/resolveModelRecommendationFileOptions.js +4 -1
  46. package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -1
  47. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +1 -1
  48. package/dist/evaluator/LlamaChat/LlamaChat.js +56 -21
  49. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  50. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +3 -1
  51. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -1
  52. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +1 -1
  53. package/dist/evaluator/LlamaCompletion.d.ts +2 -2
  54. package/dist/evaluator/LlamaCompletion.js +10 -12
  55. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  56. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +5 -5
  57. package/dist/evaluator/LlamaContext/LlamaContext.js +14 -7
  58. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  59. package/dist/evaluator/LlamaEmbeddingContext.js +1 -1
  60. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  61. package/dist/evaluator/LlamaModel.d.ts +14 -3
  62. package/dist/evaluator/LlamaModel.js +30 -4
  63. package/dist/evaluator/LlamaModel.js.map +1 -1
  64. package/dist/evaluator/TokenBias.d.ts +1 -1
  65. package/dist/evaluator/TokenBias.js +3 -3
  66. package/dist/evaluator/TokenBias.js.map +1 -1
  67. package/dist/gguf/types/GgufMetadataTypes.d.ts +4 -0
  68. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  69. package/dist/index.d.ts +6 -4
  70. package/dist/index.js +4 -2
  71. package/dist/index.js.map +1 -1
  72. package/dist/types.d.ts +21 -1
  73. package/dist/types.js.map +1 -1
  74. package/dist/utils/LlamaText.d.ts +2 -1
  75. package/dist/utils/LlamaText.js +20 -0
  76. package/dist/utils/LlamaText.js.map +1 -1
  77. package/dist/utils/StopGenerationDetector.js +19 -18
  78. package/dist/utils/StopGenerationDetector.js.map +1 -1
  79. package/dist/utils/TokenStreamRegulator.d.ts +4 -2
  80. package/dist/utils/TokenStreamRegulator.js +22 -4
  81. package/dist/utils/TokenStreamRegulator.js.map +1 -1
  82. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +15 -11
  83. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  84. package/dist/utils/utilTypes.d.ts +3 -0
  85. package/dist/utils/utilTypes.js +2 -0
  86. package/dist/utils/utilTypes.js.map +1 -0
  87. package/llama/addon.cpp +49 -7
  88. package/llama/binariesGithubRelease.json +1 -1
  89. package/llama/gitRelease.bundle +0 -0
  90. package/llama/llama.cpp.info.json +1 -1
  91. package/llamaBins/linux-arm64/_nlcBuildMetadata.json +1 -1
  92. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  93. package/llamaBins/linux-armv7l/_nlcBuildMetadata.json +1 -1
  94. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  95. package/llamaBins/linux-x64/_nlcBuildMetadata.json +1 -1
  96. package/llamaBins/linux-x64/llama-addon.node +0 -0
  97. package/llamaBins/linux-x64-cuda/_nlcBuildMetadata.json +1 -1
  98. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  99. package/llamaBins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -1
  100. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  101. package/llamaBins/mac-arm64-metal/_nlcBuildMetadata.json +1 -1
  102. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  103. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  104. package/llamaBins/mac-x64/_nlcBuildMetadata.json +1 -1
  105. package/llamaBins/mac-x64/llama-addon.node +0 -0
  106. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -1
  107. package/llamaBins/win-arm64/llama-addon.node +0 -0
  108. package/llamaBins/win-x64/_nlcBuildMetadata.json +1 -1
  109. package/llamaBins/win-x64/llama-addon.node +0 -0
  110. package/llamaBins/win-x64-cuda/_nlcBuildMetadata.json +1 -1
  111. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  112. package/llamaBins/win-x64-vulkan/_nlcBuildMetadata.json +1 -1
  113. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  114. package/package.json +2 -1
  115. package/dist/chatWrappers/LlamaChatWrapper.js.map +0 -1
@@ -15,17 +15,21 @@ export function getTypeScriptTypeStringForGbnfJsonSchema(schema) {
15
15
  .join(" | ");
16
16
  }
17
17
  else if (isGbnfJsonObjectSchema(schema)) {
18
- return Object.entries(schema.properties)
19
- .map(([propName, propSchema]) => {
20
- const escapedValue = JSON.stringify(propName) ?? "";
21
- const keyText = escapedValue.slice(1, -1) === propName ? propName : escapedValue;
22
- const valueType = getTypeScriptTypeStringForGbnfJsonSchema(propSchema);
23
- if (keyText === "" || valueType === "")
24
- return "";
25
- return keyText + ": " + valueType;
26
- })
27
- .filter((item) => item !== "")
28
- .join(", ");
18
+ return [
19
+ "{",
20
+ Object.entries(schema.properties)
21
+ .map(([propName, propSchema]) => {
22
+ const escapedValue = JSON.stringify(propName) ?? "";
23
+ const keyText = escapedValue.slice(1, -1) === propName ? propName : escapedValue;
24
+ const valueType = getTypeScriptTypeStringForGbnfJsonSchema(propSchema);
25
+ if (keyText === "" || valueType === "")
26
+ return "";
27
+ return keyText + ": " + valueType;
28
+ })
29
+ .filter((item) => item !== "")
30
+ .join(", "),
31
+ "}"
32
+ ].join("");
29
33
  }
30
34
  else if (isGbnfJsonArraySchema(schema)) {
31
35
  const valuesType = getTypeScriptTypeStringForGbnfJsonSchema(schema.items);
@@ -1 +1 @@
1
- {"version":3,"file":"getTypeScriptTypeStringForGbnfJsonSchema.js","sourceRoot":"","sources":["../../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EACa,qBAAqB,EAAE,iCAAiC,EAAE,qBAAqB,EAC/F,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EACtE,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,wCAAwC,CAAC,MAAsB;IAC3E,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK;aACtB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC,CAAC;QAE7E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;SAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KAC7C;SAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;QACrC,OAAO,MAAM,CAAC,IAAI;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;aAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;SAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE;QACvC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;YACjF,MAAM,SAAS,GAAG,wCAAwC,CAAC,UAAU,CAAC,CAAC;YAEvE,IAAI,OAAO,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE;gBAClC,OAAO,EAAE,CAAC;YAEd,OAAO,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QACtC,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;KACnB;SAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;QACtC,MAAM,UAAU,GAAG,wCAAwC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1E,IAAI,UAAU,KAAK,EAAE;YACjB,OAAO,IAAI,CAAC;QAEhB,OAAO,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC;KACnC;IAED,MAAM,KAAK,GAA4D,EAAE,CAAC;IAE1E,IAAI,iCAAiC,CAAC,MAAM,EAAE,QAAQ,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzB,IAAI,iCAAiC,CAAC,MAAM,EAAE,QAAQ,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzB,IAAI,iCAAiC,CAAC,MAAM,EAAE,SAAS,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzB,IAAI,iCAAiC,CAAC,MAAM,EAAE,SAAS,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE1B,IAAI,iCAAiC,CAAC,MAAM,EAAE,MAAM,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"getTypeScriptTypeStringForGbnfJsonSchema.js","sourceRoot":"","sources":["../../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type Writable<T> = {
2
+ -readonly [P in keyof T]: T[P];
3
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utilTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilTypes.js","sourceRoot":"","sources":["../../src/utils/utilTypes.ts"],"names":[],"mappings":""}
package/llama/addon.cpp CHANGED
@@ -108,12 +108,12 @@ static void adjustNapiExternalMemorySubtract(Napi::Env env, uint64_t size) {
108
108
  }
109
109
  }
110
110
 
111
- std::string addon_model_token_to_piece(const struct llama_model* model, llama_token token) {
111
+ std::string addon_model_token_to_piece(const struct llama_model* model, llama_token token, bool specialTokens) {
112
112
  std::vector<char> result(8, 0);
113
- const int n_tokens = llama_token_to_piece(model, token, result.data(), result.size());
113
+ const int n_tokens = llama_token_to_piece(model, token, result.data(), result.size(), specialTokens);
114
114
  if (n_tokens < 0) {
115
115
  result.resize(-n_tokens);
116
- int check = llama_token_to_piece(model, token, result.data(), result.size());
116
+ int check = llama_token_to_piece(model, token, result.data(), result.size(), specialTokens);
117
117
  GGML_ASSERT(check == -n_tokens);
118
118
  } else {
119
119
  result.resize(n_tokens);
@@ -378,13 +378,16 @@ class AddonModel : public Napi::ObjectWrap<AddonModel> {
378
378
  }
379
379
 
380
380
  Napi::Uint32Array tokens = info[0].As<Napi::Uint32Array>();
381
+ bool decodeSpecialTokens = info.Length() > 0
382
+ ? info[1].As<Napi::Boolean>().Value()
383
+ : false;
381
384
 
382
385
  // Create a stringstream for accumulating the decoded string.
383
386
  std::stringstream ss;
384
387
 
385
388
  // Decode each token and accumulate the result.
386
389
  for (size_t i = 0; i < tokens.ElementLength(); i++) {
387
- const std::string piece = addon_model_token_to_piece(model, (llama_token)tokens[i]);
390
+ const std::string piece = addon_model_token_to_piece(model, (llama_token)tokens[i], decodeSpecialTokens);
388
391
 
389
392
  if (piece.empty()) {
390
393
  continue;
@@ -534,6 +537,20 @@ class AddonModel : public Napi::ObjectWrap<AddonModel> {
534
537
 
535
538
  return Napi::Number::From(info.Env(), int32_t(tokenType));
536
539
  }
540
+ Napi::Value IsEogToken(const Napi::CallbackInfo& info) {
541
+ if (disposed) {
542
+ Napi::Error::New(info.Env(), "Model is disposed").ThrowAsJavaScriptException();
543
+ return info.Env().Undefined();
544
+ }
545
+
546
+ if (info[0].IsNumber() == false) {
547
+ return Napi::Boolean::New(info.Env(), false);
548
+ }
549
+
550
+ int token = info[0].As<Napi::Number>().Int32Value();
551
+
552
+ return Napi::Boolean::New(info.Env(), llama_token_is_eog(model, token));
553
+ }
537
554
  Napi::Value GetVocabularyType(const Napi::CallbackInfo& info) {
538
555
  if (disposed) {
539
556
  Napi::Error::New(info.Env(), "Model is disposed").ThrowAsJavaScriptException();
@@ -581,6 +598,7 @@ class AddonModel : public Napi::ObjectWrap<AddonModel> {
581
598
  InstanceMethod("eotToken", &AddonModel::EotToken),
582
599
  InstanceMethod("getTokenString", &AddonModel::GetTokenString),
583
600
  InstanceMethod("getTokenType", &AddonModel::GetTokenType),
601
+ InstanceMethod("isEogToken", &AddonModel::IsEogToken),
584
602
  InstanceMethod("getVocabularyType", &AddonModel::GetVocabularyType),
585
603
  InstanceMethod("shouldPrependBosToken", &AddonModel::ShouldPrependBosToken),
586
604
  InstanceMethod("getModelSize", &AddonModel::GetModelSize),
@@ -1054,6 +1072,30 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
1054
1072
  return info.Env().Undefined();
1055
1073
  }
1056
1074
 
1075
+ Napi::Value CanBeNextTokenForGrammarEvaluationState(const Napi::CallbackInfo& info) {
1076
+ AddonGrammarEvaluationState* grammar_evaluation_state =
1077
+ Napi::ObjectWrap<AddonGrammarEvaluationState>::Unwrap(info[0].As<Napi::Object>());
1078
+ llama_token tokenId = info[1].As<Napi::Number>().Int32Value();
1079
+
1080
+ if ((grammar_evaluation_state)->grammar != nullptr) {
1081
+ std::vector<llama_token_data> candidates;
1082
+ candidates.reserve(1);
1083
+ candidates.emplace_back(llama_token_data { tokenId, 1, 0.0f });
1084
+
1085
+ llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false };
1086
+
1087
+ llama_sample_grammar(ctx, &candidates_p, (grammar_evaluation_state)->grammar);
1088
+
1089
+ if (candidates_p.size == 0 || candidates_p.data[0].logit == -INFINITY) {
1090
+ return Napi::Boolean::New(info.Env(), false);
1091
+ }
1092
+
1093
+ return Napi::Boolean::New(info.Env(), true);
1094
+ }
1095
+
1096
+ return Napi::Boolean::New(info.Env(), false);
1097
+ }
1098
+
1057
1099
  Napi::Value GetEmbedding(const Napi::CallbackInfo& info) {
1058
1100
  if (disposed) {
1059
1101
  Napi::Error::New(info.Env(), "Context is disposed").ThrowAsJavaScriptException();
@@ -1118,6 +1160,7 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
1118
1160
  InstanceMethod("decodeBatch", &AddonContext::DecodeBatch),
1119
1161
  InstanceMethod("sampleToken", &AddonContext::SampleToken),
1120
1162
  InstanceMethod("acceptGrammarEvaluationStateToken", &AddonContext::AcceptGrammarEvaluationStateToken),
1163
+ InstanceMethod("canBeNextTokenForGrammarEvaluationState", &AddonContext::CanBeNextTokenForGrammarEvaluationState),
1121
1164
  InstanceMethod("getEmbedding", &AddonContext::GetEmbedding),
1122
1165
  InstanceMethod("getStateSize", &AddonContext::GetStateSize),
1123
1166
  InstanceMethod("printTimings", &AddonContext::PrintTimings),
@@ -1442,7 +1485,6 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1442
1485
  // Select the best prediction.
1443
1486
  auto logits = llama_get_logits_ith(ctx->ctx, batchLogitIndex);
1444
1487
  auto n_vocab = llama_n_vocab(ctx->model->model);
1445
- auto eos_token = llama_token_eos(ctx->model->model);
1446
1488
 
1447
1489
  std::vector<llama_token_data> candidates;
1448
1490
  candidates.reserve(n_vocab);
@@ -1455,7 +1497,7 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1455
1497
  if (hasTokenBias) {
1456
1498
  auto logitBias = tokenBiases.at(token_id);
1457
1499
  if (logitBias == -INFINITY || logitBias < -INFINITY) {
1458
- if (token_id != eos_token) {
1500
+ if (!llama_token_is_eog(ctx->model->model, token_id)) {
1459
1501
  logit = -INFINITY;
1460
1502
  }
1461
1503
  } else {
@@ -1513,7 +1555,7 @@ class AddonContextSampleTokenWorker : public Napi::AsyncWorker {
1513
1555
  new_token_id = llama_sample_token(ctx->ctx, &candidates_p);
1514
1556
  }
1515
1557
 
1516
- if (new_token_id != eos_token && use_grammar && (grammar_evaluation_state)->grammar != nullptr) {
1558
+ if (!llama_token_is_eog(ctx->model->model, new_token_id) && use_grammar && (grammar_evaluation_state)->grammar != nullptr) {
1517
1559
  llama_grammar_accept_token(ctx->ctx, (grammar_evaluation_state)->grammar, new_token_id);
1518
1560
  }
1519
1561
 
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b2665"
2
+ "release": "b2717"
3
3
  }
Binary file
@@ -1,4 +1,4 @@
1
1
  {
2
- "tag": "b2665",
2
+ "tag": "b2717",
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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"armv7l","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"linux","platformInfo":{"name":"Ubuntu","version":"22.04"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"arm64","gpu":"metal","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"mac","platformInfo":{"name":"macOS","version":"21.6.0"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"arm64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":false,"llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"cuda","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
@@ -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":"b2665"}}}
1
+ {"buildOptions":{"customCmakeOptions":{},"progressLogs":true,"platform":"win","platformInfo":{"name":"Windows","version":"10.0.20348"},"arch":"x64","gpu":"vulkan","llamaCpp":{"repo":"ggerganov/llama.cpp","release":"b2717"}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "3.0.0-beta.16",
3
+ "version": "3.0.0-beta.17",
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",
@@ -157,6 +157,7 @@
157
157
  "cross-env": "^7.0.3",
158
158
  "cross-spawn": "^7.0.3",
159
159
  "env-var": "^7.3.1",
160
+ "filenamify": "^6.0.0",
160
161
  "fs-extra": "^11.2.0",
161
162
  "ipull": "^3.0.11",
162
163
  "is-unicode-supported": "^2.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"LlamaChatWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/LlamaChatWrapper.ts"],"names":[],"mappings":"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"}