ИП Горелов Максим Николаевич 8 (915) 093-74-75
Что такое функция?
Функции — внешние инструменты (фрагменты кода), к которым могут обращаться LLM модели для решения задач пользователей. Модель не исполняет функции, но самостоятельно принимает решение о том как, когда и с какими параметрами их следует вызвать. При принятии решения о вызове функции модель исходит из доступных знаний, данных текущего разговора и описания функции. После обращения к функции модель может обработать результат ее работы.
Что такое параметры?
Это входные данные, которые функция использует для выполнения своей задачи. Они позволяют сделать функцию гибкой и многоразовой, так как она может работать с разными данными без изменения своего кода. Например, функция для генерации изображений может принимать параметры query (описание изображения) и resolution (разрешение), чтобы создавать разные картинки по запросу. Параметры нужны, чтобы функция знала, что именно ей нужно обработать или какие условия учесть при выполнении действия.
Как научить ИИ агента использовать эти параметры в функции?
Чтобы объяснить ИИ, какой параметр нужно передать, вы должны включить в промпт бота четкие инструкции. Эти инструкции должны описывать:
Когда нужно вызвать функцию (условие или триггер).
Какую функцию вызвать (по названию или номеру).
Какие параметры и из какой информации в диалоге их брать.
Например, если у вас есть функция для отправки лида (№26), и она принимает параметры name, phone, email, вы можете написать в промпте:
"Если клиент пришлет свой номер телефона, то сразу же вызови функцию №26 (отправка лида). В качестве phone передай номер телефона клиента, в качестве name используй имя, которое клиент указал в диалоге, а email возьми, если клиент его предоставил."
ИИ будет анализировать диалог и, когда увидит соответствующее условие (например, клиент назвал свой номер телефона), он попытается извлечь нужные данные и передать их в указанную функцию.
Как научить ИИ агента правильно отвечать после выполнения функции?
Чтобы агент не отправлял технические данные, ему нужно дать инструкции что отвечать после того, как функция была вызвана.
Например для 26-й функции (отправка уведомлений) это выглядит так:
Если клиент пришлёт номер телефона, то сразу же вызови функцию отправки лида, а в качестве результата вышли клиенту дословно: «спасибо, заявка принята»
Например для 15й функции (генерация картинки) это выглядит так:
Если клиент попросит создать или нарисовать изображение, то сразу же вызови функцию 15, а в качестве результата вышли ему полученную ссылку.
Функция позволяет получить список продуктов из Joomla, отфильтрованных по заданным параметрам. Это может быть полезно для интеграции с интернет-магазинами на платформе Joomla.
Для работы функции создайте файл `search_products.php` в корне вашего сайта:
```
<?php
// search_products.php
$BOT_API_KEY = 'XXXXXXXXXXXXXXXXXX';
$IMG_URL = 'https://site.ru/';
header('Content-Type: application/json; charset=utf-8');
ini_set('display_errors', 0);
function getParam($name, $default = null) {
if (!isset($_GET[$name])) {
return $default;
}
$value = urldecode($_GET[$name]);
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
$product_name = getParam('product_name');
$category = getParam('category');
$min_price = getParam('min_price');
$max_price = getParam('max_price');
$limit = getParam('limit', 10);
$api_key = getParam('api_key');
if ($api_key !== $BOT_API_KEY) {
http_response_code(403);
echo json_encode(['error' => 'Wrong API key']);
exit;
}
define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';
$app = JFactory::getApplication('site');
$db = JFactory::getDbo();
$prefix = $db->getPrefix();
$query = $db->getQuery(true);
$query->select('p.virtuemart_product_id, p.product_name, pp.product_price, c.category_name, m.file_url')
->from($db->quoteName($prefix . 'virtuemart_products_ru_ru', 'p'))
->join('INNER', $db->quoteName($prefix . 'virtuemart_product_prices', 'pp') . ' ON p.virtuemart_product_id = pp.virtuemart_product_id')
->join('INNER', $db->quoteName($prefix . 'virtuemart_product_categories', 'pc') . ' ON p.virtuemart_product_id = pc.virtuemart_product_id'.
Параметры, которые можно передать в функцию get_filtered_joomla_products:
joomla_url - URL Joomla сайта. Указывает адрес сайта, с которого необходимо получить данные.
joomla_api_key - API ключ для доступа к Joomla. Указывает ключ, необходимый для аутентификации при запросе данных.
product_name - ключевая фраза для поиска по названию товара/услуги.
category - ключевая фраза для поиска по категории товара/услуг.
min_price - минимальная цена продукта. Указывает нижнюю границу цены для фильтрации.
max_price - максимальная цена продукта. Указывает верхнюю границу цены для фильтрации.
limit - максимальное количество возвращаемых продуктов. По умолчанию равно 10.
При поиске товаров на сайте передавай так параметры поиска:
Адрес сайта: "https://site-name.ru"
Ключ АПИ: "XXXXXXXX"
Ключевые слова для поиска в категориях:
"Покрытие", "детских", "площадок", "резиновой", "крошки"
Ключевые слова для поиска товаров:
"SBR", "Eco", "Color", "EPDM", "Premium", "каучук", "sandwich"
Результат поиска оформи в виде короткого и информативного ответа на запрос клиента.
ИП Горелов Максим Николаевич ИНН 500104951533 ОГРН 309500106900065