Посібник з Kimi K3: нові параметри та матриця підтримки API

29 лип. 2026 р. · AIHubMix · 9 min read

Посібник з Kimi K3: нові параметри та матриця підтримки API
Індекс документації
Отримайте повний індекс документації за адресою: https://docs.aihubmix.com/llms.txt
Використовуйте цей файл, щоб дізнатися про всі доступні сторінки перед подальшим дослідженням.

Липень 2026 року Посібник Kimi K3: максимальний рівень reasoning_effort, історія думок, динамічне завантаження інструментів, структурований вихід, автоматичне кешування, частковий префікс та вхідні дані з зору.

Посібник Kimi K3: режим мислення, динамічне завантаження інструментів та кешування контексту
Ця стаття охоплює нові параметри та примітки щодо використання Kimi K3. На AIHubMix K3 доступний через API Chat Completions, Responses та Messages, сумісні з Claude. Дивіться також: Офіційна документація платформи Moonshot.

Висновки та приклади відповідей, що позначені як "Перевірені", у кожному розділі походять з фактичних викликів, зроблених 2026-07-17 через API AIHubMix (Chat Completions / Responses / Messages).

1. Специфікації моделі на перший погляд

Елемент Значення
Вікно контексту 1M токенів
Максимальний вихід max_completion_tokens за замовчуванням становить 131,072, до 1,048,576
Вхідні модальності Текст, зображення (для відео-входу дивіться офіційну документацію Moonshot)
Режим мислення Увімкнено за замовчуванням; reasoning_effort підтримує лише "max"
Секвенції зупинки stop дозволяє максимум 5 записів, кожен не довший за 32 байти
Перевірено: обидва обмеження stop перевірені, і перевищення будь-якого з них повертає 400; API Messages застосовує таку ж перевірку до stop_sequences.

Коли досягається секвенція зупинки, API Messages не дотримується семантики Anthropic: під час тестування stop_reason є "end_turn" (а не "stop_sequence"), stop_sequence є null, а видимий текст перед словом зупинки може бути порожнім. Клієнти, які покладаються на ці два поля для виявлення обрізки, повинні звернути на це увагу.
# зупинка з 6 записами / запис на 33 байти -> HTTP 400
"Неправильний запит: масив зупинки занадто довгий. Очікував масив з максимальною довжиною 5, але отримав масив з довжиною 6 замість"
"Неправильний запит: секвенція зупинки не повинна бути довшою за 32, але отримала 33 замість"

2. Режим мислення: reasoning_effort підтримує лише max

Мислення K3 увімкнено за замовчуванням, і reasoning_effort підтримує лише один рівень: "max".

Багатоповторні розмови повинні передавати історію думок вербально: відповідно до офіційної документації Moonshot, K3 навчено з збереженим мисленням, тому в багатоповторних розмовах попереднє повідомлення асистента повинно бути передано цілком і без змін (включаючи зміст мислення). Відсутність історії думок призводить до нестабільної якості виходу. Якщо ви використовуєте фреймворк управління сесіями або проксі-слой, підтверджуйте, що зміст мислення передається без обрізки.

Зміст мислення повертається в полі `reasoning_content` відповіді; в багатоповторних розмовах передавайте попереднє повідомлення асистента (включаючи `reasoning_content`) вербально.

```text theme={null}
from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

completion = client.chat.completions.create(
    model="kimi-k3",
    reasoning_effort="max",
    messages=[
        {"role": "user", "content": "Слимака на дні 10-метрового колодязя. Щодня він піднімається на 3 метри, але щоночі сповзає назад на 2 метри. Скільки днів йому потрібно, щоб досягти верху?"}
    ],
)

print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)
```

```text theme={null}
# Багатоповторні: передайте попереднє повідомлення асистента вербально
messages = [
    {"role": "user", "content": "Яка столиця Франції?"},
    {"role": "assistant", "content": "Париж.", "reasoning_content": "<reasoning_content з попередньої відповіді>"},
    {"role": "user", "content": "А яка його населення?"},
]
```

> **Перевірено**: відповідь повертає `reasoning_content`; після передачі попереднього повідомлення асистента (включаючи `reasoning_content`) вербально, наступні повороти відповідають нормально.

Зміст мислення повертається як елемент виходу `reasoning`; в багатоповторних розмовах додайте вихідні елементи попереднього повороту (`reasoning` + `message`) назад у `input` вербально.

