gpt-tokenizer 2.3.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/cjs/BytePairEncodingCore.d.ts +30 -17
- package/cjs/BytePairEncodingCore.js +202 -134
- package/cjs/BytePairEncodingCore.js.map +1 -1
- package/cjs/GptEncoding.d.ts +6 -4
- package/cjs/GptEncoding.js +48 -14
- package/cjs/GptEncoding.js.map +1 -1
- package/cjs/encoding/cl100k_base.d.ts +1 -1
- package/cjs/encoding/o200k_base.d.ts +1 -1
- package/cjs/encoding/p50k_base.d.ts +1 -1
- package/cjs/encoding/p50k_edit.d.ts +1 -1
- package/cjs/encoding/r50k_base.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-0125.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-0301.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-0613.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-1106.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-16k-0613.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-16k.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-instruct-0914.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo-instruct.d.ts +1 -1
- package/cjs/model/gpt-3.5-turbo.d.ts +1 -1
- package/cjs/model/gpt-4-0125-preview.d.ts +1 -1
- package/cjs/model/gpt-4-0314.d.ts +1 -1
- package/cjs/model/gpt-4-0613.d.ts +1 -1
- package/cjs/model/gpt-4-1106-preview.d.ts +1 -1
- package/cjs/model/gpt-4-32k-0314.d.ts +1 -1
- package/cjs/model/gpt-4-32k-0613.d.ts +1 -1
- package/cjs/model/gpt-4-32k.d.ts +1 -1
- package/cjs/model/gpt-4-turbo-2024-04-09.d.ts +1 -1
- package/cjs/model/gpt-4-turbo-preview.d.ts +1 -1
- package/cjs/model/gpt-4-turbo.d.ts +1 -1
- package/cjs/model/gpt-4-vision-preview.d.ts +1 -1
- package/cjs/model/gpt-4.d.ts +1 -1
- package/cjs/model/gpt-4o-2024-05-13.d.ts +1 -1
- package/cjs/model/gpt-4o-2024-08-06.d.ts +1 -1
- package/cjs/model/gpt-4o-mini-2024-07-18.d.ts +1 -1
- package/cjs/model/gpt-4o-mini.d.ts +1 -1
- package/cjs/model/gpt-4o.d.ts +1 -1
- package/dist/cl100k_base.js +1 -1
- package/dist/cl100k_base.js.map +1 -1
- package/dist/o200k_base.js +1 -1
- package/dist/o200k_base.js.map +1 -1
- package/dist/p50k_base.js +1 -1
- package/dist/p50k_base.js.map +1 -1
- package/dist/p50k_edit.js +1 -1
- package/dist/p50k_edit.js.map +1 -1
- package/dist/r50k_base.js +1 -1
- package/dist/r50k_base.js.map +1 -1
- package/esm/BytePairEncodingCore.d.ts +30 -17
- package/esm/BytePairEncodingCore.js +201 -133
- package/esm/BytePairEncodingCore.js.map +1 -1
- package/esm/GptEncoding.d.ts +6 -4
- package/esm/GptEncoding.js +49 -15
- package/esm/GptEncoding.js.map +1 -1
- package/esm/encoding/cl100k_base.d.ts +1 -1
- package/esm/encoding/o200k_base.d.ts +1 -1
- package/esm/encoding/p50k_base.d.ts +1 -1
- package/esm/encoding/p50k_edit.d.ts +1 -1
- package/esm/encoding/r50k_base.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-0125.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-0301.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-0613.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-1106.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-16k-0613.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-16k.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-instruct-0914.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo-instruct.d.ts +1 -1
- package/esm/model/gpt-3.5-turbo.d.ts +1 -1
- package/esm/model/gpt-4-0125-preview.d.ts +1 -1
- package/esm/model/gpt-4-0314.d.ts +1 -1
- package/esm/model/gpt-4-0613.d.ts +1 -1
- package/esm/model/gpt-4-1106-preview.d.ts +1 -1
- package/esm/model/gpt-4-32k-0314.d.ts +1 -1
- package/esm/model/gpt-4-32k-0613.d.ts +1 -1
- package/esm/model/gpt-4-32k.d.ts +1 -1
- package/esm/model/gpt-4-turbo-2024-04-09.d.ts +1 -1
- package/esm/model/gpt-4-turbo-preview.d.ts +1 -1
- package/esm/model/gpt-4-turbo.d.ts +1 -1
- package/esm/model/gpt-4-vision-preview.d.ts +1 -1
- package/esm/model/gpt-4.d.ts +1 -1
- package/esm/model/gpt-4o-2024-05-13.d.ts +1 -1
- package/esm/model/gpt-4o-2024-08-06.d.ts +1 -1
- package/esm/model/gpt-4o-mini-2024-07-18.d.ts +1 -1
- package/esm/model/gpt-4o-mini.d.ts +1 -1
- package/esm/model/gpt-4o.d.ts +1 -1
- package/package.json +1 -1
- package/src/BytePairEncodingCore.ts +260 -173
- package/src/GptEncoding.ts +82 -20
package/README.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://codesandbox.io/s/gpt-tokenizer-tjcjoz?fontsize=14&hidenavigation=1&theme=dark)
|
|
4
4
|
|
|
5
|
-
`gpt-tokenizer` is a
|
|
5
|
+
`gpt-tokenizer` is a Token Byte Pair Encoder/Decoder supporting all OpenAI's models (including those used by GPT-2, GPT-3, GPT-3.5, GPT-4 and GPT-4o).
|
|
6
|
+
It's the [_fastest, smallest and lowest footprint_](#benchmarks) GPT tokenizer available for all JavaScript environments. It's written in TypeScript.
|
|
6
7
|
|
|
7
8
|
This package is a port of OpenAI's [tiktoken](https://github.com/openai/tiktoken), with some additional features sprinkled on top.
|
|
8
9
|
|
|
@@ -355,6 +356,17 @@ In this example, an Error is thrown, because the input text contains a disallowe
|
|
|
355
356
|
|
|
356
357
|
Running the unit tests and verifying the test cases helps maintain consistency between the library and the original Python implementation.
|
|
357
358
|
|
|
359
|
+
## [Benchmarks](https://l8j6fv.csb.app/)
|
|
360
|
+
|
|
361
|
+
Since version 2.4.0, `gpt-tokenizer` is the fastest tokenizer implementation available on NPM. It's even faster than the available WASM/node binding implementations.
|
|
362
|
+
It has the fastest encoding, decoding time and a tiny memory footprint. It also initializes faster than all other implementations.
|
|
363
|
+
|
|
364
|
+
The encodings themselves are also the smallest in size, due to the compact format they are stored in.
|
|
365
|
+
|
|
366
|
+

