/
outbreak
/
kilocode
Обзор
Документация
Войти
/
outbreak
/
kilocode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/utils/countTokens.ts
45 строк
1 KB
Chris Estreich
Count tokens worker (#3037)
29 апр 2025, 22:29
Не верифицирован
29 апр 2025, 22:29
65cb924
Код
Авторство
О чём код?
import { Anthropic } from "@anthropic-ai/sdk" import workerpool from "workerpool" import { countTokensResultSchema } from "../workers/types" import { tiktoken } from "./tiktoken" let pool: workerpool.Pool | null | undefined = undefined export type CountTokensOptions = { useWorker?: boolean } export async function countTokens( content: Anthropic.Messages.ContentBlockParam[], { useWorker = true }: CountTokensOptions = {}, ): Promise<number> { // Lazily create the worker pool if it doesn't exist. if (useWorker && typeof pool === "undefined") { pool = workerpool.pool(__dirname + "/workers/countTokens.js", { maxWorkers: 1, maxQueueSize: 10, }) } // If the worker pool doesn't exist or the caller doesn't want to use it // then, use the non-worker implementation. if (!useWorker || !pool) { return tiktoken(content) } try { const data = await pool.exec("countTokens", [content]) const result = countTokensResultSchema.parse(data) if (!result.success) { throw new Error(result.error) } return result.count } catch (error) { pool = null console.error(error) return tiktoken(content) } }