← Back to Articles Directory
AI Models August 28, 2026 3 min read

Hy4 Preview: It’s a Good, Cost-Efficient Model

Tencent just released Hy4-preview, an open-source 770B MoE model (49B active) with $0.834 / $2.501 per 1M pricing. We break down the specs, free access on Hy AI Studio, and benchmark its SVG glass sphere origami crane generation.

Mohid Mirza

Co-Founder & Lead Programmer of AcceleratedLogic AI

Tencent just released Hy4-preview, and it is a great competitor in the cheap AI market. So today, we will dive into everything you need to know about this model, and how to use it for free.

Specifications & Pricing

So let’s start with the specs. It’s an open-source 770B model with 49B parameter experts (Mixture-of-Experts architecture).
In terms of pricing, it sits at $0.834 / $2.501 per 1M tokens (input/output). In benchmarks, it’s about as good as GLM 5.3 Flash.

Free Access on Hy AI Studio

You can access it for free on Hy AI Studio (https://aistudio.tencent.ai/), which is where I benchmarked it.

The Benchmark: 3D Glass Sphere with Origami Crane

Let’s start with the crane, as it’s one of my favorite benchmarks.
<!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>
It looks stunning, but not like a crane. It reminds me almost of a hallucinated AI generated image, but one with consistency. If the prompt was to make a crumpled piece of paper inside of a glass sphere, then I would give it full marks.

Benchmarking Stability & Issues

A major problem I ran into while benchmarking was it kept on returning an error, which just didn’t allow me to perform more benchmarks.

Overall Verdict

Overall, I’m pretty excited about the model, as it seems to be great, while also only being in preview.
I’ll give it a solid 8/10.