不同类型网站比较,如何给网站划分栏目,电子商务网站模版,wordpress评论居中使用Gradio构建AI前端 - RAG的QA模块
摘要
本文将基于Gradio的Interface#xff0c;继续构建RAG系统的QA前端页面#xff0c;对比上一篇对召回测试前端页面的构建#xff0c;来对比在Gradio下#xff0c;Blocks和Interface的两种区别。
Gradio Interface简介
Gradio 是一个…使用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( fnrun_qa, # 核心处理函数 inputs[ # 输入组件列表 gr.Textbox( label问题, placeholder请输入您的问题..., lines3, info例如: 哪些节假日应该安排休假 或 什么是未成年 ), gr.Slider( labelTop-K检索数量, minimum1, maximum10, value5, step1, info设置返回的最相似文档数量 ) ], outputsgr.Markdown( # 输出组件 label回答结果 ), title RAG问答系统, description基于LangChain和Gradio构建的RAG问答系统使用向量数据库进行知识检索, examples[ # 示例问题 [哪些节假日应该安排休假, 5], [什么是未成年, 3], [足球比赛的基本规则是什么, 4] ], themegr.themes.Soft(), allow_flaggingnever # 禁用标记功能 )下面是构建界面的样子通过以上代码可以看到在gr.Interface里首先指定捆绑的是哪一个function然后在inputs和outputs依次创建对应的前端组件并且对应function里的输入参数和返回值。这段代码调用项目里已经封装好的LC_RAG_03_QA.py里的方法。关键区别点对比上一篇这里汇总了Interface方式和Blocks两种方式的区别。布局控制Interface自动排列输入输出无需手动控制布局Blocks通过gr.Row()、gr.Column()等手动控制组件布局事件处理Interface自动关联输入输出和处理函数Blocks需要显式通过.click()等方法绑定事件灵活性Interface适合简单场景代码量少Blocks适合复杂界面支持条件显示、多步骤交互等高级功能结构组织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_questiondef run_qa(question, top_k5):运行QA并返回结果try:answer, sources answer_question(questionquestion,top_ktop_k,vectorstore_dir./RAG/chroma_db,embedding_modeltext-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 Interfaceiface gr.Interface(fnrun_qa,inputs[gr.Textbox(label问题,placeholder请输入您的问题...,lines3,info例如: 哪些节假日应该安排休假 或 什么是未成年),gr.Slider(labelTop-K检索数量,minimum1,maximum10,value5,step1,info设置返回的最相似文档数量)],outputsgr.Markdown(label回答结果),title RAG问答系统,description基于LangChain和Gradio构建的RAG问答系统使用向量数据库进行知识检索,examples[[哪些节假日应该安排休假, 5],[什么是未成年, 3],[足球比赛的基本规则是什么, 4]],themegr.themes.Soft(),allow_flaggingnever)启动应用ifname main:iface.launch(server_name0.0.0.0,server_port7861,shareFalse,debugFalse)---------------------------------------------------------------aspnetx的BI笔记系列索引使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能一起玩转SQL Server 2012 下的分析服务使用SQL Server分析服务定位目标用户---------------------------------------------------------------来自博客园的aspnetx宋卫东