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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +2 -0
  2. package/dist/ChatWrapper.d.ts +49 -0
  3. package/dist/ChatWrapper.js +120 -0
  4. package/dist/ChatWrapper.js.map +1 -0
  5. package/dist/{utils/getBin.d.ts → bindings/AddonTypes.d.ts} +11 -4
  6. package/dist/bindings/AddonTypes.js +2 -0
  7. package/dist/bindings/AddonTypes.js.map +1 -0
  8. package/dist/bindings/Llama.d.ts +23 -0
  9. package/dist/bindings/Llama.js +225 -0
  10. package/dist/bindings/Llama.js.map +1 -0
  11. package/dist/bindings/getLlama.d.ts +86 -0
  12. package/dist/bindings/getLlama.js +225 -0
  13. package/dist/bindings/getLlama.js.map +1 -0
  14. package/dist/bindings/types.d.ts +33 -0
  15. package/dist/bindings/types.js +30 -0
  16. package/dist/bindings/types.js.map +1 -0
  17. package/dist/bindings/utils/NoBinaryFoundError.d.ts +2 -0
  18. package/dist/bindings/utils/NoBinaryFoundError.js +7 -0
  19. package/dist/bindings/utils/NoBinaryFoundError.js.map +1 -0
  20. package/dist/{utils → bindings/utils}/binariesGithubRelease.js +1 -1
  21. package/dist/bindings/utils/binariesGithubRelease.js.map +1 -0
  22. package/dist/bindings/utils/clearAllLocalBuilds.d.ts +1 -0
  23. package/dist/bindings/utils/clearAllLocalBuilds.js +47 -0
  24. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -0
  25. package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +11 -0
  26. package/dist/bindings/utils/cloneLlamaCppRepo.js +155 -0
  27. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -0
  28. package/dist/bindings/utils/compileLLamaCpp.d.ts +12 -0
  29. package/dist/bindings/utils/compileLLamaCpp.js +157 -0
  30. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -0
  31. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.d.ts +5 -0
  32. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +85 -0
  33. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -0
  34. package/dist/bindings/utils/getCanUsePrebuiltBinaries.d.ts +1 -0
  35. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js +8 -0
  36. package/dist/bindings/utils/getCanUsePrebuiltBinaries.js.map +1 -0
  37. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.d.ts +2 -0
  38. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js +21 -0
  39. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -0
  40. package/dist/bindings/utils/getPlatform.d.ts +2 -0
  41. package/dist/bindings/utils/getPlatform.js +15 -0
  42. package/dist/bindings/utils/getPlatform.js.map +1 -0
  43. package/dist/bindings/utils/lastBuildInfo.d.ts +6 -0
  44. package/dist/bindings/utils/lastBuildInfo.js +17 -0
  45. package/dist/bindings/utils/lastBuildInfo.js.map +1 -0
  46. package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +2 -0
  47. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +28 -0
  48. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -0
  49. package/dist/bindings/utils/resolveCustomCmakeOptions.d.ts +1 -0
  50. package/dist/bindings/utils/resolveCustomCmakeOptions.js +43 -0
  51. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -0
  52. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
  53. package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
  54. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
  55. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +18 -0
  56. package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
  57. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
  58. package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
  59. package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
  60. package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
  61. package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
  62. package/dist/chatWrappers/FalconChatWrapper.js +104 -0
  63. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
  64. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
  65. package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
  66. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
  67. package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
  68. package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
  69. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
  70. package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
  71. package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
  72. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
  73. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +5 -5
  74. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +28 -17
  75. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  76. package/dist/cli/cli.js +4 -0
  77. package/dist/cli/cli.js.map +1 -1
  78. package/dist/cli/commands/BuildCommand.d.ts +2 -1
  79. package/dist/cli/commands/BuildCommand.js +50 -10
  80. package/dist/cli/commands/BuildCommand.js.map +1 -1
  81. package/dist/cli/commands/ChatCommand.d.ts +10 -3
  82. package/dist/cli/commands/ChatCommand.js +152 -42
  83. package/dist/cli/commands/ChatCommand.js.map +1 -1
  84. package/dist/cli/commands/ClearCommand.js +4 -6
  85. package/dist/cli/commands/ClearCommand.js.map +1 -1
  86. package/dist/cli/commands/DebugCommand.d.ts +7 -0
  87. package/dist/cli/commands/DebugCommand.js +59 -0
  88. package/dist/cli/commands/DebugCommand.js.map +1 -0
  89. package/dist/cli/commands/DownloadCommand.d.ts +2 -1
  90. package/dist/cli/commands/DownloadCommand.js +47 -40
  91. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  92. package/dist/cli/commands/OnPostInstallCommand.js +7 -10
  93. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  94. package/dist/config.d.ts +10 -3
  95. package/dist/config.js +18 -7
  96. package/dist/config.js.map +1 -1
  97. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +185 -0
  98. package/dist/evaluator/LlamaChat/LlamaChat.js +705 -0
  99. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -0
  100. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +22 -0
  101. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +121 -0
  102. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  103. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
  104. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +135 -0
  105. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  106. package/dist/{llamaEvaluator → evaluator/LlamaChatSession}/LlamaChatSession.d.ts +59 -25
  107. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +219 -0
  108. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  109. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
  110. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  111. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  112. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.d.ts +20 -23
  113. package/dist/{llamaEvaluator → evaluator}/LlamaContext/LlamaContext.js +71 -105
  114. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
  115. package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.d.ts +6 -14
  116. package/dist/evaluator/LlamaContext/types.js.map +1 -0
  117. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
  118. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
  119. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
  120. package/dist/evaluator/LlamaEmbeddingContext.d.ts +37 -0
  121. package/dist/evaluator/LlamaEmbeddingContext.js +78 -0
  122. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
  123. package/dist/evaluator/LlamaGrammar.d.ts +30 -0
  124. package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +14 -18
  125. package/dist/evaluator/LlamaGrammar.js.map +1 -0
  126. package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.js +4 -4
  127. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
  128. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
  129. package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +4 -2
  130. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
  131. package/dist/{llamaEvaluator → evaluator}/LlamaModel.d.ts +14 -5
  132. package/dist/{llamaEvaluator → evaluator}/LlamaModel.js +18 -9
  133. package/dist/evaluator/LlamaModel.js.map +1 -0
  134. package/dist/index.d.ts +27 -16
  135. package/dist/index.js +26 -14
  136. package/dist/index.js.map +1 -1
  137. package/dist/state.d.ts +2 -0
  138. package/dist/state.js +7 -0
  139. package/dist/state.js.map +1 -1
  140. package/dist/types.d.ts +41 -3
  141. package/dist/types.js +5 -1
  142. package/dist/types.js.map +1 -1
  143. package/dist/utils/LlamaText.d.ts +42 -0
  144. package/dist/utils/LlamaText.js +207 -0
  145. package/dist/utils/LlamaText.js.map +1 -0
  146. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  147. package/dist/utils/StopGenerationDetector.js +205 -0
  148. package/dist/utils/StopGenerationDetector.js.map +1 -0
  149. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  150. package/dist/utils/TokenStreamRegulator.js +96 -0
  151. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  152. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  153. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  154. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  155. package/dist/utils/cmake.js +16 -11
  156. package/dist/utils/cmake.js.map +1 -1
  157. package/dist/utils/compareTokens.d.ts +2 -0
  158. package/dist/utils/compareTokens.js +4 -0
  159. package/dist/utils/compareTokens.js.map +1 -0
  160. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  161. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  162. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  163. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  164. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  165. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  166. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  167. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  168. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  169. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  170. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  171. package/dist/utils/gbnfJson/types.d.ts +1 -1
  172. package/dist/utils/gbnfJson/types.js.map +1 -1
  173. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  174. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  175. package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
  176. package/dist/utils/getConsoleLogPrefix.js +9 -0
  177. package/dist/utils/getConsoleLogPrefix.js.map +1 -0
  178. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  179. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  180. package/dist/utils/getGrammarsFolder.d.ts +2 -1
  181. package/dist/utils/getGrammarsFolder.js +8 -7
  182. package/dist/utils/getGrammarsFolder.js.map +1 -1
  183. package/dist/utils/getModuleVersion.d.ts +1 -0
  184. package/dist/utils/getModuleVersion.js +13 -0
  185. package/dist/utils/getModuleVersion.js.map +1 -0
  186. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  187. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  188. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  189. package/dist/utils/gitReleaseBundles.js +6 -5
  190. package/dist/utils/gitReleaseBundles.js.map +1 -1
  191. package/dist/utils/hashString.d.ts +1 -0
  192. package/dist/utils/hashString.js +8 -0
  193. package/dist/utils/hashString.js.map +1 -0
  194. package/dist/utils/isLockfileActive.d.ts +4 -0
  195. package/dist/utils/isLockfileActive.js +12 -0
  196. package/dist/utils/isLockfileActive.js.map +1 -0
  197. package/dist/utils/parseModelTypeDescription.d.ts +1 -1
  198. package/dist/utils/prettyPrintObject.d.ts +1 -0
  199. package/dist/utils/prettyPrintObject.js +40 -0
  200. package/dist/utils/prettyPrintObject.js.map +1 -0
  201. package/dist/utils/removeNullFields.d.ts +1 -0
  202. package/dist/utils/removeNullFields.js +8 -0
  203. package/dist/utils/removeNullFields.js.map +1 -1
  204. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  205. package/dist/utils/resolveChatWrapper.js +16 -0
  206. package/dist/utils/resolveChatWrapper.js.map +1 -0
  207. package/dist/utils/resolveGithubRelease.d.ts +2 -0
  208. package/dist/utils/resolveGithubRelease.js +36 -0
  209. package/dist/utils/resolveGithubRelease.js.map +1 -0
  210. package/dist/utils/spawnCommand.d.ts +1 -1
  211. package/dist/utils/spawnCommand.js +4 -2
  212. package/dist/utils/spawnCommand.js.map +1 -1
  213. package/dist/utils/tokenizeInput.d.ts +3 -0
  214. package/dist/utils/tokenizeInput.js +9 -0
  215. package/dist/utils/tokenizeInput.js.map +1 -0
  216. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  217. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  218. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  219. package/dist/utils/waitForLockfileRelease.d.ts +5 -0
  220. package/dist/utils/waitForLockfileRelease.js +20 -0
  221. package/dist/utils/waitForLockfileRelease.js.map +1 -0
  222. package/dist/utils/withLockfile.d.ts +7 -0
  223. package/dist/utils/withLockfile.js +44 -0
  224. package/dist/utils/withLockfile.js.map +1 -0
  225. package/dist/utils/withOra.js +11 -1
  226. package/dist/utils/withOra.js.map +1 -1
  227. package/dist/utils/withStatusLogs.d.ts +2 -1
  228. package/dist/utils/withStatusLogs.js +11 -8
  229. package/dist/utils/withStatusLogs.js.map +1 -1
  230. package/llama/.clang-format +1 -2
  231. package/llama/CMakeLists.txt +87 -2
  232. package/llama/addon.cpp +256 -22
  233. package/llama/binariesGithubRelease.json +1 -1
  234. package/llama/gitRelease.bundle +0 -0
  235. package/llama/gpuInfo/cuda-gpu-info.cu +99 -0
  236. package/llama/gpuInfo/cuda-gpu-info.h +7 -0
  237. package/llama/gpuInfo/metal-gpu-info.h +5 -0
  238. package/llama/gpuInfo/metal-gpu-info.mm +17 -0
  239. package/llama/llama.cpp.info.json +4 -0
  240. package/llamaBins/linux-arm64/.buildMetadata.json +1 -0
  241. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  242. package/llamaBins/linux-armv7l/.buildMetadata.json +1 -0
  243. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  244. package/llamaBins/linux-x64/.buildMetadata.json +1 -0
  245. package/llamaBins/linux-x64/llama-addon.node +0 -0
  246. package/llamaBins/linux-x64-cuda/.buildMetadata.json +1 -0
  247. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  248. package/llamaBins/mac-arm64-metal/.buildMetadata.json +1 -0
  249. package/llamaBins/mac-arm64-metal/ggml-metal.metal +6119 -0
  250. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  251. package/llamaBins/mac-x64/.buildMetadata.json +1 -0
  252. package/llamaBins/mac-x64/llama-addon.node +0 -0
  253. package/llamaBins/win-x64/.buildMetadata.json +1 -0
  254. package/llamaBins/win-x64/llama-addon.exp +0 -0
  255. package/llamaBins/win-x64/llama-addon.node +0 -0
  256. package/llamaBins/win-x64-cuda/.buildMetadata.json +1 -0
  257. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  258. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  259. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  260. package/package.json +37 -15
  261. package/dist/ChatPromptWrapper.d.ts +0 -11
  262. package/dist/ChatPromptWrapper.js +0 -20
  263. package/dist/ChatPromptWrapper.js.map +0 -1
  264. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  265. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  266. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  267. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  268. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  269. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  270. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  271. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  272. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  273. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  274. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  275. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  276. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  277. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  278. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  279. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -15
  280. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -39
  281. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  282. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -19
  283. package/dist/llamaEvaluator/LlamaBins.js +0 -5
  284. package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
  285. package/dist/llamaEvaluator/LlamaChatSession.js +0 -290
  286. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  287. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +0 -1
  288. package/dist/llamaEvaluator/LlamaContext/types.js.map +0 -1
  289. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  290. package/dist/llamaEvaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  291. package/dist/llamaEvaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  292. package/dist/llamaEvaluator/LlamaGrammar.d.ts +0 -32
  293. package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
  294. package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
  295. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
  296. package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
  297. package/dist/utils/binariesGithubRelease.js.map +0 -1
  298. package/dist/utils/clearLlamaBuild.d.ts +0 -1
  299. package/dist/utils/clearLlamaBuild.js +0 -12
  300. package/dist/utils/clearLlamaBuild.js.map +0 -1
  301. package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
  302. package/dist/utils/cloneLlamaCppRepo.js +0 -102
  303. package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
  304. package/dist/utils/compileLLamaCpp.d.ts +0 -8
  305. package/dist/utils/compileLLamaCpp.js +0 -127
  306. package/dist/utils/compileLLamaCpp.js.map +0 -1
  307. package/dist/utils/getBin.js +0 -78
  308. package/dist/utils/getBin.js.map +0 -1
  309. package/dist/utils/getReleaseInfo.d.ts +0 -7
  310. package/dist/utils/getReleaseInfo.js +0 -30
  311. package/dist/utils/getReleaseInfo.js.map +0 -1
  312. package/dist/utils/getTextCompletion.d.ts +0 -3
  313. package/dist/utils/getTextCompletion.js +0 -12
  314. package/dist/utils/getTextCompletion.js.map +0 -1
  315. package/dist/utils/usedBinFlag.d.ts +0 -6
  316. package/dist/utils/usedBinFlag.js +0 -15
  317. package/dist/utils/usedBinFlag.js.map +0 -1
  318. package/llama/usedBin.json +0 -3
  319. package/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
  320. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  321. package/llamaBins/mac-x64/ggml-metal.metal +0 -2929
  322. /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
  323. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/types.js +0 -0
  324. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +0 -0
  325. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +0 -0
  326. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +0 -0
  327. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +0 -0
  328. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -0
  329. /package/dist/{llamaEvaluator → evaluator}/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +0 -0
  330. /package/dist/{llamaEvaluator → evaluator}/LlamaGrammarEvaluationState.d.ts +0 -0
