Ключевые моменты
Что это даёт: выполнение оперативного получения данных, системных операций и автоматизированных рабочих процессов.
Какие модели поддерживают: серия Llama 3, серия GPT, Gemma 2 и Mistral nemo.
Как реализовать: установите API через «Библиотеку моделей» Novita AI, затем реализуйте с помощью фреймворка Langchain.
Вызов функций — это методика, которая значительно расширяет возможности больших языковых моделей (LLM), позволяя им взаимодействовать с внешним миром. Вместо простой генерации текста LLM могут использовать вызов функций для выполнения конкретных задач, получения информации в реальном времени и осуществления сложных операций. В этой статье мы рассмотрим концепцию вызова функций, его практическое применение и то, как такие модели, как Llama 3.3 70B, делают его более доступным.
Какие проблемы решает вызов функций?
- Доступ к информации в реальном времени
- Проверка последних цен на акции
- Получение текущих данных о погоде
- Доступ к срочным новостям
- Системные взаимодействия
- Отправка электронных писем
- Публикация в социальных сетях
- Запросы и запись в базы данных
- Автоматизация рабочих процессов
- Сбор и обработка данных
- Выполнение многошаговых задач
- Автоматизация сложного анализа
- Точность данных
- Обеспечение актуальности информации
- Предоставление точных результатов запросов
- Сокращение ошибок, связанных с устаревшими данными
Что такое вызов функций?
По своей сути вызов функций — это способность LLM распознавать, когда для выполнения конкретной задачи требуется внешняя функция или инструмент, и затем генерировать структурированные данные (обычно в формате JSON) для выполнения этой функции. Эти структурированные данные включают имя функции и необходимые аргументы. По сути, вызов функций служит мостом между обширными знаниями ИИ и реальными действиями. Он позволяет ИИ-агентам или чат-ботам выполнять конкретные задачи или получать доступ к внешним данным и сервисам.
Поддерживаемые модели для вызова функций
Многие LLM и платформы теперь поддерживают вызов функций. Вы можете установить API через страницу «Библиотека моделей» Novita AI и реализовать вызов функций с помощью Langchain.

- Llama 3.3: версия на 70 миллиардов параметров показала высокую производительность в тестах вызова функций, успешно определяя, когда и какую функцию следует вызвать на основе запросов пользователей.
- Mistral: модели, такие как Mistral-Large-2, демонстрируют успех в вызове функций в среде watsonx.ai.
- Gemini: модели Gemini от Google также поддерживают вызов функций, и доступны различные примеры использования.
Как работает вызов функций?
- Объявление функции: процесс начинается с определения многократно используемых блоков кода, называемых функциями, а также описания их возможностей, входных и выходных данных.
- Отправка запроса: пользователь отправляет запрос LLM вместе с набором объявлений функций. Это информирует модель о доступных инструментах.
- Анализ модели: LLM анализирует запрос и определяет, нужно ли вызвать какую-либо из предоставленных функций для выполнения запроса.
- Структурированный вывод: если требуется вызов функции, LLM генерирует структурированный вывод в формате JSON, который включает имя функции и значения её параметров.
- Вызов функции: приложение или система использует этот структурированный вывод для вызова указанной функции, передавая параметры.
- Выполнение функции: внешний сервис или API выполняет функцию с предоставленными параметрами.
- Вывод результата: внешний сервис отправляет подтверждение или результат обратно в ИИ.
- Ответ модели: LLM использует этот вывод для генерации ответа на естественном языке для пользователя или для дальнейшей обработки.
- Обратите внимание, что модель не вызывает функцию напрямую; её структурированный вывод используется внешней программой для этого вызова.
https://www.youtube.com/watch?v=Qor2VZoBib0
Вызов функций против JSON-режима

Преимущества вызова функций
- Повышение эффективности: прямой вызов функций приводит к сокращению времени обработки и задержки, что важно для приложений, требующих немедленных действий.
- Расширенная гибкость: разработчики могут легко обновлять или изменять функции без перестройки всего приложения, что позволяет быстрее адаптироваться к новым требованиям.
- Масштабируемость: упрощает масштабирование, позволяя добавлять новые функции без значительных изменений существующей инфраструктуры.
- Персонализированные взаимодействия: обеспечивает персонализированный пользовательский опыт; например, доступ к календарю пользователя для предложения времени встречи, не конфликтующего с существующими записями.
- Связь ИИ с реальными действиями: позволяет ИИ выполнять практические задачи, такие как отправка электронных писем или текстовых сообщений от имени пользователей.
- Сложные диалоговые агенты: позволяет создавать сложные чат-боты, которые отвечают на сложные вопросы, используя внешние API и базы знаний для получения релевантных ответов.
Практические применения вызова функций
- Диалоговые агенты: используются в продвинутых чат-ботах, которые применяют внешние API для получения актуальной информации.
- Понимание естественного языка: извлечение структурированных данных из текста для таких задач, как распознавание сущностей и анализ тональности.
- Интеграция API: позволяет LLM интегрироваться с внешними API для получения данных или выполнения действий на основе пользовательского ввода.
- Финансовая помощь: создание ИИ-финансовых консультантов, которые получают доступ к финансовым данным в реальном времени и дают персонализированные советы.
- Автоматизация тикетов поддержки: автоматизация назначения тикетов поддержки путём обработки тикетов с использованием контекстно-зависимых правил.
- Извлечение знаний: помогает извлекать информацию из баз знаний, создавая функции, которые обобщают академические статьи для ответов на вопросы и предоставления цитат.
- Мультимодальные приложения: запуск функций на основе изображений, видео, аудио и PDF-файлов.
Как использовать вызов функций Llama 3.3 70B через Novita AI
Шаг 1: Получите API-ключ и установите его!
Перейдите на страницу «Управление ключами», чтобы скопировать API-ключ, как показано на изображении.

