团队项目第一次作业
基于 Agent 协同与本地持久化的智能企业费控管理系统
| 作业所属课程 | 首页 - 计科24级56班 - 广东工业大学 - 班级博客 - 博客园 |
|---|---|
| 这个作业要求在哪里 | 团队项目第一次作业 团队展示+选题报告+需求分析 - 作业 - 计科24级56班 - 班级博客 - 博客园 |
| 这个作业的目标 | 自主选题,开发一个把智能体真正嵌入业务系统的软件,完成团队展示、选题报告与需求分析,并撰写博客 |
| 团队名称 | 过敏者小组 |
| 团队成员学号-名字 | 3124004054-邓子航 3124005969-郭敏哲 |
| 项目开源地址 | https://github.com/LeiYuD/AI-Expense-Assistant |
基于 Agent 协同与本地持久化的智能企业费控管理系统 —— 让 AI 真正接管繁琐的财务录入
本文是「过敏者小组」的团队作业博客,包含团队展示、选题报告与需求分析三部分。本项目在传统企业管理系统的底座上引入了大语言模型,通过 Function Calling 机制,把“自然语言报账”直接推进到“生成真实 Excel 台账”的执行闭环。
一、团队展示
1. 团队名片
| 项目 | 内容 |
|---|---|
| 队名 | 过敏者小组 |
| 人数 | 2人 |
| 项目全称 | 基于 Agent 协同与本地持久化的智能企业费控管理系统 |
| 一句话定位 | 不做“陪聊机器人”,做“能真实建档、记账、删档的财务助理” |
我们刻意收窄了范围:首期只做“台账 CRUD(增删改查)”这一条主线跑通,不铺开复杂的发票 OCR 识别和企业审批流。功能可以少,但大模型操作本地文件的每一个动作都必须真实可见。
2. 队员风采
- 姓名:邓子航 (学号:3124004054)
- 姓名:郭敏哲 (学号:3124005969)
3. 项目的具体规划及描述
项目按“先让 AI 懂意图,再让 AI 长手脚”的顺序推进:
- 阶段一 基础对话:跑通大模型基础 API 调用,建立前端通信链路。
- 阶段二 工具唤醒(Function Calling):定义 JSON Schema,让大模型能判断何时需要记账、何时需要查询。
- 阶段三 本地持久化(Execution):利用
pandas和openpyxl,让 AI 真实操作本地 Excel 文件(增、删、查、看明细)。 - 阶段四 容错与联调:处理文件被占用、多轮上下文记忆等边界问题,确保演示稳定。
4. 团队愿景
让 AI 赋能每一个被繁琐填表折磨的打工人。打造懂意图、能动手的办公中台,让员工只需随口一句“打车花了50”,系统就能自动完成结构化数据录入。让技术既有大模型的智商,也有真实落地的执行力。
二、选题报告
1. 选题背景:问题不在“记账”,而在“动作断层”
传统费控系统高度依赖人工经验,存在录入繁琐、易出错等痛点。当员工出差产生多笔消费后,常常需要事后回忆、集中贴票填表。
痛点归纳为两个断点:
- 状态不可见:员工无法随时知道“我今天花了多少钱”,必须登录系统手动查询。
- 动作不连贯:即便大模型能理解“记一笔打车费”,传统对话 AI 也只会回复“好的,已为您记录”,并不会真正生成一个文件。
2. 选题价值:从“人找表单”到“事件驱动 + 工具协同”
传统方式是一条“等人推动”的链:发生消费 -> 事后回忆 -> 填表报账。
目标方式把“对话”变成链条的起点,大模型作为调度中枢,挂载多个工具函数:
- 意图识别:提取金额、分类、说明。
- 执行落地:调用
pandas真实写入本地 Excel。 - 数据反馈:读取已有 Excel 进行统计与明细展示。
3. 杀手级功能:本地 Excel 的 CRUD 闭环
我们认为最值得讲的创新点:一次对话,触发跨内存与磁盘的完整执行链。
- 建(Create):用户说“生成记账本”,后端真实创建
.xlsx文件。 - 写(Write):用户说“打车50”,后端调用
pandas追加一行结构化数据。 - 查(Read):用户问“明细”或“总额”,后端真实读取文件并计算,绝不胡编乱造。
- 删(Delete):用户说“清空”,后端调用
os.remove将文件从硬盘物理擦除。
4. 技术方案:Flask + DeepSeek 支撑智能体协同
| 层次 | 组成 | 说明 |
|---|---|---|
| 终端展示层 | HTML5 + 原生 JS | 对话式 UI,维护 chatHistory 数组实现多轮记忆 |
| 业务服务层 | Python + Flask | 接收请求、拼接 Prompt、拦截 tool_calls 指令 |
| 认知决策层 | DeepSeek API | 分析意图,决定调用增、删、改、查哪一个工具 |
| 数据支撑层 | pandas + openpyxl | 真实执行本地 Excel 文件读写操作,落地持久化 |
5. 安全边界:AI 可执行,但需可控
- 异常兜底:Excel 文件被占用时,系统捕获异常并提示用户关闭表格,不直接崩溃。
- 物理隔离:所有的文件均存储在本地,不涉及云端隐私泄露。
三、需求分析
1. 项目概述
迭代记录表:
| 迭代 | 核心目标 | 交付物 | 状态 |
|---|---|---|---|
| 迭代 1 | 基础对话与意图识别 | 可运行的 Web 界面、API 联通 | 已完成 |
| 迭代 2 | 工具定义与本地写入 | 能生成 Excel,能追加数据 | 已完成 |
| 迭代 3 | 扩展 CRUD 与明细 | 支持读取、汇总、删除文件 | 已完成 |
| 迭代 4 | 上下文与容错 | 多轮记忆、文件占用报错处理 | 已完成 |
2. 系统总体架构
数据流转:
前端发对话 → 后端拼接历史记录 → 调用 DeepSeek API → 模型返回工具指令(JSON) → 后端拦截并执行 pandas 脚本 → 返回结果给模型 → 前端渲染最终回复。
3. 核心功能需求
| 模块 | 功能描述 | 业务规则 |
|---|---|---|
| 智能建档 | 用户要求生成台账时,创建空 Excel | 已存在同名文件时提示,不覆盖旧数据 |
| 智能记账 | 提取类别、金额、备注并写入 | 建议金额必须为数字,分类需从预设类别选择 |
| 数据统计 | 查询某类或全部费用总额 | 必须基于真实文件计算,禁止模型编造结果 |
| 明细查看 | 展示最近几笔消费 | 倒序排列(最新在上),条数可定制 |
| 物理删除 | 清空记账本 | 需模型明确识别“删除”意图,执行 os.remove |
4. 数据与接口需求
核心接口: /chat (POST)
- 入参:
{"history": [{"role": "user", "content": "打车50"}]} - 出参:
{"reply": "记录成功!已为您将..."} - 超时与降级:设置 8 秒超时限制,若 AI 异常,返回“服务暂时不可用”,不阻塞前端。
数据模型(本地 Excel 字段):
- 报销时间 (String)
- 费用类别 (String)
- 金额(元) (Float)
- 备注说明 (String)
5. 非功能需求与验收标准
| 类别 | 要求 |
|---|---|
| 性能 | AI 接口响应通常 ≤ 5 秒;本地文件写入耗时 ≤ 0.5 秒。 |
| 容错 | 当 Excel 被其他软件打开时,需捕获异常并给予温和提示,不抛出红字报错。 |
| 可观察性 | 在答辩现场,能当场打开 Excel 文件看到数据真实写入。 |
| 验收项 | 验收标准 |
|---|---|
| 建账本 | 说“生成记账本”后,左侧目录立刻出现 .xlsx 文件。 |
| 记一笔 | 说“打车50”后,打开 Excel,里面出现一行“交通费、50”。 |
| 查明细 | 问“最近花了啥”,AI 能列出刚才写入的那笔数据。 |
| 删台账 | 说“删掉”,电脑里的 Excel 文件瞬间消失。 |
四、结语
我们相信,智能体的价值不在于“聊得多像人”,而在于“能不能替人把事办完”。通过这次作业,我们跳出了将大模型视为“文本生成器”的局限。通过 Function Calling 机制,大模型真正长出了“手脚”,能够去操作文件、改变现实世界的数据。未来,我们将继续深化多模态能力,让费控报销真正实现“动动嘴就能搞定”。

浙公网安备 33010602011771号