GPT-3.5/4 - обучение на своих данных. Для так себе программистов
Решил попробовать обучить GPT на своих данных. Основное всё гуглится и есть в следующих статьях:
Однако во время настройки у меня возникло несколько проблем. Напишу, как я их решил (для тех, кто идёт строго по шагам инструкции и мало в этом всём разбирается).
- Далее возникла проблема при обучении на русском тексте.
- Далее проблема с заканчивающимся триалом на опен-аи
Итак:
1. Вообще, зачем я всё это затеял.
ГПТ в виде веб-интерфейса общается с тобой лишь на основе сформированных когда-то ранее данных и обобщая эти данные. Если ты хочешь, чтобы ГПТ пообщался с тобой на какую-то узкую тему или в рамках конкретной научной теории, бесплатный веб-чат не подойдёт. Поставленная мной изначально цель - выгрузить из интернета необходимые мне страницы и обучить ГПТ на их основе.
2. Если идём по статьям выше, то при запуске питоновского файла пойдут ошибки. Ряд ошибок разобран в комментариях статей, но я свои решил сразу, удалив самый последний питон и поставив конкретную версию со скрина статьи: 3.11.2. Заходим по ссылке и находим внизу интересующее. Например, Windows installer (64-bit).
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.
Сначала нужно его скачать из интернетов и разместить в той же корневой директории проекта.
Скачать можно, например, здесь (гуглите - да нагуглите):
Профит.
Наконец-то всё заработало.
Следуя инструкции из статей выше, запускаем питоновский скрипт и ура - ГПТ понимает и помнит данные, загруженные из директории docs.
В) Триальный баланс OPEN.AI быстро заканчивается.
Раза три у меня получилось по изначальной инструкции сгенерить новые почтовые аккаунты, но в какой-то момент GOOGLE отказался регать новые почты без телефона. И перестал принимать номера телефонов, купленные на указанных в статьях выше ресурсах.
Также столкнулся с тем, что OPEN-AI не хочет принимать подозрительные почтовые адреса.
Как решить эту проблему, пока не знаю.
Если кто знает, напишите, пожалуйста.
1) Знает ли кто-то нормальные почтовые ящики, которые быстро и легко регать?
2) Может быть, кто-то знает сервисы по покупке иностранных номеров лучше, чем указан в статьях выше?
3) Может быть, кто-то знает, как платить OPEN.AI и нормально с ним работать? Сейчас оплатить можно только "upgrade" за 20 баксов, но он никак не поможет с баблом на АПИ-запросы. Для нормальной оплаты, нужны реквизиты организации в США.
Г) Есть ещё одна проблема, с которой столкнулся. Ответы на русском языке по АПИ возвращаются обрезанные примерно на пятистах символах. Обрезаются посреди предложения и никакие инструкции, типа "продолжи" или "ты не закончил, продолжи с момента" - не работают.
Вариант "тебе задали вопрос: 'XXX', Был ответ: 'YYY', продолжи его" - кое-как работает, но ГПТ начинается заговариваться и повторяться.