2026-09-30 工作总结 · 个人AI智能体
- 2026-10-12 10:12:03
TOPIC | 个人智能体项目 | 2026-09-30 工作总结
项目路径:
E:\Workbuddy\2026-09-29-21-43-47技术栈:Python · Pandas · Flask · LangChain · DeepSeek · HTML/CSS/JavaScript · ECharts 开发模式:增量开发(每次只完成当前功能、不提前开发、不重写可运行代码、代码简单、必要注释)
交作业入口 | 大屏访问地址
在线访问:http://127.0.0.1:5000[1]
启动命令:
cd E:\Workbuddy\2026-09-29-21-43-47C:\Users\Xu\.workbuddy\binaries\python\envs\default\Scripts\python.exe app.py本机启动 Flask 服务后打开上方链接即可查看数据大屏;右下角悬浮气泡可唤起 AI 数据分析师「小林」。
01 | 今日完成事项总览 | 四项全部落地
templates/admin.htmlstatic/css/admin.css、static/js/admin.js、4 个后端接口 | |||
dashboard.htmldashboard.css 增量修改 | |||
analyst.pyanalyst.js / analyst.css + 对话接口 | |||
(注:9 月 29 日已完成 Flask 框架搭建、模拟数据生成、莫奈花园大屏开发、课件整理四项工作,详见 .workbuddy/memory/2026-09-29.md。)
02 | 功能一 · CSV 数据管理后台
2.1 后端接口(app.py)
/admin | ||
/api/csv/info | exists=false | |
/api/csv/upload | data/data.csv | |
/api/csv/delete |
2.2 上传校验规则
按顺序三重校验,任一不通过即在内存中拦截,绝不落盘,原文件不受影响:
文件后缀必须为 .csv必须包含全部 7 个必需字段:日期、省份、产品、渠道、销量、销售额、利润 至少包含 1 条数据记录
2.3 前端能力
信息展示区:6 项文件信息卡片 数据预览区:前 10 行完整表格,表头按 CSV 实际字段动态渲染 上传覆盖:选中文件后按钮显示文件名,上传成功提示条数 删除二次确认:自定义弹窗(含"不可撤销"警告),支持取消 / 点击遮罩关闭 空状态处理:无数据时显示「暂无数据」,隐藏信息区与预览表;重新上传后自动恢复显示
2.4 大屏联动
/api/data 增加无数据兜底:文件不存在时返回 {"empty": true},大屏显示全屏「暂无数据」遮罩层;数据恢复后 30 秒刷新周期内自动隐藏遮罩并恢复渲染。
2.5 验证结果
info 返回 exists=false,/api/data 返回 empty=true | |
03 | 功能二 · 大屏「数据管理」入口
位置:顶部标题栏右侧,与时钟(最右)错开排列 样式:渐变蓝玻璃按钮、圆角 10px、悬停放大 6% 并加深投影 行为: target="_blank"新窗口打开/admin,避免打断大屏展示
04 | 功能三 · AI 数据分析师「小林」
4.1 技术架构
浏览器(对话抽屉) ↓ POST /api/analyst/chatFlask 后端 ↓ analyst.ask()LangChain create_agent(DeepSeek deepseek-chat, temperature=0) ↓ 自主决定调用5 个 pandas 查询工具 ──→ data/data.csv(唯一数据来源)4.2 五个数据查询工具
profile_dataset | |
query_sales_data | |
rank_sales | |
compare_sales | |
analyze_trend |
指标口径统一:销量/销售额/利润 = 记录求和;利润率 = 利润合计 ÷ 销售额合计(非各条利润率平均)。
4.3 纪律约束(系统提示词)
融合《数据分析师工作流与提示词.md》的七条核心原则,形成硬约束:
先查数据再回答 — 任何涉及数值、排名、对比、趋势的问题必须先调工具 只信工具返回结果 — 不推测、不虚构表名/字段/统计量 不执行代码 — 只能通过 5 个工具取数,不输出要求用户运行的脚本 数据不足直说 — 明确缺什么、缺少会导致哪条结论不成立 口径显式 — 说明筛选条件、记录数、指标口径 禁止无量化表述 — 禁用"明显/大幅"等零信息量词 相关不等于因果 — 无实验设计时只表述伴随关系
回答结构:【结论】→【数据依据】→【分析】(标注推断)→【风险与建议】
数值引用纪律(联调后补充):合计必须直接复制工具返回值、禁止自行累加、换算万元后复核数量级、正文与表格冲突以表格为准。
4.4 前端交互
右下角悬浮「小林」气泡(呼吸光晕动画)→ 展开玻璃质感对话抽屉 每条回答上方显示 🔧 工具名(参数)标签,回答可追溯至真实查询支持 Markdown 表格渲染、快捷问题(一键提问)、Enter 发送 / Shift+Enter 换行 保留最近 6 轮上下文,支持追问
4.5 端到端联调结果(真实 DeepSeek 接口)
profile_datasetrank_sales | ||
compare_sales | ||
analyze_trend | ||
query_sales_data | ||
| 客户年龄分布(数据不存在) | profile_dataset | 明确回答"现有数据无法回答,缺少客户年龄字段",列出需补充字段,未编造任何数值 |
4.6 联调中发现并修复的问题
问题:模型在正文总结中出现单位笔误(把 1025.43 万元写成 102.53 万元),表格数据本身正确。 修复:在系统提示词增加「数值引用纪律」小节,修正后复测合计数值准确无误。
05 | 项目文件清单(21 个文件)
E:\Workbuddy\2026-09-29-21-43-47\├── app.py # Flask 入口:页面路由 + 数据接口 + CSV 管理 + 小林对话接口├── analyst.py # 小林:LangChain agent + 5 个 pandas 工具 + 提示词├── requirements.txt # 依赖:flask、pandas、langchain、langchain-deepseek├── .env # API Key 配置(不入库,已含真实 Key)├── .env.example # 配置模板├── 莫奈花园数据大屏课件.md # 9 月 29 日整理的实战课件├── data/│ ├── data.csv # 销售数据(300 条,31 省份)│ └── generate_data.py # 数据生成脚本(seed=42 可复现)├── images/│ └── dashboard-proof.png # 大屏运行截图(作业完成证明)├── templates/│ ├── index.html # 初始首页│ ├── dashboard.html # 数据大屏(含数据管理入口 + 小林面板)│ └── admin.html # CSV 数据管理后台└── static/ ├── css/ dashboard.css / admin.css / analyst.css └── js/ dashboard.js / admin.js / analyst.js / echarts.min.js / china.json06 | 依赖与环境
C:\Users\Xu\.workbuddy\binaries\python\envs\default | |
deepseek-chatbase_url=https://api.deepseek.com,temperature=0 | |
07 | 启动与访问方式
cd E:\Workbuddy\2026-09-29-21-43-47C:\Users\Xu\.workbuddy\binaries\python\envs\default\Scripts\python.exe app.py{question, history} |
当前状态:Flask 服务已停止(23:00 前后由用户确认结束)。
OUTRO | 待办与后续建议
安全: .env中已写入真实 API Key,若项目需上传代码仓库,请先将.env加入.gitignore性能:小林单次问答涉及 2次问答,用时30 秒,如需提升可考虑加流式输出(SSE)显示进度 功能可选扩展:对话历史持久化、分析结果导出、权限控制(当前 /admin无鉴权)数据侧:当前数据为模拟数据(300 条单年记录),小林已在回答中主动提示样本量局限
引用链接
[1]http://127.0.0.1:5000
[2]http://127.0.0.1:5000
[3]http://127.0.0.1:5000/admin