```text theme={null}
from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

response = client.responses.create(
    model="kimi-k3",
    input="Відповідайте одним словом: столиця Франції",
)

# Спостережені типи виходу response.output: ["reasoning", "message"]; текст: "Париж"
# Багатоповторні: input = [перше повідомлення користувача] + response.output + [наступне повідомлення користувача]
# Спостережена відповідь другого повороту з переданими вихідними елементами: "Берлін"
```

Зміст мислення повертається як рідний зміст блоків `thinking`; в багатоповторних розмовах передавайте попередні блоки змісту асистента (включаючи блоки мислення) вербально.

```text theme={null}
from anthropic import Anthropic

client = Anthropic(
    api_key="<AIHUBMIX_API_KEY>",
    base_url="https://aihubmix.com"
)

response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Відповідайте одним словом: столиця Франції"}
    ],
)

# Спостережені типи блоків response.content: ["thinking", "text"]; текст: "Париж"
# Багатоповторні: передайте response.content вербально як повідомлення асистента
```

3. Параметри вибірки зафіксовані

Параметри вибірки K3 зафіксовані постачальником: temperature 1.0, top_p 0.95, n 1, і presence_penalty / frequency_penalty 0. Офіційна рекомендація полягає в тому, щоб не включати ці параметри в запити.

Примітка: зафіксовані значення вибірки є частиною офіційної специфікації і не можуть бути перевірені за сигналами відповіді; дотримуйтесь офіційної рекомендації та не включайте ці параметри.

4. Виклик інструментів та динамічне завантаження інструментів

tools підтримує до 128 інструментів; tool_choice підтримує примусове та вимкнене виклики інструментів. K3 також підтримує динамічне завантаження інструментів: впровадження нових інструментів під час розмови через поле tools системного повідомлення (форма повідомлення, специфічна для API Chat).

`tool_choice` підтримує `auto` / `none` / `required`; `required` примушує модель викликати інструмент. Динамічне завантаження інструментів: системне повідомлення, що впроваджує інструмент, не містить `content`, впроваджені інструменти діють для наступних поворотів, і повідомлення повинно бути включене знову в кожен запит.

```text theme={null}
messages = [
    {"role": "system", "content": "Ви корисний асистент."},
    {"role": "user", "content": "Привіт."},
    {"role": "assistant", "content": "Привіт, чим можу вам допомогти?"},
    # Впровадження нового інструмента під час розмови: лише поле tools, без контенту
    {
        "role": "system",
        "tools": [
            {
                "type": "function",
                "function": {
                    "name": "get_time",
                    "description": "Отримати поточний час",
                    "parameters": {"type": "object", "properties": {}},
                },
            }
        ],
    },
    {"role": "user", "content": "Скільки зараз часу?"},
]
```

```text theme={null}
# tool_choice="required" з підказкою "Привіт" -> модель примушена викликати інструмент
"finish_reason": "tool_calls",
"tool_calls": [{"function": {"name": "get_weather", "arguments": "{\"city\":\"New York\"}"}}]
```

> **Перевірено**: `tool_choice: "required"` примушує виклик інструмента навіть для не пов'язаних підказок; `"none"` пригнічує виклики інструментів; інструменти, впроваджені під час розмови через системне повідомлення без `content`, можуть викликатися нормально.

Визначення інструментів використовують плоску структуру (`name` на верхньому рівні); примусове виклик також використовує `tool_choice: "required"`, а виклики повертаються як елементи виходу `function_call`. Підтримка динамічного завантаження інструментів в процесі; наразі оголосіть усі інструменти в верхньому параметрі `tools`.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input="Привіт",
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Отримати погоду для міста",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice="required",
)

# Спостережений вихід містить: {"type": "function_call", "name": "get_weather", "arguments": "{\"city\":\"London\"}"}
```

Інструменти використовують формат Anthropic (`input_schema`); примусіть виклик з `tool_choice: {"type": "any"}` і вимкніть виклики з `{"type": "none"}`. ❗ **Офіційна точка доступу Kimi K3 Messages (сумісна з Anthropic) не підтримує динамічне завантаження інструментів**: під час тестування впроваджене повідомлення повертає 200, але впроваджений інструмент не має ефекту (модель не може його викликати). Оголосіть усі інструменти в верхньому параметрі `tools`.

```text theme={null}
response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    tools=[{
        "name": "get_weather",
        "description": "Отримати погоду для міста",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice={"type": "any"},
    messages=[{"role": "user", "content": "Привіт"}],
)

# Спостережено: stop_reason "tool_use"; контент містить блок tool_use, що викликає get_weather
```

5. Структурований вихід

Структурований вихід змушує модель повертати контент, який строго відповідає заданій JSON-схемі.

`response_format` підтримує `json_schema` з режимом `strict`.

```text theme={null}
completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "user", "content": "Париж — столиця Франції. Витягніть назву міста."}
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "extract",
            "strict": True,
            "schema": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    },
)

