gpt-5.5 @ high · api

apihigh
config
gpt-5.5-eff-high--api--official--dev
batch
2026-07-19--unified
transport
openai-official-api
protocol
api · metered
served model
gpt-5.5-2026-04-23
采集于
2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.5 @high · 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 8/24 · 8 命中 · 0 不符 · 16 未展示
  • 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, initial-scale=1">
  <title>Weather Card</title>
  <style>
    :root {
      --bg-1: #071427;
      --bg-2: #102a48;
      --bg-3: #1a5f7a;
      --card: rgba(255, 255, 255, 0.13);
      --card-strong: rgba(255, 255, 255, 0.2);
      --stroke: rgba(255, 255, 255, 0.22);
      --text: #f7fbff;
      --muted: rgba(247, 251, 255, 0.72);
      --soft: rgba(247, 251, 255, 0.52);
      --shadow: rgba(0, 0, 0, 0.32);
      --warm: #ffd166;
      --cool: #7bdff2;
      --hot: #ff8a65;
      --cold: #80bfff;
      --danger: #ff6b6b;
    }

    * {
      box-sizing: border-box;
    }

    html,
    body {
      width: 100%;
      min-height: 100%;
      margin: 0;
    }

    body {
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
      color: var(--text);
      background:
        radial-gradient(circle at 18% 18%, rgba(255, 209, 102, 0.22), transparent 25%),
        radial-gradient(circle at 82% 22%, rgba(123, 223, 242, 0.22), transparent 28%),
        radial-gradient(circle at 50% 100%, rgba(62, 146, 204, 0.28), transparent 36%),
        linear-gradient(135deg, var(--bg-1), var(--bg-2) 48%, var(--bg-3));
      overflow-x: hidden;
    }

    .stage {
      width: 1280px;
      min-height: 800px;
      margin: 0 auto;
      position: relative;
      display: grid;
      place-items: center;
      padding: 44px;
      isolation: isolate;
    }

    .orb {
      position: absolute;
      border-radius: 999px;
      filter: blur(0.5px);
      opacity: 0.7;
      z-index: -1;
    }

    .orb.one {
      width: 330px;
      height: 330px;
      right: 74px;
      top: 54px;
      background: radial-gradient(circle at 34% 32%, rgba(255,255,255,0.95), rgba(255, 209, 102, 0.44) 30%, rgba(255, 177, 66, 0.11) 67%, transparent 70%);
    }

    .orb.two {
      width: 230px;
      height: 230px;
      left: 86px;
      bottom: 74px;
      background: radial-gradient(circle at 38% 36%, rgba(255,255,255,0.56), rgba(123, 223, 242, 0.25) 38%, rgba(123, 223, 242, 0.06) 70%, transparent 73%);
    }

    .weather-shell {
      width: 1080px;
      min-height: 640px;
      border: 1px solid var(--stroke);
      border-radius: 38px;
      background:
        linear-gradient(135deg, rgba(255,255,255,0.20), rgba(255,255,255,0.08)),
        radial-gradient(circle at 12% 8%, rgba(255,255,255,0.16), transparent 34%),
        radial-gradient(circle at 92% 92%, rgba(123,223,242,0.16), transparent 36%);
      box-shadow:
        0 36px 90px var(--shadow),
        inset 0 1px 0 rgba(255,255,255,0.26);
      backdrop-filter: blur(26px);
      -webkit-backdrop-filter: blur(26px);
      overflow: hidden;
      position: relative;
    }

    .weather-shell::before {
      content: "";
      position: absolute;
      inset: 0;
      pointer-events: none;
      background:
        linear-gradient(90deg, rgba(255,255,255,0.08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(255,255,255,0.06) 1px, transparent 1px);
      background-size: 80px 80px;
      mask-image: radial-gradient(circle at 50% 45%, black, transparent 76%);
      opacity: 0.35;
    }

    .content {
      position: relative;
      z-index: 1;
      padding: 42px;
      min-height: 640px;
      display: grid;
      grid-template-columns: 410px 1fr;
      gap: 28px;
    }

    .hero {
      border-radius: 30px;
      padding: 32px;
      background:
        linear-gradient(160deg, rgba(255,255,255,0.24), rgba(255,255,255,0.08)),
        radial-gradient(circle at 72% 20%, rgba(255,209,102,0.24), transparent 34%);
      border: 1px solid rgba(255,255,255,0.2);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.22);
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      min-height: 556px;
    }

    .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-size: 13px;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--muted);
      font-weight: 750;
    }

    .pulse {
      width: 9px;
      height: 9px;
      border-radius: 50%;
      background: #89f7c1;
      box-shadow: 0 0 0 7px rgba(137,247,193,0.12);
    }

    .location {
      margin: 20px 0 8px;
      font-size: 48px;
      line-height: 1.03;
      letter-spacing: -0.055em;
      font-weight: 820;
      overflow-wrap: anywhere;
    }

    .date {
      color: var(--muted);
      font-size: 18px;
      font-weight: 560;
    }

    .condition-area {
      margin-top: 40px;
      display: grid;
      place-items: center;
      text-align: center;
    }

    .weather-icon {
      width: 178px;
      height: 178px;
      display: grid;
      place-items: center;
      font-size: 102px;
      line-height: 1;
      border-radius: 50%;
      background:
        radial-gradient(circle at 35% 30%, rgba(255,255,255,0.44), rgba(255,255,255,0.12) 45%, rgba(255,255,255,0.03) 72%),
        linear-gradient(135deg, rgba(255,255,255,0.18), rgba(255,255,255,0.05));
      box-shadow:
        0 20px 54px rgba(0,0,0,0.2),
        inset 0 1px 0 rgba(255,255,255,0.32);
      border: 1px solid rgba(255,255,255,0.22);
    }

    .condition {
      margin-top: 22px;
      font-size: 26px;
      font-weight: 760;
      letter-spacing: -0.025em;
    }

    .summary {
      color: var(--muted);
      margin-top: 8px;
      font-size: 15px;
      line-height: 1.5;
      max-width: 310px;
    }

    .temp-row {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
      margin-top: 34px;
    }

    .temp-tile {
      border-radius: 24px;
      padding: 20px;
      background: rgba(255,255,255,0.12);
      border: 1px solid rgba(255,255,255,0.16);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.14);
    }

    .temp-label {
      color: var(--muted);
      font-size: 13px;
      letter-spacing: 0.09em;
      text-transform: uppercase;
      font-weight: 760;
    }

    .temp-value {
      margin-top: 8px;
      font-size: 38px;
      line-height: 1;
      font-weight: 820;
      letter-spacing: -0.06em;
    }

    .temp-value.max {
      color: #ffe0a1;
    }

    .temp-value.min {
      color: #bbecff;
    }

    .details {
      display: grid;
      grid-template-rows: auto 1fr;
      gap: 22px;
      min-width: 0;
    }

    .top-strip {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 16px;
    }

    .mini-card {
      border-radius: 26px;
      padding: 22px;
      background: rgba(255,255,255,0.105);
      border: 1px solid rgba(255,255,255,0.16);
      min-height: 126px;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.13);
    }

    .mini-title {
      color: var(--soft);
      font-size: 13px;
      letter-spacing: 0.095em;
      text-transform: uppercase;
      font-weight: 790;
    }

    .mini-value {
      margin-top: 12px;
      font-size: 25px;
      font-weight: 800;
      letter-spacing: -0.035em;
      line-height: 1.15;
      overflow-wrap: anywhere;
    }

    .mini-sub {
      color: var(--muted);
      font-size: 13px;
      margin-top: 8px;
      line-height: 1.35;
    }

    .hourly-panel {
      border-radius: 30px;
      padding: 28px;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.14), rgba(255,255,255,0.075));
      border: 1px solid rgba(255,255,255,0.17);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.15);
      min-height: 408px;
      display: flex;
      flex-direction: column;
      min-width: 0;
    }

    .panel-head {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 20px;
      margin-bottom: 24px;
    }

    .panel-title {
      font-size: 24px;
      line-height: 1.1;
      letter-spacing: -0.035em;
      font-weight: 820;
    }

    .panel-subtitle {
      color: var(--muted);
      font-size: 14px;
      margin-top: 6px;
    }

    .range-pill {
      flex: 0 0 auto;
      border-radius: 999px;
      padding: 11px 15px;
      background: rgba(255,255,255,0.12);
      border: 1px solid rgba(255,255,255,0.17);
      color: var(--muted);
      font-size: 13px;
      font-weight: 720;
    }

    .chart-wrap {
      position: relative;
      flex: 1;
      min-height: 258px;
      border-radius: 24px;
      padding: 22px 18px 14px;
      background:
        linear-gradient(180deg, rgba(6,17,31,0.18), rgba(6,17,31,0.08));
      border: 1px solid rgba(255,255,255,0.12);
      overflow: hidden;
    }

    .chart-wrap::before {
      content: "";
      position: absolute;
      left: 18px;
      right: 18px;
      top: 22px;
      bottom: 48px;
      background:
        linear-gradient(to bottom, rgba(255,255,255,0.14) 1px, transparent 1px);
      background-size: 100% 25%;
      opacity: 0.5;
      pointer-events: none;
    }

    .bars {
      height: 210px;
      display: grid;
      grid-template-columns: repeat(var(--count, 24), minmax(10px, 1fr));
      gap: 6px;
      align-items: end;
      position: relative;
      z-index: 1;
    }

    .hour {
      min-width: 0;
      height: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: flex-end;
      gap: 7px;
    }

    .bar-label {
      font-size: 11px;
      color: rgba(247,251,255,0.76);
      font-weight: 720;
      line-height: 1;
      white-space: nowrap;
      transform: translateY(1px);
    }

    .bar {
      width: 100%;
      max-width: 18px;
      min-height: 8px;
      height: var(--h);
      border-radius: 999px 999px 6px 6px;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.72), rgba(255,255,255,0.14)),
        linear-gradient(180deg, var(--bar-top), var(--bar-bottom));
      box-shadow:
        0 8px 18px rgba(0,0,0,0.15),
        inset 0 1px 0 rgba(255,255,255,0.45);
      border: 1px solid rgba(255,255,255,0.16);
    }

    .hour-time {
      margin-top: 3px;
      font-size: 10px;
      color: rgba(247,251,255,0.52);
      font-weight: 680;
      line-height: 1;
      white-space: nowrap;
    }

    .loading,
    .error {
      width: 100%;
      min-height: 556px;
      grid-column: 1 / -1;
      border-radius: 30px;
      display: grid;
      place-items: center;
      text-align: center;
      padding: 48px;
      background: rgba(255,255,255,0.105);
      border: 1px solid rgba(255,255,255,0.17);
    }

    .loader {
      width: 66px;
      height: 66px;
      border-radius: 50%;
      border: 5px solid rgba(255,255,255,0.17);
      border-top-color: rgba(255,255,255,0.9);
      margin: 0 auto 24px;
      animation: spin 1s linear infinite;
    }

    @keyframes spin {
      to { transform: rotate(360deg); }
    }

    .state-title {
      font-size: 34px;
      font-weight: 820;
      letter-spacing: -0.045em;
      margin: 0;
    }

    .state-text {
      max-width: 560px;
      margin: 12px auto 0;
      color: var(--muted);
      line-height: 1.6;
      font-size: 16px;
    }

    .error-badge {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 66px;
      height: 66px;
      border-radius: 50%;
      margin-bottom: 24px;
      background: rgba(255,107,107,0.16);
      border: 1px solid rgba(255,107,107,0.32);
      color: #ffd0d0;
      font-size: 34px;
      font-weight: 900;
    }

    .footnote {
      position: absolute;
      right: 46px;
      bottom: 22px;
      color: rgba(247,251,255,0.42);
      font-size: 12px;
      letter-spacing: 0.03em;
    }
  </style>
