August 15

Bonpet & OpenAI

1. Ответ который дал OpenAI по нашей задаче (я его достаточно глубоко ввёл в контекст нашей задачи, мягко говоря)

Обновленный план решения задачи:

  1. Загрузка спецификации на сайт:
    • Пользователь (менеджер или клиент) загружает спецификацию с оборудованием в интерфейс на вашем сайте. Поддерживаются различные форматы файлов, такие как PDF, Word, Excel.
  2. Обработка данных с использованием ChatGPT и JSON-файла:
    • ChatGPT (модель GPT-4), обученная с учетом вашей задачи, анализирует текст спецификации и распознает наименования оборудования.
    • На основе распознанных наименований ChatGPT сопоставляет каждую позицию с данными из загруженного вами JSON-файла, который содержит информацию о соответствующих ETIM-классах, фичах и значениях.
    • Модель генерирует структурированный JSON-ответ, содержащий точные ETIM-коды, а также фичи и их значения для каждого распознанного оборудования.
  3. Передача данных на фронтенд вашего сайта:
    • Полученный JSON-файл передается на фронтенд вашего сайта, где начинается процесс подбора оборудования.
    • Ваша система на основе ETIM-кодов ищет соответствующее оборудование в каталоге и формирует список доступных позиций с учетом наличия на складе и актуальных цен.
  4. Автоматизация коммерческого предложения:
    • Сформированные данные используются для автоматического создания коммерческого предложения (КП) или счета, которое можно отправить клиенту в течение нескольких минут.
    • КП включает все необходимые детали: наименование товара, количество, цену и другие характеристики.

Дополнительные шаги:

  • Регулярное обновление JSON-файла: Важно регулярно обновлять базу данных ETIM-кодов, чтобы обеспечить точное соответствие и актуальность информации.
  • Тестирование и оптимизация: Регулярное тестирование системы на реальных данных поможет выявить и исправить возможные ошибки, повысив точность и надежность модели.


2. Я закинул в него наш JSON-файл, по которому он делает подбор ETIM-кодов. С файлом всё ок, он ему понравился.

- Затем закинул word файл с уточнением по ETIM-кодам и он тоже ему понравился, но сразу же я объяснил, что это не системное решение, и вот что ответил ChatGPT:

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

1. Fine-Tuning GPT-4 на специфических данных

  • Создание обучающего датасета: Соберите большой набор данных, включающий все ваши классы оборудования, фичи и значения фичей. Этот датасет должен содержать примеры из реальных спецификаций с правильными ETIM-кодами.
  • Обучение модели: Используйте этот датасет для тонкой настройки (fine-tuning) модели GPT-4. Это повысит способность модели правильно распознавать и сопоставлять оборудование и фичи с ETIM-кодами.
  • Регулярное обновление: Убедитесь, что модель регулярно дообучается с использованием новых данных, чтобы сохранять актуальность и точность.

2. Использование справочной базы данных в режиме реального времени

  • Интеграция с базой данных: Вместо того чтобы полностью полагаться на модель, можно интегрировать её с базой данных, содержащей все актуальные ETIM-коды. Модель может использовать эту базу данных для проверки и корректировки своих ответов в режиме реального времени.
  • Контекстные подсказки: Внутри системного промта добавьте инструкции, чтобы модель обращалась к этой базе данных каждый раз, когда возникает неопределенность в выборе кода.

3. Интерактивное обучение через обратную связь

  • Обратная связь от пользователей: Внедрите систему, где менеджеры могут давать обратную связь на работу модели. Например, если GPT-4 неправильно сопоставил оборудование и код, менеджер может указать на ошибку.
  • Автоматическое дообучение: Эти данные обратной связи могут быть использованы для дообучения модели, чтобы она улучшала свою работу с течением времени.

4. Классификация и работа с неоднозначностями

  • Определение правил и приоритетов: Для случаев, когда модель не может точно определить код или значение, определите правила приоритизации (например, всегда использовать определенные классы при наличии противоречий).
  • Работа с неуверенностью: Если модель не уверена в результате, она может возвращать несколько возможных вариантов с указанием уровня уверенности для каждого из них. Это даст возможность менеджерам выбрать наиболее подходящий вариант.


