GEO

Function Calling

Function calling (вызов функций, также называемый использованием инструментов) - это возможность, которая позволяет LLM проанализировать запрос пользователя и вызвать внешние функции или API в структурированном формате JSON. OpenAI представила официальную поддержку в июне 2023 года; с тех пор Claude, Gemini и Llama поставляют её как стандартную функцию, и она стала атомарной единицей реализаций ИИ-агентов.

Function calling (вызов функций, также называемый использованием инструментов) - это возможность, которая позволяет LLM проанализировать запрос пользователя и вызвать внешние функции или API в структурированном формате JSON. OpenAI представила официальную поддержку в июне 2023 года; с тех пор Claude, Gemini и Llama поставляют её как стандартную функцию, и она стала атомарной единицей реализаций ИИ-агентов.

Почему это важно

LLM по своей сути являются генераторами текста. Без function calling вопрос "какая сейчас погода в Сеуле?" может извлечь только знания на момент обучения. С function calling модель выдаёт get_weather(location: "Seoul") в виде JSON, хост-приложение запускает реальный API, и результат возвращается в модель для финального ответа. Этот простой механизм - основа ИИ-агентов, поиска на основе ИИ и всей экосистемы MCP.

Как это работает

  1. Определения инструментов: Приложение передаёт LLM список доступных функций - имя, описание, схему параметров.
  2. Запрос пользователя: Пользователь вводит вопрос на естественном языке.
  3. Решение о вызове: LLM решает, какую функцию вызвать, и генерирует аргументы в виде JSON.
  4. Фактическое выполнение: Хост-приложение парсит JSON и запускает реальную функцию. Сама модель не выполняет код.
  5. Внедрение результатов: Вывод функции возвращается в контекст LLM.
  6. Финальный ответ: LLM формирует ответ на естественном языке, основанный на результатах.

Пример

Определение инструмента:

{
  "name": "search_blog_posts",
  "description": "Search blog posts by keyword",
  "parameters": {
    "type": "object",
    "properties": {
      "keyword": { "type": "string", "description": "search keyword" },
      "limit": { "type": "integer", "default": 5 }
    },
    "required": ["keyword"]
  }
}

Пользователь: "Найди мне 3 статьи про GEO"

Ответ модели:

{
  "tool_call": "search_blog_posts",
  "arguments": { "keyword": "GEO", "limit": 3 }
}

После того как приложение запустит инструмент: [{title: "...", url: "..."}, ...]

Финальный ответ: "Я нашёл 3 статьи про GEO..."

Function Calling против MCP против ReAct

АспектFunction CallingMCPReAct
УровеньПротокол вызова APIСтандартизированный протокол подключения инструментовПаттерн промптинга
РольМодель выдаёт JSON для вызова инструментаСовместное использование инструментов разными хостами/серверамиЦикл пошагового рассуждения + действия
СвязьОснова MCPСтандартизирует function calling между приложениямиИспользует function calling внутри цикла

Function calling - это единичный вызов инструмента; MCP - это способ, которым множество приложений совместно используют один и тот же инструмент; ReAct - это паттерн для зацикливания вызовов с рассуждением.

Ограничения и подводные камни

Риск галлюцинаций: Модель может придумать несуществующие функции или сгенерировать плохие аргументы. Строгая валидация схемы обязательна.

Параллельные вызовы: Передовые модели (GPT-4o, Claude Opus 4.6) могут вызывать несколько функций параллельно. Это привносит управление зависимостями.

Стоимость: Каждый вызов расширяет контекст и повышает расход токенов. Сужение набора доступных инструментов улучшает и производительность, и стоимость.

Безопасность: В сочетании с инъекцией промпта function calling может усилить ущерб. Требуйте подтверждения пользователя для рискованных действий, таких как платежи или удаления.

Значение для GEO

Когда поиск на основе ИИ извлекает информацию из блога, он внутренне вызывает функции вроде fetch_web_content, search_knowledge или cite_source. Блоги, которые выдают чистый HTML и структурированные данные, улучшают качество этих вызовов и повышают вероятность цитирования. Иными словами, "блог, который функциям легко прочитать" - это блог, дружественный к GEO.

Источники: