使用说明
FastAPI多代理仓库聊天系统
概述
FastAPI Multi-Agent Repository聊天系统是一个生产级分布式系统,旨在通过专门的AI代理提供智能代码库分析。该系统将GitHub存储库索引到Neo4j知识图中,并为查询代码结构、依赖关系和设计模式提供实时接口。
该系统采用FastAPI、Neo4j和模型上下文协议(MCP)构建,展示了企业级分布式架构,具有明确的关注点分离和可扩展的设计模式。
核心架构
该系统遵循多代理架构,其中每个代理都专注于特定领域:
- 编排器代理:查询分析、路由和响应综合
- 索引器代理:存储库解析和Neo4j索引
- 图形查询代理:知识图遍历和实体搜索
- 代码分析代理:模式检测和代码分析
每个代理通过一个定义良好的接口进行通信,并通过Orchestrator进行协调,以提供全面的分析功能。
知识图谱
节点类型:包、文件、类、函数 关系:包含,定义,继承_ ROM,导入,调用,DECORATED_BY
Neo4j数据库将代码存储库构造为连接的实体,从而能够对依赖关系、继承层次结构和代码组织进行复杂的查询。
技术栈
- Python 3.11
- FastAPI 0.104+
- Neo4j 5.14
- Docker和Docker Compose
- Pydantic v2用于验证
- 用于实时通信的WebSockets
安装
先决条件:Docker、Docker Compose、Git
快速设置:
git clone <repository-url>
cd MultiAgentMCP
cp .env.example .env
# Edit .env with required variables
docker-compose up -d
curl http://localhost:8000/health
该系统将于http://localhost:8000
API终点
健康与信息
GET/健康 返回所有组件的系统运行状况。
GET/代理商 列出所有可用代理及其功能。
聊天界面
POST/api/聊天 用于单个查询的同步聊天端点。
Websocket/WS/聊天 实时流媒体聊天,用于交互式对话。
消息类型包括:会话创建、思考、分析、响应块、响应完成
索引操作
POST/api/索引 启动异步存储库索引。
请求正文:
{"repo_url": "https://github.com/tiangolo/fastapi", "full_index": true}
返回job_id以跟踪进度。
GET/api/index.jobs/{job_id} 获取索引作业的状态,包括进度指标。
GET/api/index.jobs 列出所有具有可选状态筛选器的索引作业。
GET/api/索引/状态 获取知识图统计数据和实体计数。
查询操作
POST/api/查询/查找 按名称和类型查找实体。
POST/api/查询/依赖关系 获取实体的依赖链。
POST/api/query/依赖项 获取依赖于指定实体的实体。
POST/api/query/相关 按关系类型获取相关实体。
POST/api/查询/执行 执行自定义Cypher查询(高级使用)。
分析操作
POST/api/分析/函数 分析功能实现和使用情况。
POST/api/分析/类 分析类结构和继承。
POST/api/分析/模式 检测代码中的设计模式。
POST/api/分析/比较 比较实体之间的实现。
配置
环境变量控制系统配置:
必修的:
- NEO4J_用户名
- NEO4J_密码
- NEO4J_URI
- OPENAI_API密钥
可选:
- 环境(生产/开发/测试)
- LOG_LEVEL(调试/信息/警告/错误)
- 网关_端口(默认值:8000)
有关完整的配置选项,请参阅.env.example。
项目结构
src/
├── agents/ # Agent implementations
├── gateway/ # FastAPI application
│ ├── main.py # Application entry point
│ ├── models.py # Pydantic models
│ ├── dependencies.py # Dependency injection
│ └── routes/ # Route handlers
└── shared/ # Shared utilities
├── config.py
├── neo4j_service.py
├── ast_parser.py
└── logger.py
发展
本地开发设置:
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
pytest src/tests/ -v --cov=src
uvicorn src.gateway.main:app --reload --host 0.0.0.0 --port 8000
代码质量标准:
black src/ # Format code
ruff check src/ # Lint code
mypy src/ --ignore-missing-imports # Type check
pytest src/tests/ -v --cov=src # Run tests
生产部署
该系统已准备好使用Docker进行生产:
docker-compose up -d
docker-compose ps
docker-compose logs -f gateway
通过/健康端点监控系统健康状况。
用于扩展:网关实例可以在负载均衡器后面复制。Neo4j可以集群以实现高可用性。
性能特征
使用FastAPI存储库进行测试(1050个包,4360+函数):
- 存储库索引:1000多个文件需要5-10分钟
- 典型查询响应:100-500ms
- WebSocket吞吐量:每秒50+条消息
- 连接池可实现高效的资源使用
安全考虑
当前的实现适合开发和内部使用。生产部署应实施:
- API密钥验证
- 请求速率限制
- HTTPS/TLS加密
- 数据库访问控制
- 带WAF的API网关
监控
该系统提供:
- 带相关ID的结构化JSON日志记录
- 健康检查端点
- 绩效指标收集
- 错误跟踪和聚合
监控关键指标:
- 请求延迟(p50、p95、p99)
- 工作完成率
- Neo4j查询性能
- 代理响应时间
- 按端点划分的错误率
已知限制
- 存储在内存中的作业跟踪(重新启动时清除)
- 无集群的单个Neo4j实例
- 没有内置的API身份验证
- 同步存储库索引
- 模式检测仅限于预定义的模式
未来的增强功能
- 使用Redis/Celery的持久作业队列
- GraphQL API和REST
- 语义搜索的向量嵌入
- 多存储库依赖性分析
- 基于WebSocket的协同分析
- 自定义LLM提供程序支持
- 高级缓存策略
- 实时分析流
故障排除
检查集装箱状态:
docker-compose ps
docker-compose logs gateway
docker-compose logs neo4j
验证Neo4j连接:
curl http://localhost:7474
docker exec multiagent-neo4j cypher-shell -u neo4j -p password "RETURN 1"
docker中记录的常见问题和解决方案会组成日志。
贡献
捐款遵循以下准则:
- 代码遵循PEP 8风格
- 所有函数都有类型提示
- 文档字符串使用谷歌格式
- 为新功能提供的测试
- 代码通过质量检查
许可证
该项目用于教育和商业用途。
支持
文件可在以下网址获得:
- API文件:http://localhost:8000/docs(Swagger用户界面)
- QUICK_START.md:入门指南
- ARCHITECTURE.md:设计决策
- API.md:完整的终结点引用
有关问题,请查看上面的日志和故障排除部分。
版本
版本1.0.0-2026年1月30日
初始版本具有完整的多代理架构、Neo4j索引、REST和WebSocket API以及生产Docker部署。
