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

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 (312) 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 +21 -0
  5. package/dist/bindings/Llama.d.ts +4 -0
  6. package/dist/bindings/Llama.js +45 -4
  7. package/dist/bindings/Llama.js.map +1 -1
  8. package/dist/bindings/getLlama.d.ts +19 -1
  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 +3 -2
  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 +206 -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/ChatCommand.d.ts +7 -4
  63. package/dist/cli/commands/ChatCommand.js +150 -60
  64. package/dist/cli/commands/ChatCommand.js.map +1 -1
  65. package/dist/cli/commands/ClearCommand.d.ts +1 -1
  66. package/dist/cli/commands/ClearCommand.js +5 -5
  67. package/dist/cli/commands/ClearCommand.js.map +1 -1
  68. package/dist/cli/commands/CompleteCommand.d.ts +3 -2
  69. package/dist/cli/commands/CompleteCommand.js +88 -41
  70. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  71. package/dist/cli/commands/InfillCommand.d.ts +3 -2
  72. package/dist/cli/commands/InfillCommand.js +88 -41
  73. package/dist/cli/commands/InfillCommand.js.map +1 -1
  74. package/dist/cli/commands/{InspectCommand.d.ts → inspect/InspectCommand.d.ts} +1 -4
  75. package/dist/cli/commands/inspect/InspectCommand.js +17 -0
  76. package/dist/cli/commands/inspect/InspectCommand.js.map +1 -0
  77. package/dist/cli/commands/inspect/commands/InspectGgufCommand.d.ts +10 -0
  78. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +108 -0
  79. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -0
  80. package/dist/cli/commands/inspect/commands/InspectGpuCommand.d.ts +4 -0
  81. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +98 -0
  82. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -0
  83. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +14 -0
  84. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +577 -0
  85. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -0
  86. package/dist/cli/utils/ConsoleTable.d.ts +23 -0
  87. package/dist/cli/utils/ConsoleTable.js +86 -0
  88. package/dist/cli/utils/ConsoleTable.js.map +1 -0
  89. package/dist/cli/utils/printCommonInfoLines.d.ts +9 -0
  90. package/dist/cli/utils/printCommonInfoLines.js +70 -0
  91. package/dist/cli/utils/printCommonInfoLines.js.map +1 -0
  92. package/dist/cli/utils/printInfoLine.d.ts +10 -0
  93. package/dist/cli/utils/printInfoLine.js +45 -0
  94. package/dist/cli/utils/printInfoLine.js.map +1 -0
  95. package/dist/cli/utils/resolveCommandGgufPath.d.ts +1 -0
  96. package/dist/cli/utils/resolveCommandGgufPath.js +6 -0
  97. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -0
  98. package/dist/config.d.ts +2 -0
  99. package/dist/config.js +6 -0
  100. package/dist/config.js.map +1 -1
  101. package/dist/evaluator/LlamaChat/LlamaChat.js +13 -5
  102. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  103. package/dist/evaluator/LlamaCompletion.js +5 -3
  104. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  105. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +40 -3
  106. package/dist/evaluator/LlamaContext/LlamaContext.js +245 -100
  107. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  108. package/dist/evaluator/LlamaContext/types.d.ts +57 -6
  109. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -0
  110. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -0
  111. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.d.ts +2 -0
  112. package/dist/evaluator/LlamaContext/utils/{resolveBatchItemsPrioritizingStrategy.js → resolveBatchItemsPrioritizationStrategy.js} +4 -4
  113. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.js.map +1 -0
  114. package/dist/evaluator/LlamaEmbeddingContext.d.ts +23 -2
  115. package/dist/evaluator/LlamaEmbeddingContext.js +4 -5
  116. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  117. package/dist/evaluator/LlamaModel.d.ts +64 -6
  118. package/dist/evaluator/LlamaModel.js +297 -8
  119. package/dist/evaluator/LlamaModel.js.map +1 -1
  120. package/dist/evaluator/TokenMeter.d.ts +54 -0
  121. package/dist/evaluator/TokenMeter.js +86 -0
  122. package/dist/evaluator/TokenMeter.js.map +1 -0
  123. package/dist/gguf/GgufInsights.d.ts +40 -0
  124. package/dist/gguf/GgufInsights.js +350 -0
  125. package/dist/gguf/GgufInsights.js.map +1 -0
  126. package/dist/gguf/consts.d.ts +3 -0
  127. package/dist/gguf/consts.js +8 -0
  128. package/dist/gguf/consts.js.map +1 -0
  129. package/dist/gguf/errors/InvalidGgufMagicError.d.ts +3 -0
  130. package/dist/gguf/errors/InvalidGgufMagicError.js +6 -0
  131. package/dist/gguf/errors/InvalidGgufMagicError.js.map +1 -0
  132. package/dist/gguf/errors/UnsupportedGgufValueTypeError.d.ts +4 -0
  133. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js +9 -0
  134. package/dist/gguf/errors/UnsupportedGgufValueTypeError.js.map +1 -0
  135. package/dist/gguf/fileReaders/GgufFileReader.d.ts +33 -0
  136. package/dist/gguf/fileReaders/GgufFileReader.js +76 -0
  137. package/dist/gguf/fileReaders/GgufFileReader.js.map +1 -0
  138. package/dist/gguf/fileReaders/GgufFsFileReader.d.ts +17 -0
  139. package/dist/gguf/fileReaders/GgufFsFileReader.js +45 -0
  140. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -0
  141. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.d.ts +22 -0
  142. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js +63 -0
  143. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -0
  144. package/dist/gguf/parser/GgufV2Parser.d.ts +19 -0
  145. package/dist/gguf/parser/GgufV2Parser.js +115 -0
  146. package/dist/gguf/parser/GgufV2Parser.js.map +1 -0
  147. package/dist/gguf/parser/GgufV3Parser.d.ts +3 -0
  148. package/dist/gguf/parser/GgufV3Parser.js +4 -0
  149. package/dist/gguf/parser/GgufV3Parser.js.map +1 -0
  150. package/dist/gguf/parser/parseGguf.d.ts +8 -0
  151. package/dist/gguf/parser/parseGguf.js +58 -0
  152. package/dist/gguf/parser/parseGguf.js.map +1 -0
  153. package/dist/gguf/readGgufFileInfo.d.ts +30 -0
  154. package/dist/gguf/readGgufFileInfo.js +37 -0
  155. package/dist/gguf/readGgufFileInfo.js.map +1 -0
  156. package/dist/gguf/types/GgufFileInfoTypes.d.ts +52 -0
  157. package/dist/gguf/types/GgufFileInfoTypes.js +18 -0
  158. package/dist/gguf/types/GgufFileInfoTypes.js.map +1 -0
  159. package/dist/gguf/types/GgufMetadataTypes.d.ts +330 -0
  160. package/dist/gguf/types/GgufMetadataTypes.js +86 -0
  161. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -0
  162. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +37 -0
  163. package/dist/gguf/types/GgufTensorInfoTypes.js +33 -0
  164. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -0
  165. package/dist/gguf/utils/GgufReadOffset.d.ts +6 -0
  166. package/dist/gguf/utils/GgufReadOffset.js +18 -0
  167. package/dist/gguf/utils/GgufReadOffset.js.map +1 -0
  168. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.d.ts +5 -0
  169. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js +38 -0
  170. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -0
  171. package/dist/gguf/utils/getGgufFileTypeName.d.ts +4 -0
  172. package/dist/gguf/utils/getGgufFileTypeName.js +13 -0
  173. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -0
  174. package/dist/gguf/utils/getGgufMetadataArchitectureData.d.ts +3 -0
  175. package/dist/gguf/utils/getGgufMetadataArchitectureData.js +4 -0
  176. package/dist/gguf/utils/getGgufMetadataArchitectureData.js.map +1 -0
  177. package/dist/gguf/utils/normalizeGgufDownloadUrl.d.ts +1 -0
  178. package/dist/gguf/utils/normalizeGgufDownloadUrl.js +16 -0
  179. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -0
  180. package/dist/index.d.ts +13 -7
  181. package/dist/index.js +11 -6
  182. package/dist/index.js.map +1 -1
  183. package/dist/types.d.ts +1 -1
  184. package/dist/utils/InsufficientMemoryError.d.ts +3 -0
  185. package/dist/utils/InsufficientMemoryError.js +6 -0
  186. package/dist/utils/InsufficientMemoryError.js.map +1 -0
  187. package/dist/utils/LlamaText.d.ts +25 -10
  188. package/dist/utils/LlamaText.js +205 -23
  189. package/dist/utils/LlamaText.js.map +1 -1
  190. package/dist/utils/StopGenerationDetector.js +3 -1
  191. package/dist/utils/StopGenerationDetector.js.map +1 -1
  192. package/dist/utils/findBestOption.d.ts +4 -0
  193. package/dist/utils/findBestOption.js +15 -0
  194. package/dist/utils/findBestOption.js.map +1 -0
  195. package/dist/utils/getQueuedTokensBeforeStopTrigger.js +3 -3
  196. package/dist/utils/getQueuedTokensBeforeStopTrigger.js.map +1 -1
  197. package/dist/utils/gitReleaseBundles.js +68 -1
  198. package/dist/utils/gitReleaseBundles.js.map +1 -1
  199. package/dist/utils/mergeUnionTypes.d.ts +4 -0
  200. package/dist/utils/parseModelFileName.d.ts +1 -0
  201. package/dist/utils/parseModelFileName.js +6 -1
  202. package/dist/utils/parseModelFileName.js.map +1 -1
  203. package/dist/utils/prettyPrintObject.d.ts +10 -1
  204. package/dist/utils/prettyPrintObject.js +57 -13
  205. package/dist/utils/prettyPrintObject.js.map +1 -1
  206. package/dist/utils/spawnCommand.js.map +1 -1
  207. package/dist/utils/tokenizeInput.d.ts +1 -1
  208. package/dist/utils/tokenizeInput.js +3 -3
  209. package/dist/utils/tokenizeInput.js.map +1 -1
  210. package/dist/utils/withOra.d.ts +1 -0
  211. package/dist/utils/withOra.js +2 -2
  212. package/dist/utils/withOra.js.map +1 -1
  213. package/llama/CMakeLists.txt +5 -5
  214. package/llama/addon.cpp +117 -5
  215. package/llama/binariesGithubRelease.json +1 -1
  216. package/llama/gitRelease.bundle +0 -0
  217. package/llama/gpuInfo/cuda-gpu-info.cu +21 -0
  218. package/llama/gpuInfo/cuda-gpu-info.h +3 -0
  219. package/llama/gpuInfo/metal-gpu-info.h +4 -1
  220. package/llama/gpuInfo/metal-gpu-info.mm +14 -1
  221. package/llama/gpuInfo/vulkan-gpu-info.cpp +20 -2
  222. package/llama/gpuInfo/vulkan-gpu-info.h +2 -0
  223. package/llama/llama.cpp.info.json +1 -1
  224. package/llama/toolchains/win32.host-x64.target-arm64.cmake +41 -0
  225. package/llamaBins/linux-arm64/_nlcBuildMetadata.json +1 -1
  226. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  227. package/llamaBins/linux-armv7l/_nlcBuildMetadata.json +1 -1
  228. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  229. package/llamaBins/linux-x64/_nlcBuildMetadata.json +1 -1
  230. package/llamaBins/linux-x64/llama-addon.node +0 -0
  231. package/llamaBins/linux-x64-cuda/_nlcBuildMetadata.json +1 -1
  232. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  233. package/llamaBins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -1
  234. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  235. package/llamaBins/mac-arm64-metal/_nlcBuildMetadata.json +1 -1
  236. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  237. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  238. package/llamaBins/mac-x64/_nlcBuildMetadata.json +1 -1
  239. package/llamaBins/mac-x64/llama-addon.node +0 -0
  240. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -0
  241. package/llamaBins/win-arm64/llama-addon.exp +0 -0
  242. package/llamaBins/win-arm64/llama-addon.lib +0 -0
  243. package/llamaBins/win-arm64/llama-addon.node +0 -0
  244. package/llamaBins/win-x64/_nlcBuildMetadata.json +1 -1
  245. package/llamaBins/win-x64/llama-addon.node +0 -0
  246. package/llamaBins/win-x64-cuda/_nlcBuildMetadata.json +1 -1
  247. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  248. package/llamaBins/win-x64-vulkan/_nlcBuildMetadata.json +1 -1
  249. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  250. package/package.json +8 -6
  251. package/dist/TemplateChatWrapper.js.map +0 -1
  252. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.d.ts +0 -33
  253. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js +0 -49
  254. package/dist/bindings/utils/resolveChatWrapperBasedOnWrapperTypeName.js.map +0 -1
  255. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +0 -13
  256. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +0 -63
  257. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +0 -1
  258. package/dist/cli/commands/InspectCommand.js +0 -113
  259. package/dist/cli/commands/InspectCommand.js.map +0 -1
  260. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +0 -1
  261. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +0 -1
  262. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +0 -2
  263. package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +0 -1
  264. package/dist/gguf/GGUFInsights.d.ts +0 -28
  265. package/dist/gguf/GGUFInsights.js +0 -58
  266. package/dist/gguf/GGUFInsights.js.map +0 -1
  267. package/dist/gguf/GGUFMetadata.d.ts +0 -19
  268. package/dist/gguf/GGUFMetadata.js +0 -38
  269. package/dist/gguf/GGUFMetadata.js.map +0 -1
  270. package/dist/gguf/errors/InvalidGGUFMagicError.d.ts +0 -3
  271. package/dist/gguf/errors/InvalidGGUFMagicError.js +0 -6
  272. package/dist/gguf/errors/InvalidGGUFMagicError.js.map +0 -1
  273. package/dist/gguf/errors/MetadataNotParsedYetError.d.ts +0 -3
  274. package/dist/gguf/errors/MetadataNotParsedYetError.js +0 -6
  275. package/dist/gguf/errors/MetadataNotParsedYetError.js.map +0 -1
  276. package/dist/gguf/errors/MissingNodeLlamaError.d.ts +0 -3
  277. package/dist/gguf/errors/MissingNodeLlamaError.js +0 -6
  278. package/dist/gguf/errors/MissingNodeLlamaError.js.map +0 -1
  279. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.d.ts +0 -5
  280. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js +0 -11
  281. package/dist/gguf/errors/ModelScore/NotEnoughVRamError.js.map +0 -1
  282. package/dist/gguf/errors/UnsupportedMetadataTypeError.d.ts +0 -4
  283. package/dist/gguf/errors/UnsupportedMetadataTypeError.js +0 -8
  284. package/dist/gguf/errors/UnsupportedMetadataTypeError.js.map +0 -1
  285. package/dist/gguf/ggufParser/GGUFParser.d.ts +0 -18
  286. package/dist/gguf/ggufParser/GGUFParser.js +0 -123
  287. package/dist/gguf/ggufParser/GGUFParser.js.map +0 -1
  288. package/dist/gguf/ggufParser/GGUFTypes.d.ts +0 -257
  289. package/dist/gguf/ggufParser/GGUFTypes.js +0 -2
  290. package/dist/gguf/ggufParser/GGUFTypes.js.map +0 -1
  291. package/dist/gguf/ggufParser/checkArchitecture.d.ts +0 -14
  292. package/dist/gguf/ggufParser/checkArchitecture.js +0 -74
  293. package/dist/gguf/ggufParser/checkArchitecture.js.map +0 -1
  294. package/dist/gguf/ggufParser/stream/GGUFBaseStream.d.ts +0 -38
  295. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js +0 -83
  296. package/dist/gguf/ggufParser/stream/GGUFBaseStream.js.map +0 -1
  297. package/dist/gguf/ggufParser/stream/GGUFFetchStream.d.ts +0 -14
  298. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js +0 -35
  299. package/dist/gguf/ggufParser/stream/GGUFFetchStream.js.map +0 -1
  300. package/dist/gguf/ggufParser/stream/GGUFReadStream.d.ts +0 -15
  301. package/dist/gguf/ggufParser/stream/GGUFReadStream.js +0 -40
  302. package/dist/gguf/ggufParser/stream/GGUFReadStream.js.map +0 -1
  303. package/dist/utils/parseModelTypeDescription.d.ts +0 -6
  304. package/dist/utils/parseModelTypeDescription.js +0 -9
  305. package/dist/utils/parseModelTypeDescription.js.map +0 -1
  306. package/dist/utils/resolveChatWrapper.d.ts +0 -4
  307. package/dist/utils/resolveChatWrapper.js +0 -16
  308. package/dist/utils/resolveChatWrapper.js.map +0 -1
  309. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.d.ts +0 -0
  310. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/firstInFirstOutStrategy.js +0 -0
  311. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.d.ts +0 -0
  312. /package/dist/evaluator/LlamaContext/utils/{batchItemsPrioritizingStrategies → batchItemsPrioritizationStrategies}/maximumParallelismStrategy.js +0 -0
