Назад в кабинет

GLM 5.3 Uncensored: Messages и Chat Completions

Подключение обеих GLM 5.3 через LLMsRelay: ключи, денежный баланс, cURL, Python, TypeScript, стриминг, веб-поиск и вызов инструментов.

LLMsRelay - независимо управляемый API-шлюз, не связанный с Anthropic, PBC и не одобренный ею. Названия продуктов и моделей используются только для описания совместимости.

1. Аккаунт, баланс и ключ

  1. Войдите в LLMsRelay. Если аккаунта нет, зарегистрируйтесь, затем вернитесь в раздел оплаты Uncensored.
  2. Пополните отдельный денежный баланс GLM на $45, $100, $500 или $1 000. Зачисление 1:1 в USD, без регистрационных, реферальных и промобонусов. Стандартные пакеты API-эквивалента этот баланс не пополняют.
  3. В API Keys создайте ключ группы GLM 5.3. Скопируйте секрет при создании и храните локально. Используйте полный sk- ключ из нашего кабинета, а не ключ другого сервиса.
  4. Проверьте денежный баланс и оставшийся лимит ключа. Положительного стандартного баланса недостаточно. У ключа одна группа; для одновременной работы с Claude, GPT и GLM создайте отдельные ключи.

2. Выбор публичного model ID

Публичный model IDКонтекст, токеныВход
glm-5-3-uncensored262,144Текст и изображения
glm-5-3-uncensored-1m1,000,000Только текст
GET /v1/modelsbash
curl https://api.llmsrelay.com/v1/models \
  -H "Authorization: Bearer $LLMSRELAY_API_KEY"

3. Безопасное хранение ключа

Задайте LLMSRELAY_API_KEY в локальной оболочке или менеджере секретов. В примерах заглушка: заменяйте её локально, никогда в общем чате, URL, клиентском коде браузера или репозитории. В base URL Anthropic SDK не добавляйте /v1, а OpenAI SDK требует /v1 ровно один раз.

Environmentbash
export LLMSRELAY_API_KEY="YOUR_LLMSRELAY_KEY"

4. Messages в формате Anthropic

Messages использует x-api-key и anthropic-version. Поле max_tokens обязательно. Читайте текстовые блоки response.content, а не choices. Системная инструкция передаётся в поле system верхнего уровня. Для модели 1M замените только model на glm-5-3-uncensored-1m.

POST /v1/messagesbash
curl https://api.llmsrelay.com/v1/messages \
  -H "x-api-key: $LLMSRELAY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "system": "You are a concise assistant.",
  "messages": [
    {
      "role": "user",
      "content": "Explain what an API gateway does."
    }
  ]
}'

5. Chat Completions в формате OpenAI

Chat Completions использует Authorization: Bearer. Системную инструкцию передавайте сообщением system, текст ответа читайте в choices[0].message.content. Указывайте точный публичный model ID. GET /v1/models показывает модели действительного оплаченного ключа; при нулевом доступном остатке возможен 402.

POST /v1/chat/completionsbash
curl https://api.llmsrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMSRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "messages": [
    {
      "role": "system",
      "content": "You are a concise assistant."
    },
    {
      "role": "user",
      "content": "Explain what an API gateway does."
    }
  ]
}'

6. SDK для Python и TypeScript

Установите только нужный SDK. Ключ храните в серверном окружении. Anthropic SDK возвращает блоки content, OpenAI SDK возвращает choices. Для 1M в этих примерах достаточно изменить публичный model ID.

