gpt-5.2-codex @ low · api

apilow
config
gpt-5.2-codex-eff-low--api--official--dev
batch
2026-07-19--unified
transport
openai-official-api
protocol
api · metered
served model
gpt-5.2-codex
采集于
2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.2-codex @low · api P-q slot 0 截图

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。

similarity 邻居

限于 session 2026-07-19--unified

similarity 衡量本 session 内的趋同程度 —— 不是质量。

Fidelity —— 卡片展示的数据对不对?

  • namematch
  • conditionmatch
  • datematch
  • max tempmatch展示值:25
  • min tempmatch展示值:16
  • hourlymatchcoverage 24/24 · 24 命中 · 0 不符 · 0 未展示
  • 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=1280, height=800, initial-scale=1.0">
<title>Weather Card</title>
<style>
    :root{
        --bg:#0f172a;
        --card:#111827;
        --accent:#38bdf8;
        --text:#e5e7eb;
        --muted:#94a3b8;
        --shadow:0 20px 50px rgba(0,0,0,0.35);
    }
    *{box-sizing:border-box;}
    body{
        margin:0;
        font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
        background:radial-gradient(1200px 800px at 20% 20%, #1e293b 0%, #0b1220 55%, #070b14 100%);
        color:var(--text);
        width:1280px;
        height:800px;
        display:flex;
        align-items:center;
        justify-content:center;
    }
    .card{
        width:1000px;
        max-height:700px;
        background:linear-gradient(180deg, rgba(17,24,39,0.95), rgba(15,23,42,0.98));
        border-radius:24px;
        box-shadow:var(--shadow);
        padding:36px 40px 30px;
        display:flex;
        flex-direction:column;
        gap:24px;
    }
    .header{
        display:flex;
        align-items:center;
        justify-content:space-between;
        border-bottom:1px solid rgba(255,255,255,0.08);
        padding-bottom:18px;
    }
    .title{
        display:flex;
        flex-direction:column;
        gap:6px;
    }
    .title h1{
        margin:0;
        font-size:32px;
        font-weight:700;
        letter-spacing:0.3px;
    }
    .title .subtitle{
        color:var(--muted);
        font-size:16px;
    }
    .temps{
        display:flex;
        align-items:center;
        gap:16px;
    }
    .temp-block{
        background:rgba(56,189,248,0.12);
        border:1px solid rgba(56,189,248,0.35);
        padding:12px 18px;
        border-radius:12px;
        text-align:center;
        min-width:120px;
    }
    .temp-block .label{
        font-size:12px;
        text-transform:uppercase;
        letter-spacing:1px;
        color:var(--muted);
    }
    .temp-block .value{
        font-size:28px;
        font-weight:700;
        color:var(--accent);
    }
    .condition{
        font-size:18px;
        color:var(--text);
        margin-top:4px;
    }
    .hourly{
        display:grid;
        grid-template-columns:repeat(8, 1fr);
        gap:12px;
        overflow-y:auto;
        padding-right:6px;
        max-height:380px;
    }
    .hour{
        background:rgba(255,255,255,0.04);
        border:1px solid rgba(255,255,255,0.08);
        border-radius:10px;
        padding:10px 8px;
        text-align:center;
        font-size:13px;
        display:flex;
        flex-direction:column;
        gap:6px;
    }
    .hour .time{
        color:var(--muted);
        font-size:12px;
    }
    .hour .h-temp{
        font-size:16px;
        font-weight:600;
        color:#f8fafc;
    }
    .footer-note{
        font-size:12px;
        color:var(--muted);
        text-align:right;
        margin-top:-8px;
    }
    .error{
        color:#fecaca;
        font-size:18px;
        text-align:center;
        padding:40px;
    }
</style>
</head>
<body>
<div class="card" id="card">
    <div class="header">
        <div class="title">
            <h1 id="location">Loading…</h1>
            <div class="subtitle" id="date">—</div>
            <div class="condition" id="condition">—</div>
        </div>
        <div class="temps">
            <div class="temp-block">
                <div class="label">Max</div>
                <div class="value" id="tmax">—</div>
            </div>
            <div class="temp-block">
                <div class="label">Min</div>
                <div class="value" id="tmin">—</div>
            </div>
        </div>
    </div>
    <div class="hourly" id="hourly"></div>
    <div class="footer-note" id="source">Open-Meteo compatible data</div>
</div>

<script>
(function(){
    const params = new URLSearchParams(window.location.search);
    const lat = parseFloat(params.get('lat')) || 52.52;
    const lon = parseFloat(params.get('lon')) || 13.405;
    const name = params.get('name') || 'Berlin';

    function todayUTC(){
        const d = new Date();
        return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
    }
    let dateStr = params.get('date');
    if(!dateStr){
        const t = todayUTC();
        dateStr = t.toISOString().slice(0,10);
    }
    const requestedDate = new Date(dateStr + "T00:00:00Z");
    const today = todayUTC();
    const isPast = requestedDate < today;

    const endpoint = isPast ? '/api/om/archive' : '/api/om/forecast';

    const query = new URLSearchParams({
        latitude: lat,
        longitude: lon,
        daily: 'temperature_2m_max,temperature_2m_min,weather_code',
        hourly: 'temperature_2m',
        timezone: 'UTC',
        temperature_unit: 'celsius',
        start_date: dateStr,
        end_date: dateStr
    });

    const weatherCodeMap = {
        0:"Clear sky",
        1:"Mainly clear",
        2:"Partly cloudy",
        3:"Overcast",
        45:"Fog",
        48:"Depositing rime fog",
        51:"Light drizzle",
        53:"Moderate drizzle",
        55:"Dense drizzle",
        56:"Light freezing drizzle",
        57:"Dense freezing drizzle",
        61:"Slight rain",
        63:"Moderate rain",
        65:"Heavy rain",
        66:"Light freezing rain",
        67:"Heavy freezing rain",
        71:"Slight snow fall",
        73:"Moderate snow fall",
        75:"Heavy snow fall",
        77:"Snow grains",
        80:"Slight rain showers",
        81:"Moderate 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"
    };

    const card = document.getElementById('card');

    fetch(endpoint + '?' + query.toString())
        .then(r => {
            if(!r.ok) throw new Error('Network');
            return r.json();
        })
        .then(data => {
            if(!data || !data.daily || !data.hourly) throw new Error('No data');

            document.getElementById('location').textContent = name;
            document.getElementById('date').textContent = dateStr + ' (UTC)';

            const tmax = data.daily.temperature_2m_max[0];
            const tmin = data.daily.temperature_2m_min[0];
            document.getElementById('tmax').textContent = Math.round(tmax) + '°C';
            document.getElementById('tmin').textContent = Math.round(tmin) + '°C';

            const wcode = data.daily.weather_code[0];
            document.getElementById('condition').textContent = weatherCodeMap[wcode] || 'Unknown';

            const times = data.hourly.time;
            const temps = data.hourly.temperature_2m;
            const hourly = document.getElementById('hourly');
            hourly.innerHTML = '';
            for(let i=0;i<times.length;i++){
                const time = new Date(times[i] + 'Z'); // already UTC
                const hh = String(time.getUTCHours()).padStart(2,'0') + ':00';
                const el = document.createElement('div');
                el.className = 'hour';
                el.innerHTML = '<div class="time">'+hh+'</div><div class="h-temp">'+Math.round(temps[i])+'°C</div>';
                hourly.appendChild(el);
            }
        })
        .catch(err => {
            card.innerHTML = '<div class="error">Weather data cannot be loaded.</div>';
        });
})();
</script>
</body>
</html>

L1 —— 廉价的确定性描述量

bytes 总计7,548html / css / js978 / 2,921 / 3,649
dom 节点23dom 深度7
css 规则19含 js
brightness24.5contrast14.8
colorfulness12.3留白95.1%

该 slot 的 telemetry

prompt tokens312completion tokens2,307
total tokens2,619wall21.8 s
costrequest id
config.json571 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "gpt-5.2-codex-eff-low--api--official--dev",
  "effort": "low",
  "family": "gpt",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "gpt-5.2-codex",
  "protocol": "api",
  "served_model": "gpt-5.2-codex",
  "telemetry": {
    "completion_tokens": 14697,
    "cost_usd": null,
    "prompt_tokens": 2464,
    "total_tokens": 17161,
    "wall_ms": 172113
  },
  "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.2-codex-eff-low--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:48:51.455781+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:48:29.897505+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-17T15:49:16.072465+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:48:54.229039+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-17T15:49:40.825256+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:49:19.568718+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-17T15:50:05.993161+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:49:44.512556+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-17T15:50:30.492624+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:50:08.792350+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-17T15:50:54.701269+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:50:33.324182+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-17T15:51:19.153757+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:50:58.062370+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-17T15:51:44.460739+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:51:22.644902+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
    }
  }
}