Что делает представленный скрипт?
Это небольшая утилита на Python, которая упрощает работу с несколькими LLM‑провайдерами (ZAI, OpenRouter, Together, Requesty, HuggingFace). Скрипт:
- Автоматически подбирает API‑ключ из переменных окружения, Google Colab user‑data или интерактивного ввода.
- Создаёт клиент
OpenAIс поддержкой произвольного base_url и выбранной модели. - Ведёт учёт токенов (
_USAGE) и количества запросов. - Позволяет включать «thinking»‑модус GLM‑5.2, задавать уровень усилий (
effort) и использовать инструменты (tools). - Поддерживает как обычный, так и потоковый (
stream=True) вывод.
Как быстро подготовить окружение
Скопируйте код в файл glm_helper.py и выполните один‑единственный набор команд:
- Установите зависимости:
python -m pip install -q -U openai - Экспортируйте нужный API‑ключ, например:
export ZAI_API_KEY=<ваш_ключ> - Запустите скрипт, убедившись, что
pythonуказывает на нужную версию (3.8+).
Если вы работаете в Google Colab, ключ можно задать через userdata без дополнительных переменных окружения.
Практические советы по использованию
- Выбор провайдера. Поменяйте значение переменной
PROVIDERна любой из перечисленных в словареPROVIDERS. Не забудьте, что у каждого провайдера свои лимиты и цены. - Контроль расходов. Стоимость токенов задаётся в переменных
PRICE_IN_PER_MиPRICE_OUT_PER_M. Для собственного мониторинга просто умножайте_USAGE["in"]и_USAGE["out"]на эти коэффициенты. - Thinking vs. производительность. При необходимости быстрых откликов отключайте «thinking»:
chat(messages, thinking=False). Для сложных задач включайте и задавайтеeffort="high"или"max". - Работа с инструментами. Если ваш запрос требует вызова функций, передайте список
toolsи установитеtool_choice="auto". Для потоковой передачи результатов инструмента добавьтеtool_stream=True. - Отладка скрытого reasoning. Чтобы увидеть внутренний «рассудок» модели, используйте функцию
get_reasoning(response). Это удобно для понимания, почему модель приняла то или иное решение.
Типовой пример запроса
Ниже минимальный рабочий фрагмент, который отправляет сообщение и печатает ответ вместе с токенами:
- Подготовьте список сообщений в формате
{"role": "user", "content": "Ваш вопрос"}. - Вызовите
chat(...)и обработайте результат.
messages = [{"role": "user", "content": "Расскажи анекдот про программиста"}]
resp = chat(messages, thinking=True, effort="high") # включаем глубокое размышление
print(resp.choices[0].message.content)
print(f"Токенов вход: {_USAGE['in']}, выход: {_USAGE['out']}, запросов: {_USAGE['calls']}")
Где искать обновления и справочную информацию
- Официальный репозиторий на GitHub: github.com/zai-org/GLM-5.2
- Документация провайдера ZAI: api.z.ai/docs
- OpenAI‑совместимый клиент: github.com/openai/openai-python
Частые ошибки и как их избежать
- Неправильный API‑ключ. Если ключ не найден, скрипт запросит ввод в консоли. Убедитесь, что переменная
envв словареPROVIDERSсовпадает с именем переменной окружения. - Ошибка сети. При работе через прокси проверьте переменные
HTTP_PROXYиHTTPS_PROXY. При постоянных сбоях попробуйтеsubprocess.run([...], check=True)для более строгой обработки. - Превышение лимита токенов. Модели GLM‑5.2 имеют ограничение в 8192 токенов. Делайте предварительное сокращение сообщений, если получаете
InvalidRequestError. - Тихие сбои в stream‑режиме. При использовании
stream=Trueвсегда добавляйтеstream_options={"include_usage": True}, иначе статистика токенов не будет передаваться.
Итоги
Скрипт – это «универсальный адаптер», позволяющий быстро переключаться между провайдерами, контролировать стоимость, включать продвинутый режим рассуждения и пользоваться инструментами без лишней бюрократии. При правильной настройке он экономит время разработки и даёт прозрачность расходов, что особенно ценно в проектах с ограничённым бюджетом.





















