วิธีใช้งาน GLM-5.3-Flash API (พร้อมอินพุตภาพ)

เรียกใช้ GLM-5.3-Flash API ด้วย OpenAI SDK พร้อมด้วยการตรวจสอบสิทธิ์, เพย์โหลด `image_url` สำหรับการป้อนข้อมูลรูปภาพแบบเนทีฟ, `reasoning_effort`, การสตรีมมิง และการเรียกใช้เครื่องมือ

Ashley Innocent

Ashley Innocent

27 August 2026

วิธีใช้งาน GLM-5.3-Flash API (พร้อมอินพุตภาพ)

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

GLM-5.3-Flash นั้นเข้ากันได้กับ OpenAI ซึ่งหมายความว่าวิธีที่เร็วที่สุดในการเรียกใช้งานคือการชี้ไคลเอ็นต์ที่คุณมีอยู่แล้วไปยัง URL พื้นฐานที่แตกต่างกัน และเปลี่ยนสตริงเดียว สิ่งใหม่ที่แท้จริงคือการป้อนข้อมูลรูปภาพ: นี่เป็นโมเดล GLM-5 ตัวแรกที่รับรูปภาพในคำขอเดียวกับข้อความของคุณ และรูปทรงของเพย์โหลดทำให้ผู้คนสับสนได้

คู่มือนี้ครอบคลุมการขอคีย์ การเรียกใช้ข้อความ การส่งรูปภาพ การควบคุมความพยายามในการให้เหตุผล การสตรีม และการเรียกใช้เครื่องมือ ตัวอย่างทุกตัวใช้ ID โมเดล glm-5.3-flash

หากคุณต้องการข้อมูลเบื้องหลังเกี่ยวกับโมเดลนี้ก่อนที่จะนำไปใช้งาน โปรดเริ่มต้นที่ คำอธิบาย GLM-5.3-Flash ของเรา หากคุณใช้งานโมเดลพี่ใหญ่กว่าอยู่แล้ว คู่มือ API ของ GLM-5.3 จะครอบคลุมโมเดลนั้น และความแตกต่างด้านล่างนั้นเป็นเรื่องจริง: ID โมเดลที่แตกต่างกัน อัตราค่าบริการที่แตกต่างกัน และเส้นทางรูปภาพที่ GLM-5.3 ไม่มีมาแต่กำเนิด

ภาพประกอบของ GLM-5.3-Flash ในการทำงาน

รับ API key

สร้างบัญชีที่ z.ai เปิดส่วน API keys ของแดชบอร์ด และสร้าง key จากนั้นให้เก็บไว้ในสภาพแวดล้อมของคุณแทนที่จะเก็บไว้ในซอร์สโค้ด:

export ZAI_API_KEY="your-key-here"

URL พื้นฐานสำหรับ API มาตรฐานคือ:

https://api.z.ai/api/paas/v4/

มี URL พื้นฐานที่แยกต่างหากที่ใช้โดยปลายทางของแผนการเขียนโค้ด ซึ่งสำคัญหากคุณกำลังเชื่อมต่อ Claude Code หรือ Cline แทนที่จะเรียกใช้ API โดยตรง การตั้งค่านั้นครอบคลุมอยู่ใน คู่มือ Claude Code และ Cline ของเรา

การเรียกใช้ครั้งแรกของคุณ

เนื่องจากปลายทางเข้ากันได้กับ OpenAI SDK อย่างเป็นทางการของ OpenAI จึงทำงานได้โดยไม่มีการแก้ไข:

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["ZAI_API_KEY"],
    base_url="https://api.z.ai/api/paas/v4/",
)

response = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[
        {"role": "user", "content": "Explain what a KV cache is in two sentences."}
    ],
)

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

สิ่งเดียวกันนี้ใน curl:

curl https://api.z.ai/api/paas/v4/chat/completions \
  -H "Authorization: Bearer $ZAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [
      {"role": "user", "content": "Explain what a KV cache is in two sentences."}
    ]
  }'