Окей, в целом тут всё понятно, как-то надо создать размеченный датасет, всё это прикрутить и будет работать.

Но, например, у нас есть такое правило, если автоматический выключатель меньше 63А, то подбираем класс EC000042 - Модульный, а не EC000228 - Силовой (его выбирает chatGPT)

Дальше я задал вопрос, как решить такие моменты ? они достаточно тонкие, но нужно каким-то образом такие правила зашить в подбор ETIM-кодов.

Вот что ответил ChatGPT:

Вы подняли очень важный вопрос, связанный с условной логикой при выборе ETIM-классов. Давайте рассмотрим, как можно интегрировать такие правила в работу модели GPT-4, чтобы она правильно распознавала и применяла соответствующие ETIM-классы в зависимости от характеристик оборудования.

Подход 1: Fine-Tuning с Условиями

При fine-tuning модели можно учесть такие условия через использование примеров в датасете. Включите в датасет достаточное количество примеров, где указано:

  1. Силовой автоматический выключатель (более 63А): Примеры, где амперность больше 63А, и присвоен ETIM-класс EC000228.
  2. Модульный автоматический выключатель (менее 63А): Примеры, где амперность меньше 63А, и присвоен ETIM-класс EC000042.

Образцы могут выглядеть так:

jsonКопировать код{
  "Наименование": "Автоматический выключатель NXB-63 2P 40А 6кА х-ка C",
  "Class": "EC000042",
  "Features": {
    "EF001391": "2P",
    "EF007048": "6кА",
    "EF001017": "40А"
  }
}

Подход 2: Использование Справочных Правил через Системный Промт

В системный промт можно добавить правила, которые будут руководить моделью при выборе ETIM-классов. Например:

plaintextКопировать кодЕсли амперность автоматического выключателя меньше 63А, присвой ETIM-класс EC000042. Если амперность равна или больше 63А, присвой ETIM-класс EC000228.

Подход 3: Алгоритмическая Логика на Этапе Постобработки

Еще один подход — реализовать логику на стороне вашего приложения, которое получает JSON от GPT-4. Вот как это может работать:

  1. Модель GPT-4 генерирует JSON с данными без учета правил по амперности.
  2. Ваше приложение проверяет амперность в JSON и автоматически исправляет ETIM-классы, если амперность менее 63А.

Пример алгоритма:

pythonКопировать кодfor item in json_response:
    if item["Features"]["EF001017"] < "63А":
        item["Class"] = "EC000042"
    else:
        item["Class"] = "EC000228"

Подход 4: Регулярное Обучение Модели с Новыми Примерами

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

Заключение

Лучше всего комбинировать подходы: использовать правила в системном промте, fine-tuning с примерами, и постобработку результатов на вашей стороне. Это обеспечит высокую точность и гибкость системы в работе с разными спецификациями и условиями.

Итого что мы имеем:

1. Модель ChatGPT4-o, которая сможет обрабатывать файлы, распознавать оборудование и присваивать ETIM-коды.
2. Системный промт.
3. JSON файл с базой ETIM кодов.

Что нужно сделать:

Вы сделали значительные шаги в направлении решения вашей задачи, но для полного успеха есть несколько ключевых элементов, которые нужно добавить или доработать:

1. Обучающий Датасет для Fine-Tuning

  • Создание и сбор датасета: Для полноценного fine-tuning модели нужен качественный и репрезентативный обучающий датасет, который будет включать как можно больше примеров из реальных спецификаций с правильными ETIM-кодами. Этот датасет должен учитывать все возможные вариации и исключения, чтобы модель могла обучиться на реальных данных и понимать контекст.

2. Регулярное обновление и поддержка базы данных ETIM-кодов

  • Механизм обновления: Важно настроить процесс регулярного обновления базы данных ETIM-кодов, так как новые коды и изменения могут появляться со временем. Это можно реализовать как через автоматическое обновление, так и вручную.
  • Валидация данных: Включение механизма проверки точности и актуальности данных, особенно при обновлениях.