Pythonbash
pip install anthropic openai
Python: Messagespython
import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["LLMSRELAY_API_KEY"],
    base_url="https://api.llmsrelay.com",
)
response = client.messages.create(
    model="glm-5-3-uncensored",
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello!"}],
)
print("".join(block.text for block in response.content if block.type == "text"))
Python: Chat Completionspython
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["LLMSRELAY_API_KEY"],
    base_url="https://api.llmsrelay.com/v1",
)
response = client.chat.completions.create(
    model="glm-5-3-uncensored",
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
Node.jsbash
npm install @anthropic-ai/sdk openai
TypeScript: Messagestypescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.LLMSRELAY_API_KEY,
  baseURL: "https://api.llmsrelay.com",
});
const response = await client.messages.create({
  model: "glm-5-3-uncensored",
  max_tokens: 512,
  messages: [{ role: "user", content: "Hello!" }],
});
for (const block of response.content) {
  if (block.type === "text") console.log(block.text);
}
TypeScript: Chat Completionstypescript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.LLMSRELAY_API_KEY,
  baseURL: "https://api.llmsrelay.com/v1",
});
const response = await client.chat.completions.create({
  model: "glm-5-3-uncensored",
  max_tokens: 512,
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);

7. Claude Code и совместимые IDE

Для Claude Code используйте отдельный GLM-профиль или оболочку с переменными ниже. Не перезаписывайте чужие профили без проверки. В этом профиле уберите конфликтующий ANTHROPIC_AUTH_TOKEN. Задайте GLM для основных и быстрых моделей, чтобы клиент не запрашивал Claude с GLM-ключом. В Cline, Roo Code или Continue выберите OpenAI Compatible, base URL https://api.llmsrelay.com/v1, GLM-ключ и один из публичных ID. Совместимость инструментов зависит от клиента; перед длинной сессией проверьте короткий запрос.

Claude Code: GLMbash
export ANTHROPIC_BASE_URL="https://api.llmsrelay.com"
export ANTHROPIC_API_KEY="$LLMSRELAY_API_KEY"
export ANTHROPIC_MODEL="glm-5-3-uncensored"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5-3-uncensored"
export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5-3-uncensored"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-5-3-uncensored"
export ANTHROPIC_SMALL_FAST_MODEL="glm-5-3-uncensored"
# Only in this dedicated GLM shell/profile:
unset ANTHROPIC_AUTH_TOKEN
claude

8. Стриминг (SSE)

Добавьте stream:true и используйте curl -N. В Chat Completions накапливайте choices[].delta.content и фрагменты аргументов tool_calls до [DONE]. stream_options.include_usage:true запрашивает итоговый блок usage; в нём choices может быть пустым.

Messages отправляет именованные события message_start, content_block_delta, message_delta и message_stop. Отдельно обрабатывайте текст, thinking и JSON инструментов. Проверяйте события error даже при HTTP 200: открытый поток ещё не означает успешное завершение. Не склеивайте сырой SSE как обычный JSON.

Chat Completions: SSEbash
curl -N https://api.llmsrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMSRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "messages": [
    {
      "role": "system",
      "content": "You are a concise assistant."
    },
    {
      "role": "user",
      "content": "Explain what an API gateway does."
    }
  ],
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}'
Messages: SSEbash
curl -N https://api.llmsrelay.com/v1/messages \
  -H "x-api-key: $LLMSRELAY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "system": "You are a concise assistant.",
  "messages": [
    {
      "role": "user",
      "content": "Explain what an API gateway does."
    }
  ],
  "stream": true
}'

10. Собственные функции и инструменты

Опишите функцию через JSON Schema и дождитесь её вызова моделью. Ваш сервер проверяет аргументы, выполняет разрешённое действие и передаёт результат обратно. Не исполняйте произвольные shell-команды и непроверенные аргументы модели.

Chat: добавьте сообщение assistant с tool_calls, затем role:tool для каждого tool_call_id. Messages: добавьте полный content ответа assistant, затем user с блоками tool_result и соответствующими tool_use_id. Сохраняйте thinking и подписи, если они присутствуют. Продолжайте до текстового ответа, поддерживайте несколько вызовов и ограничьте число итераций.

Примеры ниже показывают форму продолжения, а не рабочий сервис погоды. Подставьте реальные ID вызовов, полный ответ assistant и проверенный результат локальной функции. При SSE сначала соберите все фрагменты аргументов и только потом разбирайте JSON.

Chat Completions: functionbash
curl https://api.llmsrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMSRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "messages": [
    {
      "role": "user",
      "content": "What is the weather in Paris?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a city",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string"
            }
          },
          "required": [
            "city"
          ]
        }
      }
    }
  ]
}'
Chat Completions: continuationtext
# messages for the next Chat request; use the ACTUAL assistant message and call ID:
[
  {"role":"user","content":"What is the weather in Paris?"},
  {"role":"assistant","content":null,"tool_calls":[
    {"id":"ACTUAL_CALL_ID","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}
  ]},
  {"role":"tool","tool_call_id":"ACTUAL_CALL_ID","content":"{\"temperature_c\":18}"}
]
Messages: functionbash
curl https://api.llmsrelay.com/v1/messages \
  -H "x-api-key: $LLMSRELAY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 512,
  "system": "You are a concise assistant.",
  "messages": [
    {
      "role": "user",
      "content": "What is the weather in Paris?"
    }
  ],
  "tools": [
    {
      "name": "get_weather",
      "description": "Get current weather for a city",
      "input_schema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string"
          }
        },
        "required": [
          "city"
        ]
      }
    }
  ]
}'
Messages: continuationtext
# messages for the next Messages request; preserve the ACTUAL full assistant content:
[
  {"role":"user","content":"What is the weather in Paris?"},
  {"role":"assistant","content":[
    {"type":"tool_use","id":"ACTUAL_TOOL_USE_ID","name":"get_weather","input":{"city":"Paris"}}
  ]},
  {"role":"user","content":[
    {"type":"tool_result","tool_use_id":"ACTUAL_TOOL_USE_ID","content":"{\"temperature_c\":18}"}
  ]}
]

