Як навчити чат-бота зі штучним інтелектом за допомогою спеціальної бази знань за допомогою ChatGPT API

У попередній нашій публікації ми розглянули процес створення чат-бота на основі штучного інтелекту з використанням API ChatGPT, а також налаштування його персоналізації через призначення ролі. Однак, що робити, якщо ви бажаєте навчити ШІ на власних даних? Наприклад, у вас є книга, фінансові звіти, чи велика база даних, і вам потрібен легкий спосіб пошуку інформації в них. У цій статті ми пропонуємо детальний і зрозумілий посібник з навчання чат-бота на основі ШІ за допомогою вашої персональної бази знань, використовуючи інструменти LangChain та ChatGPT API. Ми задіюємо LangChain, GPT Index, а також інші потужні бібліотеки для навчання ШІ чат-бота за допомогою великої мовної моделі (LLM) OpenAI. Отже, давайте розглянемо, як можна навчити та розробити ШІ чат-бота, використовуючи ваш власний набір даних.

Навчання чат-бота ШІ з використанням персональної бази знань через ChatGPT API, LangChain та GPT Index (2023)

У цьому матеріалі ми детально розкриваємо процес навчання чат-бота ШІ на ваших власних даних. Ми висвітлюємо усі етапи, починаючи від налаштування необхідних інструментів і програмного забезпечення, до безпосереднього навчання моделі ШІ. Рекомендовано дотримуватися інструкцій послідовно, не пропускаючи жодного кроку.

Ключові моменти перед навчанням ШІ на ваших даних

1. Ви можете проводити навчання чат-бота ШІ на будь-якій платформі, будь то Windows, macOS, Linux або ChromeOS. У цій інструкції я використовую Windows 11, але кроки для інших операційних систем є майже ідентичними.

2. Посібник розроблено для широкого кола користувачів, і інструкції подано доступною мовою. Тому, навіть якщо ваші знання про комп’ютери є базовими, і ви не вмієте програмувати, ви зможете легко навчитися і створити Q&A чат-бота на основі ШІ за лічені хвилини. Якщо ви читали нашу попередню статтю про чат-бота ChatGPT, вам буде ще простіше зрозуміти процес.

3. Оскільки ми будемо навчати чат-бота ШІ на основі ваших даних, рекомендується використовувати комп’ютер з високою продуктивністю, зокрема потужним центральним та графічним процесором. Однак для цілей тестування можна застосовувати будь-який звичайний комп’ютер, і він має працювати без проблем. Я використовував Chromebook для навчання моделі штучного інтелекту за допомогою книги на 100 сторінок (розміром приблизно 100 МБ). Якщо ви плануєте навчити ШІ великому набору даних, який складається з тисяч сторінок, потужний комп’ютер буде вкрай необхідний.

4. Нарешті, для досягнення найкращих результатів, набір даних має бути англійською мовою. Однак, за даними OpenAI, модель також підтримує популярні міжнародні мови, такі як французька, іспанська, німецька тощо. Ви можете спробувати використовувати свою рідну мову.

Налаштування програмного середовища для навчання чат-бота ШІ

Як і в попередній статті, ви повинні мати встановлені Python та Pip, а також певний набір бібліотек. У цій статті ми розглянемо процес налаштування з нуля, щоб нові користувачі також змогли розібратися. Коротко кажучи, ми встановимо Python та Pip. Далі ми встановимо необхідні Python бібліотеки, включаючи OpenAI, GPT Index, Gradio та PyPDF2. У процесі ви дізнаєтеся, за що відповідає кожна з цих бібліотек. Не хвилюйтеся, процес встановлення досить простий. Давайте перейдемо до нього.

Інсталяція Python

1. Перш за все, вам потрібно встановити Python (разом з Pip) на вашому комп’ютері. Перейдіть за цим посиланням та завантажте інсталяційний файл, що відповідає вашій операційній системі.

2. Запустіть завантажений файл інсталятора, переконавшись, що позначено пункт “Додати Python.exe до PATH”. Це важливий крок. Після цього натисніть “Install Now” та завершіть процес встановлення Python, дотримуючись інструкцій.

3. Щоб переконатися, що Python встановлено правильно, відкрийте термінал на вашому комп’ютері. Я використовую термінал Windows, але ви можете використовувати командний рядок. Введіть наступну команду, і термінал покаже версію встановленого Python. У Linux та macOS вам можливо доведеться використовувати команду python3 –version замість python –version.

python --version

Оновлення Pip

При встановленні Python, Pip також встановлюється автоматично. Давайте оновимо його до останньої версії. Для тих, хто не знає, Pip – це менеджер пакетів для Python. Він дозволяє встановлювати тисячі бібліотек Python з термінала. За допомогою Pip ми встановимо OpenAI, gpt_index, gradio та PyPDF2. Ось необхідні кроки.

1. Відкрийте термінал на вашому комп’ютері. Я використовую термінал Windows, але ви можете використовувати командний рядок. Виконайте команду нижче, щоб оновити Pip. Знову ж таки, у Linux та macOS вам може знадобитися використовувати python3 і pip3.

