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号
 冀公网安备13050302001966号