Три необходимых значения
Вопрос о базовом URL GLM API обычно возникает у тех, у кого есть клиент, которому нужен URL, ключ и имя модели, но нет понимания, какие значения куда вставлять. Вот они в одном месте.
| Настройка | Значение |
|---|---|
| Базовый URL | https://api.glmapi.cc/v1 |
| ID модели | uncensored |
| Заголовок авторизации | Authorization: Bearer YOUR_KEY |
| Эндпоинт чата | POST /v1/chat/completions |
| Список моделей | GET /v1/models |
Одно уточнение перед копированием. Название домена относится к поисковому запросу, а не к модели. Это хостинговый API для текстовых запросов, совместимый с OpenAI, для одной модели с открытыми весами от независимого провайдера. Модель обучена отвечать без отказов по контенту для законного использования взрослыми. Это не официальный API от вендора, стоящего за GLM, и не роутер, перенаправляющий запросы к другим вендорам. Если вам нужна официальная модель GLM, используйте сервис самого вендора.
Вы получаете ключ, зарегистрировавшись через Google или по электронной почте и паролю. На странице API-ключа также доступен пробный баланс в $0,50 на 7 дней без привязки карты.
Проверьте соединение с помощью curl
Прежде чем трогать любой SDK или приложение, подтвердите ключ и URL с помощью простого запроса. Если он сработает, все последующие проблемы в конфигурации вашего клиента, а не в аккаунте. Сначала получите список моделей:
curl https://api.glmapi.cc/v1/models \
-H "Authorization: Bearer YOUR_KEY"Вы должны получить JSON-список, который включает id uncensored. Затем отправьте одно завершение чата:
curl https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Reply with the word ready."}],
"max_tokens": 20
}'Добавьте -i, чтобы увидеть заголовки ответа. Они включают X-Request-Id, X-Balance-USD (ваш оставшийся баланс), X-RateLimit-Limit-Requests и X-RateLimit-Limit-Concurrency. Сохраняйте идентификатор запроса, если вам когда-либо понадобится обратиться в поддержку по поводу вызова.
Python и Node
Официальные SDK OpenAI принимают пользовательский базовый URL. Вы меняете два аргумента конструктора и имя модели; остальной код остаётся без изменений.
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.glmapi.cc/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a tavern."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.glmapi.cc/v1",
apiKey: process.env.GLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a tavern." }],
});
console.log(resp.choices[0].message.content);Свойство Node.js — это baseURL с заглавными буквами, тогда как аргумент Python — это base_url. Их перепутать — классический способ молча перейти на хост по умолчанию SDK и получить ошибку аутентификации от неправильного сервера.
Переменные окружения вместо кода
SDK OpenAI считывают OPENAI_BASE_URL и OPENAI_API_KEY из переменных окружения, если вы не передаёте их явно. Это наименее инвазивный способ перенаправить инструмент, код которого вы не можете изменить, например скрипт из репозитория или фреймворк, который сам создаёт клиент.
export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.pyВам всё равно нужно установить имя модели внутри инструмента или его файла конфигурации в uncensored, потому что нет переменной окружения, которая его содержит. Если у инструмента есть выпадающий список моделей, где перечислены только известные имена, поищите опцию пользовательской модели или свободного текста.
Храните значения в одном месте
После того как подключение заработает, избегайте вставки URL в пять файлов. Поместите три значения в одно место и считывайте их везде. Файл .env подходит для небольших проектов:
GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensoredЗатем загрузите их один раз при запуске и создайте единого клиента, который импортируется остальной частью программы. Преимущество проявляется в день, когда вы меняете ключи, добавляете ключ для тестирования с пробным балансом или сравниваете этот эндпоинт с другим. Вы редактируете файл, а не кодовую базу.
Храните отдельные ключи для разработки и продакшена, если аккаунт это позволяет, и немедленно меняйте ключ, если он появился в коммите, скриншоте или общем логе. Утечка ключа расходует ваш предоплаченный баланс, и баланс не возвращается.
Чат-приложения и фреймворки
Интерфейсы различаются по формулировкам, но запрашивают те же три значения. Ищите тип подключения OpenAI-compatible, custom OpenAI или аналогичный, затем заполните:
- API URL / Base URL:
https://api.glmapi.cc/v1 - Ключ API: ключ из вашего аккаунта
- Модель:
uncensored
SillyTavern позволяет добавить эндпоинт, совместимый с OpenAI, через пользовательский источник завершения чата, а Open WebUI имеет тип подключения OpenAI-compatible в настройках. Фреймворки, такие как LangChain, принимают base_url в классе чат-модели, а LiteLLM может маршрутизировать модель в стиле OpenAI через пользовательский базовый URL API. Названия меню меняются между версиями, поэтому следуйте текущей документации каждого проекта, чтобы точно узнать, где находится поле.
Некоторые приложения спрашивают, нужно ли добавлять за вас /chat/completions. Многие делают это, поэтому URL, который вы вводите, должен заканчиваться на /v1. Если приложение вместо этого запрашивает полный эндпоинт, укажите ему https://api.glmapi.cc/v1/chat/completions. В быстром старте подробнее показаны поддерживаемые поля запроса.
Почему первый вызов не работает
Если тест curl прошёл успешно, но приложение всё равно выдаёт ошибку, причина почти всегда одна из этих:
- Отсутствует
/v1. Использование толькоhttps://api.glmapi.ccс высокой вероятностью приведёт к ошибке not-found, потому что маршруты находятся под/v1. - Дублирование пути. Приложение добавляет
/chat/completions, и вы также вводите его, получая/chat/completions/chat/completions. Удалите его из базового URL. - Трейлинг-слэш. Некоторые клиенты плохо объединяют пути. Удалите конечный
/, если видите двойную косую черту в URL в логах. - Неверное имя модели. Единственный идентификатор модели —
uncensored. Имена из других сервисов не подойдут. - Проблемы с ключом. Проверьте наличие случайного пробела или разрыва строки при вставке, а также отправку ключа как
Bearerдважды приложением, которое уже добавляет префикс. - Вызов неверного хоста. В браузерном приложении отсутствие базового URL приводит к откату на хост по умолчанию SDK. Выведите в лог фактический URL запроса.
Вызовы со стороны браузера также подвергают ваш ключ риску, если кто-то откроет инструменты разработчика. Для публичного сайта отправляйте запросы с вашего собственного сервера и храните ключ там.
Когда ничего из этого не объясняет проблему, двигайтесь в обратном направлении от минимального кейса. Запустите команду curl из предыдущего шага на той же машине, где работает приложение с ошибкой. Если curl там успешно отрабатывает, сеть и ключ в порядке, и приложение формирует запрос иначе, поэтому включите его отладочное логирование и сравните записанный URL, заголовки и тело JSON с версией curl посимвольно. Если curl завершается ошибкой только на этой машине, посмотрите корпоративные прокси, правила VPN и DNS-фильтры, которые иногда блокируют незнакомые имена хостов API. Запрос, который никогда не достигает сервера, не возвращает X-Request-Id, что является быстрым способом различить два случая.
Лимиты и ответы 429
Полный ключ позволяет 8 параллельных запросов и 300 запросов в минуту. Пробный ключ позволяет 2 и 60. Превышение любого из них приводит к возврату API HTTP 429 с кодом rate_limited (слишком много в минуту) или concurrency (слишком много одновременно). Во время временной перегрузки вы также получаете 429 с заголовком Retry-After: 5.
Потоковый запрос удерживает слот параллельности до конца потока, поэтому приложение, которое открывает поток и бросает его без закрытия соединения, может исчерпать собственный лимит. Максимальный размер тела запроса — 8 МБ, а контекстное окно составляет 100 000 токенов, охватывающих промпт и завершение вместе. По ставкам и пополнению см. страницу цен.
Потоковая передача, инструменты и JSON используют тот же URL
Отдельного адреса для потоковой передачи или вызова функций нет. Всё идёт на /v1/chat/completions, а вы включаете функции в теле запроса. Запрос с потоковой передачей устанавливает "stream": true и возвращает события, отправляемые сервером; запрос с инструментами добавляет tools и опционально tool_choice; JSON-режим добавляет response_format с типом json_object. Поля сэмплирования, такие как temperature, top_p, stop, seed и штрафы, передаются как есть.
Вот вызов curl с потоковой передачей. Флаг -N отключает буферизацию вывода curl, так что вы видите фрагменты по мере их поступления:
curl -N https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","stream":true,"messages":[{"role":"user","content":"Count to five."}]}'Если ваш прокси или слой хостинга буферизует ответы, потоковая передача будет выглядеть как один большой отложенный ответ. Обратные прокси часто требуют отключения буферизации ответов для событий, отправляемых сервером (SSE), поэтому проверьте эту настройку, прежде чем обвинять API. С примером реализации каждой функции на Python можно ознакомиться в быстром старте.
Дополнительные руководства
Вопросы и ответы
Какой базовый URL у этого API?
https://api.glmapi.cc/v1. Запросы чата отправляются на /chat/completions, а список моделей доступен по адресу /models.
Какое имя модели использовать?
Используйте uncensored. Это единственный идентификатор модели, и он работает в любом клиенте в стиле OpenAI, где можно ввести пользовательскую модель.
Это официальный API GLM?
Нет. Это независимый сервис, совместимый с OpenAI, работающий на одной модели с открытыми весами, и это не официальный API ни одного поставщика.
В каком заголовке передаётся ключ?
Authorization: Bearer <ваш_ключ>. SDK OpenAI добавляют его автоматически, когда вы передаёте ключ.
Нужна ли карта для проверки подключения?
Нет. На странице API-ключа после регистрации доступен пробный баланс в $0,50 на 7 дней без привязки карты.
Ваш ключ — в одной форме от вас
Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.
