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