และใน Node:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ZAI_API_KEY,
  baseURL: "https://api.z.ai/api/paas/v4/",
});

const response = await client.chat.completions.create({
  model: "glm-5.3-flash",
  messages: [
    { role: "user", content: "Explain what a KV cache is in two sentences." },
  ],
});

console.log(response.choices[0].message.content);

ไม่มีอะไรที่เป็น GLM โดยเฉพาะ ยกเว้น URL พื้นฐานและสตริงโมเดล นี่คือจุดประสงค์ของอินเทอร์เฟซที่เข้ากันได้กับ OpenAI และเป็นเหตุผลว่าทำไมการสลับโมเดลจึงมีราคาถูกพอที่จะคุ้มค่ากับการเปรียบเทียบกับภาระงานของคุณเอง

การส่งรูปภาพ

นี่คือส่วนที่ไม่มีอยู่ใน GLM-5.3 การป้อนข้อมูลรูปภาพทำงานผ่านบล็อกเนื้อหา: แทนที่ content จะเป็นสตริงธรรมดา มันจะกลายเป็นอาร์เรย์ของบล็อกที่กำหนดประเภท

response = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "This screenshot shows a rendering bug. What is wrong with the layout?",
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/screenshots/broken-layout.png"
                    },
                },
            ],
        }
    ],
)

สามกฎควบคุมเพย์โหลดนี้:

ฟิลด์ URL รับทั้ง URL สาธารณะหรือ URL ข้อมูลแบบ base64 หากรูปภาพของคุณเป็นแบบโลคัลหรือส่วนตัว ให้เข้ารหัส:

import base64

with open("broken-layout.png", "rb") as f:
    encoded = base64.b64encode(f.read()).decode("utf-8")

image_block = {
    "type": "image_url",
    "image_url": {"url": f"data:image/png;base64,{encoded}"},
}

หลายรูปภาพหมายถึงหลายบล็อก ไม่มีทางลัดสำหรับอาร์เรย์ของ URL หากต้องการเปรียบเทียบการออกแบบกับที่นำไปใช้งานจริง ให้ส่งบล็อก image_url สองบล็อกในอาร์เรย์เนื้อหาเดียวกัน:

content = [
    {"type": "text", "text": "Does the second image match the design in the first?"},
    {"type": "image_url", "image_url": {"url": design_data_url}},
    {"type": "image_url", "image_url": {"url": built_data_url}},
]

ลำดับมีความหมาย โมเดลจะอ่านอาร์เรย์เนื้อหาตามลำดับ ดังนั้นให้วางข้อความที่กำหนดขอบเขตของงานก่อนรูปภาพที่เกี่ยวข้อง “เปรียบเทียบสองสิ่งนี้” ตามด้วยรูปภาพสองรูปอ่านเข้าใจได้ดีกว่ารูปภาพสองรูปตามด้วยคำถาม

เอกสารของ Z.ai ยังระบุการป้อนข้อมูลวิดีโอและไฟล์โดยใช้กลไกบล็อกเนื้อหาเดียวกัน วิดีโอเป็นสิ่งใหม่กว่าและมีการใช้งานน้อยกว่าการป้อนข้อมูลรูปภาพในวงกว้าง ดังนั้นโปรดตรวจสอบกับสื่อของคุณเองก่อนที่จะสร้างคุณสมบัติบนนั้น

สำหรับการวิเคราะห์เชิงลึกเกี่ยวกับด้านวิชัน รวมถึงเวิร์กโฟลว์จากภาพหน้าจอเป็นโค้ด และการวางรูปภาพคู่กับเอกสารขนาดยาวในหน้าต่าง 1M-token เดียวกัน โปรดดู คู่มือวิชันของ GLM-5.3-Flash ของเรา

การควบคุมความพยายามในการให้เหตุผล

GLM-5.3-Flash แสดงโหมดการคิดสามโหมดผ่าน reasoning_effort:

response = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[{"role": "user", "content": "Refactor this function for clarity."}],
    extra_body={"reasoning_effort": "low"},
)