@@ -0,0 +1,355 @@
1
+ import { Template } from "@huggingface/jinja";
2
+ import { splitText } from "lifecycle-utils";
3
+ import { SpecialToken, LlamaText, SpecialTokensText } from "../../utils/LlamaText.js";
4
+ import { ChatWrapper } from "../../ChatWrapper.js";
5
+ import { parseFunctionCallMessageTemplate } from "./utils/chatHistoryFunctionCallMessageTemplate.js";
6
+ const defaultConvertUnsupportedSystemMessagesToUserMessagesFormat = {
7
+ format: "System: {{message}}"
8
+ };
9
+ /**
10
+ * A chat wrapper based on a Jinja template.
11
+ * Useful for using the original model's Jinja template as-is without any additional conversion work to chat with a model.
12
+ *
13
+ * If you want to create a new chat wrapper from scratch, using this chat wrapper is not recommended, and instead you better inherit
14
+ * from the `ChatWrapper` class and implement a custom chat wrapper of your own in TypeScript.
15
+ *
16
+ * For a simpler way to create a chat wrapper, see the `TemplateChatWrapper` class.
17
+ */
18
+ export class JinjaTemplateChatWrapper extends ChatWrapper {
19
+ wrapperName = "JinjaTemplate";
20
+ settings;
21
+ template;
22
+ modelRoleName;
23
+ userRoleName;
24
+ systemRoleName;
25
+ convertUnsupportedSystemMessagesToUserMessages;
26
+ joinAdjacentMessagesOfTheSameType;
27
+ trimLeadingWhitespaceInResponses;
28
+ /** @internal */ _jinjaTemplate;
29
+ constructor({ template, modelRoleName = "assistant", userRoleName = "user", systemRoleName = "system", convertUnsupportedSystemMessagesToUserMessages = defaultConvertUnsupportedSystemMessagesToUserMessagesFormat, functionCallMessageTemplate, joinAdjacentMessagesOfTheSameType = true, trimLeadingWhitespaceInResponses = true }) {
30
+ super();
31
+ if (template == null)
32
+ throw new Error("template cannot be null");
33
+ this.template = template;
34
+ this.modelRoleName = modelRoleName;
35
+ this.userRoleName = userRoleName;
36
+ this.systemRoleName = systemRoleName;
37
+ this.convertUnsupportedSystemMessagesToUserMessages =
38
+ resolveConvertUnsupportedSystemMessagesToUserMessagesOption(convertUnsupportedSystemMessagesToUserMessages);
39
+ this.joinAdjacentMessagesOfTheSameType = joinAdjacentMessagesOfTheSameType;
40
+ this.trimLeadingWhitespaceInResponses = trimLeadingWhitespaceInResponses;
41
+ this.settings = {
42
+ ...super.settings,
43
+ functions: parseFunctionCallMessageTemplate(functionCallMessageTemplate) ?? ChatWrapper.defaultSetting.functions
44
+ };
45
+ if (this.convertUnsupportedSystemMessagesToUserMessages != null && !this.convertUnsupportedSystemMessagesToUserMessages.format.includes("{{message}}"))
46
+ throw new Error('convertUnsupportedSystemMessagesToUserMessages format must include "{{message}}"');
47
+ this._jinjaTemplate = new Template(this.template);
48
+ this._runSanityTest();
49
+ }
50
+ generateContextText(history, { availableFunctions, documentFunctionParams } = {}) {
51
+ const historyWithFunctions = this.addAvailableFunctionsSystemMessageToHistory(history, availableFunctions, {
52
+ documentParams: documentFunctionParams
53
+ });
54
+ if (this.convertUnsupportedSystemMessagesToUserMessages == null) {
55
+ return this._generateContextText(historyWithFunctions, {
56
+ convertSystemMessagesToUserMessagesFormat: undefined
57
+ });
58
+ }
59
+ else if (this.convertUnsupportedSystemMessagesToUserMessages.use === "always") {
60
+ return this._generateContextText(historyWithFunctions, {
61
+ convertSystemMessagesToUserMessagesFormat: this.convertUnsupportedSystemMessagesToUserMessages.format
62
+ });
63
+ }
64
+ try {
65
+ return this._generateContextText(historyWithFunctions, {
66
+ convertSystemMessagesToUserMessagesFormat: undefined
67
+ });
68
+ }
69
+ catch (error) {
70
+ return this._generateContextText(historyWithFunctions, {
71
+ convertSystemMessagesToUserMessagesFormat: this.convertUnsupportedSystemMessagesToUserMessages.format
72
+ });
73
+ }
74
+ }
75
+ /** @internal */
76
+ _generateContextText(history, { convertSystemMessagesToUserMessagesFormat }) {
77
+ const transformedHistory = convertSystemMessagesToUserMessagesFormat == null
78
+ ? history
79
+ : history.map((item) => {
80
+ if (item.type === "system")
81
+ return {
82
+ type: "user",
83
+ text: convertSystemMessagesToUserMessagesFormat.replaceAll("{{message}}", item.text)
84
+ };
85
+ return item;
86
+ });
87
+ const resultItems = [];
88
+ const currentTexts = [];
89
+ let currentAggregateFocus = null;
90
+ function flush() {
91
+ if (currentTexts.length > 0 && currentAggregateFocus != null)
92
+ resultItems.push({ role: currentAggregateFocus, content: currentTexts.join("\n\n") });
93
+ currentTexts.length = 0;
94
+ }
95
+ for (const item of transformedHistory) {
96
+ if (item.type === "system") {
97
+ if (!this.joinAdjacentMessagesOfTheSameType || currentAggregateFocus !== "system")
98
+ flush();
99
+ currentAggregateFocus = "system";
100
+ currentTexts.push(item.text);
101
+ }
102
+ else if (item.type === "user") {
103
+ if (!this.joinAdjacentMessagesOfTheSameType || currentAggregateFocus !== "user")
104
+ flush();
105
+ currentAggregateFocus = "user";
106
+ currentTexts.push(item.text);
107
+ }
108
+ else if (item.type === "model") {
109
+ if (!this.joinAdjacentMessagesOfTheSameType || currentAggregateFocus !== "model")
110
+ flush();
111
+ currentAggregateFocus = "model";
112
+ currentTexts.push(this.generateModelResponseText(item.response));
113
+ }
114
+ else
115
+ void (item);
116
+ }
117
+ const lastItemIsModelMessage = currentAggregateFocus === "model";
118
+ flush();
119
+ const idsGenerator = new UniqueTemplateId(this.template + this.modelRoleName + this.userRoleName + this.systemRoleName +
120
+ (convertSystemMessagesToUserMessagesFormat ?? "") + resultItems.map(({ content }) => content).join("\n\n"));
121
+ const jinjaItems = [];
122
+ const jinjaRoleMap = {
123
+ system: this.systemRoleName,
124
+ user: this.userRoleName,
125
+ model: this.modelRoleName
126
+ };
127
+ const idToContent = new Map();
128
+ const modelMessageIds = new Set();
129
+ const messageIds = new Set();
130
+ for (const resultItem of resultItems) {
131
+ const id = idsGenerator.generateId();
132
+ messageIds.add(id);
133
+ idToContent.set(id, resultItem.content);
134
+ jinjaItems.push({
135
+ role: jinjaRoleMap[resultItem.role],
136
+ content: id
137
+ });
138
+ if (resultItem.role === "model")
139
+ modelMessageIds.add(id);
140
+ }
141
+ const bosTokenId = idsGenerator.generateId();
142
+ const eosTokenId = idsGenerator.generateId();
143
+ idToContent.set(bosTokenId, new SpecialToken("BOS"));
144
+ idToContent.set(eosTokenId, new SpecialToken("EOS"));
145
+ const renderJinjaText = () => {
146
+ try {
147
+ return this._jinjaTemplate.render({
148
+ messages: jinjaItems,
149
+ "bos_token": bosTokenId,
150
+ "eos_token": eosTokenId
151
+ });
152
+ }
153
+ catch (err) {
154
+ return this._jinjaTemplate.render({
155
+ messages: jinjaItems,
156
+ "bos_token": bosTokenId,
157
+ "eos_token": eosTokenId,
158
+ "add_generation_prompt": true
159
+ });
160
+ }
161
+ };
162
+ const validateThatAllMessageIdsAreUsed = (parts) => {
163
+ const messageIdsLeft = new Set(messageIds);
164
+ for (const part of parts) {
165
+ if (typeof part === "string")
166
+ continue;
167
+ messageIdsLeft.delete(part.separator);
168
+ }
169
+ if (messageIdsLeft.size !== 0)
170
+ throw new Error("Some input messages are not present in the generated Jinja template output");
171
+ };
172
+ const renderJinjaAndSplitIntoParts = () => {
173
+ const splitJinjaParts = splitText(renderJinjaText(), [...idToContent.keys()]);
174
+ if (lastItemIsModelMessage) {
175
+ let lastModelResponseIndex = -1;
176
+ for (let i = splitJinjaParts.length - 1; i >= 0; i--) {
177
+ const part = splitJinjaParts[i];
178
+ if (typeof part === "string")
179
+ continue;
180
+ if (modelMessageIds.has(part.separator)) {
181
+ lastModelResponseIndex = i;
182
+ break;
183
+ }
184
+ else if (messageIds.has(part.separator)) {
185
+ validateThatAllMessageIdsAreUsed(splitJinjaParts);
186
+ throw new Error("Last message was expected to be a model message, but it was not");
187
+ }
188
+ }
189
+ if (lastModelResponseIndex < 0) {
190
+ validateThatAllMessageIdsAreUsed(splitJinjaParts);
191
+ throw new Error("A model message was expected to be the last message, but it was not found");
192
+ }
193
+ return {
194
+ splitJinjaParts: splitJinjaParts.slice(0, lastModelResponseIndex + 1),
195
+ stopGenerationJinjaParts: splitJinjaParts.slice(lastModelResponseIndex + 1)
196
+ };
197
+ }
198
+ return {
199
+ splitJinjaParts,
200
+ stopGenerationJinjaParts: []
201
+ };
202
+ };
203
+ const { splitJinjaParts, stopGenerationJinjaParts } = renderJinjaAndSplitIntoParts();
204
+ const messageIdsLeftToProcess = new Set(messageIds);
205
+ const contextText = LlamaText(splitJinjaParts.map((part) => {
206
+ if (typeof part === "string")
207
+ return new SpecialTokensText(part); // things that are not message content can be tokenized with special tokens
208
+ const message = idToContent.get(part.separator);
209
+ if (message == null)
210
+ throw new Error(`Message with id "${part.separator}" not found`);
211
+ messageIdsLeftToProcess.delete(part.separator);
212
+ return message;
213
+ }));
214
+ if (messageIdsLeftToProcess.size !== 0)
215
+ throw new Error("Some input messages are not present in the generated Jinja template output");
216
+ return {
217
+ contextText,
218
+ ignoreStartText: !this.trimLeadingWhitespaceInResponses
219
+ ? []
220
+ : [
221
+ // ignore up to 4 leading spaces
222
+ ...Array(4).fill(0)
223
+ .map((_, index) => LlamaText(" ".repeat(index + 1))),
224
+ LlamaText("\t"),
225
+ LlamaText("\t\t"),
226
+ LlamaText("\t "),
227
+ LlamaText(" \t")
228
+ ],
229
+ stopGenerationTriggers: [
230
+ LlamaText(new SpecialToken("EOS")),
231
+ ...(stopGenerationJinjaParts.length === 0
232
+ ? []
233
+ : [
234
+ LlamaText(stopGenerationJinjaParts.map((part) => {
235
+ if (typeof part === "string")
236
+ return new SpecialTokensText(part);
237
+ const message = idToContent.get(part.separator);
238
+ if (message == null)
239
+ throw new Error(`Message with id "${part.separator}" not found`);
240
+ return message;
241
+ }))
242
+ ])
243
+ ]
244
+ };
245
+ }
246
+ /**
247
+ * Validate that this Jinja template can be rendered
248
+ * @internal
249
+ */
250
+ _runSanityTest() {
251
+ try {
252
+ for (const chatHistory of chatHistoriesForSanityTest) {
253
+ this.generateContextText(chatHistory);
254
+ }
255
+ }
256
+ catch (err) {
257
+ throw new Error("The provided Jinja template failed that sanity test: " + String(err));
258
+ }
259
+ }
260
+ }
261
+ class UniqueTemplateId {
262
+ antiText;
263
+ _ids = new Set();
264
+ constructor(antiText) {
265
+ this.antiText = antiText;
266
+ }
267
+ generateId() {
268
+ let id;
269
+ do {
270
+ id = "W" + (Math.random()
271
+ .toString(36)
272
+ .slice(2)) + "W";
273
+ } while (this._ids.has(id) || this.antiText.includes(id));
274
+ this._ids.add(id);
275
+ return id;
276
+ }
277
+ removeId(id) {
278
+ this._ids.delete(id);
279
+ }
280
+ }
281
+ function resolveConvertUnsupportedSystemMessagesToUserMessagesOption(convertUnsupportedSystemMessagesToUserMessages) {
282
+ if (convertUnsupportedSystemMessagesToUserMessages === false)
283
+ return undefined;
284
+ if (convertUnsupportedSystemMessagesToUserMessages === true)
285
+ return {
286
+ ...defaultConvertUnsupportedSystemMessagesToUserMessagesFormat,
287
+ use: "always"
288
+ };
289
+ if (convertUnsupportedSystemMessagesToUserMessages === "auto")
290
+ return {
291
+ ...defaultConvertUnsupportedSystemMessagesToUserMessagesFormat,
292
+ use: "ifNeeded"
293
+ };
294
+ if (typeof convertUnsupportedSystemMessagesToUserMessages === "object")
295
+ return {
296
+ ...convertUnsupportedSystemMessagesToUserMessages,
297
+ use: convertUnsupportedSystemMessagesToUserMessages.use ?? "ifNeeded"
298
+ };
299
+ return { ...defaultConvertUnsupportedSystemMessagesToUserMessagesFormat, use: "ifNeeded" };
300
+ }
301
+ const chatHistoriesForSanityTest = [
302
+ [{
303
+ type: "system",
304
+ text: "System message ~!@#$%^&*()\n*"
305
+ }, {
306
+ type: "user",
307
+ text: "Message 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
308
+ }, {
309
+ type: "model",
310
+ response: [""]
311
+ }],
312
+ [{
313
+ type: "system",
314
+ text: "System message ~!@#$%^&*()\n*"
315
+ }, {
316
+ type: "user",
317
+ text: "Message 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
318
+ }, {
319
+ type: "model",
320
+ response: ["Result 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"]
321
+ }],
322
+ [{
323
+ type: "system",
324
+ text: "System message ~!@#$%^&*()\n*"
325
+ }, {
326
+ type: "user",
327
+ text: "Message 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
328
+ }, {
329
+ type: "model",
330
+ response: ["Result 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"]
331
+ }, {
332
+ type: "user",
333
+ text: "Message2 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
334
+ }, {
335
+ type: "model",
336
+ response: [""]
337
+ }],
338
+ [{
339
+ type: "system",
340
+ text: "System message ~!@#$%^&*()\n*"
341
+ }, {
342
+ type: "user",
343
+ text: "Message 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
344
+ }, {
345
+ type: "model",
346
+ response: ["Result 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"]
347
+ }, {
348
+ type: "user",
349
+ text: "Message2 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"
350
+ }, {
351
+ type: "model",
352
+ response: ["Result2 1234567890!@#$%^&*()_+-=[]{}|\\:;\"',./<>?`~"]
353
+ }]
354
+ ];
355
+ //# sourceMappingURL=JinjaTemplateChatWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JinjaTemplateChatWrapper.js","sourceRoot":"","sources":["../../../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAC,WAAW,EAAsB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAyC,gCAAgC,EAAC,MAAM,mDAAmD,CAAC;AA+C3I,MAAM,2DAA2D,GAAgC;IAC7F,MAAM,EAAE,qBAAqB;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACrC,WAAW,GAAG,eAAe,CAAC;IACrB,QAAQ,CAAsB;IAEvC,QAAQ,CAAS;IACjB,aAAa,CAAS;IACtB,YAAY,CAAS;IACrB,cAAc,CAAS;IACvB,8CAA8C,CAA+B;IAC7E,iCAAiC,CAAU;IAC3C,gCAAgC,CAAU;IAE1D,gBAAgB,CAAkB,cAAc,CAAW;IAE3D,YAAmB,EACf,QAAQ,EACR,aAAa,GAAG,WAAW,EAC3B,YAAY,GAAG,MAAM,EACrB,cAAc,GAAG,QAAQ,EACzB,8CAA8C,GAAG,2DAA2D,EAC5G,2BAA2B,EAC3B,iCAAiC,GAAG,IAAI,EACxC,gCAAgC,GAAG,IAAI,EACT;QAC9B,KAAK,EAAE,CAAC;QAER,IAAI,QAAQ,IAAI,IAAI;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,8CAA8C;YAC/C,2DAA2D,CAAC,8CAA8C,CAAC,CAAC;QAChH,IAAI,CAAC,iCAAiC,GAAG,iCAAiC,CAAC;QAC3E,IAAI,CAAC,gCAAgC,GAAG,gCAAgC,CAAC;QAEzE,IAAI,CAAC,QAAQ,GAAG;YACZ,GAAG,KAAK,CAAC,QAAQ;YACjB,SAAS,EAAE,gCAAgC,CAAC,2BAA2B,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,SAAS;SACnH,CAAC;QAEF,IAAI,IAAI,CAAC,8CAA8C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClJ,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAExG,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAEe,mBAAmB,CAAC,OAAmC,EAAE,EAAC,kBAAkB,EAAE,sBAAsB,KAGhH,EAAE;QAIF,MAAM,oBAAoB,GAAG,IAAI,CAAC,2CAA2C,CAAC,OAAO,EAAE,kBAAkB,EAAE;YACvG,cAAc,EAAE,sBAAsB;SACzC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,8CAA8C,IAAI,IAAI,EAAE;YAC7D,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;gBACnD,yCAAyC,EAAE,SAAS;aACvD,CAAC,CAAC;SACN;aAAM,IAAI,IAAI,CAAC,8CAA8C,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC7E,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;gBACnD,yCAAyC,EAAE,IAAI,CAAC,8CAA8C,CAAC,MAAM;aACxG,CAAC,CAAC;SACN;QAED,IAAI;YACA,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;gBACnD,yCAAyC,EAAE,SAAS;aACvD,CAAC,CAAC;SACN;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;gBACnD,yCAAyC,EAAE,IAAI,CAAC,8CAA8C,CAAC,MAAM;aACxG,CAAC,CAAC;SACN;IACL,CAAC;IAED,gBAAgB;IACR,oBAAoB,CAAC,OAAmC,EAAE,EAC9D,yCAAyC,EAG5C;QAKG,MAAM,kBAAkB,GAAG,yCAAyC,IAAI,IAAI;YACxE,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;oBACtB,OAAO;wBACH,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yCAAyC,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC;qBAC7D,CAAC;gBAEhC,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;QAEP,MAAM,WAAW,GAGZ,EAAE,CAAC;QAER,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,qBAAqB,GAAuC,IAAI,CAAC;QAErE,SAAS,KAAK;YACV,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,IAAI,IAAI;gBACxD,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;YAExF,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,iCAAiC,IAAI,qBAAqB,KAAK,QAAQ;oBAC7E,KAAK,EAAE,CAAC;gBAEZ,qBAAqB,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,iCAAiC,IAAI,qBAAqB,KAAK,MAAM;oBAC3E,KAAK,EAAE,CAAC;gBAEZ,qBAAqB,GAAG,MAAM,CAAC;gBAC/B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,iCAAiC,IAAI,qBAAqB,KAAK,OAAO;oBAC5E,KAAK,EAAE,CAAC;gBAEZ,qBAAqB,GAAG,OAAO,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACpE;;gBACG,KAAK,CAAC,IAAoB,CAAC,CAAC;SACnC;QAED,MAAM,sBAAsB,GAAG,qBAAqB,KAAK,OAAO,CAAC;QACjE,KAAK,EAAE,CAAC;QAER,MAAM,YAAY,GAAG,IAAI,gBAAgB,CACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;YAC5E,CAAC,yCAAyC,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3G,CAAC;QAEF,MAAM,UAAU,GAGX,EAAE,CAAC;QACR,MAAM,YAAY,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,KAAK,EAAE,IAAI,CAAC,aAAa;SACnB,CAAC;QACX,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YAClC,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;YAErC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;gBAC3B,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/B;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QAE7C,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAErD,MAAM,eAAe,GAAG,GAAG,EAAE;YACzB,IAAI;gBACA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;oBAC9B,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,UAAU;iBAC1B,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;oBAC9B,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,UAAU;oBACvB,uBAAuB,EAAE,IAAI;iBAChC,CAAC,CAAC;aACN;QACL,CAAC,CAAC;QAEF,MAAM,gCAAgC,GAAG,CAAC,KAA6C,EAAE,EAAE;YACvF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,IAAI,OAAO,IAAI,KAAK,QAAQ;oBACxB,SAAS;gBAEb,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzC;YAED,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QACtG,CAAC,CAAC;QAEF,MAAM,4BAA4B,GAAG,GAAG,EAAE;YACtC,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAE9E,IAAI,sBAAsB,EAAE;gBACxB,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;gBAEhC,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAClD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;oBAEhC,IAAI,OAAO,IAAI,KAAK,QAAQ;wBACxB,SAAS;oBAEb,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBACrC,sBAAsB,GAAG,CAAC,CAAC;wBAC3B,MAAM;qBACT;yBAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBACvC,gCAAgC,CAAC,eAAe,CAAC,CAAC;wBAClD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;qBACtF;iBACJ;gBAED,IAAI,sBAAsB,GAAG,CAAC,EAAE;oBAC5B,gCAAgC,CAAC,eAAe,CAAC,CAAC;oBAClD,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;iBAChG;gBAED,OAAO;oBACH,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAAC;oBACrE,wBAAwB,EAAE,eAAe,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC;iBAC9E,CAAC;aACL;YAED,OAAO;gBACH,eAAe;gBACf,wBAAwB,EAAE,EAAE;aAC/B,CAAC;QACN,CAAC,CAAC;QAEF,MAAM,EAAC,eAAe,EAAE,wBAAwB,EAAC,GAAG,4BAA4B,EAAE,CAAC;QAEnF,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,SAAS,CACzB,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E;YAEnH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,OAAO,IAAI,IAAI;gBACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC;YAErE,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/C,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,CACL,CAAC;QAEF,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAElG,OAAO;YACH,WAAW;YACX,eAAe,EAAE,CAAC,IAAI,CAAC,gCAAgC;gBACnD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,gCAAgC;oBAChC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;yBACd,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxD,SAAS,CAAC,IAAI,CAAC;oBACf,SAAS,CAAC,MAAM,CAAC;oBACjB,SAAS,CAAC,KAAK,CAAC;oBAChB,SAAS,CAAC,KAAK,CAAC;iBACnB;YACL,sBAAsB,EAAE;gBACpB,SAAS,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClC,GAAG,CACC,wBAAwB,CAAC,MAAM,KAAK,CAAC;oBACjC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,SAAS,CACL,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAClC,IAAI,OAAO,IAAI,KAAK,QAAQ;gCACxB,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;4BAEvC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAEhD,IAAI,OAAO,IAAI,IAAI;gCACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC;4BAErE,OAAO,OAAO,CAAC;wBACnB,CAAC,CAAC,CACL;qBACJ,CACR;aACJ;SACJ,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,cAAc;QAClB,IAAI;YACA,KAAK,MAAM,WAAW,IAAI,0BAA0B,EAAE;gBAClD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;aACzC;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1F;IACL,CAAC;CACJ;AAED,MAAM,gBAAgB;IACF,QAAQ,CAAS;IAChB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,YAAmB,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU;QACb,IAAI,EAAU,CAAC;QAEf,GAAG;YACC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;iBACpB,QAAQ,CAAC,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAE1D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,QAAQ,CAAC,EAAU;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;CACJ;AAED,SAAS,2DAA2D,CAChE,8CAAkI;IAElI,IAAI,8CAA8C,KAAK,KAAK;QACxD,OAAO,SAAS,CAAC;IAErB,IAAI,8CAA8C,KAAK,IAAI;QACvD,OAAO;YACH,GAAG,2DAA2D;YAC9D,GAAG,EAAE,QAAQ;SAChB,CAAC;IAEN,IAAI,8CAA8C,KAAK,MAAM;QACzD,OAAO;YACH,GAAG,2DAA2D;YAC9D,GAAG,EAAE,UAAU;SAClB,CAAC;IAEN,IAAI,OAAO,8CAA8C,KAAK,QAAQ;QAClE,OAAO;YACH,GAAG,8CAA8C;YACjD,GAAG,EAAE,8CAA8C,CAAC,GAAG,IAAI,UAAU;SACxE,CAAC;IAEN,OAAO,EAAC,GAAG,2DAA2D,EAAE,GAAG,EAAE,UAAU,EAAC,CAAC;AAC7F,CAAC;AAED,MAAM,0BAA0B,GAAwB;IACpD,CAAC;YACG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,+BAA+B;SACxC,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sDAAsD;SAC/D,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,EAAE,CAAC;SACjB,CAAC;IAEF,CAAC;YACG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,+BAA+B;SACxC,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sDAAsD;SAC/D,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,qDAAqD,CAAC;SACpE,CAAC;IAEF,CAAC;YACG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,+BAA+B;SACxC,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sDAAsD;SAC/D,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,qDAAqD,CAAC;SACpE,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,uDAAuD;SAChE,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,EAAE,CAAC;SACjB,CAAC;IAEF,CAAC;YACG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,+BAA+B;SACxC,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sDAAsD;SAC/D,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,qDAAqD,CAAC;SACpE,EAAE;YACC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,uDAAuD;SAChE,EAAE;YACC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,sDAAsD,CAAC;SACrE,CAAC;CACL,CAAC"}
@@ -1,6 +1,7 @@
1
- import { ChatHistoryItem, ChatModelFunctions } from "./types.js";
2
- import { LlamaText } from "./utils/LlamaText.js";
3
- import { ChatWrapper, ChatWrapperSettings } from "./ChatWrapper.js";
1
+ import { ChatHistoryItem, ChatModelFunctions } from "../../types.js";
2
+ import { LlamaText } from "../../utils/LlamaText.js";
3
+ import { ChatWrapper, ChatWrapperSettings } from "../../ChatWrapper.js";
4
+ import { ChatHistoryFunctionCallMessageTemplate } from "./utils/chatHistoryFunctionCallMessageTemplate.js";
4
5
  export type TemplateChatWrapperOptions = {
5
6
  template: ChatTemplate;
6
7
  historyTemplate: ChatHistoryTemplate;
@@ -10,6 +11,8 @@ export type TemplateChatWrapperOptions = {
10
11
  functionCallMessageTemplate?: ChatHistoryFunctionCallMessageTemplate;
11
12
  joinAdjacentMessagesOfTheSameType?: boolean;
12
13
  };
14
+ type ChatTemplate = `${`${string}{{systemPrompt}}` | ""}${string}{{history}}${string}{{completion}}${string}`;
15
+ type ChatHistoryTemplate = `${string}{{roleName}}${string}{{message}}${string}`;
13
16
  /**
14
17
  * A chat wrapper based on a simple template.
15
18
  *
@@ -59,10 +62,4 @@ export declare class TemplateChatWrapper extends ChatWrapper {
59
62
  stopGenerationTriggers: LlamaText[];
60
63
  };
61
64
  }
62
- type ChatTemplate = `${`${string}{{systemPrompt}}` | ""}${string}{{history}}${string}{{completion}}${string}`;
63
- type ChatHistoryTemplate = `${string}{{roleName}}${string}{{message}}${string}`;
64
- type ChatHistoryFunctionCallMessageTemplate = [
65
- call: `${string}{{functionName}}${string}{{functionParams}}${string}`,
66
- result: `${string}{{functionCallResult}}${string}`
67
- ];
68
65
  export {};
@@ -1,6 +1,7 @@
1
- import { BuiltinSpecialToken, LlamaText, SpecialToken } from "./utils/LlamaText.js";
2
- import { ChatWrapper } from "./ChatWrapper.js";
3
- import { parseTextTemplate } from "./utils/parseTextTemplate.js";
1
+ import { SpecialToken, LlamaText, SpecialTokensText } from "../../utils/LlamaText.js";
2
+ import { ChatWrapper } from "../../ChatWrapper.js";
3
+ import { parseTextTemplate } from "../../utils/parseTextTemplate.js";
4
+ import { parseFunctionCallMessageTemplate } from "./utils/chatHistoryFunctionCallMessageTemplate.js";
4
5
  /**
5
6
  * A chat wrapper based on a simple template.
6
7
  *
@@ -45,6 +46,8 @@ export class TemplateChatWrapper extends ChatWrapper {
45
46
  /** @internal */ _parsedChatHistoryTemplate;
46
47
  constructor({ template, historyTemplate, modelRoleName, userRoleName, systemRoleName = "System", functionCallMessageTemplate, joinAdjacentMessagesOfTheSameType = true }) {
47
48
  super();
49
+ if (template == null || historyTemplate == null || modelRoleName == null || userRoleName == null)
50
+ throw new Error("Template chat wrapper settings must have a template, historyTemplate, modelRoleName, and userRoleName.");
48
51
  this.template = template;
49
52
  this.historyTemplate = historyTemplate;
50
53
  this.modelRoleName = modelRoleName;
@@ -63,9 +66,9 @@ export class TemplateChatWrapper extends ChatWrapper {
63
66
  documentParams: documentFunctionParams
64
67
  });
65
68
  const resultItems = [];
66
- let systemTexts = [];
67
- let userTexts = [];
68
- let modelTexts = [];
69
+ const systemTexts = [];
70
+ const userTexts = [];
71
+ const modelTexts = [];
69
72
  let currentAggregateFocus = null;
70
73
  function flush() {
71
74
  if (systemTexts.length > 0 || userTexts.length > 0 || modelTexts.length > 0)
@@ -74,18 +77,10 @@ export class TemplateChatWrapper extends ChatWrapper {
74
77
  user: userTexts.join("\n\n"),
75
78
  model: modelTexts.join("\n\n")
76
79
  });
77
- systemTexts = [];
78
- userTexts = [];
79
- modelTexts = [];
80
+ systemTexts.length = 0;
81
+ userTexts.length = 0;
82
+ modelTexts.length = 0;
80
83
  }
