node-llama-cpp 3.0.0-beta.22 → 3.0.0-beta.23

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 (276) hide show
  1. package/dist/ChatWrapper.d.ts +8 -26
  2. package/dist/ChatWrapper.js +100 -52
  3. package/dist/ChatWrapper.js.map +1 -1
  4. package/dist/{apiDocsOverrides.js → apiDocsIndex.js} +3 -1
  5. package/dist/apiDocsIndex.js.map +1 -0
  6. package/dist/bindings/AddonTypes.d.ts +1 -1
  7. package/dist/bindings/Llama.d.ts +1 -1
  8. package/dist/bindings/Llama.js +5 -1
  9. package/dist/bindings/Llama.js.map +1 -1
  10. package/dist/bindings/getLlama.js.map +1 -1
  11. package/dist/bindings/types.d.ts +1 -0
  12. package/dist/bindings/utils/asyncEvery.js.map +1 -1
  13. package/dist/bindings/utils/asyncSome.js.map +1 -1
  14. package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -1
  15. package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -1
  16. package/dist/bindings/utils/compileLLamaCpp.d.ts +2 -0
  17. package/dist/bindings/utils/compileLLamaCpp.js +5 -1
  18. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  19. package/dist/bindings/utils/detectAvailableComputeLayers.js +2 -1
  20. package/dist/bindings/utils/detectAvailableComputeLayers.js.map +1 -1
  21. package/dist/bindings/utils/detectGlibc.js +3 -3
  22. package/dist/bindings/utils/detectGlibc.js.map +1 -1
  23. package/dist/bindings/utils/getBestComputeLayersAvailable.d.ts +1 -0
  24. package/dist/bindings/utils/getBestComputeLayersAvailable.js.map +1 -1
  25. package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -1
  26. package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -1
  27. package/dist/bindings/utils/getGpuTypesToUseForOption.d.ts +1 -0
  28. package/dist/bindings/utils/getGpuTypesToUseForOption.js.map +1 -1
  29. package/dist/bindings/utils/getLinuxDistroInfo.js.map +1 -1
  30. package/dist/bindings/utils/getPlatform.js.map +1 -1
  31. package/dist/bindings/utils/getPlatformInfo.js.map +1 -1
  32. package/dist/bindings/utils/hasBuildingFromSourceDependenciesInstalled.js.map +1 -1
  33. package/dist/bindings/utils/lastBuildInfo.js.map +1 -1
  34. package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -1
  35. package/dist/bindings/utils/logDistroInstallInstruction.js.map +1 -1
  36. package/dist/bindings/utils/resolveCustomCmakeOptions.js +2 -0
  37. package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -1
  38. package/dist/bindings/utils/testBindingBinary.js.map +1 -1
  39. package/dist/bindings/utils/testCmakeBinary.d.ts +1 -0
  40. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +2 -14
  41. package/dist/chatWrappers/ChatMLChatWrapper.js +10 -10
  42. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -1
  43. package/dist/chatWrappers/FalconChatWrapper.d.ts +2 -9
  44. package/dist/chatWrappers/FalconChatWrapper.js +10 -10
  45. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  46. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +8 -32
  47. package/dist/chatWrappers/FunctionaryChatWrapper.js +274 -82
  48. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
  49. package/dist/chatWrappers/GemmaChatWrapper.d.ts +3 -14
  50. package/dist/chatWrappers/GemmaChatWrapper.js +20 -12
  51. package/dist/chatWrappers/GemmaChatWrapper.js.map +1 -1
  52. package/dist/chatWrappers/GeneralChatWrapper.d.ts +2 -9
  53. package/dist/chatWrappers/GeneralChatWrapper.js +10 -10
  54. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  55. package/dist/chatWrappers/Llama2ChatWrapper.d.ts +2 -10
  56. package/dist/chatWrappers/Llama2ChatWrapper.js +9 -9
  57. package/dist/chatWrappers/Llama2ChatWrapper.js.map +1 -1
  58. package/dist/chatWrappers/Llama3ChatWrapper.d.ts +10 -25
  59. package/dist/chatWrappers/Llama3ChatWrapper.js +71 -26
  60. package/dist/chatWrappers/Llama3ChatWrapper.js.map +1 -1
  61. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +6 -12
  62. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +25 -13
  63. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
  64. package/dist/chatWrappers/generic/TemplateChatWrapper.d.ts +14 -24
  65. package/dist/chatWrappers/generic/TemplateChatWrapper.js +21 -21
  66. package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -1
  67. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.d.ts +11 -21
  68. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js +1 -1
  69. package/dist/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.js.map +1 -1
  70. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js +8 -4
  71. package/dist/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.js.map +1 -1
  72. package/dist/chatWrappers/utils/resolveChatWrapper.js +30 -1
  73. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  74. package/dist/cli/commands/BuildCommand.d.ts +6 -1
  75. package/dist/cli/commands/BuildCommand.js +14 -3
  76. package/dist/cli/commands/BuildCommand.js.map +1 -1
  77. package/dist/cli/commands/ChatCommand.js +1 -1
  78. package/dist/cli/commands/ChatCommand.js.map +1 -1
  79. package/dist/cli/commands/ClearCommand.js.map +1 -1
  80. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  81. package/dist/cli/commands/DownloadCommand.d.ts +1 -0
  82. package/dist/cli/commands/DownloadCommand.js +1 -1
  83. package/dist/cli/commands/DownloadCommand.js.map +1 -1
  84. package/dist/cli/commands/InfillCommand.js.map +1 -1
  85. package/dist/cli/commands/InitCommand.js.map +1 -1
  86. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  87. package/dist/cli/commands/PullCommand.js.map +1 -1
  88. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -1
  89. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -1
  90. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  91. package/dist/cli/recommendedModels.js +48 -27
  92. package/dist/cli/recommendedModels.js.map +1 -1
  93. package/dist/cli/utils/ConsoleInteraction.js.map +1 -1
  94. package/dist/cli/utils/ConsoleTable.js.map +1 -1
  95. package/dist/cli/utils/basicChooseFromListConsoleInteraction.js.map +1 -1
  96. package/dist/cli/utils/consolePromptQuestion.js.map +1 -1
  97. package/dist/cli/utils/getReadablePath.js +1 -1
  98. package/dist/cli/utils/getReadablePath.js.map +1 -1
  99. package/dist/cli/utils/interactivelyAskForModel.js.map +1 -1
  100. package/dist/cli/utils/printCommonInfoLines.js.map +1 -1
  101. package/dist/cli/utils/printInfoLine.js.map +1 -1
  102. package/dist/cli/utils/projectTemplates.js.map +1 -1
  103. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
  104. package/dist/cli/utils/resolveHeaderFlag.js.map +1 -1
  105. package/dist/cli/utils/splitAnsiToLines.js.map +1 -1
  106. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +79 -8
  107. package/dist/evaluator/LlamaChat/LlamaChat.js +1212 -481
  108. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  109. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.d.ts +11 -0
  110. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js +55 -0
  111. package/dist/evaluator/LlamaChat/utils/FunctionCallNameGrammar.js.map +1 -0
  112. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.d.ts +16 -0
  113. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js +45 -0
  114. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js.map +1 -0
  115. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.d.ts +8 -0
  116. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js +12 -0
  117. package/dist/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.js.map +1 -0
  118. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +24 -16
  119. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -1
  120. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +110 -5
  121. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +226 -39
  122. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  123. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.d.ts +39 -0
  124. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js +186 -0
  125. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js.map +1 -0
  126. package/dist/evaluator/LlamaCompletion.d.ts +17 -29
  127. package/dist/evaluator/LlamaCompletion.js +32 -19
  128. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  129. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +1 -2
  130. package/dist/evaluator/LlamaContext/LlamaContext.js +1 -1
  131. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  132. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js.map +1 -1
  133. package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.js.map +1 -1
  134. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  135. package/dist/evaluator/LlamaGrammar.d.ts +3 -3
  136. package/dist/evaluator/LlamaGrammar.js +1 -1
  137. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  138. package/dist/evaluator/{LlamaModel.d.ts → LlamaModel/LlamaModel.d.ts} +20 -14
  139. package/dist/evaluator/{LlamaModel.js → LlamaModel/LlamaModel.js} +100 -18
  140. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -0
  141. package/dist/evaluator/LlamaModel/utils/TokenAttributes.d.ts +29 -0
  142. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js +65 -0
  143. package/dist/evaluator/LlamaModel/utils/TokenAttributes.js.map +1 -0
  144. package/dist/evaluator/TokenBias.d.ts +1 -1
  145. package/dist/evaluator/TokenMeter.js.map +1 -1
  146. package/dist/gguf/fileReaders/GgufFsFileReader.js +2 -1
  147. package/dist/gguf/fileReaders/GgufFsFileReader.js.map +1 -1
  148. package/dist/gguf/fileReaders/GgufNetworkFetchFileReader.js.map +1 -1
  149. package/dist/gguf/insights/GgufInsights.d.ts +6 -0
  150. package/dist/gguf/insights/GgufInsights.js +20 -0
  151. package/dist/gguf/insights/GgufInsights.js.map +1 -1
  152. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +1 -1
  153. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +1 -1
  154. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -1
  155. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -1
  156. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +1 -1
  157. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -1
  158. package/dist/gguf/insights/utils/scoreLevels.js.map +1 -1
  159. package/dist/gguf/parser/GgufV2Parser.js.map +1 -1
  160. package/dist/gguf/parser/parseGguf.js.map +1 -1
  161. package/dist/gguf/readGgufFileInfo.js.map +1 -1
  162. package/dist/gguf/types/GgufMetadataTypes.d.ts +2 -1
  163. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  164. package/dist/gguf/utils/convertMetadataKeyValueRecordToNestedObject.js.map +1 -1
  165. package/dist/gguf/utils/getGgufFileTypeName.js.map +1 -1
  166. package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -1
  167. package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js.map +1 -1
  168. package/dist/gguf/utils/resolveSplitGgufParts.js.map +1 -1
  169. package/dist/index.d.ts +14 -10
  170. package/dist/index.js +5 -2
  171. package/dist/index.js.map +1 -1
  172. package/dist/types.d.ts +68 -8
  173. package/dist/types.js.map +1 -1
  174. package/dist/utils/DisposeGuard.js.map +1 -1
  175. package/dist/utils/LlamaText.d.ts +22 -3
  176. package/dist/utils/LlamaText.js +107 -7
  177. package/dist/utils/LlamaText.js.map +1 -1
  178. package/dist/utils/LruCache.d.ts +12 -0
  179. package/dist/utils/LruCache.js +44 -0
  180. package/dist/utils/LruCache.js.map +1 -0
  181. package/dist/utils/ReplHistory.js.map +1 -1
  182. package/dist/utils/StopGenerationDetector.d.ts +25 -9
  183. package/dist/utils/StopGenerationDetector.js +70 -4
  184. package/dist/utils/StopGenerationDetector.js.map +1 -1
  185. package/dist/utils/TokenStreamRegulator.d.ts +1 -0
  186. package/dist/utils/TokenStreamRegulator.js +3 -0
  187. package/dist/utils/TokenStreamRegulator.js.map +1 -1
  188. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -1
  189. package/dist/utils/clearTempFolder.js.map +1 -1
  190. package/dist/utils/cmake.js.map +1 -1
  191. package/dist/utils/createModelDownloader.d.ts +6 -0
  192. package/dist/utils/createModelDownloader.js +5 -2
  193. package/dist/utils/createModelDownloader.js.map +1 -1
  194. package/dist/utils/findBestOption.js.map +1 -1
  195. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +1 -0
  196. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +5 -4
  197. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -1
  198. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  199. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js +1 -1
  200. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  201. package/dist/utils/gbnfJson/terminals/GbnfRepetition.js.map +1 -1
  202. package/dist/utils/gbnfJson/terminals/GbnfWhitespace.js.map +1 -1
  203. package/dist/utils/gbnfJson/terminals/gbnfConsts.d.ts +1 -1
  204. package/dist/utils/gbnfJson/types.d.ts +3 -0
  205. package/dist/utils/gbnfJson/types.js.map +1 -1
  206. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js.map +1 -1
  207. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  208. package/dist/utils/getGrammarsFolder.js.map +1 -1
  209. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  210. package/dist/utils/gitReleaseBundles.js.map +1 -1
  211. package/dist/utils/isUrl.js.map +1 -1
  212. package/dist/utils/parseModelFileName.js.map +1 -1
  213. package/dist/utils/parseTextTemplate.js.map +1 -1
  214. package/dist/utils/prettyPrintObject.js.map +1 -1
  215. package/dist/utils/removeNullFields.js.map +1 -1
  216. package/dist/utils/resolveGithubRelease.d.ts +1 -1
  217. package/dist/utils/resolveGithubRelease.js.map +1 -1
  218. package/dist/utils/safeEventCallback.d.ts +6 -0
  219. package/dist/utils/safeEventCallback.js +29 -0
  220. package/dist/utils/safeEventCallback.js.map +1 -0
  221. package/dist/utils/spawnCommand.js.map +1 -1
  222. package/dist/utils/truncateTextAndRoundToWords.d.ts +2 -0
  223. package/dist/utils/truncateTextAndRoundToWords.js +30 -0
  224. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -1
  225. package/dist/utils/waitForLockfileRelease.js.map +1 -1
  226. package/dist/utils/withLockfile.js.map +1 -1
  227. package/dist/utils/withOra.js.map +1 -1
  228. package/dist/utils/withProgressLog.js.map +1 -1
  229. package/dist/utils/withStatusLogs.js.map +1 -1
  230. package/dist/utils/wrapAbortSignal.d.ts +2 -0
  231. package/dist/utils/wrapAbortSignal.js +9 -0
  232. package/dist/utils/wrapAbortSignal.js.map +1 -0
  233. package/llama/addon.cpp +9 -9
  234. package/llama/binariesGithubRelease.json +1 -1
  235. package/llama/gitRelease.bundle +0 -0
  236. package/llama/llama.cpp.info.json +1 -1
  237. package/llamaBins/linux-arm64/_nlcBuildMetadata.json +1 -1
  238. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  239. package/llamaBins/linux-armv7l/_nlcBuildMetadata.json +1 -1
  240. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  241. package/llamaBins/linux-x64/_nlcBuildMetadata.json +1 -1
  242. package/llamaBins/linux-x64/llama-addon.node +0 -0
  243. package/llamaBins/linux-x64-cuda/_nlcBuildMetadata.json +1 -1
  244. package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
  245. package/llamaBins/linux-x64-vulkan/_nlcBuildMetadata.json +1 -1
  246. package/llamaBins/linux-x64-vulkan/llama-addon.node +0 -0
  247. package/llamaBins/mac-arm64-metal/_nlcBuildMetadata.json +1 -1
  248. package/llamaBins/mac-arm64-metal/default.metallib +0 -0
  249. package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
  250. package/llamaBins/mac-x64/_nlcBuildMetadata.json +1 -1
  251. package/llamaBins/mac-x64/llama-addon.node +0 -0
  252. package/llamaBins/win-arm64/_nlcBuildMetadata.json +1 -1
  253. package/llamaBins/win-arm64/llama-addon.exp +0 -0
  254. package/llamaBins/win-arm64/llama-addon.lib +0 -0
  255. package/llamaBins/win-arm64/llama-addon.node +0 -0
  256. package/llamaBins/win-x64/_nlcBuildMetadata.json +1 -1
  257. package/llamaBins/win-x64/llama-addon.exp +0 -0
  258. package/llamaBins/win-x64/llama-addon.lib +0 -0
  259. package/llamaBins/win-x64/llama-addon.node +0 -0
  260. package/llamaBins/win-x64-cuda/_nlcBuildMetadata.json +1 -1
  261. package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
  262. package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
  263. package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
  264. package/llamaBins/win-x64-vulkan/_nlcBuildMetadata.json +1 -1
  265. package/llamaBins/win-x64-vulkan/llama-addon.exp +0 -0
  266. package/llamaBins/win-x64-vulkan/llama-addon.lib +0 -0
  267. package/llamaBins/win-x64-vulkan/llama-addon.node +0 -0
  268. package/package.json +32 -34
  269. package/templates/packed/electron-typescript-react.json +1 -1
  270. package/templates/packed/node-typescript.json +1 -1
  271. package/dist/apiDocsOverrides.js.map +0 -1
  272. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +0 -22
  273. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +0 -122
  274. package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +0 -1
  275. package/dist/evaluator/LlamaModel.js.map +0 -1
  276. /package/dist/{apiDocsOverrides.d.ts → apiDocsIndex.d.ts} +0 -0
