orgbench-review / token-usage.js
happy8825's picture
static mirror: client, seeds, results (part 6)
aa80aba verified
Raw History Blame Contribute Delete
2.1 kB
'use strict';
const TokenUsage={
aggregate(answers){
const t={responses:0,input_total:0,output_total:0,input_avg:null,output_avg:null};
for(const a of answers){const u=a?.usage||{},i=u.prompt_tokens??u.input_tokens,o=u.completion_tokens??u.output_tokens;if(!Number.isInteger(i)||!Number.isInteger(o)||i<0||o<0)continue;t.responses++;t.input_total+=i;t.output_total+=o;}
if(t.responses){t.input_avg=t.input_total/t.responses;t.output_avg=t.output_total/t.responses;}return t;
},
format(n,avg=false){return typeof n==='number'&&Number.isFinite(n)?n.toLocaleString('en-US',{maximumFractionDigits:avg?1:0}):'โ€”';},
table(d,condition){
const e=s=>String(s??'').replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
return `<div class="table-wrap token-summary"><table><caption>์„ฑ๋Šฅ ยท ์‘๋‹ต ์ƒ์„ฑ ํ† ํฐ</caption><thead><tr><th>Model</th><th>์‘๋‹ต / ์ฑ„์ </th><th>์ •ํ™•๋„</th><th>์ด ์ž…๋ ฅ ํ† ํฐ</th><th>๋ฌธํ•ญ๋‹น ํ‰๊ท  ์ž…๋ ฅ</th><th>์ด ์ถœ๋ ฅ ํ† ํฐ</th><th>๋ฌธํ•ญ๋‹น ํ‰๊ท  ์ถœ๋ ฅ</th><th>ํ† ํฐ ์ง‘๊ณ„ ๋ฌธํ•ญ</th></tr></thead><tbody>${d.settings.filter(s=>s.condition===condition).map(s=>{const t=s.tokens,known=t&&t.responses>0;return `<tr><th>${e(s.label)}</th><td>${s.read} / ${s.graded}</td><td>${CleanResults.cell({n:d.total,graded:s.graded,correct:s.correct})}</td><td>${known?this.format(t.input_total):'โ€”'}</td><td>${known?this.format(t.input_avg,true):'โ€”'}</td><td>${known?this.format(t.output_total):'โ€”'}</td><td>${known?this.format(t.output_avg,true):'โ€”'}</td><td>${t?`${t.responses} / ${s.read}`:'์ง‘๊ณ„ ๋Œ€๊ธฐ'}</td></tr>`;}).join('')}</tbody></table></div><p class="caption">์™„๋ฃŒ๋œ ์‘๋‹ต ์ค‘ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธฐ๋ก๋œ ๋ฌธํ•ญ ๊ธฐ์ค€ ยท ์ฑ„์ /์ž„๋ฒ ๋”ฉ/์‹คํŒจ ์žฌ์‹œ๋„ ์ œ์™ธ ยท ์ž…๋ ฅ์—๋Š” ๋ณด๊ณ ๋œ ์บ์‹œ ํ† ํฐ ํฌํ•จ ยท ๋ชจ๋ธ๋ณ„ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ฌ๋ผ ๋™์ผ ์ž๋ฃŒ๋„ ํ† ํฐ ์ˆ˜๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.</p>`;
},
answer(a){const t=this.aggregate([a]);return t.responses?`์ž…๋ ฅ ${this.format(t.input_total)} ยท ์ถœ๋ ฅ ${this.format(t.output_total)} ํ† ํฐ`:'ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ๋ฏธ๊ธฐ๋ก';}
};