LangChain搭建AI数据分析助手
课程说明:
- 体验课内容节选自《2025大模型Agent智能体开发实战》(夏季班) 完整版付费课程
体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(夏季班)
《2025大模型Agent智能体开发实战》(夏季班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!
部分项目成果演示
from IPython.display import Video
- MateGen项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/MG%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
- 智能客服项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E6%A1%88%E4%BE%8B%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
- Dify项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/2f1b47f42c65fd59e8d3a83e6cb9f13b_raw.mp4", width=800, height=400)
- LangChain&LangGraph搭建Multi-Agnet
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90Multi-Agent%E6%95%88%E6%9E%9C%E6%BC%94%E7%A4%BA%E6%95%88%E6%9E%9C.mp4", width=800, height=400)
此外,若是对大模型底层原理感兴趣,也欢迎报名由我和菜菜老师共同主讲的《2025大模型原理与实战课程》(夏季班)
两门大模型课程夏季班目前上新特惠+618年中钜惠双惠叠加,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇
LangChain快速入门与Agent开发实战
Part 9.基于LangChain搭建AI数据分析智能体Data Agent
实战:智能数据分析可视化系统
接下来,我们进一步丰富智能问答系统的功能,接下来的案例中,我们构建一个基于 Streamlit + LangChain + DashScope + DeepSeek 的智能化数据分析助手,融合两个典型的企业级大模型应用场景:
- PDF 智能问答:支持上传多个 PDF 文档,自动完成内容提取、文本切块、语义向量化,并构建 FAISS 本地检索库,结合大模型进行问答;
- CSV 数据智能分析:通过自然语言指令分析结构化数据,包括统计查询、代码生成与图表绘制;
完整代码如下所示:
# ! pip install langchain_experimental matplotlib tabulate
FENCE0
基于上述代码,我们能够实现如下功能:
📄 PDF 智能问答 + 📊 CSV 数据分析与可视化 ✔ 采用 LangChain 工具调用(Agent) ✔ 集成 FAISS 检索(RAG)与 Pandas 代码执行 ✔ 前端使用 Streamlit 高度美化,体验完整
以下是各段代码解释:
🧩 1. 模块导入与全局设置
FENCE0
-
引入必要的模块:
streamlit: 构建 Web 应用前端。pandas: 用于 CSV 数据分析。PdfReader: 提取 PDF 文本。langchain相关模块用于智能问答 / 工具调用。
-
加载
.env的 API key; -
设置
os.environ["KMP_DUPLICATE_LIB_OK"]避免 MKL 多线程冲突。
🎨 2. 页面配置与自定义 CSS
FENCE1
- 设置网页标题、图标、布局。
- 自定义 CSS 美化:主题色、按钮动画、卡片式提示框、Tabs 标签样式等。
📌 说明:这些样式让用户体验更加现代化,比如“PDF 已准备 ✅”就是用 .info-card.success-card 显示。
🔧 3. 初始化 Embedding、LLM 与 Session
FENCE2
init_embeddings:使用阿里 DashScope 提供的text-embedding-v1。init_llm:初始化 DeepSeek 大模型。init_session_state:使用st.session_state保存对话历史与 CSV 数据。
📄 4. PDF 文档处理逻辑
FENCE3
- 提取上传 PDF 内容 → 文本切片 → 向量存储。
- 使用
FAISS本地数据库持久化保存向量。 check_database_exists()用于确认是否已有 FAISS 数据库。
🧠 5. PDF 智能问答:RAG + Agent
FENCE4
- 加载 FAISS 向量 → 构建
retriever_tool; - 设置
system prompt(要求准确、不要乱猜); - 创建 LangChain Agent;
- 调用大模型:用户输入问题 → Agent 判断是否用工具 → 检索 + 生成回答。
📊 6. CSV 数据分析:代码执行工具 + 可视化
FENCE5
- 用
PythonAstREPLTool将 Pandas dataframe 注入 Agent 可调用作用域; - 支持“代码生成 + 执行 + 输出图表”;
- 若结果中包含
GRAPH:图名,就显示plot.png图像; - 对应
chat_message中text/dataframe/image三类消息渲染。
🖥 7. Streamlit 主界面(Tabs 切换)
FENCE6
tab1:PDF 问答
-
左侧:
- 聊天历史(markdown)
- 输入框(chat_input)
- 实时调用
get_pdf_response
-
右侧:
- 上传 PDF
- 点击“上传并处理”
- 分片、向量化、持久化存储
- 清除数据库
tab2:CSV 分析
-
左侧:
- 聊天历史 + 输入
- 如果回答为图表或表格会高亮展示
-
右侧:
- 上传 CSV,存入 session
- 显示预览
- 显示表结构 / 列类型
- 清除 CSV / 图像缓存
📌 8. 页面底部说明
FENCE7
- 技术栈说明(LangChain、Streamlit、FAISS、DeepSeek);
- 提示说明;
- 使用说明(支持多文件上传、图像分析等)。
✅ 总结(核心功能架构)
| 模块 | 技术组件 | 说明 |
|---|---|---|
| PDF 问答 | FAISS + Retriever Tool | 构成 RAG 检索增强流程 |
| CSV 分析 | PythonAstREPLTool + Pandas | 实现代码生成 + 可视化 |
| LLM | DeepSeek Chat | 统一 Agent 调用 |
| 向量库 | DashScope Embedding + FAISS | 支持中文语义匹配 |
| UI | Streamlit + 自定义 CSS | 提供多 Tab 页面与交互式聊天 |
| 状态管理 | st.session_state | 管理历史、数据、图片等上下文 |
这里不再重复赘述PDF智能问答的流程,重点说明CSV数据智能分析的流程。
- Step 1. CSV 文件上传与 DataFrame 显示
用户上传 .csv 文件后由 pandas.read_csv() 加载为 DataFrame,实时预览数据行列、列名、类型等信息。
FENCE0
- Step 2. 构建代码执行工具 Agent
构建系统提示,注入 DataFrame 的 .head() 输出增强语境理解,使用 PythonAstREPLTool 工具允许模型执行基于 df 的代码分析,通过 create_tool_calling_agent 构建分析 Agent,可执行筛选、分组、聚合等 pandas 操作,图表绘制(保存为 plot.png,关键词识别后渲染)。
FENCE0
- Step 3. 图表识别与自动展示
若模型返回内容中包含 "GRAPH:",则自动读取 plot.png 并展示;支持 plt.hist()、plt.bar() 等可视化命令;会话记录中分类保存文本、图像与表格类型内容。
完整的代码已经上传至百度网盘中的data_analysis.py文件中,大家可以扫描下方二维码免费领取
项目运行效果如下所示:
from IPython.display import Video
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/LangChain%20%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96.mp4", width=800, height=400)
至此,我们就使用LangChain快速构建了很多比较符合企业应用的智能应用示例,公开课时间有限,我们也仅能浅尝辄止,给大家提供一个快速上手LangChain的思路。而实际上企业应用的需求会更加复杂和多元化,比如对我们现在构建的智能分析助手,需要手动切换是进行PDF还是CSV的分析,而实际上往往需要根据用户上传的文件类型或者用户提出的问题,由系统自动判断是进行PDF还是CSV的分析,并自动调用相应的工具。当然这种架构会带来更多的复杂性设计,比如下面的这个案例:
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E6%A1%88%E4%BE%8B%E8%A7%86%E9%A2%91.mp4", width=800, height=400)