Cara Menggunakan API GLM-5V-Turbo

Ashley Innocent

Ashley Innocent

2 April 2026

Cara Menggunakan API GLM-5V-Turbo

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Ringkasan Cepat

GLM-5V-Turbo adalah model pengkodean visual multimodal ZhipuAI dengan jendela konteks 200K, output maksimum 128K, dan dukungan asli untuk input gambar, video, teks, dan file. Model ini mencetak 94.8 pada benchmark Design2Code (vs 77.3 dari Claude Opus 4.6) dan biayanya $1.20/Juta token input, $4/Juta token output. Panduan ini mencakup pengaturan, integrasi API, dan contoh praktis untuk tugas pengkodean berbasis visi.

Pengantar

ZhipuAI (beroperasi sebagai Z.ai) merilis GLM-5V-Turbo pada 1 April 2026. Ini adalah model pertama mereka yang dibangun khusus untuk tugas pengkodean berbasis visi, di mana inputnya adalah gambar, tangkapan layar, atau video, dan outputnya adalah kode yang berfungsi.

Model ini termasuk dalam keluarga yang mencakup GLM-5 (teks-saja, 744B parameter) dan GLM-5-Turbo (pengkodean teks yang dioptimalkan). GLM-5V-Turbo menambahkan pemahaman multimodal asli di atas varian Turbo, menggunakan encoder visi CogViT dan arsitektur Multi-Token Prediction (MTP).

Angka yang menonjol: 94.8 pada Design2Code, di mana model mereproduksi mockup UI sebagai HTML/CSS. Claude Opus 4.6 mencetak 77.3 pada tes yang sama. Itu adalah selisih 22% pada tugas spesifik mengubah desain visual menjadi kode.

Panduan ini menunjukkan cara memanggil API GLM-5V-Turbo, mengirim gambar dan video, mengaktifkan mode berpikir, melakukan streaming respons, menggunakan pemanggilan fungsi, dan menguji integrasi Anda dengan Apidog.

tombol

Kemampuan GLM-5V-Turbo

Spesifikasi Inti

Spesifikasi Nilai
Jendela konteks 200K token (202.752)
Output maksimum 128K token (131.072)
Modalitas input Gambar, video, teks, file (PDF, Word)
Modalitas output Teks
Harga input $1.20 per juta token
Harga output $4.00 per juta token
Harga baca cache $0.24 per juta token
Tanggal rilis 1 April 2026
Titik akhir API https://api.z.ai/api/paas/v4/chat/completions

Kemampuan yang Didukung

Kelebihan

GLM-5V-Turbo dibuat khusus untuk kategori yang sempit namun bernilai tinggi: melihat konten visual dan menulis kode darinya. Kasus penggunaan utamanya:

Rekreasi Frontend dari mockup desain. Berikan tangkapan layar Figma atau kompilasi desain dan itu akan menghasilkan HTML/CSS yang akurat piksel. Skor Design2Code 94.8 mendukung ini dengan angka-angka yang pasti.

Eksplorasi GUI otonom. Model ini terintegrasi dengan OpenClaw (kerangka agen ZhipuAI) untuk penjelajahan situs web otonom, pengisian formulir, dan pengujian interaksi. Model ini memiliki skor yang baik pada benchmark AndroidWorld dan WebVoyager untuk operasi GUI.

Debugging kode dari tangkapan layar. Kirim tangkapan layar UI yang rusak dan model mengidentifikasi masalah rendering, bug tata letak, dan konflik CSS.

Ekstraksi dokumen. Proses PDF, dokumen Word, dan gambar yang dipindai untuk mengekstrak data terstruktur, tabel, dan teks.

Keterbatasan

Pada pengkodean teks murni (tanpa input visual), Claude dan GPT-5 masih unggul dalam tugas backend, eksplorasi repositori, dan arsitektur sistem. Kekuatan GLM-5V-Turbo secara spesifik adalah ketika input visual mendorong tugas pengkodean.

Memulai: Penyiapan API

Dapatkan Kunci API Anda

  1. Daftar di z.ai
  2. Navigasi ke bagian kunci API di dashboard Anda
  3. Hasilkan kunci baru
  4. Simpan dengan aman; Anda akan meneruskannya sebagai token Bearer

Konfigurasi Dasar

Semua permintaan menuju ke:

