node-llama-cpp 3.17.1 → 3.18.0

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 (66) hide show
  1. package/dist/bindings/AddonTypes.d.ts +11 -0
  2. package/dist/bindings/Llama.js +20 -2
  3. package/dist/bindings/Llama.js.map +1 -1
  4. package/dist/bindings/getLlama.d.ts +1 -1
  5. package/dist/bindings/getLlama.js +19 -8
  6. package/dist/bindings/getLlama.js.map +1 -1
  7. package/dist/bindings/utils/compileLLamaCpp.d.ts +2 -1
  8. package/dist/bindings/utils/compileLLamaCpp.js +8 -0
  9. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  10. package/dist/bindings/utils/getLlamaGpuTypes.js +2 -0
  11. package/dist/bindings/utils/getLlamaGpuTypes.js.map +1 -1
  12. package/dist/chatWrappers/QwenChatWrapper.d.ts +7 -0
  13. package/dist/chatWrappers/QwenChatWrapper.js +176 -56
  14. package/dist/chatWrappers/QwenChatWrapper.js.map +1 -1
  15. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +127 -88
  16. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
  17. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.d.ts +16 -10
  18. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js +115 -5
  19. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js.map +1 -1
  20. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js +1 -0
  21. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js.map +1 -1
  22. package/dist/cli/commands/ChatCommand.js +1 -1
  23. package/dist/cli/commands/ChatCommand.js.map +1 -1
  24. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +51 -4
  25. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -1
  26. package/dist/cli/utils/resolveNpmrcConfig.d.ts +18 -0
  27. package/dist/cli/utils/resolveNpmrcConfig.js +129 -0
  28. package/dist/cli/utils/resolveNpmrcConfig.js.map +1 -0
  29. package/dist/config.d.ts +3 -0
  30. package/dist/config.js +4 -1
  31. package/dist/config.js.map +1 -1
  32. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +8 -2
  33. package/dist/evaluator/LlamaChat/LlamaChat.js +99 -6
  34. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  35. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +8 -2
  36. package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -1
  37. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +8 -2
  38. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  39. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +88 -0
  40. package/dist/evaluator/LlamaContext/LlamaContext.js +181 -17
  41. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  42. package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.d.ts +27 -0
  43. package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.js +130 -0
  44. package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.js.map +1 -0
  45. package/dist/gguf/insights/GgufInsights.d.ts +3 -0
  46. package/dist/gguf/insights/GgufInsights.js +221 -43
  47. package/dist/gguf/insights/GgufInsights.js.map +1 -1
  48. package/dist/gguf/types/GgufMetadataTypes.d.ts +15 -1
  49. package/dist/gguf/types/GgufMetadataTypes.js +4 -0
  50. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/dist/utils/getFirstWritableDir.d.ts +8 -0
  53. package/dist/utils/getFirstWritableDir.js +60 -0
  54. package/dist/utils/getFirstWritableDir.js.map +1 -0
  55. package/dist/utils/getTempDir.d.ts +10 -0
  56. package/dist/utils/getTempDir.js +121 -0
  57. package/dist/utils/getTempDir.js.map +1 -0
  58. package/dist/utils/resolveModelFile.js +19 -8
  59. package/dist/utils/resolveModelFile.js.map +1 -1
  60. package/llama/addon/AddonContext.cpp +168 -0
  61. package/llama/addon/AddonContext.h +27 -0
  62. package/llama/addon/addon.cpp +1 -0
  63. package/llama/binariesGithubRelease.json +1 -1
  64. package/llama/gitRelease.bundle +0 -0
  65. package/llama/llama.cpp.info.json +1 -1
  66. package/package.json +24 -24
@@ -6,57 +6,99 @@ import { ChatModelFunctionsDocumentationGenerator } from "./utils/ChatModelFunct
6
6
  // source: https://huggingface.co/Qwen/Qwen2.5-14B-Instruct-1M/blob/main/tokenizer_config.json#L197