11. Рассуждения и структурированный ответ

В Chat используйте reasoning_effort, например high; в Messages: output_config.effort или thinking.budget_tokens. include_reasoning:false скрывает рассуждения, но не отменяет их стоимость. Выделяйте выходные токены и на рассуждения, и на ответ. Ниже показан JSON Schema для Chat; проверяйте полученный JSON в приложении. Для нестандартных полей используйте extra_body в Python или прямой HTTP-запрос.

Chat Completions: JSON Schemabash
curl https://api.llmsrelay.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMSRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "max_tokens": 2048,
  "messages": [
    {
      "role": "user",
      "content": "Return a short greeting as JSON."
    }
  ],
  "reasoning_effort": "high",
  "include_reasoning": false,
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "greeting",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "greeting": {
            "type": "string"
          }
        },
        "required": [
          "greeting"
        ],
        "additionalProperties": false
      }
    }
  }
}'

12. Подсчёт токенов, кеш и изображения

Перед длинным запросом вызовите POST /v1/messages/count_tokens с той же моделью и входом. Это оценка входных токенов, а не будущего ответа или итоговой цены. Общий вход и выход должны укладываться в контекст модели.

Стабильные инструкции и схемы инструментов размещайте в начале. Попадание в кеш не гарантировано при каждом повторе. Проверяйте чтение кеша в usage. Запись кеша тарифицируется как вход, рассуждения входят в стоимость выхода.

Изображения принимает только glm-5-3-uncensored. В Chat используйте image_url, в Messages блок image с поддерживаемым URL или base64. Модель 1M работает только с текстом и отклоняет изображения с HTTP 400.

POST /v1/messages/count_tokensbash
curl https://api.llmsrelay.com/v1/messages/count_tokens \
  -H "x-api-key: $LLMSRELAY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "glm-5-3-uncensored",
  "messages": [
    {
      "role": "user",
      "content": "Explain what an API gateway does."
    }
  ]
}'

13. Диагностика ошибок

Статус / симптомЧто проверить
401Полный ключ LLMsRelay, заголовок и переменную окружения. Раскрытый ключ замените.
403 / модель недоступнаВыберите группу GLM 5.3 и проверьте разрешённые модели ключа. Ключи Basic и Codex не дают доступ к GLM.
402 / insufficient_creditsДенежный баланс GLM И лимит ключа. Средств должно хватить на предварительный резерв, включая max_tokens. Уменьшите выходной бюджет или пополните баланс.
400Model ID, JSON, max_tokens и схему инструмента. Для 1M уберите изображения.
404 / неверный путьMessages: /v1/messages. Chat: /v1/chat/completions. Уберите дублирующий /v1.
429Учитывайте Retry-After, ограничьте параллельность и повторы с экспоненциальной задержкой.
5xx / ошибка SSEСохраните request ID, проверьте завершающее событие потока. При повторении обратитесь в поддержку. Повторный запрос может оплачиваться отдельно.
Баланс недоступенНе повторяйте оплату и не считайте баланс нулевым. Дождитесь проверки или обратитесь в поддержку.

14. Особенности Responses

Для этого гайда предпочтительны Messages и Chat Completions. Нативный Codex использует Responses; настройка OpenAI-совместимой IDE не равна настройке Codex CLI.

GLM Responses не хранит состояние: previous_response_id не поддерживается. Передавайте предыдущие input/output и function_call_output явно.

При проверках 9 октября 2026 года Responses веб-поиск базовой модели в SSE завершался ошибкой, а без стриминга работал. Для поиска предпочтительны Chat и Messages. У 1M Responses возвращались URL источников, но отсутствовали итоговые аннотации цитат.

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

15. Конечные тарифы в USD

USD за 1 миллион токенов, конечные цены для клиента. Дополнительный множитель к таблице не применяется. Фактические входные, выходные и кешированные токены списываются с отдельного денежного баланса GLM. Бонусов в этом флоу нет.

МодельВходВыходЧтение кешаЗапись кеша
glm-5-3-uncensored$4.00$12.00$0.40$4.00
glm-5-3-uncensored-1m$12.00$20.00$1.20$12.00

Пополнить баланс GLM

Пополните отдельный денежный баланс GLM на $45, $100, $500 или $1 000. Зачисление 1:1 в USD, без регистрационных, реферальных и промобонусов. Стандартные пакеты API-эквивалента этот баланс не пополняют.

Пополнить баланс GLM