Zum Hauptinhalt springen
clawam tools
Werkzeuge Dokumente Daoark EN Startseite Startseite / Entwicklerwerkzeuge › Startseite manifest.json = 0x4E00 && c <= 0x9FFF) cn++; else if (c === 32 || c === 9 || c === 10) spaces++; else if ((c >= 65 && c <= 90) || (c >= 97 && c <= 122) || (c >= 48 && c <= 57)) en++; else punct++; } // 英文词数(按空白切) var words = text.match(/[A-Za-z]+/g); var wordCount = words ? words.length : 0; // token 估算 // 经验:英文 1 token ≈ 0.75 词,中文 1 token ≈ 1.5 字,标点和空格约占 0.25 token var tokens = Math.ceil(wordCount * 1.33 + cn * 0.67 + punct * 0.25); if (tokens === 0 && chars > 0) tokens = Math.ceil(chars / 4); return { chars: chars, words: wordCount, tokens: tokens, en: en, cn: cn, punct: punct, spaces: spaces }; } // 主流模型上下文窗口大小 var MODEL_CTX = { 'gpt4': { name: 'GPT-4', ctx: 128000, cost_per_1k_input: 0.03, cost_per_1k_output: 0.06 }, 'claude': { name: 'Claude 3', ctx: 200000, cost_per_1k_input: 0.015, cost_per_1k_output: 0.075 }, 'gemini': { name: 'Gemini Pro', ctx: 1000000, cost_per_1k_input: 0.00125, cost_per_1k_output: 0.005 }, 'llama': { name: 'Llama 3', ctx: 128000, cost_per_1k_input: 0, cost_per_1k_output: 0 } }; function count() { var text = getVal('text-a'); if (!text) { showError('请输入文本'); return; } var model = getVal('model'); var info = MODEL_CTX[model]; var s = countTokens(text); var pct = s.tokens / info.ctx * 100; var costIn = (s.tokens / 1000) * info.cost_per_1k_input; var out = '字符数: ' + s.chars + ' (英文 ' + s.en + ' + 中文 ' + s.cn + ' + 标点 ' + s.punct + ' + 空白 ' + s.spaces + ')\n' + '英文词数: ' + s.words + '\n' + 'Token 估算(' + info.name + '): ' + s.tokens + '\n' + '上下文窗口: ' + info.ctx.toLocaleString() + ' tokens (' + pct.toFixed(2) + '%)\n' + '成本估算(输入): $' + costIn.toFixed(6) + (info.cost_per_1k_input > 0 ? '' : '(开源)'); if (pct > 80) out += '\n 已使用 80%+ 上下文,建议精简'; else if (pct > 50) out += '\n 已用 50% 上下文'; showResult(out, info.name + ' 估算, 字符 ' + s.chars); } $('btn-count').addEventListener('click', count); $('btn-clear').addEventListener('click', function() { var inputs = document.querySelectorAll('input,textarea,select'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].tagName === 'SELECT') inputs[i].selectedIndex = 0; else inputs[i].value = inputs[i].defaultValue; } var ra = $('result-area'); ra.hidden = true; ra.style.display = 'none'; var em = $('error-msg'); em.hidden = true; em.style.display = 'none'; }); // 自动统计 $('btn-count').addEventListener('click', count); // 输入时也实时统计(轻量) var t = null; $('text-a').addEventListener('input', function() { clearTimeout(t); t = setTimeout(count, 300); }); })();