Files
text-pick-card/server/tokens.ts
Roog (顾新培) cf457e8349 main: 初始化 Face to API 项目
- 添加前端抽卡台与模型配置界面
- 添加 Express API 服务与多厂商模型调用适配
- 配置本地环境示例、构建脚本和忽略规则
2026-05-27 11:10:40 +08:00

33 lines
787 B
TypeScript

export type Usage = {
inputTokens: number;
outputTokens: number;
totalTokens: number;
estimated: boolean;
};
export const estimateTokens = (text: string) => {
if (!text.trim()) {
return 0;
}
const ascii = text.match(/[\x00-\x7F]/g)?.length ?? 0;
const nonAscii = text.length - ascii;
return Math.max(1, Math.ceil(ascii / 4 + nonAscii / 1.7));
};
export const normalizeUsage = (
prompt: string,
output: string,
usage?: Partial<Usage> | null
): Usage => {
const inputTokens = usage?.inputTokens ?? estimateTokens(prompt);
const outputTokens = usage?.outputTokens ?? estimateTokens(output);
return {
inputTokens,
outputTokens,
totalTokens: usage?.totalTokens ?? inputTokens + outputTokens,
estimated: usage?.estimated ?? !usage
};
};