Ключевые моменты
Что делает: Вызов функций позволяет моделям ИИ взаимодействовать с внешними инструментами и API, выполнять конкретные задачи и получать доступ к данным в реальном времени для системных операций и автоматизированных рабочих процессов.
Поддерживаемые модели: DeepSeek V3 series, GPT series, Gemma 2 и Mistral Nemo.
Как реализовать? Вы можете установить API через Novita AI и изучить его в Docs.
Вызов функций расширяет возможности больших языковых моделей (LLM), позволяя им взаимодействовать с внешним миром. Помимо генерации текста, LLM могут выполнять задачи, получать доступ к данным в реальном времени и проводить сложные операции. Выступая в качестве моста между знаниями ИИ и практическими действиями, вызов функций даёт возможность AI-агентам или чат-ботам взаимодействовать с внешними инструментами и сервисами. DeepSeek V3 — мощная модель с открытым исходным кодом, выделяющаяся своей производительностью и эффективностью.
Что такое вызов функций
Вызов функций расширяет возможности больших языковых моделей (LLM), позволяя им взаимодействовать с внешним миром. Помимо генерации текста, LLM могут выполнять задачи, получать доступ к данным в реальном времени и проводить сложные операции. Выступая в качестве моста между знаниями ИИ и практическими действиями, вызов функций даёт возможность AI-агентам или чат-ботам взаимодействовать с внешними инструментами и сервисами. DeepSeek V3 — мощная модель с открытым исходным кодом, выделяющаяся своей производительностью и эффективностью.
Как работает вызов функций

из Google Cloud
- Объявление функции: Определите переиспользуемые блоки кода (функции) с чёткими описаниями их возможностей, входных и выходных данных.
- Отправка запроса: Предоставьте LLM запрос и набор объявлений функций, чтобы сообщить ей о доступных инструментах.
- Анализ модели: LLM оценивает запрос и определяет, нужно ли вызывать какую-либо из предоставленных функций для выполнения запроса.
- Структурированный вывод: Если требуется вызов функции, LLM генерирует структурированный вывод в формате JSON, указывая имя функции и значения параметров.
- Вызов функции: Приложение или система использует структурированный вывод для вызова указанной функции, передавая необходимые параметры.
- Выполнение функции: Внешний сервис или API выполняет функцию на основе переданных параметров.
- Возврат результата: Внешний сервис возвращает результат или подтверждение ИИ.
- Ответ модели: LLM использует полученный вывод для создания ответа на естественном языке для пользователя или для дальнейшей обработки.
Какие проблемы решает вызов функций
Доступ к информации в реальном времени
- Обновления цен на акции
- Получение текущих данных о погоде
- Доступ к срочным новостям
Системные взаимодействия
- Отправка электронных писем
- Публикация в социальных сетях
- Запросы и запись в базы данных
Автоматизация рабочих процессов
- Сбор и обработка данных
- Выполнение многошаговых задач
- Автоматизация сложного анализа
Точность данных
- Обеспечение актуальности информации
- Предоставление точных результатов запросов
- Снижение количества ошибок из-за устаревших данных
Расширенные возможности ИИ
- Динамическая интеграция API
- Выполнение задач в контексте
- Выполнение действий в реальном мире
Улучшение пользовательского опыта
- Персонализированные ответы
- Выполнение задач без выхода из диалога
- Бесшовная интеграция внешних сервисов
Как использовать вызов функций DeepSeek V3 через Novita AI
В этом руководстве показано, как использовать вызов функций для получения текущей информации о погоде для указанного пользователем местоположения. Мы рассмотрим полный пример кода на Python. Специфический формат API для вызова функций смотрите в справочнике API Create Chat Completion.