@@ -1,7 +1,7 @@
1
- import { LlamaChatPromptWrapper } from "./LlamaChatPromptWrapper.js";
2
- import { GeneralChatPromptWrapper } from "./GeneralChatPromptWrapper.js";
3
- import { FalconChatPromptWrapper } from "./FalconChatPromptWrapper.js";
4
- import type { ModelTypeDescription } from "../utils/getBin.js";
1
+ import { ModelTypeDescription } from "../bindings/AddonTypes.js";
2
+ import { LlamaChatWrapper } from "./LlamaChatWrapper.js";
3
+ import { GeneralChatWrapper } from "./GeneralChatWrapper.js";
4
+ import { FalconChatWrapper } from "./FalconChatWrapper.js";
5
5
  /**
6
6
  * @param options
7
7
  */
@@ -10,4 +10,4 @@ export declare function resolveChatWrapperBasedOnModel({ bosString, filename, ty
10
10
  filename?: string;
11
11
  /** @hidden this type alias is too long in the documentation */
12
12
  typeDescription?: ModelTypeDescription;
13
- }): typeof GeneralChatPromptWrapper | typeof LlamaChatPromptWrapper | typeof FalconChatPromptWrapper | null;
13
+ }): typeof LlamaChatWrapper | typeof GeneralChatWrapper | typeof FalconChatWrapper | null;
@@ -1,9 +1,11 @@
1
1
  import { parseModelFileName } from "../utils/parseModelFileName.js";
