
Большие данные в Excel — большая головная боль.
Представьте: перед вами тысячи строк в Excel с опечатками и разными форматами. VBA и Python помогают, но... что если есть способ быстрее? Я нашел решение, которое экономит часы ручной работы.
Необходимо проверить соответствие данных справочника номенклатурным позициям. Это может быть: вид номенклатуры, единица измерения, количество штук в упаковке и т.п.
Можно использовать фильтры и другие инструменты, но в любом случае останется достаточное количество материалов из справочника, которые необходимо проверять вручную, а это уже рутина.
При поиске данных я заметил, что Yandex GPT в поисковике очень быстро выдает правильные результаты, если они не требуют глубокого анализа. Прочитав документацию от Yandex, как оказалось можно делать запросы при помощи API в Yandex Cloud – они начали тестировать облачную платформу для бизнеса ещё в июне 2023 года.
В основном сервис используется для:
Чат боты и виртуальные ассистенты (поддержка клиентов)
Генерация контента (описания товаров, посты)
Оптимизация поиска по сайту
Хочу привести пару примеров применения Yandex GPT в анализе данных.
Примерытестирования Yandex GPT Lite на реальных данных
Пример 1: Проверка номенклатуры
Тестирование на «чистых» данных
Для чистоты эксперимента выгрузил заведомо «чистые» группы, где ошибки должны быть редкостью.
Результат: из 4092 позиций Yandex GPT посчитал, что 381 не соответствует действительности. Пробежавшись по ним, только 1 позиция была не в той группе


Тестирование на «грязных» данных
Для сравнения я взял другую выборку 1585 позиций, которые:
Уже проходили предварительную нормализацию
Заведомо содержали много некорректных данных
Результаты второй выборки: GPT определила 97.3%, как несоответствие, что достаточно хорошо.
В целом, для «грязных» справочников GPT– отличное решение для первичной очистки данных


Пример 2: Проверка количества штук в упаковке
Идея заключалась в том, чтобы проверить количество штук в упаковке по названию товара.
На тот момент я ещё не знал, что Yandex GPT использует «пустую» модель, в отличие от поисковой версии, которая уже дообучена.
Вот как это работает на практике:
prompt = (f"Ответь только числом без каких-либо пояснений. "
f"Сколько штук в упаковке у товара: {item_name}")
Для названия «Батарейка 1.5В Camelion, LR 6 Plus Alkaline, 1652» модель выдала 4 шт. (вероятно, среагировала на цифру 1652)»
Но если в наименование добавить «BL-2» («Батарейка…BL-2, 1652») GPT четко определила 2 шт. в упаковке.
Это значит, что:
GPT точно распознаёт явные указатели по типу «BL-2»
Без четких маркеров, может давать неточные ответы
Отлично подходит для распознавания и извлечения атрибутов из нестандартизированных наименований
Требуется ручная проверка
Описание работы Yandex GPT
Тарификация за запросы в Yandex GPT
Все запросы платные: 1 запрос = 0,01 руб. (Версия Yandex GPT Lite)
Анализ 4 000 позиций обошелся мне в 40 руб., что делает GPT доступным для небольших проектов
Стоимость может меняться в зависимости от модели
Бесплатный грант для новых пользователей: Срок действия гранта – 60 дней (хватит на ~ 400 000 запросов).
Описание работы кода на Python:
Для начала необходимо получить folder_id и OAuth-token:
Заходим на страницу Yandex Cloud со своим Яндекс ID https://yandex.cloud/ru. Переходим в раздел «Консоль»
Создаем платежный аккаунт и привязываем карту любого российского банка
Для подключения к Yandex GPT нам необходим идентификатор папки folderID
Также нам необходим OAuth token, его можно получить по ссылке

Настройка и работа с API Yandex GPT
После получения folder_id и OAuth-token вам потребуется:
Установка сторонней библиотеки yandexgptlite
Настройки, которые влияют на результат: temperature – по стандарту установлен 0.6, но для более точных ответов советую 0.2-0.3 (чем выше значение, тем более непредсказуемым будет результат) и max_tokens – ограничивает длину ответа
import tkinter as tk
from tkinter import filedialog
import pandas as pd
import time
from yandexgptlite import YandexGPTLite
# Конфигурация YandexGPT
FOLDER_ID = "b1************"
TOKEN_ID = "y0__********************************************************"
# Инициализация YandexGPT
gpt = YandexGPTLite(folder=FOLDER_ID, token=TOKEN_ID)
def check_category_match(material, category):
prompt = f"Соответствует ли наименование модели: {material} к виду номенклатуры: {category}. Ответь только ДА или НЕТ"
try:
response = gpt.create_completion(prompt=prompt, temperature=0.2, max_tokens=3)
return "ДА" if "ДА" in response.upper() else "НЕТ"
except Exception as e:
print(f"Ошибка: {e}")
return "Ошибка проверки"
def process_excel_file():
root = tk.Tk()
root.withdraw()
# Выбор файла
file_path = filedialog.askopenfilename(
title="Выберите Excel файл",
filetypes=[("Excel files", "*.xlsx *.xls"), ("All files", "*.*")]
)
if not file_path:
print("Файл не выбран.")
return
try:
df = pd.read_excel(file_path)
required_columns = ["Наименование модели", "Наименование категории МП"]
for col in required_columns:
if col not in df.columns:
print(f'Столбец "{col}" не найден')
return
# Создание столбцов
if "Соответствие категории" not in df.columns:
df["Соответствие категории"] = ""
# Обработка каждой строчки
for index, row in df.iterrows():
material = str(row["Наименование модели"]).strip()
category = str(row["Наименование категории МП"]).strip()
if not material or material == "nan":
continue
# Проверяем соответствие категории
if category and category != "nan":
match_result = check_category_match(material, category)
df.at[index, "Соответствие категории"] = match_result
print(f"Материал: {material} | Соответствие: {match_result}")
df.to_excel(file_path, index=False)
time.sleep(1)
print("Готово")
except Exception as e:
print(f"Ошибка: {e}")
process_excel_file()
Вывод
Плюсы:
Довольно быстро (1 сек / 1 запрос)
Недорого (от 0.01 руб. / запрос)
Простая интеграция через Python
Использование Yandex GPT без VPN в отличие от ChatGPT
Минусы:
Требуется ручная проверка
Платная модель
Ограниченное использование
Yandex GPT – это недорогой и достаточно гибкий инструмент, особенно с учетом стартового гранта. Его можно использовать достаточно эффективно для анализа данных, только с ограничениями, которые описал выше.