news 2026/4/6 23:50:19

使用Gradio构建AI前端 - RAG的QA模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Gradio构建AI前端 - RAG的QA模块

使用Gradio构建AI前端 - RAG的QA模块

摘要

本文将基于Gradio的Interface,继续构建RAG系统的QA前端页面,对比上一篇对召回测试前端页面的构建,来对比在Gradio下,Blocks和Interface的两种区别。

Gradio Interface简介

Gradio 是一个用于快速创建机器学习和数据科学演示界面的Python库,允许开发者通过简单代码将函数转换为交互式Web应用,无需前端开发经验。gr.Interface是 Gradio 提供的一种快速创建界面的方式,适用于简单的输入输出场景,采用"函数驱动"模式,直接将函数与输入输出组件绑定。

核心特点:

  • 结构简单,适合快速原型开发
  • 输入输出组件按固定布局排列
  • 基于函数映射,直接将输入传递给函数并展示输出

综上汇总,主要的特点就是简单,快。

Interface 与 Blocks 的区别

特性InterfaceBlocks
复杂度简单,适合快速搭建灵活,适合复杂界面
布局控制自动布局,结构固定完全自定义布局
交互逻辑基于单一函数映射支持多函数、事件触发
适用场景简单输入输出场景复杂交互、多步骤流程

相对来说,Interface的构建方式比Blocks要更简单,代码量更少。
通过下面的代码,可以看到跟Blocks有明显的区别。

代码示例:

/* by 01130.hk - online tools website : 01130.hk/zh/formatphp.html */ # 创建Gradio Interface iface = gr.Interface( fn=run_qa, # 核心处理函数 inputs=[ # 输入组件列表 gr.Textbox( label="问题", placeholder="请输入您的问题...", lines=3, info="例如: '哪些节假日应该安排休假?' 或 '什么是未成年?'" ), gr.Slider( label="Top-K检索数量", minimum=1, maximum=10, value=5, step=1, info="设置返回的最相似文档数量" ) ], outputs=gr.Markdown( # 输出组件 label="回答结果" ), title="🤖 RAG问答系统", description="基于LangChain和Gradio构建的RAG问答系统,使用向量数据库进行知识检索", examples=[ # 示例问题 ["哪些节假日应该安排休假?", 5], ["什么是未成年?", 3], ["足球比赛的基本规则是什么?", 4] ], theme=gr.themes.Soft(), allow_flagging="never" # 禁用标记功能 )

下面是构建界面的样子:

通过以上代码,可以看到在gr.Interface里,首先指定捆绑的是哪一个function,然后在inputs和outputs,依次创建对应的前端组件,并且对应function里的输入参数和返回值。
这段代码调用项目里已经封装好的LC_RAG_03_QA.py里的方法。

关键区别点:

对比上一篇,这里汇总了Interface方式和Blocks两种方式的区别。

  1. 布局控制

    • Interface:自动排列输入输出,无需手动控制布局
    • Blocks:通过gr.Row()gr.Column()等手动控制组件布局
  2. 事件处理

    • Interface:自动关联输入输出和处理函数
    • Blocks:需要显式通过.click()等方法绑定事件
  3. 灵活性

    • Interface:适合简单场景,代码量少
    • Blocks:适合复杂界面,支持条件显示、多步骤交互等高级功能
  4. 结构组织

    • Interface:通过参数配置界面元素
    • Blocks:使用上下文管理器(with语句)组织界面结构

在本案例中,使用gr.Interface代码更简洁高效。如果需要更复杂的交互(如多步骤处理、条件显示组件等),则应选择gr.Blocks
所以如果是对模型功能的评估,建议选择gr.Interface,如果是做原型设计,建议选择gr.Blocks。

本文项目代码可以在以下仓库里找到:
https://github.com/microsoftbi/Langchain_DEMO/tree/main/RAG
此篇对应的代码是:LC_RAG_07c_Gradio.py

这里再补充一个快速的方法,就是借助AI开发工具,比如TRAE,以下是我用的提示词,仅供参考:

/* by 01130.hk - online tools website : 01130.hk/zh/formatphp.html */ 在当前python文件中,编写一个QA的前端界面,前端框架使用Gradio,不要使用blocks的方式构建页面,直接使用interface的方式来构建,使用的方法,调用LC_RAG_03_QA.py里的answer_question方法。

虽然在我使用的过程中,代码无法一次通过,但基本上通过一次反馈就可以修补成功,从而省下了这部分代码的工作量。

