DEV Community

Cover image for GLM-5.2 APIの使い方
Akira
Akira

Posted on • Originally published at apidog.com

GLM-5.2 APIの使い方

GLM-5.2 APIを使うと、Z.aiの最新オープンウェイト主力モデルへプログラムからアクセスできます。GLM-5.2は約753BパラメータのMoEモデルで、長時間のコーディングベンチマークで高いスコアを公開しています。この記事では、APIキーの取得、最初のcurl実行、Python SDK、thinking、ストリーミング、ツール呼び出し、コスト追跡までを実装手順ベースで進めます。

今すぐApidogを試す

以前のリリースから移行する場合は、まずGLM-5.1との差分を確認してください。

GLM-5.1からの変更点

GLM-5.2はGLM-5.1世代の後継です。GLM-5.1 API向けの統合コードがすでにある場合、ワイヤーフォーマットはほぼ同じなので、多くのケースではモデルIDを差し替えるだけで移行できます。

主な変更点は次のとおりです。

  • IndexShare疎アテンションの導入

    GLM-5.2は、4つの疎アテンション層で単一のインデクサーを再利用する「IndexShare」を導入しています。API利用者が直接制御する必要はありませんが、長いコンテキストでのアテンションコスト削減に関係します。

  • エージェント型コーディング性能の向上

    Z.aiが公開した結果では、Terminal-Bench 2.1のスコアがGLM-5.1の62.0からGLM-5.2では81.0に向上しています。コーディングエージェント用途では重要な指標です。

  • 2段階の推論努力レベル

    GLM-5.2はHighとMaxの推論努力レベルを公開しています。Z.aiはコーディングタスクではMaxを推奨しています。

以降の例は、すべてglm-5.2を直接対象にします。

GLM-5.2

ステップ1:GLM-5.2 APIキーを取得する

Z.aiにサインインし、アカウントダッシュボードのAPIキーセクションを開きます。キーを作成してコピーしたら、コードに直書きせず、環境変数として保存してください。

export ZAI_API_KEY="your-glm-5.2-api-key"
Enter fullscreen mode Exit fullscreen mode

APIキーはGitにコミットしないでください。漏洩するとアカウントに課金が発生します。GLM-5.2はトークン単位で課金されるため、無限ループや大量リクエストを送るスクリプトは実コストにつながります。

ステップ2:エンドポイントとbase_urlを確認する

GLM-5.2 APIはOpenAI互換です。OpenAI Chat Completions形式に対応するクライアントであれば、基本的にはbase_urlを差し替えるだけで利用できます。

設定
チャット補完エンドポイント https://api.z.ai/api/paas/v4/chat/completions
ベースURL(SDK用) https://api.z.ai/api/paas/v4/
モデルID glm-5.2
認証 Authorization: Bearer $ZAI_API_KEY

Z.aiを直接呼び出す代わりにOpenRouter経由で使う場合、モデルエイリアスはz-ai/glm-5.2です。ローカル実行では、Ollamaがglm-5.2としてウェイトを公開しています(Ollamaライブラリ)。オープンウェイトはMITライセンスでHugging Faceにあります。

実装前に、上限も確認しておきます。

  • コンテキストウィンドウ:1Mトークン(1,048,576)
  • 最大出力:Z.aiのドキュメントでは最大128Kと記載
  • OpenRouter側では最大出力の数値が公開されていないため、固定保証ではなくZ.aiの最新ドキュメントを確認してください

ステップ3:curlで最初のリクエストを送る

まずは最小構成の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.2",
    "messages": [
      {"role": "system", "content": "You are a concise backend engineer."},
      {"role": "user", "content": "Write a SQL query that returns the 5 newest orders per customer."}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

レスポンスはOpenAI形式です。主に次を確認します。

  • choices[0].message.content:生成結果
  • usage.prompt_tokens:入力トークン数
  • usage.completion_tokens:出力トークン数
  • usage.total_tokens:合計トークン数

usageはコスト計算に使うため、ログに残す設計にしておくと後で便利です。

ステップ4:OpenAI SDKでPythonから呼び出す

OpenAI互換APIなので、専用SDKは不要です。標準のOpenAI Python SDKを使い、base_urlだけをZ.aiに向けます。

pip install openai
Enter fullscreen mode Exit fullscreen mode
from openai import OpenAI
import os

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

resp = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {"role": "system", "content": "You are a concise backend engineer."},
        {"role": "user", "content": "Explain idempotency keys in 3 sentences."},
    ],
)

print(resp.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

既存のOpenAI向けヘルパー、リトライ、ロギング、エラーハンドリングは基本的に流用できます。GLM系APIの共通的な考え方は、GLM-5 APIの概要でも確認できます。

ステップ5:thinkingとreasoning_effortで推論を制御する

GLM-5.2では、内部推論の有効・無効と、推論努力レベルを制御できます。

低遅延が必要な処理ではthinkingを無効化する

分類、短いリライト、ルーティングなど、深い推論が不要な処理ではthinkingを無効にします。

resp = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {"role": "user", "content": "Classify: 'my card was charged twice'"}
    ],
    extra_body={
        "thinking": {"type": "disabled"}
    },
)

