Cover Image for Пишем ИИ агента про классификацию продуктов в каталоге WordPress & WooCommerce

Пишем ИИ агента про классификацию продуктов в каталоге WordPress & WooCommerce

26 февраля 2025

Использование ИИ для классификации продуктов в WordPress и WooCommerce — это мощный инструмент для автоматизации сайта и улучшения контента.

Подготовка данных

Для успешной классификации продуктов необходимо подготовить качественный набор данных, включающий:

  • Описания продуктов
  • Существующие категории
  • Метаданные товаров
  • Теги и атрибуты

используем:

Алгоритм классификации

Процесс классификации включает несколько этапов:

  1. Предварительная обработка текста (токенизация, удаление стоп-слов)
  2. Векторизация текстовых данных
  3. Применение методов машинного обучения
  4. Валидация результатов

Все результаты можно видеть через журнал работы

Технические особенности реализации

При интеграции с WordPress необходимо учитывать:

  • Совместимость с WordPress REST API
  • Оптимизацию производительности
  • Масштабируемость решения
  • Безопасность данных

Преимущества использования ИИ для классификации

Внедрение ИИ-классификации даёт следующие преимущества:

  • Автоматизация рутинных задач категоризации
  • Повышение точности классификации
  • Экономия времени администраторов магазина
  • Улучшение пользовательского опыта покупателей

Возможные проблемы и их решения

При внедрении системы могут возникнуть следующие сложности:

  • Неточности в классификации — решается через обучение на большем количестве данных
  • Производительность — оптимизация через кэширование
  • Интеграция — использование стандартных WordPress хуков и фильтров

Использование ИИ для классификации продуктов в WordPress и WooCommerce — это мощный инструмент для автоматизации работы интернет-магазина. При правильной реализации он способен значительно упростить управление каталогом товаров и улучшить пользовательский опыт.

Итого

Это очередной бот который экономит много времени и денег.

code
<?php

namespace App\AIBots\AutoSelectTagsForProducts;

use function AIPress\prompt;
use WP_CLI;

/**
 * Классифиактор продуктов в каталоге по таксономии product_tag
 */

const ACTION = 'app_ai_select_tags_for_product';

add_action(ACTION, function ($product_id) {

    if (empty($product_id)) {
        return;
    }

    $id = $product_id;

    $out = process_json($id);
    $out_сustom = process_custom($id);
    if($out_сustom){
        $out_сustom = print_r($out_сustom, true);
        update_post_meta($id, 'tags_suggestions_addons', $out_сustom);
    }

    if ($out) {
        update_post_meta($id, 'tags_suggestions', json_encode($out, JSON_UNESCAPED_UNICODE));
    }

    // wc_get_logger()->info($product_id . ' - app_ai_select_tags_for_product - ' . print_r($out, true));
    update_post_meta($id, 'product_tags_processed', true);
    wc_get_logger()->info('app_ai_select_tags_for_product - ' . wc_get_product($id)->get_name(), [
        'source' => 'app-ai-bots',
        'link' => get_edit_post_link($product_id),
        'product_id' => $id,
        'out' => $out,
    ]);


});

add_action('init', function () {
    if (as_has_scheduled_action(ACTION)) {
        return;
    }

    $pid = get_next_product_id();
    if (empty($pid)) {
        return;
    }

    $args = [
        'product_id' => $pid,
    ];

    as_schedule_single_action(time() + HOUR_IN_SECONDS / 6, ACTION, $args, 'app', true);
});

function get_next_product_id()
{
    $product_next = get_posts([
        'post_type' => 'product',
        'posts_per_page' => 1,
        'orderby' => 'post_date',
        'order' => 'DESC',
        'fields' => 'ids',
        'meta_query' => [
            [
                'key' => 'product_tags_processed',
                'compare' => 'NOT EXISTS',
            ],
        ],

    ]);

    return $product_next[0] ?? null;
}


function process_custom($product_id = null){
    if (empty($product_id)) {
        return null;
    }

    $product = wc_get_product($product_id);

    if (empty($product)) {
        return null;
    }

    $prompt = 'Изучи информацию о продукте: ' . $product->get_name() . '.';
    $prompt .= PHP_EOL;
    $prompt .= "Описание продукта: " . $product->get_description();
    $prompt .= PHP_EOL;
    $prompt .= "Затем изучи список возможных категорий: " . get_json_list();
    $prompt .= PHP_EOL;
    $prompt .= "Верни результат тоже строго в формате через запятую.";

    $out = prompt($prompt);

    return $out;
}
function process_json($product_id = null)
{

    if (empty($product_id)) {
        return null;
    }

    $product = wc_get_product($product_id);

    if (empty($product)) {
        return null;
    }

    $prompt = 'Изучи информацию о продукте: ' . $product->get_name() . '.';
    $prompt .= PHP_EOL;
    $prompt .= "Описание продукта: " . $product->get_description();
    $prompt .= PHP_EOL;
    $prompt .= "Затем изучи список возможных категорий в формате JSON: " . get_json_list();
    $prompt .= PHP_EOL;
    $prompt .= "Верни результат тоже строго в формате JSON без лишних слов и разметок.";

    $params = [
        'model' => 'deepseek/deepseek-chat',
        'messages' => [
            [
                'role' => 'system',
                'content' => 'You are a helpful assistant who understands services, applications and software for business and automation, and speaks Russian.'
            ],
            [
                'role' => 'user',
                'content' => $prompt
            ],
        ]
    ];

    $json = prompt($prompt, $params);
    $data = json_decode($json, true);

    if (is_array($data)) {
        return $data;
    } else {
        return null;
    }
}

function get_json_list()
{
    $product_tags = get_terms([
        'taxonomy' => 'product_tag',
    ]);

    $product_tags = array_map(function ($term) {
        return [
            'id' => $term->term_id,
            'slug' => $term->slug,
            'name' => $term->name,
        ];
    }, $product_tags);

    $product_tags = json_encode($product_tags, JSON_UNESCAPED_UNICODE);

    return $product_tags;
}