deepseek-v4-pro @ max · api

apimax
config
deepseek-v4-pro-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 @max · 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=device-width, initial-scale=1.0">
    <title>Weather Card</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            background: linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%);
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
            transition: background 1s ease;
            padding: 20px;
        }
        .weather-card {
            background: rgba(255, 255, 255, 0.85);
            backdrop-filter: blur(30px);
            -webkit-backdrop-filter: blur(30px);
            border: 1px solid rgba(255, 255, 255, 0.6);
            border-radius: 28px;
            box-shadow: 0 30px 60px rgba(0, 0, 0, 0.12), 0 10px 30px rgba(0, 0, 0, 0.08);
            padding: 44px 48px;
            max-width: 760px;
            width: 100%;
            animation: fadeInUp 0.7s cubic-bezier(0.16, 1, 0.3, 1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        .weather-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 35px 70px rgba(0, 0, 0, 0.15), 0 12px 35px rgba(0, 0, 0, 0.1);
        }
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        .loading {
            text-align: center;
            padding: 60px 20px;
            color: #666;
        }
        .spinner {
            width: 44px;
            height: 44px;
            border: 4px solid rgba(0, 0, 0, 0.08);
            border-top-color: #4facfe;
            border-radius: 50%;
            animation: spin 0.7s linear infinite;
            margin: 0 auto 20px;
        }
        @keyframes spin {
            to { transform: rotate(360deg); }
        }
        .loading p {
            font-size: 1rem;
            color: #888;
            letter-spacing: 0.3px;
        }
        .error-state {
            text-align: center;
            padding: 50px 20px;
        }
        .error-icon {
            font-size: 3.5rem;
            margin-bottom: 16px;
        }
        .error-title {
            font-size: 1.3rem;
            font-weight: 600;
            color: #333;
            margin-bottom: 8px;
        }
        .error-message {
            color: #777;
            font-size: 0.95rem;
            line-height: 1.5;
        }
        .main-info {
            text-align: center;
            margin-bottom: 8px;
        }
        .location {
            font-size: 2.4rem;
            font-weight: 700;
            color: #1a1a2e;
            margin-bottom: 2px;
            letter-spacing: -0.5px;
            line-height: 1.2;
        }
        .date {
            font-size: 1rem;
            color: #777;
            margin-bottom: 20px;
            font-weight: 500;
        }
        .weather-main {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 16px;
            margin-bottom: 18px;
        }
        .weather-emoji {
            font-size: 4.5rem;
            line-height: 1;
            filter: drop-shadow(0 8px 12px rgba(0,0,0,0.12));
            transition: transform 0.3s ease;
        }
        .weather-emoji:hover {
            transform: scale(1.1);
        }
        .condition-text {
            font-size: 1.4rem;
            font-weight: 500;
            color: #444;
        }
        .temps {
            display: flex;
            justify-content: center;
            gap: 40px;
            margin-bottom: 0;
        }
        .temp-item {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        .temp-label {
            font-size: 0.8rem;
            color: #999;
            text-transform: uppercase;
            letter-spacing: 1.5px;
            margin-bottom: 4px;
            font-weight: 600;
        }
        .temp-value {
            font-size: 2.6rem;
            font-weight: 700;
            color: #1a1a2e;
            line-height: 1;
        }
        .temp-value.max {
            color: #e74c3c;
        }
        .temp-value.min {
            color: #3498db;
        }
        .divider {
            border: none;
            height: 1px;
            background: linear-gradient(to right, transparent, rgba(0,0,0,0.1), transparent);
            margin: 28px 0 24px;
        }
        .hourly-section {
            background: rgba(0, 0, 0, 0.025);
            border-radius: 18px;
            padding: 22px 24px 18px;
            border: 1px solid rgba(0,0,0,0.04);
        }
        .chart-title {
            font-size: 0.8rem;
            font-weight: 700;
            color: #666;
            margin-bottom: 16px;
            text-align: center;
            text-transform: uppercase;
            letter-spacing: 1.5px;
        }
        .chart-bars-grid {
            display: grid;
            grid-template-columns: repeat(24, 1fr);
            gap: 1px;
            height: 140px;
            align-items: end;
            margin-bottom: 4px;
        }
        .bar-col {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            height: 100%;
            cursor: pointer;
            transition: transform 0.15s ease;
        }
        .bar-col:hover {
            transform: scaleY(1.05);
            transform-origin: bottom;
        }
        .bar-temp {
            font-size: 8.5px;
            color: #555;
            margin-bottom: 2px;
            line-height: 1;
            font-weight: 600;
            white-space: nowrap;
            opacity: 0.9;
            transition: opacity 0.2s ease;
        }
        .bar-col:hover .bar-temp {
            opacity: 1;
            font-weight: 700;
        }
        .bar-fill {
            width: 65%;
            max-width: 26px;
            border-radius: 5px 5px 0 0;
            min-height: 4px;
            transition: height 0.4s cubic-bezier(0.25, 0.8, 0.25, 1.2), background 0.3s ease, width 0.2s ease;
        }
        .bar-col:hover .bar-fill {
            width: 85%;
            max-width: 30px;
        }
        .chart-labels-grid {
            display: grid;
            grid-template-columns: repeat(24, 1fr);
            gap: 1px;
        }
        .bar-hour {
            font-size: 8.5px;
            color: #999;
            text-align: center;
            line-height: 1;
            font-weight: 500;
        }
    </style>
</head>
<body>
    <div class="weather-card" id="weatherCard">
        <div class="loading">
            <div class="spinner"></div>
            <p>Loading weather data…</p>
        </div>
    </div>
    <script>
        (function() {
            var params = new URLSearchParams(window.location.search);
            var lat = parseFloat(params.get('lat')) || 52.52;
            var lon = parseFloat(params.get('lon')) || 13.405;
            var name = params.get('name') || 'Berlin';
            var dateStr = params.get('date');

            function getTodayUTC() {
                var now = new Date();
                var year = now.getUTCFullYear();
                var month = String(now.getUTCMonth() + 1).padStart(2, '0');
                var day = String(now.getUTCDate()).padStart(2, '0');
                return year + '-' + month + '-' + day;
            }

            function isValidDateStr(str) {
                return /^\d{4}-\d{2}-\d{2}$/.test(str) && !isNaN(new Date(str + 'T00:00:00Z').getTime());
            }

            var date;
            if (dateStr && isValidDateStr(dateStr)) {
                date = dateStr;
            } else {
                date = getTodayUTC();
            }

            var todayUTC = getTodayUTC();
            var isPast = date < todayUTC;
            var apiPath = isPast ? '/api/om/archive' : '/api/om/forecast';

            var apiParams = 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
            });
            var apiUrl = apiPath + '?' + apiParams.toString();

            function getWeatherEmoji(code) {
                if (code === 0) return '\u2600\uFE0F';
                if (code === 1) return '\uD83C\uDF24\uFE0F';
                if (code === 2) return '\u26C5';
                if (code === 3) return '\u2601\uFE0F';
                if (code >= 45 && code <= 48) return '\uD83C\uDF2B\uFE0F';
                if (code >= 51 && code <= 55) return '\uD83C\uDF26\uFE0F';
                if (code >= 56 && code <= 57) return '\uD83C\uDF27\uFE0F';
                if (code >= 61 && code <= 65) return '\uD83C\uDF27\uFE0F';
                if (code >= 66 && code <= 67) return '\uD83C\uDF27\uFE0F';
                if (code >= 71 && code <= 77) return '\u2744\uFE0F';
                if (code >= 80 && code <= 82) return '\uD83C\uDF26\uFE0F';
                if (code >= 85 && code <= 86) return '\uD83C\uDF28\uFE0F';
                if (code >= 95) return '\u26C8\uFE0F';
                return '\uD83C\uDF21\uFE0F';
            }

            function getWeatherCondition(code) {
                var conditions = {
                    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',
                    73: 'Moderate snow',
                    75: 'Heavy snow',
                    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 conditions[code] || 'Unknown';
            }

            function getTempColor(temp) {
                var minTemp = -15;
                var maxTemp = 45;
                var clamped = Math.max(minTemp, Math.min(maxTemp, temp));
                var fraction = (clamped - minTemp) / (maxTemp - minTemp);
                var hue = 220 - fraction * 210;
                return 'hsl(' + hue + ', 65%, 60%)';
            }

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

            function escapeHtml(text) {
                var div = document.createElement('div');
                div.textContent = text;
                return div.innerHTML;
            }

            var card = document.getElementById('weatherCard');

            fetch(apiUrl)
                .then(function(response) {
                    if (!response.ok) throw new Error('HTTP error ' + response.status);
                    return response.json();
                })
                .then(function(data) {
                    if (!data.daily || !data.hourly || !data.daily.temperature_2m_max || data.daily.temperature_2m_max.length === 0) {
                        throw new Error('Invalid data structure');
                    }
                    var maxTemp = Math.round(data.daily.temperature_2m_max[0]);
                    var minTemp = Math.round(data.daily.temperature_2m_min[0]);
                    var weatherCode = data.daily.weather_code[0];
                    var hourlyTimes = data.hourly.time;
                    var hourlyTemps = data.hourly.temperature_2m;

                    var conditionText = getWeatherCondition(weatherCode);
                    var emoji = getWeatherEmoji(weatherCode);

                    var hMin = Math.min.apply(null, hourlyTemps);
                    var hMax = Math.max.apply(null, hourlyTemps);
                    var range = hMax - hMin || 1;

                    var barsHTML = '';
                    var labelsHTML = '';
                    hourlyTemps.forEach(function(temp, i) {
                        var timeStr = hourlyTimes[i];
                        var hour = timeStr.split('T')[1].split(':')[0];
                        var heightPercent = ((temp - hMin) / range) * 100;
                        var color = getTempColor(temp);
                        var roundedTemp = Math.round(temp);
                        barsHTML +=
                            '<div class="bar-col" title="' + roundedTemp + '\u00B0C at ' + hour + ':00">' +
                                '<span class="bar-temp">' + roundedTemp + '\u00B0</span>' +
                                '<div class="bar-fill" style="height: ' + heightPercent + '%; background: ' + color + ';"></div>' +
                            '</div>';
                        labelsHTML += '<span class="bar-hour">' + hour + '</span>';
                    });

                    var formattedDate = formatDate(date);

                    card.innerHTML =
                        '<div class="card-content">' +
                            '<div class="main-info">' +
                                '<div class="location">' + escapeHtml(name) + '</div>' +
                                '<div class="date">' + formattedDate + '</div>' +
                                '<div class="weather-main">' +
                                    '<div class="weather-emoji">' + emoji + '</div>' +
                                    '<div class="condition-text">' + escapeHtml(conditionText) + '</div>' +
                                '</div>' +
                                '<div class="temps">' +
                                    '<div class="temp-item">' +
                                        '<span class="temp-label">High</span>' +
                                        '<span class="temp-value max">' + maxTemp + '\u00B0C</span>' +
                                    '</div>' +
                                    '<div class="temp-item">' +
                                        '<span class="temp-label">Low</span>' +
                                        '<span class="temp-value min">' + minTemp + '\u00B0C</span>' +
                                    '</div>' +
                                '</div>' +
                            '</div>' +
                            '<hr class="divider">' +
                            '<div class="hourly-section">' +
                                '<div class="chart-title">Hourly Temperatures</div>' +
                                '<div class="chart-container">' +
                                    '<div class="chart-bars-grid">' +
                                        barsHTML +
                                    '</div>' +
                                    '<div class="chart-labels-grid">' +
                                        labelsHTML +
                                    '</div>' +
                                '</div>' +
                            '</div>' +
                        '</div>';

                    updateBackground(weatherCode);
                })
                .catch(function(error) {
                    console.error('Weather fetch error:', error);
                    card.innerHTML =
                        '<div class="error-state">' +
                            '<div class="error-icon">\u26A0\uFE0F</div>' +
                            '<p class="error-title">Unable to load weather data</p>' +
                            '<p class="error-message">Please check the location and date, or try again later.</p>' +
                        '</div>';
                });

            function updateBackground(code) {
                var gradient;
                if (code === 0) {
                    gradient = 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)';
                } else if (code >= 1 && code <= 3) {
                    gradient = 'linear-gradient(135deg, #8e9eab 0%, #eef2f3 100%)';
                } else if (code >= 45 && code <= 48) {
                    gradient = 'linear-gradient(135deg, #bdc3c7 0%, #ecf0f1 100%)';
                } else if (code >= 51 && code <= 67) {
                    gradient = 'linear-gradient(135deg, #3a7bd5 0%, #3a6073 100%)';
                } else if (code >= 71 && code <= 86) {
                    gradient = 'linear-gradient(135deg, #e6e9f0 0%, #eef1f5 100%)';
                } else if (code >= 95) {
                    gradient = 'linear-gradient(135deg, #232526 0%, #414345 100%)';
                } else {
                    gradient = 'linear-gradient(135deg, #a1c4fd 0%, #c2e9fb 100%)';
                }
                document.body.style.background = gradient;
            }
        })();
    </script>
