> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# GLM Chat Completion API заявка та використання

> GLM API guide - Ace Data Cloud

GLM (General Language Model) — це нове покоління серії великих мовних моделей, представлене компанією Zhipu AI (智谱 AI / Z.ai), яке має потужні можливості розуміння та генерації як китайською, так і англійською мовами. У китайських сценаріях, генерації коду, міркуванні та багатократних діалогах нові моделі, такі як GLM-5.3, GLM-5.2, GLM-4.7, демонструють відмінні результати. Нове покоління моделей значно оптимізоване для роботи з довгими контекстами, викликами інструментів та завданнями з коду, і може широко використовуватися в таких сферах, як інтелектуальні запитання та відповіді, створення контенту, допомога в кодуванні, чат-боти тощо.

Цей документ в основному описує процес використання GLM Chat Completion API, за допомогою якого ви можете легко викликати серію моделей GLM через єдиний інтерфейс, сумісний з OpenAI.

## Процес заявки

Щоб використовувати GLM Chat Completion API, спочатку перейдіть до [консолі Ace Data Cloud](https://platform.acedata.cloud/console/applications) для отримання вашого API Token, зберігайте його для подальшого використання.

![](https://cdn.acedata.cloud/dvc3cg.jpg)

Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, де ви зможете зареєструватися та увійти. Після завершення ви будете автоматично повернені на цю сторінку.

**Один API Token дозволяє викликати всі послуги платформи, не потрібно окремо подавати заявку на кожну послугу.** Перший запит на отримання токена надає безкоштовний ліміт, щоб ви могли безкоштовно протестувати; якщо ліміт вичерпано, ви можете поповнити загальний баланс на [консолі](https://platform.acedata.cloud/console/coin).

> 📘 Повна документація: [GLM Chat Completion API →](https://platform.acedata.cloud/documents/glm-chat-completions)

## Основне використання

Запит до GLM Chat Completion API має адресу `https://api.acedata.cloud/glm/chat/completions`, використовується авторизація Bearer Token, тіло запиту сумісне з протоколом OpenAI Chat Completions.

При першому використанні цього інтерфейсу нам потрібно заповнити принаймні три поля:

* `authorization`: просто виберіть Bearer Token зі спадного списку.
* `model`: виберіть модель GLM, яку ви хочете викликати, наразі підтримуються такі моделі:
  * `glm-5.3`: новітня флагманська модель, підтримує 1M контексту та максимальний вихід 128K, підходить для складних міркувань, коду та завдань Agent. Міркування завжди активне, ви можете вибрати `reasoning_effort` як `low`, `high` або `max`.
  * `glm-5.2`: попередня флагманська модель, має сильні загальні можливості.
  * `glm-5.1`: зріла флагманська модель, підходить для загальних складних завдань.
  * `glm-4.7`: демонструє відмінні результати в міркуванні, викликах інструментів та завданнях з коду.
  * `glm-4.6`: універсальна діалогова модель, що балансує ефективність та вартість.
  * `glm-3-turbo`: класична діалогова модель, підходить для загальних завдань генерації тексту.
* `messages`: масив підказок, кожне повідомлення містить `role` та `content`, `role` підтримує три ролі: `user`, `assistant`, `system`.

Звичайні необов'язкові параметри:

* `max_tokens`: обмеження на максимальну кількість токенів у відповіді.
* `temperature`: випадковість генерації, від 0 до 2, чим більше значення, тим більше розсіювання.
* `top_p`: параметр ядерного вибірки, контролює поріг накопичувальної ймовірності кандидатів токенів.
* `n`: скільки кандидатних відповідей генерувати за один раз.
* `stream`: чи активувати потокову відповідь, за замовчуванням `false`.
* `stop`: користувацька послідовність зупинки.

Ось найпростіший приклад виклику на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/glm/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "glm-5.2",
    "messages": [
        {"role": "user", "content": "hello"}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Після виклику ми отримали наступний результат:

```json theme={null}
{
  "id": "msg_202604262252030313862701a04e33",
  "model": "glm-5.2",
  "object": "chat.completion",
  "created": 1777215124,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! 👋 How can I assist you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 23,
    "total_tokens": 33
  }
}
```

Основні поля у повернутому результаті пояснюються наступним чином:

* `id`: унікальний ID цього діалогового завдання.
* `created`: час створення цього діалогового завдання (Unix timestamp, секунди).
* `model`: назва фактично викликаної моделі GLM.
* `choices`: список відповідей, згенерованих моделлю. `choices[i].message.content` — це конкретний текст відповіді моделі, `finish_reason` вказує причину завершення (наприклад, `stop`, `length`, `tool_calls`, `content_filter` тощо).
* `usage`: статистика використання токенів для цього запиту, включаючи `prompt_tokens`, `completion_tokens`, `total_tokens`.

## Потокова відповідь

Цей інтерфейс підтримує потокову відповідь (Server-Sent Events), що дуже корисно для веб-інтерфейсів, оскільки дозволяє реалізувати ефект поетапного відображення.

Якщо ви хочете отримати відповідь у потоковому режимі, просто встановіть параметр `stream` у тілі запиту на `true`.

Приклад коду виклику на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/glm/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "glm-4.7",
    "messages": [{"role": "user", "content": "hi"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers, stream=True)
for line in response.iter_lines():
    if line:
        print(line.decode("utf-8"))
```

Вихід виглядає наступним чином (вибірково):

```text theme={null}
data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [{"delta": {"content": "", "role": "assistant"}, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [{"delta": {"content": "Привіт! Чим я можу"}, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [{"delta": {"content": "допомогти вам"}, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [{"delta": {"content": "?"}, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [{"delta": {}, "finish_reason": "stop", "index": 0}], "usage": null}

data: {"id": "msg_2026042622521271f765bbc3734ce1", "object": "chat.completion.chunk", "created": 1777215133, "model": "glm-4.7", "choices": [], "usage": {"prompt_tokens": 1420, "completion_tokens": 18, "total_tokens": 1438}}

data: [DONE]
```

Можна побачити, що у відповіді є багато `data`, кожен `data` містить інкрементальний фрагмент. `choices[i].delta.content` є новим текстовим фрагментом, доданим до поточного chunk, ви можете з'єднати ці фрагменти, щоб сформувати повну відповідь. Коли вміст `data` дорівнює `[DONE]`, це означає, що потік відповіді закінчився. Останній chunk з `usage` підсумовує використання токенів для цього запиту.

Приклад на JavaScript (Node.js):

```javascript theme={null}
const options = {
  method: "POST",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    model: "glm-4.7",
    messages: [{ role: "user", content: "привіт" }],
    stream: true
  })
};

const response = await fetch("https://api.acedata.cloud/glm/chat/completions", options);
const reader = response.body.getReader();
const decoder = new TextDecoder("utf-8");
while (true) {
  const { value, done } = await reader.read();
  if (done) break;
  process.stdout.write(decoder.decode(value));
}
```

Приклад коду на Java:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "glm-4.7");
jsonObject.put("messages", new JSONArray().put(new JSONObject().put("role", "user").put("content", "привіт")));
jsonObject.put("stream", true);
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(jsonObject.toString(), mediaType);
Request request = new Request.Builder()
  .url("https://api.acedata.cloud/glm/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
```

Інші мови можна переписати самостійно, принцип однаковий.

## Багатократний діалог

Якщо ви хочете реалізувати функцію багатократного діалогу, потрібно послідовно додати історію діалогу в масив `messages`, зберігаючи чергування `user` та `assistant`.

Приклад виклику на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/glm/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "glm-4.7",
    "messages": [
        {"role": "user", "content": "Привіт"},
        {"role": "assistant", "content": "Привіт! Як я можу вам допомогти сьогодні?"},
        {"role": "user", "content": "Що я тільки що сказав?"}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Завантаживши кілька запитів, ви можете легко реалізувати багатократний діалог, отримавши таку відповідь:

```json theme={null}
{
  "id": "msg_20260426225208b95324e9945a48d3",
  "model": "glm-4.7",
  "object": "chat.completion",
  "created": 1777215128,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Ви сказали: **\"Привіт\"** 😊\n\nДайте знати, якщо вам потрібно щось інше!"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 48,
    "completion_tokens": 37,
    "total_tokens": 85
  }
}
```

Можна побачити, що інформація в `choices` узгоджується з основним використанням, модель надає відповідь на основі повної історії діалогу, що підтримує багатократну контекстну взаємодію.

## Системні підказки (System Prompt)

Можна додати повідомлення з `role` як `system` на початку `messages`, щоб обмежити роль, стиль або поведінку моделі:

```python theme={null}
payload = {
    "model": "glm-4.7",
    "messages": [
        {"role": "system", "content": "Ви досвідчений помічник з написання китайською мовою, будь ласка, відповідайте стисло та професійно."},
        {"role": "user", "content": "Будь ласка, розкажіть про модель GLM у трьох реченнях."}
    ]
}
```

## Виклик функцій (Function Calling)

Модель GLM підтримує виклик функцій, сумісний з OpenAI, ви можете оголосити функції, які можна викликати, через параметр `tools`, модель поверне структуровану інформацію про виклик функції в `choices[i].message.tool_calls`, коли це буде потрібно.

```python theme={null}
payload = {
    "model": "glm-4.7",
    "messages": [
        {"role": "user", "content": "Яка погода в Пекіні сьогодні?"}
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_weather",
                "description": "Перевірити погоду в зазначеному місті",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "city": {"type": "string", "description": "Назва міста"}
                    },
                    "required": ["city"]
                }
            }
        }
    ]
}
```

Якщо модель вирішить викликати інструмент, у повернутому результаті `finish_reason` зміниться на `tool_calls`, і в `message.tool_calls` буде вказано ім'я функції та параметри у формі JSON-рядка. Ви можете виконати цю функцію та повернути результат як повідомлення з `role` як `tool` назад до моделі, завершуючи повний цикл виклику інструменту.

## Рекомендації щодо вибору моделі

````
| Модель          | Сценарії використання                               |
| --------------- | ------------------------------------------------- |
| `glm-5.3`      | Останній флагман, 1M контексту, максимальний 128K виходу, рекомендовано для складного міркування, коду та завдань Agent |
| `glm-5.2`      | Попереднє покоління флагмана, підходить для складного міркування, коду та завдань Agent                    |
| `glm-5.1`      | Досвідчений флагман, підходить для складного міркування, аналізу довгих документів                            |
| `glm-4.7`      | Виклики інструментів, генерація коду, оркестрація Agent тощо                        |
| `glm-4.6`      | Універсальний вибір для діалогу, створення контенту                               |
| `glm-3-turbo`  | Загальні завдання генерації тексту, чутливі до витрат сценарії                            |

## Обробка помилок

При виклику API, якщо виникає помилка, API поверне відповідний код помилки та інформацію. Наприклад:

- `400 token_mismatched` : Відсутні або недійсні параметри запиту.
- `400 api_not_implemented` : Використано непідтримувані параметри або модель.
- `401 invalid_token` : Неавторизовано, відсутній або недійсний Bearer Token.
- `429 too_many_requests` : Перевищено ліміт частоти, будь ласка, спробуйте пізніше.
- `500 api_error` : Внутрішня помилка сервера або тимчасова недоступність верхнього рівня.

### Приклад відповіді на помилку

```json
&#123;
  "trace_id": "69ea9bcf-c5da-41a3-be97-c80912a08523",
  "error": &#123;
    "code": "api_error",
    "message": "Служба тимчасово недоступна, будь ласка, спробуйте пізніше."
  &#125;
&#125;
````

Коли повертається `api_error` і повідомлення `Служба тимчасово недоступна, будь ласка, спробуйте пізніше.`, це зазвичай означає, що верхній рівень GLM служби тимчасово недоступний, рекомендується використовувати експоненціальне повторення спроб, або переключитися на іншу доступну модель GLM (наприклад, тимчасово переключитися з `glm-5.1` на `glm-4.7` або `glm-4.6`).

## Висновок

Завдяки цьому документу, ви дізналися, як використовувати GLM Chat Completion API для виклику моделей серії GLM від Zhizhu AI, включаючи базові виклики, потокові відповіді, багатократні діалоги, системні підказки та виклики інструментів. Сподіваємося, що цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, звертайтеся до нашої команди технічної підтримки.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.