0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GLM-5.1入門 — SWE-bench Pro #1のオープンエージェントLLMをAPIで活用する

0
Last updated at Posted at 2026-04-28

はじめに

2026年4月、オープンソースLLMの世界が大きく塗り替えられました。中国のAI企業 Z.ai(旧国際ブランド名:Zhipu AI、中国法人名:Zhipu / 智谱AI、2026年1月香港上場) が公開した GLM-5.1 が、SWE-bench Proで58.4%を記録し、GPT-5.4やClaude Opus 4.6を上回るオープンソース初の快挙を達成しました。

MITライセンスで完全無料、OpenAI SDK互換のAPIで即日利用可能——この記事ではGLM-5.1の全貌と、Pythonでの実装方法をゼロから解説します。

この記事で学べること

  • GLM-5.1のスペックとベンチマーク結果
  • OpenAI SDK互換APIでの基本的な実装方法
  • 関数呼び出し(ツール使用)の実装
  • OllamaとローカルGPUでの動かし方
  • GLM-5 → GLM-5.1の変更点

対象読者

  • オープンソースLLMに興味があるエンジニア
  • GPT・Claudeの代替モデルを探している方
  • コーディングエージェントを構築したい方

前提環境

  • Python 3.10+
  • pip install openai(OpenAI SDK)

TL;DR

  • GLM-5.1 は754BパラメータのMoEモデル(40Bアクティブ)、MITライセンス
  • SWE-bench Pro 58.4%(GPT-5.4: 57.7%、Claude Opus 4.6: 57.3%)でオープンソース#1
  • OpenAI SDK互換APIで即日利用可能(BigModel APIまたはTogether AI)
  • 200Kトークンコンテキスト、最大128Kトークン出力、8時間連続自律実行
  • Ollama glm-5.1:cloud でローカルGPUなしでも利用可能

GLM-5.1とは

開発元:Z.ai(Zhipu AI)

Z.ai(旧国際ブランド名:Zhipu AI)は、清華大学発のAI企業(2026年1月香港上場)で、GLMシリーズ(General Language Model)を継続的にリリースしてきました。GLM-5.1はその最新フラッグシップモデルです。

前世代のGLM-5は「Huaweiチップで訓練された最強オープンソースLLM」として注目を集めましたが、GLM-5.1はコーディング性能を28%向上させ、エージェント特化の設計に刷新されています。

モデルスペック

項目 GLM-5.1
総パラメータ数 754B
アクティブパラメータ 40B(MoE)
アーキテクチャ MoE + DSA(DeepSeek Sparse Attention)
ライセンス MIT
コンテキストウィンドウ 200,000トークン
最大出力 128,000トークン(128K)
8時間自律実行
リリース日 2026年4月

MoE(Mixture of Experts)は、入力に応じて特定の専門家(Expert)ネットワークのみを活性化する手法です。754Bある総パラメータのうち、推論時は40Bのみ使用するため、大幅に効率的です。

学習の特徴:Huawei Ascend 910B

GLM-5.1の学習にはNVIDIA GPUを一切使用していません。Huawei Ascend 910B のみで訓練されており、非同期強化学習(Asynchronous RL)を採用しています。これは中国のハードウェアエコシステムが完全に自立していることを示す象徴的な成果です。


ベンチマーク結果

公式HuggingFaceモデルカード(zai-org/GLM-5.1)に基づく数値です。

コーディング系ベンチマーク

ベンチマーク GLM-5.1 GPT-5.4 Claude Opus 4.6 Gemini 3.1 Pro
SWE-Bench Pro 58.4% 57.7% 57.3%
NL2Repo 42.7%
Terminal-Bench 2.0 63.5% 68.5%

SWE-bench Proは、実際のGitHubのバグ修正タスクをどれだけ自律的にこなせるかを測る厳格なベンチマークです。商用クローズドモデルを上回る58.4%は、オープンソース初の快挙です。

セキュリティ・推論系ベンチマーク