以下是代码的全部内容,点击展开。``` Python import gradio as gr from LC_RAG_03_QA import answer_question

def run_qa(question, top_k=5):
"""运行QA并返回结果"""
try:
answer, sources = answer_question(
question=question,
top_k=top_k,
vectorstore_dir="./RAG/chroma_db",
embedding_model="text-embedding-v4"
)

# 格式化结果 result = f"# 🎯 答案\n\n{answer}\n" if sources: result += "\n# 📚 参考来源\n" for source in sources: result += f"- {source}\n" return result except Exception as e: return f"❌ 错误: {str(e)}"

创建Gradio Interface

iface = gr.Interface(
fn=run_qa,
inputs=[
gr.Textbox(
label="问题",
placeholder="请输入您的问题...",
lines=3,
info="例如: '哪些节假日应该安排休假?' 或 '什么是未成年?'"
),
gr.Slider(
label="Top-K检索数量",
minimum=1,
maximum=10,
value=5,
step=1,
info="设置返回的最相似文档数量"
)
],
outputs=gr.Markdown(
label="回答结果"
),
title="🤖 RAG问答系统",
description="基于LangChain和Gradio构建的RAG问答系统,使用向量数据库进行知识检索",
examples=[
["哪些节假日应该安排休假?", 5],
["什么是未成年?", 3],
["足球比赛的基本规则是什么?", 4]
],
theme=gr.themes.Soft(),
allow_flagging="never"
)

启动应用

ifname== "main":
iface.launch(
server_name="0.0.0.0",
server_port=7861,
share=False,
debug=False
)

---------------------------------------------------------------

aspnetxBI笔记系列索引:

使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能

一起玩转SQL Server 2012 下的分析服务

使用SQL Server分析服务定位目标用户

---------------------------------------------------------------

来自博客园的aspnetx宋卫东

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 14:36:14

【限时干货】Open-AutoGLM在Windows下的GPU调用难题,终于有解了!

第一章:Open-AutoGLM在Windows下的GPU调用难题,终于有解了! 对于在Windows平台部署Open-AutoGLM的开发者而言,长期困扰的一个核心问题是无法稳定调用本地GPU资源。尽管模型支持CUDA加速,但在实际运行中常出现显存分配失…

作者头像 李华
网站建设 2026/4/3 13:17:46

你不可错过的Open-AutoGLM技术内幕:4大创新点决定未来AI部署方向

第一章:Open-AutoGLM的技术原理Open-AutoGLM 是一个基于自回归语言建模与图神经网络融合架构的开源框架,旨在实现高效的知识推理与语义理解。其核心技术栈结合了 Transformer 的序列建模能力与图结构数据的拓扑表达优势,通过双向信息流动机制…

作者头像 李华
网站建设 2026/4/6 2:19:32

TensorFlow在水资源管理中的智能调度

TensorFlow在水资源管理中的智能调度 当一场突如其来的暴雨即将侵袭某流域时,传统水利系统可能还在等待值班人员查看水位报表、召开调度会议、层层上报决策——而此时,下游的防洪准备或许已错过黄金窗口。但在一个基于TensorFlow构建的智能调度系统中&am…

作者头像 李华
网站建设 2026/3/27 21:48:25

揭秘MCP如何革命性提升RAG:从工具单一到智能选择

MCP驱动的智能体化RAG系统解决了传统RAG工具单一、缺乏判断的痛点。通过统一接口、模块化设计和智能路由机制,赋予AI"工具选择大脑",使其能根据问题性质自动选择最佳工具链。该架构显著提升开发效率、优化性能,并拓展应用场景&…

作者头像 李华
网站建设 2026/4/3 3:55:54

基于STM32陀螺仪角度检测阈值报警水平仪系统设计

第一章 系统整体方案规划 本系统以STM32F103C8T6单片机为控制核心,融合陀螺仪角度检测、阈值设定、声光报警与水平状态显示功能,旨在实现物体水平度的精准监测与异常预警,适用于机械安装、建筑施工、设备校准等场景。核心目标是通过陀螺仪传感…

作者头像 李华
网站建设 2026/4/4 7:05:27

这个五层结构AI Enablement Stack,把真正可用的AI Agent技术栈生态讲透了

尽管已在AI开发领域投入了数十亿美元,但编码Agents仍受制于原始的工具。AI技术堆栈不断涌现,却没有一个是专门为编码Agents脱颖而出量身打造的。 如今,这些Agents面临着两大关键挑战。其一,Agents的编码方式就如同人类使用记事本…

作者头像 李华