POST https://api.z.ai/api/paas/v4/chat/completions

Header yang Diperlukan:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

API mengikuti konvensi yang kompatibel dengan OpenAI, jadi jika Anda pernah bekerja dengan API OpenAI atau Anthropic, format permintaannya akan terasa akrab.

Mengirim Permintaan Pertama Anda dengan cURL

Analisis Gambar Dasar

curl -X POST https://api.z.ai/api/paas/v4/chat/completions \
  -H "Authorization: Bearer $ZAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5v-turbo",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "image_url",
            "image_url": {
              "url": "https://example.com/dashboard-mockup.png"
            }
          },
          {
            "type": "text",
            "text": "Recreate this dashboard UI as responsive HTML and CSS. Use Tailwind CSS classes."
          }
        ]
      }
    ]
  }'

Dengan Mode Berpikir Diaktifkan

Mode berpikir menambahkan langkah penalaran sebelum model menghasilkan responsnya. Ini meningkatkan akurasi pada tugas pengkodean yang kompleks dengan biaya token output tambahan.

curl -X POST https://api.z.ai/api/paas/v4/chat/completions \
  -H "Authorization: Bearer $ZAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5v-turbo",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "image_url",
            "image_url": {
              "url": "https://example.com/login-form-screenshot.png"
            }
          },
          {
            "type": "text",
            "text": "This login form has a layout bug on mobile. Identify the issue and provide fixed CSS."
          }
        ]
      }
    ],
    "thinking": {
      "type": "enabled"
    }
  }'

Ketika mode berpikir diaktifkan, respons mencakup reasoning_content di samping bidang content standar. Token penalaran menunjukkan analisis langkah-demi-langkah model sebelum menghasilkan jawaban akhir.

Integrasi SDK Python

Instalasi

pip install zai-sdk

Atau pasang versi tertentu:

pip install zai-sdk==0.0.4

Gambar-ke-Kode Dasar

from zai import ZaiClient

client = ZaiClient(api_key="your-api-key")

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/pricing-page.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Convert this pricing page design into a React component using Tailwind CSS. Include responsive breakpoints for mobile, tablet, and desktop."
                }
            ]
        }
    ],
    thinking={"type": "enabled"}
)

print(response.choices[0].message.content)

Respons Streaming

Untuk tugas pembuatan kode yang panjang (seluruh tata letak halaman, UI multi-komponen), streaming memberi Anda output secara waktu nyata alih-alih menunggu respons penuh:

from zai import ZaiClient

client = ZaiClient(api_key="your-api-key")

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/full-page-design.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Build this entire landing page as a single HTML file with embedded CSS and JavaScript. Include smooth scroll, a sticky navbar, and a working contact form."
                }
            ]
        }
    ],
    stream=True
)

for chunk in response:
    delta = chunk.choices[0].delta
    # Print reasoning tokens (thinking mode)
    if delta.reasoning_content:
        print(f"[thinking] {delta.reasoning_content}", end="", flush=True)
    # Print the generated code
    if delta.content:
        print(delta.content, end="", flush=True)

Input Multi-Gambar

Kirim beberapa gambar dalam satu permintaan. Ini berguna untuk membandingkan desain, menyediakan referensi gaya di samping mockup, atau mengirim tangkapan layar sebelum/sesudah untuk debugging:

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/design-mockup.png"}
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/current-implementation.png"}
                },
                {
                    "type": "text",
                    "text": "The first image is the design mockup. The second is the current implementation. Identify all visual differences and provide CSS fixes to match the mockup."
                }
            ]
        }
    ]
)

Pemanggilan Fungsi

GLM-5V-Turbo mendukung pemanggilan fungsi, memungkinkan Anda mengintegrasikannya ke dalam alur kerja keagenan di mana model dapat meminta tindakan eksternal:

