{"id":21343,"date":"2026-10-05T15:58:43","date_gmt":"2026-10-05T13:58:43","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?page_id=21343"},"modified":"2026-10-05T16:00:19","modified_gmt":"2026-10-05T14:00:19","slug":"llm-model-comparison-test-log","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/","title":{"rendered":"LLM Model Comparison and Test Log"},"content":{"rendered":"<style>.lw-ai{font:inherit;color:var(--text-primary);min-width:0}.lw-ai *{box-sizing:border-box}.lw-ai .ai-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.lw-ai label{display:block;font-weight:600;margin:0 0 6px}.lw-ai input,.lw-ai select,.lw-ai textarea{width:100%;max-width:100%;min-width:0;background:var(--bg-body,var(--bg-panel));color:var(--text-primary);border:1px solid var(--border);border-radius:6px;padding:10px;font:inherit}.lw-ai textarea{height:160px;resize:vertical}.lw-ai .ai-field{min-width:0}.lw-ai [aria-invalid=true]{border:2px solid #d44}.lw-ai .ai-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.lw-ai button{font:inherit;min-height:44px}.lw-ai button:disabled{opacity:.5;cursor:not-allowed}.lw-ai .ai-status{color:var(--text-primary);border-left:3px solid var(--accent);padding-left:10px}.lw-ai .ai-result{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:18px;overflow-wrap:anywhere}.lw-ai .ai-result:empty{display:none}.lw-ai dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}.lw-ai dt,.lw-ai dd{margin:0;padding:8px 0;border-bottom:1px solid var(--border)}.lw-ai .ai-scroll{overflow:auto;max-width:100%}.lw-ai table{border-collapse:collapse;width:100%;font-size:.9rem}.lw-ai th,.lw-ai td{padding:9px;border:1px solid var(--border);text-align:left;vertical-align:top;width:auto!important}.lw-ai th{font-weight:700}.lw-ai .ai-scroll th,.lw-ai .ai-scroll td{min-width:120px}.lw-ai .ai-caption{font-size:.9rem;color:var(--text-secondary);line-height:1.6}.lw-ai h2{margin-top:30px}.lw-ai .ai-chart{width:100%;height:240px;display:block;background:var(--bg-body);border:1px solid var(--border)}.lw-ai .ai-private{margin:18px 0}.lw-ai details{margin:16px 0}.lw-ai summary{cursor:pointer;font-weight:600}.lw-ai a{color:var(--accent)}@media(max-width:600px){.lw-ai .ai-form{grid-template-columns:1fr}.lw-ai dl{grid-template-columns:1fr}.lw-ai dd{padding-top:0}.lw-ai .ai-result{padding:12px}.lw-ai .ai-chart{height:220px}}<\/style>\n<div class=\"lw-ai\" data-rc-private data-mp-mask>\n<p>Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.<\/p>\n<p class=\"ai-caption\">Calculation and file import run in the browser. These tools do not transmit inputs. Existing website measurement records tool identity and button labels.<\/p>\n<p class=\"ai-caption\">Defaults are freely chosen examples. Results are planning estimates.<\/p>\n<p><script type=\"application\/json\" data-config>{\"kind\": \"models\", \"slug\": \"llm-model-comparison-test-log\", \"title\": \"LLM Model Comparison and Test Log\", \"intro\": \"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.\", \"fields\": [{\"key\": \"model\", \"label\": \"Model name\", \"value\": \"Example model\", \"type\": \"text\"}, {\"key\": \"revision\", \"label\": \"Revision \/ hash\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"language\", \"label\": \"Test language\", \"value\": \"de\", \"options\": [{\"value\": \"de\", \"label\": \"DE\"}, {\"value\": \"en\", \"label\": \"EN\"}, {\"value\": \"pl\", \"label\": \"PL\"}], \"type\": \"select\"}, {\"key\": \"task\", \"label\": \"Task \/ test ID\", \"value\": \"task-01\", \"type\": \"text\"}, {\"key\": \"hardware\", \"label\": \"Hardware\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"runtime\", \"label\": \"Runtime version\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"context\", \"label\": \"Context tokens (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"outputTokens\", \"label\": \"Output tokens (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"temperature\", \"label\": \"Temperature (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"template\", \"label\": \"Prompt template \/ version\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"quant\", \"label\": \"Quantization\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"license\", \"label\": \"License \/ source link\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"sizeGiB\", \"label\": \"Artifact size GiB (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"latencyMs\", \"label\": \"Latency ms (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"tokensPerSecond\", \"label\": \"Tokens\/s (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"quality\", \"label\": \"Recorded score 0\u2013100 (optional)\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"reference\", \"label\": \"Reference \/ scoring rubric\", \"value\": \"\", \"type\": \"text\"}, {\"key\": \"answer\", \"label\": \"Model answer \/ note\", \"value\": \"\", \"type\": \"text\"}], \"note\": \"Comparisons require matching task IDs and comparable hardware, context, output length, runtime, quantization, temperature and prompt template. Scores are manually recorded. License links and revisions document provenance, not automatic permission. CSV: UTF-8, comma-separated columns, first row containing exported keys; decimal commas can appear in quoted values. JSON: array of rows or tool export. Maximum 2000 rows and 2 MB.\", \"sources\": [[\"Ollama model metadata\", \"https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/openapi.yaml\"]], \"lang\": \"en\", \"common\": {\"calculate\": \"Calculate\", \"reset\": \"Reset example\", \"json\": \"Export JSON\", \"csv\": \"Export CSV\", \"error\": \"Invalid inputs. Check marked fields and model constraints.\", \"input\": \"Inputs\", \"result\": \"Result\", \"unknown\": \"Not calculable \/ not documented\", \"yes\": \"Within memory budget\", \"no\": \"Memory budget exceeded\", \"privacy\": \"Calculation and file import run in the browser. These tools do not transmit inputs. Existing website measurement records tool identity and button labels.\", \"example\": \"Defaults are freely chosen examples. Results are planning estimates.\", \"sources\": \"Sources and limits\", \"faq\": \"Questions and answers\", \"import\": \"Import file\", \"paste\": \"JSON \/ CSV (max. 2 MB)\", \"add\": \"Add test row\", \"clear\": \"Clear test data\", \"filter\": \"Filter language\", \"all\": \"All languages\", \"modelNotice\": \"Recorded test results, no automatic quality rankings. Empty fields indicate missing data. Export columns use fixed English keys.\", \"importSuccess\": \"Metadata imported. Cache architecture remains unknown pending verification. Check model size and head width.\", \"importMeta\": \"Import Ollama metadata\", \"plan\": \"Verification steps\"}, \"labels\": {\"weights\": \"Weights (GiB)\", \"cache\": \"KV cache (GiB)\", \"runtime\": \"Runtime (GiB)\", \"other\": \"Other usage (GiB)\", \"reserve\": \"Headroom (GiB)\", \"total\": \"Total budget\", \"remaining\": \"Remaining (GiB)\", \"capital\": \"Capital allocation \/ month\", \"energy\": \"Electricity \/ month\", \"local\": \"Local \/ month\", \"cloud\": \"GPU rental \/ month\", \"api\": \"API \/ month\", \"crossover\": \"Curve: crossover at load hours\", \"localCash\": \"Local: net period incl. residual value\", \"cloudCash\": \"Cloud: period\", \"apiCash\": \"API: period\", \"download\": \"Theoretical download time (minutes)\", \"proven\": \"Documented entries\", \"open\": \"Open entries\", \"conflict\": \"Conflicts\"}}<\/script><\/p>\n<form novalidate>\n<div class=\"ai-form\">\n<div class=\"ai-field\"><label for=\"ai-models-model\">Model name<\/label><input type=\"text\" name=\"model\" id=\"ai-models-model\" value=\"Example model\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-revision\">Revision \/ hash<\/label><input type=\"text\" name=\"revision\" id=\"ai-models-revision\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-language\">Test language<\/label><select name=\"language\" id=\"ai-models-language\"><option value=\"de\" selected>DE<\/option><option value=\"en\">EN<\/option><option value=\"pl\">PL<\/option><\/select><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-task\">Task \/ test ID<\/label><input type=\"text\" name=\"task\" id=\"ai-models-task\" value=\"task-01\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-hardware\">Hardware<\/label><input type=\"text\" name=\"hardware\" id=\"ai-models-hardware\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-runtime\">Runtime version<\/label><input type=\"text\" name=\"runtime\" id=\"ai-models-runtime\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-context\">Context tokens (optional)<\/label><input type=\"text\" name=\"context\" id=\"ai-models-context\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-outputTokens\">Output tokens (optional)<\/label><input type=\"text\" name=\"outputTokens\" id=\"ai-models-outputTokens\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-temperature\">Temperature (optional)<\/label><input type=\"text\" name=\"temperature\" id=\"ai-models-temperature\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-template\">Prompt template \/ version<\/label><input type=\"text\" name=\"template\" id=\"ai-models-template\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-quant\">Quantization<\/label><input type=\"text\" name=\"quant\" id=\"ai-models-quant\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-license\">License \/ source link<\/label><input type=\"text\" name=\"license\" id=\"ai-models-license\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-sizeGiB\">Artifact size GiB (optional)<\/label><input type=\"text\" name=\"sizeGiB\" id=\"ai-models-sizeGiB\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-latencyMs\">Latency ms (optional)<\/label><input type=\"text\" name=\"latencyMs\" id=\"ai-models-latencyMs\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-tokensPerSecond\">Tokens\/s (optional)<\/label><input type=\"text\" name=\"tokensPerSecond\" id=\"ai-models-tokensPerSecond\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-quality\">Recorded score 0\u2013100 (optional)<\/label><input type=\"text\" name=\"quality\" id=\"ai-models-quality\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-reference\">Reference \/ scoring rubric<\/label><input type=\"text\" name=\"reference\" id=\"ai-models-reference\" value=\"\" maxlength=\"4000\"><\/div>\n<div class=\"ai-field\"><label for=\"ai-models-answer\">Model answer \/ note<\/label><input type=\"text\" name=\"answer\" id=\"ai-models-answer\" value=\"\" maxlength=\"4000\"><\/div>\n<\/div>\n<div class=\"ai-actions\"><button type=\"submit\">Add test row<\/button><button type=\"button\" data-reset>Reset example<\/button><\/div>\n<\/form>\n<details>\n<summary>Import file<\/summary>\n<p><label for=\"ai-paste\">JSON \/ CSV (max. 2 MB)<\/label><textarea id=\"ai-paste\" data-paste maxlength=\"2000000\"><\/textarea><\/p>\n<div class=\"ai-actions\"><button type=\"button\" data-import>Import file<\/button><\/div>\n<p><label for=\"ai-file\">Import file<\/label><input id=\"ai-file\" type=\"file\" accept=\".json,.csv\" data-file><\/details>\n<p><label for=\"ai-language\">Filter language<\/label><select id=\"ai-language\" data-language><option value=\"all\">All languages<\/option><option>de<\/option><option>en<\/option><option>pl<\/option><\/select><label for=\"ai-search\">Filter model \/ revision \/ test ID<\/label><input id=\"ai-search\" data-search type=\"text\" maxlength=\"4000\"><\/p>\n<div class=\"ai-actions\"><button type=\"button\" data-clear>Clear test data<\/button><\/div>\n<p class=\"ai-status\" data-status role=\"status\" aria-live=\"polite\">\n<div class=\"ai-result\" data-result data-rc-private data-mp-mask tabindex=\"0\"><\/div>\n<div class=\"ai-actions\"><button type=\"button\" data-export=\"json\">Export JSON<\/button><button type=\"button\" data-export=\"csv\">Export CSV<\/button><\/div>\n<h2>Sources and limits<\/h2>\n<p>Comparisons require matching task IDs and comparable hardware, context, output length, runtime, quantization, temperature and prompt template. Scores are manually recorded. License links and revisions document provenance, not automatic permission. CSV: UTF-8, comma-separated columns, first row containing exported keys; decimal commas can appear in quoted values. JSON: array of rows or tool export. Maximum 2000 rows and 2 MB.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/openapi.yaml\" rel=\"noopener noreferrer\" target=\"_blank\">Ollama model metadata<\/a><\/li>\n<\/ul>\n<p class=\"ai-caption\">Documentation checked: 05 October 2026.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>What limits apply to the result?<\/h3>\n<p>Comparisons require matching task IDs and comparable hardware, context, output length, runtime, quantization, temperature and prompt template. Scores are manually recorded. License links and revisions document provenance, not automatic permission. CSV: UTF-8, comma-separated columns, first row containing exported keys; decimal commas can appear in quoted values. JSON: array of rows or tool export. Maximum 2000 rows and 2 MB.<\/p>\n<h3>How are inputs processed?<\/h3>\n<p>Calculation and file import run in the browser. These tools do not transmit inputs. Existing website measurement records tool identity and button labels.<\/p>\n<\/div>\n<\/div>\n<p><script>(function(g){\n\"use strict\";\nconst G=1073741824;\nfunction num(v,min=0,max=1e12,int=false){if(typeof v===\"string\"){if(!v.trim())throw Error(\"value\");v=Number(v.trim().replace(\",\",\".\"));}if(!Number.isFinite(v)||v<min||v>max||(int&&!Number.isInteger(v)))throw Error(\"value\");return v;}\nfunction memory(x){\n const w=x.weightMode===\"file\"?num(x.file,0,1e6)*(x.fileUnit===\"GB\"?1e9:G):num(x.params,.001,1e6)*1e9*num(x.bits,.1,64)\/8;\n let kv=null;\n if(x.arch===\"dense\")kv=num(x.layers,1,10000,true)*num(x.heads,1,10000,true)*num(x.dim,1,10000,true)*num(x.tokens,1,1e7,true)*num(x.seq,1,10000,true)*(num(x.kbytes,.1,16)+num(x.vbytes,.1,16));\n if(x.arch===\"manual\")kv=num(x.cache,0,1e6)*G;\n const runtime=num(x.runtime,0,1e6)*G,other=num(x.other,0,1e6)*G,reserve=num(x.reserve,0,1e6)*G,capacity=num(x.capacity,.01,1e6)*G;\n const total=kv===null?null:w+kv+runtime+other+reserve;\n return {weights:w\/G,cache:kv===null?null:kv\/G,runtime:runtime\/G,other:other\/G,reserve:reserve\/G,total:total===null?null:total\/G,capacity:capacity\/G,remaining:total===null?null:(capacity-total)\/G,fit:total===null?null:total<=capacity};\n}\nfunction costs(x){\n const purchase=num(x.purchase),extra=num(x.extra),resale=num(x.resale),months=num(x.months,1,600,true),hours=num(x.hours,0,744),load=num(x.load,0,744),idle=num(x.idle,0,744);\n if(load+idle>hours||resale>purchase+extra)throw Error(\"hours\");\n const watts=num(x.watts),idleW=num(x.idleW),electricity=num(x.electricity),maintenance=num(x.maintenance),rate=num(x.rate),billed=num(x.billed,0,744),cloudFixed=num(x.cloudFixed);\n const capital=(purchase+extra-resale)\/months,energy=(watts*load+idleW*idle)\/1000*electricity,local=capital+energy+maintenance,cloud=rate*billed+cloudFixed;\n const api=num(x.inputTokens)*num(x.inputPrice)\/1e6+num(x.outputTokens)*num(x.outputPrice)\/1e6+num(x.apiFixed);\n const curves=[];\n for(let h=0;h<=hours;h+=hours\/24||1){\n  const idleAt=x.idlePolicy===\"on\"?hours-h:0;\n  curves.push({hours:h,local:capital+maintenance+(watts*h+idleW*idleAt)\/1000*electricity,cloud:rate*h+cloudFixed});\n }\n const a=capital+maintenance+(x.idlePolicy===\"on\"?hours*idleW\/1000*electricity:0)-cloudFixed;\n const slope=rate-(watts-(x.idlePolicy===\"on\"?idleW:0))\/1000*electricity;\n const cross=Math.abs(slope)<1e-12?null:a\/slope;\n return {capital,energy,local,cloud,api,crossover:cross!==null&#038;&#038;cross>=0&&cross<=hours?cross:null,localCash:purchase+extra+(energy+maintenance)*months-resale,cloudCash:cloud*months,apiCash:api*months,curves};\n}\nfunction stack(x){\n const list=[];\n function add(name,url,why){list.push({name,url,why});}\n const apple=x.hardware===\"apple\";\n if(x.format===\"gguf\"){\n  add(\"llama.cpp\",\"https:\/\/github.com\/ggml-org\/llama.cpp\",\"portable\");\n  add(\"Ollama\",\"https:\/\/docs.ollama.com\/\",\"managed\");\n  if(x.interface===\"gui\")add(\"LM Studio\",\"https:\/\/lmstudio.ai\/docs\",\"gui\");\n }\n if(apple&#038;&#038;x.os===\"mac\"&#038;&#038;x.format===\"mlx\")add(\"MLX LM\",\"https:\/\/github.com\/ml-explore\/mlx-lm\",\"apple\");\n if(x.hardware===\"intel\"&#038;&#038;x.format===\"openvino\"&#038;&#038;x.os!==\"mac\")add(\"OpenVINO GenAI\",\"https:\/\/docs.openvino.ai\/\",\"intel\");\n if(x.use===\"server\"&#038;&#038;x.format===\"hf\"&#038;&#038;[\"linux\",\"wsl\"].includes(x.os)&#038;&#038;[\"nvidia\",\"amd\",\"intel\"].includes(x.hardware))add(\"vLLM\",\"https:\/\/docs.vllm.ai\/en\/latest\/getting_started\/installation\/gpu\/\",\"serving\");\n const download=num(x.download)*1e9*8\/(num(x.bandwidth,.01)*1e6);\n num(x.ram,.1,1e6);num(x.vram,0,1e6);num(x.parallel,1,10000,true);\n return {list,download};\n}\nconst EVIDENCE=[\"identity\",\"pcb\",\"bios\",\"capacityTest\",\"loadTest\",\"restart\",\"returnPolicy\"];\nfunction mod(x){const list=EVIDENCE.map(key=>({key,status:x[key],note:String(x[key+\"Note\"]||\"\").slice(0,2000)}));for(const r of list)if(![\"open\",\"proven\",\"conflict\"].includes(r.status))throw Error(\"status\");return {list,total:num(x.price)+num(x.shipping)+num(x.importCosts)+num(x.returnCosts),proven:list.filter(r=>r.status===\"proven\").length,open:list.filter(r=>r.status===\"open\").length,conflict:list.filter(r=>r.status===\"conflict\").length};}\nconst MODEL_KEYS=[\"model\",\"revision\",\"language\",\"task\",\"hardware\",\"runtime\",\"context\",\"outputTokens\",\"temperature\",\"template\",\"quant\",\"license\",\"sizeGiB\",\"latencyMs\",\"tokensPerSecond\",\"quality\",\"reference\",\"answer\"];\nfunction modelRows(rows){\n if(!Array.isArray(rows)||rows.length>2000)throw Error(\"rows\");\n return rows.map(row=>{\n if(!row||typeof row!==\"object\"||Array.isArray(row))throw Error(\"row\");\n const r={};\n for(const key of MODEL_KEYS){const v=row[key];r[key]=v===null||v===undefined?\"\":String(v).slice(0,4000);}\n if(!r.model||![\"de\",\"en\",\"pl\"].includes(r.language))throw Error(\"model\");\n for(const key of [\"context\",\"outputTokens\",\"temperature\",\"sizeGiB\",\"latencyMs\",\"tokensPerSecond\",\"quality\"])if(r[key]!==\"\")num(r[key],0,key===\"quality\"?100:1e12);\n return r;\n });\n}\nfunction csvParse(s){\n if(s.length>2e6)throw Error(\"size\");\n const rows=[];let row=[],field=\"\",quote=false;\n for(let i=0;i<s.length;i++){const c=s[i];if(c==='\"'){if(quote&#038;&#038;s[i+1]==='\"'){field+='\"';i++;}else if(quote){quote=false;}else if(field===\"\"){quote=true;}else throw Error(\"csv\");}\n else if(c===\",\"&#038;&#038;!quote){row.push(field);field=\"\";}\n else if((c===\"\\n\"||c===\"\\r\")&#038;&#038;!quote){if(c===\"\\r\"&#038;&#038;s[i+1]===\"\\n\")i++;row.push(field);if(row.some(v=>v!==\"\"))rows.push(row);row=[];field=\"\";}\n else field+=c;}\n if(quote)throw Error(\"csv\");\n row.push(field);if(row.some(v=>v!==\"\"))rows.push(row);\n if(!rows.length)return [];\n const header=rows.shift().map(v=>v.replace(\/^\\uFEFF\/,\"\").trim());\n if(new Set(header).size!==header.length||!header.includes(\"model\"))throw Error(\"header\");\n return rows.map(values=>{if(values.length!==header.length)throw Error(\"columns\");return Object.fromEntries(header.map((k,i)=>[k,values[i]]));});\n}\nfunction csv(rows){return rows.map(row=>row.map(v=>{let s=v===null||v===undefined?\"\":String(v);if(\/^[=+\\-@]\/.test(s))s=\"'\"+s;return '\"'+s.replace(\/\"\/g,'\"\"')+'\"';}).join(\",\")).join(\"\\r\\n\");}\nfunction ollama(s){\n if(s.length>2e6)throw Error(\"size\");\n const o=JSON.parse(s),m=o.model_info||{};\n const a=m[\"general.architecture\"],n=a?m[a+\".block_count\"]:undefined;\n if(!a||!n)throw Error(\"metadata\");\n const params=m[\"general.parameter_count\"],heads=m[a+\".attention.head_count_kv\"],all=m[a+\".attention.head_count\"],width=m[a+\".embedding_length\"];\n return {params:params?num(params)\/1e9:null,layers:num(n,1,10000,true),heads:heads?num(heads,1,10000,true):null,dim:all&&width?num(width)\/num(all):null,architecture:a,context:m[a+\".context_length\"]||null};\n}\ng.LWAI={num,memory,costs,stack,mod,modelRows,MODEL_KEYS,csvParse,csv,ollama};\nif(typeof module!==\"undefined\")module.exports=g.LWAI;\n})(globalThis);\n<\/script><script>(function(){\n\"use strict\";\nconst root=document.querySelector(\".lw-ai\");if(!root)return;\nconst c=JSON.parse(root.querySelector(\"[data-config]\").textContent),A=globalThis.LWAI,U=c.common;\nconst form=root.querySelector(\"form\"),status=root.querySelector(\"[data-status]\"),out=root.querySelector(\"[data-result]\");\nlet current=null,rows=[];\nconst get=k=>form.elements.namedItem(k);\nconst node=(tag,text)=>{const n=document.createElement(tag);if(text!==undefined)n.textContent=text;return n;};\nconst format=v=>typeof v===\"number\"?new Intl.NumberFormat(c.lang,{maximumFractionDigits:4}).format(v):v===null?U.unknown:String(v);\nfunction dirty(){current=null;out.replaceChildren();status.textContent=\"\";for(const b of root.querySelectorAll(\"[data-export]\"))b.disabled=true;}\nfunction values(){const x={};let bad=false;for(const f of c.fields){const el=get(f.key);el.removeAttribute(\"aria-invalid\");let v=el.value.trim();if(f.type===\"number\"&&!el.closest(\".ai-field\").hidden){try{v=A.num(v,f.min,f.max,f.integer);}catch(e){el.setAttribute(\"aria-invalid\",\"true\");bad=true;}}else if(v.length>4000){el.setAttribute(\"aria-invalid\",\"true\");bad=true;}x[f.key]=v;}if(bad)throw Error(\"input\");return x;}\nfunction metrics(obj,keys){const dl=node(\"dl\");for(const k of keys){dl.append(node(\"dt\",(c.kind===\"memory\"&&k===\"total\"?c.labels[k]+\" (GiB)\":c.labels[k])||k),node(\"dd\",format(obj[k])));}out.append(dl);}\nfunction table(headers,data){const wrap=node(\"div\");wrap.className=\"ai-scroll\";wrap.tabIndex=0;const t=node(\"table\"),head=node(\"thead\"),tr=node(\"tr\");for(const h of headers)tr.append(node(\"th\",h));head.append(tr);const body=node(\"tbody\");for(const r of data){const tr=node(\"tr\");for(const v of r)tr.append(node(\"td\",format(v)));body.append(tr);}t.append(head,body);wrap.append(t);out.append(wrap);}\nfunction chart(points){\n const svg=document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\",\"svg\");svg.classList.add(\"ai-chart\");svg.setAttribute(\"viewBox\",\"0 0 600 240\");svg.setAttribute(\"role\",\"img\");svg.setAttribute(\"aria-label\",c.labels.local+\" \/ \"+c.labels.cloud);\n const title=document.createElementNS(svg.namespaceURI,\"title\");title.textContent=c.labels.local+\" \/ \"+c.labels.cloud;svg.append(title);\n const max=Math.max(1,...points.flatMap(p=>[p.local,p.cloud])),hours=points[points.length-1].hours||1;\n function text(x,y,s){const t=document.createElementNS(svg.namespaceURI,\"text\");t.setAttribute(\"x\",x);t.setAttribute(\"y\",y);t.setAttribute(\"fill\",\"var(--text-primary)\");t.setAttribute(\"font-size\",\"12\");t.textContent=s;svg.append(t);}\n for(const [key,color,y]of [[\"local\",\"var(--accent)\",15],[\"cloud\",\"var(--text-secondary)\",30]]){const line=document.createElementNS(svg.namespaceURI,\"polyline\");line.setAttribute(\"points\",points.map(p=>(50+520*p.hours\/hours)+\",\"+(200-150*p[key]\/max)).join(\" \"));line.setAttribute(\"fill\",\"none\");line.setAttribute(\"stroke\",color);line.setAttribute(\"stroke-width\",\"3\");svg.append(line);text(50,y,c.labels[key]);}\n text(8,55,format(max));text(8,200,\"0\");text(50,225,\"0 h\");text(510,225,format(hours)+\" h\");out.append(svg);\n}\nconst why={portable:[\"GGUF; CPU \/ GPU-Backend gesondert pr\u00fcfen.\",\"GGUF; verify CPU \/ GPU backend separately.\",\"GGUF; osobna kontrola backendu CPU \/ GPU.\"],managed:[\"Modellverwaltung; Modellimport und Backend pr\u00fcfen.\",\"Model management; verify model import and backend.\",\"Zarz\u0105dzanie modelami; kontrola importu i backendu.\"],gui:[\"Grafische Oberfl\u00e4che; Systemanforderungen pr\u00fcfen.\",\"Graphical interface; verify system requirements.\",\"Interfejs graficzny; kontrola wymaga\u0144 systemowych.\"],apple:[\"Apple Silicon \/ MLX; Modellartefakt erforderlich.\",\"Apple Silicon \/ MLX; model artifact required.\",\"Apple Silicon \/ MLX; wymagany artefakt modelu.\"],intel:[\"Intel \/ OpenVINO IR; Treiber und Konvertierung pr\u00fcfen.\",\"Intel \/ OpenVINO IR; verify drivers and conversion.\",\"Intel \/ OpenVINO IR; kontrola sterownik\u00f3w i konwersji.\"],serving:[\"Linux-\/WSL-Serving; konkretes GPU-\/Versionsprofil pr\u00fcfen.\",\"Linux \/ WSL serving; verify exact GPU \/ version profile.\",\"Serwer Linux \/ WSL; kontrola konkretnego GPU i wersji.\"]};\nfunction modelsDisplay(){out.replaceChildren();const lang=root.querySelector(\"[data-language]\").value,search=root.querySelector(\"[data-search]\").value.toLowerCase();const selected=rows.filter(r=>(lang===\"all\"||r.language===lang)&&[r.model,r.revision,r.task].join(\" \").toLowerCase().includes(search));out.append(node(\"p\",U.modelNotice),node(\"p\",selected.length+\" \/ \"+rows.length));table(A.MODEL_KEYS.map(k=>c.fields.find(f=>f.key===k)?.label||k),selected.map(r=>A.MODEL_KEYS.map(k=>r[k])));}\nfunction render(result,x){\n out.replaceChildren();\n if(c.kind===\"memory\"){metrics(result,[\"weights\",\"cache\",\"runtime\",\"other\",\"reserve\",\"total\",\"remaining\"]);out.append(node(\"p\",result.fit===null?U.unknown:result.fit?U.yes:U.no));}\n if(c.kind===\"cost\"){metrics(result,[\"capital\",\"energy\",\"local\",\"cloud\",\"api\",\"crossover\",\"localCash\",\"cloudCash\",\"apiCash\"]);out.append(node(\"p\",x.currency));chart(result.curves);table([\"h\",c.labels.local,c.labels.cloud],result.curves.map(r=>[r.hours,r.local,r.cloud]));}\n if(c.kind===\"stack\"){\n  metrics({download:result.download\/60},[\"download\"]);const ul=node(\"ul\");\n  const li=c.lang===\"de\"?0:c.lang===\"en\"?1:2;\n  for(const item of result.list){const n=node(\"li\"),a=node(\"a\",item.name);a.href=item.url;a.rel=\"noopener noreferrer\";n.append(a,node(\"p\",why[item.why][li]));ul.append(n);}\n  if(!result.list.length)ul.append(node(\"li\",U.unknown));out.append(ul,node(\"h3\",U.plan));\n  const checks=c.lang===\"de\"?[\"OS, Ger\u00e4t, Treiber und Runtime-Version dokumentieren.\",\"Modellformat und Speicherbedarf mit dem Speicherplaner pr\u00fcfen.\",\"Installation und Modellstart pr\u00fcfen.\",\"GPU-Ausf\u00fchrung durch Runtime-Ausgabe und Speichermessung belegen.\",\"Referenzaufgabe, Neustart und Offline-Betrieb pr\u00fcfen.\"]:c.lang===\"en\"?[\"Record OS, device, driver and runtime version.\",\"Check model format and memory needs with the memory planner.\",\"Verify installation and model startup.\",\"Document GPU execution through runtime output and memory measurements.\",\"Check a reference task, restart and offline operation.\"]:[\"Zapis systemu, sprz\u0119tu, sterownika i wersji runtime.\",\"Kontrola formatu modelu i pami\u0119ci w planerze.\",\"Kontrola instalacji i uruchomienia modelu.\",\"Dow\u00f3d wykonania GPU w wynikach runtime i pomiarach pami\u0119ci.\",\"Kontrola zadania testowego, restartu i pracy offline.\"];\n  const ol=node(\"ol\");for(const s of checks)ol.append(node(\"li\",s));out.append(ol,node(\"p\",get(\"verified\").selectedOptions[0].textContent));\n  if(x.terminal===\"no\")out.append(node(\"p\",c.lang===\"de\"?\"CLI-\/Build-Pfade erfordern zus\u00e4tzlich Terminalkenntnisse.\":c.lang===\"en\"?\"CLI \/ build paths additionally require terminal skills.\":\"\u015acie\u017cki CLI \/ kompilacji wymagaj\u0105 znajomo\u015bci terminala.\"));\n }\n if(c.kind===\"mods\"){metrics(result,[\"total\",\"proven\",\"open\",\"conflict\"]);out.append(node(\"p\",x.currency));table([U.input,U.result,c.lang===\"de\"?\"Nachweis\":c.lang===\"en\"?\"Evidence\":\"Dow\u00f3d\"],result.list.map(r=>[c.evidence[r.key],get(r.key).selectedOptions[0].textContent,r.note]));}\n if(c.kind===\"models\")modelsDisplay();\n}\nfunction run(event){if(event)event.preventDefault();dirty();try{const x=values();let result;\n if(c.kind===\"models\"){const added=A.modelRows([x])[0];if(rows.length>=2000)throw Error(\"rows\");rows.push(added);result={rows};}\n else result=({memory:A.memory,cost:A.costs,stack:A.stack,mods:A.mod}[c.kind])(x);\n current={version:1,kind:c.kind,inputs:x,result};render(result,x);for(const b of root.querySelectorAll(\"[data-export]\"))b.disabled=false;\n }catch(e){status.textContent=U.error;}}\nform.addEventListener(\"submit\",run);form.addEventListener(\"input\",dirty);\nfunction reset(){for(const f of c.fields)get(f.key).value=f.value;rows=[];if(root.querySelector(\"[data-language]\"))root.querySelector(\"[data-language]\").value=\"all\";if(root.querySelector(\"[data-search]\"))root.querySelector(\"[data-search]\").value=\"\";if(root.querySelector(\"[data-paste]\"))root.querySelector(\"[data-paste]\").value=\"\";dirty();if(c.kind===\"models\"){current={version:1,kind:c.kind,inputs:{},result:{rows}};modelsDisplay();for(const b of root.querySelectorAll(\"[data-export]\"))b.disabled=false;}else run();}\nroot.querySelector(\"[data-reset]\").addEventListener(\"click\",reset);\nif(c.kind===\"memory\"){get(\"profile\").addEventListener(\"change\",()=>{const v=get(\"profile\").value;if(v!==\"custom\"){get(\"capacity\").value=v;get(\"other\").value=v===\"128\"?20:0;}dirty();});\n get(\"weightMode\").addEventListener(\"change\",visibility);get(\"arch\").addEventListener(\"change\",visibility);}\nfunction visibility(){if(c.kind!==\"memory\")return;const groups={params:get(\"weightMode\").value===\"params\",bits:get(\"weightMode\").value===\"params\",file:get(\"weightMode\").value===\"file\",fileUnit:get(\"weightMode\").value===\"file\",cache:get(\"arch\").value===\"manual\"};for(const key of [\"layers\",\"heads\",\"dim\",\"tokens\",\"seq\",\"kbytes\",\"vbytes\"])groups[key]=get(\"arch\").value===\"dense\";for(const [key,show]of Object.entries(groups))get(key).closest(\".ai-field\").hidden=!show;}\nfunction exportData(type){if(!current)return;const result=c.kind===\"models\"?{...current,result:{rows}}:current;let text,mime;\n if(type===\"json\"){text=JSON.stringify(result,null,2);mime=\"application\/json\";}\n else{let data;if(c.kind===\"models\")data=[A.MODEL_KEYS,...rows.map(r=>A.MODEL_KEYS.map(k=>r[k]))];\n else {data=[[U.input,U.result],...c.fields.map(f=>[f.label,current.inputs[f.key]])];for(const [key,value]of Object.entries(current.result))data.push([c.labels[key]||key,typeof value===\"object\"&&value!==null?JSON.stringify(value):value]);}text=A.csv(data);mime=\"text\/csv;charset=utf-8\";}\n const blob=new Blob([text],{type:mime}),url=URL.createObjectURL(blob),a=node(\"a\");a.href=url;a.download=c.kind+\".\"+type;a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);}\nfor(const b of root.querySelectorAll(\"[data-export]\"))b.addEventListener(\"click\",()=>exportData(b.dataset.export));\nasync function importData(text){dirty();try{if(new TextEncoder().encode(text).length>2e6)throw Error(\"size\");\n if(c.kind===\"memory\"){const m=A.ollama(text);for(const key of [\"params\",\"layers\",\"heads\",\"dim\"])if(m[key]!==null)get(key).value=m[key];get(\"arch\").value=\"unknown\";visibility();run();status.textContent=U.importSuccess;}\n else if(c.kind===\"models\"){let parsed;if(text.trim().startsWith(\"[\")||text.trim().startsWith(\"{\")){const o=JSON.parse(text);parsed=Array.isArray(o)?o:o.result?.rows||o.rows;}else parsed=A.csvParse(text);rows=A.modelRows(parsed);current={version:1,kind:c.kind,inputs:{},result:{rows}};modelsDisplay();for(const b of root.querySelectorAll(\"[data-export]\"))b.disabled=false;}\n }catch(e){current=null;out.replaceChildren();status.textContent=U.error;}}\nif(root.querySelector(\"[data-import]\"))root.querySelector(\"[data-import]\").addEventListener(\"click\",()=>importData(root.querySelector(\"[data-paste]\").value));\nif(root.querySelector(\"[data-file]\"))root.querySelector(\"[data-file]\").addEventListener(\"change\",async e=>{const f=e.target.files[0];if(!f)return;if(f.size>2e6){dirty();status.textContent=U.error;return;}await importData(await f.text());e.target.value=\"\";});\nif(c.kind===\"models\"){root.querySelector(\"[data-language]\").addEventListener(\"change\",modelsDisplay);root.querySelector(\"[data-search]\").addEventListener(\"input\",modelsDisplay);root.querySelector(\"[data-clear]\").addEventListener(\"click\",()=>{rows=[];current={version:1,kind:c.kind,inputs:{},result:{rows}};modelsDisplay();for(const b of root.querySelectorAll(\"[data-export]\"))b.disabled=false;});}\nroot._aiRun=run;root._aiImport=importData;root._aiReset=reset;root._aiGet=()=>current;\nreset();visibility();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":38,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[91404],"class_list":["post-21343","page","type-page","status-publish","hentry","tag-llm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>LLM Model Comparison and Test Log | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LLM Model Comparison and Test Log | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-05T14:00:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/llm-model-comparison-test-log\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/llm-model-comparison-test-log\\\/\",\"name\":\"LLM Model Comparison and Test Log | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-05T13:58:43+00:00\",\"dateModified\":\"2026-10-05T14:00:19+00:00\",\"description\":\"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/llm-model-comparison-test-log\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/llm-model-comparison-test-log\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/llm-model-comparison-test-log\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"LLM Model Comparison and Test Log\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LLM Model Comparison and Test Log | Lukas Wojcik","description":"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/","og_locale":"en_US","og_type":"article","og_title":"LLM Model Comparison and Test Log | Lukas Wojcik","og_description":"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/","og_site_name":"Lukas Wojcik - Blog","article_modified_time":"2026-10-05T14:00:19+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/","name":"LLM Model Comparison and Test Log | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-10-05T13:58:43+00:00","dateModified":"2026-10-05T14:00:19+00:00","description":"Compare recorded DE, EN and PL test results under documented conditions. Tests are not run automatically.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/llm-model-comparison-test-log\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/"},{"@type":"ListItem","position":3,"name":"LLM Model Comparison and Test Log"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=21343"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21343\/revisions"}],"predecessor-version":[{"id":21344,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21343\/revisions\/21344"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/38"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=21343"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=21343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}