Как создать чат-бота с помощью Streamlit и Llama 2

Как создать чат-бота с помощью Streamlit и Llama 2. Изображение 1.

Llama 2 — это модель большого языка (LLM) с открытым исходным кодом, разработанная Meta. Эта модель с открытым исходным кодом оценивается лучше, чем некоторые модели с закрытым исходным кодом, такие как GPT-3.5 и PaLM 2. Она включает в себя три размера предварительно обученных и точно настроенных синтетических текстовых моделей, а именно параметры модели 7 миллиардов, 13 миллиардов и 70 миллиардов.

Вы познакомитесь с диалоговыми возможностями Llama 2, создав чат-бота с использованием Streamlit и Llama 2.

Выдающиеся особенности Llama 2

По сравнению с Llama 1, Llama 2 имеет следующие выдающиеся характеристики:

  1. Больший размер модели: Большая модель, до 70 миллиардов параметров. Это позволяет ему изучать более сложные закономерности между словами и предложениями.
  2. Улучшенные диалоговые возможности. Обучение с подкреплением на основе отзывов пользователей (RLHF) улучшает возможности диалоговых приложений. Это позволяет модели генерировать контент, похожий на человеческий, даже при сложных взаимодействиях.
  3. Более быстрый вывод: он представляет новый метод, называемый вниманием к кластерным запросам, для ускорения вывода. Это дает вам возможность создавать более полезные приложения, такие как чат-боты и виртуальные помощники.
  4. Более эффективный: он использует больше памяти и вычислительных ресурсов, чем предыдущая версия.
    Открытый исходный код и некоммерческая лицензия: это открытый исходный код. Исследователи и программисты могут свободно использовать и редактировать Llama 2.

Llama 2 превосходит старую версию во всех аспектах. Эти характеристики делают его мощным инструментом для многих приложений, таких как чат-боты, виртуальные помощники и понимание естественного языка.

Настройка среды Streamlit для разработки чат-бота

Чтобы начать создание приложения, вам необходимо настроить среду разработки, чтобы изолировать ваш проект от существующих проектов на вашем компьютере.

Сначала начните с создания виртуальной среды с использованием библиотеки Pipenv следующим образом:

оболочка Pipenv

Затем установите необходимые библиотеки для создания чат-бота.

Pipenv установить реплику с потоком

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

Репликация: это облачная платформа, предоставляющая доступ к крупным моделям машинного обучения с открытым исходным кодом для развертывания ваших проектов.

Загрузите токен API Llama2 из Replication

Чтобы получить ключ токена репликации, вы должны сначала зарегистрировать учетную запись на Replication, используя учетную запись GitHub.

Получив доступ к панели управления, перейдите к кнопке «Обзор» и найдите чат Llama 2, чтобы увидеть модель llama-2–70b-chat.

Как создать чат-бота с помощью Streamlit и Llama 2. Изображение 2.

Нажмите модель llama-2–70b-chat, чтобы просмотреть конечную точку API Llama 2. Нажмите кнопку API на панели навигации модели llama-2–70b-chat. В правой части страницы нажмите кнопку Python. Это даст вам доступ к токенам API для приложений Python.

Как создать чат-бота с помощью Streamlit и Llama 2. Изображение 3.

Скопируйте REPLICATE_API_TOKEN и сохраните его для будущего использования.

Создавайте чат-боты

Сначала создайте файл Python с именем llama_chatbot.py и файл env (.env). Вы напишете код в llama_chatbot.py и поместите секретный ключ и токен API в файл .env.

В файле llama_chatbot.py импортируйте библиотеку следующим образом:

импортировать потоком как st импортировать ОС импортировать репликацию

Затем установите глобальную переменную модели llama-2–70b-chat.

# Открываем REPLICATE_API_TOKEN = os.environ.get(‘REPLICATE_API_TOKEN’, default=””) # Открываем модель конечной точки LLaMA2_7B_ENDPOINT = os.environ.get(‘MODEL_ENDPOINT7B’, по умолчанию=””) LLaMA2_13B_ENDPOINT = os.environ.get(‘MODEL_ENDPOINT13B’, default=””) LLaMA2_70B_ENDPOINT = os.environ.get(‘MODEL_ENDPOINT70B’, default=””)

