node-llama-cpp 2.8.6 → 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 (346) hide show
  1. package/README.md +2 -2
  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/bindings/AddonTypes.d.ts +92 -0
  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 +13 -0
  74. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +60 -0
  75. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -0
  76. package/dist/cli/cli.js +5 -1
  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 -4
  82. package/dist/cli/commands/ChatCommand.js +169 -57
  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/evaluator/LlamaChatSession/LlamaChatSession.d.ts +157 -0
  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/evaluator/LlamaContext/LlamaContext.d.ts +109 -0
  113. package/dist/evaluator/LlamaContext/LlamaContext.js +606 -0
  114. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
  115. package/dist/evaluator/LlamaContext/types.d.ts +82 -0
  116. package/dist/evaluator/LlamaContext/types.js +2 -0
  117. package/dist/evaluator/LlamaContext/types.js.map +1 -0
  118. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +5 -0
  119. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +16 -0
  120. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
  121. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +5 -0
  122. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +42 -0
  123. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
  124. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +2 -0
  125. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +13 -0
  126. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
  127. package/dist/evaluator/LlamaEmbeddingContext.d.ts +37 -0
  128. package/dist/evaluator/LlamaEmbeddingContext.js +78 -0
  129. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
  130. package/dist/evaluator/LlamaGrammar.d.ts +30 -0
  131. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +15 -19
  132. package/dist/evaluator/LlamaGrammar.js.map +1 -0
  133. package/dist/evaluator/LlamaGrammarEvaluationState.d.ts +15 -0
  134. package/dist/evaluator/LlamaGrammarEvaluationState.js +17 -0
  135. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
  136. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
  137. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +4 -2
  138. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
  139. package/dist/evaluator/LlamaModel.d.ts +120 -0
  140. package/dist/evaluator/LlamaModel.js +320 -0
  141. package/dist/evaluator/LlamaModel.js.map +1 -0
  142. package/dist/index.d.ts +29 -16
  143. package/dist/index.js +28 -15
  144. package/dist/index.js.map +1 -1
  145. package/dist/state.d.ts +2 -0
  146. package/dist/state.js +7 -0
  147. package/dist/state.js.map +1 -1
  148. package/dist/types.d.ts +44 -4
  149. package/dist/types.js +5 -1
  150. package/dist/types.js.map +1 -1
  151. package/dist/utils/LlamaText.d.ts +42 -0
  152. package/dist/utils/LlamaText.js +207 -0
  153. package/dist/utils/LlamaText.js.map +1 -0
  154. package/dist/utils/ReplHistory.js +1 -1
  155. package/dist/utils/ReplHistory.js.map +1 -1
  156. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  157. package/dist/utils/StopGenerationDetector.js +205 -0
  158. package/dist/utils/StopGenerationDetector.js.map +1 -0
  159. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  160. package/dist/utils/TokenStreamRegulator.js +96 -0
  161. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  162. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  163. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  164. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  165. package/dist/utils/cmake.js +16 -11
  166. package/dist/utils/cmake.js.map +1 -1
  167. package/dist/utils/compareTokens.d.ts +2 -0
  168. package/dist/utils/compareTokens.js +4 -0
  169. package/dist/utils/compareTokens.js.map +1 -0
  170. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  171. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  172. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  173. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  174. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  175. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  176. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  177. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  178. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  179. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  180. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  181. package/dist/utils/gbnfJson/types.d.ts +1 -1
  182. package/dist/utils/gbnfJson/types.js.map +1 -1
  183. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  184. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  185. package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
  186. package/dist/utils/getConsoleLogPrefix.js +9 -0
  187. package/dist/utils/getConsoleLogPrefix.js.map +1 -0
  188. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  189. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  190. package/dist/utils/getGrammarsFolder.d.ts +2 -1
  191. package/dist/utils/getGrammarsFolder.js +8 -7
  192. package/dist/utils/getGrammarsFolder.js.map +1 -1
  193. package/dist/utils/getModuleVersion.d.ts +1 -0
  194. package/dist/utils/getModuleVersion.js +13 -0
  195. package/dist/utils/getModuleVersion.js.map +1 -0
  196. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  197. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  198. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  199. package/dist/utils/gitReleaseBundles.js +6 -5
  200. package/dist/utils/gitReleaseBundles.js.map +1 -1
  201. package/dist/utils/hashString.d.ts +1 -0
  202. package/dist/utils/hashString.js +8 -0
  203. package/dist/utils/hashString.js.map +1 -0
  204. package/dist/utils/isLockfileActive.d.ts +4 -0
  205. package/dist/utils/isLockfileActive.js +12 -0
  206. package/dist/utils/isLockfileActive.js.map +1 -0
  207. package/dist/utils/parseModelFileName.d.ts +9 -0
  208. package/dist/utils/parseModelFileName.js +68 -0
  209. package/dist/utils/parseModelFileName.js.map +1 -0
  210. package/dist/utils/parseModelTypeDescription.d.ts +6 -0
  211. package/dist/utils/parseModelTypeDescription.js +9 -0
  212. package/dist/utils/parseModelTypeDescription.js.map +1 -0
  213. package/dist/utils/prettyPrintObject.d.ts +1 -0
  214. package/dist/utils/prettyPrintObject.js +40 -0
  215. package/dist/utils/prettyPrintObject.js.map +1 -0
  216. package/dist/utils/removeNullFields.d.ts +1 -0
  217. package/dist/utils/removeNullFields.js +8 -0
  218. package/dist/utils/removeNullFields.js.map +1 -1
  219. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  220. package/dist/utils/resolveChatWrapper.js +16 -0
  221. package/dist/utils/resolveChatWrapper.js.map +1 -0
  222. package/dist/utils/resolveGithubRelease.d.ts +2 -0
  223. package/dist/utils/resolveGithubRelease.js +36 -0
  224. package/dist/utils/resolveGithubRelease.js.map +1 -0
  225. package/dist/utils/spawnCommand.d.ts +1 -1
  226. package/dist/utils/spawnCommand.js +4 -2
  227. package/dist/utils/spawnCommand.js.map +1 -1
  228. package/dist/utils/tokenizeInput.d.ts +3 -0
  229. package/dist/utils/tokenizeInput.js +9 -0
  230. package/dist/utils/tokenizeInput.js.map +1 -0
  231. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  232. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  233. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  234. package/dist/utils/waitForLockfileRelease.d.ts +5 -0
  235. package/dist/utils/waitForLockfileRelease.js +20 -0
  236. package/dist/utils/waitForLockfileRelease.js.map +1 -0
  237. package/dist/utils/withLockfile.d.ts +7 -0
  238. package/dist/utils/withLockfile.js +44 -0
  239. package/dist/utils/withLockfile.js.map +1 -0
  240. package/dist/utils/withOra.js +11 -1
  241. package/dist/utils/withOra.js.map +1 -1
  242. package/dist/utils/withStatusLogs.d.ts +2 -1
  243. package/dist/utils/withStatusLogs.js +11 -8
  244. package/dist/utils/withStatusLogs.js.map +1 -1
  245. package/llama/.clang-format +11 -11
  246. package/llama/CMakeLists.txt +87 -2
  247. package/llama/addon.cpp +915 -352
  248. package/llama/binariesGithubRelease.json +1 -1
  249. package/llama/gitRelease.bundle +0 -0
  250. package/llama/gpuInfo/cuda-gpu-info.cu +99 -0
  251. package/llama/gpuInfo/cuda-gpu-info.h +7 -0
  252. package/llama/gpuInfo/metal-gpu-info.h +5 -0
  253. package/llama/gpuInfo/metal-gpu-info.mm +17 -0
  254. package/llama/llama.cpp.info.json +4 -0
  255. package/llamaBins/linux-arm64/.buildMetadata.json +1 -0
  256. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  257. package/llamaBins/linux-armv7l/.buildMetadata.json +1 -0
  258. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  259. package/llamaBins/linux-x64/.buildMetadata.json +1 -0
  260. package/llamaBins/linux-x64/llama-addon.node +0 -0
  261. package/llamaBins/linux-x64-cuda/.buildMetadata.json +1 -0
  262. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  263. package/llamaBins/mac-arm64-metal/.buildMetadata.json +1 -0
  264. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  265. package/llamaBins/mac-x64/.buildMetadata.json +1 -0
  266. package/llamaBins/mac-x64/llama-addon.node +0 -0
  267. package/llamaBins/win-x64/.buildMetadata.json +1 -0
  268. package/llamaBins/win-x64/llama-addon.exp +0 -0
  269. package/llamaBins/win-x64/llama-addon.node +0 -0
  270. package/llamaBins/win-x64-cuda/.buildMetadata.json +1 -0
  271. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  272. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  273. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  274. package/package.json +39 -19
  275. package/dist/ChatPromptWrapper.d.ts +0 -11
  276. package/dist/ChatPromptWrapper.js +0 -20
  277. package/dist/ChatPromptWrapper.js.map +0 -1
  278. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  279. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  280. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  281. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  282. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  283. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  284. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  285. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  286. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  287. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  288. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  289. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  290. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  291. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  292. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  293. package/dist/chatWrappers/createChatWrapperByBos.d.ts +0 -2
  294. package/dist/chatWrappers/createChatWrapperByBos.js +0 -14
  295. package/dist/chatWrappers/createChatWrapperByBos.js.map +0 -1
  296. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -23
  297. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -47
  298. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  299. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -4
  300. package/dist/llamaEvaluator/LlamaBins.js +0 -5
  301. package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
  302. package/dist/llamaEvaluator/LlamaChatSession.d.ts +0 -122
  303. package/dist/llamaEvaluator/LlamaChatSession.js +0 -236
  304. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  305. package/dist/llamaEvaluator/LlamaContext.d.ts +0 -99
  306. package/dist/llamaEvaluator/LlamaContext.js +0 -143
  307. package/dist/llamaEvaluator/LlamaContext.js.map +0 -1
  308. package/dist/llamaEvaluator/LlamaGrammar.d.ts +0 -32
  309. package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
  310. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.d.ts +0 -14
  311. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js +0 -16
  312. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
  313. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
  314. package/dist/llamaEvaluator/LlamaModel.d.ts +0 -123
  315. package/dist/llamaEvaluator/LlamaModel.js +0 -74
  316. package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
  317. package/dist/utils/binariesGithubRelease.js.map +0 -1
  318. package/dist/utils/clearLlamaBuild.d.ts +0 -1
  319. package/dist/utils/clearLlamaBuild.js +0 -12
  320. package/dist/utils/clearLlamaBuild.js.map +0 -1
  321. package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
  322. package/dist/utils/cloneLlamaCppRepo.js +0 -102
  323. package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
  324. package/dist/utils/compileLLamaCpp.d.ts +0 -8
  325. package/dist/utils/compileLLamaCpp.js +0 -132
  326. package/dist/utils/compileLLamaCpp.js.map +0 -1
  327. package/dist/utils/getBin.d.ts +0 -53
  328. package/dist/utils/getBin.js +0 -78
  329. package/dist/utils/getBin.js.map +0 -1
  330. package/dist/utils/getReleaseInfo.d.ts +0 -7
  331. package/dist/utils/getReleaseInfo.js +0 -30
  332. package/dist/utils/getReleaseInfo.js.map +0 -1
  333. package/dist/utils/getTextCompletion.d.ts +0 -3
  334. package/dist/utils/getTextCompletion.js +0 -12
  335. package/dist/utils/getTextCompletion.js.map +0 -1
  336. package/dist/utils/usedBinFlag.d.ts +0 -6
  337. package/dist/utils/usedBinFlag.js +0 -15
  338. package/dist/utils/usedBinFlag.js.map +0 -1
  339. package/dist/utils/withLock.d.ts +0 -1
  340. package/dist/utils/withLock.js +0 -19
  341. package/dist/utils/withLock.js.map +0 -1
  342. package/llama/usedBin.json +0 -3
  343. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  344. package/llamaBins/mac-x64/ggml-metal.metal +0 -6119
  345. /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
  346. /package/llamaBins/{mac-arm64 → mac-arm64-metal}/ggml-metal.metal +0 -0
