Индекс документации
Получите полный индекс документации по адресу: https://docs.aihubmix.com/llms.txt
Используйте этот файл, чтобы узнать обо всех доступных страницах перед дальнейшим изучением.
Июль 2026 года, руководство по Kimi K3: максимальное усилие рассуждения, история мышления, динамическая загрузка инструментов, структурированный вывод, автоматическое кэширование, частичный префикс и визуальные входные данные.

В этой статье рассматриваются новые параметры и примечания по использованию Kimi K3. На AIHubMix K3 доступен через API Chat Completions, Responses и Claude-compatible Messages. См. также: официальная документация платформы 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"}`. ❗ **Официальная конечная точка Messages Kimi K3 (совместимая с 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":"Париж"}
```
❗ **Официальная конечная точка Messages Kimi K3 (совместимая с 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 сообщений, совместимый с Claude (/v1/messages).
Можно ли отключить мышление или уменьшить его уровень?
Нет. Мышление K3 включено по умолчанию, и reasoning_effort поддерживает только один уровень "max".
Почему reasoning_content должно передаваться обратно в многоходовых разговорах?
K3 обучен с сохранением мышления; Moonshot требует, чтобы предыдущее сообщение помощника передавалось полностью и без изменений. Отсутствие истории мышления приводит к нестабильному качеству вывода.
Каковы ограничения на параметр stop?
Максимум 5 последовательностей остановки, каждая не длиннее 32 байт; превышение любого из этих ограничений возвращает ошибку 400.
Поддерживает ли API сообщений структурированный вывод?
❗ Нет. Официальная конечная точка сообщений Kimi K3 (совместимая с Anthropic) без предупреждения игнорирует поля структурированного вывода (возвращая 200 с произвольным текстом и без ошибок). Для структурированного вывода используйте response_format в Chat Completions или text.format в Responses.
Почему одиночные запросы K3 занимают так много времени?
Мышление K3 фиксировано на максимальном уровне, и токены мышления составляют значительную долю в сложных задачах (73% токенов завершения в измеренном случае). Установите таймауты клиента на минуты или дольше и используйте потоковую передачу.
Для получения информации о ценах и статусе в реальном времени смотрите страницу модели Kimi K3; для получения информации о других моделях посетите галерею моделей.
Последнее обновление: 2026-07-17