В файл .env добавьте модели токена репликации и конечной точки в следующем формате:

REPLICATE_API_TOKEN=’Вставить_ваш_реплицирующий_токен’ MODEL_ENDPOINT7B=’a16z-infra/llama7b-v2-chat:4f0a4744c7295c024a1de15e1a63c880d3da035fa1f49bfd344fe076074c8eea’ MODEL_ENDPOINT13B =’a16z-infra/llama13b-v2-chat:df7690f1994d94e96ad9d568eac121aecf50684a0b0963b25a41cc40061269e5′ MODEL_ENDPOINT70B =’replication/llama70b-v2-chat:e951f18578850b65 2510200860fc4ea62b3b16fac280f83ff32282f87bbd2e48′

Вставьте токен репликации и сохраните файл .env.

Спроектируйте поток разговора чат-бота

Создайте подсказку для запуска модели Llama 2 в зависимости от задачи, которую вы хотите выполнить. В этом случае в примере требуется, чтобы модель выступала в роли помощника.

# Đặt Pre-prompt PRE_PROMPT = “Вы полезный помощник. Вы не отвечаете как ” “Пользователь” и не притворяетесь “Пользователем”.” «Как Ассистент вы отвечаете только один раз».

Настройте конфигурацию страницы для чат-бота следующим образом:

# Запретить запрет на st.set_page_config( page_title=”LLaMA2Chat”, page_icon=”:volleyball:”, layout=”wide” )

Напишите функцию, которая инициализирует и устанавливает переменную состояния сеанса.

# Hằng số LLaMA2_MODELS = { ‘LLaMA2-7B’: LLaMA2_7B_ENDPOINT, ‘LLaMA2-13B’: LLaMA2_13B_ENDPOINT, ‘LLaMA2-70B’: LLaMA2_70B_ENDPOINT, } # Biến trạng thái phiên DEFAULT_TEMPERATURE = 0,1 DEFAULT_TOP_P = 0,9 DEFAULT_MAX_SEQ_LEN = 512 DEFAULT_PRE_PROMPT = PRE_PROMPT def setup_session_state (): st.session_state.setdefault(‘chat_dialogue’, ()) selected_model = st.sidebar.selectbox( ‘Выберите модель LLaMA2:’, list(LLaMA2_MODELS.keys()), key=’model’) st.session_state .setdefault(‘llm’, LLaMA2_MODELS.get(selected_model, LLaMA2_70B_ENDPOINT)) st.session_state.setdefault(‘температура’, DEFAULT_TEMPERATURE) st.session_state.setdefault(‘top_p’, DEFAULT_TOP_P) st.session_state.setdefault(‘max_seq_len’, DEFAULT_MAX_SEQ_LEN) st.session_state.setdefault(‘pre_prompt’, DEFAULT_PRE_PROMPT)

Эта функция устанавливает базовые переменные, такие какchat_dialogue, pre_prompt, llm, top_p, max_seq_len и температуру в состоянии сеанса. Он также управляет выбором модели Llama 2 на основе выбора пользователя.

Напишите функцию для отображения содержимого боковой панели приложения Streamlit.

def render_sidebar(): st.sidebar.header(“Чат-бот LLaMA2”) st.session_state(‘temperature’) = st.sidebar.slider(‘Temperature:’, min_value=0.01, max_value=5.0, value=DEFAULT_TEMPERATURE, шаг= 0.01) st.session_state(‘top_p’) = st.sidebar.slider(‘Top P:’, min_value=0.01, max_value=1.0, value=DEFAULT_TOP_P, шаг=0.01) st.session_state(‘max_seq_len’) = st. sidebar.slider(‘Максимальная длина последовательности:’, min_value=64, max_value=4096, value=DEFAULT_MAX_SEQ_LEN, шаг=8) new_prompt = st.sidebar.text_area( ‘Запрос перед началом чата. При желании отредактируйте здесь:’, DEFAULT_PRE_PROMPT ,height=60), если new_prompt != DEFAULT_PRE_PROMPT и new_prompt != “” и new_prompt не имеет значения None: st.session_state(‘pre_prompt’) = new_prompt + “n” else: st.session_state(‘pre_prompt’) = DEFAULT_PRE_PROMPT

Эта функция отображает заголовок и настройки чат-бота Llama 2 для настройки.

