跳到主要内容

LangChain搭建AI数据分析助手

课程说明:

  体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(夏季班)

bef0897853f861af5f4211442be446b

《2025大模型Agent智能体开发实战》(夏季班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

a55d48e952ed59f8d93e050594843bc

部分项目成果演示

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大模型原理与实战课程》(夏季班)

4a11b7807056e9f5b281278c0e37dad

两门大模型课程夏季班目前上新特惠+618年中钜惠双惠叠加,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇

img 6d9391e440ee8df1466cef1bce40705

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_messagetext / 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实现代码生成 + 可视化
LLMDeepSeek Chat统一 Agent 调用
向量库DashScope Embedding + FAISS支持中文语义匹配
UIStreamlit + 自定义 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文件中,大家可以扫描下方二维码免费领取

image-20250617200526877 6d9391e440ee8df1466cef1bce40705

  项目运行效果如下所示:

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)