ค่าที่ยอมรับได้คือ low, high และ max. ค่าเริ่มต้นคือ max ซึ่งเป็นสิ่งสำคัญที่ควรทราบเพราะเป็นค่าที่มีค่าใช้จ่ายสูง หากคุณกำลังดำเนินการจัดประเภทหรือการแยกข้อมูลปริมาณมากที่คำตอบไม่จำเป็นต้องมีการไตร่ตรอง การตั้งค่า low อย่างชัดเจนจะช่วยลดจำนวนโทเค็นเอาต์พุตของคุณได้อย่างมาก

นี่คือการเปลี่ยนแปลงจาก GLM-5.2 ซึ่งเปิดเผยเฉพาะ High และ Max ระดับ low เป็นสิ่งใหม่ และสำหรับงานแบตช์ที่คำนึงถึงต้นทุน นี่อาจเป็นพารามิเตอร์ที่มีประโยชน์ที่สุดเพียงอย่างเดียวบนโมเดล

โปรดทราบว่า reasoning_effort อยู่ใน extra_body เมื่อคุณใช้ OpenAI Python SDK เนื่องจากไม่ใช่ส่วนหนึ่งของ OpenAI schema มาตรฐาน ใน curl ดิบ มันเป็นเพียงฟิลด์ระดับบนสุด

พารามิเตอร์การสุ่มตัวอย่างที่แนะนำ

Z.ai เผยแพร่ค่าเริ่มต้นที่แตกต่างกันขึ้นอยู่กับสิ่งที่คุณกำลังทำ:

กรณีการใช้งาน temperature top_p
ทั่วไป 1.0 0.95
การเขียนโค้ด 0.95 1.0

ค่าเหล่านี้ใกล้เคียงกันมากจนความแตกต่างมีน้อยสำหรับแอปพลิเคชันส่วนใหญ่ แต่หากคุณได้รับผลลัพธ์โค้ดที่ไม่สอดคล้องกัน โปรไฟล์การเขียนโค้ดคือสิ่งที่คุณควรลอง

การสตรีม

ความหมายของการสตรีมตามมาตรฐานของ OpenAI มีผลบังคับใช้:

