【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

简介: 【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。

前面我们实现了RAG基本流程,今天我们在此基础上给它加个UI界面,在浏览器打开,实现上传本地文件、解析,并用大模型实现与该文档的对话。也就是一个阉割版demo版的ChatPDF或知识库对话系统。

界面采用Python的gradio库,这个库在机器学习和大模型界很火,它运行后会启动一个Web服务器,并在默认浏览器中打开一个新页面,显示Gradio界面。

别问为啥用这个,就是看大模型的界面好多都是这个库搭的,所以也就用一下。不会gradio没关系,就几行代码,很容易理解。或者可以直接用ChatGPT帮你写一个框架。

首先来安装这个库:

pip install 时加上了清华源,因为我这里使用默认源的话会安装超时,失败。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gradio 

0. 利用大模型帮你创建UI

使用Python的gradio库来创建一个UI界面,该界面可以上传本地文件。

不会gradio也没关系,我也不会,我们可以让大模型帮你写。

当然大模型生成的代码可能会有错误,告诉大模型运行的错误,让大模型一个个修正即可。

完整的对话过程可看这个链接:https://chat.openai.com/share/3db8b8a0-a775-48cc-9833-892fd36e43b8

最终生成的代码如下:

import gradio as gr
def upload_file(input_file):
    file_contents = input_file  # 上传文件对象
    return f"你上传的文件内容是:\n{file_contents}"
gr.Interface(upload_file, 
              inputs="file",
              outputs="text",
              title="文件上传器", 
              description="请点击按钮上传文件。",
              allow_flagging=False).launch()

运行结果(通过浏览器打开下面链接可看到界面):

界面如下:点击可弹出对话框让用户选择本地文件,选择后点击Submit按钮会上传文件,上传成功后在右侧output框里会显示文件信息。

1. 上传文件后的处理

(1)引入前面我们实现的RAG文件和类

(2)实例化一个chat_bot

(3)上传文件时,调用RAG的创建向量数据库接口,创建向量数据库

from rag import RAG_Bot ## 引入前面我们实现的rag文件和类
chat_bot = RAG_Bot() ## 实例化一个chat_bot
# 定义一个处理函数,用于接收上传的文件并进行处理
def upload_file(input_file):
    chat_bot.createVectorDB(input_file) ## 创建向量库,灌入数据
    return f"你上传的文件内容是:\n{input_file}"

2. 添加聊天窗口

其实这里可以另开一个界面,实现聊天窗口,因为聊天和创建向量数据库是独立的。这里为了演示方便,我们在同一个界面上添加一个聊天框。

本人愚笨,用ChatGPT 3.5问了半天,也没有得到正确的代码。于是想了个办法白嫖用了一下 GPT4,好不容易才得到了正确的代码,感觉还不如直接去看gradio的教程来的快。

看下代码:

import gradio as gr
def process_inputs(input_file, chat_input):
    outputs = ["", ""]
    if input_file is not None:  # 处理文件上传
        outputs[0] = f"你上传的文件内容是:\n{str(input_file)}"
    if chat_input != "":  # 处理聊天输入
        outputs[1] = f"你说的是:{chat_input},很高兴与你交流!"
    return tuple(outputs)
# 输入类型为文件上传和文本框
inputs = [gr.File(), gr.Textbox(label="聊天输入")]
# 输出类型为文件内容和聊天输出
outputs = [gr.Textbox(label="文件内容"), gr.Textbox(label="聊天输出")]
iface = gr.Interface(process_inputs, 
                     inputs=inputs,
                     outputs=outputs,
                     title="文件上传和聊天窗口",
                     description="请在适当的输入框中上传文件或进行聊天。",
                     allow_flagging=False)
iface.launch()
  • 运行效果

按照前面在这个代码中添加 【上传文件后的处理】,然后将用户的输入当作query传入RAG中进行对话。最终代码如下:

