使用Hugchat在5分钟内构建LLM驱动的聊天机器人并精简
#初学者 #python #聊天机器人 #llm

在迅速发展的人工智能世界(AI)中,聊天机器人已成为企业增强客户互动和简化操作的强大工具。利用语言模型的能力,聊天机器人变得越来越聪明,能够以显着的准确理解和对人类语言做出反应。

在此博客中,我们将探索使用LLM(大型语言模型)和两个流行的框架建立聊天机器人的迷人世界:Hugchat和Shertlit。 LLM,例如Openai的GPT-3.5,已经彻底改变了自然语言处理和理解,使聊天机器人更自然地交谈并提供上下文相关的响应。

我们将研究使用HugChat开发LLM驱动的聊天机器人的逐步过程,该聊天机器人是一个强大的Python库,简化了LLMS集成到Chatbot应用程序中。此外,我们将利用Sparlit,这是一个用于创建交互式Web应用程序的用户友好框架,为我们的聊天机器人提供无缝的用户界面和部署平台。

入门

目录

  • 什么是hugchat
  • 创建基本聊天机器人
  • 什么是简化
  • 创建基本的简化应用
  • 构建LLM动力聊天机器人

什么是Hugchat

Hugchat是一种创新且多功能的Python软件包,旨在简化聊天机器人应用程序的开发。使用Hugchat,开发人员可以快速而轻松地创建智能的对话代理,以自然而引人入胜的方式与用户互动。

HuggingChat是一种免费的开源选项,可作为Chatgpt等商业聊天平台的替代选择。它利用了由OpenAssistant开发的Llama 30B SFT 6(OASST-SFT-6-LALAMA-30B)型号。尽管该模型在功能方面可能不与GPT-4相提并论,但它是一个具有引人入胜的培训背景的高度胜任的LLM,值得探索。

hugchat - HuggingChat Python API Leave a star |pypi.org

创建基本聊天机器人

在本节中,我们将使用Hugchat Python软件包创建一个基本的聊天机器人。

安装依赖项

使用以下命令安装hugchat软件包。

  • 通过执行以下命令来创建和激活虚拟环境。
python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows
  • 使用PIP安装Hugchat软件包。
pip install hugchat

设置身份验证

hugchat chatbot类需要一个cookie_path参数来验证服务器。使用作者提供的以下步骤来创建cookies.json文件。

  • 安装ChromeFirefox的cookie-editor扩展程序
  • 去拥抱chat和登录
  • 打开扩展
  • 单击右下方的导出,然后作为JSON(将您的cookie保存到剪贴板上)导出)
  • 创建一个cookies.json文件并将剪贴板内容粘贴到它。

创建应用程序

创建一个python文件basic.py并向其添加以下代码。

from hugchat import hugchat

chatbot = hugchat.ChatBot(cookie_path="cookies.json")
id = chatbot.new_conversation()
chatbot.change_conversation(id)

print('Welcome to chatMATE')
print('\'q\' or \'quit\' to exit')
print('\'c\' or \'change\' to change conversation')
print('\'n\' or \'new\' to start a new conversation')

while True:
 user_input = input('> ')
 if user_input.lower() == '':
  pass
 elif user_input.lower() in ['q', 'quit']:
  break
 elif user_input.lower() in ['c', 'change']:
  print('Choose a conversation to switch to:')
  print(chatbot.get_conversation_list())
 elif user_input.lower() in ['n', 'new']:
  print('Clean slate!')
  id = chatbot.new_conversation()
  chatbot.change_conversation(id)
 else:
  print(chatbot.chat(user_input))

运行该应用程序

执行以下命令运行应用程序。

python basic.py

您将获得下面的输出。
output

什么是简化的

简化是一个开源python库,简化了为数据科学和机器学习任务构建交互式Web应用程序的过程。它提供了一个用户友好的框架,用于创建和共享以数据为中心的应用程序,而无需广泛的Web开发知识。有了简化,开发人员可以快速原型和部署交互式仪表板,可视化和数据驱动的应用程序。

Streamlit * A faster way to build and share data apps | streamlit.io

  • 使用以下命令安装简化
pip install streamlit
  • 使用以下命令开始简化的基本Hello
streamlit hello

output2
output3

创建基本的简化应用

在本节中,我们将创建一个基本的精简应用。

安装依赖项

使用以下命令安装简化软件包。

  • 通过执行以下命令来创建和激活虚拟环境。
