Streamlit — как создать ChatGPT на коленке

Streamlit — как создать ChatGPT на коленке

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


Что такое Streamlit?

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

Embrace scripting

Создайте приложение в несколько строк кода с помощью волшебно простого API. Затем посмотрите, как он автоматически обновляется по мере повторного сохранения исходного файла.

Weave in interaction

Добавление виджета аналогично объявлению переменной. Не нужно писать бэкэнд, определять маршруты, обрабатывать HTTP-запросы, подключать интерфейс, писать HTML, CSS, JavaScript,...

Deploy instantly

С легкостью делитесь своими приложениями, управляйте ими и развертывайте их прямо из Streamlit. Все бесплатно!


Создаем окружение проекта

  1. Создаем папку с названием нашего проекта
    Для линукс в терминале пропишем: mkdir name_of_project
  2. Сделаем виртуальное окружение с помощью virtualenv
    если не установлен, то: pip install virtualenv
    далее: virtualenv name_of_your_environment, замените параметр name_of_your_environment на имя вашего виртуального окружения, который вы хотите использовать.
  3. Активируем виртуальное окружение
    на macOS и Linux: source name_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.


Готово!

https://easychatgpt-xfw3kmkytcs.streamlit.app/

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



Report Page