@@ -8,11 +8,21 @@ import { LLamaChatContextShiftOptions } from "../LlamaChat/LlamaChat.js";
8
8
  import { EvaluationPriority } from "../LlamaContext/types.js";
9
9
  import { TokenBias } from "../TokenBias.js";
10
10
  import { LlamaText } from "../../utils/LlamaText.js";
11
+ import { LLamaChatPromptCompletionEngineOptions, LlamaChatSessionPromptCompletionEngine } from "./utils/LlamaChatSessionPromptCompletionEngine.js";
11
12
  export type LlamaChatSessionOptions = {
12
13
  contextSequence: LlamaContextSequence;
13
14
  /** `"auto"` is used by default */
14
15
  chatWrapper?: "auto" | ChatWrapper;
15
16
  systemPrompt?: string;
17
+ /**
18
+ * Add the system prompt even on models that don't support a system prompt.
19
+ *
20
+ * Each chat wrapper has its own workaround for adding a system prompt to a model that doesn't support it,
21
+ * but forcing the system prompt on unsupported models may not always work as expected.
22
+ *
23
+ * Use with caution.
24
+ */
25
+ forceAddSystemPrompt?: boolean;
16
26
  /** Automatically dispose the sequence when the session is disposed */
17
27
  autoDisposeSequence?: boolean;
18
28
  contextShift?: LlamaChatSessionContextShiftOptions;
@@ -103,11 +113,62 @@ export type LLamaChatPromptOptions<Functions extends ChatSessionModelFunctions |
103
113
  grammar?: LlamaGrammar;
104
114
  functions?: never;
105
115
  documentFunctionParams?: never;
116
+ maxParallelFunctionCalls?: never;
106
117
  } | {
107
118
  grammar?: never;
108
119
  functions?: Functions | ChatSessionModelFunctions;
109
120
  documentFunctionParams?: boolean;
121
+ maxParallelFunctionCalls?: number;
110
122
  });