python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows
  • 使用PIP安装简化软件包。
pip install streamlit

创建应用程序

创建一个python文件greeting.py并向其添加以下代码。

import streamlit as st

st.title("ChatMATE")
st.write("Your new virtual assistant")
name = st.text_input(label="",placeholder="Enter your name", max_chars=50)
if st.button('Submit'):
    st.write('Hi ' + name + ". How can I assist you today ?")

有关输入控件和方法的更多信息,请查看以下简化文档参考。

Get started - Streamlit Docs | docs.streamlit.io

运行该应用程序

执行以下命令运行应用程序。

streamlit run greeting.py

您将获得下面的输出。

output4
output5

构建LLM动力聊天机器人

到目前为止,我们已经讨论了Hugchat软件包并简化了。在本届会议中,我们将构建一个聊天机器人,该聊天机器人可以使用免费的,开源的LLM型号openASSISTANT/OASST-SFT-6-LLAMA-30B-XOR从非官方的HuggingChat API(称为Hugchat and Sparlit)生成对用户输入的响应。

安装依赖项

使用以下命令安装hugchat和简化软件包。

  • 通过执行以下命令来创建和激活虚拟环境。
python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows
  • 使用PIP安装简化,简化 - 聊天,简化-Extras,hugchat软件包。
pip install streamlit streamlit-chat streamlit-extras hugchat
  • 使用设置身份验证部分或使用现有cookies.json文件中提到的步骤生成cookies.json文件。将cookies.json文件放在app.py所在的根文件夹中。
  • 创建一个文件app.py,然后向其添加以下代码。
import streamlit as st
from streamlit_chat import message
from streamlit_extras.colored_header import colored_header
from streamlit_extras.add_vertical_space import add_vertical_space
from hugchat import hugchat

st.set_page_config(page_title="ChatMATE - Chat Multi-purpose AI Technology")

# Generate empty lists for bot_response and user_input.
## bot_response stores AI generated responses
if 'bot_response' not in st.session_state:
    st.session_state['bot_response'] = ["I'm ChatMATE, How may I help you?"]
## user_input stores User's questions
if 'user_input' not in st.session_state:
    st.session_state['user_input'] = ['Hi!']

# Layout of input/response containers
input_container = st.container()
colored_header(label='', description='', color_name='blue-30')
response_container = st.container()

# User input
## Function for taking user provided prompt as input
def get_input():
    input_text = st.text_input("You: ", "", key="input")
    return input_text
## Applying the user input box
with input_container:
    user_input = get_input()

# Response output
## Function for taking user prompt as input followed by producing AI generated responses
def generate_response(prompt):
    chatbot = hugchat.ChatBot(cookie_path="cookies.json")
    response = chatbot.chat(prompt)
    return response

## Conditional display of AI generated responses as a function of user provided prompts
with response_container:
    if user_input:
        response = generate_response(user_input)
        st.session_state.user_input.append(user_input)
        st.session_state.bot_response.append(response)

    if st.session_state['bot_response']:
        for i in range(len(st.session_state['bot_response'])):
            message(st.session_state['user_input'][i], is_user=True, key=str(i) + '_user')
            message(st.session_state['bot_response'][i], key=str(i))

了解代码:

  • 导入先决条件Python库,例如streamlithugchat
  • 使用page_title input参数在st.set_page_config方法中命名。
  • 通过提供启动消息来初始化聊天机器人,将数据保存在bot_responseuser_input状态中。
  • 使用st.container()作为占位符创建一个常规应用程序布局,其中input_containerresponse_container变量分别对应于用户和聊天机器人。
  • get_input()方法使用st.text_input()从用户那里获取输入。
  • generate_response(prompt)方法将用户输入作为参数,使用hugchat.ChatBot()的huggingchat api生成响应。

运行该应用程序

执行以下命令运行应用程序。

streamlit run app.py

您将获得下面的输出,

output final

那里有!您的第一个免费开源llm的聊天机器人:)

感谢您阅读本文。

感谢Gowri M Bhatt审查了内容。

如果您喜欢这篇文章,请单击“心脏”按钮 - 分享以帮助其他人找到它!

可以在此处找到本教程的完整源代码,

GitHub - codemaker2015/chatMATE: An LLM-powered ChatBot with HugChat and Streamlit | github.com

本文也可在Medium上找到。

这是一些有用的链接,