はじめに
GLM 5.2 は Z.ai の長文脈チャットモデルで、ここでは /v1/chat/completions の OpenAI 互換エンドポイント 1 本として提供しています。最大 256 メッセージ、合計 1,048,576 トークンまでを読み、最大 131,072 トークンで答えます。資料一式を丸ごと入れて、結論を受け取る形です。
推論の強さは high と max の 2 段階で、既定は max です。temperature(0〜1)と top_p を受け付け、response_format で JSON を返し、1 リクエストに最大 128 個のツールを宣言できます。メッセージの内容はテキストのみで、返答は Server-Sent Events でストリーミングされます。
主な機能とハイライト
読む量は書く量の 8 倍
入力 1,048,576、出力 131,072 でおよそ 8 対 1。この形がモデルの用途を物語っています。四半期分のチケット、規制の全文、メールボックス丸ごとを読み、書き直しではなく結論を返す仕事です。入力と同じ長さの答えが必要なら、先に成果物を分割してください。
既定は max、大量処理は high
reasoning_effort は max から始まり、大きな一次処理では high に下げます。どちらも同じリクエスト本文の設定なので、1 万件の文書を安く一巡させる処理と、そのうち 40 件を丁寧に見直す処理が 1 つの連携で済みます。max は返答の枠をより多く推論に使うため、ここでは max_tokens の既定値を 32,768 にしています。
JSON とツールを同じ呼び出しで
response_format を json_object にして system メッセージでキーを指定するか、最大 128 個の関数を宣言していつ実行するかを tool_choice に任せます。どちらの場合も、アプリケーション側で結果を検証してから使ってください。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
messages | はい | 順序付きのターンを最大 256 件、内容はテキストのみです。資料は 1 つの user メッセージに、問いと出力形式は system メッセージに置いてください。 1 件以上 · 256 件以内 |
reasoning_effort | いいえ | high / max。Z.ai 自身の API と同じく既定は max なので、指定を省いたリクエストでも最も丁寧な設定になります。 |
stop | いいえ | 停止シーケンスは 1 件だけで、文字列か要素 1 つの配列で指定します(Z.ai が読むのは 1 件のみです)。モデルがそれを書いた時点で応答が終わり、一致した文字列は返されません。 1 文字以上 · 1 件以上 · 1 件以内 |
max_tokens | いいえ | 返答を 131,072 で抑えます。読み込み枠の 8 分の 1 です。 |
temperature | いいえ | 0〜1、既定 1。返答をコードが解析する場合は 0 に保ってください。 |
top_p | いいえ | 0.01〜1、既定 0.95。同じ比較の中で、これと temperature を同時に動かさないでください。 |
tools | いいえ | 1 リクエストにつき最大 128 個の関数定義。 128 件以内 |
tool_choice | いいえ | auto / none / required、または呼ぶ関数を名指しするオブジェクト。 |
response_format | いいえ | JSON オブジェクトを要求し、キーはすべて system メッセージで名指ししてください。 |
料金
入力 $0.98 / 出力 $3.08 100 万トークンあたり
ユースケース
四半期分のサポートチケットを 1 回で
リリース期間中のチケットをすべて 1 リクエストに入れ、繰り返し起きている障害のパターンを、根拠のチケット ID とともに挙げさせます。抜き取りで落ちるものがないので、週に 1 回しか出ないパターンも見えてきます。
規制と実際の製品の振る舞い
規制の全文とデータ取り扱いに関する社内文書を並べて渡し、義務、それを満たす統制、そして不足を求めます。不足にはそれぞれ、根拠となる条項を結び付けさせます。
社内ツールを呼び出すバックエンド
注文照会、返金、権利確認をツールとして 1 リクエストで宣言し、どれを呼ぶかはモデルに任せます。結果は tool ロールのメッセージで戻るので、複数ステップの対応も 1 つの会話の中で完結します。
プロンプトガイドと実践のヒント
抜き取りではなく、資料をまるごと載せる
この枠は、誰かが作ろうとしていた検索インデックスより大きいのが普通です。素材は 1 つの user メッセージに古い順で入れ、system メッセージは問いと出力形式のために空けておきます。
書き起こしではなく、結論を求める
POST https://api.spicyapi.ai/v1/chat/completions に {"model": "zai/glm-5.2", "messages": [{"role": "system", "content": "Return one JSON object with keys: obligations, controls, gaps. Every gap must cite the clause it comes from."}, {"role": "user", "content": "<the regulation>\n\n<our data-handling policy>"}], "reasoning_effort": "high", "max_tokens": 16000, "response_format": {"type": "json_object"}, "temperature": 0} を送ります。temperature を 0 にしておくと、同じ資料を見直すときに実行結果どうしを比べやすくなります。
曖昧な行だけを引き上げる
一次処理で不確実と印が付いた数件だけを、同じ資料のまま max で送り直します。長い読み込みの料金は 2 回かかりますが、丁寧な答えが本当に効く行に集中します。131,072 を超える max_tokens は検証で弾かれ、画像とファイルのパートは受け付けません。
API クイックスタート
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "zai/glm-5.2/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。