123
+ export type LLamaChatCompletePromptOptions = {
124
+ /**
125
+ * Generate a completion for the given user prompt up to the given number of tokens.
126
+ *
127
+ * Defaults to `256` or half the context size, whichever is smaller.
128
+ */
129
+ maxTokens?: LLamaChatPromptOptions["maxTokens"];
130
+ /**
131
+ * When a completion already started being generated and then the signal is aborted,
132
+ * the generation will stop and the completion will be returned as is instead of throwing an error.
133
+ *
134
+ * Defaults to `false`.
135
+ */
136
+ stopOnAbortSignal?: LLamaChatPromptOptions["stopOnAbortSignal"];
137
+ onToken?: LLamaChatPromptOptions["onToken"];
138
+ signal?: LLamaChatPromptOptions["signal"];
139
+ temperature?: LLamaChatPromptOptions["temperature"];
140
+ minP?: LLamaChatPromptOptions["minP"];
141
+ topK?: LLamaChatPromptOptions["topK"];
142
+ topP?: LLamaChatPromptOptions["topP"];
143
+ trimWhitespaceSuffix?: LLamaChatPromptOptions["trimWhitespaceSuffix"];
144
+ evaluationPriority?: LLamaChatPromptOptions["evaluationPriority"];
145
+ repeatPenalty?: LLamaChatPromptOptions["repeatPenalty"];
146
+ tokenBias?: LLamaChatPromptOptions["tokenBias"];
147
+ customStopTriggers?: LLamaChatPromptOptions["customStopTriggers"];
148
+ grammar?: LlamaGrammar;
149
+ /**
150
+ * Functions are not used by the model here,
151
+ * but are used for keeping the instructions given to the model about the functions in the current context state,
152
+ * to avoid context shifts.
153
+ *
154
+ * It's best to provide the same functions that were used for the previous prompt here.
155
+ */
156
+ functions?: ChatSessionModelFunctions;
157
+ /**
158
+ * Functions are not used by the model here,
159
+ * but are used for keeping the instructions given to the model about the functions in the current context state,
160
+ * to avoid context shifts.
161
+ *
162
+ * It's best to provide the same value that was used for the previous prompt here.
163
+ */
164
+ documentFunctionParams?: boolean;
165
+ };
166
+ export type LLamaChatPreloadPromptOptions = {
167
+ signal?: LLamaChatCompletePromptOptions["signal"];
168
+ evaluationPriority?: LLamaChatCompletePromptOptions["evaluationPriority"];
169
+ functions?: LLamaChatCompletePromptOptions["functions"];
170
+ documentFunctionParams?: LLamaChatCompletePromptOptions["documentFunctionParams"];
171
+ };
111
172
  export type LlamaChatSessionRepeatPenalty = {
112
173
  /**
113
174
  * Number of recent tokens generated by the model to apply penalties to repetition of.
@@ -144,7 +205,7 @@ export declare class LlamaChatSession {
144
205
  /**
145
206
  * @param options
146
207
  */
147
- constructor({ contextSequence, chatWrapper, systemPrompt, autoDisposeSequence, contextShift }: LlamaChatSessionOptions);
208
+ constructor({ contextSequence, chatWrapper, systemPrompt, forceAddSystemPrompt, autoDisposeSequence, contextShift }: LlamaChatSessionOptions);
148
209
  dispose({ disposeSequence }?: {
149
210
  disposeSequence?: boolean;
150
211
  }): void;
@@ -154,17 +215,17 @@ export declare class LlamaChatSession {
154
215
  get chatWrapper(): ChatWrapper;
155
216
  get sequence(): LlamaContextSequence;
156
217
  get context(): import("../LlamaContext/LlamaContext.js").LlamaContext;
157
- get model(): import("../LlamaModel.js").LlamaModel;
218
+ get model(): import("../LlamaModel/LlamaModel.js").LlamaModel;
158
219
  /**
159
220
  * @param prompt
160
221
  * @param [options]
161
222
  */
162
- prompt<const Functions extends ChatSessionModelFunctions | undefined = undefined>(prompt: string, { functions, documentFunctionParams, onToken, signal, stopOnAbortSignal, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty, tokenBias, customStopTriggers }?: LLamaChatPromptOptions<Functions>): Promise<string>;
223
+ prompt<const Functions extends ChatSessionModelFunctions | undefined = undefined>(prompt: string, { functions, documentFunctionParams, maxParallelFunctionCalls, onToken, signal, stopOnAbortSignal, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty, tokenBias, customStopTriggers }?: LLamaChatPromptOptions<Functions>): Promise<string>;
163
224
  /**
164
225
  * @param prompt
165
226
  * @param [options]
166
227
  */
167
- promptWithMeta<const Functions extends ChatSessionModelFunctions | undefined = undefined>(prompt: string, { functions, documentFunctionParams, onToken, signal, stopOnAbortSignal, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority }?: LLamaChatPromptOptions<Functions>): Promise<{
228
+ promptWithMeta<const Functions extends ChatSessionModelFunctions | undefined = undefined>(prompt: string, { functions, documentFunctionParams, maxParallelFunctionCalls, onToken, signal, stopOnAbortSignal, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority }?: LLamaChatPromptOptions<Functions>): Promise<{
168
229
  response: (string | import("../../types.js").ChatModelFunctionCall)[];
169
230
  responseText: string;
170
231
  stopReason: "customStopTrigger";
@@ -173,7 +234,51 @@ export declare class LlamaChatSession {
173
234
  } | {
174
235
  response: (string | import("../../types.js").ChatModelFunctionCall)[];
175
236
  responseText: string;
176
- stopReason: "functionCall" | "abort" | "maxTokens" | "eogToken" | "stopGenerationTrigger";
237
+ stopReason: "abort" | "maxTokens" | "eogToken" | "stopGenerationTrigger" | "functionCalls";
238
+ remainingGenerationAfterStop: string | Token[] | undefined;
239
+ customStopTrigger?: undefined;
240
+ }>;
241
+ /**
242
+ * Preload a user prompt into the current context sequence state to make later inference of the model response begin sooner
243
+ * and feel faster.
244
+ *
245
+ * > **Note:** Preloading a long user prompt can incur context shifts, so consider limiting the length of prompts you preload
246
+ * @param prompt - the prompt to preload
247
+ * @param [options]
248
+ */
249
+ preloadPrompt(prompt: string, options?: LLamaChatPreloadPromptOptions): Promise<void>;
250
+ /**
251
+ * Preload a user prompt into the current context sequence state and generate a completion for it.
252
+ *
253
+ * > **Note:** Preloading a long user prompt and completing a user prompt with a high number of `maxTokens` can incur context shifts,
254
+ * > so consider limiting the length of prompts you preload.
255
+ * >
256
+ * > Also, it's recommended to limit the number of tokens generated to a reasonable amount by configuring `maxTokens`.
257
+ * @param prompt - the prompt to preload
258
+ * @param [options]
259
+ */
260
+ completePrompt(prompt: string, options?: LLamaChatCompletePromptOptions): Promise<string>;
261
+ /**
262
+ * Create a smart completion engine that caches the prompt completions
263
+ * and reuses them when the user prompt matches the beginning of the cached prompt or completion.
264
+ *
265
+ * All completions are made and cache is used only for the current chat session state.
266
+ * You can create a single completion engine for an entire chat session.
267
+ */
268
+ createPromptCompletionEngine(options?: LLamaChatPromptCompletionEngineOptions): LlamaChatSessionPromptCompletionEngine;
269
+ /**
270
+ * See `completePrompt` for more information.
271
+ * @param prompt
272
+ * @param [options]
273
+ */
274
+ completePromptWithMeta(prompt: string, { maxTokens, stopOnAbortSignal, functions, documentFunctionParams, onToken, signal, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority }?: LLamaChatCompletePromptOptions): Promise<{
275
+ completion: string;
276
+ stopReason: "customStopTrigger";
277
+ customStopTrigger: (string | Token)[];
278
+ remainingGenerationAfterStop: string | Token[] | undefined;
279
+ } | {
280
+ completion: string;
281
+ stopReason: "abort" | "maxTokens" | "eogToken" | "stopGenerationTrigger";
177
282
  remainingGenerationAfterStop: string | Token[] | undefined;
178
283
  customStopTrigger?: undefined;
179
284
  }>;
@@ -2,32 +2,42 @@ import { DisposeAggregator, DisposedError, EventRelay, withLock } from "lifecycl
2
2
  import { defaultChatSystemPrompt } from "../../config.js";
3
3
  import { appendUserMessageToChatHistory } from "../../utils/appendUserMessageToChatHistory.js";
4
4
  import { LlamaChat } from "../LlamaChat/LlamaChat.js";
5
+ import { wrapAbortSignal } from "../../utils/wrapAbortSignal.js";
6
+ import { safeEventCallback } from "../../utils/safeEventCallback.js";
7
+ import { LlamaChatSessionPromptCompletionEngine } from "./utils/LlamaChatSessionPromptCompletionEngine.js";
5
8
  export class LlamaChatSession {
6
9
  /** @internal */ _disposeAggregator = new DisposeAggregator();
7
10
  /** @internal */ _autoDisposeSequence;
8
11
  /** @internal */ _contextShift;
12
+ /** @internal */ _chatLock = {};
9
13
  /** @internal */ _chatHistory;
10
14
  /** @internal */ _lastEvaluation;
11
15
  /** @internal */ _chat;
16
+ /** @internal */ _chatHistoryStateRef = {};
17
+ /** @internal */ _preloadAndCompleteAbortControllers = new Set();
12
18
  onDispose = new EventRelay();
13
19
  /**
14
20
  * @param options
15
21
  */
16
- constructor({ contextSequence, chatWrapper = "auto", systemPrompt = defaultChatSystemPrompt, autoDisposeSequence = true, contextShift }) {
22
+ constructor({ contextSequence, chatWrapper = "auto", systemPrompt = defaultChatSystemPrompt, forceAddSystemPrompt = false, autoDisposeSequence = true, contextShift }) {
17
23
  if (contextSequence == null)
18
24
  throw new Error("contextSequence cannot be null");
19
25
  if (contextSequence.disposed)
20
26
  throw new DisposedError();
21
27
  this._contextShift = contextShift;
22
- this._chatHistory = [{
23
- type: "system",
24
- text: systemPrompt
25
- }];
26
28
  this._chat = new LlamaChat({
27
29
  autoDisposeSequence,
28
30
  chatWrapper,
29
31
  contextSequence
30
32
  });
33
+ const chatWrapperSupportsSystemMessages = this._chat.chatWrapper.settings.supportsSystemMessages;
34
+ if (chatWrapperSupportsSystemMessages == null || chatWrapperSupportsSystemMessages || forceAddSystemPrompt)
35
+ this._chatHistory = [{
36
+ type: "system",
37
+ text: systemPrompt
38
+ }];
39
+ else
40
+ this._chatHistory = [];
31
41
  this._autoDisposeSequence = autoDisposeSequence;
32
42
  this._disposeAggregator.add(this._chat.onDispose.createListener(() => {
33
43
  this.dispose();
@@ -68,11 +78,12 @@ export class LlamaChatSession {
68
78
  * @param prompt
69
79
  * @param [options]
70
80
  */
71
- async prompt(prompt, { functions, documentFunctionParams, onToken, signal, stopOnAbortSignal = false, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix = false, repeatPenalty, tokenBias, customStopTriggers } = {}) {
81
+ async prompt(prompt, { functions, documentFunctionParams, maxParallelFunctionCalls, onToken, signal, stopOnAbortSignal = false, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix = false, repeatPenalty, tokenBias, customStopTriggers } = {}) {
72
82
  const { responseText } = await this.promptWithMeta(prompt, {
73
83
  // this is a workaround to allow passing both `functions` and `grammar`
74
84
  functions: functions,
75
85
  documentFunctionParams: documentFunctionParams,
86
+ maxParallelFunctionCalls: maxParallelFunctionCalls,
76
87
  onToken, signal, stopOnAbortSignal, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix, repeatPenalty,
77
88
  tokenBias, customStopTriggers
78
89
  });
@@ -82,14 +93,17 @@ export class LlamaChatSession {
82
93
  * @param prompt
83
94
  * @param [options]
84
95
  */
85
- async promptWithMeta(prompt, { functions, documentFunctionParams, onToken, signal, stopOnAbortSignal = false, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix = false, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority } = {}) {
96
+ async promptWithMeta(prompt, { functions, documentFunctionParams, maxParallelFunctionCalls, onToken, signal, stopOnAbortSignal = false, maxTokens, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix = false, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority } = {}) {
86
97
  this._ensureNotDisposed();
87
98
  if (grammar != null && grammar._llama !== this.model._llama)
88
99
  throw new Error("The LlamaGrammar used by passed to this function was created with a different Llama instance than the one used by this sequence's model. Make sure you use the same Llama instance for both the model and the grammar.");
89
- return await withLock(this, "prompt", signal, async () => {
100
+ this._stopAllPreloadAndPromptCompletions();
101
+ return await withLock(this._chatLock, "evaluation", signal, async () => {
90
102
  this._ensureNotDisposed();
103
+ this._stopAllPreloadAndPromptCompletions();
91
104
  if (this._chat == null)
92
105
  throw new DisposedError();
106
+ const abortController = wrapAbortSignal(signal);
93
107
  let lastEvaluation = this._lastEvaluation;
94
108
  let newChatHistory = appendUserMessageToChatHistory(this._chatHistory, prompt);
95
109
  let newContextWindowChatHistory = lastEvaluation?.contextWindow == null
@@ -106,12 +120,17 @@ export class LlamaChatSession {
106
120
  });
107
121
  // eslint-disable-next-line no-constant-condition
108
122
  while (true) {
109
- const { functionCall, lastEvaluation: currentLastEvaluation, metadata } = await this._chat.generateResponse(newChatHistory, {
123
+ const functionCallsAndResults = [];
124
+ let canThrowFunctionCallingErrors = false;
125
+ let abortedOnFunctionCallError = false;
126
+ const initialOutputTokens = this._chat.sequence.tokenMeter.usedOutputTokens;
127
+ const { lastEvaluation: currentLastEvaluation, metadata } = await this._chat.generateResponse(newChatHistory, {
110
128
  functions,
111
129
  documentFunctionParams,
112
- grammar: grammar,
113
- onToken,
114
- signal,
130
+ maxParallelFunctionCalls,
131
+ grammar: grammar, // this is a workaround to allow passing both `functions` and `grammar`
132
+ onToken: safeEventCallback(onToken),
133
+ signal: abortController.signal,
115
134
  stopOnAbortSignal,
116
135
  repeatPenalty,
117
136
  minP,
@@ -129,40 +148,94 @@ export class LlamaChatSession {
129
148
  evaluationPriority,
130
149
  lastEvaluationContextWindow: {
131
150
  history: newContextWindowChatHistory,
132
- minimumOverlapPercentageToPreventContextShift: 0.01
151
+ minimumOverlapPercentageToPreventContextShift: 0.5
152
+ },
153
+ onFunctionCall: async (functionCall) => {
154
+ functionCallsAndResults.push((async () => {
155
+ try {
156
+ const functionDefinition = functions?.[functionCall.functionName];
157
+ if (functionDefinition == null)
158
+ throw new Error(`The model tried to call function "${functionCall.functionName}" which is not defined`);
159
+ const functionCallResult = await functionDefinition.handler(functionCall.params);
160
+ return {
161
+ functionCall,
162
+ functionDefinition,
163
+ functionCallResult
164
+ };
165
+ }
166
+ catch (err) {
167
+ if (!abortController.signal.aborted) {
168
+ abortedOnFunctionCallError = true;
169
+ abortController.abort(err);
170
+ }
171
+ if (canThrowFunctionCallingErrors)
172
+ throw err;
173
+ return null;
174
+ }
175
+ })());
133
176
  }
134
177
  });
135
178
  this._ensureNotDisposed();
179
+ if (abortController.signal.aborted && (abortedOnFunctionCallError || !stopOnAbortSignal))
180
+ throw abortController.signal.reason;
181
+ if (maxTokens != null)
182
+ maxTokens = Math.max(0, maxTokens - (this._chat.sequence.tokenMeter.usedOutputTokens - initialOutputTokens));
136
183
  lastEvaluation = currentLastEvaluation;
137
184
  newChatHistory = lastEvaluation.cleanHistory;
138
- if (functionCall != null) {
139
- const functionDefinition = functions?.[functionCall.functionName];
140
- if (functionDefinition == null)
141
- throw new Error(`The model tried to call function "${functionCall.functionName}" which is not defined`);
142
- const functionCallResult = await functionDefinition.handler(functionCall.params);
185
+ if (functionCallsAndResults.length > 0) {
186
+ canThrowFunctionCallingErrors = true;
187
+ const functionCallResultsPromise = Promise.all(functionCallsAndResults);
188
+ await Promise.race([
189
+ functionCallResultsPromise,
190
+ new Promise((accept, reject) => {
191
+ abortController.signal.addEventListener("abort", () => {
192
+ if (abortedOnFunctionCallError || !stopOnAbortSignal)
193
+ reject(abortController.signal.reason);
194
+ else
195
+ accept();
196
+ });
197
+ if (abortController.signal.aborted) {
198
+ if (abortedOnFunctionCallError || !stopOnAbortSignal)
199
+ reject(abortController.signal.reason);
200
+ else
201
+ accept();
202
+ }
203
+ })
204
+ ]);
143
205
  this._ensureNotDisposed();
144
- newChatHistory = addFunctionCallToChatHistory({
145
- chatHistory: newChatHistory,
146
- functionName: functionCall.functionName,
147
- functionDescription: functionDefinition.description,
148
- callParams: functionCall.params,
149
- callResult: functionCallResult,
150
- raw: functionCall.raw + this._chat.chatWrapper.generateFunctionCallResult(functionCall.functionName, functionCall.params, functionCallResult)
151
- });
152
- newContextWindowChatHistory = addFunctionCallToChatHistory({
153
- chatHistory: lastEvaluation.contextWindow,
154
- functionName: functionCall.functionName,
155
- functionDescription: functionDefinition.description,
156
- callParams: functionCall.params,
157
- callResult: functionCallResult,
158
- raw: functionCall.raw + this._chat.chatWrapper.generateFunctionCallResult(functionCall.functionName, functionCall.params, functionCallResult)
159
- });
160
- lastEvaluation.cleanHistory = newChatHistory;
161
- lastEvaluation.contextWindow = newContextWindowChatHistory;
162
- continue;
206
+ if (!abortController.signal.aborted) {
207
+ const functionCallResults = (await functionCallResultsPromise)
208
+ .filter((result) => result != null);
209
+ this._ensureNotDisposed();
210
+ if (abortController.signal.aborted)
211
+ throw abortController.signal.reason;
212
+ newContextWindowChatHistory = lastEvaluation.contextWindow;
213
+ for (const { functionCall, functionDefinition, functionCallResult } of functionCallResults) {
214
+ newChatHistory = addFunctionCallToChatHistory({
215
+ chatHistory: newChatHistory,
216
+ functionName: functionCall.functionName,
217
+ functionDescription: functionDefinition.description,
218
+ callParams: functionCall.params,
219
+ callResult: functionCallResult,
220
+ rawCall: functionCall.raw
221
+ });
222
+ newContextWindowChatHistory = addFunctionCallToChatHistory({
223
+ chatHistory: newContextWindowChatHistory,
224
+ functionName: functionCall.functionName,
225
+ functionDescription: functionDefinition.description,
226
+ callParams: functionCall.params,
227
+ callResult: functionCallResult,
228
+ rawCall: functionCall.raw
229
+ });
230
+ }
231
+ lastEvaluation.cleanHistory = newChatHistory;
232
+ lastEvaluation.contextWindow = newContextWindowChatHistory;
233
+ continue;
234
+ }
163
235
  }
164
236
  this._lastEvaluation = lastEvaluation;
165
237
  this._chatHistory = newChatHistory;
238
+ this._chatHistoryStateRef = {};
166
239
  const lastModelResponseItem = getLastModelResponseItem(newChatHistory);
167
240
  const responseText = lastModelResponseItem.response
168
241
  .filter((item) => typeof item === "string")
@@ -184,6 +257,113 @@ export class LlamaChatSession {
184
257
  }
185
258
  });
186
259
  }
260
+ /**
261
+ * Preload a user prompt into the current context sequence state to make later inference of the model response begin sooner
262
+ * and feel faster.
263
+ *
264
+ * > **Note:** Preloading a long user prompt can incur context shifts, so consider limiting the length of prompts you preload
265
+ * @param prompt - the prompt to preload
266
+ * @param [options]
267
+ */
268
+ async preloadPrompt(prompt, options = {}) {
269
+ await this.completePromptWithMeta(prompt, {
270
+ ...options,
271
+ maxTokens: 0
272
+ });
273
+ }
274
+ /**
275
+ * Preload a user prompt into the current context sequence state and generate a completion for it.
276
+ *
277
+ * > **Note:** Preloading a long user prompt and completing a user prompt with a high number of `maxTokens` can incur context shifts,
278
+ * > so consider limiting the length of prompts you preload.
279
+ * >
280
+ * > Also, it's recommended to limit the number of tokens generated to a reasonable amount by configuring `maxTokens`.
281
+ * @param prompt - the prompt to preload
282
+ * @param [options]
283
+ */
284
+ async completePrompt(prompt, options = {}) {
285
+ const { completion } = await this.completePromptWithMeta(prompt, options);
286
+ return completion;
287
+ }
288
+ /**
289
+ * Create a smart completion engine that caches the prompt completions
290
+ * and reuses them when the user prompt matches the beginning of the cached prompt or completion.
291
+ *
292
+ * All completions are made and cache is used only for the current chat session state.
293
+ * You can create a single completion engine for an entire chat session.
294
+ */
295
+ createPromptCompletionEngine(options) {
296
+ return LlamaChatSessionPromptCompletionEngine._create(this, options);
297
+ }
298
+ /**
299
+ * See `completePrompt` for more information.
300
+ * @param prompt
301
+ * @param [options]
302
+ */
303
+ async completePromptWithMeta(prompt, { maxTokens, stopOnAbortSignal = false, functions, documentFunctionParams, onToken, signal, temperature, minP, topK, topP, grammar, trimWhitespaceSuffix = false, repeatPenalty, tokenBias, customStopTriggers, evaluationPriority } = {}) {
304
+ this._ensureNotDisposed();
305
+ if (grammar != null && grammar._llama !== this.model._llama)
306
+ throw new Error("The LlamaGrammar used by passed to this function was created with a different Llama instance than the one used by this sequence's model. Make sure you use the same Llama instance for both the model and the grammar.");
307
+ const abortController = wrapAbortSignal(signal);
308
+ this._preloadAndCompleteAbortControllers.add(abortController);
309
+ try {
310
+ return await withLock(this._chatLock, "evaluation", abortController.signal, async () => {
311
+ this._ensureNotDisposed();
312
+ if (this._chat == null)
313
+ throw new DisposedError();
314
+ const { completion, lastEvaluation, metadata } = await this._chat.loadChatAndCompleteUserMessage(this._chatHistory, {
315
+ initialUserPrompt: prompt,
316
+ functions,
317
+ documentFunctionParams,
318
+ grammar,
319
+ onToken,
320
+ signal: abortController.signal,
321
+ stopOnAbortSignal: true,
322
+ repeatPenalty,
323
+ minP,
324
+ topK,
325
+ topP,
326
+ tokenBias,
327
+ customStopTriggers,
328
+ maxTokens,
329
+ temperature,
330
+ trimWhitespaceSuffix,
331
+ contextShift: {
332
+ ...this._contextShift,
333
+ lastEvaluationMetadata: this._lastEvaluation?.contextShiftMetadata
334
+ },
335
+ evaluationPriority,
336
+ lastEvaluationContextWindow: {
337
+ history: this._lastEvaluation?.contextWindow,
338
+ minimumOverlapPercentageToPreventContextShift: 0.8
339
+ }
340
+ });
341
+ this._ensureNotDisposed();
342
+ this._lastEvaluation = {
343
+ cleanHistory: this._chatHistory,
344
+ contextWindow: lastEvaluation.contextWindow,
345
+ contextShiftMetadata: lastEvaluation.contextShiftMetadata
346
+ };
347
+ if (!stopOnAbortSignal && metadata.stopReason === "abort" && abortController.signal?.aborted)
348
+ throw abortController.signal.reason;
349
+ if (metadata.stopReason === "customStopTrigger")
350
+ return {
351
+ completion: completion,
352
+ stopReason: metadata.stopReason,
353
+ customStopTrigger: metadata.customStopTrigger,
354
+ remainingGenerationAfterStop: metadata.remainingGenerationAfterStop
355
+ };
356
+ return {
357
+ completion: completion,
358
+ stopReason: metadata.stopReason,
359
+ remainingGenerationAfterStop: metadata.remainingGenerationAfterStop
360
+ };
361
+ });
362
+ }
363
+ finally {
364
+ this._preloadAndCompleteAbortControllers.delete(abortController);
365
+ }
366
+ }
187
367
  getChatHistory() {
188
368
  return structuredClone(this._chatHistory);
189
369
  }
@@ -194,15 +374,22 @@ export class LlamaChatSession {
194
374
  }
195
375
  setChatHistory(chatHistory) {
196
376
  this._chatHistory = structuredClone(chatHistory);
377
+ this._chatHistoryStateRef = {};
197
378
  this._lastEvaluation = undefined;
198
379
  }
199
380
  /** @internal */
381
+ _stopAllPreloadAndPromptCompletions() {
382
+ for (const abortController of this._preloadAndCompleteAbortControllers)
383
+ abortController.abort();
384
+ this._preloadAndCompleteAbortControllers.clear();
385
+ }
386
+ /** @internal */
200
387
  _ensureNotDisposed() {
201
388
  if (this.disposed)
202
389
  throw new DisposedError();
203
390
  }
204
391
  }
205
- function addFunctionCallToChatHistory({ chatHistory, functionName, functionDescription, callParams, callResult, raw }) {
392
+ function addFunctionCallToChatHistory({ chatHistory, functionName, functionDescription, callParams, callResult, rawCall }) {
206
393
  const newChatHistory = chatHistory.slice();
207
394
  if (newChatHistory.length === 0 || newChatHistory[newChatHistory.length - 1].type !== "model")
208
395
  newChatHistory.push({
@@ -220,7 +407,7 @@ function addFunctionCallToChatHistory({ chatHistory, functionName, functionDescr
220
407
  description: functionDescription,
221
408
  params: callParams,
222
409
  result: callResult,
223
- raw
410
+ rawCall
224
411
  });
225
412
  return newChatHistory;
226
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../../../src/evaluator/LlamaChatSession/LlamaChatSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../../../src/evaluator/LlamaChatSession/LlamaChatSession.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { LLamaChatCompletePromptOptions } from "../LlamaChatSession.js";
2
+ export type LLamaChatPromptCompletionEngineOptions = {
3
+ /**
4
+ * Max tokens to allow for preloading a prompt and generating a completion for it.
5
+ *
6
+ * Defaults to `256` or half of the context size, whichever is smaller.
7
+ */
8
+ maxPreloadTokens?: number;
9
+ onGeneration?(prompt: string, completion: string): void;
10
+ /**
11
+ * Max number of completions to cache.
12
+ *
13
+ * Defaults to `100`.
14
+ */
15
+ maxCachedCompletions?: number;
16
+ temperature?: LLamaChatCompletePromptOptions["temperature"];
17
+ minP?: LLamaChatCompletePromptOptions["minP"];
18
+ topK?: LLamaChatCompletePromptOptions["topK"];
19
+ topP?: LLamaChatCompletePromptOptions["topP"];
20
+ trimWhitespaceSuffix?: LLamaChatCompletePromptOptions["trimWhitespaceSuffix"];
21
+ evaluationPriority?: LLamaChatCompletePromptOptions["evaluationPriority"];
22
+ repeatPenalty?: LLamaChatCompletePromptOptions["repeatPenalty"];
23
+ tokenBias?: LLamaChatCompletePromptOptions["tokenBias"];
24
+ customStopTriggers?: LLamaChatCompletePromptOptions["customStopTriggers"];
25
+ grammar?: LLamaChatCompletePromptOptions["grammar"];
26
+ functions?: LLamaChatCompletePromptOptions["functions"];
27
+ documentFunctionParams?: LLamaChatCompletePromptOptions["documentFunctionParams"];
28
+ };
29
+ export declare class LlamaChatSessionPromptCompletionEngine {
30
+ private constructor();
31
+ dispose(): void;
32
+ /**
33
+ * Get completion for the prompt from the cache,
34
+ * and begin preloading this prompt into the context sequence and completing it.
35
+ *
36
+ * On completion progress, `onGeneration` (configured for this engine instance) will be called.
37
+ */
38
+ complete(prompt: string): string;
39
+ }