十分钟学会Gradio,快速搭建模型交互界面

470 阅读2分钟

Gradio 是一个开源Python库,用于快速构建AI模型、API 或任意 Python函数的交互式Web用户界面。

先看三个例子:

1.Stable Diffusion web UI

3.png

2.Hugging Face上用Gradio做的在线推理交互页面

1.png

3.魔搭社区上用Gradio做的在线推理交互页面

2.png

| 安装与使用

在你的Python环境中:pip install gradio
导入使用:import gradio as gr

| 通过初始化gr.Interface对象来构建界面

这是Gradio创建页面的两种方式之一,优点是高度封装,使用起来十分简单,缺点是灵活性差。

假定我们的功能需求是:

  • 要有文本输入框。比如用来输入大语言模型的提示词
  • 用户历史输入记忆。比如和大模型多轮对话要用到历史对话信息
  • 可以上传文件。比如上传图片用于图生图任务
  • 可以保存日志
  • ......

例子:

image.png

上图示例的界面十多行代码即可完成,非常简洁( 向观智能客服发送代号0736可获得该代码文件,v公平~台"观智能")

image.png 核心逻辑

  • 定义一个处理函数,这里取名叫person_info
  • 初始化交互界面类Interface对象
    有三个核心参数
    1. fn,处理函数。这里将上面定义的person_info传给它。
    2. inputs,输入组件。有多个输入组件时放在列表中,输入组件的顺序和个数和处理函数fn的参数要一致。
    3. outputs,输出组件。多个输出组件时放在列表中,输出组件顺序和个数需要和fn的返回值一致。
    **其它:
    **1. Clear、Submit、Flag三个按钮是gr.InterFace默认存在的,分别代表清除输入、提交信息、保存日志 2. 会话记忆,也就是保存用户的历史输入信息用的是gr.State()对象,inputs和outputs中的State指向同一个对象 3. 日志保存。点击Flag按钮可保存日志。在项目目录下生成日志文件夹和文件 4. 组件的传入方式
    字符串名称,如“textbox”,代表一个文本框
    类对象,如 gr.Textbox(),这种方式就可以传入一些参数,比字符串更灵活。上面示例中均采用这种方式。
  • 启动服务
    demo.launch()。本地默认地址http://127.0.0.1:7860

| 通过gr.Block创建界面

这是Gradio创建界面的另一种方式,作者有时间再写一个相关教程~

如果喜欢作者的文章,可以关下v公众平台---观智能~