tools = [
    {
        "type": "function",
        "function": {
            "name": "save_component",
            "description": "Save a generated React component to a file",
            "parameters": {
                "type": "object",
                "properties": {
                    "filename": {
                        "type": "string",
                        "description": "Component filename, e.g. 'PricingCard.tsx'"
                    },
                    "code": {
                        "type": "string",
                        "description": "The full component source code"
                    },
                    "dependencies": {
                        "type": "array",
                        "items": {"type": "string"},
                        "description": "npm packages this component requires"
                    }
                },
                "required": ["filename", "code"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "take_screenshot",
            "description": "Take a screenshot of a URL to verify the rendered output",
            "parameters": {
                "type": "object",
                "properties": {
                    "url": {
                        "type": "string",
                        "description": "URL to screenshot"
                    },
                    "viewport": {
                        "type": "string",
                        "description": "Viewport size: 'mobile', 'tablet', or 'desktop'"
                    }
                },
                "required": ["url"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/card-design.png"}
                },
                {
                    "type": "text",
                    "text": "Generate a React component from this card design and save it. Then take a screenshot to verify."
                }
            ]
        }
    ],
    tools=tools,
    tool_choice="auto"
)

Integrasi SDK Java

Dependensi Maven

<dependency>
    <groupId>ai.z.openapi</groupId>
    <artifactId>zai-sdk</artifactId>
    <version>0.3.0</version>
</dependency>

Gradle

implementation 'ai.z.openapi:zai-sdk:0.3.0'

Permintaan Dasar

import ai.z.openapi.ZaiClient;
import ai.z.openapi.model.*;
import java.util.Arrays;

public class GLM5VTurboExample {
    public static void main(String[] args) {
        String apiKey = System.getenv("ZAI_API_KEY");

        ZaiClient client = ZaiClient.builder().ofZAI()
            .apiKey(apiKey)
            .build();

        ChatCompletionCreateParams request =
            ChatCompletionCreateParams.builder()
                .model("glm-5v-turbo")
                .messages(Arrays.asList(
                    ChatMessage.builder()
                        .role(ChatMessageRole.USER.value())
                        .content(Arrays.asList(
                            MessageContent.builder()
                                .type("image_url")
                                .imageUrl(ImageUrl.builder()
                                    .url("https://example.com/mockup.png")
                                    .build())
                                .build(),
                            MessageContent.builder()
                                .type("text")
                                .text("Convert this design to HTML with Tailwind CSS.")
                                .build()
                        ))
                        .build()
                ))
                .build();

        ChatCompletionResponse response =
            client.chat().createChatCompletion(request);

        System.out.println(response.getChoices()
            .get(0).getMessage().getContent());
    }
}

Streaming di Java

ChatCompletionCreateParams streamRequest =
    ChatCompletionCreateParams.builder()
        .model("glm-5v-turbo")
        .stream(true)
        .messages(Arrays.asList(
            ChatMessage.builder()
                .role(ChatMessageRole.USER.value())
                .content(Arrays.asList(
                    MessageContent.builder()
                        .type("image_url")
                        .imageUrl(ImageUrl.builder()
                            .url("https://example.com/dashboard.png")
                            .build())
                        .build(),
                    MessageContent.builder()
                        .type("text")
                        .text("Build this dashboard as a React component.")
                        .build()
                ))
                .build()
        ))
        .build();

ChatCompletionResponse streamResponse =
    client.chat().createChatCompletionStream(streamRequest);

streamResponse.getFlowable().subscribe(
    data -> System.out.print(data),
    error -> System.err.println("Error: " + error.getMessage()),
    () -> System.out.println("\n[Complete]")
);

Menggunakan Titik Akhir yang Kompatibel dengan OpenAI

API Z.ai mengikuti konvensi OpenAI, sehingga Anda dapat menggunakan klien Python OpenAI dengan URL dasar kustom:

from openai import OpenAI

client = OpenAI(
    api_key="your-zai-api-key",
    base_url="https://api.z.ai/api/paas/v4"
)

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/wireframe.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Turn this wireframe into a working Vue 3 component with Composition API."
                }
            ]
        }
    ]
)

print(response.choices[0].message.content)

Ini berarti setiap alat yang mendukung API yang kompatibel dengan OpenAI, termasuk Apidog, dapat terhubung ke GLM-5V-Turbo dengan mengarahkan ke URL dasar Z.ai.

Menguji Panggilan API GLM-5V-Turbo dengan Apidog

Sebelum mengintegrasikan GLM-5V-Turbo ke dalam aplikasi Anda, uji panggilan API Anda secara interaktif dengan Apidog. Ini menghemat Anda dari debugging payload JSON mentah dalam kode.

Siapkan Titik Akhir

  1. Buka Apidog dan buat permintaan baru
  2. Atur metode ke POST dan URL ke https://api.z.ai/api/paas/v4/chat/completions
  3. Tambahkan header Authorization: Bearer YOUR_KEY
  4. Atur Content-Type: application/json

