package com.yanzhu.module.ai.framework.ai.compat;

import cn.hutool.core.util.StrUtil;

/**
 * 简单的 Token 估算器实现
 * 中文：1 字符 ≈ 1 Token
 * 英文：1 单词 ≈ 1.3 Token
 * 
 * @author xiaoxin
 */
public class SimpleTokenCountEstimator implements TokenCountEstimator {

    @Override
    public int estimate(String text) {
        if (StrUtil.isEmpty(text)) {
            return 0;
        }

        int chineseChars = 0;
        int englishWords = 0;
        // 简单统计中英文
        for (char c : text.toCharArray()) {
            if (c >= 0x4E00 && c <= 0x9FA5) {
                chineseChars++;
            }
        }
        // 英文单词估算
        String[] words = text.split("\\s+");
        for (String word : words) {
            if (word.matches(".*[a-zA-Z].*")) {
                englishWords++;
            }
        }
        return chineseChars + (int) (englishWords * 1.3);
    }

}