7
7
  export class QwenChatWrapper extends ChatWrapper {
8
8
  wrapperName = "Qwen";
9
+ variation;
9
10
  keepOnlyLastThought;
10
11
  thoughts;
11
12
  /** @internal */ _flatFunctionResultString;
13
+ /** @internal */ _ensureModelThoughtBeforeTextOnLastResponse;
12
14
  settings;
13
15
  constructor(options = {}) {
14
16
  super();
15
- const { keepOnlyLastThought = true, thoughts = "auto", _lineBreakBeforeFunctionCallPrefix = false, _flatFunctionResultString = false } = options;
17
+ const { keepOnlyLastThought = true, thoughts = "auto", variation = "3", _lineBreakBeforeFunctionCallPrefix = false, _flatFunctionResultString = false, _ensureModelThoughtBeforeTextOnLastResponse = false } = options;
16
18
  this.keepOnlyLastThought = keepOnlyLastThought;
17
19
  this.thoughts = thoughts;
20
+ this.variation = variation;
18
21
  this._flatFunctionResultString = _flatFunctionResultString;
19
- this.settings = {
20
- supportsSystemMessages: true,
21
- functions: {
22
- call: {
23
- optionalPrefixSpace: true,
24
- prefix: LlamaText([
25
- _lineBreakBeforeFunctionCallPrefix
26
- ? "\n"
27
- : "",
28
- new SpecialTokensText("<tool_call>"), '\n{"name": "'
29
- ]),
30
- paramsPrefix: '", "arguments": ',
31
- suffix: LlamaText("}\n", new SpecialTokensText("</tool_call>")),
32
- emptyCallParamsPlaceholder: {}
33
- },
34
- result: {
35
- prefix: LlamaText(new SpecialTokensText("\n<tool_response>\n")),
36
- suffix: LlamaText(new SpecialTokensText("\n</tool_response>"))
37
- },
38
- parallelism: {
22
+ this._ensureModelThoughtBeforeTextOnLastResponse = _ensureModelThoughtBeforeTextOnLastResponse;
23
+ if (variation === "3")
24
+ this.settings = {
25
+ supportsSystemMessages: true,
26
+ functions: {
39
27
  call: {
40
- sectionPrefix: "",
41
- betweenCalls: _lineBreakBeforeFunctionCallPrefix
42
- ? ""
43
- : "\n",
44
- sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n"))
28
+ optionalPrefixSpace: true,
29
+ prefix: LlamaText([
30
+ _lineBreakBeforeFunctionCallPrefix
31
+ ? "\n"
32
+ : "",
33
+ new SpecialTokensText("<tool_call>"), '\n{"name": "'
34
+ ]),
35
+ paramsPrefix: '", "arguments": ',
36
+ suffix: LlamaText("}\n", new SpecialTokensText("</tool_call>")),
37
+ emptyCallParamsPlaceholder: {}
45
38
  },
46
39
  result: {
47
- sectionPrefix: LlamaText(new SpecialTokensText("<|im_start|>user")),
48
- sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n<|im_start|>assistant\n"))
40
+ prefix: LlamaText(new SpecialTokensText("\n<tool_response>\n")),
41
+ suffix: LlamaText(new SpecialTokensText("\n</tool_response>"))
42
+ },
43
+ parallelism: {
44
+ call: {
45
+ sectionPrefix: "",
46
+ betweenCalls: _lineBreakBeforeFunctionCallPrefix
47
+ ? ""
48
+ : "\n",
49
+ sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n"))
50
+ },
51
+ result: {
52
+ sectionPrefix: LlamaText(new SpecialTokensText("<|im_start|>user")),
53
+ sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n<|im_start|>assistant\n"))
54
+ }
55
+ }
56
+ },
57
+ segments: {
58
+ reiterateStackAfterFunctionCalls: true,
59
+ thought: {
60
+ prefix: LlamaText(new SpecialTokensText("<think>\n")),
61
+ suffix: LlamaText(new SpecialTokensText("\n</think>"))
49
62
  }
50
63
  }
51
- },
52
- segments: {
53
- reiterateStackAfterFunctionCalls: true,
54
- thought: {
55
- prefix: LlamaText(new SpecialTokensText("<think>\n")),
56
- suffix: LlamaText(new SpecialTokensText("\n</think>"))
64
+ };
65
+ else
66
+ this.settings = {
67
+ supportsSystemMessages: true,
68
+ functions: {
69
+ call: {
70
+ optionalPrefixSpace: true,
71
+ prefix: LlamaText(new SpecialTokensText("<tool_call>\n<function=")),
72
+ paramsPrefix: ">\n<parameter=params>\n",
73
+ suffix: LlamaText(new SpecialTokensText("\n</parameter>\n</function>\n</tool_call>")),
74
+ emptyCallParamsPlaceholder: {}
75
+ },
76
+ result: {
77
+ prefix: LlamaText(new SpecialTokensText("\n<tool_response>\n")),
78
+ suffix: LlamaText(new SpecialTokensText("\n</tool_response>"))
79
+ },
80
+ parallelism: {
81
+ call: {
82
+ sectionPrefix: _lineBreakBeforeFunctionCallPrefix
83
+ ? "\n\n"
84
+ : "",
85
+ betweenCalls: "\n",
86
+ sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n"))
87
+ },
88
+ result: {
89
+ sectionPrefix: LlamaText(new SpecialTokensText("<|im_start|>user")),
90
+ sectionSuffix: LlamaText(new SpecialTokensText("<|im_end|>\n<|im_start|>assistant\n"))
91
+ }
92
+ }
93
+ },
94
+ segments: {
95
+ reiterateStackAfterFunctionCalls: true,
96
+ thought: {
97
+ prefix: LlamaText(new SpecialTokensText("<think>\n")),
98
+ suffix: LlamaText(new SpecialTokensText("\n</think>"))
99
+ }
57
100
  }
58
- }
59
- };
101
+ };
60
102
  }
61
103
  generateContextState({ chatHistory, availableFunctions, documentFunctionParams }) {
62
104
  const historyWithFunctions = this.addAvailableFunctionsSystemMessageToHistory(chatHistory, availableFunctions, {
@@ -94,13 +136,29 @@ export class QwenChatWrapper extends ChatWrapper {
94
136
  }
95
137
  else if (item.type === "model") {
96
138
  flush();
97
- const transformedModelResponse = (this.thoughts === "discourage" && isLastItem)
139
+ let transformedModelResponse = (this.thoughts === "discourage" && isLastItem)
98
140
  ? discourageThoughtsInModelResponse(item.response)
99
141
  : item.response;
142
+ if (this.keepOnlyLastThought && !isLastItem)
143
+ transformedModelResponse = transformedModelResponse.filter((response) => (!isChatModelResponseSegment(response) || response.segmentType !== "thought"));
144
+ else if (isLastItem && this._ensureModelThoughtBeforeTextOnLastResponse) {
145
+ transformedModelResponse = transformedModelResponse.flatMap((response, index) => {
146
+ if (typeof response !== "string")
147
+ return [response];
148
+ const previousResponse = transformedModelResponse[index - 1];
149
+ if (previousResponse != null && isChatModelResponseSegment(previousResponse) && previousResponse.segmentType === "thought")
150
+ return [response];
151
+ return [{
152
+ type: "segment",
153
+ segmentType: "thought",
154
+ text: "",
155
+ ended: true,
156
+ raw: LlamaText(new SpecialTokensText("<think>\n\n</think>\n\n")).toJSON()
157
+ }, response];
158
+ });
159
+ }
100
160
  currentAggregateFocus = null;
101
- modelTexts.push(this.generateModelResponseText((this.keepOnlyLastThought && !isLastItem)
102
- ? transformedModelResponse.filter((response) => (!isChatModelResponseSegment(response) || response.segmentType !== "thought"))
103
- : transformedModelResponse));
161
+ modelTexts.push(this.generateModelResponseText(transformedModelResponse));
104
162
  }
105
163
  else
106
164
  void item;
@@ -152,21 +210,61 @@ export class QwenChatWrapper extends ChatWrapper {
152
210
  const functionsDocumentationGenerator = new ChatModelFunctionsDocumentationGenerator(availableFunctions);
153
211
  if (!functionsDocumentationGenerator.hasAnyFunctions)
154
212
  return LlamaText([]);
155
- return LlamaText.joinValues("\n", [
156
- "# Tools",
157
- "",
158
- "You may call one or more functions to assist with the user query.",
159
- "",
160
- LlamaText("You are provided with function signatures within ", new SpecialTokensText("<tools></tools>"), " XML tags:"),
161
- LlamaText(new SpecialTokensText("<tools>")),
162
- functionsDocumentationGenerator.getQwenFunctionSignatures({ documentParams }),
163
- LlamaText(new SpecialTokensText("</tools>")),
164
- "",
165
- LlamaText("For each function call, return a json object with function name and arguments within ", new SpecialTokensText("<tool_call></tool_call>"), " XML tags:"),
166
- LlamaText(new SpecialTokensText("<tool_call>")),
167
- '{"name": <function-name>, "arguments": <args-json-object>}',
168
- LlamaText(new SpecialTokensText("</tool_call>"))
169
- ]);
213
+ if (this.variation === "3")
214
+ return LlamaText.joinValues("\n", [
215
+ "# Tools",
216
+ "",
217
+ "You may call one or more functions to assist with the user query.",
218
+ "",
219
+ LlamaText("You are provided with function signatures within ", new SpecialTokensText("<tools></tools>"), " XML tags:"),
220
+ LlamaText(new SpecialTokensText("<tools>")),
221
+ functionsDocumentationGenerator.getQwenFunctionSignatures({ documentParams }),
222
+ LlamaText(new SpecialTokensText("</tools>")),
223
+ "",
224
+ LlamaText("For each function call, return a json object with function name and arguments within ", new SpecialTokensText("<tool_call></tool_call>"), " XML tags:"),
225
+ LlamaText(new SpecialTokensText("<tool_call>")),
226
+ '{"name": <function-name>, "arguments": <args-json-object>}',
227
+ LlamaText(new SpecialTokensText("</tool_call>"))
228
+ ]);
229
+ else
230
+ return LlamaText.joinValues("\n", [
231
+ "# Tools",
232
+ "",
233
+ "You have access to the following functions:",
234
+ "",
235
+ LlamaText(new SpecialTokensText("<tools>")),
236
+ functionsDocumentationGenerator.getQwenFunctionSignatures({ documentParams }),
237
+ LlamaText(new SpecialTokensText("</tools>")),
238
+ "",
239
+ LlamaText("If you choose to call a function ONLY reply in the following format with NO suffix:"),
240
+ "",
241
+ LlamaText(new SpecialTokensText("<tool_call>")),
242
+ LlamaText(new SpecialTokensText("<function="), "example_function_name", new SpecialTokensText(">")),
243
+ LlamaText(new SpecialTokensText("<parameter="), "example_parameter_1", new SpecialTokensText(">")),
244
+ "value_1",
245
+ LlamaText(new SpecialTokensText("</parameter>")),
246
+ LlamaText(new SpecialTokensText("<parameter="), "example_parameter_2", new SpecialTokensText(">")),
247
+ "This is the value for the second parameter",
248
+ "that can span",
249
+ "multiple lines",
250
+ LlamaText(new SpecialTokensText("</parameter>")),
251
+ LlamaText(new SpecialTokensText("</function>")),
252
+ LlamaText(new SpecialTokensText("</tool_call>")),
253
+ "",
254
+ LlamaText(new SpecialTokensText("<IMPORTANT>")),
255
+ "Reminder:",
256
+ LlamaText([
257
+ "- Function calls MUST follow the specified format: an inner ",
258
+ new SpecialTokensText("<function=...></function>"),
259
+ " block must be nested within ",
260
+ new SpecialTokensText("<tool_call></tool_call>"),
261
+ " XML tags"
262
+ ]),
263
+ "- Required parameters MUST be specified",
264
+ "- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after",
265
+ "- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls",
266
+ LlamaText(new SpecialTokensText("</IMPORTANT>"))
267
+ ]);
170
268
  }
171
269
  /** @internal */
172
270
  static _checkModelCompatibility(options) {
@@ -178,7 +276,9 @@ export class QwenChatWrapper extends ChatWrapper {
178
276
  architecture === GgufArchitectureType.qwen3 ||
179
277
  architecture === GgufArchitectureType.qwen3moe ||
180
278
  architecture === GgufArchitectureType.qwen3vl ||
181
- architecture === GgufArchitectureType.qwen3vlmoe);
279
+ architecture === GgufArchitectureType.qwen3vlmoe ||
280
+ architecture === GgufArchitectureType.qwen35 ||
281
+ architecture === GgufArchitectureType.qwen35moe);
182
282
  }
183
283
  /** @internal */
184
284
  static _getOptionConfigurationsToTestIfCanSupersedeJinjaTemplate() {
@@ -198,6 +298,26 @@ export class QwenChatWrapper extends ChatWrapper {
198
298
  { _flatFunctionResultString: true, thoughts: "discourage", _lineBreakBeforeFunctionCallPrefix: true },
199
299
  {},
200
300
  { _requireFunctionCallSettingsExtraction: true }
301
+ ],
302
+ [
303
+ { variation: "3.5" },
304
+ { variation: "3.5" },
305
+ { _requireFunctionCallSettingsExtraction: true, _functionCallExtractionExamineNonFirst: true }
306
+ ],
307
+ [
308
+ { variation: "3.5", _lineBreakBeforeFunctionCallPrefix: true },
309
+ { variation: "3.5" },
310
+ { _requireFunctionCallSettingsExtraction: true, _functionCallExtractionExamineNonFirst: true }
311
+ ],
312
+ [
313
+ { variation: "3.5", _ensureModelThoughtBeforeTextOnLastResponse: true, _lineBreakBeforeFunctionCallPrefix: true },
314
+ { variation: "3.5" },
315
+ { _requireFunctionCallSettingsExtraction: true, _functionCallExtractionExamineNonFirst: true }
316
+ ],
317
+ [
318
+ { variation: "3.5", _ensureModelThoughtBeforeTextOnLastResponse: true },
319
+ { variation: "3.5" },
320
+ { _requireFunctionCallSettingsExtraction: true, _functionCallExtractionExamineNonFirst: true }
201
321
  ]
202
322
  ];
203
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QwenChatWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/QwenChatWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QwenChatWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/QwenChatWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAqC,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAE4F,+BAA+B,EAC9H,0BAA0B,EAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,wCAAwC,EAAC,MAAM,qDAAqD,CAAC;AAE7G,mGAAmG;AACnG,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC5B,WAAW,GAAW,MAAM,CAAC;IAC7B,SAAS,CAAc;IAEvB,mBAAmB,CAAU;IAC7B,QAAQ,CAAwB;IAChD,gBAAgB,CAAkB,yBAAyB,CAAU;IACrE,gBAAgB,CAAkB,2CAA2C,CAAU;IAE9D,QAAQ,CAAsB;IAEvD,YAAmB,UAgCf,EAAE;QACF,KAAK,EAAE,CAAC;QAER,MAAM,EACF,mBAAmB,GAAG,IAAI,EAC1B,QAAQ,GAAG,MAAM,EACjB,SAAS,GAAG,GAAG,EACf,kCAAkC,GAAG,KAAK,EAC1C,yBAAyB,GAAG,KAAK,EACjC,2CAA2C,GAAG,KAAK,EACtD,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;QAC3D,IAAI,CAAC,2CAA2C,GAAG,2CAA2C,CAAC;QAE/F,IAAI,SAAS,KAAK,GAAG;YACjB,IAAI,CAAC,QAAQ,GAAG;gBACZ,sBAAsB,EAAE,IAAI;gBAC5B,SAAS,EAAE;oBACP,IAAI,EAAE;wBACF,mBAAmB,EAAE,IAAI;wBACzB,MAAM,EAAE,SAAS,CAAC;4BACd,kCAAkC;gCAC9B,CAAC,CAAC,IAAI;gCACN,CAAC,CAAC,EAAE;4BACR,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,cAAc;yBACvD,CAAC;wBACF,YAAY,EAAE,kBAAkB;wBAChC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;wBAC/D,0BAA0B,EAAE,EAAE;qBACjC;oBACD,MAAM,EAAE;wBACJ,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;wBAC/D,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;qBACjE;oBACD,WAAW,EAAE;wBACT,IAAI,EAAE;4BACF,aAAa,EAAE,EAAE;4BACjB,YAAY,EAAE,kCAAkC;gCAC5C,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,IAAI;4BACV,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;yBAClE;wBACD,MAAM,EAAE;4BACJ,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;4BACnE,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,qCAAqC,CAAC,CAAC;yBACzF;qBACJ;iBACJ;gBACD,QAAQ,EAAE;oBACN,gCAAgC,EAAE,IAAI;oBACtC,OAAO,EAAE;wBACL,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;wBACrD,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;qBACzD;iBACJ;aACJ,CAAC;;YAEF,IAAI,CAAC,QAAQ,GAAG;gBACZ,sBAAsB,EAAE,IAAI;gBAC5B,SAAS,EAAE;oBACP,IAAI,EAAE;wBACF,mBAAmB,EAAE,IAAI;wBACzB,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;wBACnE,YAAY,EAAE,yBAAyB;wBACvC,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,2CAA2C,CAAC,CAAC;wBACrF,0BAA0B,EAAE,EAAE;qBACjC;oBACD,MAAM,EAAE;wBACJ,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;wBAC/D,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;qBACjE;oBACD,WAAW,EAAE;wBACT,IAAI,EAAE;4BACF,aAAa,EAAE,kCAAkC;gCAC7C,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,EAAE;4BACR,YAAY,EAAE,IAAI;4BAClB,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;yBAClE;wBACD,MAAM,EAAE;4BACJ,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;4BACnE,aAAa,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,qCAAqC,CAAC,CAAC;yBACzF;qBACJ;iBACJ;gBACD,QAAQ,EAAE;oBACN,gCAAgC,EAAE,IAAI;oBACtC,OAAO,EAAE;wBACL,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;wBACrD,MAAM,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;qBACzD;iBACJ;aACJ,CAAC;IACV,CAAC;IAEe,oBAAoB,CAAC,EACjC,WAAW,EAAE,kBAAkB,EAAE,sBAAsB,EAClB;QACrC,MAAM,oBAAoB,GAAG,IAAI,CAAC,2CAA2C,CAAC,WAAW,EAAE,kBAAkB,EAAE;YAC3G,cAAc,EAAE,sBAAsB;SACzC,CAAC,CAAC;QAEH,MAAM,WAAW,GAIZ,EAAE,CAAC;QAER,IAAI,WAAW,GAAgB,EAAE,CAAC;QAClC,IAAI,SAAS,GAAgB,EAAE,CAAC;QAChC,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,qBAAqB,GAAoB,IAAI,CAAC;QAElD,SAAS,KAAK;YACV,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBACvE,WAAW,CAAC,IAAI,CAAC;oBACb,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;oBACjD,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;oBAC7C,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;iBAClD,CAAC,CAAC;YAEP,WAAW,GAAG,EAAE,CAAC;YACjB,SAAS,GAAG,EAAE,CAAC;YACf,UAAU,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAE,CAAC;YACtC,MAAM,UAAU,GAAG,CAAC,KAAK,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YAEzD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzB,IAAI,qBAAqB,KAAK,QAAQ;oBAClC,KAAK,EAAE,CAAC;gBAEZ,qBAAqB,GAAG,QAAQ,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAC;gBAER,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,KAAK,EAAE,CAAC;gBAER,IAAI,wBAAwB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,UAAU,CAAC;oBACzE,CAAC,CAAC,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAClD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAEpB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU;oBACvC,wBAAwB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,CAC9E,CAAC,CAAC;qBACF,IAAI,UAAU,IAAI,IAAI,CAAC,2CAA2C,EAAE,CAAC;oBACtE,wBAAwB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAiC,EAAE;wBAC3G,IAAI,OAAO,QAAQ,KAAK,QAAQ;4BAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAEtB,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBAC7D,IAAI,gBAAgB,IAAI,IAAI,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,WAAW,KAAK,SAAS;4BACtH,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAEtB,OAAO,CAAC;gCACJ,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,SAAS;gCACtB,IAAI,EAAE,EAAE;gCACR,KAAK,EAAE,IAAI;gCACX,GAAG,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE;6BAC5E,EAAE,QAAQ,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC9E,CAAC;;gBACG,KAAM,IAAqB,CAAC;QACpC,CAAC;QAED,KAAK,EAAE,CAAC;QAER,MAAM,WAAW,GAAG,SAAS,CACzB,WAAW,CAAC,GAAG,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC;gBACb,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACf,CAAC,CAAC,SAAS,CAAC;wBACR,IAAI,iBAAiB,CAAC,sBAAsB,CAAC;wBAC7C,MAAM;wBACN,IAAI,iBAAiB,CAAC,cAAc,CAAC;qBACxC,CAAC;gBAEN,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;oBACtB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACf,CAAC,CAAC,SAAS,CAAC;wBACR,IAAI,iBAAiB,CAAC,oBAAoB,CAAC;wBAC3C,IAAI;wBACJ,IAAI,iBAAiB,CAAC,cAAc,CAAC;qBACxC,CAAC;gBAEN,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACf,CAAC,CAAC,SAAS,CAAC;wBACR,IAAI,iBAAiB,CAAC,yBAAyB,CAAC;wBAChD,KAAK;wBAEL,UAAU;4BACN,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;4BACf,CAAC,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC;qBAC9C,CAAC;aACT,CAAC,CAAC;QACP,CAAC,CAAC,CACL,CAAC;QAEF,OAAO;YACH,WAAW;YACX,sBAAsB,EAAE;gBACpB,SAAS,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClC,SAAS,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBAC9C,SAAS,CAAC,YAAY,CAAC;aAC1B;SACJ,CAAC;IACN,CAAC;IAEe,0BAA0B,CAAC,YAAoB,EAAE,cAAmB,EAAE,MAAW;QAC7F,IAAI,IAAI,CAAC,yBAAyB,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC5D,OAAO,KAAK,CAAC,2BAA2B,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAEnF,OAAO,KAAK,CAAC,0BAA0B,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAEe,oCAAoC,CAAC,kBAAsC,EAAE,EAAC,cAAc,GAAG,IAAI,EAElH;QACG,MAAM,+BAA+B,GAAG,IAAI,wCAAwC,CAAC,kBAAkB,CAAC,CAAC;QAEzG,IAAI,CAAC,+BAA+B,CAAC,eAAe;YAChD,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG;YACtB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC9B,SAAS;gBACT,EAAE;gBACF,mEAAmE;gBACnE,EAAE;gBACF,SAAS,CAAC,mDAAmD,EAAE,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC;gBACtH,SAAS,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC3C,+BAA+B,CAAC,yBAAyB,CAAC,EAAC,cAAc,EAAC,CAAC;gBAC3E,SAAS,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC5C,EAAE;gBACF,SAAS,CAAC,uFAAuF,EAAE,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,EAAE,YAAY,CAAC;gBAClK,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC/C,4DAA4D;gBAC5D,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;aACnD,CAAC,CAAC;;YAEH,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC9B,SAAS;gBACT,EAAE;gBACF,6CAA6C;gBAC7C,EAAE;gBACF,SAAS,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC3C,+BAA+B,CAAC,yBAAyB,CAAC,EAAC,cAAc,EAAC,CAAC;gBAC3E,SAAS,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC5C,EAAE;gBACF,SAAS,CAAC,qFAAqF,CAAC;gBAChG,EAAE;gBACF,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC/C,SAAS,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE,uBAAuB,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBACnG,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAClG,SAAS;gBACT,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAChD,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAClG,4CAA4C;gBAC5C,eAAe;gBACf,gBAAgB;gBAChB,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAChD,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC/C,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAChD,EAAE;gBACF,SAAS,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC/C,WAAW;gBACX,SAAS,CAAC;oBACN,8DAA8D;oBAC9D,IAAI,iBAAiB,CAAC,2BAA2B,CAAC;oBAClD,+BAA+B;oBAC/B,IAAI,iBAAiB,CAAC,yBAAyB,CAAC;oBAChD,WAAW;iBACd,CAAC;gBACF,yCAAyC;gBACzC,yHAAyH;gBACzH,qJAAqJ;gBACrJ,SAAS,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;aACnD,CAAC,CAAC;IACX,CAAC;IAED,gBAAgB;IACT,MAAM,CAAU,wBAAwB,CAAC,OAAiD;QAC7F,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;QACrE,OAAO,CACH,YAAY,IAAI,IAAI;YACpB,YAAY,KAAK,oBAAoB,CAAC,KAAK;YAC3C,YAAY,KAAK,oBAAoB,CAAC,QAAQ;YAC9C,YAAY,KAAK,oBAAoB,CAAC,OAAO;YAC7C,YAAY,KAAK,oBAAoB,CAAC,KAAK;YAC3C,YAAY,KAAK,oBAAoB,CAAC,QAAQ;YAC9C,YAAY,KAAK,oBAAoB,CAAC,OAAO;YAC7C,YAAY,KAAK,oBAAoB,CAAC,UAAU;YAChD,YAAY,KAAK,oBAAoB,CAAC,MAAM;YAC5C,YAAY,KAAK,oBAAoB,CAAC,SAAS,CAClD,CAAC;IACN,CAAC;IAED,gBAAgB;IACT,MAAM,CAAU,yDAAyD;QAC5E,OAAO;YACH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YACxD,CAAC,EAAC,kCAAkC,EAAE,IAAI,EAAC,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YAChG,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAC,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YAC9E,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAE,kCAAkC,EAAE,IAAI,EAAC,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YAExH,CAAC,EAAC,yBAAyB,EAAE,IAAI,EAAC,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YACvF;gBACI,EAAC,yBAAyB,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAC;gBAC3E,EAAE;gBACF,EAAC,sCAAsC,EAAE,IAAI,EAAC;aACjD;YACD,CAAC,EAAC,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAC,EAAE,EAAE,EAAE,EAAC,sCAAsC,EAAE,IAAI,EAAC,CAAC;YAC/G;gBACI,EAAC,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,kCAAkC,EAAE,IAAI,EAAC;gBACnG,EAAE;gBACF,EAAC,sCAAsC,EAAE,IAAI,EAAC;aACjD;YAED;gBACI,EAAC,SAAS,EAAE,KAAK,EAAC;gBAClB,EAAC,SAAS,EAAE,KAAK,EAAC;gBAClB,EAAC,sCAAsC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAC;aAC/F;YACD;gBACI,EAAC,SAAS,EAAE,KAAK,EAAE,kCAAkC,EAAE,IAAI,EAAC;gBAC5D,EAAC,SAAS,EAAE,KAAK,EAAC;gBAClB,EAAC,sCAAsC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAC;aAC/F;YACD;gBACI,EAAC,SAAS,EAAE,KAAK,EAAE,2CAA2C,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAC;gBAC/G,EAAC,SAAS,EAAE,KAAK,EAAC;gBAClB,EAAC,sCAAsC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAC;aAC/F;YACD;gBACI,EAAC,SAAS,EAAE,KAAK,EAAE,2CAA2C,EAAE,IAAI,EAAC;gBACrE,EAAC,SAAS,EAAE,KAAK,EAAC;gBAClB,EAAC,sCAAsC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAC;aAC/F;SACJ,CAAC;IACN,CAAC;CACJ;AAED,SAAS,iCAAiC,CAAC,QAAuC;IAC9E,MAAM,YAAY,GAAqB;QACnC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE;KAC5E,CAAC;IACF,MAAM,GAAG,GAAkC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEzD,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;YACnC,OAAO,GAAG,CAAC;QACf,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -9,7 +9,7 @@ import { tryMatrix } from "../../utils/optionsMatrix.js";
9
9
  import { parseFunctionCallMessageTemplate } from "./utils/chatHistoryFunctionCallMessageTemplate.js";
10
10
  import { templateSegmentOptionsToChatWrapperSettings } from "./utils/templateSegmentOptionsToChatWrapperSettings.js";
11
11
  import { UniqueIdGenerator } from "./utils/UniqueIdGenerator.js";
12
- import { extractFunctionCallSettingsFromJinjaTemplate } from "./utils/extractFunctionCallSettingsFromJinjaTemplate.js";
12
+ import { detectNeedToWrapFunctionArgumentsWithMap, extractFunctionCallSettingsFromJinjaTemplate } from "./utils/extractFunctionCallSettingsFromJinjaTemplate.js";
13
13
  import { squashChatHistoryItems } from "./utils/squashChatHistoryItems.js";
14
14
  import { extractSegmentSettingsFromTokenizerAndChatTemplate } from "./utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js";
15
15
  const defaultConvertUnsupportedSystemMessagesToUserMessagesFormat = {
@@ -58,6 +58,7 @@ export class JinjaTemplateChatWrapper extends ChatWrapper {
58
58
  /** @internal */ _jinjaTemplate;
59
59
  /** @internal */ _usingJinjaFunctionCallTemplate = false;
60
60
  /** @internal */ _stringifyFunctionParams = false;
61
+ /** @internal */ _wrapFunctionParamsInsideMapKey;
61
62
  /** @internal */ _stringifyFunctionResult = false;
62
63
  /** @internal */ _combineJinjaModelMessageAndToolCalls = true;
63
64
  /** @internal */ _endJinjaMessagesWithUserMessage = false;
@@ -66,7 +67,7 @@ export class JinjaTemplateChatWrapper extends ChatWrapper {
66
67
  */
67
68
  constructor(options) {
68
69
  super();
69
- const { template, modelRoleName = "assistant", userRoleName = "user", systemRoleName = "system", convertUnsupportedSystemMessagesToUserMessages = defaultConvertUnsupportedSystemMessagesToUserMessagesFormat, functionCallMessageTemplate = "auto", joinAdjacentMessagesOfTheSameType = true, trimLeadingWhitespaceInResponses = true, additionalRenderParameters, segments, tokenizer, _requireFunctionCallSettingsExtraction = false } = options;
70
+ const { template, modelRoleName = "assistant", userRoleName = "user", systemRoleName = "system", convertUnsupportedSystemMessagesToUserMessages = defaultConvertUnsupportedSystemMessagesToUserMessagesFormat, functionCallMessageTemplate = "auto", joinAdjacentMessagesOfTheSameType = true, trimLeadingWhitespaceInResponses = true, additionalRenderParameters, segments, tokenizer, _requireFunctionCallSettingsExtraction = false, _functionCallExtractionExamineNonFirst = false } = options;
70
71
  if (template == null)
71
72
  throw new Error("template cannot be null");
72
73
  this.template = template;
@@ -101,87 +102,107 @@ export class JinjaTemplateChatWrapper extends ChatWrapper {
101
102
  : functionCallMessageTemplate);
102
103
  if (functionCallSettings == null && functionCallMessageTemplate !== "noJinja") {
103
104
  try {
104
- const idsGenerator = new UniqueIdGenerator(this.template + this.modelRoleName + this.userRoleName + this.systemRoleName +
105
- (this.convertUnsupportedSystemMessagesToUserMessages?.format ?? ""));
106
- const extractedSettings = extractFunctionCallSettingsFromJinjaTemplate({
107
- idsGenerator,
108
- renderTemplate: ({ chatHistory, functions, additionalParams, stringifyFunctionParams, stringifyFunctionResults, combineModelMessageAndToolCalls, squashModelTextResponses = true }) => {
109
- const render = (convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds) => {
110
- const { messages: intermediateMessages, tools } = fromChatHistoryToIntermediateOpenAiMessages({
111
- chatHistory: this._transformChatHistory(chatHistory, {
112
- convertSystemMessagesToUserMessagesFormat,
113
- joinAdjacentMessagesOfTheSameType: !squashModelTextResponses
114
- ? false
115
- : undefined
116
- }).transformedHistory,
117
- chatWrapperSettings: this.settings,
118
- useRawValues: false,
119
- functions,
120
- stringifyFunctionParams,
121
- stringifyFunctionResults,
122
- combineModelMessageAndToolCalls,
123
- squashModelTextResponses
124
- });
125
- const messages = fromIntermediateToCompleteOpenAiMessages(intermediateMessages)
126
- .map((item) => {
127
- if (!wipeFunctionCallIds)
105
+ const renderTemplate = ({ chatHistory, functions, additionalParams, stringifyFunctionParams, stringifyFunctionResults, combineModelMessageAndToolCalls, squashModelTextResponses = true }) => {
106
+ const render = (convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds) => {
107
+ let inputChatHistory = chatHistory;
108
+ if (this._wrapFunctionParamsInsideMapKey != null)
109
+ inputChatHistory = inputChatHistory.map((item) => {
110
+ if (item.type !== "model")
128
111
  return item;
129
- if (item.role === "assistant" && item["tool_calls"] != null && item["tool_calls"].length > 0) {
130
- for (const toolCall of item["tool_calls"]) {
131
- if (wipeFunctionCallIds === "align")
132
- toolCall.id = "fc_1_0001";
133
- else
134
- delete toolCall.id;
135
- }
136
- }
137
- else if (item.role === "tool") {
112
+ return {
113
+ ...item,
114
+ response: item.response.map((response) => {
115
+ if (typeof response === "string" || response.type !== "functionCall")
116
+ return response;
117
+ return {
118
+ ...response,
119
+ params: { [this._wrapFunctionParamsInsideMapKey]: response.params }
120
+ };
121
+ })
122
+ };
123
+ });
124
+ const { messages: intermediateMessages, tools } = fromChatHistoryToIntermediateOpenAiMessages({
125
+ chatHistory: this._transformChatHistory(inputChatHistory, {
126
+ convertSystemMessagesToUserMessagesFormat,
127
+ joinAdjacentMessagesOfTheSameType: !squashModelTextResponses
128
+ ? false
129
+ : undefined
130
+ }).transformedHistory,
131
+ chatWrapperSettings: this.settings,
132
+ useRawValues: false,
133
+ functions,
134
+ stringifyFunctionParams,
135
+ stringifyFunctionResults,
136
+ combineModelMessageAndToolCalls,
137
+ squashModelTextResponses
138
+ });
139
+ const messages = fromIntermediateToCompleteOpenAiMessages(intermediateMessages)
140
+ .map((item) => {
141
+ if (!wipeFunctionCallIds)
142
+ return item;
143
+ if (item.role === "assistant" && item["tool_calls"] != null && item["tool_calls"].length > 0) {
144
+ for (const toolCall of item["tool_calls"]) {
138
145
  if (wipeFunctionCallIds === "align")
139
- item["tool_call_id"] = "fc_1_0001";
146
+ toolCall.id = "fc_1_0001";
140
147
  else
141
- delete item["tool_call_id"];
148
+ delete toolCall.id;
142
149
  }
143
- return item;
144
- });
145
- const lastJinjaItem = messages.at(-1);
146
- let eraseRenderedJinjaFromId;
147
- if (this._endJinjaMessagesWithUserMessage && lastJinjaItem?.role === this.modelRoleName &&
148
- typeof lastJinjaItem.content === "string" &&
149
- lastJinjaItem.content.length > 0 &&
150
- (lastJinjaItem["tool_calls"] == null ||
151
- lastJinjaItem["tool_calls"]?.length === 0)) {
152
- eraseRenderedJinjaFromId = lastJinjaItem.content;
153
- messages.push({
154
- role: this.userRoleName,
155
- content: idsGenerator.generateId()
156
- });
157
150
  }
158
- let res = this._jinjaTemplate.render({
159
- ...(this.additionalRenderParameters == null
160
- ? {}
161
- : structuredClone(this.additionalRenderParameters)),
162
- ...additionalParams,
163
- messages,
164
- ...removeUndefinedFields({ tools })
165
- });
166
- if (eraseRenderedJinjaFromId != null) {
167
- const eraseIndex = res.lastIndexOf(eraseRenderedJinjaFromId);
168
- if (eraseIndex >= 0)
169
- res = res.slice(0, eraseIndex + eraseRenderedJinjaFromId.length);
151
+ else if (item.role === "tool") {
152
+ if (wipeFunctionCallIds === "align")
153
+ item["tool_call_id"] = "fc_1_0001";
154
+ else
155
+ delete item["tool_call_id"];
170
156
  }
171
- // attempt to remove the ID pattern from the output
172
- if (wipeFunctionCallIds === "align")
173
- res = res
174
- .replaceAll(/,\s*"(tool_call_id|call_id|id)":\s*"fc_1_0001"/g, "")
175
- .replaceAll(/"(tool_call_id|call_id|id)":\s*"fc_1_0001"\s*,/g, "");
176
- return res;
177
- };
178
- return tryMatrix({
179
- convertSystemMessagesToUserMessagesFormat: getConvertUnsupportedSystemMessagesToUserMessagesTryOptions(this.convertUnsupportedSystemMessagesToUserMessages),
180
- wipeFunctionCallIds: [true, "align", false]
181
- }, ({ convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds }) => {
182
- return render(convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds);
157
+ return item;
183
158
  });
184
- }
159
+ const lastJinjaItem = messages.at(-1);
160
+ let eraseRenderedJinjaFromId;
161
+ if (this._endJinjaMessagesWithUserMessage && lastJinjaItem?.role === this.modelRoleName &&
162
+ typeof lastJinjaItem.content === "string" &&
163
+ lastJinjaItem.content.length > 0 &&
164
+ (lastJinjaItem["tool_calls"] == null ||
165
+ lastJinjaItem["tool_calls"]?.length === 0)) {
166
+ eraseRenderedJinjaFromId = lastJinjaItem.content;
167
+ messages.push({
168
+ role: this.userRoleName,
169
+ content: idsGenerator.generateId()
170
+ });
171
+ }
172
+ let res = this._jinjaTemplate.render({
173
+ ...(this.additionalRenderParameters == null
174
+ ? {}
175
+ : structuredClone(this.additionalRenderParameters)),
176
+ ...additionalParams,
177
+ messages,
178
+ ...removeUndefinedFields({ tools })
179
+ });
180
+ if (eraseRenderedJinjaFromId != null) {
181
+ const eraseIndex = res.lastIndexOf(eraseRenderedJinjaFromId);
182
+ if (eraseIndex >= 0)
183
+ res = res.slice(0, eraseIndex + eraseRenderedJinjaFromId.length);
184
+ }
185
+ // attempt to remove the ID pattern from the output
186
+ if (wipeFunctionCallIds === "align")
187
+ res = res
188
+ .replaceAll(/,\s*"(tool_call_id|call_id|id)":\s*"fc_1_0001"/g, "")
189
+ .replaceAll(/"(tool_call_id|call_id|id)":\s*"fc_1_0001"\s*,/g, "");
190
+ return res;
191
+ };
192
+ return tryMatrix({
193
+ convertSystemMessagesToUserMessagesFormat: getConvertUnsupportedSystemMessagesToUserMessagesTryOptions(this.convertUnsupportedSystemMessagesToUserMessages),
194
+ wipeFunctionCallIds: [true, "align", false]
195
+ }, ({ convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds }) => {
196
+ return render(convertSystemMessagesToUserMessagesFormat, wipeFunctionCallIds);
197
+ });
198
+ };
199
+ const idsGenerator = new UniqueIdGenerator(this.template + this.modelRoleName + this.userRoleName + this.systemRoleName +
200
+ (this.convertUnsupportedSystemMessagesToUserMessages?.format ?? ""));
201
+ this._wrapFunctionParamsInsideMapKey = detectNeedToWrapFunctionArgumentsWithMap({ idsGenerator, renderTemplate });
202
+ const extractedSettings = extractFunctionCallSettingsFromJinjaTemplate({
203
+ idsGenerator,
204
+ renderTemplate,
205
+ examineNonFirstFunctionCall: _functionCallExtractionExamineNonFirst
185
206
  });
186
207
  functionCallSettings = extractedSettings.settings;
187
208
  if (functionCallSettings != null) {
@@ -332,18 +353,36 @@ export class JinjaTemplateChatWrapper extends ChatWrapper {
332
353
  }),
333
354
  tools: undefined
334
355
  });
335
- const generateMessagesWithTools = (chatHistory) => (fromChatHistoryToIntermediateOpenAiMessages({
336
- chatHistory,
337
- chatWrapperSettings: this.settings,
338
- useRawValues: false,
339
- functions: (availableFunctions != null && !documentFunctionParams)
340
- ? Object.fromEntries(Object.entries(availableFunctions)
341
- .map(([funcName, { description, ...func }]) => [funcName, func]))
342
- : availableFunctions,
343
- stringifyFunctionParams: this._stringifyFunctionParams,
344
- stringifyFunctionResults: this._stringifyFunctionResult,
345
- combineModelMessageAndToolCalls: this._combineJinjaModelMessageAndToolCalls
346
- }));
356
+ const generateMessagesWithTools = (chatHistory) => {
357
+ if (this._wrapFunctionParamsInsideMapKey != null)
358
+ chatHistory = chatHistory.map((item) => {
359
+ if (item.type !== "model")
360
+ return item;
361
+ return {
362
+ ...item,
363
+ response: item.response.map((response) => {
364
+ if (typeof response === "string" || response.type !== "functionCall")
365
+ return response;
366
+ return {
367
+ ...response,
368
+ params: { [this._wrapFunctionParamsInsideMapKey]: response.params }
369
+ };
370
+ })
371
+ };
372
+ });
373
+ return fromChatHistoryToIntermediateOpenAiMessages({
374
+ chatHistory,
375
+ chatWrapperSettings: this.settings,
376
+ useRawValues: false,
377
+ functions: (availableFunctions != null && !documentFunctionParams)
378
+ ? Object.fromEntries(Object.entries(availableFunctions)
379
+ .map(([funcName, { description, ...func }]) => [funcName, func]))
380
+ : availableFunctions,
381
+ stringifyFunctionParams: this._stringifyFunctionParams,
382
+ stringifyFunctionResults: this._stringifyFunctionResult,
383
+ combineModelMessageAndToolCalls: this._combineJinjaModelMessageAndToolCalls
384
+ });
385
+ };
347
386
  const lastItemIsModelMessage = transformedHistory.at(-1)?.type === "model";
348
387
  const { messages: intermediateMessages, tools } = this._usingJinjaFunctionCallTemplate
349
388
  ? useMessagesWithEmbeddedTools