Kimi K2 представляет новую эру AI-агентов, сочетая передовую производительность в специализированных областях с доступностью и гибкостью открытого исходного кода. С 32 миллиардами активированных параметров и 1 триллионом общих параметров, Kimi K2 выделяется своими специализированными сильными сторонами в STEM, программировании и использовании инструментов.
В этой статье рассматривается, как вызов функций (function calling) расширяет агентные возможности Kimi K2, что представляет собой эта функция и как она позиционирует Kimi K2 как лидера в будущем AI-агентов.
Агентные возможности Kimi K2 в кодинге
-
Мастерство в STEM и программировании
- Kimi K2 достигает передовой производительности (SOTA) в бенчмарках STEM и программирования, включая LiveCodeBench и OJBench.
- Он может генерировать сложный код, отлаживать проблемы и точно симулировать сложные алгоритмы.
-
Экспертиза в использовании инструментов
- Kimi K2 обучен на многошаговых сценариях использования инструментов в сотнях областей.
- Его способность определять, когда требуется инструмент, и выполнять многоэтапные рабочие процессы делает его очень практичным помощником по программированию.
-
Обучение с подкреплением для выполнения задач
- Используя самооценку на основе рубрик и обучение в соответствии с политикой, Kimi K2 постоянно улучшает свои суждения и принятие решений.

От Kimi
Агентные возможности Kimi K2 зависят от вызова функций
Хотя собственные сильные стороны Kimi K2 в программировании и использовании инструментов впечатляют, его агентные возможности сильно зависят от вызова функций. Без этой функции его способность взаимодействовать с внешними инструментами и системами была бы сильно ограничена.
Что такое вызов функций?
Вызов функций — это структурированный механизм, который позволяет большим языковым моделям (LLM) взаимодействовать с внешними системами, инструментами или API. Вместо простой генерации текста LLM с поддержкой вызова функций может анализировать запросы пользователя, определять, когда требуется внешнее действие, и генерировать структурированные JSON-вызовы для выполнения конкретных функций.
https://www.youtube.com/watch?v=KUEmEb71vzQ
Как работает вызов функций
- Анализ промпта: LLM интерпретирует запрос пользователя и определяет, нужен ли вызов функции.
- Генерация JSON-вызова: Генерируется структурированный JSON-объект, содержащий имя функции и необходимые параметры.
- Выполнение внешней системой: Внешняя система получает JSON-вызов, выполняет функцию и возвращает результаты.
- Генерация ответа: LLM использует возвращённые данные для предоставления окончательного ответа пользователю.
Этот цикл может повторяться для многошаговых или сложных задач, позволяя модели действовать как динамичный и интерактивный агент.
Почему вызов функций важен
- Преобразует знания в действия: Вызов функций позволяет Kimi K2 перейти от «поставщика знаний» к «исполнителю задач».
- Реальное взаимодействие: Он позволяет Kimi K2 взаимодействовать с API, базами данных и внешними системами, эффективно автоматизируя такие задачи, как планирование, извлечение данных и управление IoT.
- Многошаговые рабочие процессы: Kimi K2 может объединять несколько вызовов функций для выполнения сложных рабочих процессов, таких как получение данных, их обработка и сохранение результатов.
Вызов функций против SDK
| Характеристика | Вызов функций | SDK |
|---|---|---|
| Определение | Структурированный механизм для LLM для запуска внешних функций или API. | Набор инструментов, упрощающий взаимодействие с API и внешними системами. |
| Назначение | Позволяет напрямую выполнять задачи путем генерации вызовов функций (например, JSON). | Предоставляет готовые инструменты и библиотеки для более легкой интеграции API. |
| Гибкость | Высокая динамичность, позволяет моделям взаимодействовать с любыми определенными функциями. | Ограничен функциями и конечными точками, поддерживаемыми SDK. |
| Реализация | Требует определения функций, схем и обработки ответов вручную. | Абстрагирует логику API, обеспечивая подход «подключи и работай». |
| Случаи использования | Идеально подходит для многошаговой автоматизации задач и принятия решений в реальном времени. | Лучше всего подходит для быстрой разработки с предопределенными рабочими процессами. |
| Усилия разработчика | Требует больше настроек для определения и управления вызовами функций. | Минимальные усилия; упрощает использование API с помощью готовых методов. |
Чего можно достичь с помощью Kimi K2 + вызов функций?
Сочетание сильных сторон Kimi K2 и возможностей вызова функций открывает широкий спектр реальных приложений:
1. Выполнение реальных задач
- Автоматизация: Автоматизируйте повторяющиеся задачи, такие как бронирование встреч, отправка форм или создание отчетов.
- Управление IoT: Взаимодействуйте с устройствами IoT для выполнения действий, таких как регулировка температуры в помещении или переключение света.
2. Доступ к данным в реальном времени
- Динамические обновления: Получайте данные в реальном времени (например, погоду, цены на акции) через вызовы API.
- Расширенные ответы: Интегрируйте информацию реального времени в ответы, повышая точность и релевантность.
3. Продвинутые мультимодальные приложения
- Обработка изображений и видео: Запускайте внешние инструменты для таких задач, как редактирование изображений или обрезка видео.
- Межформатная интеграция: Обрабатывайте ввод из текста, изображений и аудио для выполнения сложных задач.
4. Сложные рабочие процессы и конвейеры
- Объединяйте несколько вызовов функций для выполнения конвейеров данных, например:
- Получение данных → Анализ → Сохранение результатов.
- Обеспечьте бесшовную интеграцию с базами данных и инструментами аналитики для продвинутых рабочих процессов.
5. Решения, удобные для разработчиков
- Пользовательские API: Разработчики могут донастроить Kimi K2 для взаимодействия с проприетарными API и инструментами.
- Масштабируемые интеграции: Легко добавляйте новые функции для расширения возможностей без серьезных изменений инфраструктуры.
Демонстрация Kimi K2 с вызовом функций
1. Мой общий бюджет составляет 10 000 долларов, которые должны покрыть все расходы, включая транспорт, проживание и билеты. Пожалуйста, предоставьте подробную разбивку бюджета на всю поездку. Мои основные критерии оценки: удобство транспорта, наличие билетов и качество местных достопримечательностей.
2. Пожалуйста, учитывайте мой общий бюджет, указанный выше.
3. В дополнение к моему общему бюджету, указанному выше, я ищу жилье, которое предлагает аутентичный местный опыт, поэтому я предпочитаю Airbnb.
4. Проверьте мою Google Mail и создайте записи в моем Google Calendar.


