gpt-tokenizer 2.0.0 → 2.1.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.
Files changed (328) hide show
  1. package/README.md +54 -8
  2. package/cjs/GptEncoding.d.ts +33 -6
  3. package/cjs/GptEncoding.js +79 -34
  4. package/cjs/GptEncoding.js.map +1 -1
  5. package/cjs/GptEncoding.test.js +54 -0
  6. package/cjs/GptEncoding.test.js.map +1 -1
  7. package/cjs/encoding/cl100k_base.d.ts +2 -2
  8. package/cjs/encoding/cl100k_base.js +4 -2
  9. package/cjs/encoding/cl100k_base.js.map +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/main.d.ts +1 -0
  14. package/cjs/main.js +7 -0
  15. package/cjs/main.js.map +1 -1
  16. package/cjs/mapping.d.ts +37 -0
  17. package/cjs/mapping.js +34 -2
  18. package/cjs/mapping.js.map +1 -1
  19. package/cjs/model/ada.d.ts +1 -0
  20. package/cjs/model/ada.js +7 -0
  21. package/cjs/model/ada.js.map +1 -1
  22. package/cjs/model/babbage.d.ts +1 -0
  23. package/cjs/model/babbage.js +7 -0
  24. package/cjs/model/babbage.js.map +1 -1
  25. package/cjs/model/code-cushman-001.d.ts +1 -0
  26. package/cjs/model/code-cushman-001.js +7 -0
  27. package/cjs/model/code-cushman-001.js.map +1 -1
  28. package/cjs/model/code-cushman-002.d.ts +1 -0
  29. package/cjs/model/code-cushman-002.js +7 -0
  30. package/cjs/model/code-cushman-002.js.map +1 -1
  31. package/cjs/model/code-davinci-001.d.ts +1 -0
  32. package/cjs/model/code-davinci-001.js +7 -0
  33. package/cjs/model/code-davinci-001.js.map +1 -1
  34. package/cjs/model/code-davinci-002.d.ts +1 -0
  35. package/cjs/model/code-davinci-002.js +7 -0
  36. package/cjs/model/code-davinci-002.js.map +1 -1
  37. package/cjs/model/code-davinci-edit-001.d.ts +1 -0
  38. package/cjs/model/code-davinci-edit-001.js +7 -0
  39. package/cjs/model/code-davinci-edit-001.js.map +1 -1
  40. package/cjs/model/code-search-ada-code-001.d.ts +1 -0
  41. package/cjs/model/code-search-ada-code-001.js +7 -0
  42. package/cjs/model/code-search-ada-code-001.js.map +1 -1
  43. package/cjs/model/code-search-babbage-code-001.d.ts +1 -0
  44. package/cjs/model/code-search-babbage-code-001.js +7 -0
  45. package/cjs/model/code-search-babbage-code-001.js.map +1 -1
  46. package/cjs/model/curie.d.ts +1 -0
  47. package/cjs/model/curie.js +7 -0
  48. package/cjs/model/curie.js.map +1 -1
  49. package/cjs/model/cushman-codex.d.ts +1 -0
  50. package/cjs/model/cushman-codex.js +7 -0
  51. package/cjs/model/cushman-codex.js.map +1 -1
  52. package/cjs/model/davinci-codex.d.ts +1 -0
  53. package/cjs/model/davinci-codex.js +7 -0
  54. package/cjs/model/davinci-codex.js.map +1 -1
  55. package/cjs/model/davinci.d.ts +1 -0
  56. package/cjs/model/davinci.js +7 -0
  57. package/cjs/model/davinci.js.map +1 -1
  58. package/cjs/model/gpt-3.5-turbo-0301.d.ts +6 -0
  59. package/cjs/model/gpt-3.5-turbo-0301.js +38 -0
  60. package/cjs/model/gpt-3.5-turbo-0301.js.map +1 -0
  61. package/cjs/model/gpt-3.5-turbo.d.ts +6 -1
  62. package/cjs/model/gpt-3.5-turbo.js +21 -1
  63. package/cjs/model/gpt-3.5-turbo.js.map +1 -1
  64. package/cjs/model/gpt-4-0314.d.ts +6 -0
  65. package/cjs/model/gpt-4-0314.js +38 -0
  66. package/cjs/model/gpt-4-0314.js.map +1 -0
  67. package/cjs/model/gpt-4-32k-0314.d.ts +6 -0
  68. package/cjs/model/gpt-4-32k-0314.js +38 -0
  69. package/cjs/model/gpt-4-32k-0314.js.map +1 -0
  70. package/cjs/model/gpt-4-32k.d.ts +6 -0
  71. package/cjs/model/gpt-4-32k.js +38 -0
  72. package/cjs/model/gpt-4-32k.js.map +1 -0
  73. package/cjs/model/gpt-4.d.ts +6 -1
  74. package/cjs/model/gpt-4.js +21 -1
  75. package/cjs/model/gpt-4.js.map +1 -1
  76. package/cjs/model/text-ada-001.d.ts +1 -0
  77. package/cjs/model/text-ada-001.js +7 -0
  78. package/cjs/model/text-ada-001.js.map +1 -1
  79. package/cjs/model/text-babbage-001.d.ts +1 -0
  80. package/cjs/model/text-babbage-001.js +7 -0
  81. package/cjs/model/text-babbage-001.js.map +1 -1
  82. package/cjs/model/text-curie-001.d.ts +1 -0
  83. package/cjs/model/text-curie-001.js +7 -0
  84. package/cjs/model/text-curie-001.js.map +1 -1
  85. package/cjs/model/text-davinci-001.d.ts +1 -0
  86. package/cjs/model/text-davinci-001.js +7 -0
  87. package/cjs/model/text-davinci-001.js.map +1 -1
  88. package/cjs/model/text-davinci-002.d.ts +1 -0
  89. package/cjs/model/text-davinci-002.js +7 -0
  90. package/cjs/model/text-davinci-002.js.map +1 -1
  91. package/cjs/model/text-davinci-003.d.ts +1 -0
  92. package/cjs/model/text-davinci-003.js +7 -0
  93. package/cjs/model/text-davinci-003.js.map +1 -1
  94. package/cjs/model/text-davinci-edit-001.d.ts +1 -0
  95. package/cjs/model/text-davinci-edit-001.js +7 -0
  96. package/cjs/model/text-davinci-edit-001.js.map +1 -1
  97. package/cjs/model/text-embedding-ada-002.d.ts +1 -0
  98. package/cjs/model/text-embedding-ada-002.js +7 -0
  99. package/cjs/model/text-embedding-ada-002.js.map +1 -1
  100. package/cjs/model/text-search-ada-doc-001.d.ts +1 -0
  101. package/cjs/model/text-search-ada-doc-001.js +7 -0
  102. package/cjs/model/text-search-ada-doc-001.js.map +1 -1
  103. package/cjs/model/text-search-babbage-doc-001.d.ts +1 -0
  104. package/cjs/model/text-search-babbage-doc-001.js +7 -0
  105. package/cjs/model/text-search-babbage-doc-001.js.map +1 -1
  106. package/cjs/model/text-search-curie-doc-001.d.ts +1 -0
  107. package/cjs/model/text-search-curie-doc-001.js +7 -0
  108. package/cjs/model/text-search-curie-doc-001.js.map +1 -1
  109. package/cjs/model/text-search-davinci-doc-001.d.ts +1 -0
  110. package/cjs/model/text-search-davinci-doc-001.js +7 -0
  111. package/cjs/model/text-search-davinci-doc-001.js.map +1 -1
  112. package/cjs/model/text-similarity-ada-001.d.ts +1 -0
  113. package/cjs/model/text-similarity-ada-001.js +7 -0
  114. package/cjs/model/text-similarity-ada-001.js.map +1 -1
  115. package/cjs/model/text-similarity-babbage-001.d.ts +1 -0
  116. package/cjs/model/text-similarity-babbage-001.js +7 -0
  117. package/cjs/model/text-similarity-babbage-001.js.map +1 -1
  118. package/cjs/model/text-similarity-curie-001.d.ts +1 -0
  119. package/cjs/model/text-similarity-curie-001.js +7 -0
  120. package/cjs/model/text-similarity-curie-001.js.map +1 -1
  121. package/cjs/model/text-similarity-davinci-001.d.ts +1 -0
  122. package/cjs/model/text-similarity-davinci-001.js +7 -0
  123. package/cjs/model/text-similarity-davinci-001.js.map +1 -1
  124. package/cjs/modelParams.d.ts +5 -4
  125. package/cjs/modelParams.js +7 -4
  126. package/cjs/modelParams.js.map +1 -1
  127. package/cjs/specialTokens.d.ts +3 -0
  128. package/cjs/specialTokens.js +4 -1
  129. package/cjs/specialTokens.js.map +1 -1
  130. package/cjs/util.d.ts +2 -0
  131. package/cjs/util.js +19 -0
  132. package/cjs/util.js.map +1 -0
  133. package/dist/cl100k_base.js +1 -1
  134. package/dist/cl100k_base.js.map +1 -1
  135. package/dist/p50k_base.js +1 -1
  136. package/dist/p50k_base.js.map +1 -1
  137. package/dist/p50k_edit.js +1 -1
  138. package/dist/p50k_edit.js.map +1 -1
  139. package/dist/r50k_base.js +1 -1
  140. package/dist/r50k_base.js.map +1 -1
  141. package/esm/GptEncoding.d.ts +33 -6
  142. package/esm/GptEncoding.js +81 -36
  143. package/esm/GptEncoding.js.map +1 -1
  144. package/esm/GptEncoding.test.js +55 -1
  145. package/esm/GptEncoding.test.js.map +1 -1
  146. package/esm/codegen/generateByModel.js +19 -0
  147. package/esm/codegen/generateByModel.js.map +1 -0
  148. package/esm/{generateJsModels.js → codegen/generateJsEncodings.js} +4 -4
  149. package/esm/codegen/generateJsEncodings.js.map +1 -0
  150. package/esm/encoding/cl100k_base.d.ts +2 -2
  151. package/esm/encoding/cl100k_base.js +2 -2
  152. package/esm/encoding/cl100k_base.js.map +1 -1
  153. package/esm/encoding/p50k_base.d.ts +1 -1
  154. package/esm/encoding/p50k_edit.d.ts +1 -1
  155. package/esm/encoding/r50k_base.d.ts +1 -1
  156. package/esm/main.d.ts +1 -0
  157. package/esm/main.js +2 -0
  158. package/esm/main.js.map +1 -1
  159. package/esm/mapping.d.ts +37 -0
  160. package/esm/mapping.js +32 -0
  161. package/esm/mapping.js.map +1 -1
  162. package/esm/model/ada.d.ts +1 -0
  163. package/esm/model/ada.js +2 -0
  164. package/esm/model/ada.js.map +1 -1
  165. package/esm/model/babbage.d.ts +1 -0
  166. package/esm/model/babbage.js +2 -0
  167. package/esm/model/babbage.js.map +1 -1
  168. package/esm/model/code-cushman-001.d.ts +1 -0
  169. package/esm/model/code-cushman-001.js +2 -0
  170. package/esm/model/code-cushman-001.js.map +1 -1
  171. package/esm/model/code-cushman-002.d.ts +1 -0
  172. package/esm/model/code-cushman-002.js +2 -0
  173. package/esm/model/code-cushman-002.js.map +1 -1
  174. package/esm/model/code-davinci-001.d.ts +1 -0
  175. package/esm/model/code-davinci-001.js +2 -0
  176. package/esm/model/code-davinci-001.js.map +1 -1
  177. package/esm/model/code-davinci-002.d.ts +1 -0
  178. package/esm/model/code-davinci-002.js +2 -0
  179. package/esm/model/code-davinci-002.js.map +1 -1
  180. package/esm/model/code-davinci-edit-001.d.ts +1 -0
  181. package/esm/model/code-davinci-edit-001.js +2 -0
  182. package/esm/model/code-davinci-edit-001.js.map +1 -1
  183. package/esm/model/code-search-ada-code-001.d.ts +1 -0
  184. package/esm/model/code-search-ada-code-001.js +2 -0
  185. package/esm/model/code-search-ada-code-001.js.map +1 -1
  186. package/esm/model/code-search-babbage-code-001.d.ts +1 -0
  187. package/esm/model/code-search-babbage-code-001.js +2 -0
  188. package/esm/model/code-search-babbage-code-001.js.map +1 -1
  189. package/esm/model/curie.d.ts +1 -0
  190. package/esm/model/curie.js +2 -0
  191. package/esm/model/curie.js.map +1 -1
  192. package/esm/model/cushman-codex.d.ts +1 -0
  193. package/esm/model/cushman-codex.js +2 -0
  194. package/esm/model/cushman-codex.js.map +1 -1
  195. package/esm/model/davinci-codex.d.ts +1 -0
  196. package/esm/model/davinci-codex.js +2 -0
  197. package/esm/model/davinci-codex.js.map +1 -1
  198. package/esm/model/davinci.d.ts +1 -0
  199. package/esm/model/davinci.js +2 -0
  200. package/esm/model/davinci.js.map +1 -1
  201. package/esm/model/gpt-3.5-turbo-0301.d.ts +6 -0
  202. package/esm/model/gpt-3.5-turbo-0301.js +11 -0
  203. package/esm/model/gpt-3.5-turbo-0301.js.map +1 -0
  204. package/esm/model/gpt-3.5-turbo.d.ts +6 -1
  205. package/esm/model/gpt-3.5-turbo.js +10 -1
  206. package/esm/model/gpt-3.5-turbo.js.map +1 -1
  207. package/esm/model/gpt-4-0314.d.ts +6 -0
  208. package/esm/model/gpt-4-0314.js +11 -0
  209. package/esm/model/gpt-4-0314.js.map +1 -0
  210. package/esm/model/gpt-4-32k-0314.d.ts +6 -0
  211. package/esm/model/gpt-4-32k-0314.js +11 -0
  212. package/esm/model/gpt-4-32k-0314.js.map +1 -0
  213. package/esm/model/gpt-4-32k.d.ts +6 -0
  214. package/esm/model/gpt-4-32k.js +11 -0
  215. package/esm/model/gpt-4-32k.js.map +1 -0
  216. package/esm/model/gpt-4.d.ts +6 -1
  217. package/esm/model/gpt-4.js +10 -1
  218. package/esm/model/gpt-4.js.map +1 -1
  219. package/esm/model/text-ada-001.d.ts +1 -0
  220. package/esm/model/text-ada-001.js +2 -0
  221. package/esm/model/text-ada-001.js.map +1 -1
  222. package/esm/model/text-babbage-001.d.ts +1 -0
  223. package/esm/model/text-babbage-001.js +2 -0
  224. package/esm/model/text-babbage-001.js.map +1 -1
  225. package/esm/model/text-curie-001.d.ts +1 -0
  226. package/esm/model/text-curie-001.js +2 -0
  227. package/esm/model/text-curie-001.js.map +1 -1
  228. package/esm/model/text-davinci-001.d.ts +1 -0
  229. package/esm/model/text-davinci-001.js +2 -0
  230. package/esm/model/text-davinci-001.js.map +1 -1
  231. package/esm/model/text-davinci-002.d.ts +1 -0
  232. package/esm/model/text-davinci-002.js +2 -0
  233. package/esm/model/text-davinci-002.js.map +1 -1
  234. package/esm/model/text-davinci-003.d.ts +1 -0
  235. package/esm/model/text-davinci-003.js +2 -0
  236. package/esm/model/text-davinci-003.js.map +1 -1
  237. package/esm/model/text-davinci-edit-001.d.ts +1 -0
  238. package/esm/model/text-davinci-edit-001.js +2 -0
  239. package/esm/model/text-davinci-edit-001.js.map +1 -1
  240. package/esm/model/text-embedding-ada-002.d.ts +1 -0
  241. package/esm/model/text-embedding-ada-002.js +2 -0
  242. package/esm/model/text-embedding-ada-002.js.map +1 -1
  243. package/esm/model/text-search-ada-doc-001.d.ts +1 -0
  244. package/esm/model/text-search-ada-doc-001.js +2 -0
  245. package/esm/model/text-search-ada-doc-001.js.map +1 -1
  246. package/esm/model/text-search-babbage-doc-001.d.ts +1 -0
  247. package/esm/model/text-search-babbage-doc-001.js +2 -0
  248. package/esm/model/text-search-babbage-doc-001.js.map +1 -1
  249. package/esm/model/text-search-curie-doc-001.d.ts +1 -0
  250. package/esm/model/text-search-curie-doc-001.js +2 -0
  251. package/esm/model/text-search-curie-doc-001.js.map +1 -1
  252. package/esm/model/text-search-davinci-doc-001.d.ts +1 -0
  253. package/esm/model/text-search-davinci-doc-001.js +2 -0
  254. package/esm/model/text-search-davinci-doc-001.js.map +1 -1
  255. package/esm/model/text-similarity-ada-001.d.ts +1 -0
  256. package/esm/model/text-similarity-ada-001.js +2 -0
  257. package/esm/model/text-similarity-ada-001.js.map +1 -1
  258. package/esm/model/text-similarity-babbage-001.d.ts +1 -0
  259. package/esm/model/text-similarity-babbage-001.js +2 -0
  260. package/esm/model/text-similarity-babbage-001.js.map +1 -1
  261. package/esm/model/text-similarity-curie-001.d.ts +1 -0
  262. package/esm/model/text-similarity-curie-001.js +2 -0
  263. package/esm/model/text-similarity-curie-001.js.map +1 -1
  264. package/esm/model/text-similarity-davinci-001.d.ts +1 -0
  265. package/esm/model/text-similarity-davinci-001.js +2 -0
  266. package/esm/model/text-similarity-davinci-001.js.map +1 -1
  267. package/esm/modelParams.d.ts +5 -4
  268. package/esm/modelParams.js +6 -3
  269. package/esm/modelParams.js.map +1 -1
  270. package/esm/specialTokens.d.ts +3 -0
  271. package/esm/specialTokens.js +3 -0
  272. package/esm/specialTokens.js.map +1 -1
  273. package/esm/util.d.ts +2 -0
  274. package/esm/util.js +14 -0
  275. package/esm/util.js.map +1 -0
  276. package/package.json +8 -6
  277. package/src/GptEncoding.test.ts +78 -1
  278. package/src/GptEncoding.ts +125 -44
  279. package/src/__snapshots__/GptEncoding.test.ts.snap +811 -0
  280. package/src/codegen/generateByModel.ts +35 -0
  281. package/src/{generateJsModels.ts → codegen/generateJsEncodings.ts} +3 -3
  282. package/src/encoding/cl100k_base.ts +4 -0
  283. package/src/main.ts +2 -0
  284. package/src/mapping.ts +42 -0
  285. package/src/model/ada.ts +2 -0
  286. package/src/model/babbage.ts +2 -0
  287. package/src/model/code-cushman-001.ts +2 -0
  288. package/src/model/code-cushman-002.ts +2 -0
  289. package/src/model/code-davinci-001.ts +2 -0
  290. package/src/model/code-davinci-002.ts +2 -0
  291. package/src/model/code-davinci-edit-001.ts +2 -0
  292. package/src/model/code-search-ada-code-001.ts +2 -0
  293. package/src/model/code-search-babbage-code-001.ts +2 -0
  294. package/src/model/curie.ts +2 -0
  295. package/src/model/cushman-codex.ts +2 -0
  296. package/src/model/davinci-codex.ts +2 -0
  297. package/src/model/davinci.ts +2 -0
  298. package/src/model/gpt-3.5-turbo-0301.ts +32 -0
  299. package/src/model/gpt-3.5-turbo.ts +32 -1
  300. package/src/model/gpt-4-0314.ts +32 -0
  301. package/src/model/gpt-4-32k-0314.ts +32 -0
  302. package/src/model/gpt-4-32k.ts +32 -0
  303. package/src/model/gpt-4.ts +32 -1
  304. package/src/model/text-ada-001.ts +2 -0
  305. package/src/model/text-babbage-001.ts +2 -0
  306. package/src/model/text-curie-001.ts +2 -0
  307. package/src/model/text-davinci-001.ts +2 -0
  308. package/src/model/text-davinci-002.ts +2 -0
  309. package/src/model/text-davinci-003.ts +2 -0
  310. package/src/model/text-davinci-edit-001.ts +2 -0
  311. package/src/model/text-embedding-ada-002.ts +2 -0
  312. package/src/model/text-search-ada-doc-001.ts +2 -0
  313. package/src/model/text-search-babbage-doc-001.ts +2 -0
  314. package/src/model/text-search-curie-doc-001.ts +2 -0
  315. package/src/model/text-search-davinci-doc-001.ts +2 -0
  316. package/src/model/text-similarity-ada-001.ts +2 -0
  317. package/src/model/text-similarity-babbage-001.ts +2 -0
  318. package/src/model/text-similarity-curie-001.ts +2 -0
  319. package/src/model/text-similarity-davinci-001.ts +2 -0
  320. package/src/modelParams.ts +17 -10
  321. package/src/specialTokens.ts +3 -0
  322. package/src/util.ts +15 -0
  323. package/esm/generateByModel.js +0 -13
  324. package/esm/generateByModel.js.map +0 -1
  325. package/esm/generateJsModels.js.map +0 -1
  326. package/src/generateByModel.ts +0 -20
  327. /package/esm/{generateByModel.d.ts → codegen/generateByModel.d.ts} +0 -0
  328. /package/esm/{generateJsModels.d.ts → codegen/generateJsEncodings.d.ts} +0 -0
