deepseek-v4-pro-0812 @ none · api
apinone
- config
- deepseek-v4-pro-0812-eff-none--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

输出带 markdown 围栏 — 模型把 HTML 包在代码围栏里返回,提取时已剥离;记录在此以便追溯。
截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguous展示值:25.3max-equals-min
- min tempambiguous展示值:25.3max-equals-min
- 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, user-scalable=yes">
<title>Weather Card · Daily</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: linear-gradient(145deg, #0b1c2f 0%, #1b3b4f 100%);
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
padding: 2rem;
margin: 0;
}
.weather-card {
width: 100%;
max-width: 820px;
background: rgba(255, 255, 255, 0.92);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-radius: 3.5rem;
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.45), 0 12px 30px rgba(0, 0, 0, 0.3);
padding: 2.5rem 2.8rem;
transition: all 0.2s ease;
border: 1px solid rgba(255, 255, 255, 0.4);
color: #132c33;
}
.location-date {
display: flex;
justify-content: space-between;
align-items: baseline;
flex-wrap: wrap;
gap: 0.8rem 1.5rem;
margin-bottom: 2.2rem;
}
.location-name {
font-weight: 700;
font-size: 2.8rem;
letter-spacing: -0.02em;
line-height: 1.1;
color: #0b2b36;
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.8);
display: flex;
align-items: center;
gap: 0.5rem;
}
.location-name::before {
content: "📍";
font-size: 2.2rem;
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.2));
}
.date-display {
font-weight: 500;
font-size: 1.5rem;
background: rgba(20, 45, 55, 0.08);
padding: 0.4rem 1.4rem;
border-radius: 40px;
color: #1d454e;
letter-spacing: 0.3px;
backdrop-filter: blur(4px);
white-space: nowrap;
}
.temp-summary {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: 1.8rem 2.8rem;
margin: 1.5rem 0 2.2rem;
background: rgba(220, 240, 245, 0.5);
border-radius: 80px;
padding: 1.6rem 2rem;
box-shadow: inset 0 1px 4px rgba(255,255,255,0.8), 0 6px 14px rgba(0, 20, 30, 0.1);
}
.temp-main {
display: flex;
align-items: baseline;
gap: 1.4rem;
}
.temp-high {
font-size: 4.2rem;
font-weight: 700;
color: #b33a3a;
line-height: 1;
letter-spacing: -0.03em;
text-shadow: 0 4px 8px rgba(160, 30, 30, 0.2);
}
.temp-low {
font-size: 3rem;
font-weight: 500;
color: #2a5f6b;
line-height: 1;
opacity: 0.95;
}
.temp-unit {
font-size: 1.8rem;
font-weight: 500;
color: #425e66;
margin-left: 0.2rem;
}
.condition-badge {
display: flex;
align-items: center;
gap: 0.7rem;
background: #ffffffdd;
padding: 0.6rem 1.7rem;
border-radius: 60px;
font-weight: 600;
font-size: 1.5rem;
color: #1c3a42;
box-shadow: 0 4px 10px rgba(0,0,0,0.05);
backdrop-filter: blur(8px);
letter-spacing: -0.2px;
}
.weather-icon {
font-size: 2.4rem;
filter: drop-shadow(0 4px 6px rgba(0,0,0,0.15));
}
.hourly-section {
margin-top: 1.8rem;
}
.hourly-title {
font-size: 1.1rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1.2px;
color: #3d5b63;
margin-bottom: 1rem;
border-bottom: 2px dashed #b5cfd6;
padding-bottom: 0.5rem;
}
.hourly-grid {
display: flex;
flex-wrap: wrap;
gap: 0.6rem;
justify-content: flex-start;
}
.hour-item {
background: #f2f9fc;
border-radius: 40px;
padding: 0.55rem 0.8rem;
min-width: 72px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 2px 6px rgba(30, 60, 70, 0.06);
border: 1px solid rgba(255, 255, 255, 0.7);
transition: 0.15s;
backdrop-filter: blur(2px);
color: #17404b;
}
.hour-time {
font-size: 0.8rem;
font-weight: 600;
color: #3f656f;
letter-spacing: 0.3px;
}
.hour-temp {
font-size: 1.3rem;
font-weight: 650;
margin-top: 2px;
color: #122b33;
}
.error-message {
background: #ffebee;
color: #b71c1c;
padding: 1.2rem 2rem;
border-radius: 60px;
font-weight: 600;
text-align: center;
font-size: 1.4rem;
margin: 2rem 0;
border: 1px solid #ffcdd2;
}
.loading-message {
text-align: center;
font-size: 1.6rem;
font-weight: 500;
color: #315c68;
padding: 2rem;
}
@media (max-width: 700px) {
.weather-card { padding: 1.6rem; }
.temp-high { font-size: 3.2rem; }
.location-name { font-size: 2.2rem; }
}
</style>
</head>
<body>
<div class="weather-card" id="weatherCard">
<div class="loading-message">⏳ Loading weather…</div>
</div>
<script>
(function() {
// ---------- Read URL query + defaults ----------
const params = new URLSearchParams(window.location.search);
const defaultLat = 52.52;
const defaultLon = 13.405;
const defaultName = "Berlin";
// default date = today UTC (YYYY-MM-DD)
const todayUTC = new Date();
const defaultDateStr = todayUTC.toISOString().slice(0, 10);
const lat = params.get('lat');
const lon = params.get('lon');
const nameParam = params.get('name');
const dateParam = params.get('date');
const latitude = lat ? lat : defaultLat;
const longitude = lon ? lon : defaultLon;
const locationName = nameParam ? nameParam.trim() : defaultName;
const requestedDate = dateParam ? dateParam : defaultDateStr;
// ---------- WMO weather code mapping ----------
const weatherCodeMap = {
0: { condition: "Clear sky", icon: "☀️" },
1: { condition: "Mainly clear", icon: "🌤️" },
2: { condition: "Partly cloudy", icon: "⛅" },
3: { condition: "Overcast", icon: "☁️" },
45: { condition: "Fog", icon: "🌫️" },
48: { condition: "Depositing rime fog", icon: "🌁" },
51: { condition: "Light drizzle", icon: "🌦️" },
53: { condition: "Moderate drizzle", icon: "🌦️" },
55: { condition: "Dense drizzle", icon: "🌧️" },
56: { condition: "Freezing drizzle", icon: "🌧️❄️" },
57: { condition: "Freezing drizzle", icon: "🌧️❄️" },
61: { condition: "Light rain", icon: "🌧️" },
63: { condition: "Moderate rain", icon: "🌧️" },
65: { condition: "Heavy rain", icon: "🌧️💧" },
66: { condition: "Freezing rain", icon: "🌧️❄️" },
67: { condition: "Freezing rain", icon: "🌧️❄️" },
71: { condition: "Light snow", icon: "🌨️" },
73: { condition: "Moderate snow", icon: "🌨️❄️" },
75: { condition: "Heavy snow", icon: "❄️🌨️" },
77: { condition: "Snow grains", icon: "🌨️" },
80: { condition: "Light showers", icon: "🌦️" },
81: { condition: "Moderate showers", icon: "🌧️" },
82: { condition: "Violent showers", icon: "⛈️" },
85: { condition: "Snow showers", icon: "🌨️🌨️" },
86: { condition: "Snow showers", icon: "🌨️🌨️" },
95: { condition: "Thunderstorm", icon: "⛈️" },
96: { condition: "Thunderstorm w/ hail", icon: "⛈️🌨️" },
99: { condition: "Thunderstorm w/ hail", icon: "⛈️🌨️" }
};
function getWeatherInfo(code) {
if (weatherCodeMap[code]) return weatherCodeMap[code];
// fallback
if (code >= 0 && code < 3) return { condition: "Clear/Partly cloudy", icon: "🌤️" };
if (code >= 3 && code < 50) return { condition: "Cloudy", icon: "☁️" };
if (code >= 50 && code < 70) return { condition: "Rain/Drizzle", icon: "🌧️" };
if (code >= 70 && code < 80) return { condition: "Snow", icon: "🌨️" };
if (code >= 80 && code < 90) return { condition: "Showers", icon: "🌦️" };
return { condition: "Thunderstorm", icon: "⛈️" };
}
// ---------- Determine which API path to use (archive for past, forecast otherwise) ----------
function isPastDate(dateStr) {
const now = new Date();
const todayStr = now.toISOString().slice(0, 10);
return dateStr < todayStr;
}
function buildApiUrl() {
const baseForecast = '/api/om/forecast';
const baseArchive = '/api/om/archive';
const useArchive = isPastDate(requestedDate);
const base = useArchive ? baseArchive : baseForecast;
const queryParams = new URLSearchParams({
latitude: latitude,
longitude: longitude,
daily: 'temperature_2m_max,temperature_2m_min,weather_code',
hourly: 'temperature_2m',
timezone: 'UTC',
temperature_unit: 'celsius',
start_date: requestedDate,
end_date: requestedDate
});
return `${base}?${queryParams.toString()}`;
}
function renderError(message = "Weather data could not be loaded.") {
const card = document.getElementById('weatherCard');
if (card) {
card.innerHTML = `<div class="error-message">🌩️ ${message}</div>`;
}
}
function renderWeather(data) {
const card = document.getElementById('weatherCard');
if (!card) return;
try {
// Extract daily data
const daily = data.daily;
const hourly = data.hourly;
if (!daily || !hourly) {
renderError('Incomplete weather data.');
return;
}
const dailyTime = daily.time ? daily.time[0] : requestedDate;
const maxTemp = daily.temperature_2m_max ? daily.temperature_2m_max[0] : '—';
const minTemp = daily.temperature_2m_min ? daily.temperature_2m_min[0] : '—';
const weatherCode = daily.weather_code ? daily.weather_code[0] : -1;
const weatherMeta = getWeatherInfo(weatherCode);
// Hourly temperatures for requested date (filter by time startswith date)
const hourlyTimes = hourly.time || [];
const hourlyTemps = hourly.temperature_2m || [];
// Build hourly display items (only those matching the date)
const hourlyItems = [];
if (hourlyTimes.length === hourlyTemps.length) {
for (let i = 0; i < hourlyTimes.length; i++) {
const timeStr = hourlyTimes[i];
if (typeof timeStr === 'string' && timeStr.startsWith(requestedDate)) {
const hour = timeStr.slice(11, 16); // "HH:MM"
hourlyItems.push({
hour: hour,
temp: hourlyTemps[i]
});
}
}
}
// Fallback if no hourly matches: use all hourly (shouldn't happen but safe)
if (hourlyItems.length === 0 && hourlyTimes.length > 0) {
for (let i = 0; i < hourlyTimes.length; i++) {
const timeStr = hourlyTimes[i];
const hour = timeStr.includes('T') ? timeStr.split('T')[1].slice(0,5) : timeStr.slice(11,16);
hourlyItems.push({
hour: hour,
temp: hourlyTemps[i] ?? '—'
});
}
}
// Build hourly HTML
let hourlyHtml = '';
if (hourlyItems.length > 0) {
const hourCards = hourlyItems.map(item => {
const tempDisplay = (item.temp !== undefined && item.temp !== null) ? `${item.temp}°` : '—';
return `<div class="hour-item">
<span class="hour-time">${item.hour}</span>
<span class="hour-temp">${tempDisplay}</span>
</div>`;
}).join('');
hourlyHtml = `
<div class="hourly-section">
<div class="hourly-title">⌛ Hourly temperatures</div>
<div class="hourly-grid">${hourCards}</div>
</div>
`;
} else {
hourlyHtml = `<div class="hourly-title" style="margin-top:1rem;">No hourly data available</div>`;
}
// Format max/min for display (round to 1 decimal, but show as integer if .0)
const formatTemp = (val) => {
if (val === undefined || val === null || isNaN(val)) return '—';
return val % 1 === 0 ? `${val}°` : `${Number(val).toFixed(1)}°`;
};
const maxDisplay = formatTemp(maxTemp).replace('°', '');
const minDisplay = formatTemp(minTemp).replace('°', '');
const finalHtml = `
<div class="location-date">
<span class="location-name">${locationName}</span>
<span class="date-display">${requestedDate}</span>
</div>
<div class="temp-summary">
<div class="temp-main">
<span class="temp-high">${maxDisplay}°</span>
<span style="font-size:2rem; color:#5b7a82;">/</span>
<span class="temp-low">${minDisplay}°</span>
<span class="temp-unit">C</span>
</div>
<div class="condition-badge">
<span class="weather-icon">${weatherMeta.icon}</span>
<span>${weatherMeta.condition}</span>
</div>
</div>
${hourlyHtml}
`;
card.innerHTML = finalHtml;
} catch (e) {
console.error('Rendering error:', e);
renderError('Failed to render weather data.');
}
}
async function loadWeather() {
const card = document.getElementById('weatherCard');
if (card) card.innerHTML = `<div class="loading-message">⏳ Loading weather…</div>`;
try {
const apiUrl = buildApiUrl();
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error(`API responded with status ${response.status}`);
}
const data = await response.json();
// Basic validation
if (!data || !data.daily || !data.hourly) {
throw new Error('Missing required data fields');
}
renderWeather(data);
} catch (error) {
console.error('Fetch error:', error);
renderError('Weather data could not be loaded. Please check the connection or API.');
}
}
// Start loading
loadWeather();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 18,449 | html / css / js | 400 / 5,820 / 12,229 |
|---|---|---|---|
| dom 节点 | 10 | dom 深度 | 4 |
| css 规则 | 26 | 含 js | 是 |
| brightness | 126.2 | contrast | 97.7 |
| colorfulness | 25.6 | 留白 | 41.1% |
该 slot 的 telemetry
| prompt tokens | 321 | completion tokens | 4,262 |
|---|---|---|---|
| total tokens | 4,583 | wall | 36.6 s |
| cost | — | request id | — |
config.json589 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_DEEPSEEK_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "deepseek-v4-pro-0812-eff-none--api--official--dev",
"effort": "none",
"family": "deepseek",
"m": {
"min": 4,
"q": 4
},
"model_id": "deepseek-v4-pro-0812",
"protocol": "api",
"served_model": "deepseek-v4-pro",
"telemetry": {
"completion_tokens": 33121,
"cost_usd": null,
"prompt_tokens": 2536,
"total_tokens": 35657,
"wall_ms": 314638
},
"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-none--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T05:34:42.535319+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:34:05.738996+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-13T05:35:24.320534+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:34:47.723245+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-08-13T05:36:01.204932+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:35:27.742770+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-13T05:36:53.578086+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:36:04.631299+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-13T05:37:36.730862+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:36:56.483651+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-13T05:38:23.734346+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:37:40.378379+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-13T05:39:08.202782+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:38:26.910313+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-13T05:39:45.491855+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T05:39:11.546705+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
}
}
}