Bangun Badan Permintaan Multimodal secara Visual

Editor JSON Apidog memungkinkan Anda membangun array messages bertingkat dengan blok konten image_url dan text tanpa menulis JSON secara manual. Anda bisa:

Bandingkan Respons Model

Saat mengevaluasi GLM-5V-Turbo terhadap model visi lainnya (Claude, GPT-4o, Gemini), gunakan collection runner Apidog untuk mengirim gambar yang sama ke beberapa titik akhir dan membandingkan output secara berdampingan. Ini sangat berguna untuk tugas Design2Code di mana Anda ingin memverifikasi model mana yang menghasilkan HTML/CSS paling akurat.

Validasi Skema Respons

Respons streaming GLM-5V-Turbo mencakup bidang reasoning_content dan content. Validator respons Apidog dapat memeriksa bahwa aplikasi Anda menangani kedua bidang dengan benar, termasuk kasus ekstrem di mana satu bidang nol.

Unduh Apidog untuk mulai menguji integrasi GLM-5V-Turbo Anda.

Perbandingan Harga dengan Model Visi Lain

Model Input (per 1 Juta Token) Output (per 1 Juta Token) Jendela Konteks Skor Design2Code
GLM-5V-Turbo $1.20 $4.00 200K 94.8
Claude Opus 4.6 $15.00 $75.00 200K 77.3
Claude Sonnet 4.6 $3.00 $15.00 200K N/A
GPT-4o $2.50 $10.00 128K N/A
Gemini 3 Pro $1.25 $5.00 1M N/A

GLM-5V-Turbo adalah pilihan termurah untuk tugas pengkodean berbasis visi. Biayanya 92% lebih murah daripada Claude Opus 4.6 untuk token input dan 94.7% lebih murah untuk token output, sementara mencetak 22% lebih tinggi pada Design2Code.

Pertukarannya: Claude dan GPT-5 menangani tugas pengkodean yang lebih luas dengan lebih baik. Jika alur kerja Anda secara spesifik adalah "gambar masuk, kode keluar," GLM-5V-Turbo menawarkan rasio harga-terhadap-kinerja terkuat.

Arsitektur: Cara Kerjanya di Balik Layar

Encoder Visi CogViT

GLM-5V-Turbo menggunakan CogViT, sebuah transformer visi yang dirancang untuk mempertahankan hierarki spasial dan detail visual yang halus. Encoder visi standar mengompresi gambar menjadi vektor fitur datar, kehilangan hubungan spasial. CogViT mempertahankan informasi posisi yang penting untuk tugas-tugas yang sensitif terhadap tata letak seperti penempatan grid CSS, perataan flexbox, dan spasi yang akurat piksel.

Prediksi Multi-Token (MTP)

Arsitektur MTP memprediksi beberapa token per forward pass alih-alih satu per satu. Untuk pembuatan kode, ini berarti inferensi yang lebih cepat saat mengeluarkan urutan HTML, CSS, atau JavaScript yang panjang. Model tidak menghasilkan token-demi-token; ia memprediksi potongan, mengurangi latensi pada jendela output maksimum 128K.

Pembelajaran Penguatan Bersama 30+ Tugas

ZhipuAI melatih GLM-5V-Turbo dengan pembelajaran penguatan di lebih dari 30 tugas secara bersamaan: penalaran STEM, visual grounding, analisis video, operasi GUI, dan pengkodean. Optimasi bersama ini mencegah model overfitting pada satu jenis tugas sambil mempertahankan kinerja yang kuat di seluruh rentang alur kerja visi-pengkodean.

Sistem Data Agensi

Saluran pelatihan mencakup apa yang disebut ZhipuAI sebagai sistem "konstruksi data multi-level, yang dapat diverifikasi" dengan pelatihan awal prediksi tindakan. Dalam praktiknya, ini berarti model dilatih pada urutan "lihat tangkapan layar, prediksi tindakan berikutnya, eksekusi, verifikasi hasil," membuatnya efektif untuk tugas GUI otonom di luar konversi gambar-ke-kode statis.

Contoh Praktis

Mockup Desain ke Komponen React

from zai import ZaiClient

