GPT-3.5/4 - обучение на своих данных. Для так себе программистов

Решил попробовать обучить GPT на своих данных. Основное всё гуглится и есть в следующих статьях:

https://toadmin.ru/как-обучить-ии-чат-бота-с-пользователь/

https://beebom.com/how-train-ai-chatbot-custom-knowledge-base-chatgpt-api/

https://habr.com/ru/articles/704600/

Однако во время настройки у меня возникло несколько проблем. Напишу, как я их решил (для тех, кто идёт строго по шагам инструкции и мало в этом всём разбирается).

- Далее возникла проблема при обучении на русском тексте.

- Далее проблема с заканчивающимся триалом на опен-аи

Итак:

1. Вообще, зачем я всё это затеял.

ГПТ в виде веб-интерфейса общается с тобой лишь на основе сформированных когда-то ранее данных и обобщая эти данные. Если ты хочешь, чтобы ГПТ пообщался с тобой на какую-то узкую тему или в рамках конкретной научной теории, бесплатный веб-чат не подойдёт. Поставленная мной изначально цель - выгрузить из интернета необходимые мне страницы и обучить ГПТ на их основе.

2. Если идём по статьям выше, то при запуске питоновского файла пойдут ошибки. Ряд ошибок разобран в комментариях статей, но я свои решил сразу, удалив самый последний питон и поставив конкретную версию со скрина статьи: 3.11.2. Заходим по ссылке и находим внизу интересующее. Например, Windows installer (64-bit).

https://www.python.org/downloads/release/python-3112/

3. В англоязычной версии статьи упоминается конкретная версия gpt_index. Её и устанавливаем.

pip install gpt_index==0.4.24

4. В приведённых статьях в написанном коде при каждом его запуске формируется указанный там файл index.json.

При создании файла, если я правильно понял, проходит дофига запросов к OPEN.AI.

Если вы не меняли данные и после закрытия скрипта просто хотите запустить его же заново, закомментируйте в питоновской коде строчку: "index = construct_index("docs")":

# index = construct_index("docs")

Б) Как показали опыты, если формировать данные на основе txt файлов в UTF-8, index.json хоть и формируется, но ГПТ его не воспринимает. Всё проходит гладко, но чат не в курсе загруженных данных. Хз, почему. Пробовал играть с кодировками - не помогло. Если тот же index.json формируется на основе pdf файлов, ГПТ его понимает. Хотя в обоих случаях конечный файл содержит данные в юникоде.

Если кто-то знает, как это исправить, напишите, пожалуйста. Я ответа не нашёл.

В общем, все файлы потребовалось перегнать в PDF.

Итак.

- Есть ряд статей в интернете. Вы их скачали вручную или написали для этого скрипт. Получили папку с html-файлами.

- Мне по моей изначальной задаче требовалось распарсить эти данные, убрать из них комментарии и прочий шум.

Сначала установите node-js. Затем выполните "npm install pdfkit" для установки пакета работы с pdf.

Назовите файл типа "parse.js" и запустите его из консоли: "node parse.js:". После запуска он перегонит файлы из html в pdf.

const fileSystem = require('fs');

const PDFDocument = require('pdfkit');

async function checkFile(index) {

console.log(files[index]);

if (index>=files.length) {

return;

}

if (files[index].split(".")[1] != "html") {

checkFile(index+1);

return;

}

fileSystem.readFile('./docshtml/'+files[index], 'utf8' ,(err,data) =>{

if(err){

console.error(err);

return;

}

// Здесь обрабатываем и отрезаем в файле всё лишнее. Например, переносы строк оставить, но убрать все html теги:

data = data.split('<br />').join('\n');

data = data.replace(/<[^>]*>?/gm, '');

function createInvoice() {

let doc = new PDFDocument({ margin: 50 });

generateHeader(doc);

doc.end();

doc.pipe(fileSystem.createWriteStream('./docs/'+files[index].split(".")[0] +'.pdf'));

checkFile(index+1);

}

function generateHeader(doc) {

doc

.fillColor("#444444")

.fontSize(14)

.font("./arial.ttf")

.text(data, 110, 57)

.fontSize(10)

.moveDown();

}

createInvoice();

return;

} );

}

var files = fileSystem.readdirSync('./docshtml/');

console.log(files);

checkFile(0);

return;

Одна из проблем, с которой я столкнулся, PDF не хотел формировать текст с русским языком. Поэтому в коде и пришлось указать конкретный шрифт - arial.ttf.

Сначала нужно его скачать из интернетов и разместить в той же корневой директории проекта.

Скачать можно, например, здесь (гуглите - да нагуглите):

https://allshrift.ru/font/arial/

Профит.

Наконец-то всё заработало.

Следуя инструкции из статей выше, запускаем питоновский скрипт и ура - ГПТ понимает и помнит данные, загруженные из директории docs.

В) Триальный баланс OPEN.AI быстро заканчивается.

Раза три у меня получилось по изначальной инструкции сгенерить новые почтовые аккаунты, но в какой-то момент GOOGLE отказался регать новые почты без телефона. И перестал принимать номера телефонов, купленные на указанных в статьях выше ресурсах.

Также столкнулся с тем, что OPEN-AI не хочет принимать подозрительные почтовые адреса.

Как решить эту проблему, пока не знаю.

Если кто знает, напишите, пожалуйста.

1) Знает ли кто-то нормальные почтовые ящики, которые быстро и легко регать?

2) Может быть, кто-то знает сервисы по покупке иностранных номеров лучше, чем указан в статьях выше?

3) Может быть, кто-то знает, как платить OPEN.AI и нормально с ним работать? Сейчас оплатить можно только "upgrade" за 20 баксов, но он никак не поможет с баблом на АПИ-запросы. Для нормальной оплаты, нужны реквизиты организации в США.

