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

Ця стаття охоплює нові параметри та примітки щодо використання 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