client = ZaiClient(api_key="your-api-key")

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "system",
            "content": "You are a senior frontend developer. Generate production-ready React components with TypeScript and Tailwind CSS. Include proper types, accessibility attributes, and responsive design."
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/hero-section.png"}
                },
                {
                    "type": "text",
                    "text": "Build this hero section as a React TypeScript component. It should be fully responsive with a mobile-first approach. Include the gradient background, CTA button with hover state, and the illustration positioning."
                }
            ]
        }
    ],
    thinking={"type": "enabled"}
)

# The model first reasons about layout structure (reasoning_content)
# then outputs the complete React component (content)
print(response.choices[0].message.content)

Alur Kerja Debugging Tangkapan Layar

def debug_ui_from_screenshot(screenshot_url: str, description: str) -> str:
    """Send a screenshot of a broken UI and get CSS fixes."""
    response = client.chat.completions.create(
        model="glm-5v-turbo",
        messages=[
            {
                "role": "system",
                "content": "You are a CSS debugging specialist. Analyze screenshots of broken UIs and provide specific CSS fixes. Always explain what's wrong before providing the fix."
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url": screenshot_url}
                    },
                    {
                        "type": "text",
                        "text": f"Bug report: {description}. Identify the CSS issues and provide fixes."
                    }
                ]
            }
        ],
        thinking={"type": "enabled"}
    )

    return response.choices[0].message.content


# Usage
fix = debug_ui_from_screenshot(
    "https://example.com/broken-modal.png",
    "Modal dialog is overflowing on mobile screens and the close button is unreachable"
)
print(fix)

Ekstraksi Dokumen ke Data Terstruktur

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/api-spec-page.png"}
                },
                {
                    "type": "text",
                    "text": "Extract the API endpoint definitions from this documentation screenshot. Return them as an OpenAPI 3.1 YAML specification."
                }
            ]
        }
    ]
)

Ini adalah kasus penggunaan yang kuat untuk tim pengembangan API: foto desain API papan tulis atau pindai dokumentasi lama, lalu hasilkan spesifikasi OpenAPI secara langsung. Anda kemudian dapat mengimpor spesifikasi yang dihasilkan ke Apidog untuk mendapatkan dokumentasi interaktif, server mock, dan kasus uji dari satu tangkapan layar.

Tips untuk Mendapatkan Hasil Maksimal dari GLM-5V-Turbo

Kualitas Gambar Penting

Encoder CogViT mempertahankan detail spasial, tetapi tidak dapat memulihkan informasi yang tidak ada dalam gambar sumber. Untuk tugas Design2Code:

Gunakan Mode Berpikir untuk Tata Letak yang Kompleks

Aktifkan mode berpikir ("thinking": {"type": "enabled"}) untuk:

Lewati mode berpikir untuk tugas sederhana (ekstraksi komponen tunggal, pembuatan caption gambar dasar) untuk menghemat biaya token dan latensi.

Kelola Jendela Konteks Anda

Dengan 200K token, jendela konteks besar tetapi tidak tak terbatas. Satu gambar beresolusi tinggi dapat mengonsumsi 1.000-5.000 token. Untuk alur kerja multi-gambar:

Optimasi Biaya dengan Caching

Caching konteks berharga $0.24/Juta token (diskon 80% dari harga input standar). Untuk alur kerja desain-ke-kode yang berulang di mana Anda menyempurnakan komponen yang sama:

  1. Kirim gambar desain pada permintaan pertama
  2. Permintaan lanjutan mereferensikan konteks yang di-cache
  3. Setiap iterasi berharga sebagian kecil dari pengiriman ulang gambar penuh

Menangani Kesalahan dan Kasus Ekstrem

Batas Tingkat dan Percobaan Ulang

API Z.ai mengembalikan kode status HTTP standar. Tangani ini dalam integrasi Anda:

import time
from zai import ZaiClient

client = ZaiClient(api_key="your-api-key")

