Chat Completion API: принцип работы и использование

Узнайте, как работает Chat Completion API, как интегрировать его с Python, разберитесь в ключевых параметрах, потоковой передаче и вызове инструментов, а также выясните, как совместимые с OpenAI провайдеры, такие как Kimi API, помогают гибко разрабатывать приложения с ИИ.

9 мин чтенияОбновлено: 2026-11-14
Процесс запроса и ответа в Chat Completion API

Создаете ли вы чат-бота с ИИ или добавляете в приложение диалоговые функции, важно понимать, как ИИ обрабатывает разговоры. Chat Completion API позволяет это сделать, соединяя приложения с моделями ИИ для генерации релевантных, похожих на человеческие ответов. Благодаря интеграции с Python, потоковой передаче и вызову инструментов разработчики могут создавать более интерактивные приложения. Разберем, как это работает и используется, а также как поставщики вроде Kimi API поддерживают гибкую разработку с ИИ.

Что такое Chat Completions API

Chat Completions API — это интерфейс, который позволяет приложениям отправлять модели ИИ последовательность сообщений и получать ответ ассистента; он поддерживает как однократные, так и многошаговые диалоги. Например, с помощью Kimi K3.1 Pro можно получить ответ на вопрос о декораторах Python, а затем задать уточняющий вопрос:

  • Первый запрос: Отправьте сообщение пользователя: «Что такое декоратор Python?» Kimi вернет сообщение ассистента с объяснением этого понятия.

  • Второй запрос: Чтобы продолжить диалог, отправьте предыдущее сообщение пользователя, полное сообщение ассистента от Kimi и новое сообщение пользователя: «Можете привести пример?»

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

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

  • Распространенные роли сообщений: К распространенным ролям относятся system (инструкции), user (ввод), assistant (вывод модели, возвращаемый для контекста многоэтапного диалога) и tool (результаты вызова функций). Вместе они позволяют задавать инструкции, вести диалог и взаимодействовать с инструментами.

  • Гибкие возможности: В зависимости от поддержки модели интерфейс может работать с потоковой передачей, вызовом инструментов, визуальными входными данными и структурированными ответами. Kimi K3.1 Pro поддерживает эти возможности.

Как использовать API Chat Completions с Kimi

В следующих примерах используются Kimi K3.1 Pro и Python SDK OpenAI. Они показывают, как настроить клиент, отправлять запросы, обрабатывать ответы и реализовать вызов инструментов:

Быстрый старт: вызов Kimi с помощью Python SDK OpenAI

Установите Python SDK OpenAI:

pip install --upgrade openai

Задайте ключ Kimi API как переменную окружения:

export MOONSHOT_API_KEY="sk-your-kimi-key"

Ключ OpenAI API не требуется. Python SDK OpenAI выступает в роли клиентской библиотеки, а ваш ключ Kimi API и базовый URL аутентифицируют запросы и направляют их в Kimi.

Инициализируйте клиент и отправьте первый запрос:

import os from openai import OpenAI client = OpenAI( api_key=os.environ["MOONSHOT_API_KEY"], base_url="https://api.moonshot.ai/v1", ) resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ {"role": "user", "content": "Explain REST in one paragraph."} ], ) print(resp.choices[0].message.content)

В этом примере используется международная конечная точка API Kimi. Официальные инструкции по настройке и сведения о модели см. в руководстве по быстрому старту Kimi K3.1 Pro.

Основные параметры

Эти параметры охватывают основные доступные настройки при вызове Kimi K3.1 Pro через API Chat Completions:

ПараметрНазначение
modelУказывает ID модели, например kimi-k3.1-pro.
messagesПередает сообщения диалога, включая предыдущие сообщения пользователя и ответы ассистента. Поддерживает текстовый и мультимодальный контент.
reasoning_effortУправляет глубиной рассуждений. Принимает значения low, high или max (по умолчанию).
max_completion_tokensЗадает максимальный бюджет генерации, включая токены рассуждений и токены финального ответа. Входные токены учитываются отдельно, но суммарное количество входных и сгенерированных токенов должно укладываться в контекстное окно модели.
streamУстановите значение true, чтобы получать ответ постепенно, а не ждать завершения генерации.
toolsОпределяет функции, которые модель может запросить для выполнения приложением.
response_formatУправляет форматированием вывода. Поддерживает json_object для режима JSON и json_schema для структурированного вывода с ограничениями схемы.

Примечание: Kimi K3.1 Pro использует фиксированные настройки семплирования. Не добавляйте temperature и top_p в запросы. Подробнее о параметрах и поддерживаемых значениях см. в справочнике API Chat Completions.

Чтение ответа

После успешного запроса основные поля ответа доступны через возвращенный объект завершения:

  • choices[0].message — содержит ответ ассистента, включая content или tool_calls, если модель запрашивает вызов функции.

  • choices[0].finish_reason — указывает причину остановки генерации, например stop, length или tool_calls.

  • usage — содержит сведения об использовании token, включая количество входных, выходных и, при наличии, кэшированных token.

