메인 콘텐츠로 건너뛰기

GLM-4.7 Flash 및 GLM-4.7 시리즈 개요와 사용법

요약

개요

GLM-4.7 시리즈는 Z.AI에서 제공하는 최신 플래그십 대형 언어 모델(LLM) 계열로, 특히 프로그래밍 능력과 멀티스텝 추론·실행 안정성을 크게 강화한 것이 특징이다1. 복잡한 에이전트형 작업을 더 안정적으로 수행하면서도, 자연스러운 대화와 프런트엔드 UI 설계 같은 생성 작업에서도 품질이 향상된 것으로 소개된다1.

이 시리즈는 주력 모델 GLM-4.7, 고성능·고속 변형인 GLM-4.7-FlashX, 경량·저지연 모델인 GLM-4.7-Flash로 구성된다1. LM Studio 카탈로그에서는 GLM-4.7을 "새로운 베이스 모델을 기반으로 한 오픈소스 코딩 모델"이자, 코드 작성과 툴 호출에 특화된 모델로 분류하고 있어 실제 사용에서도 코딩·에이전트 워크플로에 초점을 두고 있음을 확인할 수 있다2.

image

GLM-4.7 시리즈 개요와 특징

GLM-4.7 시리즈의 가장 큰 특징은 "강화된 프로그래밍 능력"이다1. 이는 코드 생성과 리팩터링, 테스트 코드 작성, API 통합 예제 생성 같은 개발 작업에서 더 높은 정확도와 일관성을 제공하도록 튜닝되었다는 의미로 이해할 수 있다. 특히 다른 벤치마크 상위권 모델들과 비교해도, 코딩에 특화된 오픈소스 모델로 분류될 정도로 코드 관련 작업에서 강점을 가진다2.

두 번째 특징은 "멀티스텝 추론/실행 안정성"의 향상이다1. 복수 단계로 나뉜 계획 수립, 코드 설계 후 구현, 도구 호출이 섞인 에이전트 워크플로 등에서 중간 단계가 흔들리거나 논리가 무너지는 문제를 줄이도록 개선되었다. 이에 따라 UI 설계, 복잡한 비즈니스 로직 구현, 체계적인 코드 리팩터링 같은 작업에서 장기적인 일관성을 유지하기 쉬운 편으로 평가된다1.

외부 평가를 보면, GLM-4.7은 Anthropic Claude Opus 4.5에 근접한 성능을 제공하면서도 비용이 크게 낮은 모델이라는 평을 받는다4. 개인 개발자나 소규모 팀에서도 활용하기 좋은 가격대와 성능을 제공하며, 특히 코딩과 에이전트 활용 비중이 높은 사용자에게 매력적인 선택지로 언급된다4.

GLM-4.7 / GLM-4.7-FlashX / GLM-4.7-Flash 모델 구성

Z.AI 공식 문서에는 GLM-4.7 시리즈가 크게 세 가지 모델로 소개된다1.

  • GLM-4.7

  • GLM-4.7-FlashX

  • GLM-4.7-Flash

GLM-4.7은 시리즈의 풀 스펙 주력 모델로, 가장 높은 추론 능력과 프로그래밍 성능을 제공하는 대신, 상대적으로 자원이 더 많이 들어가는 구성이다1. LM Studio에서는 이 모델을 "새 베이스 모델 기반의 오픈소스 코딩 모델"로 소개하며, 코딩과 툴 호출에 최적화된 일반 목적 모델로 분류한다2.

GLM-4.7-FlashX는 이름에서 알 수 있듯 "Flash" 계열 중 상위 성능과 속도를 모두 고려한 변형으로, 실시간성 요구가 크지만 추론 품질도 포기하기 어려운 서비스형 애플리케이션에 적합하다1. 세부 파라미터 수는 공식 문서에 직접 언급되지 않았지만, 설계 목적상 고성능·저지연 균형형 모델로 이해할 수 있다.