import gradio as gr
from rag import RAG_Bot ## 引入前面我们实现的rag文件和类
chat_bot = RAG_Bot() ## 实例化一个chat_bot
def process_inputs(input_file, chat_input):
    outputs = ["", ""]
    if input_file is not None:  # 处理文件上传
        chat_bot.createVectorDB(input_file) ## 创建向量库,灌入数据
        outputs[0] = f"你上传的文件内容是:\n{str(input_file)}"
    if chat_input != "":  # 处理聊天输入
        outputs[1] = chat_bot.chat(chat_input) ## 将聊天输入当作query,进行对话
    return tuple(outputs)
# 输入类型为文件上传和文本框
inputs = [gr.File(), gr.Textbox(label="聊天输入")]
# 输出类型为文件内容和聊天输出
outputs = [gr.Textbox(label="文件内容"), gr.Textbox(label="聊天输出")]
iface = gr.Interface(process_inputs, 
                     inputs=inputs,
                     outputs=outputs,
                     title="文件上传和聊天窗口",
                     description="请在适当的输入框中上传文件或进行聊天。",
                     allow_flagging=False)
iface.launch()
  • 运行结果

感想

别看这几行代码,完成的并不容易,因为我不会gradio,用大模型来帮忙写程序固然可以,但大部分情况下写的程序是不对的。

有句话说的很对:AI编程的上限取决于使用者的判断力和能力。

还是要会一点gradio,才能在大模型一直无法得到正确结果时给予正确的引导。

后面有时间还是要学一下gradio库。(要学的东西实在太多了…)


  • 大家好,我是同学小张
  • 欢迎 点赞 + 关注 👏,促使我持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏
  • 踩坑不易,感谢关注和围观

本站文章一览:

相关文章
|
9天前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
2187 13
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
7天前
|
人工智能 数据可视化 搜索推荐
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
本地部署AI模型(如DeepSeek R1)保障数据隐私、节省成本且易于控制,通过Ollama平台便捷安装与运行,结合可视化工具(如Chatbox)及Python代码调用,实现高效、个性化的AI应用开发与使用。
100 3
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
|
3天前
|
人工智能 算法 调度
DeepSeek杀疯了!国产AI大模型如何重构未来技术版图?
【爆款导读】当ChatGPT还在为每月10亿访问量沾沾自喜时,中国AI军团已悄然完成弯道超车。2025年开年,DeepSeek以雷霆之势横扫中美应用商店双榜,上线72小时突破千万DAU,开发者生态激增300%。通过优化算法降低成本、多模态能力提升效率,DeepSeek不仅在用户数量上取得突破,更在实际应用场景中展现强大实力。其开源策略推动技术民主化,助力更多开发者参与AI开发,成为AI军备竞赛中的佼佼者。
137 20
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
以史为鉴,未雨绸缪:身处“大模型掀起的AI浪潮中”的感悟和思考
本文旨在帮助读者更深入地理解大模型和AI技术,重点介绍关键技术革新的背景与影响,特别是本次大模型时代和新一轮AI浪潮的推动因素与发展历程。
|
8天前
|
人工智能 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.4 应用实践之 AI大模型外脑
PolarDB向量数据库插件通过实现通义大模型AI的外脑,解决了通用大模型无法触达私有知识库和产生幻觉的问题。该插件允许用户将新发现的知识和未训练的私有知识分段并转换为向量,存储在向量数据库中,并创建索引以加速相似搜索。当用户提问时,系统将问题向量化并与数据库中的向量进行匹配,找到最相似的内容发送给大模型,从而提高回答的准确性和相关性。此外,PolarDB支持多种编程语言接口,如Python,使数据库具备内置AI能力,极大提升了数据处理和分析的效率。
35 4
|
1月前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
|
30天前
|
人工智能 算法 前端开发
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
OmAgent 是 Om AI 与浙江大学联合开源的多模态语言代理框架,支持多设备连接、高效模型集成,助力开发者快速构建复杂的多模态代理应用。
195 72
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
|
16天前
|
人工智能 自然语言处理 搜索推荐
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
95 24
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
|
11天前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
884 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
8天前
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
138 27

热门文章

最新文章