Перейти к содержимому
ПереводыQwen, InternLM и другие

GLM Cookbook (Zhipu): путеводитель

Что внутри открытого сборника примеров GLM API от Zhipu (Z.ai): базовые вызовы через HTTP, собственный SDK и OpenAI SDK, подсчёт токенов, вызов функций, эмбеддинги, Batch API, зрение и видео, дообучение, агентные демо — с переводом ключевых примеров и упражнением «один код — разные API».

Zhipu AI (по-русски «Чжипу»; международный бренд — Z.ai) — создатели семейства GLM и ChatGLM. GLM Cookbook сам себя называет «открытым учебником с кодом для начала работы с GLM API». Это не курс, а сборник рабочих ноутбуков: каждый показывает одну возможность API.

Для нашего курса он полезен в уроке 8.1.1: GLM — ещё один OpenAI-совместимыйOpenAI-совместимый APIEN OpenAI-compatible APIHTTP-интерфейс в формате OpenAI Chat Completions (/v1/chat/completions). Его отдают Ollama, llama-server, vLLM, SGLang, а также DeepSeek и Qwen в облаке — код клиента не меняется. провайдер. Тот же клиентский код, что для DeepSeek, Qwen или локального vLLM, работает и с GLM — меняются только адрес, ключ и имя модели.

ПапкаЧто внутриНаш урокВажность
basic/1) вызов через HTTP; 2) через собственный SDK Zhipu; 3) через OpenAI SDK; 4) как API считает токены; 5) вызов функций на примере погоды; 6) эмбеддинги; 7) встроенная база знаний для поиска; 8) Batch API (дешевле для пакетной обработки); 9) «очень человечная» ролевая модель CharacterGLM; 10) CodeGeeX для кода; 11) GLM-4.5 в Claude Code; плюс LangChain8.1.1, 8.3.2главное
vision/GLM-4V: картинки, короткие видео, анализ графиков; генерация картинок CogView, видео CogVideoX (в том числе пакетная)9.1.1по теме
finetune/дообучение LoRA через облачный API Zhipu6.2.1по желанию
vibecoding/подключение GLM-4.5 к Claude Code и Kode через «Anthropic-совместимый» адрес—по желанию
demo/анализ CSV, мультиролевой агент-консультант, агент TaskWeaver (Microsoft) на GLM-4, поиск с ответами, OCR, синтетические данные (SDG), извлечение информации, длинные тексты, GraphRAG, оценка суммаризации, датасет для дообучения агента ReAct, рассылка разборов статей с Hugging Face8.2.2, 8.3.1идеи для проектов

Ключевой пример 1: GLM через OpenAI SDK (перевод glm_openai_sdk.ipynb, сокращённо)

Заголовок раздела «Ключевой пример 1: GLM через OpenAI SDK (перевод glm_openai_sdk.ipynb, сокращённо)»

Ноутбук показывает, как вызывать GLM-4.5 через OpenAI SDK и экосистему вокруг него.

Шаг 1. Импортируйте OpenAI и замените base_url на https://open.bigmodel.cn/api/paas/v4/ — после этого, указав ключ, можно пользоваться моделями GLM.

from openai import OpenAI
client = OpenAI(
api_key="your api key of z.ai", # ваш ключ Z.ai / bigmodel.cn
base_url="https://open.bigmodel.cn/api/paas/v4/")

Шаг 2. Простой вызов GLM-4.5. Остальные возможности (например, вызов инструментов) вызываются так же, как у OpenAI.

response = client.chat.completions.create(
model="glm-4.5",
messages=[{"role": "user", "content": "tell me a joke"}],
top_p=0.7,
temperature=0.9,
stream=False,
max_tokens=2000,
)
response.choices[0].message.content

Дальше в ноутбуке: тот же клиент внутри LangChain (ChatOpenAI с openai_api_base), агент LangChain с поиском Tavily, генерация картинок client.images.generate(model="cogview-4", ...) и эмбеддинги client.embeddings.create(model="embedding-3", input="hello"). Оговорка авторов: на вход эмбеддингов пока можно подать только строку, не список; у генерации картинок через OpenAI-интерфейс часть параметров не поддерживается.