GLM-4.7-Flash는 가장 가벼운 변형으로, Hacker News 논의에 따르면 총 32B 파라미터 중 약 3B만 활성화되는 Mixture-of-Experts 구조를 사용해 4비트 양자화 시 약 20GB VRAM 환경에서도 4만 토큰 정도의 컨텍스트 창을 활용할 수 있는 것으로 언급된다3. 이는 로컬 혹은 제한된 자원 환경에서의 저지연 응답을 목표로 한 설계이며, 실시간 인터랙티브 UI, 채팅봇, 빠른 코드 보조 도구 등에 적합하다3.

모델 공개 여부 및 사양 요약

GLM-4.7은 LM Studio와 외부 기사에서 "오픈소스 코딩 모델"로 명시되며, 가중치가 공개되어 로컬 실행이 가능한 오픈소스 계열 모델로 취급된다23. GLM-4.7-Flash 역시 후속 기사에서 가중치가 공개된 경량 코딩 모델로 소개되며, 소비자용 하드웨어(consumer GPU, Apple Silicon 등)에서 로컬 실행을 주요 사용 시나리오로 삼고 있다3. 반대로 GLM-4.7-FlashX는 고속·유료 API 모델로, 현재까지는 상용 API 형태로만 제공되는 고성능 변형으로 이해하는 편이 자연스럽다13.

아래 표는 세 모델의 공개 여부와 핵심 사양을 정리한 것이다.

모델공개 형태파라미터 / 구조컨텍스트 길이 (공개 범위 내)주요 포지셔닝
GLM-4.7오픈소스 코딩 모델 (가중치 공개, 로컬 실행 가능)23대형 단일 모델(정확한 파라미터 수는 비공개), 에이전트·코딩 특화13최대 200K 토큰급 장문 코드·에이전트 작업 지원으로 소개3플래그십 풀 스펙, 최고 추론·코딩 성능 목표1
GLM-4.7-FlashX상용 API 제공, 가중치 비공개로 추정1330B급 고성능·저지연 모델로 안내되나, 세부 파라미터 구조는 비공개1장문 코드·에이전트 워크플로 지원(구체 수치는 비공개, GLM-4.7 계열의 장컨텍스트 특성 공유)1고속 유료 변형, 에이전트 코딩용 균형형 모델13
GLM-4.7-Flash오픈소스 경량 모델 (가중치 공개, 로컬 실행 중심)3약 30~32B급 MoE, 토큰당 약 3B 파라미터만 활성화되는 Mixture-of-Experts + MLA 구조3로컬 환경에서 최대 약 200K 토큰 수준의 장컨텍스트 작업 지원으로 소개3저지연·저자원 코딩/에이전트용, 소비자 하드웨어 최적화 경량 모델13

정리하면, GLM-4.7과 GLM-4.7-Flash는 모두 오픈소스 계열(가중치 공개)로 로컬 및 클라우드 양쪽에서 활용할 수 있고, GLM-4.7-FlashX는 동일 30B급 계열 중 상위 성능의 상용 API 전용 모델로 보는 것이 현재까지 공개 정보와 가장 잘 맞는다123.

GLM-4.7 API 기본 사용법

기본 엔드포인트와 공통 구조

Z.AI GLM-4.7 시리즈는 HTTPS 기반 REST API로 제공되며, 기본 엔드포인트는 다음과 같다1.

  • URL: https://api.z.ai/api/paas/v4/chat/completions

요청에는 다음과 같은 공통 필드가 사용된다1.

  • model: 사용할 모델 이름(예: "glm-4.7", "glm-4.7-flash", "glm-4.7-flashx" -- 실제 사용 시 제공된 모델명을 확인)

  • messages: 역할(role)과 내용(content)으로 구성된 대화 이력 배열

    • role: "user", "assistant", "system"

    • content: 사용자 또는 모델의 텍스트

  • max_tokens: 생성할 최대 토큰 수 (예시에서는 4096 사용1)

  • temperature: 생성 다양성을 제어하는 값 (0.0~1.0 근처, 예시는 1.0 또는 0.61)

  • thinking: 내부 추론(Chain-of-Thought 스타일)을 제어하는 옵션

  • stream: 스트리밍 응답 여부 (true/false)

Authorization 헤더에는 Z.AI에서 발급받은 API 키를 Bearer your-api-key 형식으로 전달한다1.

thinking 옵션

