📊 Occams CFO-基于人工智能的财务分析平台
一个由OpenAI和模型上下文协议(MCP)支持的全面的CFO级财务分析平台。上传您的QuickBooks CSV导出,获取详细的董事会级财务报告,其中包含可操作的见解。
✨ 特性
- AI驱动的分析:使用OpenAI GPT模型生成全面的CFO报告
- MCP集成:利用模型上下文协议实现可靠的工具执行
- 代码解释器:用于自定义财务计算的动态Python代码执行
- 40+预构建指标:关键财务指标的即时计算
- 董事会就绪报告:适合董事会演示的10-12页详细分析
- 交互式Web用户界面:易于使用的Streamlit界面,用于文件上传和报告生成
🏗️ 建筑
┌─────────────────────────────────────────────────────────┐
│ Streamlit Web UI │
│ (streamlit_app.py / streamlit_app_with_...) │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ OpenAI Agent (GPT-4/GPT-4o) │
│ with MCP Tool Access │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ MCP Server (FastMCP) │
│ occams_cfo_server.py / ..._with_code_interpreter │
│ │
│ Available Tools: │
│ ├── calculate_financial_metrics() │
│ ├── build_cfo_report_context() │
│ ├── profile_csvs() │
│ └── code_interpreter() (enhanced version) │
└─────────────────────────────────────────────────────────┘📁 项目结构
occams-cfo/
├── README.md # This file
├── requirements.txt # Python dependencies
├── .env.example # Environment variables template
│
├── streamlit_app.py # Standard Streamlit UI
├── streamlit_app_with_code_interpreter.py # Enhanced UI with code execution
│
├── occams_cfo_server.py # Standard MCP server
├── occams_cfo_server_with_code_interpreter.py # Enhanced MCP server with code interpreter
│
├── cfo-agent.py # Command-line agent runner
├── multi_csv_profiler.py # CSV profiling utilities
├── test_code_interpreter.py # Test script for code interpreter
│
├── data/ # Sample data directory
│ ├── AR_Aging.csv
│ ├── AP_Aging.csv
│ ├── Balance_Sheet.csv
│ ├── Profit_and_Loss.csv
│ ├── Cash_Flow.csv
│ └── General_Ledger.csv
│
├── uploaded_data/ # Standard app uploads
└── uploaded_data_code_interpreter/ # Enhanced app uploads🚀 快速开始
先决条件
- Python 3.10或更高版本
- 可访问GPT-4或GPT-4o的OpenAI API密钥
安装
- 克隆仓库
git clone https://github.com/yourusername/occams-cfo.git
cd occams-cfo- 创建并激活虚拟环境 (推荐)
python -m venv venv
# On macOS/Linux
source venv/bin/activate
# On Windows
venv\Scripts\activate- 安装依赖项
pip install -r requirements.txt- 设置OpenAI API密钥
选项A-环境变量:
export OPENAI_API_KEY="sk-your-api-key-here"选项B-创建 .env 文件:
echo 'OPENAI_API_KEY=sk-your-api-key-here' > .env选项C-直接在Streamlit应用程序侧栏中输入
运行应用程序
选项1:流媒体Web界面(推荐)
标准版本:
streamlit run streamlit_app.py带代码解释器的增强版本:
streamlit run streamlit_app_with_code_interpreter.py然后打开浏览器 http://localhost:8501
选项2:命令行
python cfo-agent.py --data-dir ./data对于增强版本:
python cfo-agent.py --data-dir ./data --server-script ./occams_cfo_server_with_code_interpreter.py📊 所需CSV文件
您的QuickBooks导出应包括以下文件:
| 文件 | 必填 | 描述 |
|---|---|---|
| AR老化 | ✅ 是 | 应收账款账龄报告 |
| AP老化 | ✅ 是 | 应付账款账龄报告 |
| 资产负债表 | ✅ 是 | 资产负债表 |
| 损益 | ✅ 是 | 损益表 |
| 现金流 | ❌ 可选 | 现金流量表 |
| 总账 | ❌ 可选 | 详细交易分类账 |
预期的CSV格式
AR/AP账龄文件 应该有列:
Customer/Vendor,Current,1-30,31-60,61-90,>90,Total
资产负债表 应该有列:
Month,Cash,AR,Inventory,Fixed Assets,Total Assets,AP,Credit Cards,Loans,Owner's Equity
损益 应该有列:
Month,Revenue,COGS,Gross Profit,Operating Expenses,Operating Income,Net Income
🔧 配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
OPENAI_API_KEY | 您的OpenAI API密钥 | 是 |
模型设置
默认模型在代理设置中配置。要更改它,请修改 model 代理初始化中的参数:
agent = Agent(
name="Occams CFO Agent",
model="gpt-4o", # or "gpt-4", "gpt-4-turbo"
...
)📈 所得
生成的CFO报告包括:
- 执行摘要 -财务健康的高级概述
- 趋势和模式 -财务轨迹分析
- 风险和担忧 -已识别的财务风险及其严重程度评级
- 胜利与机遇 -积极的发展和增长机会
- 盈利之路 -具有具体目标的战略路线图
- 首席财务官建议 -有时间表的优先行动项目
- 要监控的KPI -具有目标值的关键指标
- 财务预测 -基于情景的预测
计算的样本指标
- 流动性:流动比率、营运资金、现金状况
- AR分析:应收账款总额、账龄分析、客户集中度
- AP分析:应付账款总额、账龄分析、供应商数量
- 盈利能力:毛利率、营业利润率、净利润率
- 增长:收入增长、毛利增长
- 杠杆作用:债务与股本、债务与资产比率
- 效率:DSO、DPO、现金转换周期(增强版)
🧮 标准版与增强版
| 功能 | 标准 | 增强(代码解释器) |
|---|---|---|
| 预先构建的指标 | ✅ 40+指标 | ✅ 40+指标 |
| 自定义计算 | ❌ | ✅ 动态Python执行 |
| 盈亏平衡分析 | ❌ | ✅ 按需计算 |
| 现金转换周期 | ❌ | ✅ DSO、DPO、CCC |
| 场景建模 | ❌ | ✅ 全力支持 |
| 报告时间 | ~1-2分钟 | ~2-3分钟 |
🔒 安全
- API密钥从不存储或记录
- 代码解释器在沙盒环境中运行
- 代码执行中只有pandas和numpy可用
- CSV文件在分析过程中是只读的
- 代码解释器无法访问网络
🐛 故障排除
“未设置OPENAI_API_KEY”
# Set the environment variable
export OPENAI_API_KEY="sk-your-key-here"
# Or enter it in the Streamlit sidebar“MCP服务器启动失败”
# Test the server directly
python occams_cfo_server.py
# Should wait for input (Ctrl+C to exit)“缺少必需的文件”
确保您的CSV文件包含以下关键字:
- AR老化:文件名包含“AR”和“老化”
- AP老化:文件名包含“AP”和“老化”
- 资产负债表:文件名包含“Balance”和“Sheet”
- 损益:文件名包含“利润”和“亏损”(或“损益”)
“未找到列”
检查CSV文件是否具有预期的列名。系统需要QuickBooks风格的导出。
🤝 贡献
欢迎投稿!请随时提交拉取请求。
- 复刻仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- OpenAI代理SDK -对于强大的代理框架
- FastMCP -用于MCP服务器实现
- 溪流 -为了美丽的网页界面
- 模型上下文协议 -用于工具集成标准
📞 支持
如果您遇到任何问题或有疑问:
______________________________________________________________________
内置于❤️ 通过奥卡姆斯咨询
