deepseek-v4-pro-0812 @ max · api

apimax
config
deepseek-v4-pro-0812-eff-max--api--official--dev
batch
2026-07-19--unified
transport
deepseek-official-api
protocol
api · metered
served model
deepseek-v4-pro
采集于
2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe
deepseek-v4-pro-0812 @max · api P-q slot 0 截图

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

similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。

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 {
      color-scheme: light;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
      --text-primary: #0f172a;
      --text-secondary: #475569;
      --text-muted: #94a3b8;
      --card-bg: rgba(255, 255, 255, 0.93);
      --card-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.35);
      --accent: #2563eb;
      --border-light: rgba(15, 23, 42, 0.08);
    }

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      min-height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      background: radial-gradient(ellipse at 20% 20%, #1e3c72 0%, #2a5298 50%, #0f2027 100%);
      padding: 32px;
    }

    .card {
      width: 100%;
      max-width: 1080px;
      background: var(--card-bg);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      border-radius: 36px;
      box-shadow: var(--card-shadow);
      padding: 40px 44px 44px;
      position: relative;
      overflow: hidden;
      color: var(--text-primary);
      animation: fadeIn 0.5s ease-out;
    }

    .card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 6px;
      background: linear-gradient(90deg, #60a5fa, #3b82f6, #8b5cf6, #60a5fa);
      background-size: 200% 100%;
      animation: shimmer 4s linear infinite;
    }

    @keyframes fadeIn {
      from { opacity: 0; transform: translateY(12px); }
      to { opacity: 1; transform: translateY(0); }
    }

    @keyframes shimmer {
      0% { background-position: 0% 0; }
      100% { background-position: 200% 0; }
    }

    .header {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      margin-bottom: 28px;
    }

    .location {
      font-size: 2.8rem;
      font-weight: 700;
      letter-spacing: -0.02em;
      line-height: 1.1;
      color: var(--text-primary);
    }

    .date {
      font-size: 1.15rem;
      font-weight: 400;
      color: var(--text-secondary);
      margin-top: 6px;
    }

    .weather-icon {
      width: 96px;
      height: 96px;
      flex-shrink: 0;
      color: #3b82f6;
      transition: transform 0.3s ease;
    }

    .weather-svg {
      width: 100%;
      height: 100%;
      display: block;
    }

    .weather-main {
      display: flex;
      align-items: center;
      gap: 36px;
      margin-bottom: 36px;
      flex-wrap: wrap;
    }

    .temps {
      display: flex;
      align-items: center;
      gap: 24px;
    }

    .temp-group {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
    }

    .temp-label {
      font-size: 0.75rem;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      color: var(--text-muted);
      margin-bottom: 4px;
    }

    .temp-max {
      font-size: 4rem;
      font-weight: 800;
      letter-spacing: -0.03em;
      line-height: 1;
      color: var(--text-primary);
    }

    .temp-min {
      font-size: 2.2rem;
      font-weight: 500;
      letter-spacing: -0.02em;
      line-height: 1;
      color: var(--text-secondary);
    }

    .temp-divider {
      width: 2px;
      height: 56px;
      background: var(--border-light);
      border-radius: 1px;
      align-self: center;
    }

    .condition {
      font-size: 1.2rem;
      font-weight: 500;
      color: var(--text-secondary);
      background: rgba(37, 99, 235, 0.08);
      padding: 12px 20px;
      border-radius: 999px;
      letter-spacing: 0.01em;
    }

    .hourly-section {
      border-top: 1px solid var(--border-light);
      padding-top: 24px;
    }

    .hourly-title {
      font-size: 1rem;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      color: var(--text-muted);
      margin-bottom: 16px;
    }

    .hourly-grid {
      display: grid;
      gap: 8px;
    }

    .hour-block {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 6px;
      padding: 12px 0 14px;
      border-radius: 14px;
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }

    .hour-block:hover {
      transform: translateY(-4px);
      box-shadow: 0 8px 16px -4px rgba(0, 0, 0, 0.12);
    }

    .hour-label {
      font-size: 0.68rem;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.04em;
      color: var(--text-muted);
    }

    .hour-temp {
      font-size: 0.9rem;
      font-weight: 700;
      color: var(--text-primary);
    }

    .loading {
      text-align: center;
      font-size: 1.2rem;
      color: var(--text-secondary);
      padding: 24px;
    }

    .error {
      text-align: center;
      font-size: 1.2rem;
      color: #b91c1c;
      background: rgba(254, 226, 226, 0.8);
      border: 1px solid rgba(239, 68, 68, 0.3);
      padding: 20px 24px;
      border-radius: 16px;
      margin-top: 12px;
    }

    .hidden {
      display: none !important;
    }

    @media (max-width: 820px) {
      body { padding: 16px; }
      .card { padding: 28px 24px 32px; border-radius: 28px; }
      .location { font-size: 2.2rem; }
      .weather-icon { width: 72px; height: 72px; }
      .temp-max { font-size: 3rem; }
      .temp-min { font-size: 1.6rem; }
      .temps { gap: 16px; }
      .temp-divider { height: 40px; }
      .condition { font-size: 1rem; padding: 10px 16px; }
      .hourly-grid { gap: 4px; }
      .hour-block { padding: 8px 0 10px; border-radius: 10px; }
      .hour-label { font-size: 0.6rem; }
      .hour-temp { font-size: 0.75rem; }
    }
  </style>
