GLM-5.2 APIを使用すると、Z.aiの最新のオープンウェイト主力モデルにプログラムからアクセスできます。このモデルは、約753BパラメータのMoEモデルで、長期間にわたるコーディングベンチマークにおいてオープンソースモデルの中で最高スコアを記録しています。このガイドは実践的です。APIキーの取得から最初のリクエストの実行、そしてPython、curl、思考モード、ストリーミング、ツール呼び出し、コスト追跡までを、ターミナルに貼り付けられる実際の値とともに解説します。
以前のリリースから移行される場合は、こちらから始めてください。
GLM-5.1からの変更点
GLM-5.2は5.1世代の後継です。GLM-5.1 APIに対して統合コードをすでに記述している場合、ワイヤーフォーマットは同じであるため、ほとんどの場合、モデルIDを交換するだけで済みます。知っておくべき違いは次のとおりです。
- 新しい疎なアテンションスキーム。 GLM-5.2は「IndexShare」を導入しています。これは、4つの疎なアテンション層すべてで単一のインデクサーを再利用することで、長いコンテキストでのアテンションコストを削減します。APIユーザーとしてはこれを操作する必要はありません。単に1Mトークンウィンドウの提供コストを低くするだけです。
- エージェント型コーディングにおける大幅な進歩。 Z.aiが公開した結果によると、Terminal-Bench 2.1のスコアは81.0で、GLM-5.1の62.0から向上しています。これは、コーディングエージェントを構築する人にとっての主要な統計です。
- 2つの思考努力レベル。 GLM-5.2は、HighとMaxの推論努力レベルを公開しており、Z.aiはコーディングタスクにはMaxを推奨しています。詳細については後述します。
5.1のリクエストコードはすでに機能するため、このガイドではそれを繰り返しません。ここにあるすべての内容は、glm-5.2を直接対象としています。