python -m pip install -U pip

2. Щоб перевірити, чи правильно встановлено Pip, виконайте наступну команду. Термінал відобразить номер версії. Якщо ви отримуєте будь-які помилки, ознайомтеся з нашою інструкцією щодо встановлення Pip у Windows, щоб вирішити проблеми, пов’язані зі шляхами PATH.

pip --version

Встановлення бібліотек OpenAI, GPT Index, PyPDF2 та Gradio

Після налаштування Python та Pip, прийшов час встановити основні бібліотеки, які допоможуть нам навчити чат-бота ШІ з використанням персональної бази знань. Ось кроки, які необхідно виконати.

1. Відкрийте термінал і виконайте команду нижче для встановлення бібліотеки OpenAI. Ми будемо використовувати її як LLM (велику мовну модель) для навчання та створення чат-бота ШІ. Ми також імпортуємо структуру LangChain з OpenAI. Користувачам Linux і macOS може знадобитися використовувати pip3 замість pip.

pip install openai

2. Далі давайте встановимо GPT Index, також відомий як LlamaIndex. Він дозволить LLM підключатися до зовнішніх даних, які є нашою базою знань.

pip install gpt_index

3. Після цього встановіть PyPDF2 для обробки PDF файлів. Якщо ваші дані у форматі PDF, ця бібліотека допоможе програмі їх легко зчитувати.

pip install PyPDF2

4. Нарешті, встановіть бібліотеку Gradio. Вона призначена для створення простого інтерфейсу користувача для взаємодії з навченим чат-ботом ШІ. На цьому етапі ми завершили встановлення усіх необхідних бібліотек для навчання чат-бота ШІ.

pip install gradio

Завантаження редактора коду

Наостанок нам потрібен редактор коду для редагування нашого коду. Для Windows я б рекомендував Notepad++ (Завантажити). Просто завантажте та встановіть цю програму. Ви також можете використовувати VS Code на будь-якій платформі, якщо вам зручно працювати з інтегрованими середовищами розробки (IDE). Крім VS Code, ви можете встановити Sublime Text (Завантажити) на macOS та Linux.

Для ChromeOS ви можете використовувати програму Caret (Завантажити) для редагування коду. Ми майже завершили налаштування програмного середовища. Залишилось отримати ключ API OpenAI.

Безкоштовне отримання ключа API OpenAI

Для навчання та створення чат-бота на основі штучного інтелекту з використанням персональної бази знань нам необхідно отримати ключ API від OpenAI. Ключ API дозволить вам використовувати модель OpenAI як LLM для обробки ваших даних та надання відповідей. Наразі OpenAI надає новим користувачам безкоштовні ключі API з кредитом у 5 доларів протягом перших трьох місяців. Якщо ви вже створювали обліковий запис OpenAI, у вас може бути безкоштовний кредит на 18 доларів. Після використання безкоштовного кредиту вам потрібно буде оплачувати доступ до API. На даний момент, він доступний безкоштовно для всіх користувачів.

1. Перейдіть на platform.openai.com/signup та створіть безкоштовний обліковий запис. Якщо у вас вже є обліковий запис OpenAI, просто увійдіть.

2. Далі, натисніть на ваш профіль у верхньому правому куті та виберіть “Переглянути ключі API” зі спадного меню.

3. Натисніть “Створити новий секретний ключ” і скопіюйте ключ API. Зверніть увагу, що пізніше ви не зможете переглянути або скопіювати ключ API знову. Тому рекомендується негайно скопіювати та зберегти ключ API у текстовому файлі.

4. Крім того, не розголошуйте ключ API публічно. Це ваш приватний ключ, призначений лише для доступу до вашого облікового запису. Ви можете видаляти і створювати декілька закритих ключів (до п’яти).

Навчання та створення чат-бота ШІ з використанням персональної бази знань

Тепер, коли ми налаштували програмне забезпечення та отримали ключ API від OpenAI, приступимо до навчання нашого чат-бота ШІ. Тут ми будемо використовувати модель “text-davinci-003” замість останньої “gpt-3.5-turbo”, оскільки Davinci краще справляється з завершенням тексту. За бажанням ви можете змінити модель на Turbo для зменшення витрат. Перейдемо до інструкцій.

Додавання документів для навчання чат-бота ШІ

1. Перш за все, створіть нову папку під назвою “docs” у зручному для вас місці, наприклад, на робочому столі. Ви також можете обрати інше розташування. Однак, збережіть назву папки “docs”.

2. Потім перемістіть усі документи, які ви хочете використати для навчання ШІ, в цю папку “docs”. Ви можете додати кілька текстових файлів або PDF (в тому числі відсканованих). Якщо у вас є великі таблиці в Excel, ви можете імпортувати їх як CSV або PDF файл, а потім додати до папки “docs”. Ви навіть можете додати файли баз даних SQL, як описано в цьому твіті Langchain AI. Я не тестував багато форматів, окрім згаданих, але ви можете додати файли та перевірити їх самостійно. Для цієї інструкції я додам свою статтю про NFT у форматі PDF.