|
|
367
|
+
|
|
368
|
+

|
|
369
|
+
|
|
358
370
|
## License
|
|
359
371
|
|
|
360
372
|
MIT
|
|
@@ -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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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,53 +1,178 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* eslint-disable no-continue */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.BytePairEncodingCore = void 0;
|
|
4
|
+
exports.BytePairEncodingCore = exports.decoder = void 0;
|
|
5
5
|
const utfUtil_js_1 = require("./utfUtil.js");
|
|
6
6
|
const util_js_1 = require("./util.js");
|
|
7
|
+
const emptyBuffer = new Uint8Array(0);
|
|
8
|
+
exports.decoder = new TextDecoder('utf8');
|
|
7
9
|
class BytePairEncodingCore {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
mergeableBytePairRankCount;
|
|
11
|
+
/**
|
|
12
|
+
* an array where the index is the BPE rank,
|
|
13
|
+
* and the value is the string or the array of bytes that it decodes to
|
|
14
|
+
* it may contain holes if token is unused
|
|
15
|
+
*/
|
|
16
|
+
bytePairRankDecoder;
|
|
17
|
+
bytePairNonUtfRankDecoder = new Map();
|
|
18
|
+
bytePairNonUtfSortedEncoder;
|
|
19
|
+
/**
|
|
20
|
+
* a reverse map of the bytePairRankDecoder,
|
|
21
|
+
* where the key is the string and the value is the rank
|
|
22
|
+
* values that cannot be represented as a string are present in `bytePairNonUtfSortedEncoder`
|
|
23
|
+
*/
|
|
24
|
+
bytePairStringRankEncoder;
|
|
12
25
|
tokenSplitRegex;
|
|
13
26
|
specialTokensEncoder;
|
|
14
27
|
specialTokensDecoder;
|
|
15
28
|
specialTokenPatternRegex;
|
|
16
|
-
stringDecoder;
|
|
17
29
|
textEncoder = new TextEncoder();
|
|
18
30
|
constructor({ mergeableBytePairRanks: bytePairEncoder, specialTokenMapping: specialTokenEncoder, tokenSplitRegex, }) {
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
31
|
+
this.bytePairRankDecoder = bytePairEncoder;
|
|
32
|
+
this.bytePairStringRankEncoder = new Map();
|
|
21
33
|
// size without array holes (which may be present in the encoder)
|
|
22
|
-
this.
|
|
34
|
+
this.mergeableBytePairRankCount = Object.keys(bytePairEncoder).length;
|
|
23
35
|
const binaryLookup = [];
|
|
24
36
|
// forEach skips array holes:
|
|
25
37
|
bytePairEncoder.forEach((value, rank) => {
|
|
26
38
|
if (typeof value === 'string') {
|
|
27
|
-
this.
|
|
39
|
+
this.bytePairStringRankEncoder.set(value, rank);
|
|
28
40
|
return;
|
|
29
41
|
}
|
|
30
42
|
const byteArray = new Uint8Array(value);
|
|
31
43
|
binaryLookup.push([byteArray, rank]);
|
|
32
|
-
this.
|
|
44
|
+
this.bytePairNonUtfRankDecoder.set(rank, byteArray);
|
|
33
45
|
});
|
|
34
|
-
this.
|
|
46
|
+
this.bytePairNonUtfSortedEncoder = binaryLookup.sort((a, b) => (0, utfUtil_js_1.compareUint8Arrays)(a[0], b[0]));
|
|
35
47
|
this.specialTokensEncoder = specialTokenEncoder ?? new Map();
|
|
36
48
|
this.specialTokensDecoder = specialTokenEncoder
|
|
37
49
|
? new Map([...specialTokenEncoder].map(([key, value]) => [value, key]))
|
|
38
50
|
: new Map();
|
|
39
51
|
this.tokenSplitRegex = tokenSplitRegex;
|
|
40
|
-
const
|
|
41
|
-
const
|
|
52
|
+
const escapedSpecialTokens = [...this.specialTokensEncoder.keys()].map(util_js_1.escapeRegExp);
|
|
53
|
+
const allSpecialTokensRegex = escapedSpecialTokens.join('|');
|
|
42
54
|
try {
|
|
43
|
-
this.specialTokenPatternRegex = new RegExp(
|
|
55
|
+
this.specialTokenPatternRegex = new RegExp(allSpecialTokensRegex);
|
|
44
56
|
}
|
|
45
57
|
catch {
|
|
46
58
|
throw new Error('Invalid regular expression pattern.');
|
|
47
59
|
}
|
|
48
60
|
}
|
|
61
|
+
*encodeNativeGenerator(text, allowedSpecial) {
|
|
62
|
+
let startIndex = 0;
|
|
63
|
+
let lastTokenLength = 0;
|
|
64
|
+
while (true) {
|
|
65
|
+
const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex);
|
|
66
|
+
const endIndex = nextSpecialStartIndex !== undefined
|
|
67
|
+
? nextSpecialStartIndex
|
|
68
|
+
: text.length;
|
|
69
|
+
const textSegment = text.slice(startIndex, endIndex - startIndex);
|
|
70
|
+
for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
|
|
71
|
+
const token = this.getBpeRankFromString(match);
|
|
72
|
+
if (token !== undefined) {
|
|
73
|
+
lastTokenLength = 1;
|
|
74
|
+
yield [token];
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const tokens = this.bytePairEncode(match);
|
|
78
|
+
lastTokenLength = tokens.length;
|
|
79
|
+
yield tokens;
|
|
80
|
+
}
|
|
81
|
+
if (nextSpecialStartIndex !== undefined) {
|
|
82
|
+
const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
|
|
83
|
+
const specialTokenValue = this.specialTokensEncoder.get(specialToken);
|
|
84
|
+
if (specialTokenValue === undefined) {
|
|
85
|
+
throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
|
|
86
|
+
}
|
|
87
|
+
yield [specialTokenValue];
|
|
88
|
+
startIndex = nextSpecialStartIndex + specialToken.length;
|
|
89
|
+
lastTokenLength = 0;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return lastTokenLength;
|
|
96
|
+
}
|
|
97
|
+
encodeNative(text, allowedSpecial) {
|
|
98
|
+
let startIndex = 0;
|
|
99
|
+
const tokensArray = []; // Flat list to collect the tokens
|
|
100
|
+
// eslint-disable-next-line no-constant-condition
|
|
101
|
+
while (true) {
|
|
102
|
+
const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex);
|
|
103
|
+
const endIndex = nextSpecialStartIndex !== undefined
|
|
104
|
+
? nextSpecialStartIndex
|
|
105
|
+
: text.length;
|
|
106
|
+
const textSegment = text.slice(startIndex, endIndex - startIndex);
|
|
107
|
+
for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
|
|
108
|
+
const token = this.getBpeRankFromString(match);
|
|
109
|
+
if (token !== undefined) {
|
|
110
|
+
tokensArray.push(token);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const tokens = this.bytePairEncode(match);
|
|
114
|
+
tokensArray.push(...tokens);
|
|
115
|
+
}
|
|
116
|
+
if (nextSpecialStartIndex !== undefined) {
|
|
117
|
+
const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
|
|
118
|
+
const specialTokenValue = this.specialTokensEncoder.get(specialToken);
|
|
119
|
+
if (specialTokenValue === undefined) {
|
|
120
|
+
throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
|
|
121
|
+
}
|
|
122
|
+
tokensArray.push(specialTokenValue);
|
|
123
|
+
startIndex = nextSpecialStartIndex + specialToken.length;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return tokensArray;
|
|
130
|
+
}
|
|
131
|
+
*decodeNativeGenerator(tokens) {
|
|
132
|
+
for (const token of tokens) {
|
|
133
|
+
const tokenBytes = this.tryDecodeToken(token);
|
|
134
|
+
if (tokenBytes) {
|
|
135
|
+
yield tokenBytes;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
decodeNative(tokens) {
|
|
140
|
+
let decoded = '';
|
|
141
|
+
let intBuffer = emptyBuffer;
|
|
142
|
+
for (const token of tokens) {
|
|
143
|
+
const tokenBytes = this.tryDecodeToken(token);
|
|
144
|
+
if (tokenBytes === undefined) {
|
|
145
|
+
throw new Error(`Token ${token} is not in the byte pair encoder.`);
|
|
146
|
+
}
|
|
147
|
+
if (typeof tokenBytes === 'string') {
|
|
148
|
+
if (intBuffer !== emptyBuffer) {
|
|
149
|
+
decoded += exports.decoder.decode(intBuffer, { stream: true });
|
|
150
|
+
intBuffer = emptyBuffer;
|
|
151
|
+
}
|
|
152
|
+
decoded += tokenBytes;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const newBuffer = new Uint8Array(intBuffer.length + tokenBytes.length);
|
|
156
|
+
newBuffer.set(intBuffer);
|
|
157
|
+
newBuffer.set(tokenBytes, intBuffer.length);
|
|
158
|
+
intBuffer = newBuffer;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (intBuffer !== emptyBuffer) {
|
|
162
|
+
decoded += exports.decoder.decode(intBuffer, { stream: true });
|
|
163
|
+
}
|
|
164
|
+
return decoded;
|
|
165
|
+
}
|
|
166
|
+
async *decodeNativeAsyncIterable(tokens) {
|
|
167
|
+
for await (const token of tokens) {
|
|
168
|
+
const tokenBytesOrString = this.tryDecodeToken(token);
|
|
169
|
+
if (tokenBytesOrString) {
|
|
170
|
+
yield tokenBytesOrString;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
49
174
|
getBpeRankFromString(key) {
|
|
50
|
-
return this.
|
|
175
|
+
return this.bytePairStringRankEncoder.get(key);
|
|
51
176
|
}
|
|
52
177
|
getBpeRankFromStringOrThrow(key) {
|
|
53
178
|
const value = this.getBpeRankFromString(key);
|
|
@@ -64,7 +189,7 @@ class BytePairEncodingCore {
|
|
|
64
189
|
// Perform binary search on the binary keys
|
|
65
190
|
const index = this.binarySearch(key);
|
|
66
191
|
if (index !== -1) {
|
|
67
|
-
return this.
|
|
192
|
+
return this.bytePairNonUtfSortedEncoder[index][1];
|
|
68
193
|
}
|
|
69
194
|
return undefined;
|
|
70
195
|
}
|
|
@@ -78,13 +203,14 @@ class BytePairEncodingCore {
|
|
|
78
203
|
// Binary search on the binary keys
|
|
79
204
|
binarySearch(key) {
|
|
80
205
|
let low = 0;
|
|
81
|
-
let high = this.
|
|
206
|
+
let high = this.bytePairNonUtfSortedEncoder.length - 1;
|
|
82
207
|
while (low <= high) {
|
|
83
208
|
// eslint-disable-next-line no-bitwise
|
|
84
209
|
const mid = (low + high) >>> 1;
|
|
85
|
-
const midKey = this.
|
|
210
|
+
const midKey = this.bytePairNonUtfSortedEncoder[mid][0];
|
|
86
211
|
let cmp = 0;
|
|
87
|
-
|
|
212
|
+
const maxLength = Math.min(midKey.length, key.length);
|
|
213
|
+
for (let i = 0; i < maxLength; i++) {
|
|
88
214
|
cmp = midKey[i] - key[i];
|
|
89
215
|
if (cmp !== 0)
|
|
90
216
|
break;
|
|
@@ -104,80 +230,28 @@ class BytePairEncodingCore {
|
|
|
104
230
|
}
|
|
105
231
|
return -1;
|
|
106
232
|
}
|
|
107
|
-
|
|
108
|
-
let startIndex = 0;
|
|
109
|
-
let lastTokenLength = 0;
|
|
110
|
-
while (true) {
|
|
111
|
-
const nextSpecialStartIndex = this.findNextSpecialStartIndex(text, allowedSpecial, startIndex, this.specialTokenPatternRegex);
|
|
112
|
-
const endIndex = nextSpecialStartIndex !== undefined
|
|
113
|
-
? nextSpecialStartIndex
|
|
114
|
-
: text.length;
|
|
115
|
-
const textSegment = text.slice(startIndex, endIndex - startIndex);
|
|
116
|
-
for (const [match] of textSegment.matchAll(this.tokenSplitRegex)) {
|
|
117
|
-
const token = this.getBpeRankFromString(match);
|
|
118
|
-
if (token !== undefined) {
|
|
119
|
-
lastTokenLength = 1;
|
|
120
|
-
yield [token];
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
const tokens = this.bytePairEncode(match);
|
|
124
|
-
lastTokenLength = tokens.length;
|
|
125
|
-
yield tokens;
|
|
126
|
-
}
|
|
127
|
-
if (nextSpecialStartIndex !== undefined) {
|
|
128
|
-
const specialToken = text.slice(Math.max(0, nextSpecialStartIndex));
|
|
129
|
-
const specialTokenValue = this.specialTokensEncoder.get(specialToken);
|
|
130
|
-
if (specialTokenValue === undefined) {
|
|
131
|
-
throw new Error(`Special token "${specialToken}" is not in the special token encoder.`);
|
|
132
|
-
}
|
|
133
|
-
yield [specialTokenValue];
|
|
134
|
-
startIndex = nextSpecialStartIndex + specialToken.length;
|
|
135
|
-
lastTokenLength = 0;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return lastTokenLength;
|
|
142
|
-
}
|
|
143
|
-
findNextSpecialStartIndex(text, allowedSpecial, startIndex, specialRegex) {
|
|
233
|
+
findNextSpecialStartIndex(text, allowedSpecial, startIndex) {
|
|
144
234
|
let searchIndex = startIndex;
|
|
145
235
|
// eslint-disable-next-line no-constant-condition
|
|
146
236
|
while (true) {
|
|
147
|
-
const nextSpecialMatch =
|
|
237
|
+
const nextSpecialMatch = this.specialTokenPatternRegex.exec(text.slice(Math.max(0, searchIndex)));
|
|
148
238
|
if (!nextSpecialMatch) {
|
|
149
239
|
return undefined;
|
|
150
240
|
}
|
|
151
|
-
const
|
|
241
|
+
const specialToken = nextSpecialMatch[0];
|
|
152
242
|
if (allowedSpecial?.has(specialToken)) {
|
|
153
243
|
return nextSpecialMatch.index + searchIndex;
|
|
154
244
|
}
|
|
155
245
|
searchIndex = nextSpecialMatch.index + searchIndex + 1;
|
|
156
246
|
}
|
|
157
247
|
}
|
|
158
|
-
*decodeNative(tokens) {
|
|
159
|
-
for (const token of tokens) {
|
|
160
|
-
const tokenBytes = this.tryDecodeToken(token);
|
|
161
|
-
if (tokenBytes) {
|
|
162
|
-
yield tokenBytes;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
async *decodeNativeAsync(tokens) {
|
|
167
|
-
for await (const token of tokens) {
|
|
168
|
-
const tokenBytesOrString = this.tryDecodeToken(token);
|
|
169
|
-
if (tokenBytesOrString) {
|
|
170
|
-
yield tokenBytesOrString;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
248
|
tryDecodeToken(tokenRank) {
|
|
175
|
-
const value = this.
|
|
249
|
+
const value = this.bytePairRankDecoder[tokenRank];
|
|
176
250
|
if (typeof value === 'string') {
|
|
177
251
|
return value;
|
|
178
252
|
}
|
|
179
253
|
if (typeof value === 'object') {
|
|
180
|
-
const fromBinary = this.
|
|
254
|
+
const fromBinary = this.bytePairNonUtfRankDecoder.get(tokenRank);
|
|
181
255
|
if (fromBinary) {
|
|
182
256
|
return fromBinary;
|
|
183
257
|
}
|
|
@@ -189,80 +263,74 @@ class BytePairEncodingCore {
|
|
|
189
263
|
return [this.getBpeRankFromStringOrThrow(input)];
|
|
190
264
|
}
|
|
191
265
|
const inputBytes = this.textEncoder.encode(input);
|
|
192
|
-
return this.bytePairMerge(inputBytes
|
|
193
|
-
const key = inputBytes.subarray(start, end);
|
|
194
|
-
return this.getBpeRankFromBytesOrThrow(key);
|
|
195
|
-
});
|
|
266
|
+
return this.bytePairMerge(inputBytes);
|
|
196
267
|
}
|
|
197
268
|
bytePairMerge(
|
|
198
269
|
// Input array of bytes to process
|
|
199
|
-
piece
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
//
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
// 'skip' determines how far we look ahead (usually 0, for consecutive pairs).
|
|
210
|
-
const getRank = (startIndex, skip) => {
|
|
211
|
-
if (startIndex + skip + 2 >= partitions.length) {
|
|
212
|
-
// Avoid out-of-bounds errors, return undefined when no valid pair exists
|
|
213
|
-
return undefined;
|
|
270
|
+
piece) {
|
|
271
|
+
// 'starts' holds the start indices of each partition
|
|
272
|
+
const starts = [];
|
|
273
|
+
// 'ranks' holds the BPE ranks of each partition pair
|
|
274
|
+
const ranks = [];
|
|
275
|
+
// Helper function to get the rank of a byte pair starting at 'startIndex'
|
|
276
|
+
const getRank = (startIndex, pairStart = starts[startIndex], pairEnd = starts[startIndex + 2]) => {
|
|
277
|
+
if (pairEnd === undefined) {
|
|
278
|
+
// No valid pair exists
|
|
279
|
+
return Number.POSITIVE_INFINITY;
|
|
214
280
|
}
|
|
215
|
-
//
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return
|
|
281
|
+
// Extract the byte pair
|
|
282
|
+
const key = piece.subarray(pairStart, pairEnd);
|
|
283
|
+
// Retrieve the BPE rank of this byte pair (if it exists)
|
|
284
|
+
const rank = this.getBpeRankFromBytes(key);
|
|
285
|
+
return rank ?? Number.POSITIVE_INFINITY;
|
|
220
286
|
};
|
|
221
|
-
// Initialize the
|
|
222
|
-
for (let i = 0; i
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
287
|
+
// Initialize the 'starts' array with all possible start indices
|
|
288
|
+
for (let i = 0; i <= piece.length; i++) {
|
|
289
|
+
starts.push(i);
|
|
290
|
+
if (i < piece.length - 1) {
|
|
291
|
+
// Initialize the BPE values for all adjacent pairs
|
|
292
|
+
ranks.push(getRank(i, i, i + 2));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
// Initialize BPE values to infinity for the last pair
|
|
296
|
+
ranks.push(Number.POSITIVE_INFINITY);
|
|
228
297
|
}
|
|
229
298
|
}
|
|
230
299
|
// Iteratively merge byte pairs until no more useful merges can be done
|
|
231
|
-
while (
|
|
232
|
-
let
|
|
233
|
-
let
|
|
234
|
-
// Find the partition with the minimum rank
|
|
235
|
-
let i = 0;
|
|
236
|
-
|
|
237
|
-
if (
|
|
238
|
-
|
|
239
|
-
|
|
300
|
+
while (starts.length > 1) {
|
|
301
|
+
let lowestRank = Number.POSITIVE_INFINITY;
|
|
302
|
+
let lowestPartitionIndex = -1;
|
|
303
|
+
// Find the partition with the minimum rank
|
|
304
|
+
for (let i = 0; i < ranks.length - 1; i++) {
|
|
305
|
+
const rank = ranks[i];
|
|
306
|
+
if (rank < lowestRank) {
|
|
307
|
+
lowestRank = rank;
|
|
308
|
+
lowestPartitionIndex = i;
|
|
240
309
|
}
|
|
241
|
-
i++;
|
|
242
310
|
}
|
|
243
311
|
// If no valid pair is left to merge, exit the loop
|
|
244
|
-
if (
|
|
312
|
+
if (lowestRank === Number.POSITIVE_INFINITY ||
|
|
313
|
+
lowestPartitionIndex === -1) {
|
|
245
314
|
break;
|
|
246
315
|
}
|
|
247
|
-
//
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
316
|
+
// Merge the pair at 'lowestPartitionIndex' by removing the next start index
|
|
317
|
+
starts.splice(lowestPartitionIndex + 1, 1);
|
|
318
|
+
// Remove the BPE value of the merged pair
|
|
319
|
+
ranks.splice(lowestPartitionIndex, 1);
|
|
320
|
+
// Update the current merged pair's rank
|
|
321
|
+
ranks[lowestPartitionIndex] = getRank(lowestPartitionIndex);
|
|
322
|
+
// Update the rank of the previous pair, if it exists
|
|
323
|
+
if (lowestPartitionIndex > 0) {
|
|
324
|
+
ranks[lowestPartitionIndex - 1] = getRank(lowestPartitionIndex - 1);
|
|
254
325
|
}
|
|
255
|
-
// Merge by removing the partition after the one we just merged
|
|
256
|
-
partitions.splice(minRankIdx + 1, 1);
|
|
257
326
|
}
|
|
258
327
|
// Create the final output by applying the transform function to each partitioned range
|
|
259
328
|
const output = [];
|
|
260
|
-
for (let i = 0; i <
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
partitions[i + 1].start));
|
|
329
|
+
for (let i = 0; i < starts.length - 1; i++) {
|
|
330
|
+
const pairStart = starts[i];
|
|
331
|
+
const pairEnd = starts[i + 1];
|
|
332
|
+
const bpeValue = this.getBpeRankFromBytesOrThrow(piece.subarray(pairStart, pairEnd));
|
|
333
|
+
output.push(bpeValue);
|
|
266
334
|
}
|
|
267
335
|
return output;
|
|
268
336
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BytePairEncodingCore.js","sourceRoot":"","sources":["../src/BytePairEncodingCore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BytePairEncodingCore.js","sourceRoot":"","sources":["../src/BytePairEncodingCore.ts"],"names":[],"mappings":"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"}
|
package/cjs/GptEncoding.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|