SAP流程发现代理
AI驱动的代理系统,使用LangGraph、LangChain和OpenAI GPT-4智能地将业务流程映射到SAP工件(模块、事务代码、Fiori应用程序、执行流)。
🎯 概述
为 语法GenAI平台开发人员评估,该项目演示了具有基于质量的迭代推理、多用户会话管理和生产就绪架构的高级代理工作流。
关键能力
- 智能代理工作流:质量驱动的推理循环(
plan → action → scoring → synthesis)迭代直到60%置信阈值 - 多用户会话隔离:具有作业跟踪和自动清理功能的线程安全会话管理
- 双工具集成:用于SAP文档的MCP服务器+用于web搜索的Serper API
- 会话界面:具有上下文感知记忆的自然语言聊天
- 批处理:同时处理多个流程并跟踪进度
- 生产特点:文件日志轮换、全面测试、Docker部署
🏗️ 建筑
代理推理循环
START → plan → action → scoring → synthesis → END
↑ │
└──────────────────┘
(iterates until quality ≥ 0.60 or max 3 iterations)质量维度 (权重相等):
- 模块覆盖范围-已识别的SAP模块(MM、FI、CO、SD等)
- T-Code置信度-找到交易代码
- Fiori Presence-提到的Fiori应用程序
- 执行流程深度-分步流程
技术栈
后端:
- FastAPI(带有Uvicorn的异步REST API)
- LangGraph 1.0(工作流编排)
- LangChain 1.0(代理框架)
- PostgreSQL(通过LangGraph检查指针的对话内存)
- Python 3.11
前端:
- React 18+TypeScript
- Tailwind CSS
- Vite(构建工具)
- Axios(HTTP客户端)
基础设施:
- Docker+Docker组合
- PostgreSQL 16
- MCP(模型上下文协议)服务器
🚀 快速开始
选项1:Docker(推荐用于演示)
先决条件:Docker,Docker Compose
# 1. Clone repository
git clone
cd sap-process-discovery
# 2. Create .env file (copy from template)
cp .env.example .env
# 3. Edit .env with your API keys
# Required: OPENAI_API_KEY, SERPER_API_KEY
# Optional: LANGSMITH_* (for tracing)
# 4. Start all services with one command
docker-compose up
# Services will be available at:
# - Frontend: http://localhost:3000
# - Backend API: http://localhost:8001
# - API Docs: http://localhost:8001/docs
# - PostgreSQL: localhost:5432选项2:手动设置(开发)
先决条件:Python 3.10+,Node.js 18+,PostgreSQL 14+
# 1. Clone and navigate
git clone
cd sap-process-discovery
# 2. Run automated setup script
./setup.sh
# 3. Configure environment
cp .env.example .env
# Edit .env with your API keys
# 4. Start backend (terminal 1)
cd backend
uvicorn api.main:app --host 0.0.0.0 --port 8001
# 5. Start frontend (terminal 2)
cd frontend
npm run dev
# 6. Open http://localhost:3000📋 配置
环境变量
创建 .env 具有以下内容:
# OpenAI API (required)
OPENAI_API_KEY=your_openai_api_key_here
# Web Search (required for supplementary research)
SERPER_API_KEY=your_serper_api_key_here
# Database URL (for LangGraph conversation memory)
LANGGRAPH_DATABASE_URL=postgresql://postgres:abcd1234@localhost:5432/sap_discovery
# LangSmith Tracing (optional)
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=your_langsmith_key_here
LANGSMITH_PROJECT=sap-discovery🧪 测试
该项目包括关键功能的单元测试:
cd backend
# Run all tests
pytest tests/ -v
# Run specific test files
pytest tests/test_session_isolation.py -v
pytest tests/test_api_health.py -v
# Expected output: 4 tests pass
# - 2 session isolation tests (proves multi-user safety)
# - 2 API health tests (proves system works)📂 项目结构
sap-process-discovery/
├── backend/
│ ├── api/
│ │ ├── main.py # FastAPI application entry point
│ │ ├── middleware.py # Session middleware
│ │ └── models.py # API request/response models
│ ├── sap_discovery/
│ │ ├── workflow/
│ │ │ ├── graph.py # LangGraph workflow definition
│ │ │ ├── state.py # Agent state schema
│ │ │ └── nodes.py # Workflow nodes (plan, action, scoring, synthesis)
│ │ ├── main_agent/
│ │ │ ├── agent.py # Main conversational agent
│ │ │ ├── chat.py # Chat interface
│ │ │ └── tools.py # Agent tools (run_sap_discovery, export, report)
│ │ ├── models/
│ │ │ └── schema.py # Structured output schemas (SAPProcessMapping)
│ │ ├── tools/
│ │ │ ├── registry.py # Tool initialization (MCP)
│ │ │ └── web_tools.py # Web search tools
│ │ ├── llm/
│ │ │ └── models.py # LLM instance creation
│ │ ├── utils/
│ │ │ ├── logging.py # File logging with rotation (10MB FIFO)
│ │ │ ├── session_state.py # In-memory session state management
│ │ │ └── storage.py # File upload handling
│ │ └── data/
│ │ └── loader.py # Excel data loading
│ ├── tests/
│ │ ├── conftest.py # Pytest configuration
│ │ ├── test_session_isolation.py # Session safety tests
│ │ └── test_api_health.py # API endpoint tests
| |
│ ├── requirements.txt # Python dependencies
│ ├── Dockerfile # Backend container config
│ └── .env.example # Environment template
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── services/
│ │ │ └── api.ts # API client
│ │ ├── types/ # TypeScript interfaces
│ │ └── App.tsx # Main application
│ ├── package.json
│ ├── Dockerfile # Frontend container config
│ └── vite.config.ts
├── data/
│ └── input/
│ └── Car_Rental_Business_Processes_Detailed.xlsx
├── docs/
│ ├── QUICKSTART.md # Detailed setup guide
│ ├── ARCHITECTURE.md # System architecture
│ └── POSTGRESQL_SETUP.md # Database setup
├── logs/ # Application logs (auto-created)
├── uploads/ # User file uploads (auto-created)
├── docker-compose.yml # Multi-container orchestration
├── setup.sh # Automated setup script
└── README.md🎨 功能深潜
1.基于会话的多用户架构
- 孤立:每个用户会话都有隔离状态(无数据交叉污染)
- 作业跟踪:使用唯一的作业ID跟踪每个会话的多个Excel上传
- 内存存储:快速访问会话数据和发现结果
2.质量驱动的代理工作流
发现子代理使用复杂的推理循环:
- 计划节点:分析质量差距并决定调用哪些工具
- 动作节点:执行SAP文档搜索和/或网络搜索
- 评分节点:评估4个维度的结果(每个维度0-1分)
- 合成节点:生成最终结构化
SAPProcessMapping
迭代逻辑:循环直到 overall_quality ≥ 0.60 或最多3次迭代
3.旋转式文件记录
- 位置:
backend/logs/sap_discovery.log - 旋转:文件超过10MB时删除FIFO
- 备份:保留5个旧文件(最多60MB)
- 格式:
[timestamp] [module] LEVEL: message
4.结构化输出模式
class SAPProcessMapping(BaseModel):
process: str # Business process name
module: List[str] # SAP modules (MM, FI, CO, SD, etc.)
transaction_codes: List[str] # T-codes (ME21N, FB01, etc.)
fiori_apps: List[str] # Fiori app IDs
execution_flow: List[str] # Step-by-step flow
configuration_dependencies: List[str] # Config requirements
integration_points: List[str] # System integrations
references: List[Reference] # Source citations📊 API终点
| 端点 | 方法 | 描述 |
|---|---|---|
/ | 获取 | API信息 |
/health | GET | 健康检查(代理状态、时间戳) |
/chat | POST | 发送消息(文本+可选Excel文件) |
/docs | GET | 交互式API文档(Swagger UI) |
🔧 发展
重建Docker容器
# Rebuild specific service
docker-compose build backend
docker-compose build frontend
# Rebuild all services
docker-compose build
# Start with fresh build
docker-compose up --build查看日志
# Docker logs (live)
docker-compose logs -f backend
docker-compose logs -f frontend
# Local file logs
tail -f backend/logs/sap_discovery.log数据库访问
# Connect to PostgreSQL (Docker)
docker-compose exec postgres psql -U postgres -d sap_discovery
# View conversation memory
SELECT thread_id, checkpoint_id FROM checkpoints LIMIT 10;📖 文档
- 架构概述 -系统设计、代理工作流程、节点描述
- 快速入门指南 -详细的手动设置说明
- PostgreSQL设置 -数据库配置指南
🚧 已知限制和未来工作
当前限制:
- 内存会话存储(服务器重启时数据丢失)
- 无身份验证/授权(单租户)
- MCP服务器URL是硬编码的(应该是可配置的)
潜在增强功能:
- Redis用于分布式会话缓存(水平扩展)
- 用于异步作业处理的Celery任务队列
- 用于常见SAP查找的响应缓存
- 每节LLM成本跟踪
- 实时进度的流式响应(SSE)
- 导出为多种格式(PDF、JSON、CSV)
👥 贡献者
加齐·瓦西夫·阿克兰
______________________________________________________________________
专为:语法软件开发人员评估 聚焦:代理编排、生产架构、可扩展性思维 日期: 2026
