gpt-tokenizer 2.3.0 → 2.4.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 (88) hide show
  1. package/README.md +13 -1
  2. package/cjs/BytePairEncodingCore.d.ts +30 -17
  3. package/cjs/BytePairEncodingCore.js +202 -134
  4. package/cjs/BytePairEncodingCore.js.map +1 -1
  5. package/cjs/GptEncoding.d.ts +6 -4
  6. package/cjs/GptEncoding.js +48 -14
  7. package/cjs/GptEncoding.js.map +1 -1
  8. package/cjs/encoding/cl100k_base.d.ts +1 -1
  9. package/cjs/encoding/o200k_base.d.ts +1 -1
  10. package/cjs/encoding/p50k_base.d.ts +1 -1
  11. package/cjs/encoding/p50k_edit.d.ts +1 -1
  12. package/cjs/encoding/r50k_base.d.ts +1 -1
  13. package/cjs/model/gpt-3.5-turbo-0125.d.ts +1 -1
  14. package/cjs/model/gpt-3.5-turbo-0301.d.ts +1 -1
  15. package/cjs/model/gpt-3.5-turbo-0613.d.ts +1 -1
  16. package/cjs/model/gpt-3.5-turbo-1106.d.ts +1 -1
  17. package/cjs/model/gpt-3.5-turbo-16k-0613.d.ts +1 -1
  18. package/cjs/model/gpt-3.5-turbo-16k.d.ts +1 -1
  19. package/cjs/model/gpt-3.5-turbo-instruct-0914.d.ts +1 -1
  20. package/cjs/model/gpt-3.5-turbo-instruct.d.ts +1 -1
  21. package/cjs/model/gpt-3.5-turbo.d.ts +1 -1
  22. package/cjs/model/gpt-4-0125-preview.d.ts +1 -1
  23. package/cjs/model/gpt-4-0314.d.ts +1 -1
  24. package/cjs/model/gpt-4-0613.d.ts +1 -1
  25. package/cjs/model/gpt-4-1106-preview.d.ts +1 -1
  26. package/cjs/model/gpt-4-32k-0314.d.ts +1 -1
  27. package/cjs/model/gpt-4-32k-0613.d.ts +1 -1
  28. package/cjs/model/gpt-4-32k.d.ts +1 -1
  29. package/cjs/model/gpt-4-turbo-2024-04-09.d.ts +1 -1
  30. package/cjs/model/gpt-4-turbo-preview.d.ts +1 -1
  31. package/cjs/model/gpt-4-turbo.d.ts +1 -1
  32. package/cjs/model/gpt-4-vision-preview.d.ts +1 -1
  33. package/cjs/model/gpt-4.d.ts +1 -1
  34. package/cjs/model/gpt-4o-2024-05-13.d.ts +1 -1
  35. package/cjs/model/gpt-4o-2024-08-06.d.ts +1 -1
  36. package/cjs/model/gpt-4o-mini-2024-07-18.d.ts +1 -1
  37. package/cjs/model/gpt-4o-mini.d.ts +1 -1
  38. package/cjs/model/gpt-4o.d.ts +1 -1
  39. package/dist/cl100k_base.js +1 -1
  40. package/dist/cl100k_base.js.map +1 -1
  41. package/dist/o200k_base.js +1 -1
  42. package/dist/o200k_base.js.map +1 -1
  43. package/dist/p50k_base.js +1 -1
  44. package/dist/p50k_base.js.map +1 -1
  45. package/dist/p50k_edit.js +1 -1
  46. package/dist/p50k_edit.js.map +1 -1
  47. package/dist/r50k_base.js +1 -1
  48. package/dist/r50k_base.js.map +1 -1
  49. package/esm/BytePairEncodingCore.d.ts +30 -17
  50. package/esm/BytePairEncodingCore.js +201 -133
  51. package/esm/BytePairEncodingCore.js.map +1 -1
  52. package/esm/GptEncoding.d.ts +6 -4
  53. package/esm/GptEncoding.js +49 -15
  54. package/esm/GptEncoding.js.map +1 -1
  55. package/esm/encoding/cl100k_base.d.ts +1 -1
  56. package/esm/encoding/o200k_base.d.ts +1 -1
  57. package/esm/encoding/p50k_base.d.ts +1 -1
  58. package/esm/encoding/p50k_edit.d.ts +1 -1
  59. package/esm/encoding/r50k_base.d.ts +1 -1
  60. package/esm/model/gpt-3.5-turbo-0125.d.ts +1 -1
  61. package/esm/model/gpt-3.5-turbo-0301.d.ts +1 -1
  62. package/esm/model/gpt-3.5-turbo-0613.d.ts +1 -1
  63. package/esm/model/gpt-3.5-turbo-1106.d.ts +1 -1
  64. package/esm/model/gpt-3.5-turbo-16k-0613.d.ts +1 -1
  65. package/esm/model/gpt-3.5-turbo-16k.d.ts +1 -1
  66. package/esm/model/gpt-3.5-turbo-instruct-0914.d.ts +1 -1
  67. package/esm/model/gpt-3.5-turbo-instruct.d.ts +1 -1
  68. package/esm/model/gpt-3.5-turbo.d.ts +1 -1
  69. package/esm/model/gpt-4-0125-preview.d.ts +1 -1
  70. package/esm/model/gpt-4-0314.d.ts +1 -1
  71. package/esm/model/gpt-4-0613.d.ts +1 -1
  72. package/esm/model/gpt-4-1106-preview.d.ts +1 -1
  73. package/esm/model/gpt-4-32k-0314.d.ts +1 -1
  74. package/esm/model/gpt-4-32k-0613.d.ts +1 -1
  75. package/esm/model/gpt-4-32k.d.ts +1 -1
  76. package/esm/model/gpt-4-turbo-2024-04-09.d.ts +1 -1
  77. package/esm/model/gpt-4-turbo-preview.d.ts +1 -1
  78. package/esm/model/gpt-4-turbo.d.ts +1 -1
  79. package/esm/model/gpt-4-vision-preview.d.ts +1 -1
  80. package/esm/model/gpt-4.d.ts +1 -1
  81. package/esm/model/gpt-4o-2024-05-13.d.ts +1 -1
  82. package/esm/model/gpt-4o-2024-08-06.d.ts +1 -1
  83. package/esm/model/gpt-4o-mini-2024-07-18.d.ts +1 -1
  84. package/esm/model/gpt-4o-mini.d.ts +1 -1
  85. package/esm/model/gpt-4o.d.ts +1 -1
  86. package/package.json +1 -1
  87. package/src/BytePairEncodingCore.ts +260 -173
  88. package/src/GptEncoding.ts +82 -20