ベンチマーク GLM-5.1 Gemini 3.1 Pro
CyberGym 68.7%
BrowseComp 68.0%
GPQA-Diamond 86.2% 94.3%

GPQA-Diamond(大学院レベル科学)ではGemini 3.1 ProにリードされますがCyberGym(セキュリティ)とBrowseComp(ウェブブラウジング)ではトップを獲得しています。


APIの使い方

APIキーの取得

BigModel API(推奨・低コスト)bigmodel.cn でアカウント作成後、APIキーを取得します。

Together AItogether.ai でも利用可能です。

料金比較

プロバイダー 入力 出力
BigModel API $1.40/M tokens $4.40/M tokens
Together AI $1.40/M tokens $4.40/M tokens

※ BigModel APIはピーク時間帯(14:00-18:00 UTC+8)に2-3xの追加クォータを消費する場合があります。

基本実装(BigModel API)

GLM-5.1のAPIはOpenAI SDKと完全互換です。base_url を変えるだけで既存コードをそのまま流用できます。

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_BIGMODEL_API_KEY",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {"role": "user", "content": "Pythonで二分探索を実装してください"}
    ],
    max_tokens=2048,
)

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

Together AIで使う場合

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_TOGETHER_API_KEY",
    base_url="https://api.together.xyz/v1"
)

response = client.chat.completions.create(
    model="zai-org/GLM-5.1",  # Together AIのモデル名に注意
    messages=[
        {"role": "user", "content": "コードレビューをお願いします"}
    ],
)

Thinking Mode(思考モード)

長い推論が必要なタスクでは、Thinking Modeが有効です。

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {"role": "user", "content": "このアルゴリズムの計算量を解析してください: ..."}
    ],
    extra_body={
        "thinking": True  # 思考モードを有効化
    }
)

# 思考過程が含まれたレスポンスを受け取れる
print(response.choices[0].message.content)

ストリーミング対応

大きな出力を扱う場合は、ストリーミングを使うと体験が向上します。

stream = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {"role": "user", "content": "1000行のPythonコードをリファクタリングしてください"}
    ],
    stream=True,
    max_tokens=8192,
)

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

関数呼び出し(Function Calling)の実装

GLM-5.1はツール使用に対応しており、AIエージェント構築の中核機能として活用できます。

import json
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

# ツール定義
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_github_issues",
            "description": "GitHubリポジトリのオープンイシューを取得する",
            "parameters": {
                "type": "object",
                "properties": {
                    "repo": {
                        "type": "string",
                        "description": "リポジトリ名(例: 'owner/repo'"
                    },
                    "state": {
                        "type": "string",
                        "enum": ["open", "closed", "all"],
                        "description": "イシューの状態"
                    }
                },
                "required": ["repo"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {
            "role": "user",
            "content": "openai/codexのオープンイシューを確認して、優先度の高いものを教えてください"
        }
    ],
    tools=tools,
    tool_choice="auto",
)

# ツール呼び出しの処理
message = response.choices[0].message
if message.tool_calls:
    for tool_call in message.tool_calls:
        func_name = tool_call.function.name
        args = json.loads(tool_call.function.arguments)
        print(f"ツール呼び出し: {func_name}({args})")

ローカルデプロイ

Ollama(最も手軽)

OllamaにはGLM-5.1用のクラウドタグが用意されており、ローカルGPUなしで試せます。

# クラウド経由で利用(ローカルGPU不要)
ollama run glm-5.1:cloud

# 対話例
>>> Pythonでファイルの再帰的な検索を実装してください

glm-5.1:cloud はOllamaクライアントのインターフェースを使いながら、バックエンドはクラウドAPIに接続する仕組みです。フルモデルをローカルにダウンロードする必要はありません。

vLLM(本格的なローカル推論)

大規模なGPUクラスターがある環境では、vLLMを使ったフル推論が可能です。

pip install vllm>=0.19.0

