🧆

GLM Coding Plan入門 〜APIキー取得からopencodeやClaude Codeを駆動するまで〜

に公開2

はじめに

最近、XでopencodeやGLM-4.7についてのポストを目にすることが増えてきて、個人的に気になっていたのでts-benchを回してみた。

結果は以下の通りで、少なくともコーディングエージェントとしては申し分ない性能を発揮することがわかる。

https://x.com/gosrum/status/2012365987837104290

そして、調べてみると今なら年間プランにinvitation code付きで25.92ドルで加入できるとのこと。

というわけで少し悩んだ後に契約した。

https://x.com/gosrum/status/2012493492854063454

本記事では、主にopencodeで使う方法とOpenAI compatibleなAPIとして使う方法について備忘録的にまとめる。

opencodeで使う方法

下記の公式ドキュメントに従って進める。

https://docs.z.ai/scenario-example/develop-tools/opencode

opencodeの導入

terminalを開き、下記のコマンドでopencodeを導入する。

$ npm i -g opencode-ai

GLM Coding Planで使用する

インストールができたらopencodeを実行する。

$ opencode

すると下記の画面が表示される。

/connectと打って実行する。

Z.AI Coding Planを選択すると、API Keyの入力を求められる。

生成したAPIキーをコピーしたら、opencodeに戻って入力するとモデル選択ができる。

最新のモデル(執筆時点ではGLM-4.7)を選択することで、晴れてCoding Planでopencodeを動かせるようになる。

Claude Codeで使う方法

こちらも公式ドキュメントに従って設定を進める。

https://docs.z.ai/scenario-example/develop-tools/claude

Claude Codeがすでに使える状態にある前提で、~/.claude/settings.jsonを編集すれば良い。

VS Code等のエディタで開く場合は、下記コマンドを打つ。terminal上で開きたい場合はnanoなどの好みのエディタを使えば良い。

$ code ~/.claude/settings.json

そして下記を~/.claude/settings.jsonのenvオブジェクトの中に追記する。your_zai_api_keyは上記で取得したAPIキーを入力すること。

~/.claude/settings.json
{
    "env": {
        "ANTHROPIC_AUTH_TOKEN": "your_zai_api_key",
        "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
        "API_TIMEOUT_MS": "3000000",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
        "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
        "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7"
    }
}

この設定をした状態でClaude Codeを起動して、設定を確認する。

$ claude

すると下記のような画面が出るため、Yesを選択すると~/.claude/settings.jsonが読み込まれる。

Yesを選択すると見慣れたClaude CodeのUIが開かれ、Modelがglm-4.7になっていることが確認できる。

より細かい設定を確認したいときは、/statusコマンドを実行すればよい。

テキストを入力すれば、Claude Codeと同じように使えることがわかる。

Claude CodeはAskUserQuestionToolが使えるのが大きな強みの一つだと思っている。

Claude CodeでGLM Coding Planをオフにしたいとき

ClaudeのサブスクPlanとGLM Coding Planを併用したいときは、~/.claude/settings.jsonを切り替えて使う必要がありそう。

jsonファイルはコメントアウトできないので少々面倒だが、GLMを使うためのjsonファイルと使わないjsonファイルを用意しておいて、適宜コピーして使えばとりあえずは良さそう。

もっと良い運用方法をご存知の方がいればぜひコメントください。


★追記

uchkwさんより、上記の課題を帰結する有益な情報を頂いたので書き留めておきます。

https://x.com/huchkw/status/2012735195036938327

つまり、.zshrc(Mac)/.bashrc(Ubuntu)に下記のようにaliasを定義しておけば、settins.jsonの設定をしなくてもコマンドでどちらを使うか切り替えられるということ!

~/.bashrc
alias claude-glm='ANTHROPIC_AUTH_TOKEN="apikey" \
    ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic" \
    API_TIMEOUT_MS="3000000" \
    CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
    ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-4.5-air" \
    ANTHROPIC_DEFAULT_SONNET_MODEL="glm-4.7" \
    ANTHROPIC_DEFAULT_OPUS_MODEL="glm-4.7" claude'

claudeのサブスクプランを使いたいときはclaudeで起動し、GLM Coding Planで起動したい場合はclaude-glmで起動できるようになります。

手元の環境でも動作確認できました!uchkwさん情報ありがとうございました!


OpenAI compatible APIとして使う方法

下記を設定して、OpenAI compatible APIとして使えばOK

  • base URL:https://api.z.ai/api/coding/paas/v4
  • APIキー:上記で設定したAPIキー
  • モデル名:GLM-4.7

Invitation URL

この記事を読んで契約したくなった方は下記のinvitation URLから契約すると、10% OFFになるので是非ご活用ください。

https://z.ai/subscribe?ic=SHYPDCXIER

まとめ

本記事ではGLM Coding Planの入門編として、契約後に

  • APIキーを取得する方法
  • opencodeを駆動する方法
  • Claude Codeを駆動する方法
  • OpenAI compatible APIとして使用する方法

を備忘録的にまとめました。

最後まで読んでいただきありがとうございました。今後も面白い使い方や便利な活用法を見つけたら、Xや記事で発信していこうと思います。

Discussion

kun432kun432

GLMコーディングプランのFAQには、

https://docs.z.ai/devpack/faq

Q: Can I use my GLM Coding Plan quota in non-AI coding tools?

A: No. The GLM Coding Plan quota is only intended to be used within coding/IDE tools designated or recognized by Z.ai (such as Claude Code, Kilo Code, etc.) for personal code-assistance scenarios in your local IDE or terminal.
If you want to integrate GLM models into your own applications, websites, bots, SaaS products or other systems via API, please use Z.ai’s enterprise-grade API / MaaS services and follow the corresponding terms and pricing.

とありますので、コーディングツール以外での利用は想定されていないようです。また、APIサービス側のAPIリファレンスにも同様の記載があります。ご注意ください。(これが可能ならもっと便利なんですけどね・・・)

https://docs.z.ai/api-reference/introduction#api-endpoint

1
金のニワトリ金のニワトリ

kun432さん
ご指摘ありがとうございます。なるほど、汎用的な用途では使うことは想定されていいないのですね・・・

残念ですが仕方ないですね。頂いた情報を追記し、誤解を招く表現等を削除しました。