GLM-4.7 시리즈는 thinking 옵션으로 내부 추론 과정을 활성/비활성화할 수 있다1.

"thinking": {
  "type": "enabled"
}
  • "type": "enabled": 내부 추론 모드 활성 (기본값도 enabled로 안내됨)1

  • "type": "disabled": 내부 추론 비활성 (응답 속도는 다소 빨라질 수 있으나, 복잡한 추론 작업에서는 품질이 떨어질 수 있음)

스트리밍 API 예제에서는 주고받는 청크에서 reasoning_content와 실제 사용자에게 보여줄 content가 분리되어 오며, 이 reasoning_content가 내부 추론 텍스트에 해당한다1. 이를 활용하면 디버깅이나 학습용으로 모델의 사고 과정을 확인할 수 있다.

기본 cURL 호출 예시

다음은 GLM-4.7 모델을 호출하는 기본 cURL 예제이다1.

curl -X POST "https://api.z.ai/api/paas/v4/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "glm-4.7",
    "messages": [
      {
        "role": "user",
        "content": "As a marketing expert, please create an attractive slogan for my product."
      },
      {
        "role": "assistant",
        "content": "Sure, to craft a compelling slogan, please tell me more about your product."
      },
      {
        "role": "user",
        "content": "Z.AI Open Platform"
      }
    ],
    "thinking": {
      "type": "enabled"
    },
    "max_tokens": 4096,
    "temperature": 1.0
  }'

이 예제는 간단한 마케팅 슬로건 작성을 요청하면서, 과거 대화 맥락(어시스턴트의 질문과 사용자 답변)을 모두 messages에 포함시키는 전형적인 챗 컴플리션 패턴을 보여준다1.

스트리밍 cURL 호출 예시

스트리밍을 활성화하면 모델이 토큰 단위로 응답을 보내므로, 긴 텍스트나 실시간 UI에 적합하다1.

curl -X POST "https://api.z.ai/api/paas/v4/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "glm-4.7",
    "messages": [
      {
        "role": "user",
        "content": "As a marketing expert, please create an attractive slogan for my product."
      },
      {
        "role": "assistant",
        "content": "Sure, to craft a compelling slogan, please tell me more about your product."
      },
      {
        "role": "user",
        "content": "Z.AI Open Platform"
      }
    ],
    "thinking": {
      "type": "enabled"
    },
    "stream": true,
    "max_tokens": 4096,
    "temperature": 1.0
  }'

여기서 stream: true만 추가하면 나머지 구조는 기본 호출과 동일하며, 클라이언트 측에서 서버센트 이벤트(SSE) 또는 청크 단위 응답을 처리하도록 구현하면 된다1.

Python 공식 SDK 설치 및 기본 사용법

설치 및 버전 확인

Z.AI는 공식 Python SDK zai-sdk를 제공하며, pip으로 설치할 수 있다1.

# 최신 버전 설치
pip install zai-sdk

# 특정 버전 명시 설치
pip install zai-sdk==0.1.0

설치 후에는 다음과 같이 버전을 확인할 수 있다1.

import zai

print(zai.__version__)

기본 호출 예제 (비스트리밍)

기본적인 챗 컴플리션 호출은 ZaiClient 인스턴스를 생성한 뒤 client.chat.completions.create 메서드를 사용하는 구조다1.

from zai import ZaiClient

client = ZaiClient(api_key="your-api-key")  # 발급받은 API Key 사용

response = client.chat.completions.create(
    model="glm-4.7",
    messages=[
        {
            "role": "user",
            "content": "As a marketing expert, please create an attractive slogan for my product.",
        },
        {
            "role": "assistant",
            "content": "Sure, to craft a compelling slogan, please tell me more about your product.",
        },
        {"role": "user", "content": "Z.AI Open Platform"},
    ],
    thinking={
        "type": "enabled",
    },
    max_tokens=4096,
    temperature=1.0,
)

# 전체 메시지 객체 출력
print(response.choices[0].message)

응답 구조는 OpenAI 스타일과 유사하게 choices 배열을 가지며, 각 요소에 message 또는 스트리밍 시 delta가 포함된다1. 일반 요청에서는 choices[0].message에 최종 응답이 들어간다.

