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

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 (330) 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/{utils/getBin.d.ts → bindings/AddonTypes.d.ts} +11 -4
  6. package/dist/bindings/AddonTypes.js +2 -0
  7. package/dist/bindings/AddonTypes.js.map +1 -0
  8. package/dist/bindings/Llama.d.ts +23 -0
  9. package/dist/bindings/Llama.js +225 -0
  10. package/dist/bindings/Llama.js.map +1 -0
  11. package/dist/bindings/getLlama.d.ts +86 -0
  12. package/dist/bindings/getLlama.js +225 -0
  13. package/dist/bindings/getLlama.js.map +1 -0
  14. package/dist/bindings/types.d.ts +33 -0
  15. package/dist/bindings/types.js +30 -0
  16. package/dist/bindings/types.js.map +1 -0
  17. package/dist/bindings/utils/NoBinaryFoundError.d.ts +2 -0
  18. package/dist/bindings/utils/NoBinaryFoundError.js +7 -0
  19. package/dist/bindings/utils/NoBinaryFoundError.js.map +1 -0
  20. package/dist/{utils → bindings/utils}/binariesGithubRelease.js +1 -1
  21. package/dist/bindings/utils/binariesGithubRelease.js.map +1 -0
  22. package/dist/bindings/utils/clearAllLocalBuilds.d.ts +1 -0
  23. package/dist/bindings/utils/clearAllLocalBuilds.js +47 -0
  24. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -0
  25. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +11 -0
  26. package/dist/bindings/utils/cloneLlamaCppRepo.js +155 -0
  27. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -0
  28. package/dist/bindings/utils/compileLLamaCpp.d.ts +12 -0
  29. package/dist/bindings/utils/compileLLamaCpp.js +157 -0
  30. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -0
  31. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.d.ts +5 -0
  32. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +85 -0
  33. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -0
  34. package/dist/bindings/utils/getCanUsePrebuiltBinaries.d.ts +1 -0
  35. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js +8 -0
  36. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js.map +1 -0
  37. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.d.ts +2 -0
  38. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js +21 -0
  39. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -0
  40. package/dist/bindings/utils/getPlatform.d.ts +2 -0
  41. package/dist/bindings/utils/getPlatform.js +15 -0
  42. package/dist/bindings/utils/getPlatform.js.map +1 -0
  43. package/dist/bindings/utils/lastBuildInfo.d.ts +6 -0
  44. package/dist/bindings/utils/lastBuildInfo.js +17 -0
  45. package/dist/bindings/utils/lastBuildInfo.js.map +1 -0
  46. package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +2 -0
  47. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +28 -0
  48. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -0
  49. package/dist/bindings/utils/resolveCustomCmakeOptions.d.ts +1 -0
  50. package/dist/bindings/utils/resolveCustomCmakeOptions.js +43 -0
  51. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -0
  52. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
  53. package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
  54. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
  55. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +18 -0
  56. package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
  57. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
  58. package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
  59. package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
  60. package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
  61. package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
  62. package/dist/chatWrappers/FalconChatWrapper.js +104 -0
  63. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
  64. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
  65. package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
  66. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
  67. package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
  68. package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
  69. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
  70. package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
  71. package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
  72. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
  73. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +5 -5
  74. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +28 -17
  75. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  76. package/dist/cli/cli.js +4 -0
  77. package/dist/cli/cli.js.map +1 -1
  78. package/dist/cli/commands/BuildCommand.d.ts +2 -1
  79. package/dist/cli/commands/BuildCommand.js +50 -10
  80. package/dist/cli/commands/BuildCommand.js.map +1 -1
  81. package/dist/cli/commands/ChatCommand.d.ts +10 -3
  82. package/dist/cli/commands/ChatCommand.js +152 -42
  83. package/dist/cli/commands/ChatCommand.js.map +1 -1
  84. package/dist/cli/commands/ClearCommand.js +4 -6
  85. package/dist/cli/commands/ClearCommand.js.map +1 -1
  86. package/dist/cli/commands/DebugCommand.d.ts +7 -0
  87. package/dist/cli/commands/DebugCommand.js +59 -0
  88. package/dist/cli/commands/DebugCommand.js.map +1 -0
  89. package/dist/cli/commands/DownloadCommand.d.ts +2 -1
  90. package/dist/cli/commands/DownloadCommand.js +47 -40
  91. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  92. package/dist/cli/commands/OnPostInstallCommand.js +7 -10
  93. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  94. package/dist/config.d.ts +10 -3
  95. package/dist/config.js +18 -7
  96. package/dist/config.js.map +1 -1
  97. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +185 -0
  98. package/dist/evaluator/LlamaChat/LlamaChat.js +705 -0
  99. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -0
  100. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +22 -0
  101. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +121 -0
  102. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  103. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
  104. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +135 -0
  105. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  106. package/dist/{llamaEvaluator → evaluator/LlamaChatSession}/LlamaChatSession.d.ts +59 -25
  107. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +219 -0
  108. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  109. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
  110. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  111. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  112. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.d.ts +20 -23
  113. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.js +71 -105
  114. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
  115. package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.d.ts +6 -14
  116. package/dist/evaluator/LlamaContext/types.js.map +1 -0
  117. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
  118. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
  119. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
  120. package/dist/evaluator/LlamaEmbeddingContext.d.ts +37 -0
  121. package/dist/evaluator/LlamaEmbeddingContext.js +78 -0
  122. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
  123. package/dist/evaluator/LlamaGrammar.d.ts +30 -0
  124. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +14 -18
  125. package/dist/evaluator/LlamaGrammar.js.map +1 -0
  126. package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.js +4 -4
  127. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
  128. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
  129. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +4 -2
  130. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
  131. package/dist/{llamaEvaluator → evaluator}/LlamaModel.d.ts +14 -5
  132. package/dist/{llamaEvaluator → evaluator}/LlamaModel.js +18 -9
  133. package/dist/evaluator/LlamaModel.js.map +1 -0
  134. package/dist/index.d.ts +27 -16
  135. package/dist/index.js +26 -14
  136. package/dist/index.js.map +1 -1
  137. package/dist/state.d.ts +2 -0
  138. package/dist/state.js +7 -0
  139. package/dist/state.js.map +1 -1
  140. package/dist/types.d.ts +41 -3
  141. package/dist/types.js +5 -1
  142. package/dist/types.js.map +1 -1
  143. package/dist/utils/LlamaText.d.ts +42 -0
  144. package/dist/utils/LlamaText.js +207 -0
  145. package/dist/utils/LlamaText.js.map +1 -0
  146. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  147. package/dist/utils/StopGenerationDetector.js +205 -0
  148. package/dist/utils/StopGenerationDetector.js.map +1 -0
  149. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  150. package/dist/utils/TokenStreamRegulator.js +96 -0
  151. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  152. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  153. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  154. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  155. package/dist/utils/cmake.js +16 -11
  156. package/dist/utils/cmake.js.map +1 -1
  157. package/dist/utils/compareTokens.d.ts +2 -0
  158. package/dist/utils/compareTokens.js +4 -0
  159. package/dist/utils/compareTokens.js.map +1 -0
  160. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  161. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  162. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  163. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  164. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  165. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  166. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  167. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  168. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  169. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  170. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  171. package/dist/utils/gbnfJson/types.d.ts +1 -1
  172. package/dist/utils/gbnfJson/types.js.map +1 -1
  173. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  174. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  175. package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
  176. package/dist/utils/getConsoleLogPrefix.js +9 -0
  177. package/dist/utils/getConsoleLogPrefix.js.map +1 -0
  178. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  179. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  180. package/dist/utils/getGrammarsFolder.d.ts +2 -1
  181. package/dist/utils/getGrammarsFolder.js +8 -7
  182. package/dist/utils/getGrammarsFolder.js.map +1 -1
  183. package/dist/utils/getModuleVersion.d.ts +1 -0
  184. package/dist/utils/getModuleVersion.js +13 -0
  185. package/dist/utils/getModuleVersion.js.map +1 -0
  186. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  187. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  188. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  189. package/dist/utils/gitReleaseBundles.js +6 -5
  190. package/dist/utils/gitReleaseBundles.js.map +1 -1
  191. package/dist/utils/hashString.d.ts +1 -0
  192. package/dist/utils/hashString.js +8 -0
  193. package/dist/utils/hashString.js.map +1 -0
  194. package/dist/utils/isLockfileActive.d.ts +4 -0
  195. package/dist/utils/isLockfileActive.js +12 -0
  196. package/dist/utils/isLockfileActive.js.map +1 -0
  197. package/dist/utils/parseModelTypeDescription.d.ts +1 -1
  198. package/dist/utils/prettyPrintObject.d.ts +1 -0
  199. package/dist/utils/prettyPrintObject.js +40 -0
  200. package/dist/utils/prettyPrintObject.js.map +1 -0
  201. package/dist/utils/removeNullFields.d.ts +1 -0
  202. package/dist/utils/removeNullFields.js +8 -0
  203. package/dist/utils/removeNullFields.js.map +1 -1
  204. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  205. package/dist/utils/resolveChatWrapper.js +16 -0
  206. package/dist/utils/resolveChatWrapper.js.map +1 -0
  207. package/dist/utils/resolveGithubRelease.d.ts +2 -0
  208. package/dist/utils/resolveGithubRelease.js +36 -0
  209. package/dist/utils/resolveGithubRelease.js.map +1 -0
  210. package/dist/utils/spawnCommand.d.ts +1 -1
  211. package/dist/utils/spawnCommand.js +4 -2
  212. package/dist/utils/spawnCommand.js.map +1 -1
  213. package/dist/utils/tokenizeInput.d.ts +3 -0
  214. package/dist/utils/tokenizeInput.js +9 -0
  215. package/dist/utils/tokenizeInput.js.map +1 -0
  216. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  217. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  218. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  219. package/dist/utils/waitForLockfileRelease.d.ts +5 -0
  220. package/dist/utils/waitForLockfileRelease.js +20 -0
  221. package/dist/utils/waitForLockfileRelease.js.map +1 -0
  222. package/dist/utils/withLockfile.d.ts +7 -0
  223. package/dist/utils/withLockfile.js +44 -0
  224. package/dist/utils/withLockfile.js.map +1 -0
  225. package/dist/utils/withOra.js +11 -1
  226. package/dist/utils/withOra.js.map +1 -1
  227. package/dist/utils/withStatusLogs.d.ts +2 -1
  228. package/dist/utils/withStatusLogs.js +11 -8
  229. package/dist/utils/withStatusLogs.js.map +1 -1
  230. package/llama/.clang-format +1 -2
  231. package/llama/CMakeLists.txt +87 -2
  232. package/llama/addon.cpp +256 -22
  233. package/llama/binariesGithubRelease.json +1 -1
  234. package/llama/gitRelease.bundle +0 -0
  235. package/llama/gpuInfo/cuda-gpu-info.cu +99 -0
  236. package/llama/gpuInfo/cuda-gpu-info.h +7 -0
  237. package/llama/gpuInfo/metal-gpu-info.h +5 -0
  238. package/llama/gpuInfo/metal-gpu-info.mm +17 -0
  239. package/llama/llama.cpp.info.json +4 -0
  240. package/llamaBins/linux-arm64/.buildMetadata.json +1 -0
  241. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  242. package/llamaBins/linux-armv7l/.buildMetadata.json +1 -0
  243. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  244. package/llamaBins/linux-x64/.buildMetadata.json +1 -0
  245. package/llamaBins/linux-x64/llama-addon.node +0 -0
  246. package/llamaBins/linux-x64-cuda/.buildMetadata.json +1 -0
  247. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  248. package/llamaBins/mac-arm64-metal/.buildMetadata.json +1 -0
  249. package/llamaBins/mac-arm64-metal/ggml-metal.metal +6119 -0
  250. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  251. package/llamaBins/mac-x64/.buildMetadata.json +1 -0
  252. package/llamaBins/mac-x64/llama-addon.node +0 -0
  253. package/llamaBins/win-x64/.buildMetadata.json +1 -0
  254. package/llamaBins/win-x64/llama-addon.exp +0 -0
  255. package/llamaBins/win-x64/llama-addon.node +0 -0
  256. package/llamaBins/win-x64-cuda/.buildMetadata.json +1 -0
  257. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  258. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  259. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  260. package/package.json +37 -15
  261. package/dist/ChatPromptWrapper.d.ts +0 -11
  262. package/dist/ChatPromptWrapper.js +0 -20
  263. package/dist/ChatPromptWrapper.js.map +0 -1
  264. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  265. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  266. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  267. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  268. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  269. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  270. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  271. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  272. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  273. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  274. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  275. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  276. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  277. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  278. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  279. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -15
  280. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -39
  281. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  282. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -19
  283. package/dist/llamaEvaluator/LlamaBins.js +0 -5
  284. package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
  285. package/dist/llamaEvaluator/LlamaChatSession.js +0 -290
  286. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  287. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +0 -1
  288. package/dist/llamaEvaluator/LlamaContext/types.js.map +0 -1
  289. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  290. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  291. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  292. package/dist/llamaEvaluator/LlamaGrammar.d.ts +0 -32
  293. package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
  294. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
  295. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
  296. package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
  297. package/dist/utils/binariesGithubRelease.js.map +0 -1
  298. package/dist/utils/clearLlamaBuild.d.ts +0 -1
  299. package/dist/utils/clearLlamaBuild.js +0 -12
  300. package/dist/utils/clearLlamaBuild.js.map +0 -1
  301. package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
  302. package/dist/utils/cloneLlamaCppRepo.js +0 -102
  303. package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
  304. package/dist/utils/compileLLamaCpp.d.ts +0 -8
  305. package/dist/utils/compileLLamaCpp.js +0 -127
  306. package/dist/utils/compileLLamaCpp.js.map +0 -1
  307. package/dist/utils/getBin.js +0 -78
  308. package/dist/utils/getBin.js.map +0 -1
  309. package/dist/utils/getReleaseInfo.d.ts +0 -7
  310. package/dist/utils/getReleaseInfo.js +0 -30
  311. package/dist/utils/getReleaseInfo.js.map +0 -1
  312. package/dist/utils/getTextCompletion.d.ts +0 -3
  313. package/dist/utils/getTextCompletion.js +0 -12
  314. package/dist/utils/getTextCompletion.js.map +0 -1
  315. package/dist/utils/usedBinFlag.d.ts +0 -6
  316. package/dist/utils/usedBinFlag.js +0 -15
  317. package/dist/utils/usedBinFlag.js.map +0 -1
  318. package/llama/usedBin.json +0 -3
  319. package/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
  320. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  321. package/llamaBins/mac-x64/ggml-metal.metal +0 -2929
  322. /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
  323. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.js +0 -0
  324. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +0 -0
  325. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +0 -0
  326. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +0 -0
  327. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +0 -0
  328. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -0
  329. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +0 -0
  330. /package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.d.ts +0 -0