print(resp.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

難しいコーディングではreasoning_effortをmaxにする

複雑なリファクタリング、設計判断、デバッグ、数学的な処理ではthinkingを有効化し、reasoning_effortmaxにします。

resp = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {
            "role": "user",
            "content": "Refactor this function to remove the N+1 query and explain the fix."
        },
    ],
    extra_body={
        "thinking": {"type": "enabled"},
        "reasoning_effort": "max",
    },
)

print(resp.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

OpenAI Python SDKでは、Z.ai固有のフィールドをextra_body経由で渡します。curlで直接送る場合は、thinkingreasoning_effortmodelと同じトップレベルに配置します。

maxは品質向上が期待できる一方、推論トークンも出力トークンとしてカウントされるため、コストが増えます。分類や定型応答では無効化し、難しいコーディングタスクだけで有効化するのが実装上の基本方針です。

ステップ6:レスポンスをストリーミングする

チャットUIや長文生成では、完了まで待たずにストリーミングで表示します。Python SDKではstream=Trueを設定します。

stream = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {
            "role": "user",
            "content": "Write a 200-word changelog entry for a rate-limit fix."
        }
    ],
    stream=True,
)

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

curlの場合は、リクエストボディに"stream": trueを追加します。レスポンスはServer-Sent Eventsとして返り、各チャンクはdata:行で届き、最後にdata: [DONE]が返ります。

ストリーミングは料金体系を変えません。支払いは引き続きトークン数ベースですが、ユーザーは結果を早く確認できます。

ステップ7:関数とツールを呼び出す

ツール呼び出しは、GLM-5.2をエージェント的に使うための基本パターンです。Z.aiが公開した結果では、GLM-5.2はMCP-Atlasで77.0を記録し、Claude Opus 4.8に近いスコアとされています。

実装フローはOpenAI形式と同じです。

  1. ツールスキーマを定義する
  2. モデルにリクエストする
  3. モデルがtool_callsを返す
  4. アプリ側で関数を実行する
  5. 関数結果をrole: "tool"として再送する
  6. モデルに最終回答を生成させる

以下は天気取得ツールの最小例です。

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current temperature for a city.",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "City name, e.g. Berlin"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["c", "f"]
                    },
                },
                "required": ["city"],
            },
        },
    }
]

messages = [
    {
        "role": "user",
        "content": "What's the weather in Berlin in celsius?"
    }
]

first = client.chat.completions.create(
    model="glm-5.2",
    messages=messages,
    tools=tools,
)

call = first.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

# 実際のアプリではここで外部APIやDBを呼び出します。
def get_weather(city, unit="c"):
    return {"city": city, "temp": 12, "unit": unit}

result = get_weather(**args)

messages.append(first.choices[0].message)
messages.append({
    "role": "tool",
    "tool_call_id": call.id,
    "content": json.dumps(result),
})

final = client.chat.completions.create(
    model="glm-5.2",
    messages=messages,
    tools=tools,
)

print(final.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

このループは、複数ツールやエージェントフレームワークにも拡張できます。GLM-5.2固有の特殊な契約ではなく、OpenAI互換の標準的なツール呼び出しパターンです。

ツール呼び出しのリクエストを手作業で何度もcurlするのは面倒です。Apidogを使うと、GLM-5.2のエンドポイントを一度定義し、thinkingモード別のリクエストボディを保存し、ツール呼び出しのシーケンスを再実行できます。OpenAI形式のスキーマやストリーミングレスポンスも同じ場所で確認できます。

ステップ8:usageオブジェクトでコストを追跡する

非ストリーミングのレスポンスにはusageオブジェクトが含まれます。コスト計算ではこの値を使います。

resp = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {
            "role": "user",
            "content": "Summarize REST vs gRPC in 4 bullets."
        }
    ],
)

u = resp.usage
print(u.prompt_tokens, u.completion_tokens, u.total_tokens)
Enter fullscreen mode Exit fullscreen mode

GLM-5.2の料金は、OpenRouterで確認されている数値として次のとおりです。

  • 入力:100万トークンあたり$1.40
  • 出力:100万トークンあたり$4.40
  • キャッシュ済み入力:100万トークンあたり約$0.26(VentureBeatによる数値)

たとえば、入力8,000トークン、出力1,500トークンの呼び出しは概算で次のようになります。

(8000 / 1_000_000 * 1.40) + (1500 / 1_000_000 * 4.40)
= 0.0112 + 0.0066
= 約 $0.0178
Enter fullscreen mode Exit fullscreen mode

reasoning_effort: "max"で発生する推論トークンは出力カウントに含まれます。そのため、Max努力のコーディング呼び出しは、thinkingを無効化した呼び出しより高くなる可能性があります。

VentureBeatは、GLM-5.2が「長期間にわたるコーディングにおいて、GPT-5.5を約1/6のコストで打ち負かす」と報じています。この主張はVentureBeatに帰属するものとして扱ってください。