# Спостережений контент відповіді: {"city":"Париж"}
```

> **Перевірено**: вихід є дійсним JSON, що відповідає схемі.

Структурований вихід оголошується через `text.format`.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input="Париж — столиця Франції. Витягніть назву міста.",
    text={
        "format": {
            "type": "json_schema",
            "name": "extract",
            "strict": True,
            "schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        }
    },
)

# Спостережений текст виходу: {"city":"Париж"}
```

❗ **Офіційна точка доступу Kimi K3 Messages (сумісна з Anthropic) не підтримує структурований вихід**: поля структурованого виходу тихо ігноруються — запит повертає HTTP 200 з текстом вільної форми, без помилки або повідомлення про резервне копіювання, а подальший JSON-аналіз зазнає невдачі. Коли вам потрібен структурований вихід, використовуйте API Chat Completions або Responses.

6. Автоматичне кешування контексту

Кешування контексту K3 увімкнено автоматично, без необхідності в параметрах. Коли повторюваний довгий префікс потрапляє в кеш, кількість попадань відображається в використанні (ім'я поля варіюється в залежності від API). Ціни на кешування вказані на сторінці моделі.

```text theme={null} # використання другого виклику з ідентичним довгим префіксом "prompt_tokens_details": {"cached_tokens": 1536} ```

> **Перевірено**: другий запит з ідентичним довгим префіксом повідомляє про попадання в `usage.prompt_tokens_details.cached_tokens`.

```text theme={null} # використання другого виклику Responses з ідентичними довгими інструкціями "input_tokens_details": {"cached_tokens": 1536} ``` ```text theme={null} # використання другого виклику Messages з ідентичним довгим системним запитом "cache_read_input_tokens": 1536 ```

7. Завершення часткового префікса partial

Завершення префікса змушує модель продовжувати генерувати з заданого префікса, що добре підходить для завершення коду та виходу з контрольованим форматом.

Передайте `"partial": true` в останньому повідомленні асистента.

```text theme={null}
messages = [
    {"role": "user", "content": "Напишіть хайку про море."},
    {"role": "assistant", "content": "Хвилі складаються в піну,", "partial": True},
]

# Префікс: "Хвилі складаються в піну,"  ->  продовження, повернуте моделлю
# сіль висить у повітрі—
# місяць тягне приплив додому.
```

> **Перевірено**: генерація продовжується з даного префікса без повторення його.

Передайте префікс як повідомлення асистента в кінці масиву `input`; параметр `partial` не потрібен.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input=[
        {"role": "user", "content": "Напишіть хайку про море."},
        {"role": "assistant", "content": "Хвилі складаються в піну,"},
    ],
)

# Спостережене продовження: "сіль висить у повітрі— / місяць тягне приплив додому."
```

Та ж можливість досягається за допомогою рідного заповнення асистента протоколу, без параметра `partial` — передайте префікс як останнє повідомлення асистента.

```text theme={null}
response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Напишіть хайку про море."},
        {"role": "assistant", "content": "Хвилі складаються в піну,"},
    ],
)

