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

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 (383) hide show
  1. package/README.md +1 -1
  2. package/dist/ChatWrapper.js +4 -0
  3. package/dist/ChatWrapper.js.map +1 -1
  4. package/dist/bindings/AddonTypes.d.ts +23 -0
  5. package/dist/bindings/Llama.d.ts +11 -0
  6. package/dist/bindings/Llama.js +56 -4
  7. package/dist/bindings/Llama.js.map +1 -1
  8. package/dist/bindings/getLlama.d.ts +20 -2
  9. package/dist/bindings/getLlama.js +15 -5
  10. package/dist/bindings/getLlama.js.map +1 -1
  11. package/dist/bindings/types.d.ts +15 -0
  12. package/dist/bindings/types.js +27 -2
  13. package/dist/bindings/types.js.map +1 -1
  14. package/dist/bindings/utils/MemoryOrchestrator.d.ts +21 -0
  15. package/dist/bindings/utils/MemoryOrchestrator.js +49 -0
  16. package/dist/bindings/utils/MemoryOrchestrator.js.map +1 -0
  17. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +1 -1
  18. package/dist/bindings/utils/cloneLlamaCppRepo.js +26 -25
  19. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -1
  20. package/dist/bindings/utils/compileLLamaCpp.js +2 -2
  21. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  22. package/dist/bindings/utils/getLlamaWithoutBackend.d.ts +5 -0
  23. package/dist/bindings/utils/getLlamaWithoutBackend.js +27 -0
  24. package/dist/bindings/utils/getLlamaWithoutBackend.js.map +1 -0
  25. package/dist/bindings/utils/resolveCustomCmakeOptions.js +2 -2
  26. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -1
  27. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +2 -1
  28. package/dist/chatWrappers/AlpacaChatWrapper.js +9 -2
  29. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  30. package/dist/chatWrappers/ChatMLChatWrapper.js +12 -10
  31. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  32. package/dist/chatWrappers/FalconChatWrapper.d.ts +2 -1
  33. package/dist/chatWrappers/FalconChatWrapper.js +28 -11
  34. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  35. package/dist/chatWrappers/FunctionaryChatWrapper.js +59 -45
  36. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  37. package/dist/chatWrappers/GemmaChatWrapper.js +9 -7
  38. package/dist/chatWrappers/GemmaChatWrapper.js.map +1 -1
  39. package/dist/chatWrappers/GeneralChatWrapper.d.ts +2 -1
  40. package/dist/chatWrappers/GeneralChatWrapper.js +35 -12
  41. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  42. package/dist/chatWrappers/LlamaChatWrapper.d.ts +7 -0
  43. package/dist/chatWrappers/LlamaChatWrapper.js +26 -8
  44. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -1
  45. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +73 -0
  46. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +355 -0
  47. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -0
  48. package/dist/{TemplateChatWrapper.d.ts → chatWrappers/generic/TemplateChatWrapper.d.ts} +6 -9
  49. package/dist/{TemplateChatWrapper.js → chatWrappers/generic/TemplateChatWrapper.js} +31 -69
  50. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -0
  51. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +33 -0
  52. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js +45 -0
  53. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js.map +1 -0
  54. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.d.ts +4 -0
  55. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +206 -0
  56. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -0
  57. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +67 -0
  58. package/dist/chatWrappers/utils/resolveChatWrapper.js +208 -0
  59. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -0
  60. package/dist/cli/cli.js +1 -1
  61. package/dist/cli/cli.js.map +1 -1
  62. package/dist/cli/commands/BuildCommand.js +1 -1
  63. package/dist/cli/commands/BuildCommand.js.map +1 -1
  64. package/dist/cli/commands/ChatCommand.d.ts +9 -5
  65. package/dist/cli/commands/ChatCommand.js +203 -118
  66. package/dist/cli/commands/ChatCommand.js.map +1 -1
  67. package/dist/cli/commands/ClearCommand.d.ts +1 -1
  68. package/dist/cli/commands/ClearCommand.js +5 -5
  69. package/dist/cli/commands/ClearCommand.js.map +1 -1
  70. package/dist/cli/commands/CompleteCommand.d.ts +5 -3
  71. package/dist/cli/commands/CompleteCommand.js +136 -85
  72. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  73. package/dist/cli/commands/DebugCommand.js +4 -4
  74. package/dist/cli/commands/DownloadCommand.js +3 -4
  75. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  76. package/dist/cli/commands/InfillCommand.d.ts +5 -3
  77. package/dist/cli/commands/InfillCommand.js +138 -89
  78. package/dist/cli/commands/InfillCommand.js.map +1 -1
  79. package/dist/cli/commands/{InspectCommand.d.ts → inspect/InspectCommand.d.ts} +1 -4
  80. package/dist/cli/commands/inspect/InspectCommand.js +17 -0
  81. package/dist/cli/commands/inspect/InspectCommand.js.map +1 -0
  82. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +11 -0
  83. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +121 -0
  84. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -0
  85. package/dist/cli/commands/inspect/commands/InspectGpuCommand.d.ts +4 -0
  86. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +136 -0
  87. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -0
  88. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +15 -0
  89. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +579 -0
  90. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -0
  91. package/dist/cli/recommendedModels.d.ts +2 -0
  92. package/dist/cli/recommendedModels.js +281 -0
  93. package/dist/cli/recommendedModels.js.map +1 -0
  94. package/dist/cli/utils/ConsoleInteraction.d.ts +23 -0
  95. package/dist/cli/utils/ConsoleInteraction.js +122 -0
  96. package/dist/cli/utils/ConsoleInteraction.js.map +1 -0
  97. package/dist/cli/utils/ConsoleTable.d.ts +23 -0
  98. package/dist/cli/utils/ConsoleTable.js +86 -0
  99. package/dist/cli/utils/ConsoleTable.js.map +1 -0
  100. package/dist/cli/utils/basicChooseFromListConsoleInteraction.d.ts +13 -0
  101. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js +111 -0
  102. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js.map +1 -0
  103. package/dist/cli/utils/consolePromptQuestion.d.ts +5 -0
  104. package/dist/cli/utils/consolePromptQuestion.js +80 -0
  105. package/dist/cli/utils/consolePromptQuestion.js.map +1 -0
  106. package/dist/cli/utils/getReadablePath.d.ts +1 -0
  107. package/dist/cli/utils/getReadablePath.js +14 -0
  108. package/dist/cli/utils/getReadablePath.js.map +1 -0
  109. package/dist/cli/utils/printCommonInfoLines.d.ts +9 -0
  110. package/dist/cli/utils/printCommonInfoLines.js +70 -0
  111. package/dist/cli/utils/printCommonInfoLines.js.map +1 -0
  112. package/dist/cli/utils/printInfoLine.d.ts +12 -0
  113. package/dist/cli/utils/printInfoLine.js +54 -0
  114. package/dist/cli/utils/printInfoLine.js.map +1 -0
  115. package/dist/cli/utils/resolveCommandGgufPath.d.ts +2 -0
  116. package/dist/cli/utils/resolveCommandGgufPath.js +494 -0
  117. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -0
  118. package/dist/cli/utils/resolveHeaderFlag.d.ts +1 -0
  119. package/dist/cli/utils/resolveHeaderFlag.js +21 -0
  120. package/dist/cli/utils/resolveHeaderFlag.js.map +1 -0
  121. package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +19 -0
  122. package/dist/cli/utils/resolveModelRecommendationFileOptions.js +7 -0
  123. package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -0
  124. package/dist/cli/utils/splitAnsiToLines.d.ts +1 -0
  125. package/dist/cli/utils/splitAnsiToLines.js +17 -0
  126. package/dist/cli/utils/splitAnsiToLines.js.map +1 -0
  127. package/dist/config.d.ts +5 -0
  128. package/dist/config.js +11 -2
  129. package/dist/config.js.map +1 -1
  130. package/dist/consts.d.ts +2 -0
  131. package/dist/consts.js +8 -0
  132. package/dist/consts.js.map +1 -1
  133. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +8 -1
  134. package/dist/evaluator/LlamaChat/LlamaChat.js +15 -6
  135. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  136. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +9 -2
  137. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +5 -3
  138. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  139. package/dist/evaluator/LlamaCompletion.d.ts +9 -2
  140. package/dist/evaluator/LlamaCompletion.js +11 -6
  141. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  142. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +30 -3
  143. package/dist/evaluator/LlamaContext/LlamaContext.js +227 -102
  144. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  145. package/dist/evaluator/LlamaContext/types.d.ts +57 -6
  146. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -0
  147. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -0
  148. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.d.ts +2 -0
  149. package/dist/evaluator/LlamaContext/utils/{resolveBatchItemsPrioritizingStrategy.js → resolveBatchItemsPrioritizationStrategy.js} +4 -4
  150. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js.map +1 -0
  151. package/dist/evaluator/LlamaEmbeddingContext.d.ts +23 -2
  152. package/dist/evaluator/LlamaEmbeddingContext.js +4 -5
  153. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  154. package/dist/evaluator/LlamaGrammar.d.ts +3 -2
  155. package/dist/evaluator/LlamaGrammar.js +3 -2
  156. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  157. package/dist/evaluator/LlamaModel.d.ts +56 -6
  158. package/dist/evaluator/LlamaModel.js +99 -7
  159. package/dist/evaluator/LlamaModel.js.map +1 -1
  160. package/dist/evaluator/TokenBias.d.ts +22 -0
  161. package/dist/evaluator/TokenBias.js +33 -0
  162. package/dist/evaluator/TokenBias.js.map +1 -0
  163. package/dist/evaluator/TokenMeter.d.ts +54 -0
  164. package/dist/evaluator/TokenMeter.js +86 -0
  165. package/dist/evaluator/TokenMeter.js.map +1 -0
  166. package/dist/gguf/consts.d.ts +3 -0
  167. package/dist/gguf/consts.js +8 -0
  168. package/dist/gguf/consts.js.map +1 -0
  169. package/dist/gguf/errors/InvalidGgufMagicError.d.ts +3 -0
  170. package/dist/gguf/errors/InvalidGgufMagicError.js +6 -0
  171. package/dist/gguf/errors/InvalidGgufMagicError.js.map +1 -0
  172. package/dist/gguf/errors/UnsupportedGgufValueTypeError.d.ts +4 -0
  173. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js +9 -0
  174. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js.map +1 -0
  175. package/dist/gguf/fileReaders/GgufFileReader.d.ts +33 -0
  176. package/dist/gguf/fileReaders/GgufFileReader.js +76 -0
  177. package/dist/gguf/fileReaders/GgufFileReader.js.map +1 -0
  178. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +17 -0
  179. package/dist/gguf/fileReaders/GgufFsFileReader.js +45 -0
  180. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -0
  181. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +22 -0
  182. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js +63 -0
  183. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -0
  184. package/dist/gguf/insights/GgufInsights.d.ts +42 -0
  185. package/dist/gguf/insights/GgufInsights.js +361 -0
  186. package/dist/gguf/insights/GgufInsights.js.map +1 -0
  187. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +87 -0
  188. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +136 -0
  189. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -0
  190. package/dist/gguf/insights/utils/resolveContextContextSizeOption.d.ts +18 -0
  191. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js +52 -0
  192. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -0
  193. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +14 -0
  194. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +177 -0
  195. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -0
  196. package/dist/gguf/insights/utils/scoreLevels.d.ts +5 -0
  197. package/dist/gguf/insights/utils/scoreLevels.js +16 -0
  198. package/dist/gguf/insights/utils/scoreLevels.js.map +1 -0
  199. package/dist/gguf/parser/GgufV2Parser.d.ts +19 -0
  200. package/dist/gguf/parser/GgufV2Parser.js +115 -0
  201. package/dist/gguf/parser/GgufV2Parser.js.map +1 -0
  202. package/dist/gguf/parser/GgufV3Parser.d.ts +3 -0
  203. package/dist/gguf/parser/GgufV3Parser.js +4 -0
  204. package/dist/gguf/parser/GgufV3Parser.js.map +1 -0
  205. package/dist/gguf/parser/parseGguf.d.ts +8 -0
  206. package/dist/gguf/parser/parseGguf.js +58 -0
  207. package/dist/gguf/parser/parseGguf.js.map +1 -0
  208. package/dist/gguf/readGgufFileInfo.d.ts +30 -0
  209. package/dist/gguf/readGgufFileInfo.js +38 -0
  210. package/dist/gguf/readGgufFileInfo.js.map +1 -0
  211. package/dist/gguf/types/GgufFileInfoTypes.d.ts +52 -0
  212. package/dist/gguf/types/GgufFileInfoTypes.js +18 -0
  213. package/dist/gguf/types/GgufFileInfoTypes.js.map +1 -0
  214. package/dist/gguf/types/GgufMetadataTypes.d.ts +330 -0
  215. package/dist/gguf/types/GgufMetadataTypes.js +86 -0
  216. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -0
  217. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +37 -0
  218. package/dist/gguf/types/GgufTensorInfoTypes.js +33 -0
  219. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -0
  220. package/dist/gguf/utils/GgufReadOffset.d.ts +6 -0
  221. package/dist/gguf/utils/GgufReadOffset.js +18 -0
  222. package/dist/gguf/utils/GgufReadOffset.js.map +1 -0
  223. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.d.ts +5 -0
  224. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js +38 -0
  225. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -0
  226. package/dist/gguf/utils/getGgufFileTypeName.d.ts +4 -0
  227. package/dist/gguf/utils/getGgufFileTypeName.js +13 -0
  228. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -0
  229. package/dist/gguf/utils/getGgufMetadataArchitectureData.d.ts +3 -0
  230. package/dist/gguf/utils/getGgufMetadataArchitectureData.js +4 -0
  231. package/dist/gguf/utils/getGgufMetadataArchitectureData.js.map +1 -0
  232. package/dist/gguf/utils/normalizeGgufDownloadUrl.d.ts +1 -0
  233. package/dist/gguf/utils/normalizeGgufDownloadUrl.js +16 -0
  234. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -0
  235. package/dist/index.d.ts +14 -7
  236. package/dist/index.js +12 -6
  237. package/dist/index.js.map +1 -1
  238. package/dist/types.d.ts +1 -1
  239. package/dist/utils/InsufficientMemoryError.d.ts +3 -0
  240. package/dist/utils/InsufficientMemoryError.js +6 -0
  241. package/dist/utils/InsufficientMemoryError.js.map +1 -0
  242. package/dist/utils/LlamaText.d.ts +25 -10
  243. package/dist/utils/LlamaText.js +205 -23
  244. package/dist/utils/LlamaText.js.map +1 -1
  245. package/dist/utils/StopGenerationDetector.js +3 -1
  246. package/dist/utils/StopGenerationDetector.js.map +1 -1
  247. package/dist/utils/findBestOption.d.ts +4 -0
  248. package/dist/utils/findBestOption.js +15 -0
  249. package/dist/utils/findBestOption.js.map +1 -0
  250. package/dist/utils/getConsoleLogPrefix.js +1 -1
  251. package/dist/utils/getQueuedTokensBeforeStopTrigger.js +3 -3
  252. package/dist/utils/getQueuedTokensBeforeStopTrigger.js.map +1 -1
  253. package/dist/utils/getReadableContextSize.d.ts +1 -0
  254. package/dist/utils/getReadableContextSize.js +7 -0
  255. package/dist/utils/getReadableContextSize.js.map +1 -0
  256. package/dist/utils/gitReleaseBundles.js +68 -1
  257. package/dist/utils/gitReleaseBundles.js.map +1 -1
  258. package/dist/utils/isToken.d.ts +2 -0
  259. package/dist/utils/isToken.js +4 -0
  260. package/dist/utils/isToken.js.map +1 -0
  261. package/dist/utils/isUrl.d.ts +1 -0
  262. package/dist/utils/isUrl.js +15 -0
  263. package/dist/utils/isUrl.js.map +1 -0
  264. package/dist/utils/mergeUnionTypes.d.ts +4 -0
  265. package/dist/utils/parseModelFileName.d.ts +1 -0
  266. package/dist/utils/parseModelFileName.js +6 -1
  267. package/dist/utils/parseModelFileName.js.map +1 -1
  268. package/dist/utils/prettyPrintObject.d.ts +10 -1
  269. package/dist/utils/prettyPrintObject.js +57 -13
  270. package/dist/utils/prettyPrintObject.js.map +1 -1
  271. package/dist/utils/spawnCommand.js.map +1 -1
  272. package/dist/utils/tokenizeInput.d.ts +1 -1
  273. package/dist/utils/tokenizeInput.js +6 -3
  274. package/dist/utils/tokenizeInput.js.map +1 -1
  275. package/dist/utils/withOra.d.ts +2 -0
  276. package/dist/utils/withOra.js +14 -8
  277. package/dist/utils/withOra.js.map +1 -1
  278. package/dist/utils/withProgressLog.d.ts +23 -0
  279. package/dist/utils/withProgressLog.js +211 -0
  280. package/dist/utils/withProgressLog.js.map +1 -0
  281. package/dist/utils/withStatusLogs.js +1 -1
  282. package/dist/utils/withStatusLogs.js.map +1 -1
  283. package/llama/CMakeLists.txt +5 -5
  284. package/llama/addon.cpp +159 -9
  285. package/llama/binariesGithubRelease.json +1 -1
  286. package/llama/gitRelease.bundle +0 -0
  287. package/llama/gpuInfo/cuda-gpu-info.cu +21 -0
  288. package/llama/gpuInfo/cuda-gpu-info.h +3 -0
  289. package/llama/gpuInfo/metal-gpu-info.h +4 -1
  290. package/llama/gpuInfo/metal-gpu-info.mm +14 -1
  291. package/llama/gpuInfo/vulkan-gpu-info.cpp +20 -2
  292. package/llama/gpuInfo/vulkan-gpu-info.h +2 -0
  293. package/llama/grammars/README.md +10 -0
  294. package/llama/llama.cpp.info.json +1 -1
  295. package/llama/toolchains/win32.host-x64.target-arm64.cmake +41 -0
  296. package/llamaBins/linux-arm64/_nlcBuildMetadata.json +1 -1
  297. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  298. package/llamaBins/linux-armv7l/_nlcBuildMetadata.json +1 -1
  299. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  300. package/llamaBins/linux-x64/_nlcBuildMetadata.json +1 -1
  301. package/llamaBins/linux-x64/llama-addon.node +0 -0
  302. package/llamaBins/linux-x64-cuda/_nlcBuildMetadata.json +1 -1
  303. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  304. package/llamaBins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -1
  305. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  306. package/llamaBins/mac-arm64-metal/_nlcBuildMetadata.json +1 -1
  307. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  308. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  309. package/llamaBins/mac-x64/_nlcBuildMetadata.json +1 -1
  310. package/llamaBins/mac-x64/llama-addon.node +0 -0
  311. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -0
  312. package/llamaBins/win-arm64/llama-addon.exp +0 -0
  313. package/llamaBins/win-arm64/llama-addon.lib +0 -0
  314. package/llamaBins/win-arm64/llama-addon.node +0 -0
  315. package/llamaBins/win-x64/_nlcBuildMetadata.json +1 -1
  316. package/llamaBins/win-x64/llama-addon.node +0 -0
  317. package/llamaBins/win-x64-cuda/_nlcBuildMetadata.json +1 -1
  318. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  319. package/llamaBins/win-x64-vulkan/_nlcBuildMetadata.json +1 -1
  320. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  321. package/package.json +15 -12
  322. package/dist/TemplateChatWrapper.js.map +0 -1
  323. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.d.ts +0 -33
  324. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js +0 -49
  325. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js.map +0 -1
  326. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +0 -13
  327. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +0 -63
  328. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +0 -1
  329. package/dist/cli/commands/InspectCommand.js +0 -113
  330. package/dist/cli/commands/InspectCommand.js.map +0 -1
  331. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  332. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  333. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -2
  334. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  335. package/dist/gguf/GGUFInsights.d.ts +0 -28
  336. package/dist/gguf/GGUFInsights.js +0 -58
  337. package/dist/gguf/GGUFInsights.js.map +0 -1
  338. package/dist/gguf/GGUFMetadata.d.ts +0 -19
  339. package/dist/gguf/GGUFMetadata.js +0 -38
  340. package/dist/gguf/GGUFMetadata.js.map +0 -1
  341. package/dist/gguf/errors/InvalidGGUFMagicError.d.ts +0 -3
  342. package/dist/gguf/errors/InvalidGGUFMagicError.js +0 -6
  343. package/dist/gguf/errors/InvalidGGUFMagicError.js.map +0 -1
  344. package/dist/gguf/errors/MetadataNotParsedYetError.d.ts +0 -3
  345. package/dist/gguf/errors/MetadataNotParsedYetError.js +0 -6
  346. package/dist/gguf/errors/MetadataNotParsedYetError.js.map +0 -1
  347. package/dist/gguf/errors/MissingNodeLlamaError.d.ts +0 -3
  348. package/dist/gguf/errors/MissingNodeLlamaError.js +0 -6
  349. package/dist/gguf/errors/MissingNodeLlamaError.js.map +0 -1
  350. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.d.ts +0 -5
  351. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js +0 -11
  352. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js.map +0 -1
  353. package/dist/gguf/errors/UnsupportedMetadataTypeError.d.ts +0 -4
  354. package/dist/gguf/errors/UnsupportedMetadataTypeError.js +0 -8
  355. package/dist/gguf/errors/UnsupportedMetadataTypeError.js.map +0 -1
  356. package/dist/gguf/ggufParser/GGUFParser.d.ts +0 -18
  357. package/dist/gguf/ggufParser/GGUFParser.js +0 -123
  358. package/dist/gguf/ggufParser/GGUFParser.js.map +0 -1
  359. package/dist/gguf/ggufParser/GGUFTypes.d.ts +0 -257
  360. package/dist/gguf/ggufParser/GGUFTypes.js +0 -2
  361. package/dist/gguf/ggufParser/GGUFTypes.js.map +0 -1
  362. package/dist/gguf/ggufParser/checkArchitecture.d.ts +0 -14
  363. package/dist/gguf/ggufParser/checkArchitecture.js +0 -74
  364. package/dist/gguf/ggufParser/checkArchitecture.js.map +0 -1
  365. package/dist/gguf/ggufParser/stream/GGUFBaseStream.d.ts +0 -38
  366. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js +0 -83
  367. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js.map +0 -1
  368. package/dist/gguf/ggufParser/stream/GGUFFetchStream.d.ts +0 -14
  369. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js +0 -35
  370. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js.map +0 -1
  371. package/dist/gguf/ggufParser/stream/GGUFReadStream.d.ts +0 -15
  372. package/dist/gguf/ggufParser/stream/GGUFReadStream.js +0 -40
  373. package/dist/gguf/ggufParser/stream/GGUFReadStream.js.map +0 -1
  374. package/dist/utils/parseModelTypeDescription.d.ts +0 -6
  375. package/dist/utils/parseModelTypeDescription.js +0 -9
  376. package/dist/utils/parseModelTypeDescription.js.map +0 -1
  377. package/dist/utils/resolveChatWrapper.d.ts +0 -4
  378. package/dist/utils/resolveChatWrapper.js +0 -16
  379. package/dist/utils/resolveChatWrapper.js.map +0 -1
  380. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.d.ts +0 -0
  381. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.js +0 -0
  382. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.d.ts +0 -0
  383. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.js +0 -0
