博主原文链接:https://www.yourmetaverse.cn/nlp/350/
探索Gradio的Chatbot模块:创建交互式聊天机器人
Chatbot模块概述
Chatbot模块是Gradio中的一个组件,用于展示聊天机器人的输出,包括用户提交的消息和机器人的回复。它支持一些Markdown语法,包括粗体、斜体、代码和图片等。Chatbot模块的输入不接受用户输入,而是通过函数返回的列表来设置聊天内容。返回的列表应包含多个内部列表,每个内部列表包含两个元素:用户消息和机器人回复。消息可以是字符串、元组或None。如果消息是字符串,可以包含Markdown格式的文本。如果消息是元组,应包含文件路径和可选的替代文本。值为None的消息将不会显示在聊天界面上。
Chatbot模块参数
Chatbot模块有一些参数可以用来自定义其行为和外观,下面是一些常用的参数:
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
value | Chatbot的默认值,应为一个列表,其中每个元素为一个内部列表,包含用户消息和机器人回复。可以是可调用对象,在应用程序加载时设置初始值。 | list[list[str | tuple[str] | tuple[str, str] | None]] | Callable | None | None |
color_map | 颜色映射,用于设置不同类型消息的颜色。 | dict[str, str] | None | None |
label | 组件的标签。 | str | None | None |
every | 如果value 是一个可调用对象,在客户端连接开启时每隔一段时间运行函数。以秒为单位解释。队列必须启用。 | float | None | None |
show_label | 是否显示标签。 | bool | True |
container | 是否将组件放入容器中,提供一些额外的边框填充。 | bool | True |
scale | 相对于相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,则组件A的宽度是组件B的两倍。应为整数。 | int | None | None |
min_width | 最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个scale值导致该组件比min_width更窄,则首先遵守min_width参数。 | int | 160 |
visible | 组件是否可见。 | bool | True |
elem_id | 作为HTML DOM中此组件的id分配的可选字符串。可用于定位CSS样式。 | str | None | None |
elem_classes | 作为HTML DOM中此组件的类分配的可选字符串列表。可用于定位CSS样式。 | list[str] | str | None | None |
height | 组件的高度(以像素为单位)。 | int | None | None |
latex_delimiters | 用于渲染LaTeX表达式的左右分隔符及其显示方式的设置。如果未提供,latex_delimiters 默认设置为[{ "left": "$$", "right": "$$", "display": True }] ,因此只会将用$$分隔的表达式渲染为LaTeX,并在新行上显示。传入空列表以禁用LaTeX渲染。有关更多信息,请参阅KaTeX文档。 | list[dict[str, str | bool]] | None | None |
Chatbot模块常用方法
除了参数设置外,Chatbot模块还提供了一些方法用于与其他组件进行交互,下面是其中两个常用方法的介绍:
1. change方法
change
方法是一个事件监听器,当组件的值发生变化时触发,无论是由用户输入(例如,用户在文本框中输入)还是由函数更新(例如,图像从事件触发的输出接收到值),都会触发该方法。该方法适用于当Chatbot组件位于Gradio Blocks中时使用。
参数:
fn
:要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或一个值的元组,元组中的每个元素对应一个输出组件。inputs
:要作为输入使用的Gradio组件的列表。如果函数不接受任何输入,应传入一个空列表。outputs
:要作为输出使用的Gradio组件的列表。如果函数不返回任何输出,应传入一个空列表。- 其他参数用于配置事件的行为,例如是否显示进度动画、是否将请求放入队列等。
2. select方法
select
方法是一个事件监听器,当用户从Chatbot中选择消息时触发。它使用gradio.SelectData
作为事件数据,其中包含value
字段表示所选消息的文本,index
字段表示消息的索引(形式为[消息,参与者])。可以使用EventData
文档中的方法来处理此事件数据。
参数:
fn
:要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或一个值的元组,元组中的每个元素对应一个输出组件。inputs
:要作为输入使用的Gradio组件的列表。如果函数不接受任何输入,应传入一个空列表。outputs
:要作为输出使用的Gradio组件的列表。如果函数不返回任何输出,应传入一个空列表。- 其他参数用于配置事件的行为,例如是否显示进度动画、是否将请求放入队列等。
通过使用change
和select
方法,我们可以在Chatbot模块中实现更复杂的交互逻辑,使用户能够与聊天机器人进行动态的对话。
总结
Gradio的Chatbot模块为开发人员提供了一个简单而强大的工具,用于创建交互式的聊天机器人。通过合理设置参数和使用相应的方法,我们可以自定义聊天机器人的外观和行为,并实现与用户的交互。无论是构建智能助手、虚拟客服还是开发面向用户的自然语言处理应用,Gradio的Chatbot模块都将是一个强大的工具,为用户提供与聊天机器人的互动体验。