# Спостережене продовження: "сіль тягне крик мартинів— / приплив тягне ..."
```

8. Вхідні дані з зору

Зображення передаються у форматі base64; формат блоку контенту варіюється в залежності від API.

```text theme={null} messages = [ { "role": "user", "content": [ {"type": "text", "text": "Який домінуючий колір цього зображення? Одне слово."}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,"}}, ], } ]

# Спостережений контент відповіді: "Червоний"  (вхід: 64x64 суцільний червоний PNG)
```

> **Перевірено**: вхід зображення base64 працює, і модель правильно описує тестове зображення.

```text theme={null} input = [ { "role": "user", "content": [ {"type": "input_text", "text": "Який домінуючий колір цього зображення? Одне слово."}, {"type": "input_image", "image_url": "data:image/png;base64,"}, ], } ]

# Спостережений текст виходу: "Червоний"
```

```text theme={null} messages = [ { "role": "user", "content": [ {"type": "text", "text": "Який домінуючий колір цього зображення? Одне слово."}, {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": ""}}, ], } ]

# Спостережений текст відповіді: "Червоний"
```

9. Перевірене посилання: затримка та використання довгого завдання з одного виклику

Мислення K3 зафіксоване на максимальному рівні, тому одиничні запити для складних завдань займають значно більше часу, ніж на звичайних моделях. Виміряні дані з завдання генерації HTML гри з одного файлу (одна підказка з референсним зображенням, згенероване за один раз без ітерацій): одиничний запит зайняв 2,541 секунди (близько 42 хвилин), з 74,994 токенами завершення, з яких 54,486 (73%) були токенами мислення; фінальний вихід становив 1,275 рядків безпосередньо виконуваного коду, з finish_reason stop.

Рекомендації для клієнтів:

  • Встановіть тайм-аути клієнта на хвилини або більше, і віддавайте перевагу потоковій передачі для довгих завдань;
  • Залиште достатній запас у max_completion_tokens — у цьому випадку мислення само споживало 54,486 токенів.

10. Матриця підтримки можливостей × API

Кожна клітинка таблиці нижче була перевірена 2026-07-17 через фактичні виклики до виробничих API AIHubMix; кожна клітинка показує синтаксис параметра / поля для відповідного API.

Можливість Chat Completions Responses Messages
Зміст мислення у відповіді reasoning_content поле reasoning елемент виходу thinking блок контенту
Передача історії мислення назад ✅ повідомлення асистента передається вербально ✅ елементи виходу передаються вербально ✅ блоки контенту передаються вербально
Примус / вимкнення викликів інструментів tool_choice: "required" / "none" tool_choice: "required" {"type": "any"} / {"type": "none"}
Динамічне завантаження інструментів ✅ системне повідомлення з tools (без content) ➖ Підтримка в процесі ❗ Не підтримується на офіційній точці доступу Messages (сумісній з Anthropic)
Структурований вихід response_format (json_schema + strict) text.format (json_schema) ❗ Не підтримується на офіційній точці доступу; поля тихо ігноруються (200 + текст вільної форми) — використовуйте Chat / Responses замість цього
Автоматичне вимірювання попадань кешу usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens usage.cache_read_input_tokens
Завершення префікса "partial": true ✅ заповнення асистента ✅ заповнення асистента (рідний протокол)
Вхідні дані з зору image_url (base64) input_image (base64) image блок контенту (base64)
Секвенції зупинки stop (обмеження перевірені) ➖ Підтримка в процесі stop_sequences обмеження перевірені аналогічно, але при попаданні ні stop_reason: "stop_sequence", ні значення stop_sequence не повертається

Часті запитання

Які API підтримує K3 на AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses) та API Messages, сумісний з Claude (/v1/messages).

Чи можна вимкнути або знизити мислення?
Ні. Мислення K3 увімкнено за замовчуванням, і reasoning_effort підтримує лише один рівень "max".

Чому reasoning_content потрібно передавати назад у багатоповторних розмовах?
K3 навчено з збереженим мисленням; Moonshot вимагає, щоб попереднє повідомлення асистента передавалося цілком і без змін. Відсутність історії мислення призводить до нестабільної якості виходу.

Які обмеження на параметр stop?
Максимум 5 секвенцій зупинки, кожна не довша за 32 байти; перевищення будь-якого з обмежень повертає помилку 400.

Чи підтримує API Messages структурований вихід?
❗ Ні. Офіційна точка доступу Kimi K3 Messages (сумісна з Anthropic) тихо ігнорує поля структурованого виходу (повертаючи 200 з текстом вільної форми та без помилки). Для структурованого виходу використовуйте response_format на Chat Completions або text.format на Responses.

Чому одиничні запити K3 займають так багато часу?
Мислення K3 зафіксоване на максимальному рівні, і токени мислення складають велику частку при складних завданнях (73% токенів завершення у виміряному випадку). Встановіть тайм-аути клієнта на хвилини або більше та використовуйте потокову передачу.


Для цін та реального статусу дивіться сторінку моделі Kimi K3; для інших моделей відвідайте галерею моделей.

Останнє оновлення: 2026-07-17

More from the blog