Примітка: Якщо ви використовуєте великі документи, обробка даних займе більше часу, в залежності від потужності вашого процесора та графічного ядра. Також швидко можуть витратитися ваші безкоштовні токени OpenAI. Тому для початку рекомендується використовувати невеликий документ (30-50 сторінок або файли <100MB), щоб зрозуміти процес.

Підготовка коду

1. Відкрийте Notepad++ (або інший редактор коду) та скопіюйте наступний код у новий файл. Я вдячний за допомогу armrrs на Google Colab та адаптував цей код для роботи з PDF файлами, а також додав інтерфейс Gradio.

from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os

os.environ["OPENAI_API_KEY"] = 'Your API Key'

def construct_index(directory_path):
    max_input_size = 4096
    num_outputs = 512
    max_chunk_overlap = 20
    chunk_size_limit = 600

    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)

    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs))

    documents = SimpleDirectoryReader(directory_path).load_data()

    index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)

    index.save_to_disk('index.json')

    return index

def chatbot(input_text):
    index = GPTSimpleVectorIndex.load_from_disk('index.json')
    response = index.query(input_text, response_mode="compact")
    return response.response

iface = gr.Interface(fn=chatbot,
                     inputs=gr.inputs.Textbox(lines=7, label="Enter your text"),
                     outputs="text",
                     title="Custom-trained AI Chatbot")

index = construct_index("docs")
iface.launch(share=True)

2. Ось як виглядає код у редакторі.

3. Далі натисніть “Файл” в меню та виберіть “Зберегти як…”

4. Збережіть файл як “app.py”, а в пункті “Тип файлу” виберіть “Усі типи”. Потім збережіть файл там же, де ви створили папку “docs” (в моєму випадку це робочий стіл). Ви можете використовувати іншу назву файлу, але переконайтеся, що додано “.py”.

5. Переконайтеся, що папка “docs” та файл “app.py” знаходяться в одному місці, як показано на скріншоті нижче. Файл “app.py” повинен бути поза папкою “docs”, а не всередині неї.

6. Знову перейдіть до коду в Notepad++. Замініть “Your API Key” на ключ API, який ви згенерували на сайті OpenAI раніше.

7. Натисніть “Ctrl + S” щоб зберегти зміни. Тепер все готово до запуску коду.

Створення ChatGPT AI бота з використанням персональної бази знань

1. Відкрийте термінал та виконайте команду нижче, щоб перейти на робочий стіл. Саме там я зберіг папку “docs” та файл “app.py”. Якщо ви зберегли їх в іншому місці, перейдіть до відповідного каталогу в терміналі.

cd Desktop

2. Тепер виконайте наступну команду. Користувачам Linux та macOS може знадобитися використовувати python3.

python app.py

3. Програма почне аналізувати ваші документи за допомогою моделі OpenAI LLM та індексувати інформацію. Залежно від розміру файлів та потужності вашого комп’ютера, це може зайняти певний час. Після цього, на вашому робочому столі з’явиться файл “index.json”. Якщо термінал не показує ніякої інформації, не хвилюйтеся, можливо, обробка даних ще триває. Для вашої інформації, обробка 30 МБ файлу займає приблизно 10 секунд.

4. Після того, як LLM обробить дані, ви побачите декілька попереджень, які можна проігнорувати. Знизу ви знайдете локальну URL адресу. Скопіюйте її.

5. Вставте скопійовану URL адресу в браузер, і ваш персоналізований чат-бот на базі ШІ готовий до використання. Для початку, ви можете запитати його про що йдеться в документі.

6. Ви можете ставити інші питання, і чат-бот ChatGPT буде відповідати на основі наданих вами даних. Таким чином ви можете створити чат-бот зі штучним інтелектом, використовуючи власні дані. Можливості необмежені.

7. Ви також можете скопіювати публічну URL адресу та поділитися нею з друзями та родиною. Посилання буде активне протягом 72 годин, але ваш комп’ютер має залишатися ввімкненим, оскільки сервер працює на ньому.

8. Щоб зупинити роботу чат-бота, натисніть “Ctrl + C” у вікні термінала. Якщо це не спрацює, натисніть “Ctrl + C” ще раз.

9. Для перезапуску сервера чат-бота ШІ, просто перейдіть на робочий стіл та знову запустіть команду нижче. Локальна URL адреса буде тією ж самою, але публічна буде змінюватися після кожного перезапуску.

python app.py

10. Якщо ви бажаєте навчити чат-бота ШІ на нових даних, видаліть файли з папки “docs” та додайте нові. Ви також можете додати декілька файлів на ту саму тему, інакше відповіді можуть бути суперечливими.

11. Тепер знову запустіть код у терміналі. Програма створить новий файл “index.json”, замінюючи старий.

python app.py

12. Для відстеження своїх токенів, перейдіть на панель керування OpenAI онлайн, щоб перевірити залишок кредиту.

13. Наостанок, вам не потрібно редагувати код, якщо ви не бажаєте змінити ключ API чи модель OpenAI для подальших налаштувань.

Створення персоналізованого чат-бота ШІ, використовуючи ваші дані

Ось так ви можете навчити ча