Получить $20 кредитов в Novita AI прямо сейчас!
- Инициализация клиента
Сначала необходимо инициализировать клиент с вашим 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_v3"
- Определение функции для вызова
Затем определите функцию Python, которую модель может вызывать. В этом примере это функция для получения информации о погоде.
# Пример функции для имитации получения данных о погоде.
def get_weather(location):
"""Получает текущую погоду для указанного местоположения."""
print("Вызов функции get_weather с местоположением: ", location)
# В реальном приложении здесь был бы вызов внешнего погодного API.
# Это упрощённый пример, возвращающий жёстко заданные данные.
return json.dumps({"location": location, "temperature": "60 degrees Fahrenheit"})
- Формирование API-запроса с инструментами и сообщением пользователя
Теперь создайте API-запрос к конечной точке Novita. Этот запрос включает параметр tools, определяющий функции, которые может использовать модель, и сообщение пользователя.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить погоду в местоположении. Пользователь должен сначала указать местоположение.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Город и штат, например San Francisco, CA"
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "Какая погода в Сан-Франциско?"
}
]
# Отправим запрос и выведем ответ.
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# В production проверьте, содержит ли ответ вызовы инструментов.
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'}
Типичные проблемы и лучшие практики при вызове функций
Вызов функций в моделях ИИ представляет как вызовы, так и возможности. Ниже приведено сравнение типичных проблем и соответствующих лучших практик:
- Неточная интерпретация и чёткие подсказки
Проблема: Модели могут неточно интерпретировать намерения пользователя, что приводит к ненужным или неправильным вызовам функций.
Лучшая практика: Предоставляйте чёткие и лаконичные системные подсказки, описывающие назначение чат-бота и доступные функции. Используйте многошаговые сценарии (multi-shot turns), чтобы продемонстрировать как прямые ответы, так и соответствующие вызовы функций.
- Управление сложными рабочими процессами
Проблема: Сложности в управлении комплексными рабочими процессами с множеством взаимозависимых шагов.
Лучшая практика: Начинайте с инженерии подсказок (prompt engineering), прежде чем переходить к более сложным методам. При тонкой настройке (fine-tuning) делайте акцент на качестве, а не на количестве, начиная с небольшого набора высококачественных примеров.
- Нюансы принятия решений
Проблема: Сложности в интерпретации результатов функций и внешних данных для тонкого принятия решений.
Лучшая практика: Используйте генерацию с дополнением на основе поиска (RAG) для внедрения контекста при необходимости. Комбинируйте методы тонкой настройки и RAG, чтобы сбалансировать их сильные и слабые стороны.
- Сложность структур данных
Проблема: Ограничения при работе с развивающимися, сложными структурами данных, такими как графы и вложенные объекты.
Лучшая практика: Выбирайте правильный уровень абстракции, балансируя между чистым кодом и производительностью. Делайте функции компактными и сфокусированными для повышения эффективности и читаемости.
- Интеграция с унаследованными системами
Проблема: Трудности интеграции с запутанными, неоднозначными унаследованными системами.
Лучшая практика: Оптимизируйте наиболее часто вызываемые функции или «горячие точки», выявленные при профилировании. Рассмотрите пакетную обработку операций для снижения накладных расходов при работе с унаследованными системами.
- Вопросы безопасности
Проблема: Риски безопасности при выполнении привилегированных функций без сложных механизмов оценки.
Лучшая практика: Внедряйте надёжные механизмы обработки ошибок для управления неожиданными ответами API. Обеспечьте строгие меры защиты данных и соответствие нормативным требованиям для сохранения доверия пользователей и защиты конфиденциальной информации.
- Масштабируемость и производительность
Проблема: Непроверенная надёжность в удовлетворении строгих требований к масштабируемости, доступности и производительности для критически важных систем.
Лучшая практика: Используйте оптимизации компилятора и устанавливайте низкие значения температуры для более сфокусированных и детерминированных результатов. Профилируйте и оптимизируйте «горячие точки» для достижения наибольшего прироста производительности.
- Чрезмерная зависимость от вызовов функций
Проблема: Модели могут вызывать функции без необходимости или неподобающим образом, даже когда это не требуется.
Лучшая практика: Тщательно управляйте реализацией вызовов функций. Обеспечьте наличие надлежащих механизмов обработки ошибок и резервного поведения для поддержания надёжности системы, даже когда внешние сервисы недоступны.
- Проблемы конфиденциальности и прозрачности
Проблема: Этические вопросы о прозрачности и согласии пользователя, когда LLM принимают решения или совершают действия от имени пользователей.
Лучшая практика: Внедряйте чёткую документацию и механизмы получения согласия пользователя. Обеспечьте ответственное обращение с данными и соответствие нормам конфиденциальности, таким как GDPR или HIPAA.
В заключение, вызов функций знаменует собой значительный прогресс для LLM, позволяя им легко взаимодействовать с корпоративными данными и системами и давая разработчикам возможность создавать более динамичные и функциональные приложения. Благодаря бесшовной интеграции с внешними приложениями, системами и API, LLM становятся весьма универсальными и способными эффективно выполнять широкий спектр задач. Такие модели, как DeepSeek V3, лидируют в этой области, обеспечивая упрощённый доступ к этой преобразующей технологии и открывая бесконечные возможности для инноваций в области ИИ.
Часто задаваемые вопросы
Что такое вызов функций в контексте LLM?
Вызов функций — это техника, позволяющая большим языковым моделям распознавать, когда для конкретной задачи требуется внешняя функция или инструмент, и генерировать структурированные данные для выполнения этой функции.
Каковы основные преимущества использования вызова функций?
Ключевые преимущества включают повышение эффективности обработки задач, большую гибкость для разработчиков при простом обновлении функций, масштабируемость для добавления новых возможностей без значительных изменений, а также персонализированное взаимодействие с пользователем.
Novita AI — это единая облачная платформа, которая расширяет ваши амбиции в области ИИ. Интегрированные API, бессерверные решения, GPU-инстансы — экономически эффективные инструменты, которые вам нужны. Устраните инфраструктурные хлопоты, начните бесплатно и воплотите своё видение ИИ в реальность.
