Novita Kimi K2 API теперь поддерживает вызов функций!

Novita Kimi K2 API теперь поддерживает вызов функций!

Kimi K2 представляет новую эру AI-агентов, сочетая передовую производительность в специализированных областях с доступностью и гибкостью открытого исходного кода. С 32 миллиардами активированных параметров и 1 триллионом общих параметров, Kimi K2 выделяется своими специализированными сильными сторонами в STEM, программировании и использовании инструментов.

В этой статье рассматривается, как вызов функций (function calling) расширяет агентные возможности Kimi K2, что представляет собой эта функция и как она позиционирует Kimi K2 как лидера в будущем AI-агентов.

Агентные возможности Kimi K2 в кодинге

  1. Мастерство в STEM и программировании

    • Kimi K2 достигает передовой производительности (SOTA) в бенчмарках STEM и программирования, включая LiveCodeBench и OJBench.
    • Он может генерировать сложный код, отлаживать проблемы и точно симулировать сложные алгоритмы.
  2. Экспертиза в использовании инструментов

    • Kimi K2 обучен на многошаговых сценариях использования инструментов в сотнях областей.
    • Его способность определять, когда требуется инструмент, и выполнять многоэтапные рабочие процессы делает его очень практичным помощником по программированию.
  3. Обучение с подкреплением для выполнения задач

    • Используя самооценку на основе рубрик и обучение в соответствии с политикой, Kimi K2 постоянно улучшает свои суждения и принятие решений.

От Kimi

Агентные возможности Kimi K2 зависят от вызова функций

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

Что такое вызов функций?

Вызов функций — это структурированный механизм, который позволяет большим языковым моделям (LLM) взаимодействовать с внешними системами, инструментами или API. Вместо простой генерации текста LLM с поддержкой вызова функций может анализировать запросы пользователя, определять, когда требуется внешнее действие, и генерировать структурированные JSON-вызовы для выполнения конкретных функций.

https://www.youtube.com/watch?v=KUEmEb71vzQ

Как работает вызов функций

  1. Анализ промпта: LLM интерпретирует запрос пользователя и определяет, нужен ли вызов функции.
  2. Генерация JSON-вызова: Генерируется структурированный JSON-объект, содержащий имя функции и необходимые параметры.
  3. Выполнение внешней системой: Внешняя система получает JSON-вызов, выполняет функцию и возвращает результаты.
  4. Генерация ответа: 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.

kimi k2 demo

kimi k2 demo

Novita Kimi K2 API поддерживает вызов функций

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

Подробный формат API для вызова функций см. в документации!

kimik2 on novita ai

Попробуйте Kimi K2 сейчас!

  • Инициализация клиента

Сначала необходимо инициализировать клиент с помощью вашего 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-видение в реальность.

Рекомендуем к прочтению