Для простого текстового ответа прочитайте choices[0].message.content. Если модель возвращает tool_calls, вашему приложению нужно выполнить запрошенные функции и отправить их результаты в последующем запросе.

Пример потоковой передачи

Установите stream=True, чтобы получать ответ Kimi постепенно, частями. В следующем примере повторно используется настроенный выше client, а итоговый ответ выводится по мере поступления:

stream = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ {"role": "user", "content": "Write a haiku about autumn."} ], stream=True, ) for chunk in stream: if not chunk.choices: continue delta = chunk.choices[0].delta if delta.content: print(delta.content, end="", flush=True)

Kimi K3.1 Pro возвращает содержимое рассуждений отдельно от итогового ответа. В этом примере выводится только delta.content, поэтому отображается итоговый ответ без обработки отдельного поля reasoning_content.

Кратко о вызове инструментов

Вызов инструментов позволяет Kimi запрашивать внешние функции, когда задача требует информации или действий за пределами собственного ответа модели. Например, если пользователь спрашивает: «Стоит ли сегодня взять зонт в Токио?», Kimi может запросить функцию get_weather, чтобы получить прогноз.

Процесс состоит из трех шагов:

  1. Объявите функцию: определите get_weather и ожидаемые ею аргументы в параметре tools.

  2. Выполните инструмент: Kimi возвращает запись tool_calls с именем функции и аргументами. Ваше приложение выполняет соответствующую функцию и получает данные о погоде.

  3. Отправьте результат обратно: добавьте в диалог полное сообщение ассистента Kimi и результат работы инструмента (с соответствующим tool_call_id), затем снова вызовите Kimi, чтобы сформировать ответ для пользователя.

В следующем примере повторно используется настроенный выше client. Перед запуском убедитесь, что вы реализовали функцию get_weather(city), которая возвращает сериализуемые в JSON данные о погоде. Эту функцию выполняет ваше приложение, а не Kimi.

import json tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Get the weather forecast for a city.", "parameters": { "type": "object", "properties": { "city": {"type": "string"} }, "required": ["city"] } } } ] messages = [ {"role": "user", "content": "Should I bring an umbrella in Tokyo today?"} ] # Ask Kimi whether it needs to call a tool resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=messages, tools=tools, ) assistant_message = resp.choices[0].message # Preserve the complete assistant message, including tool_calls messages.append(assistant_message) # Execute the requested function in your application for tool_call in assistant_message.tool_calls or []: if tool_call.function.name == "get_weather": args = json.loads(tool_call.function.arguments) # Call your own weather service or API weather_result = get_weather(city=args["city"]) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(weather_result) }) # Let Kimi interpret the tool result and answer the user final_resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=messages, tools=tools, ) print(final_resp.choices[0].message.content)

Здесь get_weather() обозначает функцию, реализованную вашим приложением, а не функцию, выполняемую непосредственно Kimi. Kimi решает, когда ее запросить, и передает аргументы; фактическую операцию выполняет ваше приложение и возвращает результат.

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

Почему «совместимость с OpenAI» важна при выборе провайдера

Многие провайдеры поддерживают формат OpenAI Chat Completions, что позволяет разработчикам повторно использовать знакомые SDK и структуры запросов. Обычно для перехода достаточно обновить базовый URL, ключ API и ID модели, а затем проверить поддерживаемые параметры и обработку ответов. Сравнивая провайдеров, учитывайте следующие факторы:

  1. Точность совместимости: убедитесь, что потоковая передача, вызов инструментов, структурированные ответы и отчетность usage работают так, как ожидает ваше приложение. Совместимость с одним и тем же форматом API не гарантирует одинаковую поддержку функций и поведение ответов у разных провайдеров.

  2. Качество модели для ваших задач: сочетание используемых языков и типы задач важнее универсальных бенчмарков.

  3. Контекстное окно: модели с длинным контекстом могут упростить некоторые процессы работы с документами, обрабатывая больше исходного материала за один запрос.

  4. Механика ценообразования: кэширование и скидки за пакетную обработку часто важнее заявленной цены за token.

  5. Широта экосистемы: дополнительные совместимые конечные точки, такие как Responses и Anthropic Messages, могут дать больше возможностей для интеграции и гибкости по мере развития вашего приложения.

Kimi API: заметный провайдер, совместимый с OpenAI

Kimi API, разработанный Moonshot AI, стоит рассмотреть, если вы ищете провайдера, совместимого с OpenAI, особенно для приложений на китайском языке, обработки длинных документов и агентов для программирования. Он сочетает привычные шаблоны интеграции API с возможностями Kimi для работы с длинным контекстом и рассуждений.

Полная совместимость