@@ -1,16 +1,19 @@
1
1
  import { CommandModule } from "yargs";
2
2
  import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
3
- import { ChatWrapperTypeName } from "../../bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js";
3
+ import { SpecializedChatWrapperTypeName } from "../../chatWrappers/utils/resolveChatWrapper.js";
4
4
  type ChatCommand = {
5
- model: string;
5
+ modelPath?: string;
6
+ header?: string[];
6
7
  systemInfo: boolean;
7
8
  systemPrompt: string;
8
9
  systemPromptFile?: string;
9
10
  prompt?: string;
10
11
  promptFile?: string;
11
- wrapper: ChatWrapperTypeName;
12
- contextSize: number;
12
+ wrapper: SpecializedChatWrapperTypeName | "auto";
13
+ noJinja?: boolean;
14
+ contextSize?: number;
13
15
  batchSize?: number;
16
+ noTrimWhitespace: boolean;
14
17
  grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[1];
15
18
  jsonSchemaGrammarFile?: string;
16
19
  threads: number;
@@ -27,7 +30,8 @@ type ChatCommand = {
27
30
  maxTokens: number;
28
31
  noHistory: boolean;
29
32
  environmentFunctions: boolean;
30
- noInfoLog: boolean;
33
+ debug: boolean;
34
+ meter: boolean;
31
35
  printTimings: boolean;
32
36
  };
33
37
  export declare const ChatCommand: CommandModule<object, ChatCommand>;
@@ -6,33 +6,43 @@ import fs from "fs-extra";
6
6
  import { chatCommandHistoryFilePath, defaultChatSystemPrompt } from "../../config.js";
7
7
  import { getIsInDocumentationMode } from "../../state.js";
8
8
  import { ReplHistory } from "../../utils/ReplHistory.js";
9
- import withStatusLogs from "../../utils/withStatusLogs.js";
10
9
  import { defineChatSessionFunction } from "../../evaluator/LlamaChatSession/utils/defineChatSessionFunction.js";
11
10
  import { getLlama } from "../../bindings/getLlama.js";
12
11
  import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
13
12
  import { LlamaChatSession } from "../../evaluator/LlamaChatSession/LlamaChatSession.js";
14
13
  import { LlamaJsonSchemaGrammar } from "../../evaluator/LlamaJsonSchemaGrammar.js";
15
- import { LlamaLogLevel } from "../../bindings/types.js";
16
- import { chatWrapperTypeNames, resolveChatWrapperBasedOnWrapperTypeName } from "../../bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js";
14
+ import { LlamaLogLevel, LlamaLogLevelGreaterThan } from "../../bindings/types.js";
15
+ import withOra from "../../utils/withOra.js";
16
+ import { TokenMeter } from "../../evaluator/TokenMeter.js";
17
+ import { printInfoLine } from "../utils/printInfoLine.js";
18
+ import { resolveChatWrapper, specializedChatWrapperTypeNames } from "../../chatWrappers/utils/resolveChatWrapper.js";
19
+ import { GeneralChatWrapper } from "../../chatWrappers/GeneralChatWrapper.js";
20
+ import { printCommonInfoLines } from "../utils/printCommonInfoLines.js";
21
+ import { resolveCommandGgufPath } from "../utils/resolveCommandGgufPath.js";
22
+ import { withProgressLog } from "../../utils/withProgressLog.js";
23
+ import { resolveHeaderFlag } from "../utils/resolveHeaderFlag.js";
17
24
  export const ChatCommand = {
18
- command: "chat",
25
+ command: "chat [modelPath]",
19
26
  describe: "Chat with a Llama model",
20
27
  builder(yargs) {
21
28
  const isInDocumentationMode = getIsInDocumentationMode();
22
29
  return yargs
23
- .option("model", {
24
- alias: "m",
30
+ .option("modelPath", {
31
+ alias: ["m", "model", "path", "url"],
25
32
  type: "string",
26
- demandOption: true,
27
- description: "Llama model file to use for the chat",
28
- group: "Required:"
33
+ description: "Llama model file to use for the chat. Can be a path to a local file or a URL of a model file to download"
34
+ })
35
+ .option("header", {
36
+ alias: ["H"],
37
+ type: "string",
38
+ array: true,
39
+ description: "Headers to use when downloading a model from a URL, in the format `key: value`. You can pass this option multiple times to add multiple headers."
29
40
  })
30
41
  .option("systemInfo", {
31
42
  alias: "i",
32
43
  type: "boolean",
33
44
  default: false,
34
- description: "Print llama.cpp system info",
35
- group: "Optional:"
45
+ description: "Print llama.cpp system info"
36
46
  })
37
47
  .option("systemPrompt", {
38
48
  alias: "s",
@@ -40,175 +50,169 @@ export const ChatCommand = {
40
50
  default: defaultChatSystemPrompt,
41
51
  defaultDescription: " ",
42
52
  description: "System prompt to use against the model" +
43
- (isInDocumentationMode ? "" : (". [default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]")),
44
- group: "Optional:"
53
+ (isInDocumentationMode ? "" : (". [default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]"))
45
54
  })
46
55
  .option("systemPromptFile", {
47
56
  type: "string",
48
- description: "Path to a file to load text from and use as as the model system prompt",
49
- group: "Optional:"
57
+ description: "Path to a file to load text from and use as as the model system prompt"
50
58
  })
51
59
  .option("prompt", {
52
60
  type: "string",
53
- description: "First prompt to automatically send to the model when starting the chat",
54
- group: "Optional:"
61
+ description: "First prompt to automatically send to the model when starting the chat"
55
62
  })
56
63
  .option("promptFile", {
57
64
  type: "string",
58
- 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",
59
- group: "Optional:"
65
+ 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"
60
66
  })
61
67
  .option("wrapper", {
62
68
  alias: "w",
63
69
  type: "string",
64
70
  default: "auto",
65
- choices: chatWrapperTypeNames,
66
- description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token",
67
- group: "Optional:"
71
+ choices: ["auto", ...specializedChatWrapperTypeNames],
72
+ description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token"
73
+ })
74
+ .option("noJinja", {
75
+ type: "boolean",
76
+ default: false,
77
+ description: "Don't use a Jinja wrapper, even if it's the best option for the model"
68
78
  })
69
79
  .option("contextSize", {
70
80
  alias: "c",
71
81
  type: "number",
72
- default: 1024 * 4,
73
82
  description: "Context size to use for the model context",
74
- group: "Optional:"
83
+ default: -1,
84
+ defaultDescription: "Automatically determined based on the available VRAM"
75
85
  })
76
86
  .option("batchSize", {
77
87
  alias: "b",
78
88
  type: "number",
79
- description: "Batch size to use for the model context. The default value is the context size",
80
- group: "Optional:"
89
+ description: "Batch size to use for the model context. The default value is the context size"
90
+ })
91
+ .option("noTrimWhitespace", {
92
+ type: "boolean",
93
+ alias: ["noTrim"],
94
+ default: false,
95
+ description: "Don't trim whitespaces from the model response"
81
96
  })
82
97
  .option("grammar", {
83
98
  alias: "g",
84
99
  type: "string",
85
100
  default: "text",
86
101
  choices: ["text", "json", "list", "arithmetic", "japanese", "chess"],
87
- description: "Restrict the model response to a specific grammar, like JSON for example",
88
- group: "Optional:"
102
+ description: "Restrict the model response to a specific grammar, like JSON for example"
89
103
  })
90
104
  .option("jsonSchemaGrammarFile", {
91
105
  alias: ["jsgf"],
92
106
  type: "string",
93
- description: "File path to a JSON schema file, to restrict the model response to only generate output that conforms to the JSON schema",
94
- group: "Optional:"
107
+ description: "File path to a JSON schema file, to restrict the model response to only generate output that conforms to the JSON schema"
95
108
  })
96
109
  .option("threads", {
97
110
  type: "number",
98
111
  default: 6,
99
- description: "Number of threads to use for the evaluation of tokens",
100
- group: "Optional:"
112
+ description: "Number of threads to use for the evaluation of tokens"
101
113
  })
102
114
  .option("temperature", {
103
115
  alias: "t",
104
116
  type: "number",
105
117
  default: 0,
106
- 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.",
107
- group: "Optional:"
118
+ 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."
108
119
  })
109
120
  .option("minP", {
110
121
  alias: "mp",
111
122
  type: "number",
112
123
  default: 0,
113
- 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`.",
114
- group: "Optional:"
124
+ 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`."
115
125
  })
116
126
  .option("topK", {
117
127
  alias: "k",
118
128
  type: "number",
119
129
  default: 40,
120
- description: "Limits the model to consider only the K most likely next tokens for sampling at each step of sequence generation. An integer number between `1` and the size of the vocabulary. Set to `0` to disable (which uses the full vocabulary). Only relevant when `temperature` is set to a value greater than 0.",
121
- group: "Optional:"
130
+ description: "Limits the model to consider only the K most likely next tokens for sampling at each step of sequence generation. An integer number between `1` and the size of the vocabulary. Set to `0` to disable (which uses the full vocabulary). Only relevant when `temperature` is set to a value greater than 0."
122
131
  })
123
132
  .option("topP", {
124
133
  alias: "p",
125
134
  type: "number",
126
135
  default: 0.95,
127
- description: "Dynamically selects the smallest set of tokens whose cumulative probability exceeds the threshold P, and samples the next token only from this set. A float number between `0` and `1`. Set to `1` to disable. Only relevant when `temperature` is set to a value greater than `0`.",
128
- group: "Optional:"
136
+ description: "Dynamically selects the smallest set of tokens whose cumulative probability exceeds the threshold P, and samples the next token only from this set. A float number between `0` and `1`. Set to `1` to disable. Only relevant when `temperature` is set to a value greater than `0`."
129
137
  })
130
138
  .option("gpuLayers", {
131
139
  alias: "gl",
132
140
  type: "number",
133
141
  description: "number of layers to store in VRAM",
134
- group: "Optional:"
142
+ default: -1,
143
+ defaultDescription: "Automatically determined based on the available VRAM"
135
144
  })
136
145
  .option("repeatPenalty", {
137
146
  alias: "rp",
138
147
  type: "number",
139
148
  default: 1.1,
140
- description: "Prevent the model from repeating the same token too much. Set to `1` to disable.",
141
- group: "Optional:"
149
+ description: "Prevent the model from repeating the same token too much. Set to `1` to disable."
142
150
  })
143
151
  .option("lastTokensRepeatPenalty", {
144
152
  alias: "rpn",
145
153
  type: "number",
146
154
  default: 64,
147
- description: "Number of recent tokens generated by the model to apply penalties to repetition of",
148
- group: "Optional:"
155
+ description: "Number of recent tokens generated by the model to apply penalties to repetition of"
149
156
  })
150
157
  .option("penalizeRepeatingNewLine", {
151
158
  alias: "rpnl",
152
159
  type: "boolean",
153
160
  default: true,
154
- description: "Penalize new line tokens. set \"--no-penalizeRepeatingNewLine\" or \"--no-rpnl\" to disable",
155
- group: "Optional:"
161
+ description: "Penalize new line tokens. set `--no-penalizeRepeatingNewLine` or `--no-rpnl` to disable"
156
162
  })
157
163
  .option("repeatFrequencyPenalty", {
158
164
  alias: "rfp",
159
165
  type: "number",
160
- description: "For n time a token is in the `punishTokens` array, lower its probability by `n * repeatFrequencyPenalty`. Set to a value between `0` and `1` to enable.",
161
- group: "Optional:"
166
+ description: "For n time a token is in the `punishTokens` array, lower its probability by `n * repeatFrequencyPenalty`. Set to a value between `0` and `1` to enable."
162
167
  })
163
168
  .option("repeatPresencePenalty", {
164
169
  alias: "rpp",
165
170
  type: "number",
166
- description: "Lower the probability of all the tokens in the `punishTokens` array by `repeatPresencePenalty`. Set to a value between `0` and `1` to enable.",
167
- group: "Optional:"
171
+ description: "Lower the probability of all the tokens in the `punishTokens` array by `repeatPresencePenalty`. Set to a value between `0` and `1` to enable."
168
172
  })
169
173
  .option("maxTokens", {
170
174
  alias: "mt",
171
175
  type: "number",
172
176
  default: 0,
173
- description: "Maximum number of tokens to generate in responses. Set to `0` to disable. Set to `-1` to set to the context size",
174
- group: "Optional:"
177
+ description: "Maximum number of tokens to generate in responses. Set to `0` to disable. Set to `-1` to set to the context size"
175
178
  })
176
179
  .option("noHistory", {
177
180
  alias: "nh",
178
181
  type: "boolean",
179
182
  default: false,
180
- description: "Don't load or save chat history",
181
- group: "Optional:"
183
+ description: "Don't load or save chat history"
182
184
  })
183
185
  .option("environmentFunctions", {
184
186
  alias: "ef",
185
187
  type: "boolean",
186
188
  default: false,
187
- description: "Provide access to environment functions like `getDate` and `getTime`",
188
- group: "Optional:"
189
+ description: "Provide access to environment functions like `getDate` and `getTime`"
190
+ })
191
+ .option("debug", {
192
+ alias: "d",
193
+ type: "boolean",
194
+ default: false,
195
+ description: "Print llama.cpp info and debug logs"
189
196
  })
190
- .option("noInfoLog", {
191
- alias: "nl",
197
+ .option("meter", {
192
198
  type: "boolean",
193
199
  default: false,
194
- description: "Disable llama.cpp info logs",
195
- group: "Optional:"
200
+ description: "Print how many tokens were used as input and output for each response"
196
201
  })
197
202
  .option("printTimings", {
198
203
  alias: "pt",
199
204
  type: "boolean",
200
205
  default: false,
201
- description: "Print llama.cpp timings after each response",
202
- group: "Optional:"
206
+ description: "Print llama.cpp timings after each response"
203
207
  });
204
208
  },
205
- 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 }) {
209
+ async handler({ modelPath, header, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, noJinja, contextSize, batchSize, noTrimWhitespace, grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, debug, meter, printTimings }) {
206
210
  try {
207
211
  await RunChat({
208
- model, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize,
209
- grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty,
210
- repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens,
211
- noHistory, environmentFunctions, noInfoLog, printTimings
212
+ modelPath, header, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, noJinja, contextSize, batchSize,
213
+ noTrimWhitespace, grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers,
214
+ lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens,
215
+ noHistory, environmentFunctions, debug, meter, printTimings
212
216
  });
213
217
  }
214
218
  catch (err) {
@@ -218,15 +222,23 @@ export const ChatCommand = {
218
222
  }
219
223
  }
220
224
  };
221
- 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 }) {
222
- if (noInfoLog)
223
- console.info(`${chalk.yellow("Log level:")} warn`);
225
+ async function RunChat({ modelPath: modelArg, header: headerArg, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, noJinja, contextSize, batchSize, noTrimWhitespace, grammar: grammarArg, jsonSchemaGrammarFile: jsonSchemaGrammarFilePath, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, debug, meter, printTimings }) {
226
+ if (contextSize === -1)
227
+ contextSize = undefined;
228
+ if (gpuLayers === -1)
229
+ gpuLayers = undefined;
230
+ const headers = resolveHeaderFlag(headerArg);
231
+ const trimWhitespace = !noTrimWhitespace;
232
+ if (debug)
233
+ console.info(`${chalk.yellow("Log level:")} debug`);
234
+ const llamaLogLevel = debug
235
+ ? LlamaLogLevel.debug
236
+ : LlamaLogLevel.warn;
224
237
  const llama = await getLlama("lastBuild", {
225
- logLevel: noInfoLog
226
- ? LlamaLogLevel.warn
227
- : LlamaLogLevel.debug
238
+ logLevel: llamaLogLevel
228
239
  });
229
240
  const logBatchSize = batchSize != null;
241
+ const resolvedModelPath = await resolveCommandGgufPath(modelArg, llama, headers);
230
242
  if (systemInfo)
231
243
  console.log(llama.systemInfo);
232
244
  if (systemPromptFile != null && systemPromptFile !== "") {
@@ -239,24 +251,39 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPrompt
239
251
  console.warn(chalk.yellow("Both `prompt` and `promptFile` were specified. `promptFile` will be used."));
240
252
  prompt = await fs.readFile(path.resolve(process.cwd(), promptFile), "utf8");
241
253
  }
242
- if (batchSize == null)
243
- batchSize = contextSize;
244
- else if (batchSize > contextSize) {
254
+ if (batchSize != null && contextSize != null && batchSize > contextSize) {
245
255
  console.warn(chalk.yellow("Batch size is greater than the context size. Batch size will be set to the context size."));
246
256
  batchSize = contextSize;
247
257
  }
248
258
  let initialPrompt = prompt ?? null;
249
- const model = await withStatusLogs({
250
- loading: chalk.blue("Loading model"),
251
- success: chalk.blue("Model loaded"),
252
- fail: chalk.blue("Failed to load model")
253
- }, async () => {
259
+ const model = await withProgressLog({
260
+ loadingText: chalk.blue.bold("Loading model"),
261
+ successText: chalk.blue("Model loaded"),
262
+ failText: chalk.blue("Failed to load model"),
263
+ liveUpdates: !debug,
264
+ noProgress: debug,
265
+ liveCtrlCSendsAbortSignal: true
266
+ }, async (progressUpdater) => {
254
267
  try {
255
268
  return await llama.loadModel({
256
- modelPath: path.resolve(process.cwd(), modelArg),
257
- gpuLayers: gpuLayers != null ? gpuLayers : undefined
269
+ modelPath: resolvedModelPath,
270
+ gpuLayers: gpuLayers != null
271
+ ? gpuLayers
272
+ : contextSize != null
273
+ ? { fitContext: { contextSize } }
274
+ : undefined,
275
+ ignoreMemorySafetyChecks: gpuLayers != null,
276
+ onLoadProgress(loadProgress) {
277
+ progressUpdater.setProgress(loadProgress);
278
+ },
279
+ loadSignal: progressUpdater.abortSignal
258
280
  });
259
281
  }
282
+ catch (err) {
283
+ if (err === progressUpdater.abortSignal?.reason)
284
+ process.exit(0);
285
+ throw err;
286
+ }
260
287
  finally {
261
288
  if (llama.logLevel === LlamaLogLevel.debug) {
262
289
  await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
@@ -264,16 +291,18 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPrompt
264
291
  }
265
292
  }
266
293
  });
267
- const context = await withStatusLogs({
294
+ const context = await withOra({
268
295
  loading: chalk.blue("Creating context"),
269
296
  success: chalk.blue("Context created"),
270
- fail: chalk.blue("Failed to create context")
297
+ fail: chalk.blue("Failed to create context"),
298
+ useStatusLogs: debug
271
299
  }, async () => {
272
300
  try {
273
301
  return await model.createContext({
274
- contextSize,
275
- batchSize,
276
- threads
302
+ contextSize: contextSize != null ? contextSize : undefined,
303
+ batchSize: batchSize != null ? batchSize : undefined,
304
+ threads,
305
+ ignoreMemorySafetyChecks: gpuLayers != null || contextSize != null
277
306
  });
278
307
  }
279
308
  finally {
@@ -288,44 +317,72 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPrompt
288
317
  : grammarArg !== "text"
289
318
  ? await LlamaGrammar.getFor(llama, grammarArg)
290
319
  : undefined;
291
- const bos = model.tokens.bosString; // bos = beginning of sequence
292
- const eos = model.tokens.bosString; // eos = end of sequence
293
- const chatWrapper = resolveChatWrapperBasedOnWrapperTypeName(wrapper, {
294
- bosString: bos,
320
+ const chatWrapper = resolveChatWrapper({
321
+ type: wrapper,
322
+ bosString: model.tokens.bosString,
295
323
  filename: model.filename,
296
- typeDescription: model.typeDescription
297
- });
324
+ fileInfo: model.fileInfo,
325
+ tokenizer: model.tokenize,
326
+ noJinja
327
+ }) ?? new GeneralChatWrapper();
328
+ const contextSequence = context.getSequence();
298
329
  const session = new LlamaChatSession({
299
- contextSequence: context.getSequence(),
330
+ contextSequence,
300
331
  systemPrompt,
301
332
  chatWrapper: chatWrapper
302
333
  });
334
+ let lastTokenMeterState = contextSequence.tokenMeter.getState();
303
335
  await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
304
336
  if (grammarArg != "text" && jsonSchemaGrammarFilePath != null)
305
337
  console.warn(chalk.yellow("Both `grammar` and `jsonSchemaGrammarFile` were specified. `jsonSchemaGrammarFile` will be used."));
306
- console.info(`${chalk.yellow("Context size:")} ${context.contextSize}`);
307
- if (logBatchSize)
308
- console.info(`${chalk.yellow("Batch size:")} ${context.batchSize}`);
309
- console.info(`${chalk.yellow("Train context size:")} ${model.trainContextSize}`);
310
- console.info(`${chalk.yellow("Model type:")} ${model.typeDescription}`);
311
- console.info(`${chalk.yellow("BOS:")} ${bos}`);
312
- console.info(`${chalk.yellow("EOS:")} ${eos}`);
313
- console.info(`${chalk.yellow("Chat wrapper:")} ${chatWrapper.wrapperName}`);
314
- console.info(`${chalk.yellow("Repeat penalty:")} ${repeatPenalty} (apply to last ${lastTokensRepeatPenalty} tokens)`);
315
- if (repeatFrequencyPenalty != null)
316
- console.info(`${chalk.yellow("Repeat frequency penalty:")} ${repeatFrequencyPenalty}`);
317
- if (repeatPresencePenalty != null)
318
- console.info(`${chalk.yellow("Repeat presence penalty:")} ${repeatPresencePenalty}`);
319
- if (!penalizeRepeatingNewLine)
320
- console.info(`${chalk.yellow("Penalize repeating new line:")} disabled`);
321
- if (jsonSchemaGrammarFilePath != null)
322
- console.info(`${chalk.yellow("JSON schema grammar file:")} ${path.relative(process.cwd(), path.resolve(process.cwd(), jsonSchemaGrammarFilePath))}`);
323
- else if (grammarArg !== "text")
324
- console.info(`${chalk.yellow("Grammar:")} ${grammarArg}`);
325
338
  if (environmentFunctions && grammar != null) {
326
339
  console.warn(chalk.yellow("Environment functions are disabled since a grammar is already specified"));
327
340
  environmentFunctions = false;
328
341
  }
342
+ const padTitle = "Context".length + 1;
343
+ printCommonInfoLines({
344
+ context,
345
+ minTitleLength: padTitle,
346
+ printBos: true,
347
+ printEos: true,
348
+ logBatchSize,
349
+ tokenMeterEnabled: meter
350
+ });
351
+ printInfoLine({
352
+ title: "Chat",
353
+ padTitle: padTitle,
354
+ info: [{
355
+ title: "Wrapper",
356
+ value: chatWrapper.wrapperName
357
+ }, {
358
+ title: "Repeat penalty",
359
+ value: `${repeatPenalty} (apply to last ${lastTokensRepeatPenalty} tokens)`
360
+ }, {
361
+ show: repeatFrequencyPenalty != null,
362
+ title: "Repeat frequency penalty",
363
+ value: String(repeatFrequencyPenalty)
364
+ }, {
365
+ show: repeatPresencePenalty != null,
366
+ title: "Repeat presence penalty",
367
+ value: String(repeatPresencePenalty)
368
+ }, {
369
+ show: !penalizeRepeatingNewLine,
370
+ title: "Penalize repeating new line",
371
+ value: "disabled"
372
+ }, {
373
+ show: jsonSchemaGrammarFilePath != null,
374
+ title: "JSON schema grammar file",
375
+ value: () => path.relative(process.cwd(), path.resolve(process.cwd(), jsonSchemaGrammarFilePath ?? ""))
376
+ }, {
377
+ show: jsonSchemaGrammarFilePath == null && grammarArg !== "text",
378
+ title: "Grammar",
379
+ value: grammarArg
380
+ }, {
381
+ show: environmentFunctions,
382
+ title: "Environment functions",
383
+ value: "enabled"
384
+ }]
385
+ });
329
386
  // this is for ora to not interfere with readline
330
387
  await new Promise(resolve => setTimeout(resolve, 1));
331
388
  const replHistory = await ReplHistory.load(chatCommandHistoryFilePath, !noHistory);
@@ -341,6 +398,8 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPrompt
341
398
  }
342
399
  // eslint-disable-next-line no-constant-condition
343
400
  while (true) {
401
+ let hadNoWhitespaceTextInThisIteration = false;
402
+ let nextPrintLeftovers = "";
344
403
  const input = initialPrompt != null
345
404
  ? initialPrompt
346
405
  : await getPrompt();
@@ -374,16 +433,42 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPrompt
374
433
  ? undefined
375
434
  : maxTokens,
376
435
  onToken(chunk) {
377
- process.stdout.write(model.detokenize(chunk));
436
+ let text = nextPrintLeftovers + model.detokenize(chunk);
437
+ nextPrintLeftovers = "";
438
+ if (trimWhitespace) {
439
+ if (!hadNoWhitespaceTextInThisIteration) {
440
+ text = text.trimStart();
441
+ if (text.length > 0)
442
+ hadNoWhitespaceTextInThisIteration = true;
443
+ }
444
+ const textWithTrimmedEnd = text.trimEnd();
445
+ if (textWithTrimmedEnd.length < text.length) {
446
+ nextPrintLeftovers = text.slice(textWithTrimmedEnd.length);
447
+ text = textWithTrimmedEnd;
448
+ }
449
+ }
450
+ process.stdout.write(text);
378
451
  },
379
452
  functions: (grammar == null && environmentFunctions)
380
453
  ? defaultEnvironmentFunctions
381
- : undefined
454
+ : undefined,
455
+ trimWhitespaceSuffix: trimWhitespace
382
456
  });
383
457
  process.stdout.write(endColor);
384
458
  console.log();
385
- if (printTimings)
459
+ if (printTimings) {
460
+ if (LlamaLogLevelGreaterThan(llama.logLevel, LlamaLogLevel.info))
461
+ llama.logLevel = LlamaLogLevel.info;
386
462
  await context.printTimings();
463
+ await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
464
+ llama.logLevel = llamaLogLevel;
465
+ }
466
+ if (meter) {
467
+ const newTokenMeterState = contextSequence.tokenMeter.getState();
468
+ const tokenMeterDiff = TokenMeter.diff(newTokenMeterState, lastTokenMeterState);
469
+ lastTokenMeterState = newTokenMeterState;
470
+ console.info(`${chalk.dim("Input tokens:")} ${String(tokenMeterDiff.usedInputTokens).padEnd(5, " ")} ${chalk.dim("Output tokens:")} ${tokenMeterDiff.usedOutputTokens}`);
471
+ }
387
472
  }
388
473
  }
389
474
  const defaultEnvironmentFunctions = {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"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"}