Быстрый подход к обобщению текста с использованием GPT 3.5 Turbo – высокотехнологичной модели искусственного интеллекта в области обработки естественного языка, в которой значительно улучшено создание контекстуально точного и релевантного текста.
Модели больших языков
Большие языковые модели или LLM — это предварительно обученные модели машинного обучения, которые обучаются на огромных наборах текстовых данных, чтобы понимать и генерировать ответы, подобные человеческим. В настоящее время доступно множество LLM, таких как GPT-4, LaMDA, BLOOM и другие; и они способны сделать много задач для нас. Здесь я расскажу конкретно о ГПТ-3,5 турбо и текстовой классификации.
Предпосылка
Прежде чем мы начнем, есть несколько вещей, которые мы должны знать и иметь под рукой, в том числе:
- Знание Python, в том числе знание использования внешних библиотек и IDE.
- Понимание API и как их использовать в python.
- Наличие OpenAI API.
Чтобы иметь доступ к API OpenAI, нам необходимо зарегистрироваться на платформе разработчиков OpenAI и создать ключ API, если у нас его нет.
ПРИМЕЧАНИЕ. Сохраните ключ API у себя. OpenAI не показывает вам сгенерированные ключи API. В случае его потери/забывания необходимо сгенерировать новый ключ API.
Сборка
Чтобы создать этот текстовый сводник, я использовал Python для своего бэкэнда и Streamlit для создания веб-приложения. Streamlit — это пакет Python с открытым исходным кодом, предназначенный для создания веб-приложений для машинного обучения и обработки данных. Он прост в использовании и интуитивно понятен, поэтому рекомендуется для многих новичков.
Теперь давайте начнем с установки зависимостей, прежде чем мы перейдем к фактическому суммирующему тексту.
pip install openai
pip install streamlit
Для этой статьи у нас есть только две зависимости, то есть OpenAI и Streamlit.
Давайте начнем строить наш текстовый резюмёр. Это всего лишь код Python, веб-приложение будет описано позже в этой статье.
import openai import streamlit as st openai.api_key = "Your-OPENAI-key" def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type, ): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=1000, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]
С помощью приведенного выше кода мы взаимодействуем с турбо-моделью OpenAI GPT-3.5. Кроме того, здесь я использую ChatCompletion API, где мы можем создать беседу и получить ожидаемый результат после прохождения подсказки.
Тем не менее, давайте подробнее рассмотрим приведенный выше блок кода и опишем пару гиперпараметров.
openai.ChatCompletion.create:
используется для создания ответа на приглашение, которое мы передаем в API.model:
Модель, которую мы хотим использовать. Для этой статьи я использовал турбомодель GPT-3.5. Также можно использовать GPT-4.max_tokens:
Максимальное количество слов/токенов, сгенерированных моделью. Это помогает ограничить длину генерируемого текста.temperature:
Случайность вывода модели с более высокой температурой приводит к более разнообразному и творческому результату/выходу. Диапазон значений составляет от 0 до бесконечности, хотя значения больше 2 встречаются редко.top_p:
Выборка Top P или top-k или выборка ядра — это параметр, управляющий пулом выборки из выходного распределения. Например, значение 0,1 означает, что модель выбирает выходные данные только из верхних 10% распределения. Диапазон значений находился между 0 и 1; более высокие значения приводят к более разнообразному результату.frequency_penalty:
Штраф за повторение токена из вывода. Диапазон значений от -2 до 2, где положительные значения не позволяют модели повторять токен, а отрицательные значения побуждают модель использовать больше повторяющихся слов. 0 означает, что штраф не применяется.messages:
Часть, в которой мы передаем текстовое приглашение для обработки с моделью. Мы передаем список словарей, где ключ — это объект роли («система», «пользователь» или «помощник»), который помогает модели понять контекст и структуру, а значения — это контекст.
После обсуждения гиперпараметров мы видим, что гиперпараметр messages
имеет два объекта словаря. Первый словарь предназначен для установки модели в качестве текстового сумматора. Во-вторых, мы передаем наш текст и получаем результат суммирования.
Во втором словаре следует обратить внимание на переменные person_type
и prompt
. person_type
— это переменная, которую я использовал для управления суммированным стилем. В то время как prompt
- это то место, куда мы передаем наш текст для краткого изложения.
Как я упоминал ранее в этой статье, я использую Streamlit для создания веб-приложения, теперь давайте рассмотрим это подробнее:
#application title st.title("Text Summarization") #Provide the input area for text input_text = st.text_area("Enter the text to summarize:", height=200) #Initiate three columns for section to be side-by-side col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter with col1: token = st.slider("Token", min_value=0.0, max_value=1000.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style with col2: option = st.selectbox( "Who are you?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))
Сохраните весь код в одном файле Python. Я называю свой файл summarize.py
.
Тестирование сборки
Как только весь приведенный выше код Python будет сохранен в одном файле Python. Попробуйте запустить следующий код в командной строке, чтобы запустить приложение.
streamlit run summarize.py
После запуска вышеуказанной команды в командной строке вы сможете увидеть приведенное ниже приложение в веб-браузере по умолчанию.
После открытия приложения в веб-браузере по умолчанию. Вы можете начать подавать некоторый входной текст, который вы хотели бы обобщить. После ввода текста нажмите кнопку Summarize
в нижней части приложения, чтобы получить сводку по введенному тексту.
Также было бы интересно поэкспериментировать с гиперпараметрами и посмотреть, как отличаются выходные данные, когда гиперпараметры устанавливаются по умолчанию, и когда они изменяются. Еще один интересный параметр для проверки — who are you?
. У него есть такие варианты, как «Второклассник», «Профессиональный специалист по данным», «Помощник по дому», «Пенсионер» и «Студент университета». Ответ от GPT-3.5 будет разным для всех типов, поскольку он попытается заставить вас понять в соответствии с вашим уровнем понимания какой-либо конкретной темы. Например, понимание того, как Земля вращается вокруг Солнца, будет отличаться на секунду- классник по сравнению со студентом университета.
Заключение
С появлением генеративного ИИ у нас появилось много возможностей для более простого решения отраслевых проблем. В этой статье я обсудил, как работает API OpenAI и как мы можем использовать его для создания простого приложения для суммирования текста с использованием пакетов Python и Streamlit.
Чтобы посмотреть готовый код, обратитесь к репозиторию github. Надеюсь, вам понравилась эта статья.
Подпишитесь на меня в LinkedIn