stream = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[{"role": "user", "content": "Write a bash script that rotates logs."}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

กำหนดความคาดหวังที่นี่ GLM-5.3-Flash สร้างโทเค็นได้ประมาณ 49 โทเค็นต่อวินาทีตามการวิเคราะห์ของ Artificial Analysis ซึ่งช้ากว่า GLM-5.3 พี่ใหญ่กว่าที่ประมาณ 86 โทเค็น เวลาในการรับโทเค็นแรกนั้นดีที่ 1.52 วินาที ดังนั้นการตอบสนองจะเริ่มต้นอย่างรวดเร็วและมาถึงอย่างสม่ำเสมอมากกว่าอย่างรวดเร็ว หากคุณกำลังสตรีมไปยังส่วนต่อประสานผู้ใช้ โปรไฟล์นั้นก็ใช้ได้ หากคุณกำลังสร้างเอกสารขนาดยาวในงานแบตช์ ให้จัดสรรงบประมาณสำหรับมัน

การเรียกใช้เครื่องมือ

เครื่องมือใช้ schema มาตรฐานของ OpenAI:

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_deployment_status",
            "description": "Returns the current status of a named deployment.",
            "parameters": {
                "type": "object",
                "properties": {
                    "service": {
                        "type": "string",
                        "description": "The service name, for example 'checkout-api'.",
                    }
                },
                "required": ["service"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[{"role": "user", "content": "Is checkout-api healthy?"}],
    tools=tools,
)

call = response.choices[0].message.tool_calls[0]
print(call.function.name, call.function.arguments)

การเปรียบเทียบประสิทธิภาพ Agentic ที่ Z.ai เผยแพร่เมื่อเปิดตัวนั้นเน้นไปที่การใช้เครื่องมืออย่างมาก โดย AutomationBench อยู่ที่ 48.8 เทียบกับ 26.2 ของ GLM-5.2 ตัวเลขเหล่านี้เป็นของซัพพลายเออร์ แต่ทิศทางสอดคล้องกับโมเดลที่ได้รับการปรับแต่งสำหรับการวนรอบการเรียกใช้เครื่องมือมากกว่าการสนทนาแบบรอบเดียว

หากคุณกำลังสร้างคำจำกัดความของเครื่องมือจาก API ที่คุณเป็นเจ้าของอยู่แล้ว โพสต์ของเราเกี่ยวกับ การเปลี่ยนข้อกำหนด OpenAPI ให้เป็นเครื่องมือของ Agent จะครอบคลุมการทำสิ่งนั้นโดยไม่ต้องเขียน schema ด้วยมือ

การจัดการข้อผิดพลาดที่ควรเขียน

โหมดความล้มเหลวสามโหมดนี้เป็นสาเหตุของปัญหาในการผลิตส่วนใหญ่บนปลายทางนี้

การจำกัดอัตรา (Rate limits) ลองใหม่ด้วย exponential backoff และ jitter การลองใหม่แบบคงที่ใน worker หลายตัวจะทำให้เกิดการลองใหม่ที่ซิงโครไนซ์ ซึ่งเป็นวิธีคลาสสิกในการเปลี่ยนการจำกัดชั่วคราวให้เป็นแบบต่อเนื่อง

import time, random
from openai import RateLimitError

def call_with_retry(**kwargs):
    for attempt in range(5):
        try:
            return client.chat.completions.create(**kwargs)
        except RateLimitError:
            if attempt == 4:
                raise
            time.sleep((2 ** attempt) + random.random())

Context overflow. หน้าต่างขนาด 1M-token นั้นใหญ่พอที่ผู้คนจะหยุดนับ จากนั้นเอกสารขนาดยาวบวกกับรูปภาพความละเอียดสูงไม่กี่ภาพจะทำให้เกินขีดจำกัด รูปภาพใช้พื้นที่ใน context และข้อผิดพลาดจะมาถึงเมื่อมีการร้องขอ ไม่ใช่เมื่อคุณรวบรวม prompt ติดตามงบประมาณโทเค็นของคุณเมื่อเข้ามา

Truncated output. หากการตอบสนองหยุดกลางประโยค ให้ตรวจสอบ finish_reason ในตัวเลือก ค่า length หมายความว่าคุณถึงขีดจำกัดเอาต์พุต ไม่ใช่ว่าโมเดลยอมแพ้ เนื่องจากตัวเลขเอาต์พุตสูงสุดนั้นยังคงเป็นที่ถกเถียงกันระหว่างแหล่งที่มาต่างๆ จึงควรตรวจสอบอย่างชัดเจนมากกว่าการสันนิษฐาน

การอ่านการใช้งานโทเค็น

ทุกการตอบสนองมีวัตถุ usage และเป็นแหล่งข้อมูลเดียวที่น่าเชื่อถือว่าการเรียกใช้มีค่าใช้จ่ายเท่าใด:

print(response.usage.prompt_tokens, response.usage.completion_tokens)

ให้ความสนใจกับการนับ completion เป็นพิเศษ เมื่อ reasoning_effort อยู่ที่ค่าเริ่มต้น max โทเค็นการให้เหตุผลจะถูกเรียกเก็บเงินเป็นเอาต์พุต ดังนั้นคำตอบที่มองเห็นได้สั้นๆ อาจมีจำนวน completion ที่สูงตามมา การเปรียบเทียบตัวเลขนั้นระหว่างระดับความพยายามกับ prompt ของคุณเองเป็นวิธีที่เร็วที่สุดในการตัดสินใจว่าคุณต้องการการตั้งค่าใดจริงๆ

ค่าใช้จ่ายเท่าไหร่

ราคาตามรายการคือ $0.15 ต่อหนึ่งล้านโทเค็นอินพุต, $0.50 ต่อหนึ่งล้านโทเค็นเอาต์พุต และ $0.03 ต่อหนึ่งล้านโทเค็นอินพุตที่แคช ส่วนลดเปิดตัว 50% มีผลถึง 9 กันยายน 2026 ซึ่งจะลดราคาเหลือ $0.075, $0.25 และ $0.015

ราคาแตกต่างกันไปในแต่ละผู้ค้าปลีก OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, DeepInfra และอื่นๆ ต่างก็เสนอโมเดลนี้ในอัตราของตนเอง การวิเคราะห์ราคาของเรา จะอธิบายการคำนวณต้นทุนและการเปลี่ยนแปลงเมื่อส่วนลดหมดอายุ ตรวจสอบตัวเลขใดๆ กับผู้ให้บริการที่คุณใช้จริงก่อนที่คุณจะจัดทำงบประมาณ

การทดสอบการผสานรวม

มีสองสิ่งเกี่ยวกับ API นี้ที่น่ารำคาญในการตรวจสอบด้วยตนเอง เพย์โหลดแบบ multimodal มีความซับซ้อน ดังนั้นบล็อกรูปภาพ base64 ในคำสั่ง curl จึงเขียนได้ยากและยิ่งแย่ไปกว่านั้นหากต้องรันซ้ำ และการสลับโมเดลเป็นประเภทของการเปลี่ยนแปลงที่เปลี่ยนรูปทรงของการตอบสนองอย่างเงียบๆ

Apidog จัดการได้ทั้งสองอย่าง บันทึกการเรียกใช้ข้อความ การเรียกใช้รูปภาพ และการเรียกใช้เครื่องมือเป็นคอลเลกชัน แนบการยืนยันกับฟิลด์การตอบสนองที่แอปพลิเคชันของคุณอ่านจริง และเก็บ API key เป็นตัวแปรสภาพแวดล้อมแทนที่จะคัดลอกลงในเชลล์ เมื่อส่วนลดเปิดตัวสิ้นสุดลงและคุณกำลังตัดสินใจว่าจะใช้ Flash ต่อไปหรือย้ายไป GLM-5.3 คุณสามารถเปลี่ยน ID โมเดลในที่เดียวและรันชุดทดสอบซ้ำกับทั้งสอง

นั่นจะเปลี่ยนการย้ายโมเดลให้กลายเป็นความแตกต่างที่คุณสามารถดูได้ แทนที่จะเป็นสิ่งที่คุณหวังว่าจะใช้งานได้

คำถามที่พบบ่อย

ID โมเดลที่แน่นอนคืออะไร? glm-5.3-flash บน Z.ai API บน OpenRouter คือ z-ai/glm-5.3-flash

OpenAI SDK ใช้งานได้จริงโดยไม่มีการเปลี่ยนแปลงหรือไม่? ใช่ สำหรับ chat completions, streaming และ tool calling พารามิเตอร์ที่ไม่เป็นมาตรฐาน เช่น reasoning_effort ต้องใช้ extra_body ใน Python SDK

ฉันสามารถส่งรูปภาพได้กี่รูปในหนึ่งคำขอ? หลายรูป แต่ละรูปเป็นบล็อก image_url ของตัวเอง ขีดจำกัดที่ใช้งานได้จริงมาจากการประมาณบริบทของคุณมากกว่าจำนวนที่แน่นอน

ทำไมการตอบสนองของฉันถึงยาวและช้ามาก? reasoning_effort มีค่าเริ่มต้นเป็น max ตั้งค่าเป็น low สำหรับงานที่ไม่จำเป็นต้องมีการไตร่ตรอง

ความยาวเอาต์พุตสูงสุดคือเท่าใด? แหล่งข้อมูลไม่ตรงกัน: OpenRouter ระบุ 131,072 โทเค็น และการ์ด Hugging Face ระบุ 163,840 โทเค็น ตรวจสอบกับผู้ให้บริการของคุณก่อนที่จะพึ่งพาการสร้างผลลัพธ์ที่ยาวมาก

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API