Ключевые моменты
Novita AI представила DeepSeek R1 Turbo, обеспечивающий 3-кратную пропускную способность и ограниченную по времени скидку 60%. Кроме того, эта версия полностью поддерживает вызов функций.
Если вы хотите протестировать его производительность, начните бесплатный пробный период прямо на Novita AI Playground!

Что такое вызов функций?
Вызов функций — это мощная функция, которая позволяет большим языковым моделям (LLM) структурированно взаимодействовать с внешними системами и вашим кодом. Помимо генерации текста, LLM с вызовом функций могут распознавать, когда необходимо конкретное действие, генерировать требуемые параметры и выполнять реальные задачи. Это делает модели ИИ более динамичными и практичными, обеспечивая бесшовную интеграцию с внешними инструментами и API.
Как работает вызов функций и какие проблемы он может решить?
Процесс следует простому и структурированному потоку:
- Пользователь отправляет запрос LLM.
- LLM анализирует запрос и определяет, нужен ли вызов функции.
- При необходимости LLM генерирует структурированный JSON-вызов соответствующей функции, включая имя функции и параметры.
- Приложение получает этот вызов и выполняет функцию.
- Результат отправляется обратно в LLM.
- LLM использует результат для генерации окончательного ответа пользователю.
Этот цикл может повторяться для многошаговых или сложных задач. Инструменты (функции) должны быть определены с именами, описаниями и JSON-схемами, указывающими их параметры. Для дополнительной проверки можно использовать модели Pydantic для обеспечения типобезопасности.
Вызов функций расширяет возможности LLM, решая множество практических задач:
- Извлечение данных: Преобразование языковых запросов в API-вызовы для получения данных в реальном времени (например, «Какие у меня последние заказы?»).
- Выполнение действий: Выполнение конкретных задач (например, «Запланировать встречу» вызывает API календаря).
- Вычисления: Обработка расчетов или операций (например, сложные проценты или статистический анализ).
- Конвейеры данных: Цепочка функций для сложных рабочих процессов (например, получение → обработка → сохранение данных).
- Интеграция с UI/UX: Триггерные обновления интерфейса, такие как маркеры на карте или диаграммы.
- Диалоговые агенты: Возможность чат-ботов вызывать API для релевантных ответов (например, обновления погоды).
- Обработка естественного языка: Преобразование текста в структурированные данные или извлечение информации (например, анализ тональности, распознавание именованных сущностей).

Как использовать вызов функций DeepSeek R1 через Novita AI
Novita AI запустила поддержку описания возможностей для каждой LLM, которые вы можете напрямую просмотреть в консоли и документации.


1. Инициализация клиента
Сначала необходимо инициализировать клиент с вашим ключом 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 = "deepseek/deepseek_r1"
- Определение функции для вызова
Затем определите функцию Python, которую модель может вызывать. В этом примере это функция для получения информации о погоде.
# Пример функции для имитации получения данных о погоде.
def get_weather(location):
"""Получает текущую погоду для указанного местоположения."""
print("Вызов функции get_weather с местоположением: ", location)
# В реальном приложении здесь вы бы обращались к внешнему API погоды.
# Это упрощенный пример, возвращающий жестко заданные данные.
return json.dumps({"location": location, "temperature": "60 градусов по Фаренгейту"})
2. Формирование запроса 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())
3. Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
4. Ответ с результатом вызова функции и получение окончательного ответа
Следующий шаг — обработать вызов функции, выполнить функцию 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)
5. Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
Часто задаваемые вопросы
Какие типы функций можно вызывать?
Вы можете определить практически любую функцию, которую может выполнить ваше приложение, что позволяет LLM взаимодействовать с базами данных, API и внутренней логикой.
Выполняет ли вызов функций код на самом деле?
Нет, когда LLM решает вызвать функцию, она только выводит структурированный JSON-объект, содержащий имя функции и необходимые аргументы.
Поддерживает ли DeepSeek R1 вызов функций?
Да! Novita AI представила DeepSeek R1 Turbo, обеспечивающий 3-кратную пропускную способность и ограниченную по времени скидку 20%. Кроме того, эта версия полностью поддерживает вызов функций.
Novita AI — это облачная платформа «все в одном», которая расширяет ваши AI-амбиции. Интегрированные API, бессерверные вычисления, GPU-инстансы — экономически эффективные инструменты, которые вам нужны. Устраните инфраструктурные сложности, начните бесплатно и воплотите свое AI-видение в реальность.