Novita Kimi K2 API поддерживает вызов функций
Это руководство демонстрирует, как использовать вызов функций для получения информации о текущей погоде для указанного пользователем местоположения. Мы пройдемся по полному примеру кода на Python.
Подробный формат API для вызова функций см. в документации!

- Инициализация клиента
Сначала необходимо инициализировать клиент с помощью вашего API-ключа Novita.
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# Получите ключ API Novita AI по адресу: https://novita.ai/settings/key-management.
api_key="<YOUR Novita AI API Key>",
)
model = "moonshotai/kimi-k2-instruct"
- Определение вызываемой функции
Затем определите функцию Python, которую модель может вызывать. В этом примере это функция для получения информации о погоде.
# Пример функции для имитации получения данных о погоде.
def get_weather(location):
"""Получает текущую погоду для указанного местоположения."""
print("Вызов функции get_weather с местоположением: ", location)
# В реальном приложении здесь вы бы вызвали внешний API погоды.
# Это упрощенный пример, возвращающий жестко заданные данные.
return json.dumps({"location": location, "temperature": "60 градусов по Фаренгейту"})
- Построение запроса API с инструментами и сообщением пользователя
Теперь создайте запрос API к конечной точке Novita. Этот запрос включает параметр tools, определяющий функции, которые модель может использовать, и сообщение пользователя.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить погоду в определенном месте. Пользователь должен сначала указать местоположение.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Город и штат, например Сан-Франциско, Калифорния",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "Какая погода в Сан-Франциско?"
}
]
# Отправим запрос и выведем ответ.
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# В продакшене проверьте, содержит ли ответ вызовы инструментов.
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
- Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
- Ответ с результатом вызова функции и получение окончательного ответа
Следующий шаг — обработать вызов функции, выполнить функцию get_weather и отправить результат обратно модели для генерации окончательного ответа пользователю.
# Убедитесь, что tool_call определен из предыдущего шага
if tool_call:
# Добавляем в историю сообщение ассистента с вызовом инструмента
messages.append(response.choices[0].message)
function_name = tool_call.function.name
if function_name == "get_weather":
function_args = json.loads(tool_call.function.arguments)
# Выполняем функцию и получаем ответ
function_response = get_weather(
location=function_args.get("location"))
# Добавляем ответ функции в сообщения
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# Получаем окончательный ответ от модели, теперь с результатом функции
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# Примечание: не включайте сюда параметр tools.
)
print(answer_response.choices[0].message)
- Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
Novita AI теперь предлагает совместимость с Anthropic SDK
Сочетание Kimi K2 и Claude Code быстро стало горячей темой в сообществе AI, предлагая непревзойденные агентные возможности для реальных приложений. Чтобы сделать эту интеграцию еще более плавной, Novita AI теперь предлагает совместимость с Anthropic SDK, позволяя вам без усилий использовать возможности Kimi K2 через знакомый интерфейс Claude Code.
Вы можете ознакомиться с этой документацией, чтобы получить более подробную информацию!
1. Установка Anthropic SDK
pip install anthropic
2. Инициализация клиента
SDK Anthropic спроектированы так, чтобы получать API-ключ и базовый URL из переменных окружения: ANTHROPIC_API_KEY и ANTHROPIC_BASE_URL. Также вы можете передать параметры клиенту Anthropic при инициализации.
Вы можете просмотреть и управлять своими API-ключами на странице настроек.
- Использование переменных окружения
export ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic"
export ANTHROPIC_API_KEY="<YOUR_NOVITA_API_KEY>"
- Установка параметров при инициализации клиента Anthropic
import anthropic
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
3. Вызов API
import anthropic
# Инициализация клиента. Если вы уже установили `ANTHROPIC_BASE_URL` и `ANTHROPIC_API_KEY`
# в переменных окружения, вы можете опустить параметры `api_key` и `base_url`.
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
message = client.messages.create(
model="moonshotai/kimi-k2-instruct",
max_tokens=1000,
temperature=1,
system="Вы всемирно известный поэт. Отвечайте только короткими стихотворениями.",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Почему океан соленый?"
}
]
}
]
)
print(message.content)
Поддержка вызова функций в Kimi K2 превращает его из высокопроизводительной LLM в AI-агента нового поколения, способного к реальному взаимодействию и выполнению задач. В сочетании с его доминированием в STEM и программировании эта функция позиционирует Kimi K2 как экономичное специализированное решение для разработки практичных и динамичных AI-систем.
Устраняя разрыв между знанием и действием, Kimi K2 не только улучшает пользовательский опыт, но и демократизирует доступ к передовым возможностям AI. Его открытый исходный код и доступность делают его разрушительной силой в ландшафте AI, открывая путь для широких инноваций и внедрения.
Часто задаваемые вопросы
Что такое вызов функций в контексте LLM?
Вызов функций — это техника, которая позволяет большим языковым моделям распознавать, когда для конкретной задачи требуется внешняя функция или инструмент, и генерировать структурированные данные для выполнения этой функции.
Каковы основные преимущества использования вызова функций?
Ключевые преимущества включают повышение эффективности обработки задач, большую гибкость для разработчиков в обновлении функций, масштабируемость для добавления новых функциональных возможностей без серьезных изменений, а также персонализированное взаимодействие с пользователем.
Может ли Kimi K2 заменить проприетарные модели, такие как GPT-4 или Claude?
Kimi K2 не стремится заменить модели общего назначения. Вместо этого он фокусируется на роли специализированного агента с сильными сторонами в STEM, программировании и использовании инструментов, дополненными возможностями вызова функций.
Novita AI — это универсальная облачная платформа, которая расширяет ваши AI-амбиции. Интегрированные API, serverless, GPU Instance — экономичные инструменты, которые вам нужны. Устраните инфраструктурные сложности, начните бесплатно и воплотите свое AI-видение в реальность.
