🔬 多智能体研究助理
使用LangGraph、RAG和实时评估的自主代理进行人工智能驱动的研究。 现场演示:https://multi-agent-research-mcp-pr.streamlit.app/
🏗️ 建筑
┌─────────────────────────────────────────────────────────────┐
│ LangGraph State Machine │
├─────────────┬─────────────┬─────────────┬─────────────────────┤
│ Researcher │ Critic │ Synthesizer │ Evaluator │
│ Agent │ Agent │ Agent │ (RAGAS/DeepEval) │
├─────────────┴─────────────┴─────────────┴─────────────────────┤
│ ChromaDB Vector Store │
├───────────────────────────────────────────────────────────────┤
│ Tavily Search │ Groq (Llama 3.3) │
└───────────────────────────────────────────────────────────────┘✨ 特性
- LangGraph状态机:有条件的布线、修订循环
- 向量数据库:ChromaDB用于语义搜索和RAG
- 多代理管道:研究员→ 批评家→ 合成器→ 评估者
- 实时流媒体:异步SSE进行实时更新
- 导出选项:PDF,带APA/MLA/Chicago引文的Markdown
- RAG评估:RAGAS启发的指标(相关性、忠诚度、连贯性)
- FastAPI后端:带有异步作业处理的REST API
- Docker+CI/CD:GitHub操作,容器化部署
🚀 快速开始
本地开发
# Clone
git clone https://github.com/saitejasrivilli/multi-agent-research-mcp
cd multi-agent-research-mcp
# Install
pip install -r requirements.txt
# Configure
cp .env.example .env
# Add your GROQ_API_KEY and TAVILY_API_KEY
# Run Streamlit
streamlit run app.py
# Run API (separate terminal)
uvicorn src.api.main:app --reload码头工人
docker-compose up📡 API终点
| 方法 | 端点 | 描述 |
|---|---|---|
| 职位 | /api/research | 开始研究工作 |
| 得到 | /api/research/{id} | 获取作业状态 |
| 得到 | /api/research/{id}/stream | 流进度(SSE) |
| 得到 | /api/research/{id}/export/pdf | 导出为PDF |
| 得到 | /api/research/{id}/export/markdown | 导出为Markdown |
📊 评估指标
| 度量 | 描述 |
|---|---|
| 相关性 | 查询查找对齐 |
| 可信度 | 来源准确性 |
| 连贯性 | 结构和流程 |
| 完整性 | 覆盖深度 |
| 引文准确性 | 来源归因 |
评估结果总结
使用RAGAS风格的评估器进行50个查询确定性基准测试 src/evaluation/metrics.py.
| 度量 | 平均值 | 状态 |
|---|---|---|
| 相关性 | 1.0000 | 完美 |
| 忠诚度 | 0.9900 | 优秀 |
| 连贯性 | 0.9000 | 强 |
| 完整性 | 0.8440 | 良好 |
| 引文准确度 | 1.0000 | 完美 |
| 总体 | 0.9541 | 生产就绪 |
消融:多药剂vs单药剂
| 模式 | 整体 | 忠实性 | 完整性 | 延迟 |
|---|---|---|---|---|
| 多代理 | 0.9541 | 0.9900 | 0.8440 | 0.10毫秒 |
| 单药基线 | 0.8678 | 0.9306 | 0.6948 | 0.07毫秒 |
| 改进 | +9.9% | +6.4% | +21.5% | +慢42.9% |
生产绩效
在Groq按需每日令牌限制停止剩余请求之前,来自28个已完成查询的实时基准样本。
| 度量 | 值 | 含义 |
|---|---|---|
| 端到端延迟 | 7.1秒直播 | 适用于异步工作流 |
| 成本/查询 | 0.0054 | 规模适中,价格合理 |
| 研究员代理 | 3.46秒 | 主要瓶颈 |
| 合成器代理 | 3.61秒 | 第二个瓶颈 |
| 评估代理 | 0.31毫秒 | 可忽略 |
| 已完成的查询 | 28/50(56%) | 提供商速率限制,不是系统问题 |
推荐使用案例
高适配用例:
| 用例 | 为什么它适合 |
|---|---|
| 市场扫描和竞争情报 | 检索、综合和引用的好处 |
| 技术概述和文献摘要 | 需要基于来源的综合和限制 |
| 尽职调查简报起草 | 有用的初步研究,可追溯来源 |
| 研究论文摘要 | 非常适合结构化摘要和摘要 |
未经专家评审的不合适用例:
| 用例 | 为什么需要审查 |
|---|---|
| 医疗、法律或财务建议 | 需要领域专家验证 |
| 突发新闻报道 | 搜索新鲜度和来源日期需要更强的控制 |
| 实时决策支持 | 延迟和验证要求更严格 |
📈 基准和结果
运行可复制的50查询基准测试:
PYTHONPATH=. python3 benchmarks/run_benchmark.py --limit 50人工产品:
| 文件 | 目的 |
|---|---|
| 基准测试/benchmark_queries.jsonl | 50个带有参考答案的基准查询 |
| results/benchmark_results.json | 每个查询的原始输出、分数和生产指标 |
| 结果/消融结果.json | 多代理与单代理比较 |
| 结果/基准报告.md | 人类可读的基准报告 |
| docs/evaluation_results.md | 评估方法和50个查询的RAGAS风格评分汇总 |
| docs/消融研究.md | 多代理与单代理基线分析 |
| docs/failure_analysis.md | 故障模式、检测信号和缓解措施 |
| 文档/生产_度量.md | 延迟、成本、代理指标和用例匹配 |
50个查询RAGAS风格基准
详细方法见 docs/evaluation_results.md.
| 度量 | 平均值 | 中位数 | 最小值 | 最大值 | |
|---|---|---|---|---|---|
| 相关性 | 10000 | 10000 | 1000 | 10000 | 10000 |
| 可信度 | 0.9900 | 1.0000 | 0.5000 | 1.0000 | |
| 一致性 | 0.9000 | 0.9000 | 0.9000 | 0.9000 | 0.9000 |
| 完整性 | 0.8440 | 0.8500 | 0.7500 | 0.8500 | |
| 引文准确度 | 1.0000 | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| 总体 | 0.9541 | 0.9575 | 0.8325 | 0.9575 |
注意:默认的基准测试是一个确定性代理,所以评审人员可以在没有API密钥的情况下运行它。将其视为回归和连线测试,而不是实时网络搜索质量的证明。实时评估:
PYTHONPATH=. python3 benchmarks/run_benchmark.py --live --api-url http://127.0.0.1:8000推荐的实时工作流程:
PYTHONPATH=. uvicorn src.api.main:app --host 127.0.0.1 --port 8000
PYTHONPATH=. python3 benchmarks/run_benchmark.py --limit 1 --live --api-url http://127.0.0.1:8000
PYTHONPATH=. python3 benchmarks/run_benchmark.py --limit 50 --live --api-url http://127.0.0.1:8000 --delay-seconds 5不要使用运行API --reload 在实时基准测试期间。作业存储在内存中,因此重新加载可以在基准轮询之前删除挂起的作业。
实时基准测试示例
在Groq按需每日令牌限制停止剩余请求之前,实时运行完成了50个基准查询中的28个。生成的完整实时子集:
| 度量 | 平均值 | 中位数 | 最小值 | 最大值 | |
|---|---|---|---|---|---|
| 相关性 | 0.7000 | 0.8000 | 0.0000 | 1.0000 | |
| 可信度 | 0.6667 | 0.5833 | 0.0000 | 1.0000 | |
| 相干性 | 0.9964 | 1.0000 | 0.9000 | 1.0000 | |
| 完整性 | 0.7679 | 0.8000 | 0.6500 | 0.9000 | |
| 引文准确度 | 1.0000 | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| 总体 | 0.8061 | 0.8150 | 0.5950 | 0.9700 |
已完成子集中的实时生产指标:
| 度量 | 值 |
|---|---|
| 已完成的查询 | 28 |
| 查询失败 | 22 |
| 平均延迟 | 7087.4毫秒 |
| 平均估计成本/查询 | 0.005454美元 |
| 研究人员延迟 | 3462.59毫秒 |
| 合成器延迟 | 3614.8毫秒 |
| 评估器延迟 | 0.31ms |
失败的实时查询是由提供程序令牌限制引起的,而不是基准逻辑。使用以下命令恢复部分实时运行:
PYTHONPATH=. python3 benchmarks/run_benchmark.py --start 30 --limit 21 --live --api-url http://127.0.0.1:8000 --delay-seconds 5消融研究:多智能体vs单智能体
详细的消融记录见 docs/消融研究.md.
| 模式 | 总体 | 相关性 | 可信度 | 完整性 | 平均延迟 | 平均成本/查询 |
|---|---|---|---|---|---|---|
| 多代理 | 0.9541 | 1.0000 | 0.9900 | 0.8440 | 0.10毫秒 | 0.000799美元 |
| 单药基线 | 0.8678 | 1.0000 | 0.9306 | 0.6948 | 0.07毫秒 | 0.000603美元 |
评论家/评估者阶段提高了忠诚度和完整性。单代理基线更快、更便宜。这种权衡应该是显而易见的。
🔎 失效分析
详细的故障分析见 docs/failure_analysis.md.
最高风险故障模式:
| 故障模式 | 影响 | 缓解 |
|---|---|---|
| 无关检索 | 报告回答了错误的问题 | 添加重新排序和更严格的查询生成 |
| 不支持的索赔 | 令人费解的结论 | 添加句子级索赔来源验证 |
| 引文不匹配 | 虚假信任信号 | 根据附近的声明验证引文 |
| 修订循环成本飙升 | 延迟和成本更高 | 限制循环并仅修订缺失的证据 |
| 从网页迅速注入 | 合成错误 | 将检索到的内容视为不受信任的数据 |
📡 生产指标
生产指标在 src/observability/metrics.py.
| 度量 | 为什么重要 |
|---|---|
| 端到端延迟 | 用户可见的等待时间 |
| 每个代理的延迟 | 显示研究人员、评论家、合成器和评估者之间的瓶颈 |
| 估计成本/查询 | 定价、费率限制和预算控制所需 |
| 代理成功/失败 | 识别脆弱的管道阶段 |
| 评估分数 | 防止成本优化降低质量 |
高匹配用例:市场扫描、技术概述、文献风格总结、竞争情报草稿和尽职调查简报。
没有专家审查的不合适用例:法律建议、医疗建议、财务决策和实时突发新闻索赔。
🛠️ 技术栈
- LLM:火焰3.3 70b(Groq)
- 搜索:塔维利AI
- 编排LangGraph:
- 矢量数据库:ChromaDB
- 评估:RAGAS/DeepEval
- 后端:FastAPI
- 前端:流光灯
- 部署:Docker、GitHub操作
📁 项目结构
├── app.py # Streamlit UI
├── src/
│ ├── graph/ # LangGraph state machine
│ ├── agents/ # Agent implementations
│ ├── vectordb/ # ChromaDB integration
│ ├── evaluation/ # RAGAS-style metrics
│ ├── observability/ # Production latency and cost metrics
│ ├── export/ # PDF/Markdown exporters
│ └── api/ # FastAPI backend
├── benchmarks/ # 50-query benchmark runner and query set
├── results/ # Saved benchmark and ablation outputs
├── docs/ # Evaluation, ablation, failure analysis, and production metrics notes
├── tests/ # Test suite
├── Dockerfile
├── docker-compose.yml
└── .github/workflows/ # CI/CD📜 许可证
麻省理工学院