2
2
  import { parseModelTypeDescription } from "../utils/parseModelTypeDescription.js";
3
- import { LlamaChatPromptWrapper } from "./LlamaChatPromptWrapper.js";
4
- import { ChatMLChatPromptWrapper } from "./ChatMLChatPromptWrapper.js";
5
- import { GeneralChatPromptWrapper } from "./GeneralChatPromptWrapper.js";
6
- import { FalconChatPromptWrapper } from "./FalconChatPromptWrapper.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";
7
9
  /**
8
10
  * @param options
9
11
  */
@@ -13,36 +15,45 @@ export function resolveChatWrapperBasedOnModel({ bosString, filename, typeDescri
13
15
  if (fileType?.toLowerCase() === "gguf") {
14
16
  const lowercaseName = name?.toLowerCase();
15
17
  const lowercaseSubType = subType?.toLowerCase();
16
- const splitLowercaseSubType = lowercaseSubType?.split("-");
17
- const firstSplitLowercaseSubType = splitLowercaseSubType?.[0];
18
- if (lowercaseName === "llama")
19
- return LlamaChatPromptWrapper;
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
+ }
20
25
  else if (lowercaseName === "yarn" && firstSplitLowercaseSubType === "llama")
21
- return LlamaChatPromptWrapper;
26
+ return LlamaChatWrapper;
22
27
  else if (lowercaseName === "orca")
23
- return ChatMLChatPromptWrapper;
28
+ return ChatMLChatWrapper;
24
29
  else if (lowercaseName === "phind" && lowercaseSubType === "codellama")
25
- return LlamaChatPromptWrapper;
30
+ return LlamaChatWrapper;
26
31
  else if (lowercaseName === "mistral")
27
- return GeneralChatPromptWrapper;
32
+ return GeneralChatWrapper;
28
33
  else if (firstSplitLowercaseSubType === "llama")
29
- return LlamaChatPromptWrapper;
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;
30
41
  }
31
42
  }