@@ -0,0 +1,60 @@
1
+ import { parseModelFileName } from "../utils/parseModelFileName.js";
2
+ import { parseModelTypeDescription } from "../utils/parseModelTypeDescription.js";
3
+ import { LlamaChatWrapper } from "./LlamaChatWrapper.js";
4
+ import { ChatMLChatWrapper } from "./ChatMLChatWrapper.js";
5
+ import { GeneralChatWrapper } from "./GeneralChatWrapper.js";
6
+ import { FalconChatWrapper } from "./FalconChatWrapper.js";
7
+ import { FunctionaryChatWrapper } from "./FunctionaryChatWrapper.js";
8
+ import { AlpacaChatWrapper } from "./AlpacaChatWrapper.js";
9
+ /**
10
+ * @param options
11
+ */
12
+ export function resolveChatWrapperBasedOnModel({ bosString, filename, typeDescription }) {
13
+ if (filename != null) {
14
+ const { name, subType, fileType } = parseModelFileName(filename);
15
+ if (fileType?.toLowerCase() === "gguf") {
16
+ const lowercaseName = name?.toLowerCase();
17
+ const lowercaseSubType = subType?.toLowerCase();
18
+ const splitLowercaseSubType = lowercaseSubType?.split("-") ?? [];
19
+ const firstSplitLowercaseSubType = splitLowercaseSubType[0];
20
+ if (lowercaseName === "llama") {
21
+ if (splitLowercaseSubType.includes("chat"))
22
+ return LlamaChatWrapper;
23
+ return GeneralChatWrapper;
24
+ }
25
+ else if (lowercaseName === "yarn" && firstSplitLowercaseSubType === "llama")
26
+ return LlamaChatWrapper;
27
+ else if (lowercaseName === "orca")
28
+ return ChatMLChatWrapper;
29
+ else if (lowercaseName === "phind" && lowercaseSubType === "codellama")
30
+ return LlamaChatWrapper;
31
+ else if (lowercaseName === "mistral")
32
+ return GeneralChatWrapper;
33
+ else if (firstSplitLowercaseSubType === "llama")
34
+ return LlamaChatWrapper;
35
+ else if (lowercaseSubType === "alpaca")
36
+ return AlpacaChatWrapper;
37
+ else if (lowercaseName === "functionary")
38
+ return FunctionaryChatWrapper;
39
+ else if (lowercaseName === "dolphin" && splitLowercaseSubType.includes("mistral"))
40
+ return ChatMLChatWrapper;
41
+ }
42
+ }
43
+ if (typeDescription != null) {
44
+ const { arch } = parseModelTypeDescription(typeDescription);
45
+ if (arch === "llama")
46
+ return LlamaChatWrapper;
47
+ else if (arch === "falcon")
48
+ return FalconChatWrapper;
49
+ }
50
+ if (bosString === "" || bosString == null)
51
+ return null;
52
+ if ("<s>[INST] <<SYS>>\n".startsWith(bosString)) {
53
+ return LlamaChatWrapper;
54
+ }
55
+ else if ("<|im_start|>system\n".startsWith(bosString)) {
56
+ return ChatMLChatWrapper;
57
+ }
58
+ return null;
59
+ }
60
+ //# sourceMappingURL=resolveChatWrapperBasedOnModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveChatWrapperBasedOnModel.js","sourceRoot":"","sources":["../../src/chatWrappers/resolveChatWrapperBasedOnModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,EAC3C,SAAS,EACT,QAAQ,EACR,eAAe,EAOlB;IACG,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,MAAM,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE;YACpC,MAAM,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;YAC1C,MAAM,gBAAgB,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC;YAChD,MAAM,qBAAqB,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE5D,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC3B,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACtC,OAAO,gBAAgB,CAAC;gBAE5B,OAAO,kBAAkB,CAAC;aAC7B;iBAAM,IAAI,aAAa,KAAK,MAAM,IAAI,0BAA0B,KAAK,OAAO;gBACzE,OAAO,gBAAgB,CAAC;iBACvB,IAAI,aAAa,KAAK,MAAM;gBAC7B,OAAO,iBAAiB,CAAC;iBACxB,IAAI,aAAa,KAAK,OAAO,IAAI,gBAAgB,KAAK,WAAW;gBAClE,OAAO,gBAAgB,CAAC;iBACvB,IAAI,aAAa,KAAK,SAAS;gBAChC,OAAO,kBAAkB,CAAC;iBACzB,IAAI,0BAA0B,KAAK,OAAO;gBAC3C,OAAO,gBAAgB,CAAC;iBACvB,IAAI,gBAAgB,KAAK,QAAQ;gBAClC,OAAO,iBAAiB,CAAC;iBACxB,IAAI,aAAa,KAAK,aAAa;gBACpC,OAAO,sBAAsB,CAAC;iBAC7B,IAAI,aAAa,KAAK,SAAS,IAAI,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC7E,OAAO,iBAAiB,CAAC;SAChC;KACJ;IAED,IAAI,eAAe,IAAI,IAAI,EAAE;QACzB,MAAM,EAAC,IAAI,EAAC,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;QAE1D,IAAI,IAAI,KAAK,OAAO;YAChB,OAAO,gBAAgB,CAAC;aACvB,IAAI,IAAI,KAAK,QAAQ;YACtB,OAAO,iBAAiB,CAAC;KAChC;IAED,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI;QACrC,OAAO,IAAI,CAAC;IAEhB,IAAI,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7C,OAAO,gBAAgB,CAAC;KAC3B;SAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACrD,OAAO,iBAAiB,CAAC;KAC5B;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
package/dist/cli/cli.js CHANGED
@@ -2,17 +2,20 @@
2
2
  import { fileURLToPath } from "url";