Вы можете найти страницу «Библиотека моделей» Novita AI. Установите API Novita AI с помощью менеджера пакетов для вашего языка программирования.

После регистрации Novita AI предоставляет $0.5 кредита для начала работы!
Если бесплатные кредиты закончатся, вы можете оплатить дальнейшее использование.
Шаг 2: Используйте Langchain для реализации вызова функций
Мы создадим простое математическое приложение, которое сможет выполнять операции сложения и умножения.
💡 Хотя это руководство использует LangChain для удобства, реализация вызова функций не требует какого-либо конкретного фреймворка. Ключевой момент — разработка правильных запросов, чтобы модель понимала и правильно вызывала функции. LangChain используется здесь только для упрощения реализации.
Предварительные требования
Сначала установите необходимые пакеты:
pip install langchain-openai python-dotenv
Настройка окружения
Создайте файл .env в корне проекта и добавьте ваш API-ключ Novita AI:
NOVITA_API_KEY=your_api_key_here
Шаги реализации
1. Определение инструментов
Сначала создадим два простых математических инструмента с помощью декоратора @tool из LangChain:
from langchain_core.tools import tool
@tool
def multiply(x: float, y: float) -> float:
"""Multiply two numbers together."""
return x * y
@tool
def add(x: int, y: int) -> int:
"""Add two numbers."""
return x + y
tools = [multiply, add]
2. Создание функции выполнения инструментов
Затем реализуем функцию для выполнения инструментов:
from typing import Any, Dict, Optional, TypedDict
from langchain_core.runnables import RunnableConfig
class ToolCallRequest(TypedDict):
name: str
arguments: Dict[str, Any]
def invoke_tool(
tool_call_request: ToolCallRequest,
config: Optional[RunnableConfig] = None
):
"""Execute the specified tool with given arguments."""
tool_name_to_tool = {tool.name: tool for tool in tools}
name = tool_call_request["name"]
requested_tool = tool_name_to_tool[name]
return requested_tool.invoke(tool_call_request["arguments"], config=config)
3. Настройка конвейера LangChain
Создайте цепочку, которая использует LLM Novita AI для выбора и подготовки вызовов инструментов:
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import render_text_description
def create_chain():
"""Create a chain that uses the specified LLM model to select and prepare tool calls."""
model = ChatOpenAI(
model="meta-llama/llama-3.3-70b-instruct",
api_key=os.getenv("NOVITA_API_KEY"),
base_url="https://api.novita.ai/v3/openai",
)
rendered_tools = render_text_description(tools)
system_prompt = f"""\
You are an assistant that has access to the following set of tools.
Here are the names and descriptions for each tool:
{rendered_tools}
Given the user input, return the name and input of the tool to use.
Return your response as a JSON blob with 'name' and 'arguments' keys.
The `arguments` should be a dictionary, with keys corresponding
to the argument names and the values corresponding to the requested values.
"""
prompt = ChatPromptTemplate.from_messages(
[("system", system_prompt), ("user", "{input}")]
)
return prompt | model | JsonOutputParser()
4. Создание основной функции обработки
Реализуйте основную функцию, которая обрабатывает математические запросы:
def process_math_query(query: str):
"""Process a mathematical query by using an LLM to select the appropriate tool and execute it."""
chain = create_chain()
message = chain.invoke({"input": query})
result = invoke_tool(message, config=None)
return message, result
5. Пример использования
Вот как использовать реализацию:
if __name__ == "__main__":
message, result = process_math_query(
"meta-llama/llama-3.3-70b-instruct",
"what's 3 plus 1132"
)
print(result) # Output: 1135
В заключение, вызов функций стремительно меняет то, как ИИ-системы взаимодействуют с окружающей средой, делая приложения более практичными, эффективными и удобными для пользователей. Такие модели, как Llama 3.3 70B, прокладывают путь к более простому доступу к этой мощной технологии, открывая множество возможностей для разработки ИИ.
Часто задаваемые вопросы
Что такое вызов функций в контексте LLM?
Вызов функций — это методика, которая позволяет большим языковым моделям распознавать, когда для выполнения конкретной задачи требуется внешняя функция или инструмент, и генерировать структурированные данные для выполнения этой функции.
Каковы основные преимущества использования вызова функций?
Ключевые преимущества включают повышение эффективности обработки задач, расширенную гибкость для разработчиков при обновлении функций, масштабируемость для добавления новых функциональностей без значительных изменений, а также персонализированные взаимодействия с пользователями.
Какие языки поддерживает Llama 3.3?
Английский, французский, немецкий, хинди, итальянский, португальский, испанский и тайский.
Novita AI — это облачная платформа ИИ, которая предоставляет разработчикам простой способ развертывания моделей ИИ через наш простой API, а также доступное и надежное облако GPU для создания и масштабирования проектов.