@@ -4,28 +4,41 @@ export interface BytePairEncodingConfig {
4
4
  specialTokenMapping?: Map<string, number>;
5
5
  tokenSplitRegex: RegExp;
6
6
  }
7
+ export declare const decoder: TextDecoder;
7
8
  export declare class BytePairEncodingCore {
8
- readonly bytePairEncoderSize: number;
9
- private bytePairEncoder;
10
- private bytePairEncoderSortedLookup;
11
- private bytePairRanksDecoder;
9
+ readonly mergeableBytePairRankCount: number;
10
+ /**
11
+ * an array where the index is the BPE rank,
12
+ * and the value is the string or the array of bytes that it decodes to
13
+ * it may contain holes if token is unused
14
+ */
15
+ private bytePairRankDecoder;
16
+ private bytePairNonUtfRankDecoder;
17
+ private bytePairNonUtfSortedEncoder;
18
+ /**
19
+ * a reverse map of the bytePairRankDecoder,
20
+ * where the key is the string and the value is the rank
21
+ * values that cannot be represented as a string are present in `bytePairNonUtfSortedEncoder`
22
+ */
23
+ private bytePairStringRankEncoder;
12
24
  private tokenSplitRegex;
13
25
  private specialTokensEncoder;
14
26
  private specialTokensDecoder;
15
27
  private specialTokenPatternRegex;
16
- private stringDecoder;
17
28
  private textEncoder;
18
29
  constructor({ mergeableBytePairRanks: bytePairEncoder, specialTokenMapping: specialTokenEncoder, tokenSplitRegex, }: BytePairEncodingConfig);
19
- getBpeRankFromString(key: string): number | undefined;
20
- getBpeRankFromStringOrThrow(key: string): number;
21
- getBpeRankFromBytes(key: Uint8Array): number | undefined;
22
- getBpeRankFromBytesOrThrow(key: Uint8Array): number;
23
- binarySearch(key: Uint8Array): number;
24
- encodeNative(text: string, allowedSpecial?: Set<string>): Generator<number[], number, undefined>;
25
- findNextSpecialStartIndex(text: string, allowedSpecial: Set<string> | undefined, startIndex: number, specialRegex: RegExp): number | undefined;
26
- decodeNative(tokens: Iterable<number>): Generator<Uint8Array | string, void, void>;
27
- decodeNativeAsync(tokens: AsyncIterable<number>): AsyncGenerator<Uint8Array | string>;
28
- tryDecodeToken(tokenRank: number): Uint8Array | string | undefined;
29
- bytePairEncode(input: string): number[];
30
- bytePairMerge(piece: Uint8Array, getByteForRange: (start: number, end: number) => number): number[];
30
+ encodeNativeGenerator(text: string, allowedSpecial?: Set<string>): Generator<number[], number, undefined>;
31
+ encodeNative(text: string, allowedSpecial?: Set<string>): number[];
32
+ decodeNativeGenerator(tokens: Iterable<number>): Generator<Uint8Array | string, void, void>;
33
+ decodeNative(tokens: Iterable<number>): string;
34
+ decodeNativeAsyncIterable(tokens: AsyncIterable<number>): AsyncGenerator<Uint8Array | string>;
35
+ private getBpeRankFromString;
36
+ private getBpeRankFromStringOrThrow;
37
+ private getBpeRankFromBytes;
38
+ private getBpeRankFromBytesOrThrow;
39
+ private binarySearch;
40
+ private findNextSpecialStartIndex;
41
+ private tryDecodeToken;
42
+ private bytePairEncode;
43
+ private bytePairMerge;
31
44
  }
@@ -1,50 +1,175 @@
1
1
  /* eslint-disable no-continue */
2
2
  import { compareUint8Arrays, isAscii, tryConvertToString } from './utfUtil.js';
3
3
  import { escapeRegExp } from './util.js';
4
+ const emptyBuffer = new Uint8Array(0);
5
+ export const decoder = new TextDecoder('utf8');
4
6
  export class BytePairEncodingCore {
5
- bytePairEncoderSize;
6
- bytePairEncoder;
7
- bytePairEncoderSortedLookup;
8
- bytePairRanksDecoder = new Map();
7
+ mergeableBytePairRankCount;
8
+ /**
9
+ * an array where the index is the BPE rank,
10
+ * and the value is the string or the array of bytes that it decodes to
11
+ * it may contain holes if token is unused
12
+ */
13
+ bytePairRankDecoder;
14
+ bytePairNonUtfRankDecoder = new Map();
15
+ bytePairNonUtfSortedEncoder;
16
+ /**
17
+ * a reverse map of the bytePairRankDecoder,
18
+ * where the key is the string and the value is the rank
19
+ * values that cannot be represented as a string are present in `bytePairNonUtfSortedEncoder`
20
+ */
21
+ bytePairStringRankEncoder;
9
22
  tokenSplitRegex;
10
23
  specialTokensEncoder;
11
24
  specialTokensDecoder;
12
25
  specialTokenPatternRegex;
13
- stringDecoder;
14
26
  textEncoder = new TextEncoder();
15
27
  constructor({ mergeableBytePairRanks: bytePairEncoder, specialTokenMapping: specialTokenEncoder, tokenSplitRegex, }) {
16
- this.bytePairEncoder = bytePairEncoder;
17
- this.stringDecoder = new Map();
28
+ this.bytePairRankDecoder = bytePairEncoder;
29
+ this.bytePairStringRankEncoder = new Map();
18
30
  // size without array holes (which may be present in the encoder)
19
- this.bytePairEncoderSize = Object.keys(bytePairEncoder).length;
31
+ this.mergeableBytePairRankCount = Object.keys(bytePairEncoder).length;
20
32
  const binaryLookup = [];
21
33
  // forEach skips array holes:
22
34
  bytePairEncoder.forEach((value, rank) => {
23
35
  if (typeof value === 'string') {
24
- this.stringDecoder.set(value, rank);
36
+ this.bytePairStringRankEncoder.set(value, rank);
25
37
  return;
26
38
  }
27
39
  const byteArray = new Uint8Array(value);
28
40
  binaryLookup.push([byteArray, rank]);
29
- this.bytePairRanksDecoder.set(rank, byteArray);
41
+ this.bytePairNonUtfRankDecoder.set(rank, byteArray);
30
42
  });
31
- this.bytePairEncoderSortedLookup = binaryLookup.sort((a, b) => compareUint8Arrays(a[0], b[0]));
43
+ this.bytePairNonUtfSortedEncoder = binaryLookup.sort((a, b) => compareUint8Arrays(a[0], b[0]));
32
44
  this.specialTokensEncoder = specialTokenEncoder ?? new Map();
33
45
  this.specialTokensDecoder = specialTokenEncoder
34
46
  ? new Map([...specialTokenEncoder].map(([key, value]) => [value, key]))
35
47
  : new Map();
36
48
  this.tokenSplitRegex = tokenSplitRegex;
37
- const parts = [...this.specialTokensEncoder.keys()].map(escapeRegExp);
38
- const joinedParts = parts.join('|');
49
+ const escapedSpecialTokens = [...this.specialTokensEncoder.keys()].map(escapeRegExp);
50
+ const allSpecialTokensRegex = escapedSpecialTokens.join('|');
39
51
  try {
40
- this.specialTokenPatternRegex = new RegExp(joinedParts);
52
+ this.specialTokenPatternRegex = new RegExp(allSpecialTokensRegex);
41
53
  }
42
54
  catch {
43
55
  throw new Error('Invalid regular expression pattern.');
44
56
  }
45
57
  }
58
+ *encodeNativeGenerator(text, allowedSpecial) {
59
+ let startIndex = 0;
60
+ let lastTokenLength = 0;
61
+ while (true) {
62
+ const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex);
63
+ const endIndex = nextSpecialStartIndex !== undefined
64
+ ? nextSpecialStartIndex
65
+ : text.length;
66
+ const textSegment = text.slice(startIndex, endIndex - startIndex);
67
+ for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
68
+ const token = this.getBpeRankFromString(match);
69
+ if (token !== undefined) {
70
+ lastTokenLength = 1;
71
+ yield [token];
72
+ continue;
73
+ }
74
+ const tokens = this.bytePairEncode(match);
75
+ lastTokenLength = tokens.length;
76
+ yield tokens;
77
+ }
78
+ if (nextSpecialStartIndex !== undefined) {
79
+ const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
80
+ const specialTokenValue = this.specialTokensEncoder.get(specialToken);
81
+ if (specialTokenValue === undefined) {
82
+ throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
83
+ }
84
+ yield [specialTokenValue];
85
+ startIndex = nextSpecialStartIndex + specialToken.length;
86
+ lastTokenLength = 0;
87
+ }
88
+ else {
89
+ break;
90
+ }
91
+ }
92
+ return lastTokenLength;
93
+ }
94
+ encodeNative(text, allowedSpecial) {
95
+ let startIndex = 0;
96
+ const tokensArray = []; // Flat list to collect the tokens
97
+ // eslint-disable-next-line no-constant-condition
98
+ while (true) {
99
+ const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex);
100
+ const endIndex = nextSpecialStartIndex !== undefined
101
+ ? nextSpecialStartIndex
102
+ : text.length;
103
+ const textSegment = text.slice(startIndex, endIndex - startIndex);
104
+ for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
105
+ const token = this.getBpeRankFromString(match);
106
+ if (token !== undefined) {
107
+ tokensArray.push(token);
108
+ continue;
109
+ }
110
+ const tokens = this.bytePairEncode(match);
111
+ tokensArray.push(...tokens);
112
+ }
113
+ if (nextSpecialStartIndex !== undefined) {
114
+ const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
115
+ const specialTokenValue = this.specialTokensEncoder.get(specialToken);
116
+ if (specialTokenValue === undefined) {
117
+ throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
118
+ }
119
+ tokensArray.push(specialTokenValue);
120
+ startIndex = nextSpecialStartIndex + specialToken.length;
121
+ }
122
+ else {
123
+ break;
124
+ }
125
+ }
126
+ return tokensArray;
127
+ }
128
+ *decodeNativeGenerator(tokens) {
129
+ for (const token of tokens) {
130
+ const tokenBytes = this.tryDecodeToken(token);
131
+ if (tokenBytes) {
132
+ yield tokenBytes;
133
+ }
134
+ }
135
+ }
136
+ decodeNative(tokens) {
137
+ let decoded = '';
138
+ let intBuffer = emptyBuffer;
139
+ for (const token of tokens) {
140
+ const tokenBytes = this.tryDecodeToken(token);
141
+ if (tokenBytes === undefined) {
142
+ throw new Error(`Token ${token} is not in the byte pair encoder.`);
143
+ }
144
+ if (typeof tokenBytes === 'string') {
145
+ if (intBuffer !== emptyBuffer) {
146
+ decoded += decoder.decode(intBuffer, { stream: true });
147
+ intBuffer = emptyBuffer;
148
+ }
149
+ decoded += tokenBytes;
150
+ }
151
+ else {
152
+ const newBuffer = new Uint8Array(intBuffer.length + tokenBytes.length);
153
+ newBuffer.set(intBuffer);
154
+ newBuffer.set(tokenBytes, intBuffer.length);
155
+ intBuffer = newBuffer;
156
+ }
157
+ }
158
+ if (intBuffer !== emptyBuffer) {
159
+ decoded += decoder.decode(intBuffer, { stream: true });
160
+ }
161
+ return decoded;
162
+ }
163
+ async *decodeNativeAsyncIterable(tokens) {
164
+ for await (const token of tokens) {
165
+ const tokenBytesOrString = this.tryDecodeToken(token);
166
+ if (tokenBytesOrString) {
167
+ yield tokenBytesOrString;
168
+ }
169
+ }
170
+ }
46
171
  getBpeRankFromString(key) {
47
- return this.stringDecoder.get(key);
172
+ return this.bytePairStringRankEncoder.get(key);
48
173
  }