32
43
  if (typeDescription != null) {
33
44
  const { arch } = parseModelTypeDescription(typeDescription);
34
45
  if (arch === "llama")
35
- return LlamaChatPromptWrapper;
46
+ return LlamaChatWrapper;
36
47
  else if (arch === "falcon")
37
- return FalconChatPromptWrapper;
48
+ return FalconChatWrapper;
38
49
  }
39
50
  if (bosString === "" || bosString == null)
40
51
  return null;
41
52
  if ("<s>[INST] <<SYS>>\n".startsWith(bosString)) {
42
- return LlamaChatPromptWrapper;
53
+ return LlamaChatWrapper;
43
54
  }
44
55
  else if ("<|im_start|>system\n".startsWith(bosString)) {
45
- return ChatMLChatPromptWrapper;
56
+ return ChatMLChatWrapper;
46
57
  }
47
58
  return null;
48
59
  }
@@ -1 +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;AAChF,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAIrE;;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,CAAC;YAC3D,MAAM,0BAA0B,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC;YAE9D,IAAI,aAAa,KAAK,OAAO;gBACzB,OAAO,sBAAsB,CAAC;iBAC7B,IAAI,aAAa,KAAK,MAAM,IAAI,0BAA0B,KAAK,OAAO;gBACvE,OAAO,sBAAsB,CAAC;iBAC7B,IAAI,aAAa,KAAK,MAAM;gBAC7B,OAAO,uBAAuB,CAAC;iBAC9B,IAAI,aAAa,KAAK,OAAO,IAAI,gBAAgB,KAAK,WAAW;gBAClE,OAAO,sBAAsB,CAAC;iBAC7B,IAAI,aAAa,KAAK,SAAS;gBAChC,OAAO,wBAAwB,CAAC;iBAC/B,IAAI,0BAA0B,KAAK,OAAO;gBAC3C,OAAO,sBAAsB,CAAC;SACrC;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,sBAAsB,CAAC;aAC7B,IAAI,IAAI,KAAK,QAAQ;YACtB,OAAO,uBAAuB,CAAC;KACtC;IAED,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI;QACrC,OAAO,IAAI,CAAC;IAEhB,IAAI,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7C,OAAO,sBAAsB,CAAC;KACjC;SAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACrD,OAAO,uBAAuB,CAAC;KAClC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
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
@@ -6,13 +6,16 @@ import yargs from "yargs";
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,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,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,17 +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
7
  systemPrompt: string;
