Streamlit — как создать ChatGPT на коленке
NoteDataScience
Если мы начнем разговор о мире технологий и программирования, то невозможно обойти такой мощный инструмент, как Streamlit. С его помощью даже самые амбициозные проекты можно запустить в буквальном смысле за время отдыха со стаканом любимого кофе. Сегодня мы поговорим о том, как Streamlit может стать вашим лучшим другом в области развертывания приложений и визуализации данных.
Что такое Streamlit?
Streamlit - это уникальная библиотека Python, которая позволяет разработчикам создавать интерактивные веб-приложения для машинного обучения и обработки данных быстрее, чем ваш кофе успеет остыть. Это своеобразный мост, который соединяет мир машинного обучения и разработку веб-приложений, упрощая процесс создания.

Embrace scripting
Создайте приложение в несколько строк кода с помощью волшебно простого API. Затем посмотрите, как он автоматически обновляется по мере повторного сохранения исходного файла.
Weave in interaction
Добавление виджета аналогично объявлению переменной. Не нужно писать бэкэнд, определять маршруты, обрабатывать HTTP-запросы, подключать интерфейс, писать HTML, CSS, JavaScript,...
Deploy instantly
С легкостью делитесь своими приложениями, управляйте ими и развертывайте их прямо из Streamlit. Все бесплатно!
Создаем окружение проекта
- Создаем папку с названием нашего проекта
Для линукс в терминале пропишем:mkdirname_of_project - Сделаем виртуальное окружение с помощью virtualenv
– если не установлен, то:pip install virtualenv
– далее:virtualenvname_of_your_environment, замените параметр name_of_your_environment на имя вашего виртуального окружения, который вы хотите использовать. - Активируем виртуальное окружение
– на macOS и Linux:sourcename_of_your_environment/bin/activate
– на windows:.\name_of_your_environment\Scripts\activate
Attention: с активированным виртуальным окружением в терминале будет написано (name_of_your_environment), для деактивации пропишитеdeactivate

Создадим репозиторий
Для создания репозитория пропишем git init
Cоздаем файл .gitignore и пишем туда name_of_your_environment
Смените ветку на main: git branch -M main
Далее добавим все существующие файлы git add *
А так же сделаем первый коммит git commit -m "Hello world"
После этого создаем проект в github и связываем его с локальной версией git: git remote add origin @githublink
И делаем первый пуш в main git push -u origin main
Установим зависимости для проекта
Для этого пропишем в активированном окружение pip install streamlit и pip install gpt4all
А так же сохраним это все командой pip freeze > requirements.txt
Делаем кофе и пишем бекенд
Создаем файл main.py в ветке develop и коммитим туда наш 'hello world' с изменениями
Далее импортируем в main библиотеки:
import streamlit as st import gpt4all
Для того, что бы создать заголовок воспользуемся title:
st.title("Chatbot")
Подгрузим модель, но что бы пользователь видел, что модель загружается – воспользуемся спиннером
with st.spinner("Loading model..."):
gptj = gpt4all.GPT4All("orca-mini-3b.ggmlv3.q4_0")
Отлично, теперь модель загружено. Если вам нужна более качественная модель, то посмотрите какие модели влезут в вашу ОЗУ в документации GPT4ALL.
Сделаем некую вариацию холодного старта для диалога:
with st.chat_message("EasyChatGPT"):
st.write("Hello, I`m local GPT model, how can I help you?")
Получаем запрос пользователя и генерируем ему ответ:
prompt = st.chat_input('Say something:')
if prompt:
with st.chat_message("User"):
st.write(prompt)
response = [{"role": "user", "content": prompt}]
answer = gptj.chat_completion(response)
answer = answer['choices'][0]['message']['content']
with st.chat_message("EasyChatGPT"):
st.write(answer)
А теперь заходим в терминал и коммитим наши изменения в ветку девелоп:
git add * git commit -m "make gpt still drink coffee" git push
Заходим в репозиторий и мерджим ветку develop и main
Деплой в одну кнопку
Запускаем проект командой streamlit run main.py и в правом углу ищем бургер или выпадающее меню в котором будет deploy this app
У нас открывается новая ссылка, в которой мы выбираем гитхаб по ссылке

Далее заходим в свой репозиторий в main ветку и открываем файл main.py, копируем URL ссылку на него и вставляем ее. А так же придумываем App URL.
Готово!

Ознакомиться с проектом можно по этой ссылке, а с кодом тут, а так же не забыть подписаться на канал t.me/notedatascience и зайти в чат t.me/notedatasciencechat