简介
重要提示:如果您刚开始接触,我们建议使用 gr.ChatInterface
来创建聊天机器人——它是一个高级抽象,使得可以快速创建漂亮的聊天机器人应用程序,往往只需一行代码。在这里了解更多信息。
本教程将展示如何使用 Gradio 的低级 Blocks API 从头开始制作聊天机器人 UI。这将使您完全控制您的聊天机器人 UI。您将首先创建一个简单的聊天机器人来显示文本,第二个聊天机器人来流式传输文本响应,最后一个聊天机器人还可以处理媒体文件。我们创建的聊天机器人界面将如下所示:
先决条件:我们将使用 gradio.Blocks
类来构建我们的聊天机器人演示。如果您还不熟悉它,可以先阅读 Blocks 指南。另外,请确保您使用的是 Gradio 的最新版本: pip install --upgrade gradio
。
一个简单的聊天机器人演示
让我们从重现上面的简单演示开始。你可能已经注意到,我们的机器人对任何输入只是随机回答“你好吗?”,“我爱你”,或者“我非常饿”。以下是用 Gradio 创建这个的代码:
import gradio as gr # 导入gradio库
import random # 导入random库,用于生成随机数
import time # 导入time库,用于控制时间相关的功能
# 使用gr.Blocks创建一个Gradio界面
with gr.Blocks() as demo:
chatbot = gr.Chatbot() # 创建一个聊天机器人组件
msg = gr.Textbox() # 创建一个文本框组件,用于用户输入消息
clear = gr.ClearButton([msg, chatbot]) # 创建一个清除按钮,用于清除文本框和聊天机器人的内容
# 定义一个响应函数,用于处理用户消息和聊天历史
def respond(message, chat_history):
# 机器人随机选择一条消息作为回复
bot_message = random.choice(
["How are you?", "I love you", "I'm very hungry"])
# 将用户消息和机器人消息添加到聊天历史中
chat_history.append((message, bot_message))
# 等待2秒钟
time.sleep(2)
# 返回空字符串和更新后的聊天历史
return "", chat_history
# 当文本框提交时,调用respond函数,并更新文本框和聊天机器人的内容
msg.submit(respond, [msg, chatbot], [msg, chatbot])
# 启动应用程序
demo.launch()
这里有三个 Gradio 组件:
一个
Chatbot
,它的值存储了用户和机器人之间对话的完整历史,作为响应对的列表。一个
Textbox
,用户可以在其中输入他们的消息,然后按回车/提交以触发聊天机器人的回应一个
ClearButton
按钮来清除文本框和整个聊天机器人的历史记录
我们有一个单一的函数, respond()
,它接收聊天机器人的整个历史记录,在记录中