Напишите функцию для отображения истории чата в основной области контента приложения Streamlit.

def render_chat_history(): response_container = st.container() для сообщения в st.session_state.chat_dialogue: с st.chat_message(message(“role”)): st.markdown(message(“content”))

Эта функция перебирает диалог чата, сохраненный в состоянии сеанса, отображая каждое сообщение с соответствующей ролью (пользователь или помощник).

Обработайте ввод пользователя, используя функцию ниже.

def handle_user_input(): user_input = st.chat_input( “Введите здесь свой вопрос, чтобы поговорить с LLaMA2” ) if user_input: st.session_state.chat_dialogue.append( {“role”: “user”, “content”: user_input} ) с st.chat_message(“пользователь”): st.markdown(user_input)

Эта функция предоставляет пользователям поле ввода, в котором они могут вводить сообщения и вопросы. Уведомления добавляются в Chat_dialogue в сеансе состояния с ролью пользователя, когда пользователь отправляет уведомления.

Напишите функцию, которая генерирует ответы из модели Llama 2 и отображает их в области чата.

defgenerate_assistant_response(): message_placeholder = st.empty()full_response = “” string_dialogue = st.session_state(‘pre_prompt’) для dict_message в st.session_state.chat_dialogue: динамик = “Пользователь”, если dict_message(“роль”) == ” user” else “Assistant” string_dialogue += f”{speaker}: {dict_message(‘content’)}n” output = debounce_reulate_run( st.session_state(‘llm’), string_dialogue + “Assistant: “, st.session_state(‘ max_seq_len’), st.session_state(‘temperature’), st.session_state(‘top_p’), REPLICATE_API_TOKEN ) для элемента в выводе: full_response += item message_placeholder.markdown(full_response + “▌”) message_placeholder.markdown(full_response) st .session_state.chat_dialogue.append({“role”: “ассистент”, “content”: full_response})

Эта функция создает поток истории чата, включающий сообщения как пользователя, так и помощника, перед вызовом функции debounce_replication_run для получения ответа помощника. Он постоянно изменяет обратную связь в пользовательском интерфейсе, чтобы обеспечить взаимодействие в режиме реального времени.

Эта основная функция отвечает за рендеринг всего приложения Streamlit.

def render_app(): setup_session_state() render_sidebar() render_chat_history() handle_user_input()generate_assistant_response()

Он вызывает все предопределенные функции для установки состояния сеанса, отображения боковой панели, истории чата, обработки ввода пользователя и генерации ответов от виртуального помощника в логическом порядке.

Напишите функцию, которая вызывает render_app и запускает приложение при развертывании скрипта.

def main(): render_app() if __name__ == “__main__”: main()

Теперь приложение готово к развертыванию.

Обработка запросов API

Создайте файл utils.py в папке проекта и добавьте следующую функцию:

import replication import time # Инициализировать переменные устранения дребезга Last_call_time = 0 debounce_interval = 2 # Установить интервал устранения дребезга (в секундах) def debounce_replicate_run(llm, Prompt, max_len,температура, top_p, API_TOKEN): globallast_call_time print(“время последнего вызова: “, время последнего_вызова) текущее_время = время.время() истекшее_время = текущее_время – время последнего_вызова, если истекшее_время

Эта функция реализует механизм отладки для предотвращения частых и чрезмерных запросов API от пользовательского ввода.

Затем импортируйте функцию ответа отладки в файл llama_chatbot.py следующим образом:

из утилит импорт debounce_replication_run

Теперь запустите это приложение:

потоковой запуск llama_chatbot.py

Ожидаемые результаты:

Результат показывает разговор между моделью и человеком.

Практическое применение чат-ботов Streamlit и Llama 2

Некоторые реальные примеры приложений Llama 2 включают в себя:

  1. Чат-боты
  2. Виртуальный помощник
  3. Языковой перевод
  4. Текстовое резюме
  5. Изучать

Выше описано, как создать чат-бота с помощью Streamlit и Llama 2. Удачи!

В приведенной выше статье вы познакомились с «Как создать чат-бота с помощью Streamlit и Llama 2». СоветыНадейтесь, что эта статья вам поможет! Если эта статья кажется вам интересной и полезной, не забудьте поделиться ею. Спасибо!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *