找回密码
 会员注册
查看: 22|回复: 0

python]gradio]chatbot控件用法

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-9-5 17:06:38 | 显示全部楼层 |阅读模式
chatbot模块是Gradio中的一个组件,用于展示聊天机器人的输出,包括用户提交的消息和机器人的回复。它支持一些Markdown语法,包括粗体、斜体、代码和图片等。Chatbot模块的输入不接受用户输入,而是通过函数返回的列表来设置聊天内容。返回的列表应包含多个内部列表,每个内部列表包含两个元素:用户消息和机器人回复。消息可以是字符串、元组或None。如果消息是字符串,可以包含Markdown格式的文本。如果消息是元组,应包含文件路径和可选的替代文本。值为None的消息将不会显示在聊天界面上。下面是一些常用的参数:简单案例一些实践案例(参考:使用Gradio创建一个chatbot机器人):importgradioasgrimportrandomimporttimewithgr.Blocks()asdemo:chatbot=gr.Chatbot()msg=gr.Textbox()clear=gr.Button("清除")defrespond(message,chat_history):bot_message=random.choice(["你好吗?","我爱你","我很饿"])chat_history.append((message,bot_message))time.sleep(1)return"",chat_historymsg.submit(respond,[msg,chatbot],[msg,chatbot])clear.click(lambda:None,None,chatbot,queue=False)demo.launch()其中,chatbot可以作为输入项,在respond函数中是聊天历史信息,其中chatbot()接收的可以是[['testtt','我爱你'],('11111','我爱你')]元组集合。另外,清除按钮clear.click可以lambda:None直接清除信息 将流式处理添加到聊天机器人importgradioasgrimportrandomimporttimewithgr.Blocks()asdemo:chatbot=gr.Chatbot()msg=gr.Textbox()clear=gr.Button("清除")defuser(user_message,history):return"",history+[[user_message,None]]defbot(history):bot_message=random.choice(["你好吗?","我爱你","我很饿"])history[-1][1]=""forcharacterinbot_message:history[-1][1]+=charactertime.sleep(0.05)yieldhistorymsg.submit(user,[msg,chatbot],[msg,chatbot],queue=False).then(bot,chatbot,chatbot)clear.click(lambda:None,None,chatbot,queue=False)demo.queue()demo.launch()流式处理这里使用.then()方法链接了两个事件user + bot, yield来进行流式化;另外,历史数据同样可以通过chatbot还回传,就是这句了:history+[[user_message,None]]其中,第一个方法user()用用户消息更新聊天机器人,并清除输入字段。因为我们希望立即执行此操作,所以我们设置queue=False,这样如果已启用队列,就会跳过任何队列。聊天机器人的历史记录附加了(user_message,None),其中None表示机器人尚未回复。第二个方法bot()用机器人的响应更新聊天机器人历史记录。我们不创建新的消息,而是用机器人的响应替换先前创建的None消息。最后,我们逐个字符构造消息并生成正在构建的中间输出。Gradio会自动将任何带有yield关键字的函数转换为流式输出接口。我们通过运行demo.queue()启用排队,这是流式输出所需的.当然,这里其实还可以使用一些色彩填充的方式,让chatbot的对话框好看:chatbot=gr.Chatbot().style(color_map=("green","pink"))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 11:34 , Processed in 0.430069 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表