node-llama-cpp 3.0.0-beta.1 → 3.0.0-beta.2
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/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 +13 -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 +4 -4
- package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +20 -14
- package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
- package/dist/cli/commands/ChatCommand.d.ts +2 -1
- package/dist/cli/commands/ChatCommand.js +71 -33
- package/dist/cli/commands/ChatCommand.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +16 -10
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/dist/llamaEvaluator/LlamaBins.d.ts +0 -1
- package/dist/llamaEvaluator/LlamaChat/LlamaChat.d.ts +175 -0
- package/dist/llamaEvaluator/LlamaChat/LlamaChat.js +704 -0
- package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +1 -0
- package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +21 -0
- package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js +120 -0
- package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
- package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
- package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +117 -0
- package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
- package/dist/llamaEvaluator/{LlamaChatSession.d.ts → LlamaChatSession/LlamaChatSession.d.ts} +48 -25
- package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js +211 -0
- package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
- package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
- package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
- package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
- package/dist/llamaEvaluator/LlamaContext/LlamaContext.d.ts +18 -23
- package/dist/llamaEvaluator/LlamaContext/LlamaContext.js +58 -101
- package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +1 -1
- package/dist/llamaEvaluator/LlamaContext/types.d.ts +6 -10
- package/dist/llamaEvaluator/LlamaGrammar.d.ts +8 -12
- package/dist/llamaEvaluator/LlamaGrammar.js +7 -12
- package/dist/llamaEvaluator/LlamaGrammar.js.map +1 -1
- package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js +2 -1
- package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +1 -1
- package/dist/llamaEvaluator/LlamaModel.d.ts +10 -2
- package/dist/llamaEvaluator/LlamaModel.js +14 -3
- package/dist/llamaEvaluator/LlamaModel.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/compareTokens.d.ts +2 -0
- package/dist/utils/compareTokens.js +4 -0
- package/dist/utils/compareTokens.js.map +1 -0
- package/dist/utils/compileLLamaCpp.js +11 -6
- package/dist/utils/compileLLamaCpp.js.map +1 -1
- 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/getBin.d.ts +2 -2
- package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
- package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
- 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/resolveChatWrapper.d.ts +4 -0
- package/dist/utils/resolveChatWrapper.js +16 -0
- package/dist/utils/resolveChatWrapper.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/llama/addon.cpp +24 -12
- package/llama/binariesGithubRelease.json +1 -1
- package/llama/gitRelease.bundle +0 -0
- package/llamaBins/linux-arm64/llama-addon.node +0 -0
- package/llamaBins/linux-armv7l/llama-addon.node +0 -0
- package/llamaBins/linux-x64/llama-addon.node +0 -0
- package/llamaBins/mac-arm64/llama-addon.node +0 -0
- package/llamaBins/mac-x64/llama-addon.node +0 -0
- package/llamaBins/win-x64/llama-addon.node +0 -0
- package/package.json +21 -9
- 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/LlamaChatSession.js +0 -290
- package/dist/llamaEvaluator/LlamaChatSession.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/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
- package/llamaBins/mac-x64/ggml-metal.metal +0 -2929
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const truncatePrefix = "...";
|
|
2
|
+
/**
|
|
3
|
+
* Truncate the given text starting from the specified index and try to round to the nearest word.
|
|
4
|
+
* @param text - The text to truncate and round
|
|
5
|
+
* @param truncateStartIndex - The index to start truncating the text at
|
|
6
|
+
* @param maxRound - The maximum number of extra characters to delete to round to the nearest word
|
|
7
|
+
* @returns - The truncated and rounded text
|
|
8
|
+
*/
|
|
9
|
+
export function truncateTextAndRoundToWords(text, truncateStartIndex, maxRound = 6) {
|
|
10
|
+
const res = text.slice(truncateStartIndex);
|
|
11
|
+
if (res.length === 0)
|
|
12
|
+
return res;
|
|
13
|
+
if (truncateStartIndex === 0 || text[truncateStartIndex - 1] === " ")
|
|
14
|
+
return res;
|
|
15
|
+
const nextSpaceIndex = res.indexOf(" ");
|
|
16
|
+
if (nextSpaceIndex < 0) {
|
|
17
|
+
if (res.length <= maxRound || res.length < truncatePrefix.length)
|
|
18
|
+
return "";
|
|
19
|
+
return truncatePrefix + res.slice(truncatePrefix.length);
|
|
20
|
+
}
|
|
21
|
+
if (nextSpaceIndex <= maxRound)
|
|
22
|
+
return res.slice(nextSpaceIndex + 1);
|
|
23
|
+
if (res.length < truncatePrefix.length)
|
|
24
|
+
return "";
|
|
25
|
+
return truncatePrefix + res.slice(truncatePrefix.length);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=truncateTextAndRoundToWords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncateTextAndRoundToWords.js","sourceRoot":"","sources":["../../src/utils/truncateTextAndRoundToWords.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,KAAK,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,kBAA0B,EAAE,WAAmB,CAAC;IACtG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAE3C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAChB,OAAO,GAAG,CAAC;IAEf,IAAI,kBAAkB,KAAK,CAAC,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,GAAG;QAChE,OAAO,GAAG,CAAC;IAEf,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,cAAc,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,CAAC,MAAM,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;YAC5D,OAAO,EAAE,CAAC;QAEd,OAAO,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KAC5D;IAED,IAAI,cAAc,IAAI,QAAQ;QAC1B,OAAO,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;QAClC,OAAO,EAAE,CAAC;IAEd,OAAO,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
package/llama/addon.cpp
CHANGED
|
@@ -95,8 +95,9 @@ class AddonModel : public Napi::ObjectWrap<AddonModel> {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
std::string text = info[0].As<Napi::String>().Utf8Value();
|
|
98
|
+
bool specialTokens = info[1].As<Napi::Boolean>().Value();
|
|
98
99
|
|
|
99
|
-
std::vector<llama_token> tokens = llama_tokenize(model, text,
|
|
100
|
+
std::vector<llama_token> tokens = llama_tokenize(model, text, false, specialTokens);
|
|
100
101
|
|
|
101
102
|
Napi::Uint32Array result = Napi::Uint32Array::New(info.Env(), tokens.size());
|
|
102
103
|
for (size_t i = 0; i < tokens.size(); ++i) {
|
|
@@ -162,7 +163,7 @@ class AddonModel : public Napi::ObjectWrap<AddonModel> {
|
|
|
162
163
|
Napi::Error::New(info.Env(), "Context is disposed").ThrowAsJavaScriptException();
|
|
163
164
|
return info.Env().Undefined();
|
|
164
165
|
}
|
|
165
|
-
|
|
166
|
+
|
|
166
167
|
char model_desc[128];
|
|
167
168
|
int actual_length = llama_model_desc(model, model_desc, sizeof(model_desc));
|
|
168
169
|
|
|
@@ -352,25 +353,21 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
|
|
|
352
353
|
context_params.seed = -1;
|
|
353
354
|
context_params.n_ctx = 4096;
|
|
354
355
|
context_params.n_threads = 6;
|
|
355
|
-
context_params.n_threads_batch
|
|
356
|
+
context_params.n_threads_batch = context_params.n_threads;
|
|
356
357
|
|
|
357
358
|
if (info.Length() > 1 && info[1].IsObject()) {
|
|
358
359
|
Napi::Object options = info[1].As<Napi::Object>();
|
|
359
360
|
|
|
360
361
|
if (options.Has("seed")) {
|
|
361
|
-
context_params.seed = options.Get("seed").As<Napi::Number>().
|
|
362
|
+
context_params.seed = options.Get("seed").As<Napi::Number>().Uint32Value();
|
|
362
363
|
}
|
|
363
364
|
|
|
364
365
|
if (options.Has("contextSize")) {
|
|
365
|
-
context_params.n_ctx = options.Get("contextSize").As<Napi::Number>().
|
|
366
|
+
context_params.n_ctx = options.Get("contextSize").As<Napi::Number>().Uint32Value();
|
|
366
367
|
}
|
|
367
368
|
|
|
368
369
|
if (options.Has("batchSize")) {
|
|
369
|
-
context_params.n_batch = options.Get("batchSize").As<Napi::Number>().
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
if (options.Has("f16Kv")) {
|
|
373
|
-
context_params.f16_kv = options.Get("f16Kv").As<Napi::Boolean>().Value();
|
|
370
|
+
context_params.n_batch = options.Get("batchSize").As<Napi::Number>().Uint32Value();
|
|
374
371
|
}
|
|
375
372
|
|
|
376
373
|
if (options.Has("logitsAll")) {
|
|
@@ -382,8 +379,11 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
|
|
|
382
379
|
}
|
|
383
380
|
|
|
384
381
|
if (options.Has("threads")) {
|
|
385
|
-
|
|
386
|
-
|
|
382
|
+
const auto n_threads = options.Get("threads").As<Napi::Number>().Uint32Value();
|
|
383
|
+
const auto resolved_n_threads = n_threads == 0 ? std::thread::hardware_concurrency() : n_threads;
|
|
384
|
+
|
|
385
|
+
context_params.n_threads = resolved_n_threads;
|
|
386
|
+
context_params.n_threads_batch = resolved_n_threads;
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
389
|
|
|
@@ -533,6 +533,17 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
|
|
|
533
533
|
Napi::Value DecodeBatch(const Napi::CallbackInfo& info);
|
|
534
534
|
Napi::Value SampleToken(const Napi::CallbackInfo& info);
|
|
535
535
|
|
|
536
|
+
Napi::Value AcceptGrammarEvaluationStateToken(const Napi::CallbackInfo& info) {
|
|
537
|
+
AddonGrammarEvaluationState* grammar_evaluation_state = Napi::ObjectWrap<AddonGrammarEvaluationState>::Unwrap(info[0].As<Napi::Object>());
|
|
538
|
+
llama_token tokenId = info[1].As<Napi::Number>().Int32Value();
|
|
539
|
+
|
|
540
|
+
if ((grammar_evaluation_state)->grammar != nullptr) {
|
|
541
|
+
llama_grammar_accept_token(ctx, (grammar_evaluation_state)->grammar, tokenId);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
return info.Env().Undefined();
|
|
545
|
+
}
|
|
546
|
+
|
|
536
547
|
static void init(Napi::Object exports) {
|
|
537
548
|
exports.Set(
|
|
538
549
|
"AddonContext",
|
|
@@ -548,6 +559,7 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
|
|
|
548
559
|
InstanceMethod("shiftSequenceTokenCells", &AddonContext::ShiftSequenceTokenCells),
|
|
549
560
|
InstanceMethod("decodeBatch", &AddonContext::DecodeBatch),
|
|
550
561
|
InstanceMethod("sampleToken", &AddonContext::SampleToken),
|
|
562
|
+
InstanceMethod("acceptGrammarEvaluationStateToken", &AddonContext::AcceptGrammarEvaluationStateToken),
|
|
551
563
|
InstanceMethod("dispose", &AddonContext::Dispose)
|
|
552
564
|
}
|
|
553
565
|
)
|
package/llama/gitRelease.bundle
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-llama-cpp",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.2",
|
|
4
4
|
"description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Force a JSON schema on the model output on the generation level",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -47,16 +47,19 @@
|
|
|
47
47
|
"prewatch": "rimraf ./dist ./tsconfig.tsbuildinfo",
|
|
48
48
|
"watch": "tsc --build tsconfig.json --watch --force",
|
|
49
49
|
"cmake-js-llama": "cd llama && cmake-js",
|
|
50
|
-
"test": "npm run test:typescript && npm run lint:eslint && npm run test:standalone",
|
|
51
|
-
"test:standalone": "vitest run ./test",
|
|
52
|
-
"test:standalone:interactive": "vitest watch ./test",
|
|
50
|
+
"test": "npm run test:typescript && npm run lint:eslint && npm run test:standalone && npm run test:modelDependent",
|
|
51
|
+
"test:standalone": "vitest run ./test/standalone",
|
|
52
|
+
"test:standalone:interactive": "vitest watch ./test/standalone",
|
|
53
|
+
"test:modelDependent": "vitest run ./test/modelDependent",
|
|
54
|
+
"test:modelDependent:interactive": "vitest watch ./test/modelDependent",
|
|
53
55
|
"test:typescript": "tsc --build tsconfig.json --dry --force",
|
|
54
56
|
"lint": "npm run lint:eslint",
|
|
55
57
|
"lint:eslint": "eslint --ext .js --ext .ts .",
|
|
56
58
|
"format": "npm run lint:eslint -- --fix",
|
|
57
|
-
"dev:setup": "
|
|
59
|
+
"dev:setup:downloadAllTestModels": "node --loader ts-node/esm test/utils/scripts/downloadAllTestModels.ts",
|
|
60
|
+
"dev:setup": "npm run build && node ./dist/cli/cli.js download && npm run docs:generateTypedoc && npm run dev:setup:downloadAllTestModels",
|
|
58
61
|
"dev:build": "npm run build && node ./dist/cli/cli.js build",
|
|
59
|
-
"clean": "rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo",
|
|
62
|
+
"clean": "rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./test/.models",
|
|
60
63
|
"docs:generateTypedoc": "typedoc && rimraf ./docs/api/index.md ./docs/api/exports.md",
|
|
61
64
|
"docs:dev": "npm run docs:generateTypedoc && vitepress dev",
|
|
62
65
|
"docs:build": "npm run docs:generateTypedoc && vitepress build",
|
|
@@ -121,16 +124,17 @@
|
|
|
121
124
|
"eslint-plugin-jsdoc": "^46.9.0",
|
|
122
125
|
"eslint-plugin-n": "^16.3.1",
|
|
123
126
|
"husky": "^8.0.3",
|
|
127
|
+
"ipull": "^1.2.1",
|
|
124
128
|
"rimraf": "^5.0.1",
|
|
125
129
|
"semantic-release": "^22.0.8",
|
|
126
130
|
"ts-node": "^10.9.1",
|
|
127
131
|
"tslib": "^2.6.1",
|
|
128
132
|
"typedoc": "^0.25.3",
|
|
129
|
-
"typedoc-plugin-markdown": "4.0.0-next.
|
|
133
|
+
"typedoc-plugin-markdown": "4.0.0-next.41",
|
|
130
134
|
"typedoc-plugin-mdn-links": "^3.1.5",
|
|
131
|
-
"typedoc-vitepress-theme": "^1.0.0-next.
|
|
135
|
+
"typedoc-vitepress-theme": "^1.0.0-next.7",
|
|
132
136
|
"typescript": "^5.2.2",
|
|
133
|
-
"vitepress": "
|
|
137
|
+
"vitepress": "1.0.0-rc.22",
|
|
134
138
|
"vitest": "^0.34.6",
|
|
135
139
|
"zx": "^7.2.3"
|
|
136
140
|
},
|
|
@@ -152,5 +156,13 @@
|
|
|
152
156
|
"uuid": "^9.0.0",
|
|
153
157
|
"which": "^4.0.0",
|
|
154
158
|
"yargs": "^17.7.2"
|
|
159
|
+
},
|
|
160
|
+
"peerDependencies": {
|
|
161
|
+
"typescript": ">=5.0.0"
|
|
162
|
+
},
|
|
163
|
+
"peerDependenciesMeta": {
|
|
164
|
+
"typescript": {
|
|
165
|
+
"optional": true
|
|
166
|
+
}
|
|
155
167
|
}
|
|
156
168
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare abstract class ChatPromptWrapper {
|
|
2
|
-
abstract readonly wrapperName: string;
|
|
3
|
-
wrapPrompt(prompt: string, { systemPrompt, promptIndex }: {
|
|
4
|
-
systemPrompt: string;
|
|
5
|
-
promptIndex: number;
|
|
6
|
-
lastStopString: string | null;
|
|
7
|
-
lastStopStringSuffix: string | null;
|
|
8
|
-
}): string;
|
|
9
|
-
getStopStrings(): string[];
|
|
10
|
-
getDefaultStopString(): string;
|
|
11
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export class ChatPromptWrapper {
|
|
2
|
-
wrapPrompt(prompt, { systemPrompt, promptIndex }) {
|
|
3
|
-
if (promptIndex === 0) {
|
|
4
|
-
return systemPrompt + "\n" + prompt;
|
|
5
|
-
}
|
|
6
|
-
else {
|
|
7
|
-
return prompt;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
getStopStrings() {
|
|
11
|
-
return [];
|
|
12
|
-
}
|
|
13
|
-
getDefaultStopString() {
|
|
14
|
-
const stopString = this.getStopStrings()[0];
|
|
15
|
-
if (stopString == null || stopString.length === 0)
|
|
16
|
-
throw new Error(`Prompt wrapper "${this.wrapperName}" has no stop strings`);
|
|
17
|
-
return stopString;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=ChatPromptWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPromptWrapper.js","sourceRoot":"","sources":["../src/ChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,iBAAiB;IAG5B,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAE3D;QACG,IAAI,WAAW,KAAK,CAAC,EAAE;YACnB,OAAO,YAAY,GAAG,IAAI,GAAG,MAAM,CAAC;SACvC;aAAM;YACH,OAAO,MAAM,CAAC;SACjB;IACL,CAAC;IAEM,cAAc;QACjB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,oBAAoB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,WAAW,uBAAuB,CAAC,CAAC;QAEhF,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
export declare class ChatMLChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
-
readonly wrapperName: string;
|
|
4
|
-
wrapPrompt(prompt: string, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }: {
|
|
5
|
-
systemPrompt: string;
|
|
6
|
-
promptIndex: number;
|
|
7
|
-
lastStopString: string | null;
|
|
8
|
-
lastStopStringSuffix: string | null;
|
|
9
|
-
}): string;
|
|
10
|
-
getStopStrings(): string[];
|
|
11
|
-
getDefaultStopString(): string;
|
|
12
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
import { getTextCompletion } from "../utils/getTextCompletion.js";
|
|
3
|
-
// source: https://github.com/openai/openai-python/blob/120d225b91a8453e15240a49fb1c6794d8119326/chatml.md
|
|
4
|
-
export class ChatMLChatPromptWrapper extends ChatPromptWrapper {
|
|
5
|
-
wrapperName = "ChatML";
|
|
6
|
-
wrapPrompt(prompt, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }) {
|
|
7
|
-
const previousCompletionEnd = (lastStopString ?? "") + (lastStopStringSuffix ?? "");
|
|
8
|
-
if (promptIndex === 0 && systemPrompt != "")
|
|
9
|
-
return (getTextCompletion(previousCompletionEnd, "<|im_start|>system\n") ?? "<|im_start|>system\n") +
|
|
10
|
-
systemPrompt + "<|im_end|>\n<|im_start|>user\n" + prompt + "<|im_end|>\n<|im_start|>assistant\n";
|
|
11
|
-
else
|
|
12
|
-
return (getTextCompletion(previousCompletionEnd, "<|im_end|>\n<|im_start|>user\n") ?? "<|im_end|>\n<|im_start|>user\n") +
|
|
13
|
-
prompt + "<|im_end|>\n<|im_start|>assistant\n";
|
|
14
|
-
}
|
|
15
|
-
getStopStrings() {
|
|
16
|
-
return ["<|im_end|>"];
|
|
17
|
-
}
|
|
18
|
-
getDefaultStopString() {
|
|
19
|
-
return "<|im_end|>";
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=ChatMLChatPromptWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMLChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/ChatMLChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAEhE,0GAA0G;AAC1G,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAC1C,WAAW,GAAW,QAAQ,CAAC;IAE/B,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAE1G;QACG,MAAM,qBAAqB,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAEpF,IAAI,WAAW,KAAK,CAAC,IAAI,YAAY,IAAI,EAAE;YACvC,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,IAAI,sBAAsB,CAAC;gBAC/F,YAAY,GAAG,gCAAgC,GAAG,MAAM,GAAG,qCAAqC,CAAC;;YAErG,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,gCAAgC,CAAC,IAAI,gCAAgC,CAAC;gBACnH,MAAM,GAAG,qCAAqC,CAAC;IAC3D,CAAC;IAEe,cAAc;QAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAEe,oBAAoB;QAChC,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/EmptyChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,sBAAuB,SAAQ,iBAAiB;IACzC,WAAW,GAAW,OAAO,CAAC;CACjD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
export declare class FalconChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
-
readonly wrapperName: string;
|
|
4
|
-
private readonly _instructionName;
|
|
5
|
-
private readonly _responseName;
|
|
6
|
-
constructor({ instructionName, responseName }?: {
|
|
7
|
-
instructionName?: string;
|
|
8
|
-
responseName?: string;
|
|
9
|
-
});
|
|
10
|
-
wrapPrompt(prompt: string, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }: {
|
|
11
|
-
systemPrompt: string;
|
|
12
|
-
promptIndex: number;
|
|
13
|
-
lastStopString: string | null;
|
|
14
|
-
lastStopStringSuffix: string | null;
|
|
15
|
-
}): string;
|
|
16
|
-
getStopStrings(): string[];
|
|
17
|
-
getDefaultStopString(): string;
|
|
18
|
-
private _getPromptPrefix;
|
|
19
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
import { getTextCompletion } from "../utils/getTextCompletion.js";
|
|
3
|
-
export class FalconChatPromptWrapper extends ChatPromptWrapper {
|
|
4
|
-
wrapperName = "Falcon";
|
|
5
|
-
_instructionName;
|
|
6
|
-
_responseName;
|
|
7
|
-
constructor({ instructionName = "User", responseName = "Assistant" } = {}) {
|
|
8
|
-
super();
|
|
9
|
-
this._instructionName = instructionName;
|
|
10
|
-
this._responseName = responseName;
|
|
11
|
-
}
|
|
12
|
-
wrapPrompt(prompt, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }) {
|
|
13
|
-
if (promptIndex === 0)
|
|
14
|
-
return systemPrompt + `\n${this._instructionName}: ` + prompt + `\n${this._responseName}: `;
|
|
15
|
-
return this._getPromptPrefix(lastStopString, lastStopStringSuffix) + prompt + `\n${this._responseName}: `;
|
|
16
|
-
}
|
|
17
|
-
getStopStrings() {
|
|
18
|
-
return [
|
|
19
|
-
`\n${this._instructionName}: `,
|
|
20
|
-
`\n${this._responseName}:`
|
|
21
|
-
];
|
|
22
|
-
}
|
|
23
|
-
getDefaultStopString() {
|
|
24
|
-
return `\n${this._instructionName}: `;
|
|
25
|
-
}
|
|
26
|
-
_getPromptPrefix(lastStopString, lastStopStringSuffix) {
|
|
27
|
-
return getTextCompletion((lastStopString ?? "") + (lastStopStringSuffix ?? ""), [
|
|
28
|
-
`\n${this._instructionName}: `,
|
|
29
|
-
`${this._instructionName}: `
|
|
30
|
-
]) ?? `\n${this._instructionName}: `;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=FalconChatPromptWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FalconChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/FalconChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAC1C,WAAW,GAAW,QAAQ,CAAC;IAC9B,gBAAgB,CAAS;IACzB,aAAa,CAAS;IAEvC,YAAmB,EAAC,eAAe,GAAG,MAAM,EAAE,YAAY,GAAG,WAAW,KAAuD,EAAE;QAC7H,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAEe,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAE1G;QACG,IAAI,WAAW,KAAK,CAAC;YACjB,OAAO,YAAY,GAAG,KAAK,IAAI,CAAC,gBAAgB,IAAI,GAAG,MAAM,GAAG,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC;QAEhG,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,oBAAoB,CAAC,GAAG,MAAM,GAAG,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC;IAC9G,CAAC;IAEe,cAAc;QAC1B,OAAO;YACH,KAAK,IAAI,CAAC,gBAAgB,IAAI;YAC9B,KAAK,IAAI,CAAC,aAAa,GAAG;SAC7B,CAAC;IACN,CAAC;IAEe,oBAAoB;QAChC,OAAO,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC;IAC1C,CAAC;IAEO,gBAAgB,CAAC,cAA6B,EAAE,oBAAmC;QACvF,OAAO,iBAAiB,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE;YAC5E,KAAK,IAAI,CAAC,gBAAgB,IAAI;YAC9B,GAAG,IAAI,CAAC,gBAAgB,IAAI;SAC/B,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC;IACzC,CAAC;CACJ"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
export declare class GeneralChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
-
readonly wrapperName: string;
|
|
4
|
-
private readonly _instructionName;
|
|
5
|
-
private readonly _responseName;
|
|
6
|
-
constructor({ instructionName, responseName }?: {
|
|
7
|
-
instructionName?: string;
|
|
8
|
-
responseName?: string;
|
|
9
|
-
});
|
|
10
|
-
wrapPrompt(prompt: string, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }: {
|
|
11
|
-
systemPrompt: string;
|
|
12
|
-
promptIndex: number;
|
|
13
|
-
lastStopString: string | null;
|
|
14
|
-
lastStopStringSuffix: string | null;
|
|
15
|
-
}): string;
|
|
16
|
-
getStopStrings(): string[];
|
|
17
|
-
getDefaultStopString(): string;
|
|
18
|
-
private _getPromptPrefix;
|
|
19
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
import { getTextCompletion } from "../utils/getTextCompletion.js";
|
|
3
|
-
export class GeneralChatPromptWrapper extends ChatPromptWrapper {
|
|
4
|
-
wrapperName = "General";
|
|
5
|
-
_instructionName;
|
|
6
|
-
_responseName;
|
|
7
|
-
constructor({ instructionName = "Human", responseName = "Assistant" } = {}) {
|
|
8
|
-
super();
|
|
9
|
-
this._instructionName = instructionName;
|
|
10
|
-
this._responseName = responseName;
|
|
11
|
-
}
|
|
12
|
-
wrapPrompt(prompt, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }) {
|
|
13
|
-
if (promptIndex === 0)
|
|
14
|
-
return systemPrompt + `\n\n### ${this._instructionName}:\n` + prompt + `\n\n### ${this._responseName}:\n`;
|
|
15
|
-
return this._getPromptPrefix(lastStopString, lastStopStringSuffix) + prompt + `\n\n### ${this._responseName}:\n`;
|
|
16
|
-
}
|
|
17
|
-
getStopStrings() {
|
|
18
|
-
return [
|
|
19
|
-
`\n\n### ${this._instructionName}`,
|
|
20
|
-
`### ${this._instructionName}`,
|
|
21
|
-
`\n\n### ${this._responseName}`,
|
|
22
|
-
`### ${this._responseName}`,
|
|
23
|
-
"<end>"
|
|
24
|
-
];
|
|
25
|
-
}
|
|
26
|
-
getDefaultStopString() {
|
|
27
|
-
return `\n\n### ${this._instructionName}`;
|
|
28
|
-
}
|
|
29
|
-
_getPromptPrefix(lastStopString, lastStopStringSuffix) {
|
|
30
|
-
return getTextCompletion(lastStopString === "<end>"
|
|
31
|
-
? lastStopStringSuffix
|
|
32
|
-
: ((lastStopString ?? "") + (lastStopStringSuffix ?? "")), [
|
|
33
|
-
`\n\n### ${this._instructionName}:\n`,
|
|
34
|
-
`### ${this._instructionName}:\n`
|
|
35
|
-
]) ?? `\n\n### ${this._instructionName}:\n`;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=GeneralChatPromptWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeneralChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/GeneralChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IAC3C,WAAW,GAAW,SAAS,CAAC;IAC/B,gBAAgB,CAAS;IACzB,aAAa,CAAS;IAEvC,YAAmB,EAAC,eAAe,GAAG,OAAO,EAAE,YAAY,GAAG,WAAW,KAAuD,EAAE;QAC9H,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAEe,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAE1G;QACG,IAAI,WAAW,KAAK,CAAC;YACjB,OAAO,YAAY,GAAG,WAAW,IAAI,CAAC,gBAAgB,KAAK,GAAG,MAAM,GAAG,WAAW,IAAI,CAAC,aAAa,KAAK,CAAC;QAE9G,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,oBAAoB,CAAC,GAAG,MAAM,GAAG,WAAW,IAAI,CAAC,aAAa,KAAK,CAAC;IACrH,CAAC;IAEe,cAAc;QAC1B,OAAO;YACH,WAAW,IAAI,CAAC,gBAAgB,EAAE;YAClC,OAAO,IAAI,CAAC,gBAAgB,EAAE;YAC9B,WAAW,IAAI,CAAC,aAAa,EAAE;YAC/B,OAAO,IAAI,CAAC,aAAa,EAAE;YAC3B,OAAO;SACV,CAAC;IACN,CAAC;IAEe,oBAAoB;QAChC,OAAO,WAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC9C,CAAC;IAEO,gBAAgB,CAAC,cAA6B,EAAE,oBAAmC;QACvF,OAAO,iBAAiB,CACpB,cAAc,KAAK,OAAO;YACtB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,EAC7D;YACI,WAAW,IAAI,CAAC,gBAAgB,KAAK;YACrC,OAAO,IAAI,CAAC,gBAAgB,KAAK;SACpC,CACJ,IAAI,WAAW,IAAI,CAAC,gBAAgB,KAAK,CAAC;IAC/C,CAAC;CACJ"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
export declare class LlamaChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
-
readonly wrapperName: string;
|
|
4
|
-
wrapPrompt(prompt: string, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }: {
|
|
5
|
-
systemPrompt: string;
|
|
6
|
-
promptIndex: number;
|
|
7
|
-
lastStopString: string | null;
|
|
8
|
-
lastStopStringSuffix: string | null;
|
|
9
|
-
}): string;
|
|
10
|
-
getStopStrings(): string[];
|
|
11
|
-
getDefaultStopString(): string;
|
|
12
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
import { getTextCompletion } from "../utils/getTextCompletion.js";
|
|
3
|
-
// source: https://huggingface.co/blog/llama2#how-to-prompt-llama-2
|
|
4
|
-
export class LlamaChatPromptWrapper extends ChatPromptWrapper {
|
|
5
|
-
wrapperName = "LlamaChat";
|
|
6
|
-
wrapPrompt(prompt, { systemPrompt, promptIndex, lastStopString, lastStopStringSuffix }) {
|
|
7
|
-
const previousCompletionEnd = (lastStopString ?? "") + (lastStopStringSuffix ?? "");
|
|
8
|
-
if (promptIndex === 0 && systemPrompt != "") {
|
|
9
|
-
return (getTextCompletion(previousCompletionEnd, "<s>[INST] <<SYS>>\n") ?? "<s>[INST] <<SYS>>\n") + systemPrompt +
|
|
10
|
-
"\n<</SYS>>\n\n" + prompt + " [/INST]\n\n";
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
return (getTextCompletion(previousCompletionEnd, "</s><s>[INST] ") ?? "<s>[INST] ") + prompt + " [/INST]\n\n";
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
getStopStrings() {
|
|
17
|
-
return ["</s>"];
|
|
18
|
-
}
|
|
19
|
-
getDefaultStopString() {
|
|
20
|
-
return "</s>";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=LlamaChatPromptWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LlamaChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/LlamaChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAEhE,mEAAmE;AACnE,MAAM,OAAO,sBAAuB,SAAQ,iBAAiB;IACzC,WAAW,GAAW,WAAW,CAAC;IAElC,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAE1G;QACG,MAAM,qBAAqB,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAEpF,IAAI,WAAW,KAAK,CAAC,IAAI,YAAY,IAAI,EAAE,EAAE;YACzC,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,IAAI,qBAAqB,CAAC,GAAG,YAAY;gBAC5G,gBAAgB,GAAG,MAAM,GAAG,cAAc,CAAC;SAClD;aAAM;YACH,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,YAAY,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC;SACjH;IACL,CAAC;IAEe,cAAc;QAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAEe,oBAAoB;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
-
import { ConversationInteraction } from "../types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Generate context text to load into a model context from a conversation history.
|
|
5
|
-
*/
|
|
6
|
-
export declare function generateContextTextFromConversationHistory(chatPromptWrapper: ChatPromptWrapper, conversationHistory: readonly ConversationInteraction[], { systemPrompt, currentPromptIndex, lastStopString, lastStopStringSuffix }?: {
|
|
7
|
-
systemPrompt?: string;
|
|
8
|
-
currentPromptIndex?: number;
|
|
9
|
-
lastStopString?: string | null;
|
|
10
|
-
lastStopStringSuffix?: string | null;
|
|
11
|
-
}): {
|
|
12
|
-
text: string;
|
|
13
|
-
stopString: string | null;
|
|
14
|
-
stopStringSuffix: string | null;
|
|
15
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { defaultChatSystemPrompt } from "../config.js";
|
|
2
|
-
/**
|
|
3
|
-
* Generate context text to load into a model context from a conversation history.
|
|
4
|
-
*/
|
|
5
|
-
export function generateContextTextFromConversationHistory(chatPromptWrapper, conversationHistory, { systemPrompt = defaultChatSystemPrompt, currentPromptIndex = 0, lastStopString = null, lastStopStringSuffix = null } = {}) {
|
|
6
|
-
let res = "";
|
|
7
|
-
for (let i = 0; i < conversationHistory.length; i++) {
|
|
8
|
-
const interaction = conversationHistory[i];
|
|
9
|
-
const wrappedPrompt = chatPromptWrapper.wrapPrompt(interaction.prompt, {
|
|
10
|
-
systemPrompt,
|
|
11
|
-
promptIndex: currentPromptIndex,
|
|
12
|
-
lastStopString,
|
|
13
|
-
lastStopStringSuffix
|
|
14
|
-
});
|
|
15
|
-
const stopStrings = chatPromptWrapper.getStopStrings();
|
|
16
|
-
const defaultStopString = chatPromptWrapper.getDefaultStopString();
|
|
17
|
-
const stopStringsToCheckInResponse = new Set([...stopStrings, defaultStopString]);
|
|
18
|
-
currentPromptIndex++;
|
|
19
|
-
lastStopString = null;
|
|
20
|
-
lastStopStringSuffix = null;
|
|
21
|
-
res += wrappedPrompt;
|
|
22
|
-
for (const stopString of stopStringsToCheckInResponse) {
|
|
23
|
-
if (interaction.response.includes(stopString)) {
|
|
24
|
-
console.error(`Stop string "${stopString}" was found in model response of conversation interaction index ${i}`, { interaction, stopString });
|
|
25
|
-
throw new Error("A stop string cannot be in a conversation history interaction model response");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
res += interaction.response;
|
|
29
|
-
res += defaultStopString;
|
|
30
|
-
lastStopString = defaultStopString;
|
|
31
|
-
lastStopStringSuffix = "";
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
text: res,
|
|
35
|
-
stopString: lastStopString,
|
|
36
|
-
stopStringSuffix: lastStopStringSuffix
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=generateContextTextFromConversationHistory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateContextTextFromConversationHistory.js","sourceRoot":"","sources":["../../src/chatWrappers/generateContextTextFromConversationHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,cAAc,CAAC;AAIrD;;GAEG;AACH,MAAM,UAAU,0CAA0C,CACtD,iBAAoC,EACpC,mBAAuD,EACvD,EACI,YAAY,GAAG,uBAAuB,EAAE,kBAAkB,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI,EAAE,oBAAoB,GAAG,IAAI,KAGlH,EAAE;IAMN,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE;YACnE,YAAY;YACZ,WAAW,EAAE,kBAAkB;YAC/B,cAAc;YACd,oBAAoB;SACvB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACvD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QACnE,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAElF,kBAAkB,EAAE,CAAC;QACrB,cAAc,GAAG,IAAI,CAAC;QACtB,oBAAoB,GAAG,IAAI,CAAC;QAE5B,GAAG,IAAI,aAAa,CAAC;QAErB,KAAK,MAAM,UAAU,IAAI,4BAA4B,EAAE;YACnD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC3C,OAAO,CAAC,KAAK,CACT,gBAAgB,UAAU,mEAAmE,CAAC,EAAE,EAChG,EAAC,WAAW,EAAE,UAAU,EAAC,CAC5B,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;aACnG;SACJ;QAED,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;QAC5B,GAAG,IAAI,iBAAiB,CAAC;QACzB,cAAc,GAAG,iBAAiB,CAAC;QACnC,oBAAoB,GAAG,EAAE,CAAC;KAC7B;IAED,OAAO;QACH,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,cAAc;QAC1B,gBAAgB,EAAE,oBAAoB;KACzC,CAAC;AACN,CAAC"}
|