3
3
  import path from "path";
4
4
  import yargs from "yargs";
5
- // eslint-disable-next-line node/file-extension-in-import
5
+ // eslint-disable-next-line n/file-extension-in-import
6
6
  import { hideBin } from "yargs/helpers";
7
7
  import fs from "fs-extra";
8
8
  import { cliBinName } from "../config.js";
9
+ import { setIsRunningFromCLI } from "../state.js";
9
10
  import { DownloadCommand } from "./commands/DownloadCommand.js";
10
11
  import { BuildCommand } from "./commands/BuildCommand.js";
11
12
  import { OnPostInstallCommand } from "./commands/OnPostInstallCommand.js";
12
13
  import { ClearCommand } from "./commands/ClearCommand.js";
13
14
  import { ChatCommand } from "./commands/ChatCommand.js";
15
+ import { DebugCommand } from "./commands/DebugCommand.js";
14
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
17
  const packageJson = fs.readJSONSync(path.join(__dirname, "..", "..", "package.json"));
18
+ setIsRunningFromCLI(true);
16
19
  const yarg = yargs(hideBin(process.argv));
17
20
  yarg
18
21
  .scriptName(cliBinName)
@@ -22,6 +25,7 @@ yarg
22
25
  .command(ClearCommand)
23
26
  .command(ChatCommand)
