MoonshotAI: Kimi K3 (batch)
Kimi K3 — изначально мультимодальная модель рассуждения Moonshot AI для длинных задач программирования и работы со знаниями. Она читает текст, изображения и видео, создаёт текст и поддерживает процессы с инструментами, контекстом 1 048 576 токенов и сохранённой историей размышления между шагами.
О модели
Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.
Kimi K3 — мультимодальная агентная модель Moonshot AI с открытыми весами для длительных задач программирования, работы со знаниями и рассуждения. Она сочетает текст с родным пониманием изображений и видео и создаёт текстовый ответ или запрос инструмента. Разработчик подчёркивает продолжительные инженерные сеансы, большие репозитории и задачи, использующие снимки экрана или визуальную обратную связь вместе с кодом. Полезное задание определяет желаемый материал, свидетельства для использования и условие завершения работы.
Архитектура и длинный контекст
Карточка модели описывает разреженную смесь экспертов с 2,8 трлн параметров всего и 104 млрд активируемых параметров. Её устройство Stable LatentMoE выбирает 16 из 896 экспертов на токен, используя Kimi Delta Attention и Attention Residuals вместе с вниманием с управляющими вентилями. Точная длина контекста — 1 048 576 токенов. Это место для значительного контекста задачи, а не причина отбрасывать границы источников или пространство для результата.
Опубликованный родной артефакт использует обучение с учётом квантования с весами MXFP4 и активациями MXFP8. Это формат выпуска разработчика, отличный от отдельно предоставленной квантованной редакции или утверждения о способе обслуживания модели конкретным маршрутом. Открытые веса и большое число параметров не превращают показатель активных параметров в полный объём хранения или требования к оборудованию.
Подготовка существенной задачи программирования
Передайте нужные материалы репозитория, существующее поведение, запрошенное изменение и ограничения совместимости. Укажите файлы или интерфейс, которые результат должен затронуть, проверки успеха и любую переданную ошибку или вход, выявляющие проблему. Полезным результатом может быть целевое изменение кода с объяснением и свидетельствами фактически выполненных проверок, а не описание действий, которые никогда не выполнялись.
Для визуальной задачи разработки включите снимок экрана или ясное изображение желаемого результата с нужным кодом и конкретным расхождением. Разработчик описывает процессы фронтенда, игр и CAD с визуальной обратной связью. Запрашивайте изменение, связывающее код с наблюдаемым результатом, и сохраняйте эталон, чтобы готовый материал можно было по нему проверить.
Подготовка изображений, видео и работы со знаниями
Быстрый старт разработчика использует типизированные объекты содержимого для визуальных сообщений; content — массив, а не сериализованное представление массива. Процесс изображений использует закодированные данные изображения или поддерживаемую ссылку на файл, а не публичный адрес изображения. Пример видео загружает видеофайл и передаёт полученную ссылку с вопросом о содержимом. Давайте читаемый источник и указывайте важное наблюдение, интервал или связь. Визуальный процесс разработчика принимает изображения JPEG, PNG, GIF, WebP, BMP, HEIC и HEIF и видео MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV и 3GPP. Анимированные GIF или WebP могут декодироваться как видео. Исходник SVG передавайте как текст. Разработчик рекомендует изображения до 4096 × 2160 и видео до 1920 × 1080; это рекомендации разрешения, а не пороги отклонения. Удерживайте тело запроса в документированном размере 100M и загружайте крупные или повторно используемые медиа как файлы.
Для исследования с большим объёмом документов подпишите источники и задайте вопросы итогового отчёта. Для объяснения видео укажите события или последовательность для анализа, а не просите неограниченные комментарии. K3 использует визуальное содержимое как свидетельство для рассуждения и возвращает текст или запросы инструментов. Приложение может передать эти запросы медиаинструментам для создания отдельных изображений или видео.
Размышление всегда включено
Интерфейс K3 разработчика всегда включает размышление. Параметр верхнего уровня reasoning_effort принимает low, high и max, с max по умолчанию. Эти варианты специфичны для модели; нельзя предполагать режим без размышления или значение уровня из другого семейства. Руководство разработчика по миграции отличает K3 от K2.x использованием reasoning_effort вместо переноса старой конфигурации thinking.
Разработчик документирует отдельные reasoning_content и content итогового ответа в потоковых результатах. Для многошагового диалога или процесса инструментов он требует возвращать полное полученное сообщение ассистента без изменений, включая reasoning_content и tool_calls. Сохранение только видимого итогового ответа теряет информацию, которую процесс сохранённого размышления модели ожидает на следующем шаге.
Структурированные итоговые ответы и частичное продолжение
Быстрый старт документирует строгий вывод по схеме JSON для содержимого итогового сообщения. Определяйте поля и их значения под материал, нужный приложению, и разбирайте это итоговое содержимое, а не объединяйте его с полем рассуждения. Структурированный результат может представлять извлечённую информацию переданного материала или заданный формат отчёта; схема ограничивает форму, а свидетельства источника определяют правильность значений.
Режим partial может продолжить переданный текстовый префикс. Пример разработчика ставит частичное сообщение ассистента в конец истории и объединяет префикс с возвращённым продолжением для показа. Используйте это, когда нужный материал имеет значимое фиксированное начало, сохраняя отличие префикса от сгенерированного остатка.
Инструменты и непрерывность их результатов
K3 поддерживает пользовательские функции-инструменты. Пример разработчика требует инструмент на первом ходе, сохраняет полное сообщение ассистента, выполняет каждый возвращённый вызов и добавляет соответствующий результат инструмента до запроса итогового ответа. Предложенный вызов не доказывает успех операции; фактический возвращённый результат становится свидетельством следующего шага.
Процесс динамической загрузки вводит полное определение инструмента в конкретной точке истории сообщений. Определению нужны имя, назначение и параметры, и оно должно оставаться в последующей истории, поскольку сервер не сохраняет декларацию независимо. Сохраняйте связи возможностей инструментов, переданных аргументов и реальных наблюдений, чтобы длинная задача продолжалась с уже выполненной работы.
Управление выводом и повторный контекст
Разработчик документирует лимит завершения по умолчанию 131 072 токена с настройкой до 1 048 576 в пределах общего контекста модели. Текущий API K3 фиксирует temperature на 1.0, top_p на 0.95, один результат и нулевые штрафы presence и frequency, предписывая вызывающим сторонам опускать эти настройки сэмплирования. Это настройки точного варианта разработчика, а не переносимый список регулируемых параметров.
Кэширование контекста автоматически работает для подходящих повторных префиксов, с документированными вариантами TTL 5 минут и 1 час и 5 минутами по умолчанию. Частичные блоки кэша остаются промахами. Сохраняйте повторно используемый контекст стабильным и проверяйте фактическое использование, а не утверждайте попадание в кэш по одному повтору текста. Для итогового материала сохраняйте переданные источники, фактические свидетельства инструментов и обязательную структуру вывода и проверяйте соответствие длинного ответа или инженерного результата заданным критериям завершения.
Ailoot Ultra · Пакетная обработка POST /v1/batches moonshotai/kimi-k3:batch
moonshotai/kimi-k3:batchНачало
Kimi K3 — изначально мультимодальная модель рассуждения Moonshot AI для длинных задач программирования и работы со знаниями. Она читает текст, изображения и видео, создаёт текст и поддерживает процессы с инструментами, контекстом 1 048 576 токенов и сохранённой историей размышления между шагами.
- Допустимые входные данные
- Текст
- Результаты
- Текст
Доступно в Ailoot · входные данные и методы
Ailoot Ultra · Пакетная обработка POST /v1/batches
- Входные данные
text- Результат
text- Выходной формат
- Встроенный JSON results[].response.body
| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
|---|---|---|---|---|
Полеendpoint | Типstring | ТребованиеОбязательно | Значения и ограничения /v1/chat/completions | По умолчанию— |
Полеmodel | Типstring | ТребованиеОбязательно | Значения и ограничения moonshotai/kimi-k3:batch | По умолчанию— |
Полеrequests | Типbatch_item[] | ТребованиеОбязательно | Значения и ограничения Минимум элементов: 1 | По умолчанию— |
Полеrequests[].custom_id | Типstring | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
Полеrequests[].body.messages | Типmessage[] | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
Полеcompletion_window | Типstring | ТребованиеНеобязательно | Значения и ограничения 24h | По умолчанию— |
Полеprovider | Типobject|null | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
Полеrequests[].body.model | Типstring | ТребованиеНеобязательно | Значения и ограничения moonshotai/kimi-k3:batch, moonshotai/kimi-k3 | По умолчанию— |
Полеprovider.only | Типstring[] | ТребованиеНеобязательно | Значения и ограничения deepinfra/bf16 | По умолчанию— |
Полеprovider.allow_fallbacks | Типboolean|null | ТребованиеНеобязательно | Значения и ограничения false, null | По умолчанию— |
Параметры и жизненный цикл метода
| Параметр | Контракт |
|---|---|
Параметрcontent_type | Контрактapplication/json |
Параметрrequired | Контрактendpoint, model, requests |
Параметрmaterial_types | Контрактtext |
Параметрrepresentation | КонтрактВстроенный массив requests[]; у каждого элемента есть custom_id и body |
Параметрrequest_endpoint_profile | Контракт/v1/chat/completions |
Параметрfile_material | КонтрактВызывающая сторона может локально прочитать фактический JSONL в UTF-8 и поместить его в requests[]. Назначение загрузки, input_file_id и ссылка на файл не используются. Отсутствующий или пустой материал клиента останавливает подготовку до POST. |
Параметрserialization_order | Контрактendpoint, model, provider (если указан), completion_window (если указан), requests — последним |
Параметрoptional_controls | Контрактprovider.only, provider.allow_fallbacks, completion_window |
Параметрschema_scope | КонтрактТела текстовых запросов Chat Completions в документированной встроенной оболочке Batch. |
Жизненный цикл: asynchronous
GET /v1/batches/{operation_id} · Фактический response.id исходного ответа на создание; тот же пользователь, ключ и группа
Тарифы
Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.
- Быстрый режим
- Не указано При выборе быстрого режима
- Режим flex
- Не указано При выборе режима flex
- Максимальная интенсивность рассуждений
- Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)
- Цены явного кэширования
- Не включено Когда запрошено явное кэширование
Ставки Ailoot
Цены по конфигурациям
Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.
| Конфигурация | Шкала ставок | Токенов контекста больше | Токенов контекста не более, включительно | Плата |
|---|---|---|---|---|
| КонфигурацияБазовые ставки за токены | Шкала ставокБазовая ставка | Токенов контекста больше— | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены $0.00456 / 1K токенов Выход · Выходные токены $0.0228 / 1K токенов Вход · Чтение кэша $0.000456 / 1K токенов Вход · Запись в кэш — / 1K токенов Вход · Запись в кэш, 1 час — / 1K токенов |
| КонфигурацияУровень 1 по длине запроса | Шкала ставок— | Токенов контекста больше0 | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены $0.00456 / 1K токенов Выход · Выходные токены $0.0228 / 1K токенов Вход · Чтение кэша $0.000456 / 1K токенов Вход · Запись в кэш — / 1K токенов Вход · Запись в кэш, 1 час — / 1K токенов |
Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →
Примеры запросов
Ailoot Ultra · Пакетная обработка
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"moonshotai/kimi-k3:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['moonshotai/kimi-k3:batch', 'moonshotai/kimi-k3']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"moonshotai/kimi-k3:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Получить и сохранить результаты
Ailoot Ultra · Пакетная обработка
Встроенный JSON results[].response.body
GET /v1/batches/{operation_id}
Проверить статус задачи
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Сохраняйте все готовые результаты
Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.
Сохраняйте полный исходный JSON статуса, каждый результат и custom_id, а также полное тело ответа или ошибки. Сохраняйте завершённые results[] как JSONL без фильтрации.
Если нужно проверить исходный ответ
Сохраните исходный ID операции. Ответ 503 result_pending_check содержит X-Should-Retry:false; никогда не отправляйте повторно исходный пакет с неизвестным результатом.
Поля ответа
| Поле | Тип |
|---|---|
Полеresults[].custom_id | Типstring |
Полеresults[].response.body.choices[].message.content | Типstring|null |
Полеresults[].error | Типobject|null |
Полеusage | Типobject|null |
Полеid | Типstring |
Полеmodel | Типstring |
Полеendpoint | Типstring |
Полеstatus | Типstring |
Полеrequest_counts | Типobject |
Полеresults[].id | Типstring |
Полеresults[].response.status_code | Типinteger |
Полеresults[].response.request_id | Типstring |
Ошибки и дальнейшие шаги
| Ответ | Условие | Следующий шаг |
|---|---|---|
Ответ400 · invalid_request_error | УсловиеНеверный формат документированной встроенной оболочки, повторяющиеся ключи, ошибки идентификации элементов или конфликт настроенных возможностей модели. | Следующий шагИсправьте указанные поля перед любой новой отправкой. |
Ответ401 · authentication_error | УсловиеНедействительный ключ API. | Следующий шагИспользуйте разрешённый ключ Ailoot. |
Ответ403 · permission_error | УсловиеГруппа пакетной обработки недоступна. | Следующий шагПроверьте права доступа ключа и группы. |
Ответ422 · invalid_request_error | УсловиеПакетная обработка оплачивается с баланса; создание по подписке отклоняется. | Следующий шагИспользуйте разрешённую группу с оплатой с баланса. |
Ответ422 · price_unavailable | УсловиеСтоимость входных данных пакета невозможно рассчитать. | Следующий шагСохраните ответ; используйте документированный формат входных данных для этого семейства. |
Ответ402 · billing_error | УсловиеРезерв для пакетной обработки недоступен. | Следующий шагУстраните причину отказа в допуске перед новым запросом. |
Ответ503 · price_unavailable | УсловиеЦена метода пакетной обработки или нативные тарифы недоступны. | Следующий шагСохраните ответ; не подменяйте цены. |
Ответ503 · api_error | УсловиеТочный маршрут поставщика недоступен. | Следующий шагСохраните ответ для исправления маршрута. |
Ответ503 · result_pending_check | УсловиеИсходный результат требует проверки; X-Should-Retry:false. | Следующий шагСохраните исходный operation_id/id и читайте его статус; никогда не повторяйте исходный POST. |
Ответ404 · not_found | УсловиеОперация проверки статуса пакета отсутствует или принадлежит другой учётной записи. | Следующий шагИспользуйте точный исходный id и того же пользователя, ключ и группу. |
Псевдонимы
Псевдонимы моделей
Ailoot Ultra moonshotai/kimi-k3:batch
Псевдонимы путей метода
Используйте пути методов, указанные выше.
Связанные ID для вызова
FAQ · MoonshotAI: Kimi K3 (batch)
- Какие входные данные и результаты доступны?
POST /v1/batches·moonshotai/kimi-k3:batch:text→text- Какие поля использует запрос?
POST /v1/batches·moonshotai/kimi-k3:batch:endpoint,model,requests,completion_window,provider- Какие ограничения действуют?
POST /v1/batches·moonshotai/kimi-k3:batch:requests.min_items:1