Kimi K3: Быстрый старт для API-воркфлоу с длинным контекстом

Kimi K3: Быстрый старт для API-воркфлоу с длинным контекстом

Kimi K3 доступен через serverless API Novita AI с ID модели moonshotai/kimi-k3, совместимым с OpenAI эндпоинтом чата, окном контекста на 1 048 576 токенов и максимальным выходным лимитом в 1 048 576 токенов, указанным на странице модели. Это краткое руководство покажет, как аутентифицироваться, отправить первый запрос, разобрать ответ и спланировать ценообразование по токенам для Kimi K3, прежде чем подключать его к более крупному приложению.

Когда использовать это руководство

Используйте это руководство, когда хотите протестировать Kimi K3 из приложения, которое уже использует формат API OpenAI. Это практическая отправная точка для рабочих процессов с длинным контекстом в разработке ПО, анализе документов, исследованиях и рассуждениях, где запрос может содержать значительно больше контекста, чем типичный чат-промпт.

На странице модели Novita для Kimi K3 описана модель с 2,8 триллиона параметров, нативным пониманием изображений и окном контекста в 1 млн токенов. Там же указаны текстовые, графические и видеовходы с текстовым выходом, а также serverless-доступ, структурированный вывод, рассуждения и вызов функций. Воспринимайте это как возможности, которые нужно проверить на соответствие вашему предполагаемому формату запроса, а не как гарантию идентичного поведения каждой функции OpenAI SDK на всех моделях.

Это не сравнительный бенчмарк. Цель — получить один аутентифицированный рабочий запрос, а затем предоставить достаточно операционных деталей, чтобы решить, подходит ли Kimi K3 для вашей задачи.

Шаг 1: Получите API-ключ Novita

Создайте или выберите аккаунт Novita AI, откройте настройки API-ключей и создайте ключ для серверного использования. По возможности храните ключ вне фронтенд-сборок, публичных репозиториев, блокнотов, доступных за пределами вашей команды, и истории командной оболочки.

Установите ключ как переменную окружения перед запуском любого из примеров:

export NOVITA_API_KEY="your_api_key_here"

Используйте проектный или временный ключ, если это поддерживается настройками вашего аккаунта. Меняйте ключ после публичной демонстрации или любого подозрения на утечку.

Шаг 2: Подтвердите ID модели и эндпоинт

Держите детали подключения вместе, чтобы отображаемое имя случайно не заменило фактический идентификатор модели:

Поле Значение
ID модели moonshotai/kimi-k3
Базовый URL https://api.novita.ai/openai/v1
Эндпоинт завершения чата https://api.novita.ai/openai/v1/chat/completions
Окно контекста 1 048 576 токенов
Максимальный выходной лимит 1 048 576 токенов
Типы входных данных Текст, изображение, видео
Тип выходных данных Текст
Тип доступа Serverless API

Страница модели Kimi K3 является источником истины для доступности, текущих лимитов, возможностей и цен. Проверьте её снова перед развёртыванием, поскольку конфигурации и цены на модели могут меняться.

Шаг 3: Отправьте первый запрос

Начните с короткого текстового запроса. Небольшой промпт упрощает отделение проблем аутентификации или маршрутизации от проблем на уровне промпта приложения.

Например, попросите Kimi K3 вернуть короткий чек-лист реализации:

Перечислите три самых больших риска при добавлении повторных попыток к потоковому API-клиенту. Верните по одному предложению на каждый риск.

Первое значение max_tokens сделайте скромным. Большой лимит вывода полезен только после того, как базовый запрос, разбор ответа и обработка ошибок работают корректно.

Шаг 4: Прочитайте ответ

Ответ, совместимый с OpenAI, помещает текст ассистента в choices[0].message.content для стандартного не-стримингового завершения чата. Сохраняйте метаданные ответа и поля использования в вашем приложении, если вам нужна трассировка запросов или учёт затрат.

Для производственной интеграции записывайте как минимум:

  • ID модели и временную метку запроса.
  • ID запроса провайдера (если возвращается клиентом или в заголовках ответа).
  • Количество использованных токенов промпта и завершения.
  • Количество повторных попыток и HTTP-статус.
  • Было ли в запросе только текст или мультимодальное содержимое.

Как только первый вызов удастся, протестируйте промпты, похожие на вашу реальную нагрузку: длинные исходные файлы, несколько документов, схему инструмента или контракт структурированного ответа. Успешный короткий промпт подтверждает связь, а не качество для продакшена.

Шаг 5: Проверьте цены, лимиты и типичные ошибки

На странице модели Novita указаны serverless-цены для Kimi K3: $3 за миллион входных токенов, $0,30 за миллион кэшированных прочитанных токенов и $15 за миллион выходных токенов. Ваша оценка должна учитывать обе стороны запроса, повторные попытки и объём контекста, который вы отправляете повторно.

На той же странице указаны следующие уровни частоты запросов:

Уровень Запросов в минуту Токенов в минуту
T1 30 50 000 000
T2 100 50 000 000
T3 1 000 50 000 000
T4 3 000 50 000 000
T5 6 000 50 000 000

Применимый уровень зависит от вашего аккаунта. Не рассматривайте таблицу как обещание, что каждый проект начинается с T1 или что любая рабочая нагрузка может использовать максимальную отображаемую скорость.