従量課金APIではなく定額プランを使いたい場合、Z.aiはGLM Coding PlanのLite、Pro、Max、Teamティアも提供しています。料金は変わる可能性があるため、契約前にZ.aiで最新情報を確認してください。

料金の詳細はGLM-5.2の料金内訳で解説されています。ローカルウェイトを使う経路はGLM-5.2を無料で利用する方法を参照してください。

Claude Code内でGLM-5.2を使用する

GLM-5.2はAnthropic互換のパスも提供しており、Claude Codeから利用できます。コーディング用のベースURLをhttps://api.z.ai/api/coding/paas/v4に設定します。

一部のソースではopen.z.ai/api/paas/v4と表記されているため、実運用前にZ.aiの最新ドキュメントで確認してください。

export ANTHROPIC_BASE_URL="https://api.z.ai/api/coding/paas/v4"
export ANTHROPIC_API_KEY="your-glm-coding-plan-key"
export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.2[1m]"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.2[1m]"
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=1000000
export API_TIMEOUT_MS=3000000
Enter fullscreen mode Exit fullscreen mode

[1m]サフィックスは1Mコンテキストのバリアントを選択します。API_TIMEOUT_MSを長めに設定することも重要です。設定しないと、大規模コンテキストの呼び出しが返る前にClaude Code側がタイムアウトする可能性があります。

詳しい手順はClaude CodeでGLMを実行するガイドを参照してください。ツール比較はClaude Code vs Codex vs Cursor vs GLM Planで確認できます。

GLM-5.2の性能比較

統合時に確認したい主要値は次のとおりです。

プロパティ GLM-5.2
モデルID(API) glm-5.2
アーキテクチャ 約753B MoE、BF16、IndexShare疎アテンション
コンテキストウィンドウ 1Mトークン(1,048,576)
最大出力 Z.aiのドキュメントによると最大128K(ライブで確認)
思考モード High / Max、または無効
入力料金 $1.40 / 1Mトークン
出力料金 $4.40 / 1Mトークン
ライセンス MIT、オープンウェイト

ベンチマークの詳細について、Z.aiが公開した結果には次の値が含まれています。

  • SWE-bench Pro:62.1(GPT-5.5は58.6)
  • ツール付きHumanity’s Last Exam:54.7
  • AIME 2026:99.2

詳細はGLM-5.2のベンチマークまとめで解説されています。横並び比較はGLM-5.2 vs GPT-5.5, Claude Opus, and Geminiを参照してください。

よくある質問

GLM-5.2 APIはOpenAI互換ですか?

はい。OpenAI SDKのbase_urlhttps://api.z.ai/api/paas/v4/に設定し、モデルにglm-5.2を指定します。標準のチャット、ストリーミング、ツール呼び出しのコードは基本的にそのまま使えます。

送信すべきモデルIDは何ですか?

用途ごとに次のIDを使います。

  • Z.ai API:glm-5.2
  • OpenRouter:z-ai/glm-5.2
  • Ollama:glm-5.2
  • Claude Codeの1Mコンテキストバリアント:glm-5.2[1m]

速度を優先して推論をオフにするには?

thinking: {"type": "disabled"}を渡します。Python SDKではextra_body経由で指定します。

extra_body={
    "thinking": {"type": "disabled"}
}
Enter fullscreen mode Exit fullscreen mode

難しいコーディングタスクでは、thinkingを有効にし、Z.aiがコード用途に推奨するreasoning_effort: "max"を設定します。

GLM-5.2の呼び出しあたりのコストはいくらですか?

OpenRouterで確認されている料金は、入力100万トークンあたり$1.40、出力100万トークンあたり$4.40です。正確なコストは各レスポンスのusageオブジェクトから計算してください。

Max努力の推論トークンは出力としてカウントされる点に注意してください。

GLM-5.2にはビジョンモデルがありますか?

2026年6月現在、確認されているビジョンバリアントはありません。APIはテキスト入力、テキスト出力として扱ってください。Z.aiがサポートを文書化するまでは、画像入力に依存しない実装にしてください。

まとめ

GLM-5.2 APIはOpenAI互換なので、既存のOpenAI向けコードベースから移行しやすいモデルです。base_urlを差し替え、モデルIDにglm-5.2を指定するだけで、1Mコンテキスト、MITライセンス、調整可能な推論機能を持つコーディングモデルを利用できます。

実装手順は次の順番がおすすめです。

  1. curlで認証と疎通を確認する
  2. OpenAI SDKでPython統合する
  3. usageをログに残してコストを追跡する
  4. 用途に応じてthinkingを無効化またはmaxに切り替える
  5. UIではストリーミングを有効にする
  6. エージェント用途ではツール呼び出しループを実装する

エンドポイントをテストし、リクエストのバリアントを保存し、ツール呼び出しのシーケンスを毎回curlで書かずに検査したい場合は、ApidogをダウンロードしてGLM-5.2エンドポイントを一度設定してください。

モデル全体の概要はGLM-5.2とは何か、GLM-5.1との差分はGLM-5.2とGLM-5.1の比較で確認できます。

Top comments (0)