8
+ systemPromptFile?: string;
8
9
  prompt?: string;
10
+ promptFile?: string;
9
11
  wrapper: (typeof modelWrappers)[number];
10
12
  contextSize: number;
11
- grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[0];
13
+ batchSize?: number;
14
+ grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[1];
12
15
  jsonSchemaGrammarFile?: string;
13
16
  threads: number;
14
17
  temperature: number;
18
+ minP: number;
15
19
  topK: number;
16
20
  topP: number;
17
21
  gpuLayers?: number;
@@ -22,6 +26,9 @@ type ChatCommand = {
22
26
  repeatPresencePenalty?: number;
23
27
  maxTokens: number;
24
28
  noHistory: boolean;
29
+ environmentFunctions: boolean;
30
+ noInfoLog: boolean;
31
+ printTimings: boolean;
25
32
  };
26
33
  export declare const ChatCommand: CommandModule<object, ChatCommand>;
27
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";
7
+ import { LlamaChatWrapper } from "../../chatWrappers/LlamaChatWrapper.js";
8
+ import { GeneralChatWrapper } from "../../chatWrappers/GeneralChatWrapper.js";
9
+ import { ChatMLChatWrapper } from "../../chatWrappers/ChatMLChatWrapper.js";
11
10
  import { resolveChatWrapperBasedOnModel } from "../../chatWrappers/resolveChatWrapperBasedOnModel.js";
