Tencent Hy4 Preview: Specs, Release Details, and How to Evaluate It
What Tencent has published about model size, access routes, an internal evaluation, and a saved coding sample.
Co-Founder & Lead Programmer of AcceleratedLogic AI
What Tencent published
One archived visual coding sample
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3D Glass Sphere with Origami Crane</title>
<style>
html,
body {
height: 100%;
margin: 0;
}
body {
display: grid;
place-items: center;
overflow: hidden;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: #dfe9f3;
background:
radial-gradient(circle at 50% 32%, #2c3d52 0%, #131a26 45%, #06080d 100%),
linear-gradient(180deg, #0b1118 0%, #04070b 100%);
}
.stage {
position: relative;
width: min(92vw, 900px);
aspect-ratio: 1 / 1;
display: grid;
place-items: center;
}
.stage::after {
content: "";
position: absolute;
left: 50%;
top: 84%;
width: 52%;
height: 8%;
transform: translateX(-50%);
background: radial-gradient(ellipse at center, rgba(0, 0, 0, .72) 0%, rgba(0, 0, 0, .34) 45%, rgba(0, 0, 0, 0) 72%);
filter: blur(10px);
z-index: -1;
}
svg {
width: 100%;
height: 100%;
display: block;
}
.caption {
position: absolute;
bottom: 2.5rem;
left: 0;
right: 0;
text-align: center;
font-size: clamp(.75rem, 1.6vw, 1rem);
letter-spacing: .26em;
text-transform: uppercase;
opacity: .58;
pointer-events: none;
}
.float {
animation: float 9s ease-in-out infinite;
}
@keyframes float {
0%, 100% { transform: translateY(-4px); }
50% { transform: translateY(8px); }
}
@media (prefers-reduced-motion: reduce) {
.float { animation: none; }
}
</style>
</head>
<body>
<div class="stage">
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
<title id="title">Photorealistic glass sphere containing a 3D origami crane</title>
<desc id="desc">An SVG rendering of a transparent glass sphere with reflections, refractions, and shadows containing a folded 3D origami paper crane.</desc>
<defs>
<radialGradient id="backdrop" cx="50%" cy="35%" r="72%">
<stop offset="0%" stop-color="#34485f" />
<stop offset="46%" stop-color="#16202d" />
<stop offset="100%" stop-color="#04070b" />
</radialGradient>
<radialGradient id="sphereBody" cx="38%" cy="30%" r="82%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".30" />
<stop offset="24%" stop-color="#a9d1ee" stop-opacity=".16" />
<stop offset="58%" stop-color="#5f86a8" stop-opacity=".12" />
<stop offset="82%" stop-color="#20323f" stop-opacity=".34" />
<stop offset="100%" stop-color="#081018" stop-opacity=".76" />
</radialGradient>
<radialGradient id="glassInnerShadow" cx="50%" cy="50%" r="50%">
<stop offset="68%" stop-color="#000000" stop-opacity="0" />
<stop offset="91%" stop-color="#000814" stop-opacity=".45" />
<stop offset="100%" stop-color="#000814" stop-opacity=".82" />
</radialGradient>
<linearGradient id="glassRim" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".92" />
<stop offset="24%" stop-color="#9fd2ff" stop-opacity=".42" />
<stop offset="55%" stop-color="#ffffff" stop-opacity=".10" />
<stop offset="78%" stop-color="#c7f2ff" stop-opacity=".42" />
<stop offset="100%" stop-color="#ffffff" stop-opacity=".86" />
</linearGradient>
<linearGradient id="rimLight" x1="10%" y1="0%" x2="90%" y2="100%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".95" />
<stop offset="35%" stop-color="#a9dcff" stop-opacity=".38" />
<stop offset="72%" stop-color="#ffffff" stop-opacity=".05" />
<stop offset="100%" stop-color="#d9fbff" stop-opacity=".70" />
</linearGradient>
<radialGradient id="keyHighlight" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".96" />
<stop offset="42%" stop-color="#eef9ff" stop-opacity=".56" />
<stop offset="100%" stop-color="#bfe6ff" stop-opacity="0" />
</radialGradient>
<radialGradient id="softHighlight" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".88" />
<stop offset="52%" stop-color="#d8f2ff" stop-opacity=".34" />
<stop offset="100%" stop-color="#d8f2ff" stop-opacity="0" />
</radialGradient>
<radialGradient id="windowReflection" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".34" />
<stop offset="100%" stop-color="#ffffff" stop-opacity="0" />
</radialGradient>
<linearGradient id="floorReflection" x1="50%" y1="0%" x2="50%" y2="100%">
<stop offset="0%" stop-color="#cfe7ff" stop-opacity=".45" />
<stop offset="45%" stop-color="#8cb9df" stop-opacity=".14" />
<stop offset="100%" stop-color="#8cb9df" stop-opacity="0" />
</linearGradient>
<linearGradient id="paperLight" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ffffff" />
<stop offset="52%" stop-color="#f2f7fb" />
<stop offset="100%" stop-color="#c8d7e4" />
</linearGradient>
<linearGradient id="paperMid" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#f8fbff" />
<stop offset="55%" stop-color="#d7e5f1" />
<stop offset="100%" stop-color="#9fb6cb" />
</linearGradient>
<linearGradient id="paperDark" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#dbe7f2" />
<stop offset="58%" stop-color="#a9bfd1" />
<stop offset="100%" stop-color="#677f95" />
</linearGradient>
<linearGradient id="paperShadow" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#8ea6bb" />
<stop offset="62%" stop-color="#546a80" />
<stop offset="100%" stop-color="#2f4257" />
</linearGradient>
<linearGradient id="paperAccent" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ffffff" />
<stop offset="48%" stop-color="#e6eff7" />
<stop offset="100%" stop-color="#93abc0" />
</linearGradient>
<radialGradient id="innerGlow" cx="50%" cy="45%" r="55%">
<stop offset="0%" stop-color="#e8f8ff" stop-opacity=".30" />
<stop offset="55%" stop-color="#8bc3e8" stop-opacity=".10" />
<stop offset="100%" stop-color="#06101a" stop-opacity="0" />
</radialGradient>
<radialGradient id="contactShadow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#000000" stop-opacity=".78" />
<stop offset="55%" stop-color="#000000" stop-opacity=".30" />
<stop offset="100%" stop-color="#000000" stop-opacity="0" />
</radialGradient>
<radialGradient id="caustic" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".70" />
<stop offset="42%" stop-color="#bfe9ff" stop-opacity=".26" />
<stop offset="100%" stop-color="#7fd0ff" stop-opacity="0" />
</radialGradient>
<filter id="dropShadow" x="-45%" y="-45%" width="190%" height="190%">
<feDropShadow dx="0" dy="24" stdDeviation="22" flood-color="#000814" flood-opacity=".58" />
</filter>
<filter id="craneSoftShadow" x="-60%" y="-60%" width="220%" height="220%">
<feDropShadow dx="4" dy="16" stdDeviation="9" flood-color="#000814" flood-opacity=".50" />
</filter>
<filter id="sphereShadow" x="-50%" y="-50%" width="200%" height="200%">
<feDropShadow dx="0" dy="36" stdDeviation="34" flood-color="#000000" flood-opacity=".72" />
</filter>
<filter id="innerBlur" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="1.15" />
</filter>
<filter id="reflectionBlur" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="8" />
</filter>
<filter id="causticBlur" x="-60%" y="-60%" width="220%" height="220%">
<feGaussianBlur stdDeviation="9" />
</filter>
<filter id="glassRefraction" x="-35%" y="-35%" width="170%" height="170%" color-interpolation-filters="sRGB">
<feTurbulence type="fractalNoise" baseFrequency="0.011 0.016" numOctaves="2" seed="17" result="noise" />
<feDisplacementMap in="SourceGraphic" in2="noise" scale="21" xChannelSelector="R" yChannelSelector="G" result="warped" />
<feGaussianBlur in="warped" stdDeviation="0.8" />
</filter>
<filter id="glassSurface" x="-35%" y="-35%" width="170%" height="170%" color-interpolation-filters="sRGB">
<feTurbulence type="fractalNoise" baseFrequency="0.03" numOctaves="2" seed="8" result="grain" />
<feColorMatrix in="grain" type="matrix" values="0 0 0 0 0.72 0 0 0 0 0.83 0 0 0 0 0.92 0 0 0 0.16 0" result="tint" />
<feComposite in="SourceGraphic" in2="tint" operator="over" />
</filter>
<path id="windowShape" d="M277 272 h104 a12 12 0 0 1 12 12 v104 a12 12 0 0 1 -12 12 h-104 a12 12 0 0 1 -12 -12 v-104 a12 12 0 0 1 12 -12 z" />
<clipPath id="sphereClip">
<circle cx="450" cy="440" r="292" />
</clipPath>
<clipPath id="bottomClip">
<rect x="150" y="440" width="600" height="292" />
</clipPath>
<mask id="bottomFade">
<rect x="0" y="0" width="900" height="900" fill="black" />
<ellipse cx="450" cy="590" rx="300" ry="170" fill="url(#floorReflection)" />
</mask>
<g id="origamiCrane">
<!-- back wing -->
<g>
<path
d="M296 349 L377 300 L432 329 L387 392 L318 397 Z"
fill="url(#paperShadow)"
stroke="#5b748b"
stroke-width="1.6"
stroke-linejoin="round"
/>
<path
d="M377 300 L432 329 L408 356 Z"
fill="#829cb2"
opacity=".72"
stroke="#485e75"
stroke-width="1.2"
stroke-linejoin="round"
/>
<path
d="M296 349 L387 392 L366 369 Z"
fill="#9fb4c8"
opacity=".58"
stroke="#5b748b"
stroke-width="1"
stroke-linejoin="round"
/>
</g>
<!-- tail -->
<g>
<path
d="M352 427 L207 489 L233 415 L330 381 Z"
fill="url(#paperDark)"
stroke="#63798e"
stroke-width="1.6"
stroke-linejoin="round"
/>
<path
d="M207 489 L233 415 L262 439 Z"
fill="#8fa5ba"
opacity=".82"
stroke="#52697f"
stroke-width="1.2"
stroke-linejoin="round"
/>
</g>
<!-- body / central folds -->
<g>
<path
d="M330 381 L387 392 L418 467 L352 427 Z"
fill="url(#paperMid)"
stroke="#6a8096"
stroke-width="1.7"
stroke-linejoin="round"
/>
<path
d="M418 467 L491 434 L474 498 L387 496 Z"
fill="url(#paperLight)"
stroke="#71879c"
stroke-width="1.7"
stroke-linejoin="round"
/>
<path
d="M387 392 L474 498 L418 467 Z"
fill="#c6d6e5"
opacity=".88"
stroke="#6a8096"
stroke-width="1.3"
stroke-linejoin="round"
/>
<path
d="M330 381 L418 467 L387 496 Z"
fill="#aec2d5"
opacity=".82"
stroke="#6a8096"
stroke-width="1.2"
stroke-linejoin="round"
/>
</g>
<!-- neck and head -->
<g>
<path
d="M491 434 L556 360 L520 337 L464 376 Z"
fill="url(#paperAccent)"
stroke="#63798e"
stroke-width="1.7"
stroke-linejoin="round"
/>
<path
d="M556 360 L520 337 L534 366 Z"
fill="#93aabf"
opacity=".92"
stroke="#4f667d"
stroke-width="1.2"
stroke-linejoin="round"
/>
<path
d="M520 337 L566 307 L590 332 L556 360 Z"
fill="url(#paperLight)"
stroke="#63798e"
stroke-width="1.6"
stroke-linejoin="round"
/>
<path
d="M566 307 L604 294 L590 332 Z"
fill="url(#paperMid)"
stroke="#63798e"
stroke-width="1.4"
stroke-linejoin="round"
/>
<path
d="M520 337 L590 332 L556 360 Z"
fill="#b9cbdc"
opacity=".86"
stroke="#5c7288"
stroke-width="1.2"
stroke-linejoin="round"
/>
</g>
<!-- front wing -->
<g filter="url(#craneSoftShadow)">
<path
d="M369 373 L470 222 L556 288 L479 410 L392 416 Z"
fill="url(#paperLight)"
stroke="#63798e"
stroke-width="2"
stroke-linejoin="round"
/>
<path
d="M470 222 L556 288 L500 308 Z"
fill="#dce8f3"
opacity=".92"
stroke="#63798e"
stroke-width="1.4"
stroke-linejoin="round"
/>
<path
d="M369 373 L479 410 L451 386 Z"
fill="#c4d5e4"
opacity=".9"
stroke="#63798e"
stroke-width="1.4"
stroke-linejoin="round"
/>
<path
d="M479 410 L556 288 L500 308 Z"
fill="#a6bccf"
opacity=".82"
stroke="#63798e"
stroke-width="1.3"
stroke-linejoin="round"
/>
<path
d="M369 373 L470 222 L500 308 L479 410 Z"
fill="none"
stroke="#ffffff"
stroke-opacity=".52"
stroke-width="1.1"
stroke-linejoin="round"
/>
</g>
<!-- fold accents -->
<g stroke="#ffffff" stroke-opacity=".48" stroke-width="1.2" fill="none" stroke-linecap="round">
<path d="M470 222 L500 308 L556 288" />
<path d="M369 373 L451 386 L479 410" />
<path d="M330 381 L418 467 L474 498" />
<path d="M491 434 L556 360 L590 332" />
</g>
<g stroke="#54697f" stroke-opacity=".42" stroke-width="1" fill="none" stroke-linecap="round">
<path d="M387 392 L418 467" />
<path d="M352 427 L387 496" />
<path d="M520 337 L566 307" />
</g>
</g>
</defs>
<rect width="900" height="900" fill="url(#backdrop)" />
<ellipse cx="450" cy="700" rx="286" ry="84" fill="url(#contactShadow)" filter="url(#sphereShadow)" />
<ellipse cx="450" cy="742" rx="160" ry="26" fill="url(#caustic)" filter="url(#causticBlur)" />
<g class="float">
<!-- glass sphere -->
<g filter="url(#dropShadow)">
<circle cx="450" cy="440" r="292" fill="url(#sphereBody)" />
<circle cx="450" cy="440" r="292" fill="url(#glassInnerShadow)" />
</g>
<g clip-path="url(#sphereClip)">
<!-- internal volume light -->
<circle cx="450" cy="440" r="292" fill="url(#innerGlow)" />
<ellipse cx="378" cy="352" rx="190" ry="150" fill="url(#windowReflection)" opacity=".34" filter="url(#reflectionBlur)" />
<!-- refracted crane -->
<g filter="url(#glassRefraction)" opacity=".94">
<g transform="translate(450 440) scale(1.06 0.72) rotate(-8) translate(-450 -440)" opacity=".55">
<use href="#origamiCrane" />
</g>
<g transform="translate(450 440) scale(1.14 0.94) rotate(-8) translate(-450 -440)" opacity=".72">
<use href="#origamiCrane" />
</g>
<g transform="translate(450 440) scale(1.03 1.08) rotate(-8) translate(-450 -440)" opacity=".9" filter="url(#innerBlur)">
<use href="#origamiCrane" />
</g>
<g transform="translate(450 440) rotate(-8) translate(-450 -440)">
<use href="#origamiCrane" />
</g>
</g>
<!-- glass surface and reflections -->
<g filter="url(#glassSurface)" opacity=".26">
<circle cx="450" cy="440" r="292" fill="#8fb6d4" />
</g>
<g clip-path="url(#bottomClip)">
<g mask="url(#bottomFade)" opacity=".55">
<g transform="translate(0 884) scale(1 -0.62)">
<use href="#origamiCrane" transform="translate(450 440) rotate(-8) translate(-450 -440)" />
</g>
</g>
</g>
<g opacity=".74">
<use href="#windowShape" fill="url(#windowReflection)" filter="url(#reflectionBlur)" transform="translate(0 0)" />
<use href="#windowShape" fill="none" stroke="#ffffff" stroke-opacity=".30" stroke-width="2" filter="url(#reflectionBlur)" />
<g transform="translate(171 0)" opacity=".62">
<use href="#windowShape" fill="url(#windowReflection)" filter="url(#reflectionBlur)" />
<use href="#windowShape" fill="none" stroke="#ffffff" stroke-opacity=".18" stroke-width="2" filter="url(#reflectionBlur)" />
</g>
</g>
<ellipse cx="376" cy="311" rx="118" ry="74" fill="url(#softHighlight)" transform="rotate(-24 376 311)" opacity=".62" />
<ellipse cx="329" cy="245" rx="58" ry="30" fill="url(#keyHighlight)" transform="rotate(-28 329 245)" opacity=".82" />
<ellipse cx="252" cy="326" rx="27" ry="61" fill="url(#keyHighlight)" transform="rotate(-12 252 326)" opacity=".52" />
<ellipse cx="596" cy="596" rx="104" ry="52" fill="url(#softHighlight)" transform="rotate(-32 596 596)" opacity=".34" />
<ellipse cx="579" cy="249" rx="44" ry="18" fill="url(#keyHighlight)" transform="rotate(24 579 249)" opacity=".35" />
<path
d="M198 566 C247 676 356 728 450 728 C556 728 654 670 698 556"
fill="none"
stroke="#d7f4ff"
stroke-opacity=".34"
stroke-width="8"
filter="url(#reflectionBlur)"
/>
<path
d="M232 620 C285 697 372 736 450 736"
fill="none"
stroke="#ffffff"
stroke-opacity=".16"
stroke-width="3"
filter="url(#reflectionBlur)"
/>
</g>
<!-- rim / edge highlights -->
<circle cx="450" cy="440" r="292" fill="none" stroke="url(#glassRim)" stroke-width="5" opacity=".9" />
<circle cx="450" cy="440" r="288" fill="none" stroke="url(#rimLight)" stroke-width="2" opacity=".78" />
<circle cx="450" cy="440" r="296" fill="none" stroke="#cdefff" stroke-opacity=".14" stroke-width="12" filter="url(#reflectionBlur)" />
<path
d="M450 148 A292 292 0 0 1 742 440"
fill="none"
stroke="#ffffff"
stroke-opacity=".62"
stroke-width="3"
stroke-linecap="round"
filter="url(#reflectionBlur)"
/>
<path
d="M206 560 A292 292 0 0 0 450 732"
fill="none"
stroke="#bde9ff"
stroke-opacity=".46"
stroke-width="4"
stroke-linecap="round"
filter="url(#reflectionBlur)"
/>
<ellipse cx="332" cy="252" rx="53" ry="24" fill="#ffffff" opacity=".92" transform="rotate(-29 332 252)" />
<ellipse cx="399" cy="205" rx="19" ry="8" fill="#ffffff" opacity=".55" transform="rotate(-29 399 205)" />
</g>
<div></div>
<text x="450" y="828" text-anchor="middle" font-size="18" letter-spacing="8" fill="#c9dbeb" opacity=".38">GLASS · PAPER · LIGHT</text>
</svg>
<div class="caption">SVG Glass Sphere · Origami Crane</div>
</div>
</body>
</html>
How to evaluate the preview
Read Next
DeepSeek V4.1 Flash Review: Three Hands-On Coding Benchmarks
A hands-on DeepSeek V4.1 Flash review covering its 552B MoE architecture, compressed KV cache, official agent benchmarks, and three interactive creative-coding tests.
GLM-5.3: Release Notes, Vendor Benchmarks, and Evaluation Cautions
Z.ai describes GLM-5.3 as a post-training update with stronger coding and reported cybersecurity capabilities. This source-based guide separates the company's benchmark claims from independent evaluation and outlines safe testing practices.
Grok 4.6: Specs, API Pricing, and Sample Coding Tests
Grok 4.6 has a documented 500K context window and API prices that vary for cached input and long prompts. Read the official benchmark caveats and inspect two archived code samples without treating them as a model ranking.