← Back to Articles Directory
AI Models • August 28, 2026 •Updated September 27, 2026 • 3 min read

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

Tencent announced and released Hy4-preview on August 28, 2026. This article summarizes the company's published specifications and explains what its reported evaluation does—and does not—show. It also retains one code-generation sample from an earlier site prompt trial, with its limitations stated plainly.

What Tencent published

Tencent describes Hy4-preview as an open-sourced model with 770 billion total parameters and 49 billion active parameters, and an input context window exceeding one million tokens. The release announcement says the model is accessible through Tencent products and through API routes including Tencent Cloud TokenHub and OpenRouter.
The initial release offer was time-limited: Tencent said Hy4-preview would be free on WorkBuddy and CodeBuddy for two weeks after launch. That announcement does not establish that the API is currently free, nor does it support the fixed per-token price previously stated in this article. Check the provider and route you intend to use for current pricing, quota, and model terms.
Tencent also reports an internal blind evaluation in which 163 experts assessed 203 engineering tasks. The company says Hy4-preview scored 2.99 out of 4.00, compared with 2.94 for Kimi K3 and 2.92 for GLM-5.3. These are vendor-reported results from a company-designed test; the release does not provide enough detail to treat them as an independent, broadly representative leaderboard.

One archived visual coding sample

An earlier AcceleratedLogic prompt asked for an HTML/SVG-style image of a glass sphere containing an origami crane. The stored output follows. This was one creative generation, not a repeated coding or model-capability evaluation.
<!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>
In this example the file contains a sphere-like composition, gradients, and a paper-like central form, but the requested crane is not clearly recognizable. That is a subjective assessment of this one output; it cannot establish how Hy4-preview performs on other visual, coding, or reasoning tasks.

How to evaluate the preview

If you want to test Hy4-preview, select one API route and record its exact model identifier, date, prompt, settings, and provider. Use several representative tasks, define a pass/fail rubric before running them, and repeat variable tasks. Measure output quality alongside latency, token use, quota errors, and the cost charged by that route. For visual code, render the saved HTML in a browser and check that it works; reading the source alone is not enough.
A release announcement is a useful starting point, but preview labels, routes, quotas, and pricing can change. Recheck the provider's current documentation before you depend on the model in an application.