12
- import { FalconChatPromptWrapper } from "../../chatWrappers/FalconChatPromptWrapper.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",
@@ -41,16 +51,26 @@ export const ChatCommand = {
41
51
  description: "System prompt to use against the model" +
42
52
  (isInDocumentationMode ? "" : (". [default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]")),
43
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:"
44
59
  })
45
60
  .option("prompt", {
46
61
  type: "string",
47
62
  description: "First prompt to automatically send to the model when starting the chat",
48
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:"
49
69
  })
50
70
  .option("wrapper", {
51
71
  alias: "w",
52
72
  type: "string",
53
- default: "general",
73
+ default: "auto",
54
74
  choices: modelWrappers,
55
75
  description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token",
56
76
  group: "Optional:"
@@ -59,7 +79,13 @@ export const ChatCommand = {
59
79
  alias: "c",
60
80
  type: "number",
61
81
  default: 1024 * 4,
62
- 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",
63
89
  group: "Optional:"
64
90
  })
65
91
  .option("grammar", {
@@ -88,6 +114,13 @@ export const ChatCommand = {
88
114
  default: 0,
89
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.",
90
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:"
91
124
  })
92
125
  .option("topK", {
93
126
  alias: "k",
@@ -155,14 +188,36 @@ export const ChatCommand = {
155
188
  default: false,
156
189
  description: "Don't load or save chat history",
157
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:"
158
212
  });
159
213
  },
160
- async handler({ model, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar, jsonSchemaGrammarFile, threads, temperature, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory }) {
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 }) {
161
215
  try {
162
216
  await RunChat({
163
- model, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar, jsonSchemaGrammarFile, threads, temperature, topK,
164
- topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty,
165
- repeatPresencePenalty, maxTokens, noHistory
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
166
221
  });
167
222
  }
168
223
  catch (err) {
@@ -171,47 +226,81 @@ export const ChatCommand = {
171
226
  }
172
227
  }
173
228
  };
174
- 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 }) {
175
- const { LlamaChatSession } = await import("../../llamaEvaluator/LlamaChatSession.js");
176
- const { LlamaModel } = await import("../../llamaEvaluator/LlamaModel.js");
177
- const { LlamaContext } = await import("../../llamaEvaluator/LlamaContext/LlamaContext.js");
178
- const { LlamaGrammar } = await import("../../llamaEvaluator/LlamaGrammar.js");
179
- 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
+ }
180
256
  let initialPrompt = prompt ?? null;