</head>
<body>
  <main class="stage">
    <div class="orb one"></div>
    <div class="orb two"></div>

    <section class="weather-shell" aria-live="polite">
      <div class="content" id="app">
        <div class="loading">
          <div>
            <div class="loader" aria-hidden="true"></div>
            <h1 class="state-title">Loading weather</h1>
            <p class="state-text">Fetching the requested day’s forecast in Celsius.</p>
          </div>
        </div>
      </div>
      <div class="footnote">UTC weather data · Celsius</div>
    </section>
  </main>

  <script>
    (function () {
      "use strict";

      var DEFAULTS = {
        lat: 52.52,
        lon: 13.405,
        name: "Berlin"
      };

      var app = document.getElementById("app");

      function todayUTC() {
        return new Date().toISOString().slice(0, 10);
      }

      function validDateString(value) {
        if (!/^\d{4}-\d{2}-\d{2}$/.test(value || "")) return false;
        var d = new Date(value + "T00:00:00Z");
        return !isNaN(d.getTime()) && d.toISOString().slice(0, 10) === value;
      }

      function clampNumber(value, fallback, min, max) {
        var n = Number(value);
        if (!Number.isFinite(n)) return fallback;
        return Math.min(max, Math.max(min, n));
      }

      function parseParams() {
        var params = new URLSearchParams(window.location.search);
        var date = params.get("date") || todayUTC();
        if (!validDateString(date)) date = todayUTC();

        var rawName = params.get("name");
        var name = rawName && rawName.trim() ? rawName.trim().slice(0, 80) : DEFAULTS.name;

        return {
          lat: clampNumber(params.get("lat"), DEFAULTS.lat, -90, 90),
          lon: clampNumber(params.get("lon"), DEFAULTS.lon, -180, 180),
          name: name,
          date: date
        };
      }

      function endpointForDate(date) {
        return date < todayUTC() ? "/api/om/archive" : "/api/om/forecast";
      }

      function buildUrl(endpoint, cfg) {
        var query = new URLSearchParams({
          latitude: String(cfg.lat),
          longitude: String(cfg.lon),
          daily: "temperature_2m_max,temperature_2m_min,weather_code",
          hourly: "temperature_2m",
          timezone: "UTC",
          temperature_unit: "celsius",
          start_date: cfg.date,
          end_date: cfg.date
        });
        return endpoint + "?" + query.toString();
      }

      function weatherInfo(code) {
        var map = {
          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", "⛈️"]
        };
        return map[Number(code)] || ["Unknown conditions", "🌡️"];
      }

      function formatDate(dateString) {
        var d = new Date(dateString + "T00:00:00Z");
        return new Intl.DateTimeFormat("en", {
          weekday: "long",
          year: "numeric",
          month: "long",
          day: "numeric",
          timeZone: "UTC"
        }).format(d);
      }

      function roundTemp(value) {
        if (value === null || value === undefined || !Number.isFinite(Number(value))) return "—";
        return Math.round(Number(value)) + "°";
      }

      function preciseTemp(value) {
        if (value === null || value === undefined || !Number.isFinite(Number(value))) return "—";
        return Number(value).toFixed(1).replace(/\.0$/, "") + "°C";
      }

      function escapeHTML(value) {
        return String(value)
          .replace(/&/g, "&amp;")
          .replace(/</g, "&lt;")
          .replace(/>/g, "&gt;")
          .replace(/"/g, "&quot;")
          .replace(/'/g, "&#039;");
      }

      function extractDaily(data, date) {
        if (!data || !data.daily) throw new Error("Missing daily weather data.");

        var times = data.daily.time || [];
        var index = times.indexOf(date);
        if (index < 0 && times.length === 1) index = 0;
        if (index < 0) throw new Error("No daily weather data for the requested date.");

        return {
          max: data.daily.temperature_2m_max ? data.daily.temperature_2m_max[index] : null,
          min: data.daily.temperature_2m_min ? data.daily.temperature_2m_min[index] : null,
          code: data.daily.weather_code ? data.daily.weather_code[index] : null
        };
      }

      function extractHourly(data, date) {
        if (!data || !data.hourly || !Array.isArray(data.hourly.time) || !Array.isArray(data.hourly.temperature_2m)) {
          throw new Error("Missing hourly weather data.");
        }

        var rows = [];
        for (var i = 0; i < data.hourly.time.length; i++) {
          var time = data.hourly.time[i];
          if (typeof time === "string" && time.slice(0, 10) === date) {
            rows.push({
              time: time,
              temp: data.hourly.temperature_2m[i]
            });
          }
        }

        if (!rows.length && data.hourly.time.length === data.hourly.temperature_2m.length) {
          for (var j = 0; j < data.hourly.time.length; j++) {
            rows.push({
              time: data.hourly.time[j],
              temp: data.hourly.temperature_2m[j]
            });
          }
        }

        if (!rows.length) throw new Error("No hourly temperatures for the requested date.");
        return rows;
      }

      function tempColor(temp, min, max) {
        var span = Math.max(1, max - min);
        var t = (temp - min) / span;
        if (t < 0.33) return ["#bbecff", "#5aa9e6"];
        if (t < 0.66) return ["#e9f7a9", "#7bdff2"];
        return ["#ffd166", "#ff8a65"];
      }

      function render(data, cfg) {
        var daily = extractDaily(data, cfg.date);
        var hourly = extractHourly(data, cfg.date);
        var info = weatherInfo(daily.code);

        var temps = hourly
          .map(function (h) { return Number(h.temp); })
          .filter(function (n) { return Number.isFinite(n); });

        var minHour = temps.length ? Math.min.apply(null, temps) : Number(daily.min);
        var maxHour = temps.length ? Math.max.apply(null, temps) : Number(daily.max);
        if (!Number.isFinite(minHour)) minHour = 0;
        if (!Number.isFinite(maxHour)) maxHour = minHour + 1;

        var chartMin = Math.min(minHour, Number(daily.min));
        var chartMax = Math.max(maxHour, Number(daily.max));
        if (!Number.isFinite(chartMin)) chartMin = minHour;
        if (!Number.isFinite(chartMax)) chartMax = maxHour;
        if (chartMax === chartMin) chartMax = chartMin + 1;

        var barsHTML = hourly.map(function (h, index) {
          var temp = Number(h.temp);
          var safeTemp = Number.isFinite(temp) ? temp : chartMin;
          var normalized = (safeTemp - chartMin) / Math.max(1, chartMax - chartMin);
          var height = 18 + normalized * 76;
          var colors = tempColor(safeTemp, chartMin, chartMax);
          var hour = "—";
          if (typeof h.time === "string") {
            var parts = h.time.split("T");
            if (parts[1]) hour = parts[1].slice(0, 2);
          }
          var showTime = index % 3 === 0 || hourly.length <= 12;
          return '<div class="hour">' +
            '<div class="bar-label">' + escapeHTML(roundTemp(temp)) + '</div>' +
            '<div class="bar" style="--h:' + height.toFixed(2) + '%;--bar-top:' + colors[0] + ';--bar-bottom:' + colors[1] + '"></div>' +
            '<div class="hour-time">' + (showTime ? escapeHTML(hour + ":00") : "&nbsp;") + '</div>' +
          '</div>';
        }).join("");

        var avg = temps.length ? temps.reduce(function (a, b) { return a + b; }, 0) / temps.length : null;
        var source = endpointForDate(cfg.date).indexOf("archive") >= 0 ? "Historical archive" : "Forecast";
        var tempSpread = Number.isFinite(Number(daily.max)) && Number.isFinite(Number(daily.min))
          ? preciseTemp(Number(daily.max) - Number(daily.min)).replace("°C", "°C swing")
          : "—";

        app.innerHTML =
          '<aside class="hero">' +
            '<div>' +
              '<div class="eyebrow"><span class="pulse"></span><span>Daily weather</span></div>' +
              '<h1 class="location">' + escapeHTML(cfg.name) + '</h1>' +
              '<div class="date">' + escapeHTML(formatDate(cfg.date)) + '</div>' +
              '<div class="condition-area">' +
                '<div class="weather-icon" aria-hidden="true">' + escapeHTML(info[1]) + '</div>' +
                '<div class="condition">' + escapeHTML(info[0]) + '</div>' +
                '<div class="summary">Temperatures shown in Celsius for the selected UTC calendar day.</div>' +
              '</div>' +
            '</div>' +
            '<div class="temp-row">' +
              '<div class="temp-tile">' +
                '<div class="temp-label">Maximum</div>' +
                '<div class="temp-value max">' + escapeHTML(roundTemp(daily.max)) + '</div>' +
              '</div>' +
              '<div class="temp-tile">' +
                '<div class="temp-label">Minimum</div>' +
                '<div class="temp-value min">' + escapeHTML(roundTemp(daily.min)) + '</div>' +
              '</div>' +
            '</div>' +
          '</aside>' +
          '<section class="details">' +
            '<div class="top-strip">' +
              '<div class="mini-card">' +
                '<div class="mini-title">Coordinates</div>' +
                '<div class="mini-value">' + escapeHTML(Number(cfg.lat).toFixed(3)) + '°, ' + escapeHTML(Number(cfg.lon).toFixed(3)) + '°</div>' +
                '<div class="mini-sub">Latitude / longitude</div>' +
              '</div>' +
              '<div class="mini-card">' +
                '<div class="mini-title">Average hourly</div>' +
                '<div class="mini-value">' + escapeHTML(preciseTemp(avg)) + '</div>' +
                '<div class="mini-sub">' + escapeHTML(hourly.length) + ' hourly readings</div>' +
              '</div>' +
              '<div class="mini-card">' +
                '<div class="mini-title">Day range</div>' +
                '<div class="mini-value">' + escapeHTML(tempSpread) + '</div>' +
                '<div class="mini-sub">' + escapeHTML(source) + ' data</div>' +
              '</div>' +
            '</div>' +
            '<div class="hourly-panel">' +
              '<div class="panel-head">' +
                '<div>' +
                  '<div class="panel-title">Hourly temperatures</div>' +
                  '<div class="panel-subtitle">UTC readings for ' + escapeHTML(cfg.date) + '</div>' +
                '</div>' +
                '<div class="range-pill">' + escapeHTML(preciseTemp(chartMin)) + ' – ' + escapeHTML(preciseTemp(chartMax)) + '</div>' +
              '</div>' +
              '<div class="chart-wrap">' +
                '<div class="bars" style="--count:' + hourly.length + '">' + barsHTML + '</div>' +
              '</div>' +
            '</div>' +
          '</section>';
      }

      function renderError(message) {
        app.innerHTML =
          '<div class="error" role="alert">' +
            '<div>' +
              '<div class="error-badge">!</div>' +
              '<h1 class="state-title">Weather data could not be loaded</h1>' +
              '<p class="state-text">The page could not load the requested weather information. Please check the location/date parameters and try again.</p>' +
              (message ? '<p class="state-text">' + escapeHTML(message) + '</p>' : '') +
            '</div>' +
          '</div>';
      }

      async function load() {
        var cfg = parseParams();
        var url = buildUrl(endpointForDate(cfg.date), cfg);

        try {
          var response = await fetch(url, {
            method: "GET",
            headers: { "Accept": "application/json" },
            credentials: "same-origin"
          });

          if (!response.ok) {
            throw new Error("Request failed with status " + response.status + ".");
          }

          var data = await response.json();
          render(data, cfg);
        } catch (err) {
          renderError(err && err.message ? err.message : "");
        }
      }

      load();
    })();
  </script>
</body>
</html>

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

bytes 总计24,969html / css / js790 / 11,428 / 12,751
dom 节点19dom 深度8
css 规则52含 js
brightness99.8contrast41.4
colorfulness37.7留白23.2%

该 slot 的 telemetry

prompt tokens312completion tokens8,209
total tokens8,521wall73.6 s
costrequest id
config.json568 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "gpt-5.5-eff-high--api--official--dev",
  "effort": "high",
  "family": "gpt",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "gpt-5.5",
  "protocol": "api",
  "served_model": "gpt-5.5-2026-04-23",
  "telemetry": {
    "completion_tokens": 106575,
    "cost_usd": null,
    "prompt_tokens": 2464,
    "total_tokens": 109039,
    "wall_ms": 868507
  },
  "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.5-eff-high--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T23:42:07.896700+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:41:04.774875+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-17T23:43:26.044431+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:42:12.491506+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-17T23:46:27.765865+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:43:30.740079+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-17T23:47:35.878126+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:46:32.810783+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-17T23:48:53.674345+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:47:40.522006+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-17T23:53:09.680317+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:48:57.837610+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-17T23:54:49.135651+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:53:15.150443+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-17T23:56:05.855397+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T23:54:53.094082+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
    }
  }
}