5-минутное руководство по созданию чат-бота с искусственным интеллектом с помощью Gradio и GPT-3
Оглавление
- Введение
- GPT-3 для серверной части
- Градио для интерфейса
- Заключение
- Рекомендации
Введение
ChatGPT (Chat Generative Pre-trained Transformer) — это чат-бот на базе искусственного интеллекта, созданный OpenAI, который позволяет пользователям вести очень сложные разговоры, подобные человеческим. Языковая модель способна отвечать на вопросы и помогать в различных задачах, включая написание электронных писем, эссе и кода. Благодаря дизайну диалога ChatGPT может отвечать на дополнительные вопросы, признавать ошибки, подвергать сомнению неверные предположения и отклонять неуместные запросы.
Модель ChatGPT была доработана на основе модели серии GPT-3.5, которая завершила обучение в начале 2022 года¹. ChatGPT, а также связанные модели GPT-3.5² были обучены на высокопроизводительной инфраструктуре суперкомпьютеров Azure AI.
Хотя ChatGPT обладает многими сильными сторонами, будучи обобщенной моделью, он не всегда может быть наиболее эффективным решением для более узких и специализированных тем с ограниченными доступными обучающими данными. Более того, OpenAI еще не предоставил диалоговый интерфейс для интеграции предприятий.
Цель этой статьи — продемонстрировать создание интерфейса чат-бота, подобного ChatGPT, путем интеграции моделей OpenAI GPT-3 с пользовательским интерфейсом Gradio.
GPT-3 для серверной части
В 2020 году был представлен Generative Pre-trained Transformer 3 (GPT-3) как модель авторегрессионного языка, способная генерировать высококачественный текст, напоминающий человеческий текст. GPT-3 — это третье поколение языковых моделей GPT, доступных благодаря OpenAI.
Предоставляя начальное приглашение в качестве входных данных, GPT-3 имеет возможность создавать продолжение текста, которое следует стилю и структуре входного приглашения. Модель способна выполнять ряд задач, включая, помимо прочего, классификацию текста, ответы на вопросы, генерацию текста, суммирование текста, распознавание именованных объектов и языковой перевод³.
Реализация Python
Чтобы получить доступ к сервисам OpenAI, первым шагом является получение токена API. Если у вас еще нет учетной записи, вы можете зарегистрироваться для получения бесплатной пробной версии, посетив их страницу регистрации. Если у вас есть учетная запись, перейдите в правый верхний угол страницы и нажмите Управление учетной записью. Оттуда перейдите к Ключи API и создайте новый секретный ключ.
Установите библиотеку OpenAI Python с помощью pip: pip install openai
, затем создайте новый файл блокнота Jupyter и вставьте следующий фрагмент кода в новую ячейку.
import openai openai.api_key = sk_token # your token goes here def get_model_reply(query, context=[]): # combines the new question with a previous context context += [query] # given the most recent context (4096 characters) # continue the text up to 2048 tokens ~ 8192 charaters completion = openai.Completion.create( engine='text-davinci-003', # one of the most capable models available prompt='\n\n'.join(context)[:4096], max_tokens = 2048, temperature = 0.0, # Lower values make the response more deterministic ) # append response to context response = completion.choices[0].text.strip('\n') context += [response] # list of (user, bot) responses. We will use this format later responses = [(u,b) for u,b in zip(context[::2], context[1::2])] return responses, context
Чтобы протестировать автозаполнение GPT-3, просто вызовите функцию с запросом и без контекста. В приведенном ниже примере GPT-3 задали вопрос: «Какая самая большая по площади страна в мире?» и модель правильно вернула Россию как самую большую страну по площади, а также приблизительную общую площадь.
query = 'Which is the largest country by area in the world?' responses, context = get_model_reply(query, context=[]) print('<USER> ' + responses[-1][0]) print('<BOT> ' + responses[-1][1]) # OUTPUT: # # <USER> Which is the largest country by area in the world? # <BOT> The largest country by area in the world is Russia, with a total area of 17,098,242 square kilometers (6,601,668 square miles).
Один из способов оценить способность модели обрабатывать последующие вопросы — вызвать ее снова, предоставив предыдущий контекст. Как показано в следующем примере, на вопрос «Какие страны имеют с ней общую границу?», имея в виду Россию, GPT-3 успешно распознал тему и дал точный ответ, перечислив 14 соседних стран.
query = 'With which countries does it share a border?' responses, context = get_model_reply(query, context=context) print('<USER> ' + responses[-1][0]) print('<BOT> ' + responses[-1][1]) # OUTPUT: # # <USER> With which countries does it share a border? # <BOT> Russia shares a border with the following countries: Norway, Finland, Estonia, Latvia, Lithuania, Poland, Belarus, Ukraine, Georgia, Azerbaijan, Kazakhstan, Mongolia, China, North Korea, and Lithuania.
Градио для интерфейса
Gradio — это библиотека Python с открытым исходным кодом⁴, используемая для создания веб-приложений для машинного обучения и обработки данных. Gradio позволяет разработчикам создавать удобные и настраиваемые интерфейсы. Кроме того, он позволяет другим пользователям получать доступ к моделям машинного обучения из любого места⁵.
Еще одним интересным аспектом Gradio является то, что он позволяет разрабатывать и тестировать веб-приложение в ноутбуках Jupyter или Google Colab. Эта функциональность очень полезна при оценке интеграции других модулей.
Реализация Python
Начните с установки пакета Gradio Python с помощью pip: pip install gradio
. Затем скопируйте и вставьте приведенный ниже фрагмент кода в новую ячейку ранее созданной записной книжки.
import gradio as gr # defines a basic dialog interface using Gradio with gr.Blocks() as dialog_app: chatbot = gr.Chatbot() # dedicated "chatbot" component state = gr.State([]) # session state that persists across multiple submits with gr.Row(): txt = gr.Textbox( show_label=False, placeholder="Enter text and press enter" ).style(container=False) txt.submit(get_model_reply, [txt, state], [chatbot, state]) # launches the app in a new local port dialog_app.launch()
Когда dialog_app.launch()
будет выполнено, Gradio откроет новый порт и запустит интерактивное приложение в блокноте. Выполнение примеров, приведенных в предыдущем разделе, должно вернуть те же ожидаемые результаты. Сообщения, введенные пользователем, будут отображаться справа, а сообщения, созданные OpenAI, будут отображаться слева.
Заключение
ChatGPT — это чат-бот на основе искусственного интеллекта, созданный OpenAI, который может вести человеческие разговоры и помогать пользователям в различных задачах, от написания эссе до написания кода. Хотя это может быть не самое эффективное решение для специализированных тем, оно обладает впечатляющими диалоговыми возможностями. В этой статье продемонстрирована интеграция модели OpenAI GPT-3 с пользовательским интерфейсом Gradio для создания аналогичного опыта работы с чат-ботом.
Полные скрипты
Вы можете получить доступ к полному сценарию, посетив мою страницу Github, или вы можете напрямую получить доступ к блокноту Google Colab, используя ссылку ниже.
Присоединяйтесь к моему списку рассылки, чтобы получать новый контент, как только я его опубликую!
Если вам нравится читать такие истории и вы хотите поддержать меня как писателя, подумайте о том, чтобы зарегистрироваться и стать участником Medium. Это 5 долларов в месяц, что дает вам неограниченный доступ к статьям о Python, машинном обучении и науке о данных. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию без каких-либо дополнительных затрат для вас.
Рекомендации
[1] Открытый ИИ. ChatGPT: оптимизация языковых моделей для диалога
https://openai.com/blog/chatgpt/
[2] Открытый ИИ. Модельный индекс для исследователей
https://platform.openai.com/docs/model-index-for-researchers
[3] Открытый ИИ. Примеры
https://platform.openai.com/examples/
[4] градио-прил. Gradio: создавайте веб-приложения для машинного обучения — на Python
https://github.com/gradio-app/gradio
[5] Абубакар Абид, Али Абдалла, Али Абид и др. Gradio: простой обмен и тестирование моделей машинного обучения в реальных условиях
arXiv:1906.02569
Подпишитесь на DDIntel Здесь.
Посетите наш сайт здесь: https://www.datadriveninvestor.com
Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate