node-llama-cpp 3.11.0 → 3.12.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 (54) hide show
  1. package/README.md +1 -1
  2. package/dist/bindings/Llama.d.ts +5 -1
  3. package/dist/bindings/Llama.js +11 -1
  4. package/dist/bindings/Llama.js.map +1 -1
  5. package/dist/bindings/types.d.ts +5 -2
  6. package/dist/bindings/types.js +16 -1
  7. package/dist/bindings/types.js.map +1 -1
  8. package/dist/chatWrappers/HarmonyChatWrapper.d.ts +78 -0
  9. package/dist/chatWrappers/HarmonyChatWrapper.js +527 -0
  10. package/dist/chatWrappers/HarmonyChatWrapper.js.map +1 -0
  11. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +4 -2
  12. package/dist/chatWrappers/utils/resolveChatWrapper.js +21 -6
  13. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  14. package/dist/cli/commands/ChatCommand.d.ts +2 -1
  15. package/dist/cli/commands/ChatCommand.js +21 -7
  16. package/dist/cli/commands/ChatCommand.js.map +1 -1
  17. package/dist/cli/commands/CompleteCommand.d.ts +2 -1
  18. package/dist/cli/commands/CompleteCommand.js +21 -7
  19. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  20. package/dist/cli/commands/InfillCommand.d.ts +2 -1
  21. package/dist/cli/commands/InfillCommand.js +21 -7
  22. package/dist/cli/commands/InfillCommand.js.map +1 -1
  23. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +1 -0
  24. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +16 -5
  25. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  26. package/dist/cli/recommendedModels.js +22 -0
  27. package/dist/cli/recommendedModels.js.map +1 -1
  28. package/dist/evaluator/LlamaChat/LlamaChat.js +244 -29
  29. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  30. package/dist/gguf/insights/GgufInsights.js +22 -3
  31. package/dist/gguf/insights/GgufInsights.js.map +1 -1
  32. package/dist/gguf/types/GgufMetadataTypes.d.ts +19 -2
  33. package/dist/gguf/types/GgufMetadataTypes.js +17 -0
  34. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  35. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +2 -1
  36. package/dist/gguf/types/GgufTensorInfoTypes.js +1 -0
  37. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -1
  38. package/dist/gguf/utils/getGgufFileTypeName.d.ts +1 -1
  39. package/dist/gguf/utils/ggufQuantNames.js +1 -0
  40. package/dist/gguf/utils/ggufQuantNames.js.map +1 -1
  41. package/dist/index.d.ts +3 -2
  42. package/dist/index.js +2 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/types.d.ts +144 -2
  46. package/dist/types.js.map +1 -1
  47. package/dist/utils/gbnfJson/types.d.ts +1 -1
  48. package/dist/utils/gbnfJson/types.js.map +1 -1
  49. package/dist/utils/getChatWrapperSegmentDefinition.js +2 -0
  50. package/dist/utils/getChatWrapperSegmentDefinition.js.map +1 -1
  51. package/llama/binariesGithubRelease.json +1 -1
  52. package/llama/gitRelease.bundle +0 -0
  53. package/llama/llama.cpp.info.json +1 -1
  54. package/package.json +18 -16
