main: 初始化 Face to API 项目
- 添加前端抽卡台与模型配置界面 - 添加 Express API 服务与多厂商模型调用适配 - 配置本地环境示例、构建脚本和忽略规则
This commit is contained in:
32
server/tokens.ts
Normal file
32
server/tokens.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
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
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user