python -m vllm.entrypoints.openai.api_server \
    --model zai-org/GLM-5.1 \
    --tensor-parallel-size 8 \   # 8x H100 推奨
    --trust-remote-code \
    --max-model-len 200000

GLM-5.1のフルモデルは 1.65TB のディスク容量が必要です。量子化版(Unsloth 2-bit: 220GB)を使えば要件を大幅に下げられます。エンタープライズ向けの構成となります。

SGLang(高速推論)

pip install sglang>=0.5.10

python -m sglang.launch_server \
    --model zai-org/GLM-5.1 \
    --tp 8 \
    --trust-remote-code

エージェントユースケース:コーディングエージェント

GLM-5.1の真価は長時間自律実行にあります。以下は簡単なコーディングエージェントの実装例です。

import subprocess
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "run_python",
            "description": "Pythonコードを実行し、標準出力と標準エラーを返す",
            "parameters": {
                "type": "object",
                "properties": {
                    "code": {"type": "string", "description": "実行するPythonコード"}
                },
                "required": ["code"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "write_file",
            "description": "ファイルに内容を書き込む",
            "parameters": {
                "type": "object",
                "properties": {
                    "path": {"type": "string"},
                    "content": {"type": "string"}
                },
                "required": ["path", "content"]
            }
        }
    }
]

def run_python(code: str) -> str:
    # 本番環境ではDocker/E2Bなどのサンドボックスで実行すること
    result = subprocess.run(
        ["python", "-c", code],
        capture_output=True,
        text=True,
        timeout=30
    )
    return result.stdout + result.stderr

def write_file(path: str, content: str) -> str:
    with open(path, "w") as f:
        f.write(content)
    return f"{path} に書き込みました"

def agent_loop(task: str, max_steps: int = 20):
    messages = [{"role": "user", "content": task}]
    
    for step in range(max_steps):
        response = client.chat.completions.create(
            model="glm-5.1",
            messages=messages,
            tools=tools,
            tool_choice="auto",
            max_tokens=4096,
        )
        
        message = response.choices[0].message
        messages.append(message)  # Pydanticオブジェクトをそのままappend(tool_callsの型安全性確保)
        
        # タスク完了判定
        if not message.tool_calls:
            print("タスク完了:", message.content)
            break
        
        # ツール実行
        for tool_call in message.tool_calls:
            args = json.loads(tool_call.function.arguments)
            
            if tool_call.function.name == "run_python":
                result = run_python(args["code"])
            elif tool_call.function.name == "write_file":
                result = write_file(args["path"], args["content"])
            
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result
            })

# 実行例
agent_loop("素数を10万個生成してprimes.txtに保存し、所要時間を計測するスクリプトを作成・実行してください")

GLM-5 vs GLM-5.1:何が変わったか

項目 GLM-5 GLM-5.1
SWE-bench Pro 58.4%
NL2Repo 35.9% 42.7% (+6.8pt)
コーディング性能 baseline +28%
自律実行時間 8時間
Thinking Mode 限定
量子化対応数 30種類
ファインチューニング済み派生モデル 10モデル

GLM-5.1は単なるマイナーアップデートではなく、エージェント特化への完全な刷新です。長時間自律タスクを想定した設計になっています。


まとめ

GLM-5.1は、MITライセンスのオープンソースLLMが商用モデルを超えた歴史的な一歩です。

ポイント整理

  • SWE-bench Pro #1: 58.4%でGPT-5.4・Claude Opus 4.6を超えたオープンソースモデル
  • OpenAI SDK互換: base_url を変えるだけで既存コードを流用できる
  • MIT ライセンス: 商用利用・改変・再配布すべて無料
  • 8時間自律実行: 長期エージェントタスクへの設計
  • 多様なデプロイ方法: BigModel API、Together AI、Ollama、vLLM、SGLang

中国のAIラボ(DeepSeek, Qwen, GLM, Kimi, MiniMax)が継続的にMITライセンスで世界レベルのモデルを公開しており、オープンソースLLMの実力は商用モデルとの差を急速に縮めています。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?