Ключевой пример 2: вызов функций (перевод glm_function_call.ipynb, сокращённо)

Заголовок раздела «Ключевой пример 2: вызов функций (перевод glm_function_call.ipynb, сокращённо)»

Ноутбук двуязычный (китайский и английский); строки на китайском в коде ниже переведены. Цель — на инструменте «погода» показать, как модель вызывает инструменты.

Описание инструмента. Инструмент не обязан существовать на самом деле, но описание должно содержать: имя name (его модель вернёт при вызове), описание description, параметры parameters и список обязательных required (здесь обязателен только location).

tools = [{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Получить погоду в указанном городе",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "Город, например: Пекин"},
"unit": {"type": "string", "enum": ["c", "f"]},
},
"required": ["location"],
},
},
}]

Запрос. Вопрос «Какая сегодня погода в Пекине?» (в оригинале — по-китайски) вместе с tools и tool_choice="auto". Авторы обращают внимание: полезная часть ответа — параметры вызова (город «Пекин» и единицы) и имя функции; сам по себе ответ ещё не даёт погоды. Функцию нужно выполнить программно и вернуть результат модели.

Выполнение и ответ. В ноутбуке get_current_weather реализована через API сервиса погоды Seniverse, затем результат добавляется в messages с ролью tool, и модель вызывается второй раз. Итоговая последовательность, как её формулируют авторы:

запрос пользователя (и инструменты) → модель выдаёт имя инструмента и параметры → инструмент выполняется → результат возвращается модели → модель обобщает и отвечает пользователю.

Вторая часть ноутбука — встроенный веб-поиск GLM-4 API: он включён по умолчанию и отключается, если передать {"type": "web_search", "web_search": {"enable": False}} или любой другой инструмент. Авторы честно предупреждают: на тот момент поиск GLM-4 API «не очень силён», и для реальных задач советуют профессиональный поисковый API.

Главный практический вывод кукбука для нас — переключение провайдера одной строкой конфигурации:

from openai import OpenAI
import os
PROVIDERS = {
# адрес и пример имени модели — сверяйте актуальные имена в документации каждого провайдера
"glm": ("https://open.bigmodel.cn/api/paas/v4/", os.getenv("ZHIPU_API_KEY"), "glm-4.5"),
"local": ("http://localhost:8000/v1", "EMPTY", "Qwen/Qwen3-8B"),
"ollama": ("http://localhost:11434/v1", "EMPTY", "qwen3:8b"),
}
def ask(provider: str, question: str) -> str:
base_url, key, model = PROVIDERS[provider]
client = OpenAI(base_url=base_url, api_key=key)
r = client.chat.completions.create(model=model, messages=[{"role": "user", "content": question}])
return r.choices[0].message.content
for p in ["local", "ollama"]: # добавьте "glm", когда получите ключ
print(p, "→", ask(p, "Назови три китайские языковые модели одной строкой.")[:200])

Добавьте в словарь DeepSeek и Qwen из облака (адреса — в уроке 8.1.1) и сравните на одном вопросе скорость, длину ответа и стоимость (поле usage).

  • demo/glm_sdg_example_*.ipynb — генерация синтетических данных большой моделью: тот же приём, что «дистилляция» в курсе Alibaba ACP и в уроке 6.4.4.
  • demo/graphrag/ — GraphRAG от Microsoft на GLM: строит граф знаний по тексту и отвечает по нему (урок 8.2.2).
  • demo/generate_agent_dataset/ — как собрать датасет траекторий ReAct для дообучения агента (урок 8.3.4).
  • basic/glm_batch_api.ipynb — Batch API: отправить тысячу запросов файлом JSONL и забрать результаты позже, дешевле обычных вызовов.
EnglishРусский
ZhipuZhipu (Чжипу)
function call / tool callвызов функций / инструментов
web searchпоиск в интернете
batch APIпакетная обработка
synthetic data generation (SDG)синтетические данные
knowledge baseбаза знаний