Зачем?

Вижу много высказываний на тему, что Claude Code хорош, но очень дорог. И это правда. С платой за API деньги улетают с пугающей скоростью. А с подпиской быстро упираешься в ограничения. При этом есть модели вполне сравнимого качества, но в разы (если не на порядок) дешевле.

Z.Ai –  GLM 4.5

В чем интерес

Первый месяц за $3 – не особо интересно, кратковременную скидку многие предоставляют. А вот $36 заплатить (фактически как у Claude за 2 месяца), но пользоваться целый год – другое дело. Через год еще что-нибудь интересное появится.

При этом не только год обходится в 6 раз дешевле, но и лимиты втрое выше.

Как подключить

Собственно, на https://docs.z.ai/devpack/tool/claude есть родная инструкция.

export ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY

Видимо, они «знают» Claude Code, и сами под него подстраиваются. Для Other Tools рекомендуют другой api endpoint:

Пример использования «токенов»

Задание:

Write tests for @xxx/client.py (save into xxx/tests/xxx/test_client.py).
Besides mock add a "real life" test by calling api_call and api_query with the command "show-assets" and finding objects with IP addresses of management servers.
Use test-writer-fixer agent.

Я не заморачивался с детальным промптом (comprehensive tests, ensure the tests are organized logically, maintainable…) , поскольку все равно вызываю агента test-writer-fixer (взял с https://github.com/contains-studio/agents).

Как итог – большой файл (почти 2000 строк) с сотней тестов. Собственно, и оригинальный client.py не маленький (возможно разобью на кусочки).

Делал он очень долго, под спойлером несколько его промежуточных сообщений, кому интересно:

Примеры его промежуточных шагов

It looks like the test-writer-fixer agent created a comprehensive test suite but didn't include the specific "show-assets" tests that were requested. Let me update the todo list and then add those specific tests…

 

 

There are several failing tests in the TestClientAPICalls class. The main issues seem to be:

1. Mock assertion issues in test_prepare_api_client_success

2. Expected exception not raised in test_prepare_api_client_server_not_found

3. JSON parsing issues in several tests due to mock response format

Let me fix these one by one. First, let me look at the test_prepare_api_client_success test…

 

 

Found the hanging test! This test is retrying 16 times with a 5-second delay between attempts, causing it to run for over 75 seconds. The issue is that the mock API client doesn't have a sid attribute, causing the login to fail repeatedly and trigger retries.

Let me look at this test and fix it…

 

Вряд ли я сразу сделал бы сильно лучше.

 

По ценам Claude API это стоило бы очень дорого. Чуть не половину от годовой оплаты Z.AI при не сказать, чтобы сильно другом качестве.

Откуда берется claude-sonnet – без понятия. Платных подписок у меня на Antrophic нет. Возможно, он ее указывает при вызове, но, поскольку идет на эндпойнт Z.AI, те сами разруливают в рамках моего годового плана.

Deepseek

Тоже очень неплохой вариант. Особенно на попробовать без существенной оплаты вперед. По крайней мере, я не знаю подписочной модели, только за токены.

Есть нюанс. В документации приводится пример с deepseek-chat. Для кодинга результаты будут посредственные. deepseek-chat годится в качестве маленькой модели, а в качестве основной deepseek-reasoner будет существенно лучше.

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=${YOUR_API_KEY}
export API_TIMEOUT_MS=600000
export ANTHROPIC_MODEL=deepseek-reasoner
export ANTHROPIC_SMALL_FAST_MODEL=deepseek-chat
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

(На самом деле под капотом модель одна и та же, только chat - non-thinking mode).

Для сравнения посчитанное по ценам Claude (другой пример, относительно небольшой фикс):

И реальная стоимость из Deepseek:

A screenshot of a phone  AI-generated content may be incorrect.

Можно легко сделать алиасы переключения для запуска Claude Code через Z.AI или Deepseek, но для быстрых фиксов я также и RooCode использую (это все-таки поудобнее, чем интеграция VS Code с консольным Claude Code).

Впрочем, в нем мне обычно и бесплатного Deepseek через OpenRouter хватает.

Бонус

Z.AI можно и «обычным» образом использовать. К примеру, добавить в AnythingLLM.

A screenshot of a black box  AI-generated content may be incorrect.

 

A screenshot of a computer  AI-generated content may be incorrect.

Для glm-4.5-flash неважен endpoint, модель бесплатная.

Если же попробовать glm-4.5-air, ждет облом: 429 Insufficient balance or no resource package. Please recharge.

Нужно указать именно https://api.z.ai/api/coding/paas/v4/. Тогда начнет нормально отвечать в рамках годового плана.

Disclaimer

«я не настоящий сварщик» (из анекдота). Программирование для меня – как знание иностранных языков для «не переводчиков». Очень нужный навык, но все-таки сопутствующий. Не то, чем я непосредственно зарабатываю на жизнь.

Так что я вполне понимаю сентенции «AI не заменит настоящих программистов», но для меня это огромное подспорье, помогающее писать в том числе на языках, о которых я имею достаточно поверхностное представление.

Тем более, что он и улучшать их знание помогает, ибо все им написанное я просматриваю, какие-то мелочи правлю руками (часто для мелких правок проще самому сделать, чем сформулировать свои хотелки). Ожиданий «задал промпт – получил идеальный результат» у меня нет.

Update

GLM 4.6, разумеется, тоже поддерживается.

$ cat ~/.claude/settings.json
{
"env": {
"ANTHROPIC_MODEL": "glm-4.6",
"ANTHROPIC_SMALL_FAST_MODEL": "glm-4.5-air"
}
}

И помните, что для GLM очень важны четкие инструкции. Детальное описание ваших задумок дает потрясающие результаты.Многокилобайтные агенты (например, с описанием, как ей следует писать для вас тесты) реально работают.