def call_with_retry(messages, max_retries=3):
    """Call GLM-5V-Turbo with exponential backoff on rate limits."""
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model="glm-5v-turbo",
                messages=messages,
                thinking={"type": "enabled"}
            )
            return response
        except Exception as e:
            error_str = str(e)
            if "429" in error_str:
                # Rate limited - wait and retry
                # Batas tingkat tercapai - tunggu dan coba lagi
                wait_time = 2 ** attempt
                print(f"Rate limited. Retrying in {wait_time}s...")
                time.sleep(wait_time)
                continue
            elif "400" in error_str:
                # Bad request - don't retry, fix the input
                # Permintaan buruk - jangan coba lagi, perbaiki input
                print(f"Bad request: {error_str}")
                raise
            else:
                # Server error - retry
                # Kesalahan server - coba lagi
                if attempt < max_retries - 1:
                    time.sleep(1)
                    continue
                raise

    raise Exception("Max retries exceeded") # Jumlah percobaan ulang maksimum terlampaui

Menangani Output Besar

Dengan jendela output maksimum 128K, GLM-5V-Turbo dapat menghasilkan seluruh aplikasi multi-file dalam satu respons. Aplikasi Anda perlu menangani ini:

response = client.chat.completions.create(
    model="glm-5v-turbo",
    messages=messages,
    max_tokens=131072  # Full 128K output
)

content = response.choices[0].message.content

# Parse multiple files from the output
# Menganalisis beberapa file dari output
# The model typically separates files with markdown code fences
# Model biasanya memisahkan file dengan pagar kode markdown
import re

file_blocks = re.findall(
    r'```(\w+)?\s*\n// file: (.+?)\n(.*?)```',
    content,
    re.DOTALL
)

for lang, filename, code in file_blocks:
    print(f"Writing {filename} ({lang})")
    with open(filename, "w") as f:
        f.write(code.strip())

Aksesibilitas URL Gambar

Model mengambil gambar dari URL yang Anda berikan. Kegagalan umum:

Jika Anda mengontrol hosting gambar, CDN publik tanpa otentikasi adalah opsi paling andal untuk panggilan API.

GLM-5V-Turbo vs Menggunakannya melalui OpenRouter

Anda dapat mengakses GLM-5V-Turbo melalui OpenRouter sebagai alternatif dari API Z.ai langsung. OpenRouter memproses lebih dari 44.000 permintaan dengan 769 Juta+ token prompt dalam dua hari pertama ketersediaan model.

Manfaat OpenRouter:

Pertukaran: OpenRouter menambahkan markup kecil pada harga token. Untuk penggunaan produksi volume tinggi, API Z.ai langsung lebih murah.

Membangun Saluran Desain-ke-Kode dengan GLM-5V-Turbo

Berikut adalah alur kerja lengkap yang mengambil mockup desain, menghasilkan kode, dan memvalidasi output:

from zai import ZaiClient
import os
import subprocess

client = ZaiClient(api_key=os.environ["ZAI_API_KEY"])


def design_to_code_pipeline(image_url: str, output_dir: str, framework: str = "react"):
    """Complete pipeline: design screenshot -> working code -> validation."""

    os.makedirs(output_dir, exist_ok=True)

    # Step 1: Analyze the design
    # Langkah 1: Analisis desain
    analysis = client.chat.completions.create(
        model="glm-5v-turbo",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "image_url", "image_url": {"url": image_url}},
                    {
                        "type": "text",
                        "text": "Analyze this design. List: 1) All UI components visible, 2) The color palette (hex values), 3) Typography (font sizes, weights), 4) Layout structure (grid/flexbox), 5) Interactive elements (buttons, inputs, dropdowns)."
                    }
                ]
            }
        ],
        thinking={"type": "enabled"}
    )

    design_analysis = analysis.choices[0].message.content
    print(f"Design analysis complete: {len(design_analysis)} chars")

    # Step 2: Generate the component
    # Langkah 2: Hasilkan komponen
    generation = client.chat.completions.create(
        model="glm-5v-turbo",
        messages=[
            {
                "role": "system",
                "content": f"You are a {framework} developer. Generate production-ready, accessible, responsive components. Use TypeScript and Tailwind CSS."
            },
            {
                "role": "user",
                "content": [
                    {"type": "image_url", "image_url": {"url": image_url}},
                    {
                        "type": "text",
                        "text": f"Based on this design, generate the complete {framework} component. Include all styling, hover states, and responsive breakpoints. The component must match the design pixel-for-pixel."
                    }
                ]
            }
        ],
        thinking={"type": "enabled"},
        max_tokens=16384
    )

    code = generation.choices[0].message.content

    # Step 3: Save the output
    # Langkah 3: Simpan output
    output_file = os.path.join(output_dir, "Component.tsx")
    with open(output_file, "w") as f:
        # Extract code from markdown fences if present
        # Ekstrak kode dari pagar markdown jika ada
        if "```" in code:
            import re
            match = re.search(r'```(?:tsx?|jsx?)\n(.*?)```', code, re.DOTALL)
            if match:
                f.write(match.group(1).strip())
            else:
                f.write(code)
        else:
            f.write(code)

    print(f"Component saved to {output_file}")
    return output_file