24
27
  .command(OnPostInstallCommand)
28
+ .command(DebugCommand)
25
29
  .recommendCommands()
26
30
  .demandCommand(1)
27
31
  .strict()
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,yDAAyD;AACzD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAEtD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,IAAI;KACC,UAAU,CAAC,UAAU,CAAC;KACtB,KAAK,CAAC,+BAA+B,CAAC;KACtC,OAAO,CAAC,eAAe,CAAC;KACxB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,WAAW,CAAC;KACpB,OAAO,CAAC,oBAAoB,CAAC;KAC7B,iBAAiB,EAAE;KACnB,aAAa,CAAC,CAAC,CAAC;KAChB,MAAM,EAAE;KACR,cAAc,EAAE;KAChB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KACrB,IAAI,CAAC,GAAG,CAAC;KACT,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACzC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,sDAAsD;AACtD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtF,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,IAAI;KACC,UAAU,CAAC,UAAU,CAAC;KACtB,KAAK,CAAC,+BAA+B,CAAC;KACtC,OAAO,CAAC,eAAe,CAAC;KACxB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,WAAW,CAAC;KACpB,OAAO,CAAC,oBAAoB,CAAC;KAC7B,OAAO,CAAC,YAAY,CAAC;KACrB,iBAAiB,EAAE;KACnB,aAAa,CAAC,CAAC,CAAC;KAChB,MAAM,EAAE;KACR,cAAc,EAAE;KAChB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KACrB,IAAI,CAAC,GAAG,CAAC;KACT,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACzC,KAAK,EAAE,CAAC"}
@@ -4,7 +4,8 @@ type BuildCommand = {
4
4
  nodeTarget?: string;
5
5
  metal?: boolean;
6
6
  cuda?: boolean;
7
+ noUsageExample?: boolean;
7
8
  };
8
9
  export declare const BuildCommand: CommandModule<object, BuildCommand>;
9
- export declare function BuildLlamaCppCommand({ arch, nodeTarget, metal, cuda }: BuildCommand): Promise<void>;
10
+ export declare function BuildLlamaCppCommand({ arch, nodeTarget, metal, cuda, noUsageExample, noCustomCmakeBuildOptionsInBinaryFolderName }: BuildCommand): Promise<void>;
10
11
  export {};
@@ -1,13 +1,16 @@
1
1
  import process from "process";
2
2
  import chalk from "chalk";
3
- import fs from "fs-extra";
4
- import { compileLlamaCpp } from "../../utils/compileLLamaCpp.js";
3
+ import { compileLlamaCpp } from "../../bindings/utils/compileLLamaCpp.js";
5
4
  import withOra from "../../utils/withOra.js";
6
5
  import { clearTempFolder } from "../../utils/clearTempFolder.js";
7
- import { defaultLlamaCppCudaSupport, defaultLlamaCppMetalSupport, llamaCppDirectory } from "../../config.js";
6
+ import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease, defaultLlamaCppCudaSupport, defaultLlamaCppMetalSupport, isCI } from "../../config.js";
8
7
  import { downloadCmakeIfNeeded } from "../../utils/cmake.js";
9
8
  import withStatusLogs from "../../utils/withStatusLogs.js";
10
9
  import { getIsInDocumentationMode } from "../../state.js";
10
+ import { logBinaryUsageExampleToConsole } from "../../bindings/utils/logBinaryUsageExampleToConsole.js";
11
+ import { getPlatform } from "../../bindings/utils/getPlatform.js";
12
+ import { resolveCustomCmakeOptions } from "../../bindings/utils/resolveCustomCmakeOptions.js";
13
+ import { getClonedLlamaCppRepoReleaseInfo, isLlamaCppRepoCloned } from "../../bindings/utils/cloneLlamaCppRepo.js";
11
14
  export const BuildCommand = {
12
15
  command: "build",
13
16
  describe: "Compile the currently downloaded llama.cpp",
@@ -33,15 +36,31 @@ export const BuildCommand = {
33
36
  type: "boolean",
34
37
  default: defaultLlamaCppCudaSupport,
35
38
  description: "Compile llama.cpp with CUDA support. Can also be set via the NODE_LLAMA_CPP_CUDA environment variable"
39
+ })
40
+ .option("noUsageExample", {
41
+ alias: "nu",
42
+ type: "boolean",
43
+ default: false,
44
+ description: "Don't print code usage example after building"
45
+ })
46
+ .option("noCustomCmakeBuildOptionsInBinaryFolderName", {
47
+ type: "boolean",
48
+ hidden: true,
49
+ default: false,
50
+ description: "Don't include custom CMake build options in build folder name"
36
51
  });