49
174
  getBpeRankFromStringOrThrow(key) {
50
175
  const value = this.getBpeRankFromString(key);
@@ -61,7 +186,7 @@ export class BytePairEncodingCore {
61
186
  // Perform binary search on the binary keys
62
187
  const index = this.binarySearch(key);
63
188
  if (index !== -1) {
64
- return this.bytePairEncoderSortedLookup[index][1];
189
+ return this.bytePairNonUtfSortedEncoder[index][1];
65
190
  }
66
191
  return undefined;
67
192
  }
@@ -75,13 +200,14 @@ export class BytePairEncodingCore {
75
200
  // Binary search on the binary keys
76
201
  binarySearch(key) {
77
202
  let low = 0;
78
- let high = this.bytePairEncoderSortedLookup.length - 1;
203
+ let high = this.bytePairNonUtfSortedEncoder.length - 1;
79
204
  while (low <= high) {
80
205
  // eslint-disable-next-line no-bitwise
81
206
  const mid = (low + high) >>> 1;
82
- const midKey = this.bytePairEncoderSortedLookup[mid][0];
207
+ const midKey = this.bytePairNonUtfSortedEncoder[mid][0];
83
208
  let cmp = 0;
84
- for (let i = 0; i < Math.min(midKey.length, key.length); i++) {
209
+ const maxLength = Math.min(midKey.length, key.length);
210
+ for (let i = 0; i < maxLength; i++) {
85
211
  cmp = midKey[i] - key[i];
86
212
  if (cmp !== 0)
87
213
  break;
@@ -101,80 +227,28 @@ export class BytePairEncodingCore {
101
227
  }
102
228
  return -1;
103
229
  }
104
- *encodeNative(text, allowedSpecial) {
105
- let startIndex = 0;
106
- let lastTokenLength = 0;
107
- while (true) {
108
- const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex, this.specialTokenPatternRegex);
109
- const endIndex = nextSpecialStartIndex !== undefined
110
- ? nextSpecialStartIndex
111
- : text.length;
112
- const textSegment = text.slice(startIndex, endIndex - startIndex);
113
- for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
114
- const token = this.getBpeRankFromString(match);
115
- if (token !== undefined) {
116
- lastTokenLength = 1;
117
- yield [token];
118
- continue;
119
- }
120
- const tokens = this.bytePairEncode(match);
121
- lastTokenLength = tokens.length;
122
- yield tokens;
123
- }
124
- if (nextSpecialStartIndex !== undefined) {
125
- const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
126
- const specialTokenValue = this.specialTokensEncoder.get(specialToken);
127
- if (specialTokenValue === undefined) {
128
- throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
129
- }
130
- yield [specialTokenValue];
131
- startIndex = nextSpecialStartIndex + specialToken.length;
132
- lastTokenLength = 0;
133
- }
134
- else {
135
- break;
136
- }
137
- }
138
- return lastTokenLength;
139
- }
140
- findNextSpecialStartIndex(text, allowedSpecial, startIndex, specialRegex) {
230
+ findNextSpecialStartIndex(text, allowedSpecial, startIndex) {
141
231
  let searchIndex = startIndex;
142
232
  // eslint-disable-next-line no-constant-condition
143
233
  while (true) {
144
- const nextSpecialMatch = specialRegex.exec(text.slice(Math.max(0, searchIndex)));
234
+ const nextSpecialMatch = this.specialTokenPatternRegex.exec(text.slice(Math.max(0, searchIndex)));
145
235
  if (!nextSpecialMatch) {
146
236
  return undefined;
147
237
  }
148
- const [specialToken] = nextSpecialMatch;
238
+ const specialToken = nextSpecialMatch[0];
149
239
  if (allowedSpecial?.has(specialToken)) {
150
240
  return nextSpecialMatch.index + searchIndex;
151
241
  }
152
242
  searchIndex = nextSpecialMatch.index + searchIndex + 1;
153
243
  }
154
244
  }
155
- *decodeNative(tokens) {
156
- for (const token of tokens) {
157
- const tokenBytes = this.tryDecodeToken(token);
158
- if (tokenBytes) {
159
- yield tokenBytes;
160
- }
161
- }
162
- }
163
- async *decodeNativeAsync(tokens) {
164
- for await (const token of tokens) {
165
- const tokenBytesOrString = this.tryDecodeToken(token);
166
- if (tokenBytesOrString) {
167
- yield tokenBytesOrString;
168
- }
169
- }
170
- }
171
245
  tryDecodeToken(tokenRank) {
172
- const value = this.bytePairEncoder[tokenRank];
246
+ const value = this.bytePairRankDecoder[tokenRank];
173
247
  if (typeof value === 'string') {
174
248
  return value;
175
249
  }
176
250
  if (typeof value === 'object') {
177
- const fromBinary = this.bytePairRanksDecoder.get(tokenRank);
251
+ const fromBinary = this.bytePairNonUtfRankDecoder.get(tokenRank);
178
252
  if (fromBinary) {
179
253
  return fromBinary;
180
254
  }
@@ -186,80 +260,74 @@ export class BytePairEncodingCore {
186
260
  return [this.getBpeRankFromStringOrThrow(input)];
187
261
  }
188
262
  const inputBytes = this.textEncoder.encode(input);
189
- return this.bytePairMerge(inputBytes, (start, end) => {
190
- const key = inputBytes.subarray(start, end);
191
- return this.getBpeRankFromBytesOrThrow(key);
192
- });
263
+ return this.bytePairMerge(inputBytes);
193
264
  }
194
265
  bytePairMerge(
195
266
  // Input array of bytes to process
196
- piece,
197
- // Function to apply to each final segment after merging
198
- getByteForRange) {
199
- // Create an array of partition objects. Each partition tracks the start index in 'piece'
200
- // and a rank value for adjacent pairs (initially set to positive infinity).
201
- const partitions = Array.from({ length: piece.length + 1 }, (_, i) => ({
202
- start: i,
203
- rank: Number.POSITIVE_INFINITY, // Rank starts at infinity (unmerged)
204
- }));
205
- // Helper function to get the rank of a byte pair starting at 'startIndex'.
206
- // 'skip' determines how far we look ahead (usually 0, for consecutive pairs).
207
- const getRank = (startIndex, skip) => {
208
- if (startIndex + skip + 2 >= partitions.length) {
209
- // Avoid out-of-bounds errors, return undefined when no valid pair exists
210
- return undefined;
267
+ piece) {
268
+ // 'starts' holds the start indices of each partition
269
+ const starts = [];
270
+ // 'ranks' holds the BPE ranks of each partition pair
271
+ const ranks = [];
272
+ // Helper function to get the rank of a byte pair starting at 'startIndex'
273
+ const getRank = (startIndex, pairStart = starts[startIndex], pairEnd = starts[startIndex + 2]) => {
274
+ if (pairEnd === undefined) {
275
+ // No valid pair exists
276
+ return Number.POSITIVE_INFINITY;
211
277
  }
212
- // Get the byte pair by extracting a subarray starting at 'startIndex' and ending at
213
- // the start of the partition after 'skip + 2'.
214
- const key = piece.subarray(partitions[startIndex].start, partitions[startIndex + skip + 2].start);
215
- // Retrieve the rank of this byte pair from the BPE rank function
216
- return this.getBpeRankFromBytes(key);
278
+ // Extract the byte pair
279
+ const key = piece.subarray(pairStart, pairEnd);
280
+ // Retrieve the BPE rank of this byte pair (if it exists)
281
+ const rank = this.getBpeRankFromBytes(key);
282
+ return rank ?? Number.POSITIVE_INFINITY;
217
283
  };
218
- // Initialize the ranks for all adjacent pairs in the array
219
- for (let i = 0; i < partitions.length - 2; i++) {
220
- // Get the rank for the pair starting at index 'i'
221
- const rank = getRank(i, 0);
222
- if (rank !== undefined) {
223
- // Assign the rank to the partition at index 'i'
224
- partitions[i].rank = rank;
284
+ // Initialize the 'starts' array with all possible start indices
285
+ for (let i = 0; i <= piece.length; i++) {
286
+ starts.push(i);
287
+ if (i < piece.length - 1) {
288
+ // Initialize the BPE values for all adjacent pairs
289
+ ranks.push(getRank(i, i, i + 2));
290
+ }
291
+ else {
292
+ // Initialize BPE values to infinity for the last pair
293
+ ranks.push(Number.POSITIVE_INFINITY);
225
294
  }
226
295
  }
227
296
  // Iteratively merge byte pairs until no more useful merges can be done
228
- while (partitions.length > 1) {
229
- let minRank = Number.POSITIVE_INFINITY;
230
- let minRankIdx = 0;
231
- // Find the partition with the minimum rank, i.e., the most important pair to merge next
232
- let i = 0;
233
- for (const partition of partitions) {
234
- if (partition.rank < minRank) {
235
- minRank = partition.rank;
236
- minRankIdx = i;
297
+ while (starts.length > 1) {
298
+ let lowestRank = Number.POSITIVE_INFINITY;
299
+ let lowestPartitionIndex = -1;
300
+ // Find the partition with the minimum rank
301
+ for (let i = 0; i < ranks.length - 1; i++) {
302
+ const rank = ranks[i];
303
+ if (rank < lowestRank) {
304
+ lowestRank = rank;
305
+ lowestPartitionIndex = i;
237
306
  }
238
- i++;
239
307
  }
240
308
  // If no valid pair is left to merge, exit the loop
241
- if (minRank === Number.POSITIVE_INFINITY) {
309
+ if (lowestRank === Number.POSITIVE_INFINITY ||
310
+ lowestPartitionIndex === -1) {
242
311
  break;
243
312
  }
244
- // Update the rank of the partition after the merged one
245
- partitions[minRankIdx].rank =
246
- getRank(minRankIdx, 1) ?? Number.POSITIVE_INFINITY;
247
- // Update the rank of the partition before the merged one (if exists)
248
- if (minRankIdx > 0) {
249
- partitions[minRankIdx - 1].rank =
250
- getRank(minRankIdx - 1, 1) ?? Number.POSITIVE_INFINITY;
313
+ // Merge the pair at 'lowestPartitionIndex' by removing the next start index
314
+ starts.splice(lowestPartitionIndex + 1, 1);
315
+ // Remove the BPE value of the merged pair
316
+ ranks.splice(lowestPartitionIndex, 1);
317
+ // Update the current merged pair's rank
318
+ ranks[lowestPartitionIndex] = getRank(lowestPartitionIndex);
319
+ // Update the rank of the previous pair, if it exists
320
+ if (lowestPartitionIndex > 0) {
321
+ ranks[lowestPartitionIndex - 1] = getRank(lowestPartitionIndex - 1);
251
322
  }
252
- // Merge by removing the partition after the one we just merged
253
- partitions.splice(minRankIdx + 1, 1);
254
323
  }
255
324
  // Create the final output by applying the transform function to each partitioned range
256
325
  const output = [];
257
- for (let i = 0; i < partitions.length - 1; i++) {
258
- output.push(getByteForRange(
259
- // start index
260
- partitions[i].start,
261
- // end index
262
- partitions[i + 1].start));
326
+ for (let i = 0; i < starts.length - 1; i++) {
327
+ const pairStart = starts[i];
328
+ const pairEnd = starts[i + 1];
329
+ const bpeValue = this.getBpeRankFromBytesOrThrow(piece.subarray(pairStart, pairEnd));
330
+ output.push(bpeValue);
263
331
  }
264
332
  return output;
265
333
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BytePairEncodingCore.js","sourceRoot":"","sources":["../src/BytePairEncodingCore.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAUxC,MAAM,OAAO,oBAAoB;IACtB,mBAAmB,CAAQ;IAC5B,eAAe,CAAkB;IACjC,2BAA2B,CAAiC;IAC5D,oBAAoB,GAAG,IAAI,GAAG,EAAsB,CAAA;IACpD,eAAe,CAAQ;IACvB,oBAAoB,CAAqB;IACzC,oBAAoB,CAAqB;IACzC,wBAAwB,CAAQ;IAChC,aAAa,CAAqB;IAClC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAEvC,YAAY,EACV,sBAAsB,EAAE,eAAe,EACvC,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,GACQ;QACvB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;QAE9C,iEAAiE;QACjE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAA;QAC9D,MAAM,YAAY,GAA2B,EAAE,CAAA;QAC/C,6BAA6B;QAC7B,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;YACvC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;YACpC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,2BAA2B,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5D,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAA;QACD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,IAAI,IAAI,GAAG,EAAkB,CAAA;QAC5E,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;YAC7C,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,IAAI,GAAG,EAAkB,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QAEtC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACrE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,GAAW;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,2BAA2B,CAAC,GAAW;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,wDAAwD,GAAG,EAAE,CAC9D,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mBAAmB,CAAC,GAAe;QACjC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAE3C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;QAC/C,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,0BAA0B,CAAC,GAAe;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,wDAAwD,GAAG,CAAC,QAAQ,EAAE,EAAE,CACzE,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mCAAmC;IACnC,YAAY,CAAC,GAAe;QAC1B,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,CAAA;QAEtD,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,sCAAsC;YACtC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAA;YACxD,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7D,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAA;gBAC1B,IAAI,GAAG,KAAK,CAAC;oBAAE,MAAK;YACtB,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACd,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;YAClC,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACd,OAAO,GAAG,CAAA;YACZ,CAAC;YACD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,CAAA;IACX,CAAC;IAED,CAAC,YAAY,CACX,IAAY,EACZ,cAA4B;QAE5B,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,eAAe,GAAG,CAAC,CAAA;QAEvB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAC1D,IAAI,EACJ,cAAc,EACd,UAAU,EACV,IAAI,CAAC,wBAAwB,CAC9B,CAAA;YAED,MAAM,QAAQ,GACZ,qBAAqB,KAAK,SAAS;gBACjC,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;YAEjB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAA;YAEjE,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;gBAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,eAAe,GAAG,CAAC,CAAA;oBACnB,MAAM,CAAC,KAAK,CAAC,CAAA;oBAEb,SAAQ;gBACV,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;gBACzC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAA;gBAC/B,MAAM,MAAM,CAAA;YACd,CAAC;YAED,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAA;gBACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBACrE,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CACb,kBAAkB,YAAY,wCAAwC,CACvE,CAAA;gBACH,CAAC;gBACD,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBACzB,UAAU,GAAG,qBAAqB,GAAG,YAAY,CAAC,MAAM,CAAA;gBACxD,eAAe,GAAG,CAAC,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAK;YACP,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,yBAAyB,CACvB,IAAY,EACZ,cAAuC,EACvC,UAAkB,EAClB,YAAoB;QAEpB,IAAI,WAAW,GAAG,UAAU,CAAA;QAE5B,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CACrC,CAAA;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAA;YAEvC,IAAI,cAAc,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,OAAO,gBAAgB,CAAC,KAAK,GAAG,WAAW,CAAA;YAC7C,CAAC;YAED,WAAW,GAAG,gBAAgB,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,CAAC,YAAY,CACX,MAAwB;QAExB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,UAAU,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,iBAAiB,CACtB,MAA6B;QAE7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrD,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,kBAAkB,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CAAC,SAAiB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC3D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAA;YACnB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEjD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,aAAa;IACX,kCAAkC;IAClC,KAAiB;IACjB,wDAAwD;IACxD,eAAuD;QAEvD,yFAAyF;QACzF,4EAA4E;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAAE,qCAAqC;SACtE,CAAC,CAAC,CAAA;QAEH,2EAA2E;QAC3E,8EAA8E;QAC9E,MAAM,OAAO,GAAG,CAAC,UAAkB,EAAE,IAAY,EAAsB,EAAE;YACvE,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC/C,yEAAyE;gBACzE,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,oFAAoF;YACpF,+CAA+C;YAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CACxB,UAAU,CAAC,UAAU,CAAE,CAAC,KAAK,EAC7B,UAAU,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAE,CAAC,KAAK,CACzC,CAAA;YAED,iEAAiE;YACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACtC,CAAC,CAAA;QAED,2DAA2D;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,kDAAkD;YAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,gDAAgD;gBAChD,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,IAAI,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAA;YACtC,IAAI,UAAU,GAAG,CAAC,CAAA;YAElB,wFAAwF;YACxF,IAAI,CAAC,GAAG,CAAC,CAAA;YACT,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;oBAC7B,OAAO,GAAG,SAAS,CAAC,IAAI,CAAA;oBACxB,UAAU,GAAG,CAAC,CAAA;gBAChB,CAAC;gBACD,CAAC,EAAE,CAAA;YACL,CAAC;YAED,mDAAmD;YACnD,IAAI,OAAO,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACzC,MAAK;YACP,CAAC;YAED,wDAAwD;YACxD,UAAU,CAAC,UAAU,CAAE,CAAC,IAAI;gBAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAA;YAEpD,qEAAqE;YACrE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,CAAC,UAAU,GAAG,CAAC,CAAE,CAAC,IAAI;oBAC9B,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAA;YAC1D,CAAC;YAED,+DAA+D;YAC/D,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,CAAC;QAED,uFAAuF;QACvF,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,eAAe;YACb,cAAc;YACd,UAAU,CAAC,CAAC,CAAE,CAAC,KAAK;YACpB,YAAY;YACZ,UAAU,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CACzB,CACF,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"BytePairEncodingCore.js","sourceRoot":"","sources":["../src/BytePairEncodingCore.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,18 @@ export declare class GptEncoding {
20
20
  static FimPrefix: string;
21
21
  static FimSuffix: string;
22
22
  modelName?: ModelName;
23
- private decoder;
24
23
  private bytePairEncodingCoreProcessor;
25
24
  private specialTokenMapping;
26
25
  private specialTokensSet;
27
26
  private allSpecialTokenRegex;
27
+ private defaultSpecialTokenConfig;
28
28
  private constructor();
29
29
  static getEncodingApi(encodingName: EncodingName, getMergeableRanks: GetMergeableRanksFn): GptEncoding;
30
30
  static getEncodingApiForModel(modelName: ModelName, getMergeableRanks: GetMergeableRanksFn): GptEncoding;
31
31
  static getEncodingApiAsync(encodingName: EncodingName, getMergeableRanks: GetMergeableRanksAsyncFn): Promise<GptEncoding>;
32
32
  static getEncodingApiForModelAsync(modelName: ModelName, getMergeableRanks: GetMergeableRanksAsyncFn): Promise<GptEncoding>;
33
- encodeGenerator(lineToEncode: string, { allowedSpecial, disallowedSpecial }?: EncodeOptions): Generator<number[], number, undefined>;
33
+ private processSpecialTokens;
34
+ encodeGenerator(lineToEncode: string, encodeOptions?: EncodeOptions): Generator<number[], number, undefined>;
34
35
  encode(lineToEncode: string, encodeOptions?: EncodeOptions): number[];
35
36
  /**
36
37
  * Progressively tokenizes an OpenAI chat.
@@ -52,7 +53,8 @@ export declare class GptEncoding {
52
53
  * @returns {false | number} false if token limit is exceeded, otherwise the number of tokens
53
54
  */
54
55
  isWithinTokenLimit(input: string | Iterable<ChatMessage>, tokenLimit: number): false | number;
55
- decodeGenerator(inputTokensToDecode: Iterable<number>): Generator<string, void>;
56
- decodeAsyncGenerator(inputTokensToDecode: AsyncIterable<number>): AsyncGenerator<string, void>;
57
56
  decode(inputTokensToDecode: Iterable<number>): string;
57
+ decodeGenerator(inputTokensToDecode: Iterable<number>): Generator<string, void, void>;
58
+ decodeAsyncGenerator(inputTokensToDecode: AsyncIterable<number>): AsyncGenerator<string, void>;
59
+ decodeAsync(inputTokensToDecode: AsyncIterable<number>): Promise<string>;
58
60
  }