@@ -0,0 +1,527 @@
1
+ import { ChatWrapper } from "../ChatWrapper.js";
2
+ import { SpecialToken, LlamaText, SpecialTokensText } from "../utils/LlamaText.js";
3
+ import { ChatModelFunctionsDocumentationGenerator } from "./utils/ChatModelFunctionsDocumentationGenerator.js";
4
+ import { jsonDumps } from "./utils/jsonDumps.js";
5
+ const defaultModelIdentity = "You are ChatGPT, a large language model trained by OpenAI.";
6
+ const defaultCuttingKnowledgeDate = new Date("2024-06-01T00:00:00Z");
7
+ const defaultReasoningEffort = "medium";
8
+ // source: https://github.com/openai/harmony, https://cookbook.openai.com/articles/openai-harmony,
9
+ // https://github.com/openai/openai-cookbook/blob/main/articles/openai-harmony.md
10
+ export class HarmonyChatWrapper extends ChatWrapper {
11
+ wrapperName = "Harmony";
12
+ modelIdentity;
13
+ cuttingKnowledgeDate;
14
+ todayDate;
15
+ reasoningEffort;
16
+ requiredChannels;
17
+ keepOnlyLastThought;
18
+ /** @internal */ _jinjaFlags;
19
+ settings = {
20
+ supportsSystemMessages: true,
21
+ functions: {
22
+ call: {
23
+ optionalPrefixSpace: true,
24
+ prefix: LlamaText(new SpecialTokensText(" to="), "functions."),
25
+ paramsPrefix: LlamaText(new SpecialTokensText("<|constrain|>json<|message|>")),
26
+ suffix: LlamaText(new SpecialTokensText("<|call|>")),
27
+ emptyCallParamsPlaceholder: {}
28
+ },
29
+ result: {
30
+ prefix: LlamaText(new SpecialTokensText("<|start|>"), "functions.{{functionName}}", new SpecialTokensText(" to=assistant<|channel|>commentary<|message|>")),
31
+ suffix: LlamaText(new SpecialTokensText("<|end|>"))
32
+ }
33
+ },
34
+ segments: {
35
+ thought: {
36
+ prefix: LlamaText(new SpecialTokensText("<|channel|>analysis<|message|>")),
37
+ suffix: LlamaText(new SpecialTokensText("<|end|>"))
38
+ },
39
+ comment: {
40
+ prefix: LlamaText(new SpecialTokensText("<|channel|>commentary<|message|>")),
41
+ suffix: LlamaText(new SpecialTokensText("<|end|>"))
42
+ }
43
+ }
44
+ };
45
+ constructor(options = {}) {
46
+ super();
47
+ const { modelIdentity = defaultModelIdentity, cuttingKnowledgeDate = defaultCuttingKnowledgeDate, todayDate = () => new Date(), reasoningEffort = defaultReasoningEffort, requiredChannels = {}, keepOnlyLastThought = true, _jinjaFlags = {} } = options;
48
+ this.modelIdentity = modelIdentity;
49
+ this.cuttingKnowledgeDate = cuttingKnowledgeDate == null
50
+ ? null
51
+ : cuttingKnowledgeDate instanceof Function
52
+ ? cuttingKnowledgeDate
53
+ : new Date(cuttingKnowledgeDate);
54
+ this.todayDate = todayDate == null
55
+ ? null
56
+ : todayDate instanceof Function
57
+ ? todayDate
58
+ : new Date(todayDate);
59
+ this.reasoningEffort = reasoningEffort;
60
+ this.requiredChannels = {
61
+ analysis: requiredChannels.analysis ?? true,
62
+ commentary: requiredChannels.commentary ?? true,
63
+ final: requiredChannels.final ?? true
64
+ };
65
+ this.keepOnlyLastThought = keepOnlyLastThought;
66
+ this._jinjaFlags = {
67
+ emptyLastModelResponseIsFinalMessage: false,
68
+ useSpecialTokensForFullSystemMessage: false,
69
+ disableNonFinalFinalMessages: false,
70
+ useNonFinalFinalMessage: false,
71
+ noFinalMessages: false,
72
+ ..._jinjaFlags
73
+ };
74
+ }
75
+ generateContextState({ chatHistory, availableFunctions, documentFunctionParams }) {
76
+ const hasFunctions = Object.keys(availableFunctions ?? {}).length > 0;
77
+ const modifiedChatHistory = chatHistory.slice();
78
+ let systemMessage = LlamaText();
79
+ if (modifiedChatHistory[0]?.type === "system") {
80
+ systemMessage = LlamaText.fromJSON(modifiedChatHistory[0].text);
81
+ modifiedChatHistory.shift();
82
+ }
83
+ const contextContent = [
84
+ this._getPreamble(hasFunctions)
85
+ ];
86
+ if (systemMessage.values.length > 0 || hasFunctions)
87
+ contextContent.push(LlamaText([
88
+ new SpecialTokensText("<|start|>developer<|message|>"),
89
+ this._getFirstDeveloperMessage(systemMessage, availableFunctions, { documentParams: documentFunctionParams }),
90
+ new SpecialTokensText("<|end|>")
91
+ ]));
92
+ let needsTriggers = true;
93
+ for (let i = 0; i < modifiedChatHistory.length; i++) {
94
+ const isLastItem = i === modifiedChatHistory.length - 1;
95
+ const item = modifiedChatHistory[i];
96
+ if (item == null)
97
+ continue;
98
+ if (item.type === "system") {
99
+ contextContent.push(LlamaText([
100
+ new SpecialTokensText("<|start|>developer<|message|>"),
101
+ LlamaText.fromJSON(item.text),
102
+ isLastItem
103
+ ? LlamaText([])
104
+ : new SpecialTokensText("<|end|>")
105
+ ]));
106
+ if (isLastItem)
107
+ needsTriggers = false;
108
+ }
109
+ else if (item.type === "user") {
110
+ contextContent.push(LlamaText([
111
+ new SpecialTokensText("<|start|>user<|message|>"),
112
+ item.text,
113
+ isLastItem
114
+ ? LlamaText([])
115
+ : new SpecialTokensText("<|end|>")
116
+ ]));
117
+ if (isLastItem)
118
+ needsTriggers = false;
119
+ }
120
+ else if (item.type === "model") {
121
+ const { res, needsTriggers: modelNeedsTriggers } = this._getModelResponse(item.response, true, isLastItem, this.keepOnlyLastThought);
122
+ if (isLastItem)
123
+ needsTriggers = modelNeedsTriggers;
124
+ contextContent.push(res);
125
+ }
126
+ else
127
+ void item;
128
+ }
129
+ const contextText = LlamaText(contextContent);
130
+ if (!needsTriggers)
131
+ return {
132
+ contextText,
133
+ stopGenerationTriggers: [
134
+ LlamaText(new SpecialToken("EOS")),
135
+ LlamaText(new SpecialTokensText("<|return|>")),
136
+ LlamaText("<|return|>")
137
+ ],
138
+ detectFunctionCalls: false,
139
+ rerender: {
140
+ triggers: [
141
+ LlamaText(new SpecialTokensText("<|end|>"))
142
+ ],
143
+ action: "closeResponseItem"
144
+ }
145
+ };
146
+ return {
147
+ contextText,
148
+ stopGenerationTriggers: [
149
+ LlamaText(new SpecialToken("EOS")),
150
+ LlamaText(new SpecialTokensText("<|return|>")),
151
+ LlamaText("<|return|>")
152
+ ],
153
+ prefixTriggers: [
154
+ {
155
+ type: "segment",
156
+ segmentType: "thought",
157
+ triggers: [
158
+ LlamaText(new SpecialTokensText("<|channel|>analysis<|message|>"))
159
+ ]
160
+ }, {
161
+ type: "segment",
162
+ segmentType: "comment",
163
+ triggers: [
164
+ // the trigger here includes the `<|message|>` part
165
+ // to not conflict with the `<|channel|>commentary to=` prefix used for function calls
166
+ LlamaText(new SpecialTokensText("<|channel|>commentary<|message|>"))
167
+ ]
168
+ }, {
169
+ type: "response",
170
+ triggers: [
171
+ LlamaText(new SpecialTokensText("<|channel|>final"))
172
+ ],
173
+ inject: LlamaText(new SpecialTokensText("<|message|>"))
174
+ },
175
+ ...(!hasFunctions ? [] : [{
176
+ type: "functionCall",
177
+ triggers: [
178
+ LlamaText(new SpecialTokensText("<|channel|>commentary to="))
179
+ ],
180
+ replaceTrigger: true,
181
+ inject: LlamaText(new SpecialTokensText("<|channel|>commentary"))
182
+ }, {
183
+ type: "functionCall",
184
+ triggers: [
185
+ LlamaText(new SpecialTokensText("<|channel|>analysis to="))
186
+ ],
187
+ replaceTrigger: true,
188
+ inject: LlamaText(new SpecialTokensText("<|channel|>analysis"))
189
+ }])
190
+ ],
191
+ noPrefixTrigger: {
192
+ type: "response",
193
+ inject: LlamaText(new SpecialTokensText("<|channel|>final<|message|>"))
194
+ },
195
+ detectFunctionCalls: false,
196
+ rerender: {
197
+ triggers: [
198
+ LlamaText(new SpecialTokensText("<|end|>"))
199
+ ],
200
+ action: "closeResponseItem"
201
+ }
202
+ };
203
+ }
204
+ generateFunctionCall(name, params) {
205
+ const emptyCallParamsPlaceholder = this.settings.functions.call.emptyCallParamsPlaceholder;
206
+ return LlamaText([
207
+ new SpecialTokensText("<|start|>assistant<|channel|>commentary to="),
208
+ "functions.", name,
209
+ this.settings.functions.call.paramsPrefix,
210
+ params === undefined
211
+ ? (emptyCallParamsPlaceholder === undefined || emptyCallParamsPlaceholder === "")
212
+ ? ""
213
+ : jsonDumps(emptyCallParamsPlaceholder)
214
+ : jsonDumps(params),
215
+ this.settings.functions.call.suffix
216
+ ]);
217
+ }
218
+ generateFunctionCallResult(functionName, functionParams, result) {
219
+ return LlamaText([
220
+ new SpecialTokensText("<|start|>"),
221
+ "functions.", functionName,
222
+ new SpecialTokensText(" to=assistant<|channel|>commentary<|message|>"),
223
+ (result === undefined
224
+ ? ""
225
+ : jsonDumps(result)),
226
+ new SpecialTokensText("<|end|>")
227
+ ]);
228
+ }
229
+ generateModelResponseText(modelResponse, useRawValues = true) {
230
+ const { res } = this._getModelResponse(modelResponse, useRawValues, false, false);
231
+ const [start, ...rest] = res.values;
232
+ let newStart = start;
233
+ let newEnd = rest.pop();
234
+ if (newStart instanceof SpecialTokensText && newStart.value.startsWith("<|start|>assistant"))
235
+ newStart = new SpecialTokensText(newStart.value.slice("<|start|>assistant".length));
236
+ if (newEnd instanceof SpecialTokensText && newEnd.value.startsWith("<|end|>"))
237
+ newEnd = new SpecialTokensText(newEnd.value.slice("<|end|>".length));
238
+ else if (newEnd instanceof SpecialTokensText && newEnd.value.startsWith("<|return|>"))
239
+ newEnd = new SpecialTokensText(newEnd.value.slice("<|return|>".length));
240
+ return LlamaText([
241
+ newStart ?? [],
242
+ ...rest,
243
+ newEnd ?? []
244
+ ]);
245
+ }
246
+ generateAvailableFunctionsSystemText(availableFunctions, { documentParams = true }) {
247
+ const functionsDocumentationGenerator = new ChatModelFunctionsDocumentationGenerator(availableFunctions);
248
+ if (!functionsDocumentationGenerator.hasAnyFunctions)
249
+ return LlamaText([]);
250
+ return LlamaText.joinValues("\n", [
251
+ "# Tools",
252
+ "",
253
+ "## functions",
254
+ "",
255
+ "namespace functions {",
256
+ "",
257
+ functionsDocumentationGenerator
258
+ .getTypeScriptFunctionTypes({ documentParams })
259
+ .split("\n")
260
+ .map((line) => line.trim())
261
+ .join("\n"),
262
+ "",
263
+ "} // namespace functions"
264
+ ]);
265
+ }
266
+ /** @internal */
267
+ _getFirstDeveloperMessage(systemPrompt, availableFunctions, { documentParams = true } = {}) {
268
+ const functionsDocumentationGenerator = new ChatModelFunctionsDocumentationGenerator(availableFunctions);
269
+ if (!functionsDocumentationGenerator.hasAnyFunctions && systemPrompt.values.length === 0)
270
+ return LlamaText([]);
271
+ if (!functionsDocumentationGenerator.hasAnyFunctions)
272
+ return LlamaText([
273
+ this._jinjaFlags.useSpecialTokensForFullSystemMessage
274
+ ? new SpecialTokensText("# Instructions\n\n")
275
+ : "# Instruction\n\n",
276
+ systemPrompt
277
+ ]);
278
+ return LlamaText([
279
+ this._jinjaFlags.useSpecialTokensForFullSystemMessage
280
+ ? new SpecialTokensText("# Instructions\n\n")
281
+ : "# Instructions\n\n",
282
+ systemPrompt.values.length > 0
283
+ ? [systemPrompt, "\n\n"]
284
+ : [],
285
+ this.generateAvailableFunctionsSystemText(availableFunctions ?? {}, { documentParams })
286
+ ]);
287
+ }
288
+ /** @internal */
289
+ _getModelResponse(modelResponse, useRawValues, isLastItem, keepOnlyLastThought) {
290
+ const res = [];
291
+ let canEnableTriggers = true;
292
+ for (let index = 0; index < modelResponse.length; index++) {
293
+ const isLastResponse = index === modelResponse.length - 1;
294
+ const response = modelResponse[index];
295
+ if (response == null)
296
+ continue;
297
+ else if (response === "" && (!isLastResponse || !isLastItem))
298
+ continue;
299
+ if (typeof response === "string") {
300
+ if (isLastItem && isLastResponse) {
301
+ if (response === "" && !this._jinjaFlags.emptyLastModelResponseIsFinalMessage)
302
+ canEnableTriggers = true;
303
+ else if (!this._jinjaFlags.useNonFinalFinalMessage) {
304
+ res.push(LlamaText([
305
+ new SpecialTokensText("<|start|>assistant<|channel|>final<|message|>"),
306
+ response
307
+ ]));
308
+ canEnableTriggers = false;
309
+ }
310
+ else {
311
+ res.push(LlamaText([
312
+ new SpecialTokensText("<|start|>assistant<|message|>"),
313
+ response
314
+ ]));
315
+ canEnableTriggers = false;
316
+ }
317
+ }
318
+ else if (!this._jinjaFlags.noFinalMessages && (isLastResponse || !this._jinjaFlags.disableNonFinalFinalMessages))
319
+ res.push(LlamaText([
320
+ new SpecialTokensText("<|start|>assistant<|channel|>final<|message|>"),
321
+ response,
322
+ new SpecialTokensText("<|end|>")
323
+ ]));
324
+ else
325
+ res.push(LlamaText([
326
+ new SpecialTokensText("<|start|>assistant<|message|>"),
327
+ response,
328
+ new SpecialTokensText("<|end|>")
329
+ ]));
330
+ }
331
+ else if (response.type === "segment") {
332
+ if (response.ended && response.raw != null && useRawValues)
333
+ res.push(LlamaText([
334
+ new SpecialTokensText("<|start|>assistant"),
335
+ LlamaText.fromJSON(response.raw)
336
+ ]));
337
+ else if (response.segmentType === "thought") {
338
+ if (keepOnlyLastThought && !isLastItem)
339
+ continue;
340
+ res.push(LlamaText([
341
+ new SpecialTokensText("<|start|>assistant<|channel|>analysis<|message|>"),
342
+ response.text,
343
+ (isLastItem && !response.ended)
344
+ ? LlamaText([])
345
+ : new SpecialTokensText("<|end|>")
346
+ ]));
347
+ if (isLastItem && isLastResponse && !response.ended)
348
+ canEnableTriggers = false;
349
+ }
350
+ else if (response.segmentType === "comment") {
351
+ res.push(LlamaText([
352
+ new SpecialTokensText("<|start|>assistant<|channel|>commentary<|message|>"),
353
+ response.text,
354
+ (isLastItem && !response.ended)
355
+ ? LlamaText([])
356
+ : new SpecialTokensText("<|end|>")
357
+ ]));
358
+ if (isLastItem && isLastResponse && !response.ended)
359
+ canEnableTriggers = false;
360
+ }
361
+ else
362
+ void response.segmentType;
363
+ }
364
+ else if (response.type === "functionCall") {
365
+ res.push(LlamaText([
366
+ (response.rawCall != null && useRawValues)
367
+ ? LlamaText.fromJSON(response.rawCall)
368
+ : this.generateFunctionCall(response.name, response.params),
369
+ this.generateFunctionCallResult(response.name, response.params, response.result)
370
+ ]));
371
+ }
372
+ else
373
+ void response;
374
+ }
375
+ const needsTriggers = canEnableTriggers && isLastItem;
376
+ if (needsTriggers)
377
+ res.push(LlamaText([
378
+ new SpecialTokensText("<|start|>assistant")
379
+ ]));
380
+ return {
381
+ res: LlamaText(res),
382
+ needsTriggers
383
+ };
384
+ }
385
+ /** @internal */
386
+ _getPreamble(hasFunctions) {
387
+ const formatCutoff = (date, timezone) => {
388
+ const month = date.toLocaleDateString("en-US", { month: "numeric", timeZone: timezone }).padStart(2, "0");
389
+ const year = date.toLocaleDateString("en-US", { year: "numeric", timeZone: timezone }).padStart(4, "0");
390
+ return `${year}-${month}`;
391
+ };
392
+ const lines = [];
393
+ if (this.modelIdentity != null && this.modelIdentity !== "")
394
+ lines.push(this.modelIdentity);
395
+ if (this.cuttingKnowledgeDate != null) {
396
+ const date = this.cuttingKnowledgeDate instanceof Function
397
+ ? this.cuttingKnowledgeDate()
398
+ : this.cuttingKnowledgeDate;
399
+ lines.push(`Knowledge cutoff: ${formatCutoff(date, "UTC")}`);
400
+ if (this._jinjaFlags.formatting === 1)
401
+ lines.push([lines.shift(), lines.shift()].filter(Boolean).join(""));
402
+ }
403
+ if (this.todayDate != null) {
404
+ const date = this.todayDate instanceof Function
405
+ ? this.todayDate()
406
+ : this.todayDate;
407
+ lines.push(`Current date: ${formatDate(date, undefined)}`);
408
+ }
409
+ if (this.reasoningEffort != null) {
410
+ if (lines.length > 0)
411
+ lines.push("");
412
+ if (this._jinjaFlags.formatting === 1)
413
+ lines.push(`reasoning: ${this.reasoningEffort}`);
414
+ else
415
+ lines.push(`Reasoning: ${this.reasoningEffort}`);
416
+ }
417
+ if (this.requiredChannels.analysis || this.requiredChannels.commentary || this.requiredChannels.final) {
418
+ const channels = [
419
+ ...(this.requiredChannels.analysis ? ["analysis"] : []),
420
+ ...(this.requiredChannels.commentary ? ["commentary"] : []),
421
+ ...(this.requiredChannels.final ? ["final"] : [])
422
+ ];
423
+ if (lines.length > 0)
424
+ lines.push("");
425
+ lines.push(`# Valid channels: ${channels.join(", ")}. Channel must be included for every message.`);
426
+ if ((this.requiredChannels.commentary && hasFunctions) || this._jinjaFlags.formatting === 1)
427
+ lines.push("Calls to these tools must go to the commentary channel: 'functions'.");
428
+ }
429
+ return LlamaText([
430
+ new SpecialTokensText("<|start|>system<|message|>"),
431
+ this._jinjaFlags.useSpecialTokensForFullSystemMessage
432
+ ? new SpecialTokensText(lines.join("\n"))
433
+ : lines.join("\n"),
434
+ new SpecialTokensText("<|end|>")
435
+ ]);
436
+ }
437
+ /** @internal */
438
+ static _getOptionConfigurationsToTestIfCanSupersedeJinjaTemplate() {
439
+ const jinjaParameters = {
440
+ "model_identity": defaultModelIdentity,
441
+ "reasoning_effort": defaultReasoningEffort
442
+ };
443
+ return [
444
+ [{}, {}],
445
+ [{ _jinjaFlags: { emptyLastModelResponseIsFinalMessage: true } }, {}],
446
+ [{}, {}, { additionalRenderParameters: jinjaParameters }],
447
+ [{ _jinjaFlags: { emptyLastModelResponseIsFinalMessage: true } }, {}, { additionalRenderParameters: jinjaParameters }],
448
+ [{ _jinjaFlags: { useSpecialTokensForFullSystemMessage: true } }, {}, { additionalRenderParameters: jinjaParameters }],
449
+ [
450
+ { _jinjaFlags: { emptyLastModelResponseIsFinalMessage: true, useSpecialTokensForFullSystemMessage: true } },
451
+ {},
452
+ { additionalRenderParameters: jinjaParameters }
453
+ ],
454
+ [
455
+ {
456
+ _jinjaFlags: {
457
+ emptyLastModelResponseIsFinalMessage: true,
458
+ useSpecialTokensForFullSystemMessage: true,
459
+ disableNonFinalFinalMessages: true
460
+ }
461
+ },
462
+ {},
463
+ { additionalRenderParameters: jinjaParameters }
464
+ ],
465
+ [
466
+ {
467
+ _jinjaFlags: {
468
+ emptyLastModelResponseIsFinalMessage: true,
469
+ useSpecialTokensForFullSystemMessage: true,
470
+ disableNonFinalFinalMessages: true,
471
+ useNonFinalFinalMessage: true
472
+ }
473
+ },
474
+ {},
475
+ { additionalRenderParameters: jinjaParameters }
476
+ ],
477
+ [
478
+ {
479
+ _jinjaFlags: {
480
+ emptyLastModelResponseIsFinalMessage: true,
481
+ useSpecialTokensForFullSystemMessage: true,
482
+ useNonFinalFinalMessage: true
483
+ }
484
+ },
485
+ {},
486
+ { additionalRenderParameters: jinjaParameters }
487
+ ],
488
+ [
489
+ {
490
+ _jinjaFlags: {
491
+ emptyLastModelResponseIsFinalMessage: true,
492
+ useSpecialTokensForFullSystemMessage: true,
493
+ useNonFinalFinalMessage: true,
494
+ noFinalMessages: true
495
+ }
496
+ },
497
+ {},
498
+ { additionalRenderParameters: jinjaParameters }
499
+ ],
500
+ [
501
+ {
502
+ _jinjaFlags: {
503
+ emptyLastModelResponseIsFinalMessage: true,
504
+ useSpecialTokensForFullSystemMessage: true,
505
+ useNonFinalFinalMessage: true,
506
+ noFinalMessages: true,
507
+ formatting: 1
508
+ }
509
+ },
510
+ {},
511
+ { additionalRenderParameters: jinjaParameters }
512
+ ],
513
+ [{ todayDate: null }, {}, {}],
514
+ [{ cuttingKnowledgeDate: null }, {}, {}],
515
+ [{ reasoningEffort: null }, {}, {}],
516
+ [{ todayDate: null, cuttingKnowledgeDate: null }, {}, {}],
517
+ [{ todayDate: null, cuttingKnowledgeDate: null, reasoningEffort: null }, {}, {}]
518
+ ];
519
+ }
520
+ }
521
+ function formatDate(date, timezone) {
522
+ const day = date.toLocaleDateString("en-US", { day: "numeric", timeZone: timezone }).padStart(2, "0");
523
+ const month = date.toLocaleDateString("en-US", { month: "numeric", timeZone: timezone }).padStart(2, "0");
524
+ const year = date.toLocaleDateString("en-US", { year: "numeric", timeZone: timezone }).padStart(4, "0");
525
+ return `${year}-${month}-${day}`;
526
+ }
527
+ //# sourceMappingURL=HarmonyChatWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HarmonyChatWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/HarmonyChatWrapper.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,13 @@ import { MistralChatWrapper } from "../MistralChatWrapper.js";
15
15
  import { Tokenizer } from "../../types.js";