스트리밍 응답 처리 예제

스트리밍 호출에서는 stream=True를 지정하고, 반환값을 이터레이션하면서 reasoning_content와 최종 content를 순차적으로 처리할 수 있다1.

from zai import ZaiClient

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

response = client.chat.completions.create(
    model="glm-4.7",
    messages=[
        {
            "role": "user",
            "content": "As a marketing expert, please create an attractive slogan for my product.",
        },
        {
            "role": "assistant",
            "content": "Sure, to craft a compelling slogan, please tell me more about your product.",
        },
        {"role": "user", "content": "Z.AI Open Platform"},
    ],
    thinking={
        "type": "enabled",  # 생략 시 기본값도 enabled
    },
    stream=True,
    max_tokens=4096,
    temperature=0.6,
)

# 스트림 처리
for chunk in response:
    if chunk.choices[0].delta.reasoning_content:
        # 내부 추론 텍스트
        print(chunk.choices[0].delta.reasoning_content, end="", flush=True)

    if chunk.choices[0].delta.content:
        # 사용자에게 보여줄 실제 출력
        print(chunk.choices[0].delta.content, end="", flush=True)

이 패턴을 그대로 확장하면, 터미널 기반 스트리밍 출력뿐 아니라 웹소켓/HTTP SSE 기반 프런트엔드 스트리밍 UI에도 쉽게 적용할 수 있다1.

Java SDK 사용법 (Maven/Gradle)

의존성 설정

Z.AI는 Java용 공식 SDK도 제공하며, Maven 또는 Gradle로 손쉽게 연동할 수 있다1.

Maven 설정 예시[^1]:

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

Gradle (Groovy) 설정 예시[^1]:

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

기본 호출 구조 (비스트리밍)

Java SDK에서는 ZaiClient를 생성한 뒤 ChatCompletionCreateParams 빌더로 요청을 구성하고, client.chat().createChatCompletion으로 호출한다1.

import ai.z.openapi.ZaiClient;
import ai.z.openapi.service.model.ChatCompletionCreateParams;
import ai.z.openapi.service.model.ChatCompletionResponse;
import ai.z.openapi.service.model.ChatMessage;
import ai.z.openapi.service.model.ChatMessageRole;
import ai.z.openapi.service.model.ChatThinking;
import java.util.Arrays;

public class BasicChat {
    public static void main(String[] args) {
        // 클라이언트 초기화
        ZaiClient client = ZaiClient.builder()
                .ofZAI()
                .apiKey("your-api-key")
                .build();

        // 요청 파라미터 구성
        ChatCompletionCreateParams request =
                ChatCompletionCreateParams.builder()
                        .model("glm-4.7")
                        .messages(
                                Arrays.asList(
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.USER.value())
                                                .content(
                                                        "As a marketing expert, please create an attractive slogan for my product.")
                                                .build(),
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.ASSISTANT.value())
                                                .content(
                                                        "Sure, to craft a compelling slogan, please tell me more about your product.")
                                                .build(),
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.USER.value())
                                                .content("Z.AI Open Platform")
                                                .build()))
                        .thinking(ChatThinking.builder().type("enabled").build())
                        .maxTokens(4096)
                        .temperature(1.0f)
                        .build();

        // 요청 전송
        ChatCompletionResponse response = client.chat().createChatCompletion(request);

        // 결과 처리
        if (response.isSuccess()) {
            Object reply = response.getData().getChoices().get(0).getMessage();
            System.out.println("AI Response: " + reply);
        } else {
            System.err.println("Error: " + response.getMsg());
        }
    }
}

이 예제는 Python SDK와 동일한 대화 내용을 Java 스타일로 구성한 것으로, ChatMessageRole 열거형을 사용해 역할을 지정하고, ChatThinking으로 thinking 옵션을 설정하는 패턴을 보여준다1.

스트리밍 호출 구조

스트리밍 모드에서는 ChatCompletionCreateParamsstream(true)를 추가하고, 응답에서 제공하는 Flowable 스트림을 구독하여 청크별로 Delta를 처리한다1.