Типичные ошибки при первой интеграции:

  • Отсутствие заголовка Authorization: Bearer или неправильная переменная окружения.
  • Отправка kimi-k3 или маркетингового названия вместо moonshotai/kimi-k3.
  • Использование https://api.novita.ai/openai в качестве базового URL SDK, когда клиент ожидает версионированный путь .../openai/v1.
  • Отправка тела запроса, не являющегося валидным JSON.
  • Установка лимита вывода, превышающего возможности вашего приложения по хранению или обработке.
  • Предположение, что мультимодальное тело запроса идентично во всех SDK или семействах моделей.

Пример на Python

Установите клиент OpenAI Python в вашем окружении, затем запустите этот пример с установленной NOVITA_API_KEY:

pip install openai
import os

from openai import OpenAI


client = OpenAI(
    api_key=os.environ["NOVITA_API_KEY"],
    base_url="https://api.novita.ai/openai/v1",
)

response = client.chat.completions.create(
    model="moonshotai/kimi-k3",
    messages=[
        {
            "role": "system",
            "content": "You are a concise engineering assistant.",
        },
        {
            "role": "user",
            "content": "List three risks when adding retries to a streaming API client.",
        },
    ],
    temperature=0.2,
    max_tokens=300,
)

print(response.choices[0].message.content)

В примере намеренно используется короткое завершение. Увеличивайте бюджеты контекста и вывода только после добавления тайм-аутов, повторных попыток, логирования и отслеживания использования, подходящих для вашего приложения.

Пример cURL

Тот же запрос можно протестировать без SDK:

payload='{
  "model": "moonshotai/kimi-k3",
  "messages": [
    {
      "role": "system",
      "content": "You are a concise engineering assistant."
    },
    {
      "role": "user",
      "content": "List three risks when adding retries to a streaming API client."
    }
  ],
  "temperature": 0.2,
  "max_tokens": 300
}'

curl --request POST "https://api.novita.ai/openai/v1/chat/completions" \
  --header "Authorization: Bearer $NOVITA_API_KEY" \
  --header "Content-Type: application/json" \
  --data "$payload"

Ключевые параметры

Параметр Что контролирует Разумное первое значение
model Модель, которая отвечает на запрос moonshotai/kimi-k3
messages Пользовательские и системные сообщения, а также ассистент Одно системное и одно пользовательское сообщение
temperature Вариативность вывода 0.2 для повторяемых тестов
max_tokens Максимальный генерируемый вывод 300, затем увеличивайте осознанно
stream Поступает ли вывод инкрементально Оставьте отключённым во время отладки
tools Определения функций, доступные модели Добавьте после того, как заработает базовый чат
response_format Требования к структурированному выводу Проверьте возвращаемый JSON перед использованием

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

Устранение неполадок

Аутентификация не проходит

Проверьте, что NOVITA_API_KEY установлена в том же процессе, который выполняет запрос. Убедитесь, что в заголовке используется Bearer, а не параметр запроса или другое имя учётных данных.

Модель не найдена

Используйте точный ID moonshotai/kimi-k3. Отображаемое имя модели не является допустимой заменой для ID модели в API.

Запрос отклонён

Уменьшите промпт и значение max_tokens, проверьте JSON-тело на валидность и убедитесь, что эндпоинт — /openai/v1/chat/completions. Если запрос использует изображения, видео, инструменты или структурированный вывод, удалите эти поля и добавляйте их по одному.

Запросы идут медленно или превышают лимиты

Измерьте количество токенов промпта и вывода, уменьшите ненужный повторяющийся контекст и добавьте ограниченную экспоненциальную задержку для повторных попыток. Проверьте текущий тарифный уровень вашего аккаунта, а не предполагайте наивысший из таблицы на странице модели.

Ответ неполный

Проверьте finish_reason и данные об использовании. Маленькое значение max_tokens может привести к ранней остановке длинного ответа; его увеличение также увеличивает объём выходных данных, которые ваше приложение может оплатить и обработать.

Часто задаваемые вопросы

Какой ID модели нужно отправлять для Kimi K3?

Отправляйте moonshotai/kimi-k3 в поле model.

Какой эндпоинт использует клиент OpenAI?

Установите базовый URL SDK как https://api.novita.ai/openai/v1. Запрос завершения чата отправляется на https://api.novita.ai/openai/v1/chat/completions.

Насколько велико окно контекста у Kimi K3?

На странице модели Novita указано окно контекста на 1 048 576 токенов и максимальный выходной лимит 1 048 576 токенов. Проверьте страницу перед развёртыванием на предмет обновлений.

Бесплатно ли вызывать Kimi K3?

Никаких заявлений о бесплатном доступе здесь не делается. На странице модели указаны serverless-цены посредством токенов, поэтому проверьте текущие цены для вашего аккаунта и модели перед отправкой больших запросов.

Стоит ли начинать с мультимодального запроса?

Нет. Начните с небольшого текстового запроса, чтобы легко проверить аутентификацию, выбор эндпоинта, разбор ответа и обработку ошибок. Мультимодальные входные данные добавляйте после того, как этот путь станет стабильным.

Рекомендуемые статьи

Источники