@@ -1,6 +1,18 @@
1
1
  import { type EncodingName, type ModelName } from './mapping.js';
2
2
  import { type GetMergeableRanksAsyncFn, type GetMergeableRanksFn } from './modelParams.js';
3
- export declare const DISALLOW_ALL_SPECIAL_TOKENS = "all";
3
+ export declare const ALL_SPECIAL_TOKENS = "all";
4
+ export interface EncodeOptions {
5
+ allowedSpecial?: Set<string>;
6
+ disallowedSpecial?: Set<string>;
7
+ }
8
+ export interface ChatMessage {
9
+ role?: 'system' | 'user' | 'assistant';
10
+ name?: string;
11
+ content: string;
12
+ }
13
+ export interface EncodeChatOptions {
14
+ primeWithAssistantResponse?: string;
15
+ }
4
16
  export declare class GptEncoding {
5
17
  static EndOfPrompt: string;
6
18
  static EndOfText: string;
@@ -8,6 +20,7 @@ export declare class GptEncoding {
8
20
  static FimPrefix: string;
9
21
  static FimSuffix: string;
10
22
  decoder: TextDecoder;
23
+ modelName?: ModelName;
11
24
  private bytePairEncodingCoreProcessor;
12
25
  private specialTokenMapping;
13
26
  private constructor();
@@ -15,14 +28,28 @@ export declare class GptEncoding {
15
28
  static getEncodingApiForModel(modelName: ModelName, getMergeableRanks: GetMergeableRanksFn): GptEncoding;
16
29
  static getEncodingApiAsync(encodingName: EncodingName, getMergeableRanks: GetMergeableRanksAsyncFn): Promise<GptEncoding>;
17
30
  static getEncodingApiForModelAsync(modelName: ModelName, getMergeableRanks: GetMergeableRanksAsyncFn): Promise<GptEncoding>;
18
- private static getMaxValueFromMap;
19
- private static specialTokenRegex;
20
- encodeGenerator(lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>): Generator<number[], number>;
21
- encode(lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>): number[];
31
+ encodeGenerator(lineToEncode: string, { allowedSpecial, disallowedSpecial, }?: EncodeOptions): Generator<number[], number, undefined>;
32
+ encode(lineToEncode: string, encodeOptions?: EncodeOptions): number[];
33
+ /**
34
+ * Progressively tokenizes an OpenAI chat.
35
+ * Warning: gpt-3.5-turbo and gpt-4 chat format may change over time.
36
+ * Returns tokens assuming the 'gpt-3.5-turbo-0301' / 'gpt-4-0314' format.
37
+ * Based on OpenAI's guidelines: https://github.com/openai/openai-python/blob/main/chatml.md
38
+ * Also mentioned in section 6 of this document: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
39
+ */
40
+ encodeChatGenerator(chat: Iterable<ChatMessage>, model?: "gpt-4" | "gpt-4-32k" | "gpt-4-0314" | "gpt-4-32k-0314" | "gpt-3.5-turbo" | "gpt-3.5-turbo-0301" | "text-davinci-003" | "text-davinci-002" | "text-davinci-001" | "text-curie-001" | "text-babbage-001" | "text-ada-001" | "davinci" | "curie" | "babbage" | "ada" | "code-davinci-002" | "code-davinci-001" | "code-cushman-002" | "code-cushman-001" | "davinci-codex" | "cushman-codex" | "text-davinci-edit-001" | "code-davinci-edit-001" | "text-embedding-ada-002" | "text-similarity-davinci-001" | "text-similarity-curie-001" | "text-similarity-babbage-001" | "text-similarity-ada-001" | "text-search-davinci-doc-001" | "text-search-curie-doc-001" | "text-search-babbage-doc-001" | "text-search-ada-doc-001" | "code-search-babbage-code-001" | "code-search-ada-code-001" | undefined): Generator<number[], void, undefined>;
41
+ /**
42
+ * Encodes a chat into a single array of tokens.
43
+ * Warning: gpt-3.5-turbo and gpt-4 chat format may change over time.
44
+ * Returns tokens assuming the 'gpt-3.5-turbo-0301' / 'gpt-4-0314' format.
45
+ * Based on OpenAI's guidelines: https://github.com/openai/openai-python/blob/main/chatml.md
46
+ * Also mentioned in section 6 of this document: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
47
+ */
48
+ encodeChat(chat: readonly ChatMessage[], model?: "gpt-4" | "gpt-4-32k" | "gpt-4-0314" | "gpt-4-32k-0314" | "gpt-3.5-turbo" | "gpt-3.5-turbo-0301" | "text-davinci-003" | "text-davinci-002" | "text-davinci-001" | "text-curie-001" | "text-babbage-001" | "text-ada-001" | "davinci" | "curie" | "babbage" | "ada" | "code-davinci-002" | "code-davinci-001" | "code-cushman-002" | "code-cushman-001" | "davinci-codex" | "cushman-codex" | "text-davinci-edit-001" | "code-davinci-edit-001" | "text-embedding-ada-002" | "text-similarity-davinci-001" | "text-similarity-curie-001" | "text-similarity-babbage-001" | "text-similarity-ada-001" | "text-search-davinci-doc-001" | "text-search-curie-doc-001" | "text-search-babbage-doc-001" | "text-search-ada-doc-001" | "code-search-babbage-code-001" | "code-search-ada-code-001" | undefined): number[];
22
49
  /**
23
50
  * @returns {false | number} false if token limit is exceeded, otherwise the number of tokens
24
51
  */
25
- isWithinTokenLimit(text: string, tokenLimit: number): false | number;
52
+ isWithinTokenLimit(input: string | Iterable<ChatMessage>, tokenLimit: number): false | number;
26
53
  decodeGenerator(inputTokensToDecode: Iterable<number>): Generator<string, void>;
27
54
  decodeAsyncGenerator(inputTokensToDecode: AsyncIterable<number>): AsyncGenerator<string, void>;
28
55
  decode(inputTokensToDecode: Iterable<number>): string;
@@ -1,11 +1,11 @@
1
1
  /* eslint-disable no-param-reassign */
2
2
  import { BytePairEncodingCore } from './BytePairEncodingCore.js';
3
- import { escapeRegExp } from './escapeRegExp.js';
4
- import { modelToEncodingMap, } from './mapping.js';
5
- import { getModelParams, getModelParamsAsync, } from './modelParams.js';
6
- import { EndOfPrompt, EndOfText, FimMiddle, FimPrefix, FimSuffix, } from './specialTokens.js';
3
+ import { chatModelParams, modelToEncodingMap, } from './mapping.js';
4
+ import { getEncodingParams, getModelParamsAsync, } from './modelParams.js';
5
+ import { EndOfPrompt, EndOfText, FimMiddle, FimPrefix, FimSuffix, ImEnd, ImSep, ImStart, } from './specialTokens.js';
7
6
  import { endsWithIncompleteUtfPairSurrogate } from './utfUtil.js';
8
- export const DISALLOW_ALL_SPECIAL_TOKENS = 'all';
7
+ import { getMaxValueFromMap, getSpecialTokenRegex } from './util.js';
8
+ export const ALL_SPECIAL_TOKENS = 'all';
9
9
  class GptEncoding {
10
10
  static EndOfPrompt = EndOfPrompt;
11
11
  static EndOfText = EndOfText;
@@ -13,10 +13,11 @@ class GptEncoding {
13
13
  static FimPrefix = FimPrefix;
14
14
  static FimSuffix = FimSuffix;
15
15
  decoder = new TextDecoder('utf8');
16
+ modelName;
16
17
  bytePairEncodingCoreProcessor;
17
18
  specialTokenMapping;
18
- constructor({ tokenSplitRegex, mergeableBytePairRanks, specialTokenMapping, expectedVocabularySize, }) {
19
- const maxTokenValue = Math.max(GptEncoding.getMaxValueFromMap(mergeableBytePairRanks), GptEncoding.getMaxValueFromMap(specialTokenMapping));
19
+ constructor({ tokenSplitRegex, mergeableBytePairRanks, specialTokenMapping, expectedVocabularySize, modelName, }) {
20
+ const maxTokenValue = Math.max(getMaxValueFromMap(mergeableBytePairRanks), getMaxValueFromMap(specialTokenMapping));
20
21
  this.specialTokenMapping = specialTokenMapping;
21
22
  if (expectedVocabularySize !== undefined) {
22
23
  if (mergeableBytePairRanks.size + specialTokenMapping.size !==
@@ -38,14 +39,16 @@ class GptEncoding {
38
39
  this.decodeGenerator = this.decodeGenerator.bind(this);
39
40
  this.decodeAsyncGenerator = this.decodeAsyncGenerator.bind(this);
40
41
  this.isWithinTokenLimit = this.isWithinTokenLimit.bind(this);
42
+ this.modelName = modelName;
41
43
  }
42
44
  static getEncodingApi(encodingName, getMergeableRanks) {
43
- const modelParams = getModelParams(encodingName, getMergeableRanks);
45
+ const modelParams = getEncodingParams(encodingName, getMergeableRanks);
44
46
  return new GptEncoding(modelParams);
45
47
  }
46
48
  static getEncodingApiForModel(modelName, getMergeableRanks) {
47
49
  const encodingName = modelToEncodingMap[modelName];
48
- return GptEncoding.getEncodingApi(encodingName, getMergeableRanks);
50
+ const modelParams = getEncodingParams(encodingName, getMergeableRanks);
51
+ return new GptEncoding({ ...modelParams, modelName });
49
52
  }
50
53
  static async getEncodingApiAsync(encodingName, getMergeableRanks) {
51
54
  const modelParams = await getModelParamsAsync(encodingName, getMergeableRanks);
@@ -53,33 +56,21 @@ class GptEncoding {
53
56
  }
54
57
  static async getEncodingApiForModelAsync(modelName, getMergeableRanks) {
55
58
  const encodingName = modelToEncodingMap[modelName];
56
- return GptEncoding.getEncodingApiAsync(encodingName, getMergeableRanks);
57
- }
58
- static getMaxValueFromMap(map) {
59
- let max = 0;
60
- map.forEach((val) => {
61
- max = Math.max(max, val);
62
- });
63
- return max;
64
- }
65
- static specialTokenRegex(tokens) {
66
- const escapedTokens = [...tokens].map(escapeRegExp);
67
- const inner = escapedTokens.join('|');
68
- return new RegExp(`(${inner})`);
59
+ const modelParams = await getModelParamsAsync(encodingName, getMergeableRanks);
60
+ return new GptEncoding({ ...modelParams, modelName });
69
61
  }
70
- encodeGenerator(lineToEncode, allowedSpecial = new Set(), disallowedSpecial = new Set([
71
- DISALLOW_ALL_SPECIAL_TOKENS,
72
- ])) {
62
+ encodeGenerator(lineToEncode, { allowedSpecial = new Set(), disallowedSpecial = new Set([ALL_SPECIAL_TOKENS]), } = {}) {
73
63
  const specialTokensSet = new Set(this.specialTokenMapping.keys());
74
- if (disallowedSpecial.has(DISALLOW_ALL_SPECIAL_TOKENS)) {
64
+ if (disallowedSpecial.has(ALL_SPECIAL_TOKENS)) {
75
65
  disallowedSpecial = new Set(specialTokensSet);
66
+ allowedSpecial.forEach((val) => disallowedSpecial.delete(val));
76
67
  disallowedSpecial.forEach((val) => allowedSpecial.delete(val));
77
68
  }
78
- if (allowedSpecial.has(DISALLOW_ALL_SPECIAL_TOKENS)) {
69
+ if (allowedSpecial.has(ALL_SPECIAL_TOKENS)) {
79
70
  allowedSpecial = specialTokensSet;
80
71
  }
81
72
  if (disallowedSpecial.size > 0) {
82
- const regexPattern = GptEncoding.specialTokenRegex(disallowedSpecial);
73
+ const regexPattern = getSpecialTokenRegex(disallowedSpecial);
83
74
  const match = lineToEncode.match(regexPattern);
84
75
  if (match !== null) {
85
76
  throw new Error(`Disallowed special token found: ${match[0]}`);
@@ -87,18 +78,72 @@ class GptEncoding {
87
78
  }
88
79
  return this.bytePairEncodingCoreProcessor.encodeNative(lineToEncode, allowedSpecial);
89
80
  }
90
- encode(lineToEncode, allowedSpecial = new Set(), disallowedSpecial = new Set([
91
- DISALLOW_ALL_SPECIAL_TOKENS,
92
- ])) {
93
- return [
94
- ...this.encodeGenerator(lineToEncode, allowedSpecial, disallowedSpecial),
95
- ].flat();
81
+ encode(lineToEncode, encodeOptions = {}) {
82
+ return [...this.encodeGenerator(lineToEncode, encodeOptions)].flat();
83
+ }
84
+ /**
85
+ * Progressively tokenizes an OpenAI chat.
86
+ * Warning: gpt-3.5-turbo and gpt-4 chat format may change over time.
87
+ * Returns tokens assuming the 'gpt-3.5-turbo-0301' / 'gpt-4-0314' format.
88
+ * Based on OpenAI's guidelines: https://github.com/openai/openai-python/blob/main/chatml.md
89
+ * Also mentioned in section 6 of this document: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
90
+ */
91
+ *encodeChatGenerator(chat, model = this.modelName) {
92
+ if (!model) {
93
+ throw new Error('Model name must be provided either during initialization or passed in to the method.');
94
+ }
95
+ const params = chatModelParams[model];
96
+ const chatStartToken = this.specialTokenMapping.get(ImStart);
97
+ const chatEndToken = this.specialTokenMapping.get(ImEnd);
98
+ if (!params || chatStartToken === undefined || chatEndToken === undefined) {
99
+ throw new Error(`Model '${model}' does not support chat.`);
100
+ }
101
+ const allowedSpecial = new Set([ImSep]);
102
+ const { messageSeparator, roleSeparator } = params;
103
+ const encodedMessageSeparator = messageSeparator.length > 0 ? this.encode(messageSeparator) : [];
104
+ const encodedRoleSeparator = roleSeparator.length > 0
105
+ ? this.encode(roleSeparator, { allowedSpecial })
106
+ : [];
107
+ const nameCache = new Map();
108
+ for (const { role = 'system', name = role, content } of chat) {
109
+ if (content === undefined) {
110
+ throw new Error('Content must be defined for all messages.');
111
+ }
112
+ yield [chatStartToken];
113
+ const encodedName = nameCache.get(name) ?? this.encode(name);
114
+ nameCache.set(name, encodedName);
115
+ yield encodedName;
116
+ if (encodedRoleSeparator.length > 0) {
117
+ yield encodedRoleSeparator;
118
+ }
119
+ yield* this.encodeGenerator(content);
120
+ yield [chatEndToken];
121
+ yield encodedMessageSeparator;
122
+ }
123
+ // every reply is primed with <|start|>assistant<|message|>
124
+ yield [chatStartToken];
125
+ yield* this.encodeGenerator('assistant');
126
+ if (encodedRoleSeparator.length > 0) {
127
+ yield encodedRoleSeparator;
128
+ }
129
+ }
130
+ /**
131
+ * Encodes a chat into a single array of tokens.
132
+ * Warning: gpt-3.5-turbo and gpt-4 chat format may change over time.
133
+ * Returns tokens assuming the 'gpt-3.5-turbo-0301' / 'gpt-4-0314' format.
134
+ * Based on OpenAI's guidelines: https://github.com/openai/openai-python/blob/main/chatml.md
135
+ * Also mentioned in section 6 of this document: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
136
+ */
137
+ encodeChat(chat, model = this.modelName) {
138
+ return [...this.encodeChatGenerator(chat, model)].flat();
96
139
  }
97
140
  /**
98
141
  * @returns {false | number} false if token limit is exceeded, otherwise the number of tokens
99
142
  */
100
- isWithinTokenLimit(text, tokenLimit) {
101
- const tokenGenerator = this.encodeGenerator(text);
143
+ isWithinTokenLimit(input, tokenLimit) {
144
+ const tokenGenerator = typeof input === 'string'
145
+ ? this.encodeGenerator(input)
146
+ : this.encodeChatGenerator(input);
102
147
  let count = 0;
103
148
  for (const tokens of tokenGenerator) {
104
149
  count += tokens.length;
@@ -1 +1 @@
1
- {"version":3,"file":"GptEncoding.js","sourceRoot":"","sources":["../src/GptEncoding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GptEncoding.js","sourceRoot":"","sources":["../src/GptEncoding.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { GptEncoding } from './GptEncoding.js';
4
- import { encodingNames } from './mapping.js';
4
+ import { chatModelParams, encodingNames, } from './mapping.js';
5
5
  import { resolveEncoding } from './resolveEncoding.js';
6
6
  const sharedResults = {
7
7
  space: [220],
@@ -129,6 +129,60 @@ describe.each(encodingNames)('%s', (encodingName) => {
129
129
  });
130
130
  });
131
131
  });
132
+ const chatModelNames = Object.keys(chatModelParams);
133
+ const exampleMessages = [
134
+ {
135
+ role: 'system',
136
+ content: 'You are a helpful, pattern-following assistant that translates corporate jargon into plain English.',
137
+ },
138
+ {
139
+ role: 'system',
140
+ name: 'example_user',
141
+ content: 'New synergies will help drive top-line growth.',
142
+ },
143
+ {
144
+ role: 'system',
145
+ name: 'example_assistant',
146
+ content: 'Things working well together will increase revenue.',
147
+ },
148
+ {
149
+ role: 'system',
150
+ name: 'example_user',
151
+ content: "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage.",
152
+ },
153
+ {
154
+ role: 'system',
155
+ name: 'example_assistant',
156
+ content: "Let's talk later when we're less busy about how to do better.",
157
+ },
158
+ {
159
+ role: 'user',
160
+ content: "This late pivot means we don't have time to boil the ocean for the client deliverable.",
161
+ },
162
+ ];
163
+ describe.each(chatModelNames)('%s', (modelName) => {
164
+ const encoding = GptEncoding.getEncodingApiForModel(modelName, resolveEncoding);
165
+ const expectedEncodedLength = modelName.startsWith('gpt-3.5-turbo')
166
+ ? 127
167
+ : 121;
168
+ describe('chat functionality', () => {
169
+ it('encodes a chat correctly', () => {
170
+ const encoded = encoding.encodeChat(exampleMessages);
171
+ expect(encoded).toMatchSnapshot();
172
+ expect(encoded).toHaveLength(expectedEncodedLength);
173
+ const decoded = encoding.decode(encoded);
174
+ expect(decoded).toMatchSnapshot();
175
+ });
176
+ it('isWithinTokenLimit: false', () => {
177
+ const isWithinTokenLimit = encoding.isWithinTokenLimit(exampleMessages, 50);
178
+ expect(isWithinTokenLimit).toBe(false);
179
+ });
180
+ it('isWithinTokenLimit: true (number)', () => {
181
+ const isWithinTokenLimit = encoding.isWithinTokenLimit(exampleMessages, 150);
182
+ expect(isWithinTokenLimit).toBe(expectedEncodedLength);
183
+ });
184
+ });
185
+ });
132
186
  function loadTestPlans() {
133
187
  const testPlanPath = path.join(__dirname, '../data/TestPlans.txt');
134
188
  const testPlanData = fs.readFileSync(testPlanPath, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"GptEncoding.test.js","sourceRoot":"","sources":["../src/GptEncoding.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAqB,aAAa,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,CAAC,GAAG,CAAC;IACZ,GAAG,EAAE,CAAC,GAAG,CAAC;IACV,mBAAmB,EAAE,CAAC,IAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAK,CAAC;IAC7C,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAM,CAAC;IAC/B,mBAAmB,EAAE,CAAC,KAAM,EAAE,KAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,uBAAuB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;IAClE,6CAA6C,EAAE;QAC7C,IAAK,EAAE,KAAM,EAAE,KAAM,EAAE,GAAG,EAAE,KAAM,EAAE,KAAM,EAAE,IAAK,EAAE,IAAK;KACzD;IACD,8CAA8C,EAAE;QAC9C,KAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QAC1E,EAAE,EAAE,EAAE,EAAE,EAAE;KACX;CACF,CAAA;AAED,MAAM,OAAO,GAAG;IACd,WAAW,EAAE;QACX,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,GAAG,EAAE,CAAC,GAAG,CAAC;QACV,mBAAmB,EAAE,CAAC,IAAK,EAAE,GAAG,EAAE,IAAK,EAAE,IAAK,CAAC;QAC/C,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAM,CAAC;QAC/B,mBAAmB,EAAE,CAAC,KAAM,EAAE,KAAM,EAAE,GAAG,EAAE,IAAK,EAAE,KAAM,EAAE,GAAG,EAAE,GAAG,CAAC;QACnE,uBAAuB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;QAClE,6CAA6C,EAAE;YAC7C,IAAK,EAAE,IAAK,EAAE,GAAG,EAAE,KAAM,EAAE,GAAG,EAAE,IAAK;SACtC;QACD,8CAA8C,EAAE;YAC9C,KAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAK,EAAE,GAAG,EAAE,IAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAM,EAAE,EAAE,EAAE,GAAG;YACtE,IAAK,EAAE,KAAM;SACd;KACF;IACD,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;CACe,CAAA;AAEzC,mEAAmE;AACnE,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;AAEjC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,YAA0B,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;IAE1E,MAAM,EACJ,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,MAAM,EACN,kBAAkB,GACnB,GAAG,QAAQ,CAAA;IAEZ,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEpC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YACtB,MAAM,GAAG,GAAG,EAAE,CAAA;YACd,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACf,MAAM,GAAG,GAAG,GAAG,CAAA;YACf,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACb,MAAM,GAAG,GAAG,IAAI,CAAA;YAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,GAAG,GAAG,mBAAmB,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,aAAa,CAAA;YACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG,mBAAmB,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,GAAG,GAAG,mBAAmB,CAAA;YAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9C,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,KAAK,SAAS,CAAC,CAAC,wBAAwB;YACtC,MAAM,GAAG,GAAG,mBAAmB,CAAA;YAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBAC/B,4CAA4C;gBAC5C,MAAM,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;aACnC;QACH,CAAC;QAED,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,SAAS,GAAG,oBAAoB,CAAC,wBAAwB,EAAE,CAAC,CAAA;YAClE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACnD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;aACvC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG,6CAA6C,CAAA;YAEzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,8CAA8C,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnE,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACtD,EAAE,CAAC,WAAW,MAAM,EAAE,EAAE,GAAG,EAAE;gBAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,WAAW,MAAM,EAAE,EAAE,GAAG,EAAE;gBAC3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,SAAS,aAAa;IACpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAA;IAClE,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IAC1D,MAAM,KAAK,GAGP;QACF,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAA;IACD,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxE,IAAI,CAAC,gBAAgB,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;YAAE,OAAM;QAC5D,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAiB,CAAA;QACpE,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;YACvB,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACxD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SACxD,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"GptEncoding.test.js","sourceRoot":"","sources":["../src/GptEncoding.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { chatModelParams, modelToEncodingMap } from '../mapping.js';
5
+ // eslint-disable-next-line no-underscore-dangle
6
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
+ const chatModels = Object.keys(chatModelParams);
8
+ const template = await fs.readFile(path.join(__dirname, '../encoding/cl100k_base.ts'), 'utf8');
9
+ await Promise.all(Object.entries(modelToEncodingMap).map(async ([modelName, encoding]) => {
10
+ await fs.mkdir(path.join(__dirname, '../model'), { recursive: true });
11
+ const isChatModel = chatModels.includes(modelName);
12
+ const content = isChatModel
13
+ ? template.replace(`getEncodingApi('cl100k_base'`, `getEncodingApiForModel('${modelName}'`)
14
+ : `// eslint-disable-next-line no-restricted-exports, import/no-default-export\nexport { default } from '../encoding/${encoding}.js'\nexport * from '../encoding/${encoding}.js'\n`;
15
+ await fs.writeFile(path.join(__dirname, `../model/${modelName}.ts`), content);
16
+ // eslint-disable-next-line no-console
17
+ console.log(`encoding/${modelName}.ts`);
18
+ }));
19
+ //# sourceMappingURL=generateByModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateByModel.js","sourceRoot":"","sources":["../../src/codegen/generateByModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEnE,gDAAgD;AAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAE/C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAClD,MAAM,CACP,CAAA;AAED,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE;IACrE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,QAAQ,CAAC,OAAO,CACd,8BAA8B,EAC9B,2BAA2B,SAAS,GAAG,CACxC;QACH,CAAC,CAAC,qHAAqH,QAAQ,oCAAoC,QAAQ,QAAQ,CAAA;IACrL,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,SAAS,KAAK,CAAC,EAChD,OAAO,CACR,CAAA;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,KAAK,CAAC,CAAA;AACzC,CAAC,CAAC,CACH,CAAA"}
@@ -20,7 +20,7 @@ const processFilesInDirectory = async (directoryPath, fn) => {
20
20
  };
21
21
  // eslint-disable-next-line no-underscore-dangle
22
22
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
23
- await processFilesInDirectory(path.join(__dirname, '../data'), async (filePath) => {
23
+ await processFilesInDirectory(path.join(__dirname, '../../data'), async (filePath) => {
24
24
  if (!filePath.endsWith('.tiktoken'))
25
25
  return;
26
26
  const modelName = path.basename(filePath, '.tiktoken');
@@ -30,9 +30,9 @@ await processFilesInDirectory(path.join(__dirname, '../data'), async (filePath)
30
30
  const [token, rank] = x.split(' ');
31
31
  return [token, Number.parseInt(rank, 10)];
32
32
  });
33
- await fs.mkdir(path.join(__dirname, 'models'), { recursive: true });
34
- await fs.writeFile(path.join(__dirname, `models/${modelName}.js`), `/* eslint-disable */\n// @ts-nocheck\n// prettier-ignore\n/** @type {[string, number][]} */\nconst encoder = ${JSON.stringify(encoder)};\nexport default encoder;`);
33
+ await fs.mkdir(path.join(__dirname, '../encodings'), { recursive: true });
34
+ await fs.writeFile(path.join(__dirname, `../encodings/${modelName}.js`), `/* eslint-disable */\n// @ts-nocheck\n// prettier-ignore\n/** @type {[string, number][]} */\nconst encoder = ${JSON.stringify(encoder)};\nexport default encoder;`);
35
35
  // eslint-disable-next-line no-console
36
36
  console.log(`Wrote ${modelName}.js`);
37
37
  });
38
- //# sourceMappingURL=generateJsModels.js.map
38
+ //# sourceMappingURL=generateJsEncodings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateJsEncodings.js","sourceRoot":"","sources":["../../src/codegen/generateJsEncodings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAInC,MAAM,uBAAuB,GAAG,KAAK,EACnC,aAAqB,EACrB,EAAoB,EACL,EAAE;IACjB,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAEtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,uCAAuC;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,SAAQ;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACpD,4CAA4C;YAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;SACnB;KACF;IAAC,OAAO,KAAK,EAAE;QACd,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;KAC3C;AACH,CAAC,CAAA;AAED,gDAAgD;AAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D,MAAM,uBAAuB,CAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAClC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAM;IAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAK,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,SAAS,KAAK,CAAC,EACpD,gHAAgH,IAAI,CAAC,SAAS,CAC5H,OAAO,CACR,4BAA4B,CAC9B,CAAA;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,KAAK,CAAC,CAAA;AACtC,CAAC,CACF,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { GptEncoding } from '../GptEncoding.js';
2
2
  export * from '../specialTokens.js';
3
3
  declare const api: GptEncoding;
4
- declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => number[], encodeGenerator: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => Generator<number[], number, unknown>, isWithinTokenLimit: (text: string, tokenLimit: number) => number | false;
5
- export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, };
4
+ declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, encodeOptions?: import("../GptEncoding.js").EncodeOptions) => number[], encodeGenerator: (lineToEncode: string, { allowedSpecial, disallowedSpecial, }?: import("../GptEncoding.js").EncodeOptions) => Generator<number[], number, undefined>, isWithinTokenLimit: (input: string | Iterable<import("../GptEncoding.js").ChatMessage>, tokenLimit: number) => number | false, encodeChat: (chat: readonly import("../GptEncoding.js").ChatMessage[], model?: "gpt-4" | "gpt-4-32k" | "gpt-4-0314" | "gpt-4-32k-0314" | "gpt-3.5-turbo" | "gpt-3.5-turbo-0301" | "text-davinci-003" | "text-davinci-002" | "text-davinci-001" | "text-curie-001" | "text-babbage-001" | "text-ada-001" | "davinci" | "curie" | "babbage" | "ada" | "code-davinci-002" | "code-davinci-001" | "code-cushman-002" | "code-cushman-001" | "davinci-codex" | "cushman-codex" | "text-davinci-edit-001" | "code-davinci-edit-001" | "text-embedding-ada-002" | "text-similarity-davinci-001" | "text-similarity-curie-001" | "text-similarity-babbage-001" | "text-similarity-ada-001" | "text-search-davinci-doc-001" | "text-search-curie-doc-001" | "text-search-babbage-doc-001" | "text-search-ada-doc-001" | "code-search-babbage-code-001" | "code-search-ada-code-001" | undefined) => number[], encodeChatGenerator: (chat: Iterable<import("../GptEncoding.js").ChatMessage>, model?: "gpt-4" | "gpt-4-32k" | "gpt-4-0314" | "gpt-4-32k-0314" | "gpt-3.5-turbo" | "gpt-3.5-turbo-0301" | "text-davinci-003" | "text-davinci-002" | "text-davinci-001" | "text-curie-001" | "text-babbage-001" | "text-ada-001" | "davinci" | "curie" | "babbage" | "ada" | "code-davinci-002" | "code-davinci-001" | "code-cushman-002" | "code-cushman-001" | "davinci-codex" | "cushman-codex" | "text-davinci-edit-001" | "code-davinci-edit-001" | "text-embedding-ada-002" | "text-similarity-davinci-001" | "text-similarity-curie-001" | "text-similarity-babbage-001" | "text-similarity-ada-001" | "text-search-davinci-doc-001" | "text-search-curie-doc-001" | "text-search-babbage-doc-001" | "text-search-ada-doc-001" | "code-search-babbage-code-001" | "code-search-ada-code-001" | undefined) => Generator<number[], void, undefined>;
5
+ export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeChat, encodeChatGenerator, encodeGenerator, isWithinTokenLimit, };
6
6
  export default api;
@@ -4,8 +4,8 @@ import encoder from '../encodings/cl100k_base.js';
4
4
  import { GptEncoding } from '../GptEncoding.js';
5
5
  export * from '../specialTokens.js';
6
6
  const api = GptEncoding.getEncodingApi('cl100k_base', () => convertTokenBytePairEncodingFromTuples(encoder));
7
- const { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, } = api;
8
- export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, };
7
+ const { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, encodeChat, encodeChatGenerator, } = api;
8
+ export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeChat, encodeChatGenerator, encodeGenerator, isWithinTokenLimit, };
9
9
  // eslint-disable-next-line import/no-default-export
10
10
  export default api;
11
11
  //# sourceMappingURL=cl100k_base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cl100k_base.js","sourceRoot":"","sources":["../../src/encoding/cl100k_base.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAA;AACrG,OAAO,OAAO,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,cAAc,qBAAqB,CAAA;AAEnC,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CACzD,sCAAsC,CAAC,OAAO,CAAC,CAChD,CAAA;AACD,MAAM,EACJ,MAAM,EACN,oBAAoB,EACpB,eAAe,EACf,MAAM,EACN,eAAe,EACf,kBAAkB,GACnB,GAAG,GAAG,CAAA;AACP,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,eAAe,EACf,MAAM,EACN,eAAe,EACf,kBAAkB,GACnB,CAAA;AACD,oDAAoD;AACpD,eAAe,GAAG,CAAA"}
1
+ {"version":3,"file":"cl100k_base.js","sourceRoot":"","sources":["../../src/encoding/cl100k_base.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAA;AACrG,OAAO,OAAO,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,cAAc,qBAAqB,CAAA;AAEnC,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CACzD,sCAAsC,CAAC,OAAO,CAAC,CAChD,CAAA;AACD,MAAM,EACJ,MAAM,EACN,oBAAoB,EACpB,eAAe,EACf,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,mBAAmB,GACpB,GAAG,GAAG,CAAA;AACP,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,eAAe,EACf,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,CAAA;AACD,oDAAoD;AACpD,eAAe,GAAG,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { GptEncoding } from '../GptEncoding.js';
2
2
  export * from '../specialTokens.js';
3
3
  declare const api: GptEncoding;
4
- declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => number[], encodeGenerator: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => Generator<number[], number, unknown>, isWithinTokenLimit: (text: string, tokenLimit: number) => number | false;
4
+ declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, encodeOptions?: import("../GptEncoding.js").EncodeOptions) => number[], encodeGenerator: (lineToEncode: string, { allowedSpecial, disallowedSpecial, }?: import("../GptEncoding.js").EncodeOptions) => Generator<number[], number, undefined>, isWithinTokenLimit: (input: string | Iterable<import("../GptEncoding.js").ChatMessage>, tokenLimit: number) => number | false;
5
5
  export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, };
6
6
  export default api;
@@ -1,6 +1,6 @@
1
1
  import { GptEncoding } from '../GptEncoding.js';
2
2
  export * from '../specialTokens.js';
3
3
  declare const api: GptEncoding;
4
- declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => number[], encodeGenerator: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => Generator<number[], number, unknown>, isWithinTokenLimit: (text: string, tokenLimit: number) => number | false;
4
+ declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, encodeOptions?: import("../GptEncoding.js").EncodeOptions) => number[], encodeGenerator: (lineToEncode: string, { allowedSpecial, disallowedSpecial, }?: import("../GptEncoding.js").EncodeOptions) => Generator<number[], number, undefined>, isWithinTokenLimit: (input: string | Iterable<import("../GptEncoding.js").ChatMessage>, tokenLimit: number) => number | false;
5
5
  export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, };
6
6
  export default api;
@@ -1,6 +1,6 @@
1
1
  import { GptEncoding } from '../GptEncoding.js';
2
2
  export * from '../specialTokens.js';
3
3
  declare const api: GptEncoding;
4
- declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => number[], encodeGenerator: (lineToEncode: string, allowedSpecial?: Set<string>, disallowedSpecial?: Set<string>) => Generator<number[], number, unknown>, isWithinTokenLimit: (text: string, tokenLimit: number) => number | false;
4
+ declare const decode: (inputTokensToDecode: Iterable<number>) => string, decodeAsyncGenerator: (inputTokensToDecode: AsyncIterable<number>) => AsyncGenerator<string, void, unknown>, decodeGenerator: (inputTokensToDecode: Iterable<number>) => Generator<string, void, unknown>, encode: (lineToEncode: string, encodeOptions?: import("../GptEncoding.js").EncodeOptions) => number[], encodeGenerator: (lineToEncode: string, { allowedSpecial, disallowedSpecial, }?: import("../GptEncoding.js").EncodeOptions) => Generator<number[], number, undefined>, isWithinTokenLimit: (input: string | Iterable<import("../GptEncoding.js").ChatMessage>, tokenLimit: number) => number | false;
5
5
  export { decode, decodeAsyncGenerator, decodeGenerator, encode, encodeGenerator, isWithinTokenLimit, };
6
6
  export default api;
package/esm/main.d.ts CHANGED
@@ -1 +1,2 @@
1
+ export { default } from './encoding/cl100k_base.js';
1
2
  export * from './encoding/cl100k_base.js';
package/esm/main.js CHANGED
@@ -1,2 +1,4 @@
1
+ // eslint-disable-next-line no-restricted-exports, import/no-default-export
2
+ export { default } from './encoding/cl100k_base.js';
1
3
  export * from './encoding/cl100k_base.js';
2
4
  //# sourceMappingURL=main.js.map
package/esm/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,cAAc,2BAA2B,CAAA"}
package/esm/mapping.d.ts CHANGED
@@ -5,7 +5,11 @@ export declare const r50k_base = "r50k_base";
5
5
  export declare const encodingNames: readonly ["cl100k_base", "p50k_base", "r50k_base", "p50k_edit"];
6
6
  export declare const modelToEncodingMap: {
7
7
  readonly 'gpt-4': "cl100k_base";
8
+ readonly 'gpt-4-32k': "cl100k_base";
9
+ readonly 'gpt-4-0314': "cl100k_base";
10
+ readonly 'gpt-4-32k-0314': "cl100k_base";
8
11
  readonly 'gpt-3.5-turbo': "cl100k_base";
12
+ readonly 'gpt-3.5-turbo-0301': "cl100k_base";
9
13
  readonly 'text-davinci-003': "p50k_base";
10
14
  readonly 'text-davinci-002': "p50k_base";
11
15
  readonly 'text-davinci-001': "r50k_base";
@@ -36,5 +40,38 @@ export declare const modelToEncodingMap: {
36
40
  readonly 'code-search-babbage-code-001': "r50k_base";
37
41
  readonly 'code-search-ada-code-001': "r50k_base";
38
42
  };
43
+ export interface ChatParameters {
44
+ messageSeparator: string;
45
+ roleSeparator: string;
46
+ }
47
+ declare const internalChatModelParams: {
48
+ 'gpt-3.5-turbo': {
49
+ messageSeparator: string;
50
+ roleSeparator: string;
51
+ };
52
+ 'gpt-3.5-turbo-0301': {
53
+ messageSeparator: string;
54
+ roleSeparator: string;
55
+ };
56
+ 'gpt-4': {
57
+ messageSeparator: string;
58
+ roleSeparator: string;
59
+ };
60
+ 'gpt-4-0314': {
61
+ messageSeparator: string;
62
+ roleSeparator: string;
63
+ };
64
+ 'gpt-4-32k': {
65
+ messageSeparator: string;
66
+ roleSeparator: string;
67
+ };
68
+ 'gpt-4-32k-0314': {
69
+ messageSeparator: string;
70
+ roleSeparator: string;
71
+ };
72
+ };
73
+ export declare const chatModelParams: Partial<Record<ModelName, ChatParameters>>;
39
74
  export type ModelName = keyof typeof modelToEncodingMap;
75
+ export type ChatModelName = keyof typeof internalChatModelParams;
40
76
  export type EncodingName = (typeof modelToEncodingMap)[ModelName];
77
+ export {};