3. Обратная связь и дообучение модели

  • Механизм обратной связи: Важно создать интерфейс или систему, где менеджеры смогут давать обратную связь по работе модели, например, отмечать ошибки или подтверждать правильные результаты. Эта информация может использоваться для дальнейшего улучшения модели.
  • Автоматическое дообучение: Интеграция механизма дообучения на основе обратной связи от пользователей для повышения точности модели с течением времени.

4. Интеграция с веб-интерфейсом и внутренними системами

  • Создание интерфейса загрузки файлов: Разработка интерфейса на сайте, который позволит пользователям загружать спецификации и автоматически отправлять их на обработку в ChatGPT.
  • Интеграция с системой управления запасами и каталогом: Настройка автоматического поиска и подбора оборудования на основе ETIM-кодов, полученных от модели, с учетом наличия на складе и актуальных цен.
  • Автоматизация формирования коммерческих предложений (КП): Настройка системы автоматического формирования и отправки коммерческих предложений на основе данных, полученных от модели.

5. Тестирование и оптимизация

  • Реальное тестирование: Прогон системы на реальных данных, которые были ранее проверены вручную, чтобы выявить возможные недочеты и области для оптимизации.
  • Мониторинг производительности: Постоянный мониторинг точности, скорости и надежности работы модели, особенно на ранних этапах её использования.

После я попросил написать подробно про API и Fine-Tuning

API

1. Получение доступа к API OpenAI

  • Регистрация: Если у вас еще нет аккаунта, зарегистрируйтесь на платформе OpenAI (https://platform.openai.com).
  • Получение API ключа: После регистрации и входа в аккаунт, перейдите в раздел API и создайте API ключ. Этот ключ будет использоваться для аутентификации запросов к API.

2. Настройка сервера для обработки запросов

  • Выбор сервера: Вам не обязательно использовать отдельный сервер, если у вас уже есть сервер, который может обрабатывать запросы и взаимодействовать с API. Однако, если у вас еще нет сервера или требуется масштабирование, вы можете арендовать виртуальный сервер (VPS) у любого облачного провайдера, например, AWS, Google Cloud, DigitalOcean или другой.
  • Установка серверного ПО: На сервере должно быть установлено программное обеспечение для обработки HTTP-запросов и взаимодействия с API OpenAI. Обычно используется веб-фреймворк, такой как Flask или Django (для Python), или Express.js (для Node.js).

3. Подключение к API OpenAI

  • Базовый пример на Python:py

import openai

# Установите ваш API-ключ
openai.api_key = 'your-api-key-here'

response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "Вы — высокоинтеллектуальный инженер..."},
{"role": "user", "content": "Загрузите спецификацию и обработайте её."}
]
)

print(response.choices[0].message['content'])

  • Этот код выполняет запрос к API, отправляя текстовый запрос и получая ответ. Вы можете интегрировать это в ваше серверное приложение.

4. Обработка спецификаций

  • Загрузка и предобработка файлов: Ваша веб-приложение должно позволять пользователям загружать файлы спецификаций. После загрузки файл отправляется на сервер для обработки.
  • Отправка запроса к GPT-4: Сервер преобразует содержимое файла в текстовый формат (если это, например, PDF или DOCX), затем отправляет его к API OpenAI, включая системный промт и другие параметры.
  • Обработка ответа: Полученный от API ответ в формате JSON отправляется на фронтенд, где происходит дальнейшая обработка и подбор оборудования.

5. Безопасность и мониторинг

  • Ограничение доступа к API: Храните API ключ в безопасности, используйте переменные окружения на сервере для хранения ключа.
  • Логирование и мониторинг: Включите логирование запросов и ошибок, чтобы отслеживать производительность и вовремя выявлять проблемы.

6. Масштабирование

  • Масштабирование серверов: Если вы планируете большую нагрузку (много пользователей), рассмотрите возможность автоматического масштабирования серверов, чтобы выдерживать возросшие запросы.
  • Обработка очередей: Если возникает много параллельных запросов, можно использовать систему очередей для управления нагрузкой на сервер.

