Большие языковые модели могут быть инструкциями, настроенными с набором вопросов и ответов. Тем не менее, для дальнейшей настройки модели на ваших собственных данных вам нужно большое количество вопросов и ответов о ваших данных. Создание этих вопросов и ответов может быть много ручной работы.
Этот репозиторий позволяет вам использовать не настраиваемую языковую модель (CHATGPT) для автоматического извлечения паров вопросов/ответов из существующих текстовых данных, устраняя все ручные работы.
Чтобы запустить этот код, вам нужно будет клонировать этот репозиторий, а затем установить следующие пакеты Python:
tiktoken , The Openai Tokeniser,openai , официальный клиент OpenAI API,langchain , Clue Code, используемый для комбинирования моделей и утилит. Этот скрипт предназначен для того, чтобы превратить папку документов Markdown ( .md ) в файл .json , содержащий список вопросов, ответов и путей к исходным документам, которые использовались для их производства.
Чтобы запустить код, установите соответствующие пути файла в файле question_extractor.py (как входной папку, так и выходной путь) и убедитесь, что ваш ключ API OpenAI находится в среде. Затем запустите сценарий с помощью Python:
python3 question_extractor.py
Как только это будет сделано, все вопросы/ответы будут записаны как файл .json в пути вывода.
Кодовые циклы по всем файлам, для каждого файла он извлекает список вопросов, используя следующую подсказку, за которой следует кусок текста:
You are an expert user extracting information to quiz people on documentation. You will be passed a page extracted from the documentation, write a numbered list of questions that can be answered based *solely* on the given text.
Затем он зацикливается на вопросах, создавая ответ, передавая следующее приглашение, за которым следует кусок текста и вопрос:
You are an expert user answering questions. You will be passed a page extracted from a documentation and a question. Generate a comprehensive and informative answer to the question based *solely* on the given text.
Большая часть фактической логики кода посвящена одновременно обработке файлов (для скорости) и обеспечению того, что текстовые куски переданы в модель достаточно малы, чтобы оставить достаточно токенов для ответа.
Если текст слишком длинный, чтобы быть отправленным на модель, он разделен по самым высоким уровням заголовка (процесс можно повторить рекурсивно при необходимости, пока мы не перейдем к отдельным абзацам).
С точки зрения производительности этот скрипт может обработать полную документацию NERSC за 6 минут 1 . Превращение 318 файлов разметки в 8005 вопросов за 29 долларов.
Работает примерно на 93% от предела скорости модели. ↩