# Usage
# Penggunaan
design_to_code_pipeline(
    image_url="https://example.com/dashboard-card.png",
    output_dir="./generated-components",
    framework="react"
)

Saluran ini memisahkan analisis dari generasi. Panggilan pertama memetakan struktur, warna, dan tipografi desain. Panggilan kedua menghasilkan kode dengan pemahaman itu sebagai konteks. Memisahkan pekerjaan menjadi dua panggilan menghasilkan output yang lebih akurat daripada satu permintaan "konversi ini ke kode", karena model sudah bernalar tentang tata letak sebelum menulis kode.

Anda dapat menguji setiap langkah secara independen di Apidog dengan menyimpan permintaan analisis dan permintaan generasi sebagai titik akhir terpisah dalam koleksi, lalu menjalankannya secara berurutan dengan collection runner.

tombol

FAQ

Apakah GLM-5V-Turbo gratis digunakan?

Tidak. Harga API adalah $1.20/Juta token input dan $4.00/Juta token output. ZhipuAI menawarkan antarmuka web gratis di chat.z.ai untuk pengujian, tetapi penggunaan API memerlukan pembayaran.

Bisakah saya mengirim gambar yang dienkode base64?

Dokumentasi menunjukkan input gambar berbasis URL (image_url dengan bidang url). Untuk dukungan base64, enkode gambar Anda sebagai URI data: data:image/png;base64,{encoded_data} dan teruskan sebagai nilai URL. Ini mengikuti konvensi yang sama dengan OpenAI Vision API.

Bagaimana GLM-5V-Turbo menangani input video?

Video terdaftar sebagai modalitas input yang didukung. Model ini dapat memproses bingkai video untuk tugas-tugas seperti menganalisis rekaman interaksi UI, mengidentifikasi bug animasi, atau memahami alur pengguna. Persyaratan codec dan format spesifik belum didokumentasikan.

Apa perbedaan antara GLM-5-Turbo dan GLM-5V-Turbo?

GLM-5-Turbo adalah model pengkodean teks-saja. GLM-5V-Turbo menambahkan encoder visi CogViT untuk input multimodal (gambar, video, file). Pilih GLM-5-Turbo untuk tugas pengkodean teks murni dan GLM-5V-Turbo ketika alur kerja Anda melibatkan input visual.

Bisakah saya menggunakan GLM-5V-Turbo dengan klien Python OpenAI?

Ya. Atur base_url ke https://api.z.ai/api/paas/v4 dan gunakan kunci API Z.ai Anda. Titik akhir mengikuti konvensi yang kompatibel dengan OpenAI untuk penyelesaian obrolan, termasuk format pesan multimodal.

Bagaimana perbandingannya dengan Claude untuk pengkodean?

GLM-5V-Turbo mendominasi pada tugas visi-ke-kode (94.8 vs 77.3 pada Design2Code). Claude unggul pada pengkodean teks murni, arsitektur backend, dan pemahaman tingkat repositori. Mereka melayani kasus penggunaan yang berbeda. Untuk tim yang melakukan keduanya, perbedaan biayanya signifikan: GLM-5V-Turbo 92% lebih murah untuk token input daripada Claude Opus 4.6.

Berapa ukuran gambar maksimum?

Dokumentasi tidak menentukan batas piksel. Jendela konteks 200K adalah batasan praktis; gambar yang lebih besar mengonsumsi lebih banyak token. Untuk tugas Design2Code, tangkapan layar 1920x1080 pada resolusi 2x berfungsi dengan baik tanpa mencapai batas.

Apakah ZhipuAI menyimpan data API saya?

Tidak. Kebijakan data Z.ai menyatakan tidak ada penggunaan pelatihan dan tidak ada retensi prompt untuk panggilan API. Gambar dan output kode Anda tidak digunakan untuk melatih model di masa mendatang.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.