Г) Есть ещё одна проблема, с которой столкнулся. Ответы на русском языке по АПИ возвращаются обрезанные примерно на пятистах символах. Обрезаются посреди предложения и никакие инструкции, типа "продолжи" или "ты не закончил, продолжи с момента" - не работают.

Вариант "тебе задали вопрос: 'XXX', Был ответ: 'YYY', продолжи его" - кое-как работает, но ГПТ начинается заговариваться и повторяться.

Автор поста оценил этот комментарий
Вы захотели обучить ГПТ на своих данных.

Дальше вы все время отсылаете нас читать указанные статьи (2 простыни русского, одна простыня eng текста) и больше гуглить, чтобы вам помочь.


В итоге в вашем посте мешанина из питона, node.js, и все это через pdf :)

Вы не изучили нормально документацию к API ChatGPT (символы у вас обрезаются)

Спрашиваете про какие-то нормальные почтовые ящики (что значит нормальные? Которые 100% будут проходит проверку в OpenAI? Пишите в поддержку OpenAI :) )

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

С пунктом 3 вариантов нет. Нужна карта забугорного банка. (Ну можно погуглить сервисы пополнения, но это кот в мешке, 50/50 - может кинут, а может и нет)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вас я никуда не отсылаю.

Я захотел обучить ГПТ на своих данных - и у меня это получилось.

Я описал проблемы, которые на вскидку не гуглились. Для тех, кто тоже столкнётся, когда пойдёт по приведённым статьям.


Вы же зачем-то попытались пересказать пост, не понимая, о чём речь.

Чат ГПТ справился бы лучше.

Но да, вы верно заметили, что речь идёт про питон, ноду и ПДФ.

Но нет, карта забугорного банка здесь вообще не в тему.

показать ответы
Автор поста оценил этот комментарий

Пробовал обучать свою модель с помощью встроенного конструктора на chat.openai.com, я ему также скармливал PDF файлы на которых я хотел его обучить, и в целом он давал осмысленный результат и осуществлял корректный поиск по файлам

Касательно вопросов из поста – у меня никогда не возникало проблем с почтами Outlook, они быстрее регистрируются сравнительно с Гуглом, не требуют номера телефона и просты в использовании

Теперь несколько моих соображений по поводу триального баланса OpenAI - на гитхабе есть репозитория с веб-интерфейсом для GPT который работает по API и не требует регистрации и VPN. GptNextWeb, что то типа такого.

Также есть проект NeuroAI который основан на gpt4fall и дает бесплатный доступ к GPT4 через обратное программирование. Я видел примеры, где API от NeuroAI использовали в своих целях и заменяли путь обращения к GPT на этот API, но пока я не дошел до этого

В любом случае, прошло 11 месяцев с момента написания поста, возможно ты - уважаемый автор, уже нашел решение)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо) Погляжу обязательно.

Автор поста оценил этот комментарий

Подскажите, если нужно обучить модель GPT на своих данных, данные которые мы кормим GPT переводятся в токены и стоят$ ?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да. У меня довольно быстро сожрался дефолтный баланс в 20$. Если правильно помню, один мегабайт данных обрабатывался, формировался json-файл в гигабайт и стоило это около 2 долларов.

1
Автор поста оценил этот комментарий
*Если ты хочешь, чтобы ГПТ пообщался с тобой на какую-то узкую тему или в рамках конкретной научной теории, бесплатный веб-чат не подойдёт.* А почему обычные GPT не подойдут ? У них не хватает знаний ? Или отказываются углубляться в тему ?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Кто-то сравнивал современные GPT с архиватором, который прекрасно архивирует знания в целом из больших массивов информации. После формирования БД он не ищет по интернетам, он смотрит по своей БД. В каких-то узких областях он возможно и сумел в данной версии сохранить всё верно и запомнить. Особенно в однозначных и важных областях с точными знаниями. Но если нужно его натренировать на конкретных объёмах - он должен выучить именно их. А в той версии, в которой он собирался, он мог их просто не заметить на просторах интернета.


Ну, к примеру, нужно вам, чтобы бот идеально знал содержание какого-то форума и всё, что там происходило. Если его не тренировать специально по форуму, то он даже не поймёт, про какой форум идёт речь.

показать ответы
Автор поста оценил этот комментарий

Я рад, конечно, что у вас получилось. Вот только всё, что тут в посте описано, не несет полезного дополнения к тому, что приведено в статьях по вашим ссылкам.

Вы уж либо пишите нормальную статью, что и как, либо просто скиньте ссылки и нормально сформулируйте вопросы, с которыми нужна помощь ("нормальные почтовые ящики" и "сервисы по покупке иностранных номеров лучше, чем указан в статьях выше" - это не вопросы).

Сейчас в статье одна вода - что-то нагуглил, методом тыка получилось. А теперь помогите с вопросами, которые "навскидку" не получилось нагуглить.

раскрыть ветку (1)
Автор поста оценил этот комментарий

"всё, что тут в посте описано, не несет полезного дополнения"

С чего вы решили? Там же "простыни", которые вам лень читать.



"А теперь помогите с вопросами"

Вас бомбит от того, что кто-то кого-то в интернетах о чём-то попросил?


Лично от вас мне никакой помощи не требуется, тем более, что вы вообще не понимаете, о чём речь.


На решение описанных проблем мне потребовалось несколько часов своего времени.

В интернетах этих ответов не было.

Я пост написал для тех, кто столкнётся с теми же проблемами.


Если же вы можете написать "нормальную статью" на тему - велкам.

показать ответы