ステップ1:GLM-5.2 APIキーを取得する
Z.aiにサインインし、アカウントダッシュボードのAPIキーセクションを開いてください。キーを作成し、一度コピー(通常、再度表示することはできません)したら、ソースに直接貼り付けるのではなく、環境変数に保存してください。
export ZAI_API_KEY="your-glm-5.2-api-key"
GLM-5.2 APIキーはGitから除外してください。キーが漏洩すると、あなたのアカウントに請求が発生し、GLM-5.2の出力は100万トークンあたりの料金なので、暴走したスクリプトは実際に費用がかかります。
ステップ2:エンドポイントとbase_urlを知る
GLM-5.2はOpenAI互換であり、ベースURLを再設定するだけで、OpenAI Chat Completions形式に対応するあらゆるクライアントが動作します。必要な値は次のとおりです。
| 設定 | 値 |
|---|---|
| チャット補完エンドポイント | 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経由でルーティングしたい場合は、OpenRouterのエイリアスはz-ai/glm-5.2です。ローカルでの実行には、Ollamaがウェイトをglm-5.2として公開しており(Ollamaライブラリを参照)、オープンウェイトはMITライセンスの下でHugging Faceにあります。
構築前の制限に関する注意点:コンテキストウィンドウは1Mトークン(1,048,576)です。最大出力については、Z.aiのドキュメントでは最大128Kと記載されていますが、OpenRouterは数値を公開していないため、固定の保証ではなく、Z.aiのドキュメント(ライブで確認)に従って最大128Kとして扱ってください。
ステップ3:curlを使った最初のリクエスト
これは最小限のGLM-5.2 curl呼び出しです。1つのユーザーメッセージを送信し、JSONレスポンスを出力します。
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."}
]
}'
レスポンスの形式はOpenAIの標準に準拠しており、id、アシスタントメッセージを含むchoices配列、およびusageオブジェクトが含まれます。最後のフィールドはコストを追跡するためのもので、最後に説明します。
ステップ4:OpenAI SDKでPythonから呼び出す
APIはOpenAI互換であるため、特別なクライアントは必要ありません。標準のSDKをインストールし、base_urlをZ.aiに設定してください。これがGLM-5.2の標準的なPythonセットアップです。
pip install 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/",
)
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)
これが統合のすべてです。clientオブジェクトはOpenAIに対して動作するのとまったく同じように機能するため、既存のヘルパーコード、リトライ、ロギングはすべて引き継がれます。プラットフォーム自体の詳細を知りたい場合は、GLM-5 APIの概要で共通の規則が説明されています。
ステップ5:thinkingとreasoning_effortで推論を制御する
GLM-5.2は推論モデルです。内部の思考をオンまたはオフに切り替えることができ、オンの場合はその作業強度を設定できます。
高速で安価な低遅延のレスポンス(分類、短い書き換え、ルーティング)には、思考を無効にしてください。
resp = client.chat.completions.create(
model="glm-5.2",
messages=[{"role": "user", "content": "Classify: 'my card was charged twice'"}],
extra_body={"thinking": {"type": "disabled"}},
)
思考を有効にし、困難なコーディングや数学には努力をMaxに設定してください。Z.aiは特にコーディングにおいてMaxを推奨しています。
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",
},
)
extra_bodyラッパーは、OpenAI Python SDKが非標準フィールドをZ.aiに渡す方法です。生のcurlボディでは、thinkingとreasoning_effortをmodelの横にトップレベルで配置します。Maxの努力はより多くの出力トークン(推論も含まれる)を消費するため、品質の向上がコストに見合うタスクに限定して使用してください。
ステップ6:レスポンスをストリーミングする
チャットUIや長い生成の場合、完全な完了を待つのではなく、トークンが到着次第ストリーミングしてください。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)
curlでは、ボディに"stream": trueを追加すると、サーバーはServer-Sent Eventsを返します。これはチャンクごとに1行のdata:で、data: [DONE]で終わります。ストリーミングは料金体系に影響を与えません。引き続きトークンごとに料金を支払いますが、結果をより早く確認できます。
ステップ7:関数とツールの呼び出し
ツール呼び出しは、GLM-5.2のエージェントとしての強みが発揮される部分であり、Z.aiが公開した結果ではMCP-Atlasで77.0点を獲得し、Claude Opus 4.8に近いスコアです。パターンは標準的なOpenAIの2ステップです。ツールを記述し、モデルがtool_callsリクエストを返し、関数を実行し、その結果をフィードバックします。
以下は、天気検索の現実的なGLM-5.2 APIの小さな例です。
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)
# You run the real function here. Stubbed for the example:
def get_weather(city, unit="c"):
return {"city": city, "temp": 12, "unit": unit}
result = get_weather(**args)
# Append the assistant's tool call, then your tool's result.
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)
モデルはツールを呼び出すタイミングを決定し、あなたがそれを実行し、2回目のリクエストでGLM-5.2が生の結果を自然な回答に変換します。この同じループは、複数のツールやエージェントフレームワークにも拡張可能です。契約に関してZ.ai固有のものは何もありません。
このループを手作業でテストするのはすぐに面倒になります。そこでApidogの出番です。GLM-5.2のエンドポイントを一度定義し、各思考モードのリクエストボディを保存し、curlを毎回書き直すことなくツール呼び出しのシーケンスをリプレイできます。OpenAIスタイルのスキーマを処理し、ストリーミングされたレスポンスを一箇所で検査できます。
ステップ8:コストのために使用量オブジェクトを読み取る
ストリーミングされないすべてのレスポンスには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)
GLM-5.2の料金は、入力トークン100万あたり1.40ドル、出力トークン100万あたり4.40ドルです(OpenRouterによって確認済み)。キャッシュされた入力は、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
Max努力による推論トークンは出力カウントに含まれるため、Max努力のコーディング呼び出しは、思考が無効なものよりも高価になります。VentureBeatはGLM-5.2が「長期間にわたるコーディングにおいて、GPT-5.5を約1/6のコストで打ち負かす」と報じており、これがこれらの数値の背後にある経済的な売り込みです(主張はVentureBeatに帰属)。
従量課金制のAPI呼び出しではなく定額プランを利用したい場合は、Z.aiがGLM Coding Planのティア(Lite、Pro、Max、およびTeam)も販売しています。正確な料金は変動するため、2026年6月現在、契約する前に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と表示されているため、ライブで確認してください)、以下の環境変数を設定します。
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
[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_urlをhttps://api.z.ai/api/paas/v4/に設定し、モデルをglm-5.2に指定してください。標準のチャット、ストリーミング、ツール呼び出しのコードは変更なく動作します。
送信すべきGLM-5.2のモデル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経由)。難しいコーディングタスクの場合は、思考を有効にし、Z.aiがコードに推奨するreasoning_effort: "max"を設定してください。
GLM-5.2の呼び出しあたりのコストはいくらですか? 入力トークン100万あたり1.40ドル、出力トークン100万あたり4.40ドルです(OpenRouter確認済み)。正確なコストを計算するには、各レスポンスのusageオブジェクトを読み取ってください。Max努力の推論トークンは出力としてカウントされることを忘れないでください。
GLM-5.2にはビジョンモデルがありますか? 2026年6月現在、確認されているビジョンバリアントはありません。APIはテキスト入力、テキスト出力です。Z.aiがサポートを文書化するまで、画像入力に依存しないでください。
まとめ
GLM-5.2 APIは、OpenAI互換のあらゆるコードベースから簡単に移行できます。ベースURLを交換し、glm-5.2を送信するだけで、1Mコンテキスト、MITライセンス、調整可能な推論機能を持つコーディングモデルを、出力料金100万トークンあたり4.40ドルで利用できます。まずcurlで疎通確認を行い、Python SDKに移行し、次にユースケースに応じて思考モードやツール呼び出しを組み込んでください。
エンドポイントをテストし、リクエストのバリアントを保存し、ツール呼び出しのシーケンスを手動で毎回curlコマンドを記述することなく検査したい場合は、Apidogをダウンロードし、GLM-5.2エンドポイントを一度設定してください。モデル自体の全体像については、GLM-5.2とは何か、およびGLM-5.2とGLM-5.1の比較をご覧ください。