Fine-Tuning и создание правильного датасета

1. Создание правильного датасета

Правильный датасет — это основа успешного Fine-Tuning. Важно, чтобы датасет был качественным, репрезентативным и содержал разнообразные примеры, соответствующие вашей задаче.

a. Структура датасета

Датасет для Fine-Tuning GPT-4 должен содержать следующие элементы:

  • Входной текст: Пример текста из спецификации, который требуется обработать.
  • Целевой текст: Правильный результат, которого вы ожидаете от модели (например, ETIM-коды, фичи и значения).

Пример структуры датасета:

jsonКопировать код{
    "prompt": "Автоматический выключатель NXB-63 2P 10А 6кА х-ка C",
    "completion": "{\n    \"Class\": \"EC000042\",\n    \"Features\": {\n        \"EF001391\": \"2P\",\n        \"EF007048\": \"6кА\",\n        \"EF001017\": \"10А\"\n    }\n}"
},
{
    "prompt": "Диф. автомат NB2LE 1P+N 6А 30мА 1мод. х-ка C электронный тип AС 6кА",
    "completion": "{\n    \"Class\": \"EC000228\",\n    \"Features\": {\n        \"EF001391\": \"1P+N\",\n        \"EF007048\": \"6кА\",\n        \"EF001017\": \"6А\",\n        \"EF000305\": \"30мА\"\n    }\n}"
}

b. Типы данных

  • Реальные спецификации: Используйте реальные спецификации, которые клиенты отправляют вашей компании.
  • Вариативность: Включите разнообразные примеры, чтобы учесть возможные вариации написания и упоминания оборудования.
  • Особые случаи: Добавьте примеры с особенными правилами (например, автоматические выключатели с амперностью менее 63А).

c. Объем датасета

  • Минимальный объем датасета для качественного fine-tuning варьируется, но рекомендуется использовать от нескольких сотен до нескольких тысяч примеров, чтобы модель обучалась на достаточном объеме данных.

2. Куда загружать датасет?

Датасет загружается на платформу, которая поддерживает Fine-Tuning модели GPT. Это может быть платформа OpenAI, которая предоставляет инструменты для выполнения Fine-Tuning на ваших данных.

Платформы для Fine-Tuning:

  • OpenAI API: OpenAI предоставляет API для Fine-Tuning, где вы можете загрузить свой датасет и управлять процессом обучения.
  • Hugging Face: Если вы используете другие модели на базе GPT, такие как GPT-3, вы можете рассмотреть платформу Hugging Face для Fine-Tuning.

3. Процесс Fine-Tuning

a. Загрузка датасета

  • После создания датасета его нужно загрузить на платформу, поддерживающую Fine-Tuning. Это может быть сделано через API или интерфейс веб-приложения.

b. Настройка параметров обучения

  • Параметры обучения: Вы можете настроить такие параметры, как количество эпох (число проходов по всему датасету), размер батча (количество примеров, обрабатываемых одновременно), и скорость обучения (learning rate).
  • Мониторинг процесса: Во время обучения рекомендуется мониторить процесс и проверять промежуточные результаты.

c. Валидация и тестирование

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

4. Как вносить корректировки?

a. Обратная связь

  • Создайте механизм обратной связи, где пользователи (например, менеджеры) могут отмечать ошибки или неточности в работе модели. Эти данные могут быть использованы для последующего дообучения.

b. Постоянное обновление

  • По мере накопления новых данных и спецификаций, регулярно обновляйте датасет и повторяйте процесс Fine-Tuning для поддержания актуальности и точности модели.

c. Регулярное дообучение

  • Планируйте регулярное дообучение модели на новых данных, особенно если спецификации или требования изменяются со временем.

Заключение

Fine-Tuning модели GPT-4 на специфических данных требует тщательной подготовки и правильной настройки. Создание качественного датасета, выбор правильной платформы и регулярное дообучение — ключевые факторы успеха. Эти шаги помогут вам адаптировать модель к вашим специфическим нуждам, обеспечивая высокую точность и эффективность работы системы.