package/README.md CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
  </div>
17
17
 
18
+ ✨ New! [Try the beta of version `3.0.0`](https://github.com/withcatai/node-llama-cpp/pull/105) ✨ (included: function calling, automatic chat wrapper detection, and more)
19
+
18
20
  ## Features
19
21
  * Run a text generation model locally on your machine
20
22
  * Metal and CUDA support
@@ -0,0 +1,49 @@
1
+ import { ChatHistoryItem, ChatModelFunctions, ChatModelResponse } from "./types.js";
2
+ import { LlamaText } from "./utils/LlamaText.js";
3
+ export type ChatWrapperSettings = {
4
+ readonly functions: {
5
+ readonly call: {
6
+ readonly optionalPrefixSpace: boolean;
7
+ readonly prefix: string;
8
+ readonly paramsPrefix: string;
9
+ readonly suffix: string;
10
+ };
11
+ readonly result: {
12
+ readonly prefix: string;
13
+ readonly suffix: string;
14
+ };
15
+ };
16
+ };
17
+ export declare abstract class ChatWrapper {
18
+ abstract readonly wrapperName: string;
19
+ readonly settings: ChatWrapperSettings;
20
+ generateContextText(history: readonly ChatHistoryItem[], { availableFunctions, documentFunctionParams }?: {
21
+ availableFunctions?: ChatModelFunctions;
22
+ documentFunctionParams?: boolean;
23
+ }): {
24
+ contextText: LlamaText;
25
+ stopGenerationTriggers: LlamaText[];
26
+ ignoreStartText?: LlamaText[];
27
+ functionCall?: {
28
+ initiallyEngaged: boolean;
29
+ disengageInitiallyEngaged: LlamaText[];
30
+ };
31
+ };
32
+ generateFunctionCallAndResult(name: string, params: any, result: any): string;
33
+ generateFunctionCall(name: string, params: any): string;
34
+ generateFunctionCallResult(functionName: string, functionParams: any, result: any): string;
35
+ generateModelResponseText(modelResponse: ChatModelResponse["response"]): string;
36
+ generateAvailableFunctionsSystemText(availableFunctions: ChatModelFunctions, { documentParams }: {
37
+ documentParams?: boolean;
38
+ }): string;
39
+ addAvailableFunctionsSystemMessageToHistory(history: readonly ChatHistoryItem[], availableFunctions?: ChatModelFunctions, { documentParams }?: {
40
+ documentParams?: boolean;
41
+ }): readonly ChatHistoryItem[];
42
+ /**
43
+ * Functions that should be made available as part of the function calling grammar and are handled by the chat wrapper
44
+ * for grammar purposes only
45
+ */
46
+ getInternalBuiltinFunctions({ initialFunctionCallEngaged }: {
47
+ initialFunctionCallEngaged: boolean;
48
+ }): ChatModelFunctions;
49
+ }
@@ -0,0 +1,120 @@
1
+ import { LlamaText } from "./utils/LlamaText.js";
2
+ import { getTypeScriptTypeStringForGbnfJsonSchema } from "./utils/getTypeScriptTypeStringForGbnfJsonSchema.js";
3
+ export class ChatWrapper {
4
+ settings = {
5
+ functions: {
6
+ call: {
7
+ optionalPrefixSpace: true,
8
+ prefix: "[[call: ",
9
+ paramsPrefix: "(",
10
+ suffix: ")]]"
11
+ },
12
+ result: {
13
+ prefix: " [[result: ",
14
+ suffix: "]]"
15
+ }
16
+ }
17
+ };
18
+ generateContextText(history, { availableFunctions, documentFunctionParams } = {}) {
19
+ const historyWithFunctions = this.addAvailableFunctionsSystemMessageToHistory(history, availableFunctions, {
20
+ documentParams: documentFunctionParams
21
+ });
22
+ const texts = historyWithFunctions
23
+ .map((item) => {
24
+ if (item.type === "system")
25
+ return LlamaText `system: ${item.text}`;
26
+ else if (item.type === "user")
27
+ return LlamaText `user: ${item.text}`;
28
+ else if (item.type === "model")
29
+ return LlamaText `model: ${this.generateModelResponseText(item.response)}`;
30
+ return item;
31
+ });
32
+ return {
33
+ contextText: LlamaText(texts).joinValues("\n"),
34
+ stopGenerationTriggers: []
35
+ };
36
+ }
37
+ generateFunctionCallAndResult(name, params, result) {
38
+ return this.generateFunctionCall(name, params) + this.generateFunctionCallResult(name, params, result);
39
+ }
40
+ generateFunctionCall(name, params) {
41
+ return this.settings.functions.call.prefix +
42
+ name +
43
+ this.settings.functions.call.paramsPrefix +
44
+ (params === undefined
45
+ ? ""
46
+ : JSON.stringify(params)) +
47
+ this.settings.functions.call.suffix;
48
+ }
49
+ generateFunctionCallResult(functionName, functionParams, result) {
50
+ const resolveParameters = (text) => text.replaceAll("{{functionName}}", functionName)
51
+ .replaceAll("{{functionParams}}", functionParams === undefined ? "" : JSON.stringify(functionParams));
52
+ return resolveParameters(this.settings.functions.result.prefix) +
53
+ (result === undefined
54
+ ? "void"
55
+ : JSON.stringify(result)) +
56
+ resolveParameters(this.settings.functions.result.suffix);
57
+ }
58
+ generateModelResponseText(modelResponse) {
59
+ return modelResponse
60
+ .map((item) => {
61
+ if (typeof item === "string")
62
+ return item;
63
+ return item.raw ?? this.generateFunctionCallAndResult(item.name, item.params, item.result);
64
+ })
65
+ .join("\n");
66
+ }
67
+ generateAvailableFunctionsSystemText(availableFunctions, { documentParams = true }) {
68
+ const availableFunctionNames = Object.keys(availableFunctions ?? {});
69
+ if (availableFunctionNames.length === 0)
70
+ return "";
71
+ return "The assistant calls the provided functions as needed to retrieve information instead of relying on things it already knows.\n" +
72
+ "Provided functions:\n```\n" +
73
+ availableFunctionNames
74
+ .map((functionName) => {
75
+ const functionDefinition = availableFunctions[functionName];
76
+ let res = "";
77
+ if (functionDefinition?.description != null && functionDefinition.description.trim() !== "")
78
+ res += "// " + functionDefinition.description.split("\n").join("\n// ") + "\n";
79
+ res += "function " + functionName + "(";
80
+ if (documentParams && functionDefinition?.params != null)
81
+ res += "params: " + getTypeScriptTypeStringForGbnfJsonSchema(functionDefinition.params);
82
+ else if (!documentParams && functionDefinition?.params != null)
83
+ res += "params";
84
+ res += ");";
85
+ return res;
86
+ })
87
+ .join("\n\n") +
88
+ "\n```\n\n" +
89
+ "Calling any of the provided functions can be done like this:\n" +
90
+ this.settings.functions.call.prefix.trimStart() +
91
+ "functionName" +
92
+ this.settings.functions.call.paramsPrefix +
93
+ '{ someKey: "someValue" }' +
94
+ this.settings.functions.call.suffix + "\n\n" +
95
+ "After calling a function the result will appear afterwards and be visible only to the assistant, so the assistant has to tell the user about it outside of the function call context.\n" +
96
+ "The assistant calls the functions in advance before telling the user about the result";
97
+ }
98
+ addAvailableFunctionsSystemMessageToHistory(history, availableFunctions, { documentParams = true } = {}) {
99
+ const availableFunctionNames = Object.keys(availableFunctions ?? {});
100
+ if (availableFunctions == null || availableFunctionNames.length === 0)
101
+ return history;
102
+ const res = history.slice();
103
+ const firstNonSystemMessageIndex = res.findIndex((item) => item.type !== "system");
104
+ res.splice(Math.max(0, firstNonSystemMessageIndex), 0, {
105
+ type: "system",
106
+ text: this.generateAvailableFunctionsSystemText(availableFunctions, { documentParams })
107
+ });
108
+ return res;
109
+ }
110
+ /**
111
+ * Functions that should be made available as part of the function calling grammar and are handled by the chat wrapper
112
+ * for grammar purposes only
113
+ */
114
+ getInternalBuiltinFunctions({ initialFunctionCallEngaged }) {
115
+ if (initialFunctionCallEngaged)
116
+ return {};
117
+ return {};
118
+ }
119
+ }
120
+ //# sourceMappingURL=ChatWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatWrapper.js","sourceRoot":"","sources":["../src/ChatWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAC,wCAAwC,EAAC,MAAM,qDAAqD,CAAC;AAiB7G,MAAM,OAAgB,WAAW;IAGb,QAAQ,GAAwB;QAC5C,SAAS,EAAE;YACP,IAAI,EAAE;gBACF,mBAAmB,EAAE,IAAI;gBACzB,MAAM,EAAE,UAAU;gBAClB,YAAY,EAAE,GAAG;gBACjB,MAAM,EAAE,KAAK;aAChB;YACD,MAAM,EAAE;gBACJ,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,IAAI;aACf;SACJ;KACJ,CAAC;IAEK,mBAAmB,CAAC,OAAmC,EAAE,EAAC,kBAAkB,EAAE,sBAAsB,KAGvG,EAAE;QASF,MAAM,oBAAoB,GAAG,IAAI,CAAC,2CAA2C,CAAC,OAAO,EAAE,kBAAkB,EAAE;YACvG,cAAc,EAAE,sBAAsB;SACzC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,oBAAoB;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBACtB,OAAO,SAAS,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;iBACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBACzB,OAAO,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;iBACrC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBAC1B,OAAO,SAAS,CAAC,UAAU,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE/E,OAAO,IAAoB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEP,OAAO;YACH,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,sBAAsB,EAAE,EAAE;SAC7B,CAAC;IACN,CAAC;IAEM,6BAA6B,CAAC,IAAY,EAAE,MAAW,EAAE,MAAW;QACvE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3G,CAAC;IAEM,oBAAoB,CAAC,IAAY,EAAE,MAAW;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;YACtC,IAAI;YACJ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY;YACzC,CACI,MAAM,KAAK,SAAS;gBAChB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAC/B;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5C,CAAC;IAEM,0BAA0B,CAAC,YAAoB,EAAE,cAAmB,EAAE,MAAW;QACpF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CACvC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,YAAY,CAAC;aAC5C,UAAU,CAAC,oBAAoB,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QAE9G,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3D,CACI,MAAM,KAAK,SAAS;gBAChB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAC/B;YACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,yBAAyB,CAAC,aAA4C;QACzE,OAAO,aAAa;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,IAAI,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,IAAI,CAAC;YAEhB,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/F,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEM,oCAAoC,CAAC,kBAAsC,EAAE,EAAC,cAAc,GAAG,IAAI,EAEzG;QACG,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAErE,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC;YACnC,OAAO,EAAE,CAAC;QAEd,OAAO,+HAA+H;YAClI,4BAA4B;YAC5B,sBAAsB;iBACjB,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAC5D,IAAI,GAAG,GAAG,EAAE,CAAC;gBAEb,IAAI,kBAAkB,EAAE,WAAW,IAAI,IAAI,IAAI,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;oBACvF,GAAG,IAAI,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBAEnF,GAAG,IAAI,WAAW,GAAG,YAAY,GAAG,GAAG,CAAC;gBAExC,IAAI,cAAc,IAAI,kBAAkB,EAAE,MAAM,IAAI,IAAI;oBACpD,GAAG,IAAI,UAAU,GAAG,wCAAwC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;qBACvF,IAAI,CAAC,cAAc,IAAI,kBAAkB,EAAE,MAAM,IAAI,IAAI;oBAC1D,GAAG,IAAI,QAAQ,CAAC;gBAEpB,GAAG,IAAI,IAAI,CAAC;gBAEZ,OAAO,GAAG,CAAC;YACf,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC;YACjB,WAAW;YAEX,gEAAgE;YAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC/C,cAAc;YACd,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY;YACzC,0BAA0B;YAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM;YAE5C,yLAAyL;YACzL,uFAAuF,CAAC;IAChG,CAAC;IAEM,2CAA2C,CAAC,OAAmC,EAAE,kBAAuC,EAAE,EAC7H,cAAc,GAAG,IAAI,KAGrB,EAAE;QACF,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAErE,IAAI,kBAAkB,IAAI,IAAI,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC;YACjE,OAAO,OAAO,CAAC;QAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE5B,MAAM,0BAA0B,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAAE,CAAC,EAAE;YACnD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,oCAAoC,CAAC,kBAAkB,EAAE,EAAC,cAAc,EAAC,CAAC;SACxF,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,2BAA2B,CAAC,EAAC,0BAA0B,EAAwC;QAClG,IAAI,0BAA0B;YAC1B,OAAO,EAAE,CAAC;QAEd,OAAO,EAAE,CAAC;IACd,CAAC;CACJ"}
@@ -1,6 +1,4 @@
1
1
  import { Token } from "../types.js";
2
- export declare function getPrebuildBinPath(): Promise<string | null>;
3
- export declare function loadBin(): Promise<BindingModule>;
4
2
  export type BindingModule = {
5
3
  AddonModel: {
6
4
  new (modelPath: string, params: {
@@ -15,7 +13,6 @@ export type BindingModule = {
15
13
  seed?: number;
16
14
  contextSize?: number;
17
15
  batchSize?: number;
18
- f16Kv?: boolean;
19
16
  logitsAll?: boolean;
20
17
  embedding?: boolean;
21
18
  threads?: number;
@@ -30,10 +27,16 @@ export type BindingModule = {
30
27
  new (grammar: AddonGrammar): AddonGrammarEvaluationState;
31
28
  };
32
29
  systemInfo(): string;
30
+ setLogger(logger: (level: number, message: string) => void): void;
31
+ setLoggerLogLevel(level: number): void;
32
+ getGpuVramInfo(): {
33
+ total: number;
34
+ used: number;
35
+ };
33
36
  };
34
37
  export type AddonModel = {
35
38
  dispose(): void;
36
- tokenize(text: string): Uint32Array;
39
+ tokenize(text: string, specialTokens: boolean): Uint32Array;
37
40
  detokenize(tokens: Uint32Array): string;
38
41
  getTrainContextSize(): number;
39
42
  getTotalSize(): number;
@@ -56,6 +59,7 @@ export type AddonContext = {
56
59
  decodeBatch(): Promise<void>;
57
60
  sampleToken(batchLogitIndex: BatchLogitIndex, options?: {
58
61
  temperature?: number;
62
+ minP?: number;
59
63
  topK?: number;
60
64
  topP?: number;
61
65
  repeatPenalty?: number;
@@ -67,6 +71,9 @@ export type AddonContext = {
67
71
  disposeSequence(sequenceId: number): void;
68
72
  removeTokenCellsFromSequence(sequenceId: number, startPos: number, endPos: number): void;
69
73
  shiftSequenceTokenCells(sequenceId: number, startPos: number, endPos: number, shiftDelta: number): void;
74
+ acceptGrammarEvaluationStateToken(grammarEvaluationState: AddonGrammarEvaluationState, token: Token): void;
75
+ getEmbedding(): Float64Array;
76
+ printTimings(): void;
70
77
  };
71
78
  export type BatchLogitIndex = number & {
72
79
  __batchLogitIndex: never;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AddonTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddonTypes.js","sourceRoot":"","sources":["../../src/bindings/AddonTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { LlamaLogLevel } from "./types.js";
2
+ export declare class Llama {
3
+ private constructor();
4
+ get metal(): boolean;
5
+ get cuda(): boolean;
6
+ get logLevel(): LlamaLogLevel;
7
+ set logLevel(value: LlamaLogLevel);
8
+ get logger(): (level: LlamaLogLevel, message: string) => void;
9
+ set logger(value: (level: LlamaLogLevel, message: string) => void);
10
+ get buildType(): "localBuild" | "prebuilt";
11
+ get cmakeOptions(): Readonly<Record<string, string>>;
12
+ get llamaCppRelease(): {
13
+ readonly repo: string;
14
+ readonly release: string;
15
+ };
16
+ get systemInfo(): string;
17
+ getVramState(): {
18
+ total: number;
19
+ used: number;
20
+ free: number;
21
+ };
22
+ static defaultConsoleLogger(level: LlamaLogLevel, message: string): void;
23
+ }
@@ -0,0 +1,225 @@
1
+ import chalk from "chalk";
2
+ import { getConsoleLogPrefix } from "../utils/getConsoleLogPrefix.js";
3
+ import { LlamaLogLevel } from "./types.js";
4
+ const LlamaLogLevelToAddonLogLevel = new Map([
5
+ [LlamaLogLevel.disabled, 0],
6
+ [LlamaLogLevel.fatal, 1],
7
+ [LlamaLogLevel.error, 2],
8
+ [LlamaLogLevel.warn, 3],
9
+ [LlamaLogLevel.info, 4],
10
+ [LlamaLogLevel.debug, 5]
11
+ ]);
12
+ const addonLogLevelToLlamaLogLevel = new Map([...LlamaLogLevelToAddonLogLevel.entries()].map(([key, value]) => [value, key]));
13
+ const defaultLogLevel = 5;
14
+ export class Llama {
15
+ /** @internal */ _bindings;
16
+ /** @internal */ _metal;
17
+ /** @internal */ _cuda;
18
+ /** @internal */ _buildType;
19
+ /** @internal */ _cmakeOptions;
20
+ /** @internal */ _llamaCppRelease;
21
+ /** @internal */ _logger;
22
+ /** @internal */ _logLevel;
23
+ /** @internal */ _pendingLog = null;
24
+ /** @internal */ _pendingLogLevel = null;
25
+ /** @internal */ _logDispatchQueuedMicrotasks = 0;
26
+ /** @internal */ _previousLog = null;
27
+ /** @internal */ _previousLogLevel = null;
28
+ /** @internal */ _nextLogNeedNewLine = false;
29
+ constructor({ bindings, metal, cuda, logLevel, logger, buildType, cmakeOptions, llamaCppRelease }) {
30
+ this._bindings = bindings;
31
+ this._metal = metal;
32
+ this._cuda = cuda;
33
+ this._logLevel = logLevel ?? LlamaLogLevel.debug;
34
+ this._logger = logger;
35
+ this._buildType = buildType;
36
+ this._cmakeOptions = Object.freeze({ ...cmakeOptions });
37
+ this._llamaCppRelease = Object.freeze({
38
+ repo: llamaCppRelease.repo,
39
+ release: llamaCppRelease.release
40
+ });
41
+ this._dispatchPendingLogMicrotask = this._dispatchPendingLogMicrotask.bind(this);
42
+ this._onAddonLog = this._onAddonLog.bind(this);
43
+ this._bindings.setLogger(this._onAddonLog);
44
+ this._bindings.setLoggerLogLevel(LlamaLogLevelToAddonLogLevel.get(this._logLevel) ?? defaultLogLevel);
45
+ }
46
+ get metal() {
47
+ return this._metal;
48
+ }
49
+ get cuda() {
50
+ return this._cuda;
51
+ }
52
+ get logLevel() {
53
+ return this._logLevel;
54
+ }
55
+ set logLevel(value) {
56
+ if (value === this._logLevel)
57
+ return;
58
+ this._bindings.setLoggerLogLevel(LlamaLogLevelToAddonLogLevel.get(value) ?? defaultLogLevel);
59
+ this._logLevel = value;
60
+ }
61
+ get logger() {
62
+ return this._logger;
63
+ }
64
+ set logger(value) {
65
+ this._logger = value;
66
+ if (value !== Llama.defaultConsoleLogger)
67
+ this._nextLogNeedNewLine = false;
68
+ }
69
+ get buildType() {
70
+ return this._buildType;
71
+ }
72
+ get cmakeOptions() {
73
+ return this._cmakeOptions;
74
+ }
75
+ get llamaCppRelease() {
76
+ return this._llamaCppRelease;
77
+ }
78
+ get systemInfo() {
79
+ return this._bindings.systemInfo();
80
+ }
81
+ getVramState() {
82
+ const { total, used } = this._bindings.getGpuVramInfo();
83
+ return {
84
+ total,
85
+ used,
86
+ free: Math.max(0, total - used)
87
+ };
88
+ }
89
+ /** @internal */
90
+ _onAddonLog(level, message) {
91
+ const llamaLogLevel = addonLogLevelToLlamaLogLevel.get(level) ?? LlamaLogLevel.fatal;
92
+ if (this._pendingLog != null && this._pendingLogLevel != null && this._pendingLogLevel != llamaLogLevel) {
93
+ this._callLogger(this._pendingLogLevel, this._pendingLog);
94
+ this._pendingLog = null;
95
+ }
96
+ const sourceMessage = (this._pendingLog ?? "") + message;
97
+ const lastNewLineIndex = sourceMessage.lastIndexOf("\n");
98
+ const currentLog = lastNewLineIndex < 0
99
+ ? sourceMessage
100
+ : sourceMessage.slice(0, lastNewLineIndex);
101
+ const nextLog = lastNewLineIndex < 0
102
+ ? ""
103
+ : sourceMessage.slice(lastNewLineIndex + 1);
104
+ if (currentLog !== "")
105
+ this._callLogger(llamaLogLevel, currentLog);
106
+ if (nextLog !== "") {
107
+ this._pendingLog = nextLog;
108
+ this._pendingLogLevel = llamaLogLevel;
109
+ queueMicrotask(this._dispatchPendingLogMicrotask);
110
+ this._logDispatchQueuedMicrotasks++;
111
+ }
112
+ else
113
+ this._pendingLog = null;
114
+ }
115
+ /** @internal */
116
+ _dispatchPendingLogMicrotask() {
117
+ this._logDispatchQueuedMicrotasks--;
118
+ if (this._logDispatchQueuedMicrotasks !== 0)
119
+ return;
120
+ if (this._pendingLog != null && this._pendingLogLevel != null) {
121
+ this._callLogger(this._pendingLogLevel, this._pendingLog);
122
+ this._pendingLog = null;
123
+ }
124
+ }
125
+ /** @internal */
126
+ _callLogger(level, message) {
127
+ // llama.cpp uses dots to indicate progress, so we don't want to print them as different lines,
128
+ // and instead, append to the same log line
129
+ if (logMessageIsOnlyDots(message) && this._logger === Llama.defaultConsoleLogger) {
130
+ if (logMessageIsOnlyDots(this._previousLog) && level === this._previousLogLevel) {
131
+ process.stdout.write(message);
132
+ }
133
+ else {
134
+ this._nextLogNeedNewLine = true;
135
+ process.stdout.write(prefixAndColorMessage(message, getColorForLogLevel(level)));
136
+ }
137
+ }
138
+ else {
139
+ if (this._nextLogNeedNewLine) {
140
+ process.stdout.write("\n");
141
+ this._nextLogNeedNewLine = false;
142
+ }
143
+ try {
144
+ this._logger(level, message);
145
+ }
146
+ catch (err) {
147
+ // the native addon code calls this function, so there's no use to throw an error here
148
+ }
149
+ }
150
+ this._previousLog = message;
151
+ this._previousLogLevel = level;
152
+ }
153
+ /** @internal */
154
+ static async _create({ bindings, buildType, buildMetadata, logLevel, logger }) {
155
+ return new Llama({
156
+ bindings,
157
+ buildType,
158
+ metal: buildMetadata.buildOptions.computeLayers.metal,
159
+ cuda: buildMetadata.buildOptions.computeLayers.cuda,
160
+ cmakeOptions: buildMetadata.buildOptions.customCmakeOptions,
161
+ llamaCppRelease: {
162
+ repo: buildMetadata.buildOptions.llamaCpp.repo,
163
+ release: buildMetadata.buildOptions.llamaCpp.release
164
+ },
165
+ logLevel,
166
+ logger
167
+ });
168
+ }
169
+ static defaultConsoleLogger(level, message) {
170
+ switch (level) {
171
+ case LlamaLogLevel.disabled:
172
+ break;
173
+ case LlamaLogLevel.fatal:
174
+ // we don't use console.error here because it prints the stack trace
175
+ console.warn(prefixAndColorMessage(message, getColorForLogLevel(level)));
176
+ break;
177
+ case LlamaLogLevel.error:
178
+ // we don't use console.error here because it prints the stack trace
179
+ console.warn(prefixAndColorMessage(message, getColorForLogLevel(level)));
180
+ break;
181
+ case LlamaLogLevel.warn:
182
+ console.warn(prefixAndColorMessage(message, getColorForLogLevel(level)));
183
+ break;
184
+ case LlamaLogLevel.info:
185
+ console.info(prefixAndColorMessage(message, getColorForLogLevel(level)));
186
+ break;
187
+ case LlamaLogLevel.debug:
188
+ console.debug(prefixAndColorMessage(message, getColorForLogLevel(level)));
189
+ break;
190
+ default:
191
+ void (level);
192
+ console.warn(getConsoleLogPrefix() + getColorForLogLevel(LlamaLogLevel.warn)(`Unknown log level: ${level}`));
193
+ console.log(prefixAndColorMessage(message, getColorForLogLevel(level)));
194
+ }
195
+ }
196
+ }
197
+ function getColorForLogLevel(level) {
198
+ switch (level) {
199
+ case LlamaLogLevel.disabled: return chalk.whiteBright;
200
+ case LlamaLogLevel.fatal: return chalk.redBright;
201
+ case LlamaLogLevel.error: return chalk.red;
202
+ case LlamaLogLevel.warn: return chalk.yellow;
203
+ case LlamaLogLevel.info: return chalk.whiteBright;
204
+ case LlamaLogLevel.debug: return chalk.white;
205
+ default:
206
+ void (level);
207
+ return chalk.whiteBright;
208
+ }
209
+ }
210
+ function prefixAndColorMessage(message, color) {
211
+ return getConsoleLogPrefix() + (message
212
+ .split("\n")
213
+ .map(line => color(line))
214
+ .join("\n" + getConsoleLogPrefix()));
215
+ }
216
+ function logMessageIsOnlyDots(message) {
217
+ if (message == null)
218
+ return false;
219
+ for (let i = 0; i < message.length; i++) {
220
+ if (message[i] !== ".")
221
+ return false;
222
+ }
223
+ return true;
224
+ }
225
+ //# sourceMappingURL=Llama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Llama.js","sourceRoot":"","sources":["../../src/bindings/Llama.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { LlamaLogLevel } from "./types.js";
2
+ import { Llama } from "./Llama.js";
3
+ export type LlamaOptions = {
4
+ /**
5
+ * Toggle Metal support in llama.cpp.
6
+ * Only supported on macOS.
7
+ * Enabled by default on Apple Silicon Macs.
8
+ */
9
+ metal?: boolean;
10
+ /**
11
+ * Toggle CUDA support on llama.cpp.
12
+ * Disabled by default.
13
+ */
14
+ cuda?: boolean;
15
+ /**
16
+ * Set the minimum log level for llama.cpp.
17
+ * Defaults to "debug".
18
+ */
19
+ logLevel?: LlamaLogLevel;
20
+ /**
21
+ * Set a custom logger for llama.cpp logs.
22
+ */
23
+ logger?: (level: LlamaLogLevel, message: string) => void;
24
+ /**
25
+ * Set what build method to use.
26
+ * - **`"auto"`**: If a local build is found, use it.
27
+ * Otherwise, if a prebuilt binary is found, use it.
28
+ * Otherwise, build from source.
29
+ * - **`"never"`**: If a local build is found, use it.
30
+ * Otherwise, if a prebuilt binary is found, use it.
31
+ * Otherwise, throw a `NoBinaryFoundError` error.
32
+ * - **`"forceRebuild"`**: Always build from source.
33
+ * Be cautious with this option, as it will cause the build to fail on Windows when the binaries are in use by another process.
34
+ *
35
+ * Defaults to "auto".
36
+ */
37
+ build?: "auto" | "never" | "forceRebuild";
38
+ /**
39
+ * Set custom CMake options for llama.cpp
40
+ */
41
+ cmakeOptions?: Record<string, string>;
42
+ /**
43
+ * When a prebuilt binary is found, only use it if it was built with the same build options as the ones specified in `buildOptions`.
44
+ * Disabled by default.
45
+ */
46
+ existingPrebuiltBinaryMustMatchBuildOptions?: boolean;
47
+ /**
48
+ * Use prebuilt binaries if they match the build options.
49
+ * Enabled by default.
50
+ */
51
+ usePrebuiltBinaries?: boolean;
52
+ /**
53
+ * Print binary compilation progress logs.
54
+ * Enabled by default.
55
+ */
56
+ progressLogs?: boolean;
57
+ /**
58
+ * Don't download llama.cpp source if it's not found.
59
+ * When set to `true`, and llama.cpp source is not found, a `NoBinaryFoundError` error will be thrown.
60
+ * Disabled by default.
61
+ */
62
+ skipDownload?: boolean;
63
+ };
64
+ export type LastBuildOptions = {
65
+ /**
66
+ * Set the minimum log level for llama.cpp.
67
+ * Defaults to "debug".
68
+ */
69
+ logLevel?: LlamaLogLevel;
70
+ /**
71
+ * Set a custom logger for llama.cpp logs.
72
+ */
73
+ logger?: (level: LlamaLogLevel, message: string) => void;
74
+ };
75
+ export declare const getLlamaFunctionName = "getLlama";
76
+ /**
77
+ * Get a llama.cpp binding.
78
+ * Defaults to prefer a prebuilt binary, and fallbacks to building from source if a prebuilt binary is not found.
79
+ * Pass `"lastCliBuild"` to default to use the last successful build created using the `download` or `build` CLI commands if one exists.
80
+ */
81
+ export declare function getLlama(): Promise<Llama>;
82
+ export declare function getLlama(options: LlamaOptions, lastBuildOptions?: never): Promise<Llama>;
83
+ export declare function getLlama(type: "lastBuild", lastBuildOptions?: LastBuildOptions): Promise<Llama>;
84
+ export declare function getLlamaForOptions({ metal, cuda, logLevel, logger, build, cmakeOptions, existingPrebuiltBinaryMustMatchBuildOptions, usePrebuiltBinaries, progressLogs, skipDownload }: LlamaOptions, { updateLastBuildInfoOnCompile }?: {
85
+ updateLastBuildInfoOnCompile?: boolean;
86
+ }): Promise<Llama>;