gpt-5.4-mini @ none · api
apinone
- config
- gpt-5.4-mini-eff-none--api--official--dev
- batch
- 2026-07-19--unified
- transport
- openai-official-api
- protocol
- api · metered
- served model
- gpt-5.4-mini-2026-03-17
- 采集于
- 2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
grok-4.5 @high · api0.66gpt-5.4 @low · api0.63gpt-5.4 @none · api0.63claude-fable-5 @high · CC0.61claude-opus-4-8 @low · kiro0.61最远
gpt-5.5 @xhigh · codex-oauth0.44gpt-5.5 @low · codex-oauth0.44qwen3.7-max · qoder0.45minimax-m2.5 · kiro0.45gpt-5.6-luna @high · kiro0.45限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguousinsufficient-distinct-temperature-nodes
- min tempambiguousinsufficient-distinct-temperature-nodes
- hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Weather Card</title>
<style>
:root{
--bg1:#0f172a;
--bg2:#111827;
--card:#0b1220cc;
--card-border:#ffffff1a;
--text:#e5eefc;
--muted:#9fb0cc;
--accent:#7dd3fc;
--accent2:#a78bfa;
--good:#34d399;
--warn:#fbbf24;
--shadow: 0 24px 60px rgba(0,0,0,.38);
}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0}
body{
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color:var(--text);
overflow:hidden;
background:
radial-gradient(1200px 800px at 20% 20%, rgba(125,211,252,.18), transparent 45%),
radial-gradient(900px 700px at 80% 30%, rgba(167,139,250,.18), transparent 42%),
radial-gradient(700px 500px at 50% 90%, rgba(52,211,153,.10), transparent 40%),
linear-gradient(160deg, var(--bg1), var(--bg2));
}
.wrap{
width:100%;
height:100%;
display:flex;
align-items:center;
justify-content:center;
padding:48px;
}
.card{
width:min(1120px, 100%);
min-height:540px;
border:1px solid var(--card-border);
background:linear-gradient(180deg, rgba(17,24,39,.72), rgba(11,18,32,.86));
backdrop-filter: blur(18px);
border-radius:32px;
box-shadow:var(--shadow);
position:relative;
overflow:hidden;
display:grid;
grid-template-columns: 1.05fr .95fr;
}
.card::before{
content:"";
position:absolute;
inset:-2px;
background:
radial-gradient(800px 400px at 15% 15%, rgba(125,211,252,.10), transparent 50%),
radial-gradient(700px 380px at 85% 20%, rgba(167,139,250,.10), transparent 48%);
pointer-events:none;
}
.left,.right{position:relative; z-index:1; padding:42px}
.left{
display:flex;
flex-direction:column;
justify-content:space-between;
border-right:1px solid rgba(255,255,255,.08);
}
.eyebrow{
display:inline-flex;
align-items:center;
gap:10px;
color:var(--muted);
font-size:14px;
letter-spacing:.14em;
text-transform:uppercase;
margin-bottom:14px;
}
.dot{
width:10px;height:10px;border-radius:50%;
background:linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow:0 0 18px rgba(125,211,252,.65);
}
.location{
font-size:56px;
line-height:1;
font-weight:800;
letter-spacing:-.04em;
margin:0 0 14px;
text-wrap:balance;
}
.date{
font-size:22px;
color:var(--muted);
margin:0 0 28px;
}
.hero{
display:flex;
align-items:end;
gap:28px;
margin:18px 0 0;
}
.tempBlock{
display:flex;
flex-direction:column;
gap:10px;
}
.temps{
display:flex;
align-items:baseline;
gap:18px;
flex-wrap:wrap;
}
.max{
font-size:94px;
line-height:.9;
font-weight:900;
letter-spacing:-.06em;
}
.min{
font-size:34px;
color:#c7d2e6;
opacity:.92;
font-weight:700;
}
.meta{
margin-top:22px;
color:var(--muted);
font-size:18px;
line-height:1.5;
max-width:520px;
}
.condition{
margin-top:14px;
display:inline-flex;
align-items:center;
gap:14px;
font-size:24px;
font-weight:700;
color:var(--text);
}
.icon{
width:56px;
height:56px;
border-radius:18px;
display:grid;
place-items:center;
background:linear-gradient(135deg, rgba(125,211,252,.18), rgba(167,139,250,.14));
border:1px solid rgba(255,255,255,.12);
box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
font-size:30px;
}
.right{
display:flex;
flex-direction:column;
gap:22px;
}
.panel{
border:1px solid rgba(255,255,255,.08);
background:rgba(255,255,255,.03);
border-radius:24px;
padding:22px;
}
.panel h2{
margin:0 0 18px;
font-size:16px;
letter-spacing:.12em;
text-transform:uppercase;
color:var(--muted);
font-weight:700;
}
.hourly{
display:grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap:12px;
}
.hour{
padding:16px 14px;
border-radius:18px;
background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02));
border:1px solid rgba(255,255,255,.06);
min-height:96px;
display:flex;
flex-direction:column;
justify-content:space-between;
}
.time{font-size:14px;color:var(--muted)}
.h-temp{font-size:28px;font-weight:800;letter-spacing:-.04em}
.subtle{
color:var(--muted);
font-size:15px;
line-height:1.55;
}
.status{
position:absolute;
inset:auto 42px 34px auto;
color:#cbd5e1;
font-size:14px;
opacity:.85;
z-index:2;
}
.error{
width:min(900px,100%);
padding:34px 36px;
border-radius:28px;
border:1px solid rgba(255,255,255,.10);
background:rgba(11,18,32,.82);
box-shadow:var(--shadow);
text-align:center;
}
.error h1{margin:0 0 10px;font-size:36px}
.error p{margin:0;color:var(--muted);font-size:18px}
@media (max-width: 1100px){
.card{grid-template-columns:1fr}
.left{border-right:none;border-bottom:1px solid rgba(255,255,255,.08)}
.location{font-size:46px}
.max{font-size:76px}
.hourly{grid-template-columns: repeat(2, minmax(0, 1fr))}
}
</style>
</head>
<body>
<div class="wrap">
<div id="app"></div>
</div>
<script>
(function(){
const params = new URLSearchParams(location.search);
const lat = parseFloat(params.get('lat') || '52.52');
const lon = parseFloat(params.get('lon') || '13.405');
const name = params.get('name') || 'Berlin';
const date = params.get('date') || new Date().toISOString().slice(0,10);
const app = document.getElementById('app');
function safe(v){ return String(v == null ? '' : v); }
function conditionFromCode(code){
const map = {
0: ['Clear sky','☀️'],
1: ['Mainly clear','🌤️'],
2: ['Partly cloudy','⛅'],
3: ['Overcast','☁️'],
45: ['Fog','🌫️'],
48: ['Depositing rime fog','🌫️'],
51: ['Light drizzle','🌦️'],
53: ['Drizzle','🌦️'],
55: ['Dense drizzle','🌧️'],
56: ['Freezing drizzle','🌧️'],
57: ['Dense freezing drizzle','🌧️'],
61: ['Slight rain','🌦️'],
63: ['Rain','🌧️'],
65: ['Heavy rain','🌧️'],
66: ['Freezing rain','🌧️'],
67: ['Heavy freezing rain','🌧️'],
71: ['Slight snow fall','🌨️'],
73: ['Snow fall','🌨️'],
75: ['Heavy snow fall','🌨️'],
77: ['Snow grains','🌨️'],
80: ['Slight rain showers','🌦️'],
81: ['Rain showers','🌧️'],
82: ['Violent rain showers','⛈️'],
85: ['Slight snow showers','🌨️'],
86: ['Heavy snow showers','🌨️'],
95: ['Thunderstorm','⛈️'],
96: ['Thunderstorm with slight hail','⛈️'],
99: ['Thunderstorm with heavy hail','⛈️']
};
return map[code] || ['Unknown', '❔'];
}
function fmtHour(iso){
const d = new Date(iso);
return d.toLocaleTimeString('en-GB', { hour:'2-digit', minute:'2-digit', hour12:false, timeZone:'UTC' }) + ' UTC';
}
function fmtDate(d){
return new Date(d + 'T00:00:00Z').toLocaleDateString('en-GB', {
weekday:'long', year:'numeric', month:'long', day:'numeric', timeZone:'UTC'
});
}
function renderError(){
app.innerHTML = '<div class="error"><h1>Weather data could not be loaded</h1><p>Please check the location parameters and try again.</p></div>';
}
async function load(){
const endpoint = new Date(date + 'T00:00:00Z') < new Date(Date.UTC(new Date().getUTCFullYear(), new Date().getUTCMonth(), new Date().getUTCDate()))
? '/api/om/archive'
: '/api/om/forecast';
const url = new URL(endpoint, location.origin);
url.searchParams.set('latitude', lat);
url.searchParams.set('longitude', lon);
url.searchParams.set('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
url.searchParams.set('hourly', 'temperature_2m');
url.searchParams.set('timezone', 'UTC');
url.searchParams.set('temperature_unit', 'celsius');
url.searchParams.set('start_date', date);
url.searchParams.set('end_date', date);
try{
const res = await fetch(url.toString(), { credentials:'same-origin' });
if(!res.ok) throw new Error('HTTP ' + res.status);
const data = await res.json();
const d = data.daily || {};
const h = data.hourly || {};
const max = Array.isArray(d.temperature_2m_max) ? d.temperature_2m_max[0] : null;
const min = Array.isArray(d.temperature_2m_min) ? d.temperature_2m_min[0] : null;
const code = Array.isArray(d.weather_code) ? d.weather_code[0] : null;
const [condText, condIcon] = conditionFromCode(code);
const times = Array.isArray(h.time) ? h.time : [];
const temps = Array.isArray(h.temperature_2m) ? h.temperature_2m : [];
const hourlyHtml = times.slice(0, 24).map((t, i) => `
<div class="hour">
<div class="time">${safe(fmtHour(t))}</div>
<div class="h-temp">${typeof temps[i] === 'number' ? Math.round(temps[i]) : '—'}°C</div>
</div>
`).join('');
app.innerHTML = `
<section class="card">
<div class="left">
<div>
<div class="eyebrow"><span class="dot"></span>Weather overview</div>
<h1 class="location">${safe(name)}</h1>
<div class="date">${safe(fmtDate(date))}</div>
<div class="hero">
<div class="icon" aria-hidden="true">${condIcon}</div>
<div class="tempBlock">
<div class="temps">
<div class="max">${max == null ? '—' : Math.round(max)}°C</div>
<div class="min">${min == null ? '—' : Math.round(min)}°C</div>
</div>
<div class="condition">${safe(condText)}</div>
</div>
</div>
<div class="meta">
A clean daily summary with hourly temperatures for the selected date, using UTC for consistent comparison.
</div>
</div>
<div class="subtle">Latitude ${lat.toFixed(3)} · Longitude ${lon.toFixed(3)}</div>
</div>
<div class="right">
<div class="panel">
<h2>Hourly temperatures</h2>
<div class="hourly">${hourlyHtml || '<div class="subtle">No hourly data available.</div>'}</div>
</div>
<div class="panel">
<h2>Daily range</h2>
<div class="subtle">
Maximum: <strong style="color:var(--text)">${max == null ? '—' : Math.round(max) + '°C'}</strong><br>
Minimum: <strong style="color:var(--text)">${min == null ? '—' : Math.round(min) + '°C'}</strong><br>
Condition: <strong style="color:var(--text)">${safe(condText)}</strong>
</div>
</div>
</div>
<div class="status">Data source: Open-Meteo compatible same-origin API</div>
</section>
`;
}catch(e){
renderError();
}
}
load();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 12,271 | html / css / js | 296 / 5,592 / 6,383 |
|---|---|---|---|
| dom 节点 | 10 | dom 深度 | 4 |
| css 规则 | 39 | 含 js | 是 |
| brightness | 36.4 | contrast | 29.3 |
| colorfulness | 10.6 | 留白 | 84.0% |
该 slot 的 telemetry
| prompt tokens | 312 | completion tokens | 3,427 |
|---|---|---|---|
| total tokens | 3,739 | wall | 21.8 s |
| cost | — | request id | — |
config.json581 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "gpt-5.4-mini-eff-none--api--official--dev",
"effort": "none",
"family": "gpt",
"m": {
"min": 4,
"q": 4
},
"model_id": "gpt-5.4-mini",
"protocol": "api",
"served_model": "gpt-5.4-mini-2026-03-17",
"telemetry": {
"completion_tokens": 33428,
"cost_usd": null,
"prompt_tokens": 2464,
"total_tokens": 35892,
"wall_ms": 224731
},
"transport": "openai-official-api",
"vendor_sanction_ref": null
}send-log4.6 KB
{
"N": 4,
"batch_id": "2026-07-18--official-gpt",
"config_id": "gpt-5.4-mini-eff-none--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:09:22.167591+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:09:00.618972+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:09:47.363606+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:09:25.599868+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:10:13.515146+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:09:51.106446+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:11:09.792257+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:10:16.989457+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:11:45.291100+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:11:13.569290+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:12:10.289954+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:11:48.836246+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:12:45.561579+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:12:13.887038+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T20:13:10.758932+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T20:12:49.394735+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}