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.
Files changed (149) hide show
  1. package/README.md +2 -0
  2. package/dist/ChatWrapper.d.ts +49 -0
  3. package/dist/ChatWrapper.js +120 -0
  4. package/dist/ChatWrapper.js.map +1 -0
  5. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
  6. package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
  7. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
  8. package/dist/chatWrappers/ChatMLChatWrapper.d.ts +13 -0
  9. package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
  10. package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
  11. package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
  12. package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
  13. package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
  14. package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
  15. package/dist/chatWrappers/FalconChatWrapper.js +104 -0
  16. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
  17. package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
  18. package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
  19. package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
  20. package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
  21. package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
  22. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
  23. package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
  24. package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
  25. package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
  26. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +4 -4
  27. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +20 -14
  28. package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -1
  29. package/dist/cli/commands/ChatCommand.d.ts +2 -1
  30. package/dist/cli/commands/ChatCommand.js +71 -33
  31. package/dist/cli/commands/ChatCommand.js.map +1 -1
  32. package/dist/config.js +1 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/index.d.ts +16 -10
  35. package/dist/index.js +15 -8
  36. package/dist/index.js.map +1 -1
  37. package/dist/llamaEvaluator/LlamaBins.d.ts +0 -1
  38. package/dist/llamaEvaluator/LlamaChat/LlamaChat.d.ts +175 -0
  39. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js +704 -0
  40. package/dist/llamaEvaluator/LlamaChat/LlamaChat.js.map +1 -0
  41. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +21 -0
  42. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js +120 -0
  43. package/dist/llamaEvaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
  44. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
  45. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +117 -0
  46. package/dist/llamaEvaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
  47. package/dist/llamaEvaluator/{LlamaChatSession.d.ts → LlamaChatSession/LlamaChatSession.d.ts} +48 -25
  48. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js +211 -0
  49. package/dist/llamaEvaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
  50. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
  51. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
  52. package/dist/llamaEvaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
  53. package/dist/llamaEvaluator/LlamaContext/LlamaContext.d.ts +18 -23
  54. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js +58 -101
  55. package/dist/llamaEvaluator/LlamaContext/LlamaContext.js.map +1 -1
  56. package/dist/llamaEvaluator/LlamaContext/types.d.ts +6 -10
  57. package/dist/llamaEvaluator/LlamaGrammar.d.ts +8 -12
  58. package/dist/llamaEvaluator/LlamaGrammar.js +7 -12
  59. package/dist/llamaEvaluator/LlamaGrammar.js.map +1 -1
  60. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js +2 -1
  61. package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  62. package/dist/llamaEvaluator/LlamaModel.d.ts +10 -2
  63. package/dist/llamaEvaluator/LlamaModel.js +14 -3
  64. package/dist/llamaEvaluator/LlamaModel.js.map +1 -1
  65. package/dist/types.d.ts +41 -3
  66. package/dist/types.js +5 -1
  67. package/dist/types.js.map +1 -1
  68. package/dist/utils/LlamaText.d.ts +42 -0
  69. package/dist/utils/LlamaText.js +207 -0
  70. package/dist/utils/LlamaText.js.map +1 -0
  71. package/dist/utils/StopGenerationDetector.d.ts +28 -0
  72. package/dist/utils/StopGenerationDetector.js +205 -0
  73. package/dist/utils/StopGenerationDetector.js.map +1 -0
  74. package/dist/utils/TokenStreamRegulator.d.ts +30 -0
  75. package/dist/utils/TokenStreamRegulator.js +96 -0
  76. package/dist/utils/TokenStreamRegulator.js.map +1 -0
  77. package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
  78. package/dist/utils/appendUserMessageToChatHistory.js +18 -0
  79. package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
  80. package/dist/utils/compareTokens.d.ts +2 -0
  81. package/dist/utils/compareTokens.js +4 -0
  82. package/dist/utils/compareTokens.js.map +1 -0
  83. package/dist/utils/compileLLamaCpp.js +11 -6
  84. package/dist/utils/compileLLamaCpp.js.map +1 -1
  85. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
  86. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
  87. package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
  88. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
  89. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
  90. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  91. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
  92. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  93. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
  94. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
  95. package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
  96. package/dist/utils/gbnfJson/types.d.ts +1 -1
  97. package/dist/utils/gbnfJson/types.js.map +1 -1
  98. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
  99. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  100. package/dist/utils/getBin.d.ts +2 -2
  101. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
  102. package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  103. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
  104. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
  105. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
  106. package/dist/utils/resolveChatWrapper.d.ts +4 -0
  107. package/dist/utils/resolveChatWrapper.js +16 -0
  108. package/dist/utils/resolveChatWrapper.js.map +1 -0
  109. package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
  110. package/dist/utils/truncateTextAndRoundToWords.js +27 -0
  111. package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
  112. package/llama/addon.cpp +24 -12
  113. package/llama/binariesGithubRelease.json +1 -1
  114. package/llama/gitRelease.bundle +0 -0
  115. package/llamaBins/linux-arm64/llama-addon.node +0 -0
  116. package/llamaBins/linux-armv7l/llama-addon.node +0 -0
  117. package/llamaBins/linux-x64/llama-addon.node +0 -0
  118. package/llamaBins/mac-arm64/llama-addon.node +0 -0
  119. package/llamaBins/mac-x64/llama-addon.node +0 -0
  120. package/llamaBins/win-x64/llama-addon.node +0 -0
  121. package/package.json +21 -9
  122. package/dist/ChatPromptWrapper.d.ts +0 -11
  123. package/dist/ChatPromptWrapper.js +0 -20
  124. package/dist/ChatPromptWrapper.js.map +0 -1
  125. package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
  126. package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
  127. package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
  128. package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
  129. package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
  130. package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
  131. package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
  132. package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
  133. package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
  134. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
  135. package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
  136. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
  137. package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
  138. package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
  139. package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
  140. package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -15
  141. package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -39
  142. package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
  143. package/dist/llamaEvaluator/LlamaChatSession.js +0 -290
  144. package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
  145. package/dist/utils/getTextCompletion.d.ts +0 -3
  146. package/dist/utils/getTextCompletion.js +0 -12
  147. package/dist/utils/getTextCompletion.js.map +0 -1
  148. package/llamaBins/mac-arm64/ggml-metal.metal +0 -2929
  149. 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, true, true);
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 == -1 ? context_params.n_threads : 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>().Int32Value();
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>().Int32Value();
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>().Int32Value();
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
- context_params.n_threads = options.Get("threads").As<Napi::Number>().Int32Value();
386
- context_params.n_threads_batch == -1 ? context_params.n_threads : context_params.n_threads_batch;
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
  )
@@ -1,3 +1,3 @@
1
1
  {
2
- "release": "b1567"
2
+ "release": "b1892"
3
3
  }
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.1",
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": "npm run build && node ./dist/cli/cli.js download && npm run docs:generateTypedoc",
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.30",
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.3",
135
+ "typedoc-vitepress-theme": "^1.0.0-next.7",
132
136
  "typescript": "^5.2.2",
133
- "vitepress": "^1.0.0-rc.20",
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,4 +0,0 @@
1
- import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
2
- export declare class EmptyChatPromptWrapper extends ChatPromptWrapper {
3
- readonly wrapperName: string;
4
- }
@@ -1,5 +0,0 @@
1
- import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
2
- export class EmptyChatPromptWrapper extends ChatPromptWrapper {
3
- wrapperName = "Empty";
4
- }
5
- //# sourceMappingURL=EmptyChatPromptWrapper.js.map
@@ -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"}