gpt-tokenizer 2.8.0 → 2.9.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.
- package/README.md +22 -4
- package/cjs/BytePairEncodingCore.d.ts +1 -0
- package/cjs/BytePairEncodingCore.js +3 -0
- package/cjs/BytePairEncodingCore.js.map +1 -1
- package/cjs/GptEncoding.d.ts +12 -2
- package/cjs/GptEncoding.js +43 -0
- package/cjs/GptEncoding.js.map +1 -1
- package/cjs/GptEncoding.test.js +121 -64
- package/cjs/GptEncoding.test.js.map +1 -1
- package/cjs/encoding/cl100k_base.d.ts +2 -2
- package/cjs/encoding/cl100k_base.js +4 -2
- package/cjs/encoding/cl100k_base.js.map +1 -1
- package/cjs/encoding/o200k_base.d.ts +2 -2
- package/cjs/encoding/o200k_base.js +4 -2
- package/cjs/encoding/o200k_base.js.map +1 -1
- package/cjs/encoding/p50k_base.d.ts +2 -2
- package/cjs/encoding/p50k_base.js +4 -2
- package/cjs/encoding/p50k_base.js.map +1 -1
- package/cjs/encoding/p50k_edit.d.ts +2 -2
- package/cjs/encoding/p50k_edit.js +6 -2
- package/cjs/encoding/p50k_edit.js.map +1 -1
- package/cjs/encoding/r50k_base.d.ts +2 -2
- package/cjs/encoding/r50k_base.js +4 -2
- package/cjs/encoding/r50k_base.js.map +1 -1
- package/cjs/extraApis.test.js +19 -17
- package/cjs/extraApis.test.js.map +1 -1
- package/cjs/model/babbage-002-finetune.d.ts +2 -0
- package/cjs/model/babbage-002-finetune.js +25 -0
- package/cjs/model/babbage-002-finetune.js.map +1 -0
- package/cjs/model/davinci-002-finetune.d.ts +2 -0
- package/cjs/model/davinci-002-finetune.js +25 -0
- package/cjs/model/davinci-002-finetune.js.map +1 -0
- package/cjs/model/gpt-3.5-turbo-0125.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-0125.js +4 -2
- package/cjs/model/gpt-3.5-turbo-0125.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-0301.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-0301.js +4 -2
- package/cjs/model/gpt-3.5-turbo-0301.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-0613.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-0613.js +4 -2
- package/cjs/model/gpt-3.5-turbo-0613.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-1106.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-1106.js +4 -2
- package/cjs/model/gpt-3.5-turbo-1106.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-16k-0613.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-16k-0613.js +4 -2
- package/cjs/model/gpt-3.5-turbo-16k-0613.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-16k.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-16k.js +4 -2
- package/cjs/model/gpt-3.5-turbo-16k.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo-finetune.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo-finetune.js +4 -2
- package/cjs/model/gpt-3.5-turbo-finetune.js.map +1 -1
- package/cjs/model/gpt-3.5-turbo.d.ts +2 -2
- package/cjs/model/gpt-3.5-turbo.js +4 -2
- package/cjs/model/gpt-3.5-turbo.js.map +1 -1
- package/cjs/model/gpt-4-0125-preview.d.ts +2 -2
- package/cjs/model/gpt-4-0125-preview.js +4 -2
- package/cjs/model/gpt-4-0125-preview.js.map +1 -1
- package/cjs/model/gpt-4-0314.d.ts +2 -2
- package/cjs/model/gpt-4-0314.js +4 -2
- package/cjs/model/gpt-4-0314.js.map +1 -1
- package/cjs/model/gpt-4-0613.d.ts +2 -2
- package/cjs/model/gpt-4-0613.js +4 -2
- package/cjs/model/gpt-4-0613.js.map +1 -1
- package/cjs/model/gpt-4-1106-preview.d.ts +2 -2
- package/cjs/model/gpt-4-1106-preview.js +4 -2
- package/cjs/model/gpt-4-1106-preview.js.map +1 -1
- package/cjs/model/gpt-4-1106-vision-preview.d.ts +2 -2
- package/cjs/model/gpt-4-1106-vision-preview.js +4 -2
- package/cjs/model/gpt-4-1106-vision-preview.js.map +1 -1
- package/cjs/model/gpt-4-32k-0314.d.ts +2 -2
- package/cjs/model/gpt-4-32k-0314.js +4 -2
- package/cjs/model/gpt-4-32k-0314.js.map +1 -1
- package/cjs/model/gpt-4-32k-0613.d.ts +2 -2
- package/cjs/model/gpt-4-32k-0613.js +4 -2
- package/cjs/model/gpt-4-32k-0613.js.map +1 -1
- package/cjs/model/gpt-4-32k.d.ts +2 -2
- package/cjs/model/gpt-4-32k.js +4 -2
- package/cjs/model/gpt-4-32k.js.map +1 -1
- package/cjs/model/gpt-4-turbo-2024-04-09.d.ts +2 -2
- package/cjs/model/gpt-4-turbo-2024-04-09.js +4 -2
- package/cjs/model/gpt-4-turbo-2024-04-09.js.map +1 -1
- package/cjs/model/gpt-4-turbo-preview.d.ts +2 -2
- package/cjs/model/gpt-4-turbo-preview.js +4 -2
- package/cjs/model/gpt-4-turbo-preview.js.map +1 -1
- package/cjs/model/gpt-4-turbo.d.ts +2 -2
- package/cjs/model/gpt-4-turbo.js +4 -2
- package/cjs/model/gpt-4-turbo.js.map +1 -1
- package/cjs/model/gpt-4-vision-preview.d.ts +2 -2
- package/cjs/model/gpt-4-vision-preview.js +4 -2
- package/cjs/model/gpt-4-vision-preview.js.map +1 -1
- package/cjs/model/gpt-4.d.ts +2 -2
- package/cjs/model/gpt-4.js +4 -2
- package/cjs/model/gpt-4.js.map +1 -1
- package/cjs/model/gpt-4o-2024-05-13.d.ts +2 -2
- package/cjs/model/gpt-4o-2024-05-13.js +4 -2
- package/cjs/model/gpt-4o-2024-05-13.js.map +1 -1
- package/cjs/model/gpt-4o-2024-08-06-finetune.d.ts +2 -2
- package/cjs/model/gpt-4o-2024-08-06-finetune.js +4 -2
- package/cjs/model/gpt-4o-2024-08-06-finetune.js.map +1 -1
- package/cjs/model/gpt-4o-2024-08-06.d.ts +2 -2
- package/cjs/model/gpt-4o-2024-08-06.js +4 -2
- package/cjs/model/gpt-4o-2024-08-06.js.map +1 -1
- package/cjs/model/gpt-4o-2024-11-20.d.ts +7 -0
- package/cjs/model/gpt-4o-2024-11-20.js +44 -0
- package/cjs/model/gpt-4o-2024-11-20.js.map +1 -0
- package/cjs/model/gpt-4o-audio-preview-2024-10-01.d.ts +2 -2
- package/cjs/model/gpt-4o-audio-preview-2024-10-01.js +4 -2
- package/cjs/model/gpt-4o-audio-preview-2024-10-01.js.map +1 -1
- package/cjs/model/gpt-4o-audio-preview-2024-12-17.d.ts +7 -0
- package/cjs/model/gpt-4o-audio-preview-2024-12-17.js +44 -0
- package/cjs/model/gpt-4o-audio-preview-2024-12-17.js.map +1 -0
- package/cjs/model/gpt-4o-audio-preview.d.ts +2 -2
- package/cjs/model/gpt-4o-audio-preview.js +4 -2
- package/cjs/model/gpt-4o-audio-preview.js.map +1 -1
- package/cjs/model/gpt-4o-mini-2024-07-18-finetune.d.ts +2 -2
- package/cjs/model/gpt-4o-mini-2024-07-18-finetune.js +4 -2
- package/cjs/model/gpt-4o-mini-2024-07-18-finetune.js.map +1 -1
- package/cjs/model/gpt-4o-mini-2024-07-18.d.ts +2 -2
- package/cjs/model/gpt-4o-mini-2024-07-18.js +4 -2
- package/cjs/model/gpt-4o-mini-2024-07-18.js.map +1 -1
- package/cjs/model/gpt-4o-mini-audio-preview-2024-12-17.d.ts +7 -0
- package/cjs/model/gpt-4o-mini-audio-preview-2024-12-17.js +44 -0
- package/cjs/model/gpt-4o-mini-audio-preview-2024-12-17.js.map +1 -0
- package/cjs/model/gpt-4o-mini-audio-preview.d.ts +7 -0
- package/cjs/model/gpt-4o-mini-audio-preview.js +44 -0
- package/cjs/model/gpt-4o-mini-audio-preview.js.map +1 -0
- package/cjs/model/gpt-4o-mini-realtime-preview-2024-12-17.d.ts +7 -0
- package/cjs/model/gpt-4o-mini-realtime-preview-2024-12-17.js +44 -0
- package/cjs/model/gpt-4o-mini-realtime-preview-2024-12-17.js.map +1 -0
- package/cjs/model/gpt-4o-mini-realtime-preview.d.ts +7 -0
- package/cjs/model/gpt-4o-mini-realtime-preview.js +44 -0
- package/cjs/model/gpt-4o-mini-realtime-preview.js.map +1 -0
- package/cjs/model/gpt-4o-mini-training-2024-07-18.d.ts +2 -2
- package/cjs/model/gpt-4o-mini-training-2024-07-18.js +4 -2
- package/cjs/model/gpt-4o-mini-training-2024-07-18.js.map +1 -1
- package/cjs/model/gpt-4o-mini-training.d.ts +2 -2
- package/cjs/model/gpt-4o-mini-training.js +4 -2
- package/cjs/model/gpt-4o-mini-training.js.map +1 -1
- package/cjs/model/gpt-4o-mini.d.ts +2 -2
- package/cjs/model/gpt-4o-mini.js +4 -2
- package/cjs/model/gpt-4o-mini.js.map +1 -1
- package/cjs/model/gpt-4o-realtime-preview-2024-10-01.d.ts +2 -2
- package/cjs/model/gpt-4o-realtime-preview-2024-10-01.js +4 -2
- package/cjs/model/gpt-4o-realtime-preview-2024-10-01.js.map +1 -1
- package/cjs/model/gpt-4o-realtime-preview-2024-12-17.d.ts +7 -0
- package/cjs/model/gpt-4o-realtime-preview-2024-12-17.js +44 -0
- package/cjs/model/gpt-4o-realtime-preview-2024-12-17.js.map +1 -0
- package/cjs/model/gpt-4o-realtime-preview.d.ts +2 -2
- package/cjs/model/gpt-4o-realtime-preview.js +4 -2
- package/cjs/model/gpt-4o-realtime-preview.js.map +1 -1
- package/cjs/model/gpt-4o.d.ts +2 -2
- package/cjs/model/gpt-4o.js +4 -2
- package/cjs/model/gpt-4o.js.map +1 -1
- package/cjs/model/o1-2024-12-17.d.ts +2 -0
- package/cjs/model/o1-2024-12-17.js +25 -0
- package/cjs/model/o1-2024-12-17.js.map +1 -0
- package/cjs/model/o1.d.ts +2 -0
- package/cjs/model/o1.js +25 -0
- package/cjs/model/o1.js.map +1 -0
- package/cjs/model/o3-mini.d.ts +2 -0
- package/cjs/model/o3-mini.js +25 -0
- package/cjs/model/o3-mini.js.map +1 -0
- package/cjs/models.d.ts +38 -10
- package/cjs/models.js +201 -8
- package/cjs/models.js.map +1 -1
- package/cjs/otherRuntimes.test.d.ts +4 -0
- package/cjs/otherRuntimes.test.js +22 -0
- package/cjs/otherRuntimes.test.js.map +1 -0
- package/cjs/resolveEncodingAsync.js +17 -7
- package/cjs/resolveEncodingAsync.js.map +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 +1 -0
- package/esm/BytePairEncodingCore.js +3 -0
- package/esm/BytePairEncodingCore.js.map +1 -1
- package/esm/GptEncoding.d.ts +12 -2
- package/esm/GptEncoding.js +43 -0
- package/esm/GptEncoding.js.map +1 -1
- package/esm/GptEncoding.test.js +77 -20
- package/esm/GptEncoding.test.js.map +1 -1
- package/esm/encoding/cl100k_base.d.ts +2 -2
- package/esm/encoding/cl100k_base.js +2 -2
- package/esm/encoding/cl100k_base.js.map +1 -1
- package/esm/encoding/o200k_base.d.ts +2 -2
- package/esm/encoding/o200k_base.js +2 -2
- package/esm/encoding/o200k_base.js.map +1 -1
- package/esm/encoding/p50k_base.d.ts +2 -2
- package/esm/encoding/p50k_base.js +2 -2
- package/esm/encoding/p50k_base.js.map +1 -1
- package/esm/encoding/p50k_edit.d.ts +2 -2
- package/esm/encoding/p50k_edit.js +2 -2
- package/esm/encoding/p50k_edit.js.map +1 -1
- package/esm/encoding/r50k_base.d.ts +2 -2
- package/esm/encoding/r50k_base.js +2 -2
- package/esm/encoding/r50k_base.js.map +1 -1
- package/esm/extraApis.test.js +2 -0
- package/esm/extraApis.test.js.map +1 -1
- package/esm/model/babbage-002-finetune.d.ts +2 -0
- package/esm/model/babbage-002-finetune.js +4 -0
- package/esm/model/babbage-002-finetune.js.map +1 -0
- package/esm/model/davinci-002-finetune.d.ts +2 -0
- package/esm/model/davinci-002-finetune.js +4 -0
- package/esm/model/davinci-002-finetune.js.map +1 -0
- package/esm/model/gpt-3.5-turbo-0125.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-0125.js +2 -2
- package/esm/model/gpt-3.5-turbo-0125.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-0301.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-0301.js +2 -2
- package/esm/model/gpt-3.5-turbo-0301.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-0613.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-0613.js +2 -2
- package/esm/model/gpt-3.5-turbo-0613.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-1106.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-1106.js +2 -2
- package/esm/model/gpt-3.5-turbo-1106.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-16k-0613.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-16k-0613.js +2 -2
- package/esm/model/gpt-3.5-turbo-16k-0613.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-16k.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-16k.js +2 -2
- package/esm/model/gpt-3.5-turbo-16k.js.map +1 -1
- package/esm/model/gpt-3.5-turbo-finetune.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo-finetune.js +2 -2
- package/esm/model/gpt-3.5-turbo-finetune.js.map +1 -1
- package/esm/model/gpt-3.5-turbo.d.ts +2 -2
- package/esm/model/gpt-3.5-turbo.js +2 -2
- package/esm/model/gpt-3.5-turbo.js.map +1 -1
- package/esm/model/gpt-4-0125-preview.d.ts +2 -2
- package/esm/model/gpt-4-0125-preview.js +2 -2
- package/esm/model/gpt-4-0125-preview.js.map +1 -1
- package/esm/model/gpt-4-0314.d.ts +2 -2
- package/esm/model/gpt-4-0314.js +2 -2
- package/esm/model/gpt-4-0314.js.map +1 -1
- package/esm/model/gpt-4-0613.d.ts +2 -2
- package/esm/model/gpt-4-0613.js +2 -2
- package/esm/model/gpt-4-0613.js.map +1 -1
- package/esm/model/gpt-4-1106-preview.d.ts +2 -2
- package/esm/model/gpt-4-1106-preview.js +2 -2
- package/esm/model/gpt-4-1106-preview.js.map +1 -1
- package/esm/model/gpt-4-1106-vision-preview.d.ts +2 -2
- package/esm/model/gpt-4-1106-vision-preview.js +2 -2
- package/esm/model/gpt-4-1106-vision-preview.js.map +1 -1
- package/esm/model/gpt-4-32k-0314.d.ts +2 -2
- package/esm/model/gpt-4-32k-0314.js +2 -2
- package/esm/model/gpt-4-32k-0314.js.map +1 -1
- package/esm/model/gpt-4-32k-0613.d.ts +2 -2
- package/esm/model/gpt-4-32k-0613.js +2 -2
- package/esm/model/gpt-4-32k-0613.js.map +1 -1
- package/esm/model/gpt-4-32k.d.ts +2 -2
- package/esm/model/gpt-4-32k.js +2 -2
- package/esm/model/gpt-4-32k.js.map +1 -1
- package/esm/model/gpt-4-turbo-2024-04-09.d.ts +2 -2
- package/esm/model/gpt-4-turbo-2024-04-09.js +2 -2
- package/esm/model/gpt-4-turbo-2024-04-09.js.map +1 -1
- package/esm/model/gpt-4-turbo-preview.d.ts +2 -2
- package/esm/model/gpt-4-turbo-preview.js +2 -2
- package/esm/model/gpt-4-turbo-preview.js.map +1 -1
- package/esm/model/gpt-4-turbo.d.ts +2 -2
- package/esm/model/gpt-4-turbo.js +2 -2
- package/esm/model/gpt-4-turbo.js.map +1 -1
- package/esm/model/gpt-4-vision-preview.d.ts +2 -2
- package/esm/model/gpt-4-vision-preview.js +2 -2
- package/esm/model/gpt-4-vision-preview.js.map +1 -1
- package/esm/model/gpt-4.d.ts +2 -2
- package/esm/model/gpt-4.js +2 -2
- package/esm/model/gpt-4.js.map +1 -1
- package/esm/model/gpt-4o-2024-05-13.d.ts +2 -2
- package/esm/model/gpt-4o-2024-05-13.js +2 -2
- package/esm/model/gpt-4o-2024-05-13.js.map +1 -1
- package/esm/model/gpt-4o-2024-08-06-finetune.d.ts +2 -2
- package/esm/model/gpt-4o-2024-08-06-finetune.js +2 -2
- package/esm/model/gpt-4o-2024-08-06-finetune.js.map +1 -1
- package/esm/model/gpt-4o-2024-08-06.d.ts +2 -2
- package/esm/model/gpt-4o-2024-08-06.js +2 -2
- package/esm/model/gpt-4o-2024-08-06.js.map +1 -1
- package/esm/model/gpt-4o-2024-11-20.d.ts +7 -0
- package/esm/model/gpt-4o-2024-11-20.js +12 -0
- package/esm/model/gpt-4o-2024-11-20.js.map +1 -0
- package/esm/model/gpt-4o-audio-preview-2024-10-01.d.ts +2 -2
- package/esm/model/gpt-4o-audio-preview-2024-10-01.js +2 -2
- package/esm/model/gpt-4o-audio-preview-2024-10-01.js.map +1 -1
- package/esm/model/gpt-4o-audio-preview-2024-12-17.d.ts +7 -0
- package/esm/model/gpt-4o-audio-preview-2024-12-17.js +12 -0
- package/esm/model/gpt-4o-audio-preview-2024-12-17.js.map +1 -0
- package/esm/model/gpt-4o-audio-preview.d.ts +2 -2
- package/esm/model/gpt-4o-audio-preview.js +2 -2
- package/esm/model/gpt-4o-audio-preview.js.map +1 -1
- package/esm/model/gpt-4o-mini-2024-07-18-finetune.d.ts +2 -2
- package/esm/model/gpt-4o-mini-2024-07-18-finetune.js +2 -2
- package/esm/model/gpt-4o-mini-2024-07-18-finetune.js.map +1 -1
- package/esm/model/gpt-4o-mini-2024-07-18.d.ts +2 -2
- package/esm/model/gpt-4o-mini-2024-07-18.js +2 -2
- package/esm/model/gpt-4o-mini-2024-07-18.js.map +1 -1
- package/esm/model/gpt-4o-mini-audio-preview-2024-12-17.d.ts +7 -0
- package/esm/model/gpt-4o-mini-audio-preview-2024-12-17.js +12 -0
- package/esm/model/gpt-4o-mini-audio-preview-2024-12-17.js.map +1 -0
- package/esm/model/gpt-4o-mini-audio-preview.d.ts +7 -0
- package/esm/model/gpt-4o-mini-audio-preview.js +12 -0
- package/esm/model/gpt-4o-mini-audio-preview.js.map +1 -0
- package/esm/model/gpt-4o-mini-realtime-preview-2024-12-17.d.ts +7 -0
- package/esm/model/gpt-4o-mini-realtime-preview-2024-12-17.js +12 -0
- package/esm/model/gpt-4o-mini-realtime-preview-2024-12-17.js.map +1 -0
- package/esm/model/gpt-4o-mini-realtime-preview.d.ts +7 -0
- package/esm/model/gpt-4o-mini-realtime-preview.js +12 -0
- package/esm/model/gpt-4o-mini-realtime-preview.js.map +1 -0
- package/esm/model/gpt-4o-mini-training-2024-07-18.d.ts +2 -2
- package/esm/model/gpt-4o-mini-training-2024-07-18.js +2 -2
- package/esm/model/gpt-4o-mini-training-2024-07-18.js.map +1 -1
- package/esm/model/gpt-4o-mini-training.d.ts +2 -2
- package/esm/model/gpt-4o-mini-training.js +2 -2
- package/esm/model/gpt-4o-mini-training.js.map +1 -1
- package/esm/model/gpt-4o-mini.d.ts +2 -2
- package/esm/model/gpt-4o-mini.js +2 -2
- package/esm/model/gpt-4o-mini.js.map +1 -1
- package/esm/model/gpt-4o-realtime-preview-2024-10-01.d.ts +2 -2
- package/esm/model/gpt-4o-realtime-preview-2024-10-01.js +2 -2
- package/esm/model/gpt-4o-realtime-preview-2024-10-01.js.map +1 -1
- package/esm/model/gpt-4o-realtime-preview-2024-12-17.d.ts +7 -0
- package/esm/model/gpt-4o-realtime-preview-2024-12-17.js +12 -0
- package/esm/model/gpt-4o-realtime-preview-2024-12-17.js.map +1 -0
- package/esm/model/gpt-4o-realtime-preview.d.ts +2 -2
- package/esm/model/gpt-4o-realtime-preview.js +2 -2
- package/esm/model/gpt-4o-realtime-preview.js.map +1 -1
- package/esm/model/gpt-4o.d.ts +2 -2
- package/esm/model/gpt-4o.js +2 -2
- package/esm/model/gpt-4o.js.map +1 -1
- package/esm/model/o1-2024-12-17.d.ts +2 -0
- package/esm/model/o1-2024-12-17.js +4 -0
- package/esm/model/o1-2024-12-17.js.map +1 -0
- package/esm/model/o1.d.ts +2 -0
- package/esm/model/o1.js +4 -0
- package/esm/model/o1.js.map +1 -0
- package/esm/model/o3-mini.d.ts +2 -0
- package/esm/model/o3-mini.js +4 -0
- package/esm/model/o3-mini.js.map +1 -0
- package/esm/models.d.ts +38 -10
- package/esm/models.js +201 -8
- package/esm/models.js.map +1 -1
- package/esm/otherRuntimes.test.d.ts +4 -0
- package/esm/otherRuntimes.test.js +20 -0
- package/esm/otherRuntimes.test.js.map +1 -0
- package/package.json +9 -5
- package/src/BytePairEncodingCore.ts +4 -0
- package/src/GptEncoding.test.ts +102 -20
- package/src/GptEncoding.ts +56 -0
- package/src/__snapshots__/GptEncoding.test.ts.snap +958 -69
- package/src/encoding/cl100k_base.ts +4 -0
- package/src/encoding/o200k_base.ts +4 -0
- package/src/encoding/p50k_base.ts +4 -0
- package/src/encoding/p50k_edit.ts +8 -0
- package/src/encoding/r50k_base.ts +4 -0
- package/src/extraApis.test.ts +2 -0
- package/src/model/babbage-002-finetune.ts +3 -0
- package/src/model/davinci-002-finetune.ts +3 -0
- package/src/model/gpt-3.5-turbo-0125.ts +4 -0
- package/src/model/gpt-3.5-turbo-0301.ts +4 -0
- package/src/model/gpt-3.5-turbo-0613.ts +4 -0
- package/src/model/gpt-3.5-turbo-1106.ts +4 -0
- package/src/model/gpt-3.5-turbo-16k-0613.ts +4 -0
- package/src/model/gpt-3.5-turbo-16k.ts +4 -0
- package/src/model/gpt-3.5-turbo-finetune.ts +4 -0
- package/src/model/gpt-3.5-turbo.ts +4 -0
- package/src/model/gpt-4-0125-preview.ts +4 -0
- package/src/model/gpt-4-0314.ts +4 -0
- package/src/model/gpt-4-0613.ts +4 -0
- package/src/model/gpt-4-1106-preview.ts +4 -0
- package/src/model/gpt-4-1106-vision-preview.ts +4 -0
- package/src/model/gpt-4-32k-0314.ts +4 -0
- package/src/model/gpt-4-32k-0613.ts +4 -0
- package/src/model/gpt-4-32k.ts +4 -0
- package/src/model/gpt-4-turbo-2024-04-09.ts +4 -0
- package/src/model/gpt-4-turbo-preview.ts +4 -0
- package/src/model/gpt-4-turbo.ts +4 -0
- package/src/model/gpt-4-vision-preview.ts +4 -0
- package/src/model/gpt-4.ts +4 -0
- package/src/model/gpt-4o-2024-05-13.ts +4 -0
- package/src/model/gpt-4o-2024-08-06-finetune.ts +4 -0
- package/src/model/gpt-4o-2024-08-06.ts +4 -0
- package/src/model/gpt-4o-2024-11-20.ts +40 -0
- package/src/model/gpt-4o-audio-preview-2024-10-01.ts +4 -0
- package/src/model/gpt-4o-audio-preview-2024-12-17.ts +40 -0
- package/src/model/gpt-4o-audio-preview.ts +4 -0
- package/src/model/gpt-4o-mini-2024-07-18-finetune.ts +4 -0
- package/src/model/gpt-4o-mini-2024-07-18.ts +4 -0
- package/src/model/gpt-4o-mini-audio-preview-2024-12-17.ts +40 -0
- package/src/model/gpt-4o-mini-audio-preview.ts +40 -0
- package/src/model/gpt-4o-mini-realtime-preview-2024-12-17.ts +40 -0
- package/src/model/gpt-4o-mini-realtime-preview.ts +40 -0
- package/src/model/gpt-4o-mini-training-2024-07-18.ts +4 -0
- package/src/model/gpt-4o-mini-training.ts +4 -0
- package/src/model/gpt-4o-mini.ts +4 -0
- package/src/model/gpt-4o-realtime-preview-2024-10-01.ts +4 -0
- package/src/model/gpt-4o-realtime-preview-2024-12-17.ts +40 -0
- package/src/model/gpt-4o-realtime-preview.ts +4 -0
- package/src/model/gpt-4o.ts +4 -0
- package/src/model/o1-2024-12-17.ts +3 -0
- package/src/model/o1.ts +3 -0
- package/src/model/o3-mini.ts +3 -0
- package/src/models.ts +229 -19
- package/src/otherRuntimes.test.ts +23 -0
package/src/GptEncoding.test.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import fs from 'fs'
|
|
2
2
|
import path from 'path'
|
|
3
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
4
|
+
import { describe, expect, test } from 'vitest'
|
|
3
5
|
import { ALL_SPECIAL_TOKENS } from './constants.js'
|
|
4
6
|
import { type ChatMessage, GptEncoding } from './GptEncoding.js'
|
|
5
7
|
import {
|
|
@@ -8,7 +10,9 @@ import {
|
|
|
8
10
|
chatModelParams,
|
|
9
11
|
encodingNames,
|
|
10
12
|
} from './mapping.js'
|
|
13
|
+
import { models } from './models.js'
|
|
11
14
|
import { resolveEncoding } from './resolveEncoding.js'
|
|
15
|
+
import { EndOfText } from './specialTokens.js'
|
|
12
16
|
|
|
13
17
|
const sharedResults = {
|
|
14
18
|
space: [220],
|
|
@@ -66,8 +70,8 @@ const offsetPrompts = [
|
|
|
66
70
|
// Basic prompt with "hello world"
|
|
67
71
|
'hello world',
|
|
68
72
|
|
|
69
|
-
// Basic prompt with special token
|
|
70
|
-
|
|
73
|
+
// Basic prompt with special token end of text token
|
|
74
|
+
`hello world${EndOfText} green cow`,
|
|
71
75
|
|
|
72
76
|
// Chinese text: "我非常渴望与人工智能一起工作"
|
|
73
77
|
'我非常渴望与人工智能一起工作',
|
|
@@ -96,7 +100,7 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
96
100
|
} = encoding
|
|
97
101
|
|
|
98
102
|
describe('encode and decode', () => {
|
|
99
|
-
|
|
103
|
+
test.each(offsetPrompts)('offset prompt: %s', (str) => {
|
|
100
104
|
expect(
|
|
101
105
|
decode(encode(str, { allowedSpecial: ALL_SPECIAL_TOKENS })),
|
|
102
106
|
).toEqual(str)
|
|
@@ -105,7 +109,7 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
105
109
|
|
|
106
110
|
describe('basic functionality', () => {
|
|
107
111
|
const result = results[encodingName]
|
|
108
|
-
|
|
112
|
+
test('empty string', () => {
|
|
109
113
|
const str = ''
|
|
110
114
|
expect(encode(str)).toEqual([])
|
|
111
115
|
expect(decode(encode(str))).toEqual(str)
|
|
@@ -113,7 +117,7 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
113
117
|
expect(isWithinTokenLimit(str, 3)).toBe(0)
|
|
114
118
|
})
|
|
115
119
|
|
|
116
|
-
|
|
120
|
+
test('space', () => {
|
|
117
121
|
const str = ' '
|
|
118
122
|
expect(encode(str)).toEqual(result.space)
|
|
119
123
|
expect(decode(encode(str))).toEqual(str)
|
|
@@ -121,13 +125,13 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
121
125
|
expect(isWithinTokenLimit(str, 0)).toBe(false)
|
|
122
126
|
})
|
|
123
127
|
|
|
124
|
-
|
|
128
|
+
test('tab', () => {
|
|
125
129
|
const str = '\t'
|
|
126
130
|
expect(encode(str)).toEqual(result.tab)
|
|
127
131
|
expect(decode(encode(str))).toEqual(str)
|
|
128
132
|
})
|
|
129
133
|
|
|
130
|
-
|
|
134
|
+
test('simple text', () => {
|
|
131
135
|
const str = 'This is some text'
|
|
132
136
|
expect(encode(str)).toEqual(result[str])
|
|
133
137
|
expect(decode(encode(str))).toEqual(str)
|
|
@@ -135,14 +139,14 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
135
139
|
expect(isWithinTokenLimit(str, 5)).toBe(result[str].length)
|
|
136
140
|
})
|
|
137
141
|
|
|
138
|
-
|
|
142
|
+
test('multi-token word', () => {
|
|
139
143
|
const str = 'indivisible'
|
|
140
144
|
expect(encode(str)).toEqual(result.indivisible)
|
|
141
145
|
expect(decode(encode(str))).toEqual(str)
|
|
142
146
|
expect(isWithinTokenLimit(str, 3)).toBe(result.indivisible.length)
|
|
143
147
|
})
|
|
144
148
|
|
|
145
|
-
|
|
149
|
+
test('emojis', () => {
|
|
146
150
|
const str = 'hello 👋 world 🌍'
|
|
147
151
|
expect(encode(str)).toEqual(result[str])
|
|
148
152
|
expect(decode(encode(str))).toEqual(str)
|
|
@@ -150,7 +154,7 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
150
154
|
expect(isWithinTokenLimit(str, 400)).toBe(result[str].length)
|
|
151
155
|
})
|
|
152
156
|
|
|
153
|
-
|
|
157
|
+
test('decode token-by-token via generator', () => {
|
|
154
158
|
const str = 'hello 👋 world 🌍'
|
|
155
159
|
const generator = decodeGenerator(result[str])
|
|
156
160
|
result.decodedHelloWorldTokens.forEach((token: string) => {
|
|
@@ -158,8 +162,8 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
158
162
|
})
|
|
159
163
|
})
|
|
160
164
|
|
|
161
|
-
|
|
162
|
-
const str =
|
|
165
|
+
test('encodes and decodes special tokens', () => {
|
|
166
|
+
const str = `hello ${EndOfText} world`
|
|
163
167
|
const encoded = encode(str, {
|
|
164
168
|
allowedSpecial: ALL_SPECIAL_TOKENS,
|
|
165
169
|
})
|
|
@@ -174,7 +178,7 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
174
178
|
}
|
|
175
179
|
}
|
|
176
180
|
|
|
177
|
-
|
|
181
|
+
test('decode token-by-token via async generator', async () => {
|
|
178
182
|
const generator = decodeAsyncGenerator(getHelloWorldTokensAsync())
|
|
179
183
|
const decoded = [...result.decodedHelloWorldTokens]
|
|
180
184
|
for await (const value of generator) {
|
|
@@ -182,14 +186,14 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
182
186
|
}
|
|
183
187
|
})
|
|
184
188
|
|
|
185
|
-
|
|
189
|
+
test('properties of Object', () => {
|
|
186
190
|
const str = 'toString constructor hasOwnProperty valueOf'
|
|
187
191
|
|
|
188
192
|
expect(encode(str)).toEqual(result[str])
|
|
189
193
|
expect(decode(encode(str))).toEqual(str)
|
|
190
194
|
})
|
|
191
195
|
|
|
192
|
-
|
|
196
|
+
test('text with commas', () => {
|
|
193
197
|
const str = 'hello, I am a text, and I have commas. a,b,c'
|
|
194
198
|
expect(decode(encode(str))).toEqual(str)
|
|
195
199
|
expect(encode(str)).toStrictEqual(result[str])
|
|
@@ -200,10 +204,10 @@ describe.each(encodingNames)('%s', (encodingName: EncodingName) => {
|
|
|
200
204
|
|
|
201
205
|
describe('test plan', () => {
|
|
202
206
|
testPlans[encodingName].forEach(({ sample, encoded }) => {
|
|
203
|
-
|
|
207
|
+
test(`encodes ${sample}`, () => {
|
|
204
208
|
expect(encode(sample)).toEqual(encoded)
|
|
205
209
|
})
|
|
206
|
-
|
|
210
|
+
test(`decodes ${sample}`, () => {
|
|
207
211
|
expect(decode(encoded)).toEqual(sample)
|
|
208
212
|
})
|
|
209
213
|
})
|
|
@@ -258,7 +262,7 @@ describe.each(chatModelNames)('%s', (modelName) => {
|
|
|
258
262
|
: 121
|
|
259
263
|
|
|
260
264
|
describe('chat functionality', () => {
|
|
261
|
-
|
|
265
|
+
test('encodes a chat correctly', () => {
|
|
262
266
|
const encoded = encoding.encodeChat(exampleMessages)
|
|
263
267
|
expect(encoded).toMatchSnapshot()
|
|
264
268
|
expect(encoded).toHaveLength(expectedEncodedLength)
|
|
@@ -267,14 +271,14 @@ describe.each(chatModelNames)('%s', (modelName) => {
|
|
|
267
271
|
expect(decoded).toMatchSnapshot()
|
|
268
272
|
})
|
|
269
273
|
|
|
270
|
-
|
|
274
|
+
test('isWithinTokenLimit: false', () => {
|
|
271
275
|
const isWithinTokenLimit = encoding.isWithinTokenLimit(
|
|
272
276
|
exampleMessages,
|
|
273
277
|
50,
|
|
274
278
|
)
|
|
275
279
|
expect(isWithinTokenLimit).toBe(false)
|
|
276
280
|
})
|
|
277
|
-
|
|
281
|
+
test('isWithinTokenLimit: true (number)', () => {
|
|
278
282
|
const isWithinTokenLimit = encoding.isWithinTokenLimit(
|
|
279
283
|
exampleMessages,
|
|
280
284
|
150,
|
|
@@ -284,6 +288,84 @@ describe.each(chatModelNames)('%s', (modelName) => {
|
|
|
284
288
|
})
|
|
285
289
|
})
|
|
286
290
|
|
|
291
|
+
describe('estimateCost functionality', () => {
|
|
292
|
+
const gpt4oEncoding = GptEncoding.getEncodingApiForModel(
|
|
293
|
+
'gpt-4o',
|
|
294
|
+
resolveEncoding,
|
|
295
|
+
)
|
|
296
|
+
const gpt35Encoding = GptEncoding.getEncodingApiForModel(
|
|
297
|
+
'gpt-3.5-turbo',
|
|
298
|
+
resolveEncoding,
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
test('estimates cost correctly for gpt-4o model', () => {
|
|
302
|
+
const tokenCount = 1_000
|
|
303
|
+
const cost = gpt4oEncoding.estimateCost(tokenCount)
|
|
304
|
+
|
|
305
|
+
// gpt-4o has $2.5 per million tokens for input and $10 per million tokens for output
|
|
306
|
+
expect(cost.input).toBeCloseTo(0.002_5, 6) // 1000/1M * $2.5
|
|
307
|
+
expect(cost.output).toBeCloseTo(0.01, 6) // 1000/1M * $10
|
|
308
|
+
expect(cost.batchInput).toBeCloseTo(0.001_25, 6) // 1000/1M * $1.25
|
|
309
|
+
expect(cost.batchOutput).toBeCloseTo(0.005, 6) // 1000/1M * $5
|
|
310
|
+
})
|
|
311
|
+
|
|
312
|
+
test('estimates cost correctly for gpt-3.5-turbo model', () => {
|
|
313
|
+
const tokenCount = 1_000
|
|
314
|
+
const cost = gpt35Encoding.estimateCost(tokenCount)
|
|
315
|
+
|
|
316
|
+
// gpt-3.5-turbo has $0.5 per million tokens for input and $1.5 per million tokens for output
|
|
317
|
+
expect(cost.input).toBeCloseTo(0.000_5, 6) // 1000/1M * $0.5
|
|
318
|
+
expect(cost.output).toBeCloseTo(0.001_5, 6) // 1000/1M * $1.5
|
|
319
|
+
expect(cost.batchInput).toBeCloseTo(0.000_25, 6) // 1000/1M * $0.25
|
|
320
|
+
expect(cost.batchOutput).toBeCloseTo(0.000_75, 6) // 1000/1M * $0.75
|
|
321
|
+
})
|
|
322
|
+
|
|
323
|
+
test('allows overriding model name', () => {
|
|
324
|
+
const tokenCount = 1_000
|
|
325
|
+
// Use gpt-4o encoding but override with gpt-3.5-turbo model name
|
|
326
|
+
const cost = gpt4oEncoding.estimateCost(tokenCount, 'gpt-3.5-turbo')
|
|
327
|
+
|
|
328
|
+
expect(cost.input).toBeCloseTo(0.000_5, 6) // 1000/1M * $0.5
|
|
329
|
+
expect(cost.output).toBeCloseTo(0.001_5, 6) // 1000/1M * $1.5
|
|
330
|
+
})
|
|
331
|
+
|
|
332
|
+
test('throws error when model name is not provided', () => {
|
|
333
|
+
const encoding = GptEncoding.getEncodingApi('cl100k_base', resolveEncoding)
|
|
334
|
+
const tokenCount = 1_000
|
|
335
|
+
|
|
336
|
+
// No model name was provided during initialization or function call
|
|
337
|
+
expect(() => encoding.estimateCost(tokenCount)).toThrow(
|
|
338
|
+
'Model name must be provided either during initialization or passed in to the method.',
|
|
339
|
+
)
|
|
340
|
+
})
|
|
341
|
+
|
|
342
|
+
test('throws error for unknown model', () => {
|
|
343
|
+
const tokenCount = 1_000
|
|
344
|
+
expect(() =>
|
|
345
|
+
gpt4oEncoding.estimateCost(tokenCount, 'non-existent-model' as any),
|
|
346
|
+
).toThrow('Unknown model: non-existent-model')
|
|
347
|
+
})
|
|
348
|
+
|
|
349
|
+
test('only includes properties that exist for the model', () => {
|
|
350
|
+
// Find a model that only has input cost but no output cost
|
|
351
|
+
const modelWithInputOnly = Object.entries(models).find(
|
|
352
|
+
([_, model]) =>
|
|
353
|
+
model.cost?.input !== undefined && model.cost?.output === undefined,
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
if (modelWithInputOnly) {
|
|
357
|
+
const [modelName] = modelWithInputOnly
|
|
358
|
+
const cost = gpt4oEncoding.estimateCost(1_000, modelName as any)
|
|
359
|
+
|
|
360
|
+
expect(cost.input).toBeDefined()
|
|
361
|
+
expect(cost.output).toBeUndefined()
|
|
362
|
+
} else {
|
|
363
|
+
// Skip test if we can't find an appropriate model
|
|
364
|
+
console.log('Skipping test: no model with input-only cost found')
|
|
365
|
+
}
|
|
366
|
+
})
|
|
367
|
+
})
|
|
368
|
+
|
|
287
369
|
function loadTestPlans() {
|
|
288
370
|
const testPlanPath = path.join(__dirname, '../data/TestPlans.txt')
|
|
289
371
|
const testPlanData = fs.readFileSync(testPlanPath, 'utf8')
|
package/src/GptEncoding.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
type GetMergeableRanksFn,
|
|
16
16
|
getEncodingParams,
|
|
17
17
|
} from './modelParams.js'
|
|
18
|
+
import { type CostEstimate, models } from './models.js'
|
|
18
19
|
import {
|
|
19
20
|
EndOfPrompt,
|
|
20
21
|
EndOfText,
|
|
@@ -128,6 +129,8 @@ export class GptEncoding {
|
|
|
128
129
|
this.encodeChatGenerator = this.encodeChatGenerator.bind(this)
|
|
129
130
|
this.countTokens = this.countTokens.bind(this)
|
|
130
131
|
this.setMergeCacheSize = this.setMergeCacheSize.bind(this)
|
|
132
|
+
this.clearMergeCache = this.clearMergeCache.bind(this)
|
|
133
|
+
this.estimateCost = this.estimateCost.bind(this)
|
|
131
134
|
this.modelName = modelName
|
|
132
135
|
}
|
|
133
136
|
|
|
@@ -366,6 +369,10 @@ export class GptEncoding {
|
|
|
366
369
|
this.bytePairEncodingCoreProcessor.setMergeCacheSize(size)
|
|
367
370
|
}
|
|
368
371
|
|
|
372
|
+
clearMergeCache(): void {
|
|
373
|
+
this.bytePairEncodingCoreProcessor.clearMergeCache()
|
|
374
|
+
}
|
|
375
|
+
|
|
369
376
|
decode(inputTokensToDecode: Iterable<number>): string {
|
|
370
377
|
return this.bytePairEncodingCoreProcessor.decodeNative(inputTokensToDecode)
|
|
371
378
|
}
|
|
@@ -455,4 +462,53 @@ export class GptEncoding {
|
|
|
455
462
|
|
|
456
463
|
return buffer
|
|
457
464
|
}
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* Estimates the cost of processing a given token count using the model's pricing.
|
|
468
|
+
*
|
|
469
|
+
* @param tokenCount - The number of tokens to estimate cost for
|
|
470
|
+
* @param modelName - Optional model name to use for cost calculation (defaults to this.modelName)
|
|
471
|
+
* @returns Cost estimate object with applicable price components (input, output, batchInput, batchOutput)
|
|
472
|
+
*/
|
|
473
|
+
estimateCost(tokenCount: number, modelName = this.modelName): CostEstimate {
|
|
474
|
+
if (!modelName) {
|
|
475
|
+
throw new Error(
|
|
476
|
+
'Model name must be provided either during initialization or passed in to the method.',
|
|
477
|
+
)
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
const model = models[modelName]
|
|
481
|
+
if (!model) {
|
|
482
|
+
throw new Error(`Unknown model: ${modelName}`)
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
if (!model.cost) {
|
|
486
|
+
throw new Error(`No cost information available for model: ${modelName}`)
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
const costPerMillion = model.cost
|
|
490
|
+
const result: CostEstimate = {}
|
|
491
|
+
|
|
492
|
+
// Calculate cost per token and multiply by token count
|
|
493
|
+
// eslint-disable-next-line no-magic-numbers
|
|
494
|
+
const millionTokens = tokenCount / 1_000_000
|
|
495
|
+
|
|
496
|
+
if (costPerMillion.input !== undefined) {
|
|
497
|
+
result.input = costPerMillion.input * millionTokens
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
if (costPerMillion.output !== undefined) {
|
|
501
|
+
result.output = costPerMillion.output * millionTokens
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
if (costPerMillion.batchInput !== undefined) {
|
|
505
|
+
result.batchInput = costPerMillion.batchInput * millionTokens
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
if (costPerMillion.batchOutput !== undefined) {
|
|
509
|
+
result.batchOutput = costPerMillion.batchOutput * millionTokens
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
return result
|
|
513
|
+
}
|
|
458
514
|
}
|