前面我们实现了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也没关系,我也不会,我们可以让大模型帮你写。
当然大模型生成的代码可能会有错误,告诉大模型运行的错误,让大模型一个个修正即可。
完整的对话过程可看这个链接:chat.openai.com/share/3db8b…
最终生成的代码如下:
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 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
- 踩坑不易,感谢关注和围观
本站文章一览:
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