</body>
</html>

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

bytes 总计18,080html / css / js433 / 6,715 / 10,932
dom 节点12dom 深度5
css 规则41含 js
brightness155.9contrast63.2
colorfulness66.6留白39.7%

该 slot 的 telemetry

prompt tokens400completion tokens31,157
total tokens31,557wall416 s
costrequest id
config.json580 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_DEEPSEEK_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "deepseek-v4-pro-eff-max--api--official--dev",
  "effort": "max",
  "family": "deepseek",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "deepseek-v4-pro",
  "protocol": "api",
  "served_model": "deepseek-v4-pro",
  "telemetry": {
    "completion_tokens": 166993,
    "cost_usd": null,
    "prompt_tokens": 3168,
    "total_tokens": 170161,
    "wall_ms": 2352631
  },
  "transport": "deepseek-official-api",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-07-19--official-deepseek",
  "config_id": "deepseek-v4-pro-eff-max--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-19T08:11:49.531594+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:04:53.489171+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-19T08:14:14.198029+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:11:53.285095+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-19T08:19:19.412729+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:14:17.823030+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-19T08:24:37.868112+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:19:22.924848+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-19T08:27:04.751863+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:24:41.604768+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-19T08:33:32.247940+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:27:08.384933+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-19T08:38:55.771073+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:33:35.835552+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-19T08:44:31.737275+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:38:59.617061+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
    }
  }
}