81
- const getHistoryItem = (role, text, prefix) => {
82
- const { roleNamePrefix, messagePrefix, messageSuffix } = this._parsedChatHistoryTemplate;
83
- return LlamaText([
84
- new SpecialToken((prefix ?? "") + roleNamePrefix + role + messagePrefix),
85
- text,
86
- new SpecialToken(messageSuffix)
87
- ]);
88
- };
89
84
  for (const item of historyWithFunctions) {
90
85
  if (item.type === "system") {
91
86
  if (!this.joinAdjacentMessagesOfTheSameType || currentAggregateFocus !== "system")
@@ -105,20 +100,30 @@ export class TemplateChatWrapper extends ChatWrapper {
105
100
  currentAggregateFocus = "model";
106
101
  modelTexts.push(this.generateModelResponseText(item.response));
107
102
  }
103
+ else
104
+ void (item);
108
105
  }
109
106
  flush();
107
+ const getHistoryItem = (role, text, prefix) => {
108
+ const { roleNamePrefix, messagePrefix, messageSuffix } = this._parsedChatHistoryTemplate;
109
+ return LlamaText([
110
+ new SpecialTokensText((prefix ?? "") + roleNamePrefix + role + messagePrefix),
111
+ text,
112
+ new SpecialTokensText(messageSuffix)
113
+ ]);
114
+ };
110
115
  const contextText = LlamaText(resultItems.map(({ system, user, model }, index) => {
111
116
  const isFirstItem = index === 0;
112
117
  const isLastItem = index === resultItems.length - 1;
113
118
  const res = LlamaText([
114
119
  isFirstItem
115
120
  ? system.length === 0
116
- ? new SpecialToken((this._parsedChatTemplate.systemPromptPrefix ?? "") + this._parsedChatTemplate.historyPrefix)
121
+ ? new SpecialTokensText((this._parsedChatTemplate.systemPromptPrefix ?? "") + this._parsedChatTemplate.historyPrefix)
117
122
  : this._parsedChatTemplate.systemPromptPrefix != null
118
123
  ? LlamaText([
119
- new SpecialToken(this._parsedChatTemplate.systemPromptPrefix),
124
+ new SpecialTokensText(this._parsedChatTemplate.systemPromptPrefix),
120
125
  system,
121
- new SpecialToken(this._parsedChatTemplate.historyPrefix)
126
+ new SpecialTokensText(this._parsedChatTemplate.historyPrefix)
122
127
  ])
123
128
  : getHistoryItem("system", system, this._parsedChatTemplate.historyPrefix)
124
129
  : system.length === 0
@@ -132,17 +137,17 @@ export class TemplateChatWrapper extends ChatWrapper {
132
137
  : !isLastItem
133
138
  ? getHistoryItem("model", model)
134
139
  : LlamaText([
135
- new SpecialToken(this._parsedChatTemplate.completionPrefix),
140
+ new SpecialTokensText(this._parsedChatTemplate.completionPrefix),
136
141
  model
137
142
  ])
138
143
  ]);
139
144
  return LlamaText(res.values.reduce((res, value) => {
140
- if (value instanceof SpecialToken) {
145
+ if (value instanceof SpecialTokensText) {
141
146
  const lastItem = res[res.length - 1];
142
- if (lastItem == null || !(lastItem instanceof SpecialToken))
147
+ if (lastItem == null || !(lastItem instanceof SpecialTokensText))
143
148
  return res.concat([value]);
144
149
  return res.slice(0, -1).concat([
145
- new SpecialToken(lastItem.value + value.value)
150
+ new SpecialTokensText(lastItem.value + value.value)
146
151
  ]);
147
152
  }
148
153
  return res.concat([value]);
@@ -151,56 +156,13 @@ export class TemplateChatWrapper extends ChatWrapper {
151
156
  return {
152
157
  contextText,
153
158
  stopGenerationTriggers: [
154
- LlamaText(new BuiltinSpecialToken("EOS")),
159
+ LlamaText(new SpecialToken("EOS")),
155
160
  LlamaText(this._parsedChatTemplate.completionSuffix),
156
- LlamaText(new SpecialToken(this._parsedChatTemplate.completionSuffix))
161
+ LlamaText(new SpecialTokensText(this._parsedChatTemplate.completionSuffix))
157
162
  ]
158
163
  };
159
164
  }
160
165
  }
161
- function parseFunctionCallMessageTemplate(template) {
162
- if (template == null)
163
- return null;
164
- const [functionCallTemplate, functionCallResultTemplate] = template;
165
- if (functionCallTemplate == null || functionCallResultTemplate == null)
166
- throw new Error("Both function call and function call result templates are required");
167
- const parsedFunctionCallTemplate = parseTextTemplate(functionCallTemplate, [{
168
- text: "{{functionName}}",
169
- key: "functionName"
170
- }, {
171
- text: "{{functionParams}}",
172
- key: "functionParams"
173
- }]);
174
- const parsedFunctionCallResultTemplate = parseTextTemplate(functionCallResultTemplate, [{
175
- text: "{{functionCallResult}}",
176
- key: "functionCallResult"
177
- }]);
178
- const callPrefix = parsedFunctionCallTemplate.functionName.prefix;
179
- const callParamsPrefix = parsedFunctionCallTemplate.functionParams.prefix;
180
- const callSuffix = parsedFunctionCallTemplate.functionParams.suffix;
181
- const resultPrefix = parsedFunctionCallResultTemplate.functionCallResult.prefix;
182
- const resultSuffix = parsedFunctionCallResultTemplate.functionCallResult.suffix;
183
- if (callPrefix.length === 0)
184
- throw new Error('Function call template must have text before "{{functionName}}"');
185
- if (callSuffix.length === 0)
186
- throw new Error('Function call template must have text after "{{functionParams}}"');
187
- if (resultPrefix.length === 0)
188
- throw new Error('Function call result template must have text before "{{functionCallResult}}"');
189
- if (resultSuffix.length === 0)
190
- throw new Error('Function call result template must have text after "{{functionCallResult}}"');
191
- return {
192
- call: {
193
- optionalPrefixSpace: true,
194
- prefix: callPrefix,
195
- paramsPrefix: callParamsPrefix,
196
- suffix: callSuffix
197
- },
198
- result: {
199
- prefix: resultPrefix,
200
- suffix: resultSuffix
201
- }
202
- };
203
- }
204
166
  function parseChatTemplate(template) {
205
167
  const parsedTemplate = parseTextTemplate(template, [{
206
168
  text: "{{systemPrompt}}",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateChatWrapper.js","sourceRoot":"","sources":["../../../src/chatWrappers/generic/TemplateChatWrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export declare function parseFunctionCallMessageTemplate(template?: ChatHistoryFunctionCallMessageTemplate): {
2
+ call: {
3
+ optionalPrefixSpace: boolean;
4
+ prefix: string;
5
+ paramsPrefix: string;
6
+ suffix: string;
7
+ };
8
+ result: {
9
+ prefix: string;
10
+ suffix: string;
11
+ };
12
+ } | null;
13
+ /**
14
+ * Template format for how functions can be called by the model and how their results are fed to the model after the function call.
15
+ * Consists of an array with two elements:
16
+ * 1. The function call template.
17
+ * 2. The function call result template.
18
+ *
19
+ * For example:
20
+ * ```typescript
21
+ * const template: ChatHistoryFunctionCallMessageTemplate = [
22
+ * "[[call: {{functionName}}({{functionParams}})]]"
23
+ * " [[result: {{functionCallResult}}]]"
24
+ * ];
25
+ * ```
26
+ *
27
+ * It's mandatory for the call template to have text before `{{functionName}}` in order for the chat wrapper know when
28
+ * to activate the function calling grammar.
29
+ */
30
+ export type ChatHistoryFunctionCallMessageTemplate = [
31
+ call: `${string}{{functionName}}${string}{{functionParams}}${string}`,
32
+ result: `${string}{{functionCallResult}}${string}`
33
+ ];