37
52
  },
38
53
  handler: BuildLlamaCppCommand
39
54
  };
40
- export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = undefined, metal = defaultLlamaCppMetalSupport, cuda = defaultLlamaCppCudaSupport }) {
41
- if (!(await fs.pathExists(llamaCppDirectory))) {
55
+ export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = undefined, metal = defaultLlamaCppMetalSupport, cuda = defaultLlamaCppCudaSupport, noUsageExample = false, noCustomCmakeBuildOptionsInBinaryFolderName = false }) {
56
+ if (!(await isLlamaCppRepoCloned())) {
42
57
  console.log(chalk.red('llama.cpp is not downloaded. Please run "node-llama-cpp download" first'));
43
58
  process.exit(1);
44
59
  }
60
+ const includeBuildOptionsInBinaryFolderName = !noCustomCmakeBuildOptionsInBinaryFolderName || !isCI;
61
+ const clonedLlamaCppRepoReleaseInfo = await getClonedLlamaCppRepoReleaseInfo();
62
+ const platform = getPlatform();
63
+ const customCmakeOptions = resolveCustomCmakeOptions();
45
64
  if (metal && process.platform === "darwin") {
46
65
  console.log(`${chalk.yellow("Metal:")} enabled`);
47
66
  }
@@ -49,17 +68,33 @@ export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = unde
49
68
  console.log(`${chalk.yellow("CUDA:")} enabled`);
50
69
  }
51
70
  await downloadCmakeIfNeeded(true);