import ai.z.openapi.ZaiClient;
import ai.z.openapi.service.model.ChatCompletionCreateParams;
import ai.z.openapi.service.model.ChatCompletionResponse;
import ai.z.openapi.service.model.ChatMessage;
import ai.z.openapi.service.model.ChatMessageRole;
import ai.z.openapi.service.model.ChatThinking;
import ai.z.openapi.service.model.Delta;
import java.util.Arrays;

public class StreamingChat {
    public static void main(String[] args) {
        ZaiClient client = ZaiClient.builder()
                .ofZAI()
                .apiKey("your-api-key")
                .build();

        ChatCompletionCreateParams request =
                ChatCompletionCreateParams.builder()
                        .model("glm-4.7")
                        .messages(
                                Arrays.asList(
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.USER.value())
                                                .content(
                                                        "As a marketing expert, please create an attractive slogan for my product.")
                                                .build(),
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.ASSISTANT.value())
                                                .content(
                                                        "Sure, to craft a compelling slogan, please tell me more about your product.")
                                                .build(),
                                        ChatMessage.builder()
                                                .role(ChatMessageRole.USER.value())
                                                .content("Z.AI Open Platform")
                                                .build()))
                        .thinking(ChatThinking.builder().type("enabled").build())
                        .stream(true) // 스트리밍 활성화
                        .maxTokens(4096)
                        .temperature(1.0f)
                        .build();

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

        if (response.isSuccess()) {
            response.getFlowable()
                    .subscribe(
                            // 청크 데이터 처리
                            data -> {
                                if (data.getChoices() != null && !data.getChoices().isEmpty()) {
                                    Delta delta = data.getChoices().get(0).getDelta();
                                    System.out.print(delta + "n");
                                }
                            },
                            // 에러 처리
                            error -> System.err.println("nStream error: " + error.getMessage()),
                            // 완료 이벤트 처리
                            () -> System.out.println("nStreaming response completed"));
        } else {
            System.err.println("Error: " + response.getMsg());
        }
    }
}

이 구조를 활용하면, Java 기반 서버에서 직접 SSE나 웹소켓을 통해 프런트엔드로 스트리밍 결과를 전달하는 아키텍처를 손쉽게 구성할 수 있다1.

GLM-4.7 관련 공식 리소스와 활용 팁

Z.AI 개발자 문서의 GLM-4.7 개요 페이지에서는 모델의 주요 특징, 사용법, 예제 코드, 그리고 API 레퍼런스 링크를 함께 제공한다1. 특히 페이지 내 "API Documentation" 링크는 chat-completion 엔드포인트의 상세 파라미터, 응답 스키마, 오류 코드 등을 설명하는 문서로 연결되어, 실제 서비스에 연동할 때 필수 참고 자료가 된다1.

또한, GLM-4.7은 LM Studio 등 로컬 모델 런처에서도 "코딩과 툴 호출에 특화된 오픈소스 코딩 모델"로 제공되고 있어2, 클라우드 API뿐 아니라 로컬 환경에서의 개발 보조, 코드 실험, 사내 폐쇄망 환경 구축 등에도 활용 가능성이 크다. Hacker News 커뮤니티에서는 GLM-4.7 및 4.7-Flash 모델을 4비트 양자화해 로컬에서 돌리는 방법, 컨텍스트 길이와 VRAM 요구사항 등에 대한 실사용 경험도 공유되고 있어3, 자체 호스팅을 고려하는 경우 참고할 만하다.

참고

1GLM-4.7 - Overview - Z.AI DEVELOPER DOCUMENT

2Model Catalog - LM Studio

3GLM-4.7-Flash | Hacker News

4LLM Duel: Gemini 3 Flash vs Opus 4.5 vs GPT-5.2-Codex vs GLM-4.7

#GLM-4.7#대형 언어모델#코딩 특화#멀티스텝 추론#API 사용법

이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

Tilnote 를 사용해 보세요.

키워드만 입력하면 나만의 학습 노트가 완성돼요.

책이나 강의 없이, AI로 위키 노트를 바로 만들어서 읽으세요.

콘텐츠를 만들 때도 사용해 보세요. AI가 리서치, 정리, 이미지까지 초안을 바로 만들어 드려요.