1. 进度条
import gradio as gr
import time
def response1(number):
# 创建进度条
progress = gr.Progress()
result = 0.0
for i in range(1, number + 1):
# 设置进度条的进度
# progress((i, number), desc="准备计算")
progress(i / number, desc="准备计算")
result += i
time.sleep(0.1)
return result
def response2(number):
progress = gr.Progress()
# 创建 tqdm 进度条,并让 progress 跟踪其进度
pbar = progress.tqdm(iterable=range(number), desc='正在计算')
result = 0.0
for i in pbar:
result += i
time.sleep(0.1)
return result
def test():
app = gr.Interface(fn=response1, inputs='number', outputs='number')
app.launch()
if __name__ == '__main__':
test();
2. 会话保持
Gradio 会话保持(Session State)是指在用户会话过程中,保存用户请求的数据。这对于需要跟踪用户状态、或在用户交互中保留上下文的应用程序非常有用。
- 全局会话保持:用户共享历史信息
- 用户会话保持:用户独享历史信息
import gradio as gr
# 全局记录
def test01():
states = []
def response(content):
states.append(content)
return content, '\n'.join(states)
app = gr.Interface(fn=response, inputs='text', outputs=['text', 'text'])
app.launch()
# 用户记录
def test02():
def response(content, history):
history.append(content)
return content, '\n'.join(history), history
# 输入和输出必须有且只有 gr.State()
# 临时记忆,刷新浏览器后信息丢失
history = gr.State([])
app = gr.Interface(fn=response,
inputs=['text', history],
outputs=['text', 'text', history])
app.launch()
if __name__ == '__main__':
test02()
3. 提示信息
import gradio as gr
def response(text):
if text in ['i', 'I']:
gr.Info('这是普通消息', duration=1)
return 'no'
if text in ['w', 'W']:
gr.Warning('这是警告消息', duration=1)
return 'no'
if text in ['e', 'E']:
raise gr.Error('这是错误消息', duration=3)
return 'OK'
def test():
demo = gr.Interface(response, inputs='text', outputs='text')
demo.launch(show_error=True, debug=True)
if __name__ == "__main__":
test()
4. 迭代输出
import gradio as gr
import time
def test():
# 注意:只需将 fn 函数修改为 yield 生成器
def response(message, history):
data = '风起时,叶子轻轻摇,无声地诉说着秋的寂寥。云在天边低语,柔和轻飘,像是在远方寻找着归巢。'
output = ''
for index in range(len(data)):
time.sleep(0.2)
output += data[index]
yield output
gr.ChatInterface(fn=response, type='messages').launch()
if __name__ == '__main__':
test()
5. 选项卡
import gradio as gr
import random
def test():
def respond1(message, history):
return random.choice(['Hello', '你好'])
interface1 = gr.ChatInterface(fn=respond1, type='messages')
def respond2(num):
return num + 100
interface2 = gr.Interface(respond2, inputs='number', outputs='number')
# 创建标签页
gr.TabbedInterface(interface_list=[interface1, interface2],
tab_names=['聊天界面', '传统界面'],
title='交互式界面').launch()
if __name__ == '__main__':
test()

冀公网安备13050302001966号