Если ваше приложение уже использует Python SDK OpenAI, вы можете интегрировать Kimi, не переписывая весь процесс обработки запросов. Достаточно обновить конфигурацию API, включая base_url, api_key и идентификатор модели, сохранив привычный интерфейс Chat Completions.

Например, следующий код считывает локальный отчет из report.txt, отправляет его содержимое в Kimi K3.1 Pro для создания краткого изложения и передает сгенерированный ответ в потоковом режиме:

from pathlib import Path report_text = Path("report.txt").read_text(encoding="utf-8") resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ { "role": "user", "content": f"Summarize the following report:\n\n{report_text}" } ], stream=True, ) for chunk in resp: if not chunk.choices: continue content = chunk.choices[0].delta.content if content: print(content, end="", flush=True)

Здесь client повторно использует клиент Kimi, инициализированный ранее с вашим ключом API, полученным из переменной окружения. Выберите базовый URL в соответствии с вашим регионом: https://api.moonshot.ai/v1 для международной платформы или https://api.moonshot.cn/v1 для пользователей, обращающихся к API в материковом Китае.

Этот подход позволяет сохранить существующий рабочий процесс с OpenAI SDK и использовать модели Kimi для таких задач, как создание кратких изложений документов и других приложений на базе API.

Чем выделяется Kimi

  • Флагманская модель с контекстным окном в 1 млн token: Kimi K3.1 Pro поддерживает контекстное окно до 1 млн token и нативное визуальное понимание. Разработчики могут работать с обширными кодовыми базами, документами объемом с книгу и изображениями в рамках одного процесса, поэтому модель подходит для сложных рассуждений, программирования и мультимодальных приложений.

  • Гибкая оптимизация затрат: Kimi API поддерживает автоматическое кэширование контекста для повторяющихся префиксов запросов и выполнение через Batch API для масштабных задач, не требующих ответов в реальном времени. Стоимость кэширования и цены Batch зависят от модели и применимых правил тарификации. Актуальные тарифы и сведения об оплате смотрите в официальных ценах Kimi API.

  • Совместимость с различными экосистемами API: Kimi предоставляет совместимые с OpenAI конечные точки Chat Completions и Responses API, а также конечную точку, совместимую с Anthropic Messages. Разработчики могут интегрировать Kimi K3.1 Pro в существующие процессы с помощью привычных SDK и форматов API, внося корректировки в зависимости от конечной точки и поддерживаемых функций.

Заключение

Начать работу с Chat Completions API просто: настройте учетные данные API, отправьте запрос и получите сгенерированный ответ из choices[0].message.content. Когда первый вызов API заработает, вы сможете расширить интеграцию в соответствии с потребностями приложения, добавив многоходовые диалоги, потоковую передачу ответов или вызов инструментов. Готовы разрабатывать с Kimi? Получите ключ Kimi API и начните отправлять запросы к API.

Вопросы и ответы

Нет. Chat Completions API не предназначен исключительно для моделей OpenAI. Другие поставщики ИИ, включая Kimi, предлагают API, соответствующие совместимому с OpenAI формату Chat Completions. Это позволяет разработчикам повторно использовать знакомые SDK и структуры запросов с поддерживаемыми моделями разных поставщиков, хотя поддержка функций может различаться.
Оба API позволяют приложениям взаимодействовать с моделями ИИ, но используют разные структуры запросов и ответов. Chat Completions использует массив messages и возвращает ответы через массив choices. Responses API использует более гибкую структуру ввода и вывода, поддерживающую разные типы контента и взаимодействие с инструментами. Управление состоянием диалога зависит от поставщика. При использовании Responses API от Kimi приложения должны включать в каждый запрос релевантную историю диалога, а не полагаться на связывание по ID ответа.
Если ваше приложение использует SDK OpenAI, обычно для перехода на Kimi достаточно обновить три параметра конфигурации: base_url — на конечную точку API Kimi, api_key — на ваш ключ Kimi API, а model — на ID поддерживаемой модели Kimi. Затем протестируйте интеграцию, чтобы убедиться, что поддерживаются параметры и функции, от которых зависит ваше приложение, например потоковая передача и вызов инструментов.
Вам также может понравиться
OpenAI Chat Completions API: полное руководство
OpenAI Chat Completions API: полное руководство
2026-11-14
10 бесплатных и платных LLM API для разработки ИИ
10 бесплатных и платных LLM API для разработки ИИ
2026-11-14
Руководство по LLM API: возможности, преимущества и распространенные сценарии применения
Руководство по LLM API: возможности, преимущества и распространенные сценарии применения
2026-11-14
API моделей: руководство разработчика по Kimi API
API моделей: руководство разработчика по Kimi API
2026-11-14
API, совместимый с OpenAI: практическое руководство для разработчиков
API, совместимый с OpenAI: практическое руководство для разработчиков
2026-11-14