</head>
<body>
  <main class="card" id="card">
    <div id="loading" class="loading">Loading weather data&hellip;</div>
    <div id="error" class="error hidden">Unable to load weather data. Please try again later.</div>
    <div id="content" class="hidden">
      <header class="header">
        <div>
          <h1 class="location" id="location"></h1>
          <p class="date" id="date"></p>
        </div>
        <div class="weather-icon" id="weatherIcon" aria-hidden="true"></div>
      </header>
      <section class="weather-main">
        <div class="temps">
          <div class="temp-group">
            <span class="temp-label">High</span>
            <span class="temp-max" id="tempMax"></span>
          </div>
          <div class="temp-divider"></div>
          <div class="temp-group">
            <span class="temp-label">Low</span>
            <span class="temp-min" id="tempMin"></span>
          </div>
        </div>
        <div class="condition" id="condition"></div>
      </section>
      <section class="hourly-section">
        <h2 class="hourly-title">Hourly temperatures</h2>
        <div class="hourly-grid" id="hourlyGrid"></div>
      </section>
    </div>
  </main>

  <script>
    (function() {
      const params = new URLSearchParams(window.location.search);

      function getNumberParam(name, fallback) {
        const raw = params.get(name);
        if (raw === null || raw.trim() === '') return fallback;
        const num = Number(raw);
        return Number.isFinite(num) ? num : fallback;
      }

      function getValidDate(raw, fallback) {
        if (raw === null || raw.trim() === '') return fallback;
        if (!/^\d{4}-\d{2}-\d{2}$/.test(raw)) return fallback;
        const d = new Date(raw + 'T00:00:00Z');
        if (isNaN(d.getTime())) return fallback;
        const year = d.getUTCFullYear();
        const month = String(d.getUTCMonth() + 1).padStart(2, '0');
        const day = String(d.getUTCDate()).padStart(2, '0');
        if (`${year}-${month}-${day}` !== raw) return fallback;
        return raw;
      }

      const todayUTC = new Date().toISOString().slice(0, 10);

      const lat = getNumberParam('lat', 52.52);
      const lon = getNumberParam('lon', 13.405);
      const locationName = (params.get('name') && params.get('name').trim()) || 'Berlin';
      const date = getValidDate(params.get('date'), todayUTC);

      const weatherCodes = {
        0: { text: 'Clear sky', icon: 'sun' },
        1: { text: 'Mainly clear', icon: 'sun' },
        2: { text: 'Partly cloudy', icon: 'partly-cloudy' },
        3: { text: 'Overcast', icon: 'cloud' },
        45: { text: 'Fog', icon: 'fog' },
        48: { text: 'Depositing rime fog', icon: 'fog' },
        51: { text: 'Light drizzle', icon: 'rain' },
        53: { text: 'Moderate drizzle', icon: 'rain' },
        55: { text: 'Dense drizzle', icon: 'rain' },
        56: { text: 'Freezing light drizzle', icon: 'rain' },
        57: { text: 'Freezing dense drizzle', icon: 'rain' },
        61: { text: 'Light rain', icon: 'rain' },
        63: { text: 'Moderate rain', icon: 'rain' },
        65: { text: 'Heavy rain', icon: 'rain' },
        66: { text: 'Freezing light rain', icon: 'rain' },
        67: { text: 'Freezing heavy rain', icon: 'rain' },
        71: { text: 'Light snow', icon: 'snow' },
        73: { text: 'Moderate snow', icon: 'snow' },
        75: { text: 'Heavy snow', icon: 'snow' },
        77: { text: 'Snow grains', icon: 'snow' },
        80: { text: 'Light rain showers', icon: 'rain' },
        81: { text: 'Moderate rain showers', icon: 'rain' },
        82: { text: 'Violent rain showers', icon: 'rain' },
        85: { text: 'Light snow showers', icon: 'snow' },
        86: { text: 'Heavy snow showers', icon: 'snow' },
        95: { text: 'Thunderstorm', icon: 'thunder' },
        96: { text: 'Thunderstorm with slight hail', icon: 'thunder' },
        99: { text: 'Thunderstorm with heavy hail', icon: 'thunder' }
      };

      function getIconSvg(iconType) {
        const cloudShape = `<g fill="currentColor"><circle cx="24" cy="34" r="10"/><circle cx="32" cy="26" r="11"/><circle cx="40" cy="34" r="8"/><rect x="18" y="34" width="28" height="10" rx="5"/></g>`;
        switch (iconType) {
          case 'sun':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              <circle cx="32" cy="32" r="12" fill="currentColor"/>
              <g stroke="currentColor" stroke-width="3.5" stroke-linecap="round">
                <path d="M32 8V2M32 62v-6M8 32H2M62 32h-6M14.4 14.4l-4.2-4.2M53.8 53.8l-4.2-4.2M49.6 14.4l4.2-4.2M10.2 53.8l4.2-4.2"/>
              </g>
            </svg>`;
          case 'partly-cloudy':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              <circle cx="20" cy="20" r="8" fill="currentColor"/>
              <g stroke="currentColor" stroke-width="2.5" stroke-linecap="round">
                <path d="M20 6V2M20 30v-2M6 16H2M38 20h-2M14 8l-3-3M30 14l-3-3"/>
              </g>
              <g fill="currentColor">
                <circle cx="34" cy="30" r="8"/>
                <circle cx="42" cy="26" r="7"/>
                <circle cx="48" cy="30" r="5"/>
                <rect x="30" y="30" width="22" height="8" rx="4"/>
              </g>
            </svg>`;
          case 'cloud':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              ${cloudShape}
            </svg>`;
          case 'fog':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              ${cloudShape}
              <g stroke="currentColor" stroke-width="3" stroke-linecap="round">
                <path d="M16 46h32M18 52h28M16 58h32"/>
              </g>
            </svg>`;
          case 'rain':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              ${cloudShape}
              <g stroke="currentColor" stroke-width="3" stroke-linecap="round">
                <path d="M22 48v6M32 48v6M42 48v6"/>
              </g>
            </svg>`;
          case 'snow':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              ${cloudShape}
              <g stroke="currentColor" stroke-width="2.5" stroke-linecap="round">
                <path d="M20 50v6M17 53h6M18.5 51.5l3 3M18.5 54.5l3-3"/>
                <path d="M30 50v6M27 53h6M28.5 51.5l3 3M28.5 54.5l3-3"/>
                <path d="M40 50v6M37 53h6M38.5 51.5l3 3M38.5 54.5l3-3"/>
              </g>
            </svg>`;
          case 'thunder':
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
              ${cloudShape}
              <polygon points="34,44 28,54 34,54 30,62 40,52 34,52 38,44" fill="currentColor"/>
            </svg>`;
          default:
            return `<svg class="weather-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">${cloudShape}</svg>`;
        }
      }

      function formatDate(dateStr) {
        const d = new Date(dateStr + 'T00:00:00Z');
        return d.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' });
      }

      function getTempColor(temp, min, max) {
        if (temp === null || temp === undefined) return 'rgba(100, 116, 139, 0.08)';
        if (max === min) return 'hsla(210, 70%, 55%, 0.25)';
        const ratio = (temp - min) / (max - min);
        const hue = 205 - ratio * 180; // 205 (blue) to 25 (orange-red)
        return `hsla(${hue}, 75%, 58%, 0.22)`;
      }

      function renderHourly(hourData) {
        const grid = document.getElementById('hourlyGrid');
        grid.style.gridTemplateColumns = `repeat(${hourData.length}, minmax(0, 1fr))`;
        grid.innerHTML = '';
        const temps = hourData.map(d => d.temp).filter(t => t !== null && t !== undefined);
        const min = temps.length ? Math.min(...temps) : 0;
        const max = temps.length ? Math.max(...temps) : 1;

        hourData.forEach(({ time, temp }) => {
          const hour = time.slice(11, 13);
          const block = document.createElement('div');
          block.className = 'hour-block';
          block.style.backgroundColor = getTempColor(temp, min, max);
          const tempDisplay = (temp !== null && temp !== undefined) ? `${Math.round(temp)}°` : '--';
          block.innerHTML = `<span class="hour-label">${hour}</span><span class="hour-temp">${tempDisplay}</span>`;
          grid.appendChild(block);
        });
      }

      async function loadWeather() {
        const loading = document.getElementById('loading');
        const error = document.getElementById('error');
        const content = document.getElementById('content');

        try {
          const endpoint = date < todayUTC ? '/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: date,
            end_date: date
          });
          const url = `${endpoint}?${query.toString()}`;
          const response = await fetch(url);
          if (!response.ok) throw new Error(`HTTP ${response.status}`);
          const data = await response.json();
          if (!data.daily || !data.hourly) throw new Error('Missing data');

          const dailyIndex = data.daily.time.indexOf(date);
          if (dailyIndex === -1) throw new Error('No daily entry for date');

          const tmax = data.daily.temperature_2m_max[dailyIndex];
          const tmin = data.daily.temperature_2m_min[dailyIndex];
          const code = data.daily.weather_code[dailyIndex];

          const hourData = [];
          const hourlyTimes = data.hourly.time;
          const hourlyTemps = data.hourly.temperature_2m;
          for (let i = 0; i < hourlyTimes.length; i++) {
            if (hourlyTimes[i].slice(0, 10) === date) {
              hourData.push({ time: hourlyTimes[i], temp: hourlyTemps[i] });
            }
          }
          if (hourData.length === 0) throw new Error('No hourly data for date');

          const conditionInfo = weatherCodes[code] || { text: 'Unknown', icon: 'cloud' };

          document.getElementById('location').textContent = locationName;
          document.getElementById('date').textContent = formatDate(date);
          document.getElementById('tempMax').textContent = `${Math.round(tmax)}°`;
          document.getElementById('tempMin').textContent = `${Math.round(tmin)}°`;
          document.getElementById('condition').textContent = conditionInfo.text;
          document.getElementById('weatherIcon').innerHTML = getIconSvg(conditionInfo.icon);

          renderHourly(hourData);

          loading.classList.add('hidden');
          error.classList.add('hidden');
          content.classList.remove('hidden');
        } catch (err) {
          console.error('Weather load error:', err);
          loading.classList.add('hidden');
          content.classList.add('hidden');
          error.classList.remove('hidden');
        }
      }

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

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

bytes 总计17,257html / css / js1,421 / 5,628 / 10,208
dom 节点30dom 深度8
css 规则48含 js
brightness142.8contrast87.8
colorfulness50.3留白43.7%

该 slot 的 telemetry

prompt tokens413completion tokens13,801
total tokens14,214wall150.5 s
costrequest id
config.json590 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_DEEPSEEK_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "deepseek-v4-pro-0812-eff-max--api--official--dev",
  "effort": "max",
  "family": "deepseek",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "deepseek-v4-pro-0812",
  "protocol": "api",
  "served_model": "deepseek-v4-pro",
  "telemetry": {
    "completion_tokens": 135419,
    "cost_usd": null,
    "prompt_tokens": 3272,
    "total_tokens": 138691,
    "wall_ms": 1488309
  },
  "transport": "deepseek-official-api",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-08-13--ds-pro-ga",
  "config_id": "deepseek-v4-pro-0812-eff-max--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T06:24:59.313729+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:22:41.362837+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-08-13T06:28:41.571030+00:00",
          "http_status": 200,
          "outcome": "infra-failed",
          "reached_model": true,
          "reason": "mid-stream-death",
          "request_id": null,
          "started_at": "2026-08-13T06:25:02.352216+00:00"
        }
      ],
      "block_index": 0,
      "model_reaching_attempt_index": 0,
      "slot_index": 0,
      "terminal_state": "infra-failed",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T06:34:41.631302+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:28:41.572271+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-08-13T06:35:53.906605+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:34:45.524039+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-08-13T06:38:47.024740+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:35:57.053997+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-08-13T06:42:38.740919+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:38:50.540638+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-08-13T06:46:07.508996+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:42:42.378648+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-08-13T06:48:58.846361+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T06:46:10.755426+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
    }
  }
}