AI发票洞察——多代理MCP(Ollama就绪)
这是什么
一种多代理发票智能产品,由以下组件构建:
- 用户界面:用于上传发票和查看结果的静态前端
- API服务:接受PDF上传、提取文本、调用MCP、持续运行
- MCP服务:运行多代理管道(预处理→ 提取→ 验证→ 供应商标准化)
业务问题
发票有多种布局和语言。基于规则的解析器很脆弱;黑盒AI很难信任。 该项目的重点是 可解释提取 (结果+警告+跟踪),因此用户可以查看和更正。
用户旅程(当前)
- 上传一张发票或一批发票(PDF)
- 系统独立处理每张发票
- 对于您收到的每张发票:
- 提取的关键字段(供应商、发票日期、金额总计等) - 警告/信心信号 - 代理跟踪(用于调试和透明)
- 每张发票导出JSON,批量结果导出CSV/JSON(UI功能)
建筑
UI → API → MCP (/process) → Orchestrator → Agents → Structured Output (+ Trace)服务
- 用户界面:调用API终结点
- API:
- POST /analyze (单个PDF) - POST /analyze/batch (一个请求中包含多个PDF) - 将每个发票处理作为 Run 在SQLite(SQLModel)中
- 主控程序:
- POST /process 随着 { "text": "..." } - 编排代理并返回稳定的模式+跟踪
关键产品选择(CPTO叙述)
- 单体上的多药剂:实现每个功能的增量改进(预处理/提取/验证/供应商)。
- MCP编排:保持路由和可追溯性的明确性和可测试性。
- 可解释性优先:发票是财务文件;部分提取必须可见。
- beta的批处理:真实用户处理发票集,而不是逐一处理。
端点
API
- 健康:
GET http://localhost:8080/ - 斯瓦格:
http://localhost:8080/docs
单
POST http://localhost:8080/analyze
- multipart/form-data - 字段: file (PDF)
批次
POST http://localhost:8080/analyze/batch
- multipart/form-data - 字段: files (对多个PDF重复) - 每张发票返回一个结果(以及 run_id 每张发票)
主控程序
- 健康:
GET http://localhost:8000/ - 斯瓦格:
http://localhost:8000/docs POST http://localhost:8000/process
- JSON: { "text": "..." }
本地运行(无Docker)
安装deps:
pip install -r api/requirements.txtpip install -r mcp/requirements.txt
运行:
make run-mcpmake run-api
Docker运行
开始一切:
make dev
服务:
- UI:http://localhost:5500
- APIhttp://localhost:8080/docs
- MCP:http://localhost:8000/docs
Ollama设置(可选)
在本地安装并运行Ollama,然后拉取一个模型:
ollama pull llama3.2
.env.dev 通常使用:
LLM_BACKEND=ollamaOLLAMA_URL=http://host.docker.internal:11434OLLAMA_MODEL=llama3.2:latest
要在没有LLM的情况下运行:
- 集
LLM_BACKEND=none
路线图(高级别)
现在
- 批处理+用户体验反馈循环(内测版)
- 改进错误消息、置信度显示、跟踪可读性
下一步
- 分类器+路由器(多代理路由故事)
- 对不断增长的发票集进行评估报告和回归测试
稍后
- 身份验证、工作区管理、集成(驱动器/电子邮件/会计工具)