181
- 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,
182
263
  modelPath: path.resolve(process.cwd(), modelArg),
183
264
  gpuLayers: gpuLayers != null ? gpuLayers : undefined
184
- });
185
- 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({
186
271
  model,
187
272
  contextSize,
273
+ batchSize,
188
274
  threads
189
- });
275
+ }));
190
276
  const grammar = jsonSchemaGrammarFilePath != null
191
- ? new LlamaJsonSchemaGrammar(await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
277
+ ? new LlamaJsonSchemaGrammar(llama, await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
192
278
  : grammarArg !== "text"
193
- ? await LlamaGrammar.getFor(grammarArg)
279
+ ? await LlamaGrammar.getFor(llama, grammarArg)
194
280
  : undefined;
195
281
  const bos = model.tokens.bosString; // bos = beginning of sequence
196
282
  const eos = model.tokens.bosString; // eos = end of sequence
197
- const promptWrapper = getChatWrapper(wrapper, {
283
+ const chatWrapper = getChatWrapper(wrapper, {
198
284
  bosString: bos,
199
285
  filename: model.filename,
200
286
  typeDescription: model.typeDescription
201
287
  });
202
288
  const session = new LlamaChatSession({
203
289
  contextSequence: context.getSequence(),
204
- printLLamaSystemInfo: systemInfo,
205
290
  systemPrompt,
206
- promptWrapper
291
+ chatWrapper: chatWrapper
207
292
  });
293
+ await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
208
294
  if (grammarArg != "text" && jsonSchemaGrammarFilePath != null)
209
295
  console.warn(chalk.yellow("Both `grammar` and `jsonSchemaGrammarFile` were specified. `jsonSchemaGrammarFile` will be used."));
210
296
  console.info(`${chalk.yellow("Context size:")} ${context.contextSize}`);
297
+ if (logBatchSize)
298
+ console.info(`${chalk.yellow("Batch size:")} ${context.batchSize}`);
211
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: {
@@ -278,22 +365,45 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
278
365
  : maxTokens,
279
366
  onToken(chunk) {
280
367
  process.stdout.write(model.detokenize(chunk));
281
- }
368
+ },
369
+ functions: (grammar == null && environmentFunctions)
370
+ ? defaultEnvironmentFunctions
371
+ : undefined
282
372
  });
283
373
  process.stdout.write(endColor);
284
374
  console.log();
375
+ if (printTimings)
376
+ await context.printTimings();
285
377
  }
286
378
  }
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
+ };
287
393
  function getChatWrapper(wrapper, { bosString, filename, typeDescription }) {
288
394
  switch (wrapper) {
289
395
  case "general":
290
- return new GeneralChatPromptWrapper();
396
+ return new GeneralChatWrapper();
291
397
  case "llamaChat":
292
- return new LlamaChatPromptWrapper();
398
+ return new LlamaChatWrapper();
399
+ case "alpacaChat":
400
+ return new AlpacaChatWrapper();
401
+ case "functionary":
402
+ return new FunctionaryChatWrapper();
293
403
  case "chatML":
294
- return new ChatMLChatPromptWrapper();
404
+ return new ChatMLChatWrapper();
295
405
  case "falconChat":
296
- return new FalconChatPromptWrapper();
406
+ return new FalconChatWrapper();
297
407
  default:
298
408
  }
299
409
  if (wrapper === "auto") {
@@ -304,7 +414,7 @@ function getChatWrapper(wrapper, { bosString, filename, typeDescription }) {
304
414
  });
305
415
  if (chatWrapper != null)
306
416
  return new chatWrapper();
307
- return new GeneralChatPromptWrapper();
417
+ return new GeneralChatWrapper();
308
418
  }
309
419
  void (wrapper);
310
420
  throw new Error("Unknown wrapper: " + wrapper);