71
+ const buildOptions = {
72
+ customCmakeOptions,
73
+ progressLogs: true,
74
+ platform,
75
+ arch: arch
76
+ ? arch
77
+ : process.arch,
78
+ computeLayers: {
79
+ metal,
80
+ cuda
81
+ },
82
+ llamaCpp: {
83
+ repo: clonedLlamaCppRepoReleaseInfo?.llamaCppGithubRepo ?? builtinLlamaCppGitHubRepo,
84
+ release: clonedLlamaCppRepoReleaseInfo?.tag ?? builtinLlamaCppRelease
85
+ }
86
+ };
52
87
  await withStatusLogs({
53
88
  loading: chalk.blue("Compiling llama.cpp"),
54
89
  success: chalk.blue("Compiled llama.cpp"),
55
90
  fail: chalk.blue("Failed to compile llama.cpp")
56
91
  }, async () => {
57
- await compileLlamaCpp({
58
- arch: arch ? arch : undefined,
92
+ await compileLlamaCpp(buildOptions, {
59
93
  nodeTarget: nodeTarget ? nodeTarget : undefined,
60
- setUsedBinFlag: true,
61
- metal,
62
- cuda
94
+ updateLastBuildInfo: true,
95
+ downloadCmakeIfNeeded: false,
96
+ ensureLlamaCppRepoIsCloned: false,
97
+ includeBuildOptionsInBinaryFolderName
63
98
  });
64
99
  });
65
100
  await withOra({
@@ -69,5 +104,10 @@ export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = unde
69
104
  }, async () => {
70
105
  await clearTempFolder();
71
106
  });
107
+ if (!noUsageExample) {
108
+ console.log();
109
+ logBinaryUsageExampleToConsole(buildOptions, true);
110
+ console.log();
111
+ }
72
112
  }
73
113
  //# sourceMappingURL=BuildCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuildCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BuildCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuildCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BuildCommand.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
1
  import { CommandModule } from "yargs";
2
- import type { LlamaGrammar } from "../../llamaEvaluator/LlamaGrammar.js";
3
- declare const modelWrappers: readonly ["auto", "general", "llamaChat", "chatML", "falconChat"];
2
+ import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
3
+ declare const modelWrappers: readonly ["auto", "general", "llamaChat", "alpacaChat", "functionary", "chatML", "falconChat"];
4
4
  type ChatCommand = {
5
5
  model: string;
6
6
  systemInfo: boolean;
7
- printTimings: boolean;
8
7
  systemPrompt: string;
8
+ systemPromptFile?: string;
9
9
  prompt?: string;
10
+ promptFile?: string;
10
11
  wrapper: (typeof modelWrappers)[number];
11
12
  contextSize: number;
12
- grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[0];
13
+ batchSize?: number;
14
+ grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[1];
13
15
  jsonSchemaGrammarFile?: string;
14
16
  threads: number;
15
17
  temperature: number;
18
+ minP: number;
16
19
  topK: number;
17
20
  topP: number;
18
21
  gpuLayers?: number;
@@ -23,6 +26,9 @@ type ChatCommand = {
23
26
  repeatPresencePenalty?: number;
24
27
  maxTokens: number;
25
28
  noHistory: boolean;
29
+ environmentFunctions: boolean;
30
+ noInfoLog: boolean;
31
+ printTimings: boolean;
26
32
  };
27
33
  export declare const ChatCommand: CommandModule<object, ChatCommand>;
28
34
  export {};
@@ -3,16 +3,26 @@ import process from "process";
3
3
  import path from "path";
4
4
  import chalk from "chalk";
5
5
  import fs from "fs-extra";
6
- import withOra from "../../utils/withOra.js";
7
6
  import { chatCommandHistoryFilePath, defaultChatSystemPrompt } from "../../config.js";
8
- import { LlamaChatPromptWrapper } from "../../chatWrappers/LlamaChatPromptWrapper.js";
9
- import { GeneralChatPromptWrapper } from "../../chatWrappers/GeneralChatPromptWrapper.js";
10
- import { ChatMLChatPromptWrapper } from "../../chatWrappers/ChatMLChatPromptWrapper.js";
11
- import { getChatWrapperByBos } from "../../chatWrappers/createChatWrapperByBos.js";
12
- import { FalconChatPromptWrapper } from "../../chatWrappers/FalconChatPromptWrapper.js";
7
+ import { LlamaChatWrapper } from "../../chatWrappers/LlamaChatWrapper.js";
8
+ import { GeneralChatWrapper } from "../../chatWrappers/GeneralChatWrapper.js";
9
+ import { ChatMLChatWrapper } from "../../chatWrappers/ChatMLChatWrapper.js";
10
+ import { resolveChatWrapperBasedOnModel } from "../../chatWrappers/resolveChatWrapperBasedOnModel.js";
11
+ import { FalconChatWrapper } from "../../chatWrappers/FalconChatWrapper.js";
13
12
  import { getIsInDocumentationMode } from "../../state.js";
14
13
  import { ReplHistory } from "../../utils/ReplHistory.js";
15
- const modelWrappers = ["auto", "general", "llamaChat", "chatML", "falconChat"];
14
+ import withStatusLogs from "../../utils/withStatusLogs.js";
15
+ import { AlpacaChatWrapper } from "../../chatWrappers/AlpacaChatWrapper.js";
16
+ import { FunctionaryChatWrapper } from "../../chatWrappers/FunctionaryChatWrapper.js";
17
+ import { defineChatSessionFunction } from "../../evaluator/LlamaChatSession/utils/defineChatSessionFunction.js";
18
+ import { getLlama } from "../../bindings/getLlama.js";
19
+ import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
20
+ import { LlamaChatSession } from "../../evaluator/LlamaChatSession/LlamaChatSession.js";
21
+ import { LlamaModel } from "../../evaluator/LlamaModel.js";
22
+ import { LlamaContext } from "../../evaluator/LlamaContext/LlamaContext.js";
23
+ import { LlamaJsonSchemaGrammar } from "../../evaluator/LlamaJsonSchemaGrammar.js";
24
+ import { LlamaLogLevel } from "../../bindings/types.js";
25
+ const modelWrappers = ["auto", "general", "llamaChat", "alpacaChat", "functionary", "chatML", "falconChat"];
16
26
  export const ChatCommand = {
17
27
  command: "chat",
18
28
  describe: "Chat with a Llama model",
@@ -32,12 +42,6 @@ export const ChatCommand = {
32
42
  default: false,
33
43
  description: "Print llama.cpp system info",
34
44
  group: "Optional:"
35
- })
36
- .option("printTimings", {
37
- type: "boolean",
38
- default: false,
39
- description: "Print llama.cpp timings",
40
- group: "Optional:"
41
45
  })
42
46
  .option("systemPrompt", {
43
47
  alias: "s",
@@ -47,16 +51,26 @@ export const ChatCommand = {
47
51
  description: "System prompt to use against the model" +
48
52
  (isInDocumentationMode ? "" : (". [default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]")),
49
53
  group: "Optional:"
54
+ })
55
+ .option("systemPromptFile", {
56
+ type: "string",
57
+ description: "Path to a file to load text from and use as as the model system prompt",
58
+ group: "Optional:"
50
59
  })
51
60
  .option("prompt", {
52
61
  type: "string",
53
62
  description: "First prompt to automatically send to the model when starting the chat",
54
63
  group: "Optional:"
64
+ })
65
+ .option("promptFile", {
66
+ type: "string",
67
+ description: "Path to a file to load text from and use as a first prompt to automatically send to the model when starting the chat",
68
+ group: "Optional:"
55
69
  })
56
70
  .option("wrapper", {
57
71
  alias: "w",
58
72
  type: "string",
59
- default: "general",
73
+ default: "auto",
60
74
  choices: modelWrappers,
61
75
  description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token",
62
76
  group: "Optional:"
@@ -65,7 +79,13 @@ export const ChatCommand = {
65
79
  alias: "c",
66
80
  type: "number",
67
81
  default: 1024 * 4,
68
- description: "Context size to use for the model",
82
+ description: "Context size to use for the model context",
83
+ group: "Optional:"
84
+ })
85
+ .option("batchSize", {
86
+ alias: "b",
87
+ type: "number",
88
+ description: "Batch size to use for the model context. The default value is the context size",
69
89
  group: "Optional:"
70
90
  })
71
91
  .option("grammar", {
@@ -94,6 +114,13 @@ export const ChatCommand = {
94
114
  default: 0,
95
115
  description: "Temperature is a hyperparameter that controls the randomness of the generated text. It affects the probability distribution of the model's output tokens. A higher temperature (e.g., 1.5) makes the output more random and creative, while a lower temperature (e.g., 0.5) makes the output more focused, deterministic, and conservative. The suggested temperature is 0.8, which provides a balance between randomness and determinism. At the extreme, a temperature of 0 will always pick the most likely next token, leading to identical outputs in each run. Set to `0` to disable.",
96
116
  group: "Optional:"
117
+ })
118
+ .option("minP", {
119
+ alias: "mp",
120
+ type: "number",
121
+ default: 0,
122
+ description: "From the next token candidates, discard the percentage of tokens with the lowest probability. For example, if set to `0.05`, 5% of the lowest probability tokens will be discarded. This is useful for generating more high-quality results when using a high temperature. Set to a value between `0` and `1` to enable. Only relevant when `temperature` is set to a value greater than `0`.",
123
+ group: "Optional:"
97
124
  })
98
125
  .option("topK", {
99
126
  alias: "k",
@@ -161,14 +188,36 @@ export const ChatCommand = {
161
188
  default: false,
162
189
  description: "Don't load or save chat history",
163
190
  group: "Optional:"
191
+ })
192
+ .option("environmentFunctions", {
193
+ alias: "ef",
194
+ type: "boolean",
195
+ default: false,
196
+ description: "Provide access to environment functions like `getDate` and `getTime`",
197
+ group: "Optional:"
198
+ })
199
+ .option("noInfoLog", {
200
+ alias: "nl",
201
+ type: "boolean",
202
+ default: false,
203
+ description: "Disable llama.cpp info logs",
204
+ group: "Optional:"
205
+ })
206
+ .option("printTimings", {
207
+ alias: "pt",
208
+ type: "boolean",
209
+ default: false,
210
+ description: "Print llama.cpp timings after each response",
211
+ group: "Optional:"
164
212
  });
165
213
  },
166
- async handler({ model, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar, jsonSchemaGrammarFile, threads, temperature, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, printTimings }) {
214
+ async handler({ model, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize, grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, noInfoLog, printTimings }) {
167
215
  try {
168
216
  await RunChat({
169
- model, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar, jsonSchemaGrammarFile, threads, temperature, topK,
170
- topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty,
171
- repeatPresencePenalty, maxTokens, noHistory, printTimings
217
+ model, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize,
218
+ grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty,
219
+ repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens,
220
+ noHistory, environmentFunctions, noInfoLog, printTimings
172
221
  });
173
222
  }
174
223
  catch (err) {
@@ -177,41 +226,81 @@ export const ChatCommand = {
177
226
  }
178
227
  }
179
228
  };
180
- async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar: grammarArg, jsonSchemaGrammarFile: jsonSchemaGrammarFilePath, threads, temperature, topK, topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, printTimings }) {
181
- const { LlamaChatSession } = await import("../../llamaEvaluator/LlamaChatSession.js");
182
- const { LlamaModel } = await import("../../llamaEvaluator/LlamaModel.js");
183
- const { LlamaContext } = await import("../../llamaEvaluator/LlamaContext.js");
184
- const { LlamaGrammar } = await import("../../llamaEvaluator/LlamaGrammar.js");
185
- const { LlamaJsonSchemaGrammar } = await import("../../llamaEvaluator/LlamaJsonSchemaGrammar.js");
229
+ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize, grammar: grammarArg, jsonSchemaGrammarFile: jsonSchemaGrammarFilePath, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, noInfoLog, printTimings }) {
230
+ if (noInfoLog)
231
+ console.info(`${chalk.yellow("Log level:")} warn`);
232
+ const llama = await getLlama("lastBuild", {
233
+ logLevel: noInfoLog
234
+ ? LlamaLogLevel.warn
235
+ : LlamaLogLevel.debug
236
+ });
237
+ const logBatchSize = batchSize != null;
238
+ if (systemInfo)
239
+ console.log(llama.systemInfo);
240
+ if (systemPromptFile != null && systemPromptFile !== "") {
241
+ if (systemPrompt != null && systemPrompt !== "" && systemPrompt !== defaultChatSystemPrompt)
242
+ console.warn(chalk.yellow("Both `systemPrompt` and `systemPromptFile` were specified. `systemPromptFile` will be used."));
243
+ systemPrompt = await fs.readFile(path.resolve(process.cwd(), systemPromptFile), "utf8");
244
+ }
245
+ if (promptFile != null && promptFile !== "") {
246
+ if (prompt != null && prompt !== "")
247
+ console.warn(chalk.yellow("Both `prompt` and `promptFile` were specified. `promptFile` will be used."));
248
+ prompt = await fs.readFile(path.resolve(process.cwd(), promptFile), "utf8");
249
+ }
250
+ if (batchSize == null)
251
+ batchSize = contextSize;
252
+ else if (batchSize > contextSize) {
253
+ console.warn(chalk.yellow("Batch size is greater than the context size. Batch size will be set to the context size."));
254
+ batchSize = contextSize;
255
+ }
186
256
  let initialPrompt = prompt ?? null;
187
- const model = new LlamaModel({
257
+ const model = await withStatusLogs({
258
+ loading: chalk.blue("Loading model"),
259
+ success: chalk.blue("Model loaded"),
260
+ fail: chalk.blue("Failed to load model")
261
+ }, async () => new LlamaModel({
262
+ llama,
188
263
  modelPath: path.resolve(process.cwd(), modelArg),
189
264
  gpuLayers: gpuLayers != null ? gpuLayers : undefined
190
- });
191
- const context = new LlamaContext({
265
+ }));
266
+ const context = await withStatusLogs({
267
+ loading: chalk.blue("Creating context"),
268
+ success: chalk.blue("Context created"),
269
+ fail: chalk.blue("Failed to create context")
270
+ }, async () => new LlamaContext({
192
271
  model,
193
272
  contextSize,
273
+ batchSize,
194
274
  threads
195
- });
275
+ }));
196
276
  const grammar = jsonSchemaGrammarFilePath != null
197
- ? new LlamaJsonSchemaGrammar(await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
277
+ ? new LlamaJsonSchemaGrammar(llama, await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
198
278
  : grammarArg !== "text"
199
- ? await LlamaGrammar.getFor(grammarArg)
279
+ ? await LlamaGrammar.getFor(llama, grammarArg)
200
280
  : undefined;
201
- const bos = context.getBosString(); // bos = beginning of sequence
202
- const eos = context.getEosString(); // eos = end of sequence
203
- const promptWrapper = getChatWrapper(wrapper, bos);
281
+ const bos = model.tokens.bosString; // bos = beginning of sequence
282
+ const eos = model.tokens.bosString; // eos = end of sequence
283
+ const chatWrapper = getChatWrapper(wrapper, {
284
+ bosString: bos,
285
+ filename: model.filename,
286
+ typeDescription: model.typeDescription
287
+ });
204
288
  const session = new LlamaChatSession({
205
- context,
206
- printLLamaSystemInfo: systemInfo,
289
+ contextSequence: context.getSequence(),
207
290
  systemPrompt,
208
- promptWrapper
291
+ chatWrapper: chatWrapper
209
292
  });
293
+ await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
210
294
  if (grammarArg != "text" && jsonSchemaGrammarFilePath != null)
211
295
  console.warn(chalk.yellow("Both `grammar` and `jsonSchemaGrammarFile` were specified. `jsonSchemaGrammarFile` will be used."));
296
+ console.info(`${chalk.yellow("Context size:")} ${context.contextSize}`);
297
+ if (logBatchSize)
298
+ console.info(`${chalk.yellow("Batch size:")} ${context.batchSize}`);
299
+ console.info(`${chalk.yellow("Train context size:")} ${model.trainContextSize}`);
300
+ console.info(`${chalk.yellow("Model type:")} ${model.typeDescription}`);
212
301
  console.info(`${chalk.yellow("BOS:")} ${bos}`);
213
302
  console.info(`${chalk.yellow("EOS:")} ${eos}`);
214
- console.info(`${chalk.yellow("Chat wrapper:")} ${promptWrapper.wrapperName}`);
303
+ console.info(`${chalk.yellow("Chat wrapper:")} ${chatWrapper.wrapperName}`);
215
304
  console.info(`${chalk.yellow("Repeat penalty:")} ${repeatPenalty} (apply to last ${lastTokensRepeatPenalty} tokens)`);
216
305
  if (repeatFrequencyPenalty != null)
217
306
  console.info(`${chalk.yellow("Repeat frequency penalty:")} ${repeatFrequencyPenalty}`);
@@ -223,13 +312,10 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
223
312
  console.info(`${chalk.yellow("JSON schema grammar file:")} ${path.relative(process.cwd(), path.resolve(process.cwd(), jsonSchemaGrammarFilePath))}`);
224
313
  else if (grammarArg !== "text")
225
314
  console.info(`${chalk.yellow("Grammar:")} ${grammarArg}`);
226
- await withOra({
227
- loading: chalk.blue("Loading model"),
228
- success: chalk.blue("Model loaded"),
229
- fail: chalk.blue("Failed to load model")
230
- }, async () => {
231
- await session.init();
232
- });
315
+ if (environmentFunctions && grammar != null) {
316
+ console.warn(chalk.yellow("Environment functions are disabled since a grammar is already specified"));
317
+ environmentFunctions = false;
318
+ }
233
319
  // this is for ora to not interfere with readline
234
320
  await new Promise(resolve => setTimeout(resolve, 1));
235
321
  const replHistory = await ReplHistory.load(chatCommandHistoryFilePath, !noHistory);
@@ -260,8 +346,9 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
260
346
  const [startColor, endColor] = chalk.blue("MIDDLE").split("MIDDLE");
261
347
  process.stdout.write(startColor);
262
348
  await session.prompt(input, {
263
- grammar,
349
+ grammar: grammar,
264
350
  temperature,
351
+ minP,
265
352
  topK,
266
353
  topP,
267
354
  repeatPenalty: {
@@ -272,37 +359,62 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
272
359
  lastTokens: lastTokensRepeatPenalty
273
360
  },
274
361
  maxTokens: maxTokens === -1
275
- ? context.getContextSize()
362
+ ? context.contextSize
276
363
  : maxTokens <= 0
277
364
  ? undefined
278
365
  : maxTokens,
279
366
  onToken(chunk) {
280
- process.stdout.write(session.context.decode(chunk));
281
- }
367
+ process.stdout.write(model.detokenize(chunk));
368
+ },
369
+ functions: (grammar == null && environmentFunctions)
370
+ ? defaultEnvironmentFunctions
371
+ : undefined
282
372
  });
283
373
  process.stdout.write(endColor);
284
374
  console.log();
285
375
  if (printTimings)
286
- context.printTimings();
376
+ await context.printTimings();
287
377
  }
288
378
  }
289
- function getChatWrapper(wrapper, bos) {
379
+ const defaultEnvironmentFunctions = {
380
+ getDate: defineChatSessionFunction({
381
+ description: "Retrieve the current date",
382
+ handler() {
383
+ return new Date().toLocaleDateString();
384
+ }
385
+ }),
386
+ getTime: defineChatSessionFunction({
387
+ description: "Retrieve the current time",
388
+ handler() {
389
+ return new Date().toLocaleTimeString();
390
+ }
391
+ })
392
+ };
393
+ function getChatWrapper(wrapper, { bosString, filename, typeDescription }) {
290
394
  switch (wrapper) {
291
395
  case "general":
292
- return new GeneralChatPromptWrapper();
396
+ return new GeneralChatWrapper();
293
397
  case "llamaChat":
294
- return new LlamaChatPromptWrapper();
398
+ return new LlamaChatWrapper();
399
+ case "alpacaChat":
400
+ return new AlpacaChatWrapper();
401
+ case "functionary":
402
+ return new FunctionaryChatWrapper();
295
403
  case "chatML":
296
- return new ChatMLChatPromptWrapper();
404
+ return new ChatMLChatWrapper();
297
405
  case "falconChat":
298
- return new FalconChatPromptWrapper();
406
+ return new FalconChatWrapper();
299
407
  default:
300
408
  }
301
409
  if (wrapper === "auto") {
302
- const chatWrapper = getChatWrapperByBos(bos);
410
+ const chatWrapper = resolveChatWrapperBasedOnModel({
411
+ bosString,
412
+ filename,
413
+ typeDescription
414
+ });
303
415
  if (chatWrapper != null)
304
416
  return new chatWrapper();
305
- return new GeneralChatPromptWrapper();
417
+ return new GeneralChatWrapper();
306
418
  }
307
419
  void (wrapper);
308
420
  throw new Error("Unknown wrapper: " + wrapper);