16
16
  import { LlamaModel } from "../../evaluator/LlamaModel/LlamaModel.js";
17
17
  import { QwenChatWrapper } from "../QwenChatWrapper.js";
18
+ import { HarmonyChatWrapper } from "../HarmonyChatWrapper.js";
18
19
  import type { GgufFileInfo } from "../../gguf/types/GgufFileInfoTypes.js";
19
- export declare const specializedChatWrapperTypeNames: readonly ["general", "deepSeek", "qwen", "llama3.2-lightweight", "llama3.1", "llama3", "llama2Chat", "mistral", "alpacaChat", "functionary", "chatML", "falconChat", "gemma"];
20
+ export declare const specializedChatWrapperTypeNames: readonly ["general", "deepSeek", "qwen", "llama3.2-lightweight", "llama3.1", "llama3", "llama2Chat", "mistral", "alpacaChat", "functionary", "chatML", "falconChat", "gemma", "harmony"];
20
21
  export type SpecializedChatWrapperTypeName = (typeof specializedChatWrapperTypeNames)[number];
21
22
  export declare const templateChatWrapperTypeNames: readonly ["template", "jinjaTemplate"];
22
23
  export type TemplateChatWrapperTypeName = (typeof templateChatWrapperTypeNames)[number];
23
- export declare const resolvableChatWrapperTypeNames: readonly ["auto", "general", "deepSeek", "qwen", "llama3.2-lightweight", "llama3.1", "llama3", "llama2Chat", "mistral", "alpacaChat", "functionary", "chatML", "falconChat", "gemma", "template", "jinjaTemplate"];
24
+ export declare const resolvableChatWrapperTypeNames: readonly ["auto", "general", "deepSeek", "qwen", "llama3.2-lightweight", "llama3.1", "llama3", "llama2Chat", "mistral", "alpacaChat", "functionary", "chatML", "falconChat", "gemma", "harmony", "template", "jinjaTemplate"];
24
25
  export type ResolvableChatWrapperTypeName = (typeof resolvableChatWrapperTypeNames)[number];
25
26
  export declare const chatWrappers: Readonly<{
26
27
  readonly general: typeof GeneralChatWrapper;
@@ -36,6 +37,7 @@ export declare const chatWrappers: Readonly<{
36
37
  readonly chatML: typeof ChatMLChatWrapper;
37
38
  readonly falconChat: typeof FalconChatWrapper;
38
39
  readonly gemma: typeof GemmaChatWrapper;
40
+ readonly harmony: typeof HarmonyChatWrapper;
39
41
  readonly template: typeof TemplateChatWrapper;
40
42
  readonly jinjaTemplate: typeof JinjaTemplateChatWrapper;
41
43
  }>;
@@ -17,11 +17,12 @@ import { MistralChatWrapper } from "../MistralChatWrapper.js";
17
17
  import { includesText } from "../../utils/includesText.js";
18
18
  import { LlamaModel } from "../../evaluator/LlamaModel/LlamaModel.js";
19
19
  import { QwenChatWrapper } from "../QwenChatWrapper.js";
20
+ import { HarmonyChatWrapper } from "../HarmonyChatWrapper.js";
20
21
  import { isJinjaTemplateEquivalentToSpecializedChatWrapper } from "./isJinjaTemplateEquivalentToSpecializedChatWrapper.js";
21
22
  import { getModelLinageNames } from "./getModelLinageNames.js";
22
23
  export const specializedChatWrapperTypeNames = Object.freeze([
23
24
  "general", "deepSeek", "qwen", "llama3.2-lightweight", "llama3.1", "llama3", "llama2Chat", "mistral", "alpacaChat", "functionary",
24
- "chatML", "falconChat", "gemma"
25
+ "chatML", "falconChat", "gemma", "harmony"
25
26
  ]);
26
27
  export const templateChatWrapperTypeNames = Object.freeze([
27
28
  "template", "jinjaTemplate"
@@ -45,11 +46,15 @@ export const chatWrappers = Object.freeze({
45
46
  "chatML": ChatMLChatWrapper,
46
47
  "falconChat": FalconChatWrapper,
47
48
  "gemma": GemmaChatWrapper,
49
+ "harmony": HarmonyChatWrapper,
48
50
  "template": TemplateChatWrapper,
49
51
  "jinjaTemplate": JinjaTemplateChatWrapper
50
52
  });
51
53
  const chatWrapperToConfigType = new Map(Object.entries(chatWrappers)
52
54
  .map(([configType, Wrapper]) => ([Wrapper, configType])));
55
+ const specializedChatWrapperRelatedTexts = {
56
+ "harmony": ["gpt", "gpt-oss"]
57
+ };
53
58
  export function resolveChatWrapper(options, modelOptions) {
54
59
  if (options instanceof LlamaModel)
55
60
  return resolveChatWrapper({
@@ -189,11 +194,15 @@ export function resolveChatWrapper(options, modelOptions) {
189
194
  return createSpecializedChatWrapper(MistralChatWrapper);
190
195
  else if (includesText(modelNames, ["Gemma", "Gemma 2"]))
191
196
  return createSpecializedChatWrapper(GemmaChatWrapper);
197
+ else if (includesText(modelNames, ["gpt-oss", "Gpt Oss", "Gpt-Oss", "openai_gpt-oss", "Openai_Gpt Oss", "openai.gpt-oss", "Openai.Gpt Oss"]))
198
+ return createSpecializedChatWrapper(HarmonyChatWrapper);
192
199
  }
193
200
  // try to find a pattern in the Jinja template to resolve to a specialized chat wrapper,
194
201
  // with a logic similar to `llama.cpp`'s `llama_chat_apply_template_internal` function
195
202
  if (modelJinjaTemplate != null && modelJinjaTemplate.trim() !== "") {
196
- if (modelJinjaTemplate.includes("<|im_start|>"))
203
+ if (modelJinjaTemplate.includes("<|start|>") && modelJinjaTemplate.includes("<|channel|>"))
204
+ return createSpecializedChatWrapper(HarmonyChatWrapper);
205
+ else if (modelJinjaTemplate.includes("<|im_start|>"))
197
206
  return createSpecializedChatWrapper(ChatMLChatWrapper);
198
207
  else if (modelJinjaTemplate.includes("[INST]"))
199
208
  return createSpecializedChatWrapper(Llama2ChatWrapper, {
@@ -288,16 +297,22 @@ function orderChatWrapperNamesByAssumedCompatibilityWithModel(chatWrapperNames,
288
297
  return existsPoints + (((index + 1) / fullText.length) * positionPoints);
289
298
  return 0;
290
299
  }
300
+ function getPointsForWrapperName(wrapperName, fullText, existsPoints, positionPoints) {
301
+ const additionalNames = specializedChatWrapperRelatedTexts[wrapperName] ?? [];
302
+ return [wrapperName, ...additionalNames]
303
+ .map((pattern) => getPointsForTextMatch(pattern, fullText, existsPoints, positionPoints))
304
+ .reduce((res, item) => Math.max(res, item), 0);
305
+ }
291
306
  const modelName = fileInfo?.metadata?.general?.name;
292
307
  return chatWrapperNames
293
308
  .slice()
294
309
  .sort((a, b) => {
295
310
  let aPoints = 0;
296
311
  let bPoints = 0;
297
- aPoints += getPointsForTextMatch(a, modelName, rankPoints.modelName, rankPoints.modelNamePosition);
298
- bPoints += getPointsForTextMatch(b, modelName, rankPoints.modelName, rankPoints.modelNamePosition);
299
- aPoints += getPointsForTextMatch(a, filename, rankPoints.fileName, rankPoints.fileNamePosition);
300
- bPoints += getPointsForTextMatch(b, filename, rankPoints.fileName, rankPoints.fileNamePosition);
312
+ aPoints += getPointsForWrapperName(a, modelName, rankPoints.modelName, rankPoints.modelNamePosition);
313
+ bPoints += getPointsForWrapperName(b, modelName, rankPoints.modelName, rankPoints.modelNamePosition);
314
+ aPoints += getPointsForWrapperName(a, filename, rankPoints.fileName, rankPoints.fileNamePosition);
315
+ bPoints += getPointsForWrapperName(b, filename, rankPoints.fileName, rankPoints.fileNamePosition);
301
316
  return bPoints - aPoints;
302
317
  });
303
318
  }