多智能体研究论文审稿系统
一个基于LLM的复杂多代理系统,用于使用MCP(模型上下文协议)架构审查、分析和总结学术研究论文。
架构概述
┌─────────────────────────────────────────────────────────────┐
│ Streamlit UI (MCP Client) │
│ (Paper Upload & Visualization) │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Agent Orchestrator │
│ (LangGraph Workflow Manager) │
└─────┬──────────┬──────────┬──────────┬─────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Reader │ │ Critic │ │ Meta │ │ Cite │
│ Agent │ │ Agent │ │ Reviewer │ │ Agent │
│ │ │ │ │ Agent │ │ │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ PDF │ │ Text │ │ Summary │ │ ArXiv │
│ Extract │ │ Analysis │ │ Synth. │ │ API │
│ Tool │ │ Tool │ │ Tool │ │ Tool │
└──────────┘ └──────────┘ └──────────┘ └──────────┘代理角色
1. 读者代理 (MCP服务器:端口5001)
- 角色:提取和解析论文内容
- 工具:PDF提取、文本解析
- 输出:结构化论文内容(标题、摘要、章节、参考文献)
2. 批评代理 (MCP服务器:端口5002)
- 角色:分析方法,找出弱点
- 工具:文本分析、质量评估
- 输出:对优缺点进行批判性审查
3. MetaReviewer代理 (MCP服务器:端口5003)
- 角色:综合评论,生成适合学生的摘要
- 工具:生成摘要,简化复杂性
- 输出:综合评审+ELI5总结
4. CiteAgent (MCP服务器:端口5004)
- 角色:查找相关论文,验证引用
- 工具:ArXiv API,引文提取
- 输出:相关论文,引文背景
项目结构
research-paper-reviewer/
├── agents/
│ ├── __init__.py # I added this to make agent folder run as a module
| ├── llm_client.py # For LLM Integration
│ ├── reader_agent.py # PDF extraction & parsing
│ ├── critic_agent.py # Critical analysis
│ ├── meta_reviewer_agent.py # Review synthesis
│ ├── cite_agent.py # Citation & related papers
│ └── orchestrator.py # LangGraph workflow
├── mcp_server/
│ ├── __init__.py # I added this to make mcp_server folder run as a module
│ ├── base_server.py # Base MCP server implementation
│ ├── reader_server.py # Reader agent MCP server
│ ├── critic_server.py # Critic agent MCP server
│ ├── meta_reviewer_server.py # MetaReviewer MCP server
│ ├── cite_server.py # CiteAgent MCP server
│ └── client.py # MCP client for orchestration
├── data/
│ ├── sample_papers/ # Sample PDF papers (papers get saved when you run it locally)
│ ├── arxiv_metadata.json # ArXiv metadata cache
│ └── processed/ # Processed results
├── eval/
│ ├── test_cases.json # 6+ test scenarios
│ ├── run_eval.py # Evaluation harness
│ ├── metrics.py # Metric calculations
│ └── results/ # Test results
├── ui/
│ └── streamlit_app.py # Main Streamlit interface
├── requirements.txt
├── config.yaml
├── README.md
└── setup.py安装
先决条件
- Python 3.9+
- 点
- 虚拟环境(推荐)
设置步骤
- 克隆存储库
git clone https://github.com/Ishaan300104/multi-agent-reviewer.git
cd multi-agent-reviewer- 创建虚拟环境
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项
pip install -r requirements.txt- 下载样本数据 (可选)
# Download sample ArXiv papers
python scripts/download_samples.py用法
启动MCP服务器
在单独的终端中启动每个代理的MCP服务器:
# Single-go master command
bash scripts/start_servers.sh
# Optional individual commands
# Terminal 1: Reader Agent
python mcp-server/reader_server.py
# Terminal 2: Critic Agent
python mcp-server/critic_server.py
# Terminal 3: MetaReviewer Agent
python mcp-server/meta_reviewer_server.py
# Terminal 4: CiteAgent
python mcp-server/cite_server.py运行Streamlit UI
streamlit run ui/streamlit_app.py访问地址: http://localhost:8501
运行评估工具
# Run all test cases
python eval/run_eval.py
# Run specific test case
python eval/run_eval.py --test-id test_1
# Generate metrics report
python eval/run_eval.py --reportAPI合同
消息架构
所有代理都使用标准化的JSON消息进行通信:
{
"message_id": "unique-uuid",
"sender": "agent_name",
"receiver": "agent_name",
"timestamp": "2025-11-09T10:30:00Z",
"message_type": "request|response|error",
"payload": {
"action": "extract|analyze|review|cite",
"data": {},
"metadata": {}
},
"context": {
"paper_id": "arxiv-id",
"session_id": "session-uuid"
}
}代理输入/输出合同
读者代理
输入:
{
"action": "extract",
"data": {
"pdf_path": "path/to/paper.pdf",
"extract_references": true
}
}输出:
{
"paper_content": {
"title": "Paper Title",
"abstract": "Abstract text...",
"sections": [{"heading": "Introduction", "content": "..."}],
"references": ["ref1", "ref2"]
}
}批评代理
输入:
{
"action": "analyze",
"data": {
"paper_content": {},
"focus_areas": ["methodology", "results"]
}
}输出:
{
"critique": {
"strengths": ["strength1", "strength2"],
"weaknesses": ["weakness1", "weakness2"],
"methodology_score": 7.5,
"clarity_score": 8.0
}
}关键假设
- pdf格式:论文假定为标准学术PDF格式
- ArXiv论文:主要关注ArXiv论文(API集成)
- 英语:所有处理的论文都是英文的
- MCP本地部署:所有MCP服务器都在本地主机上运行(端口5001-5004)
- LLM模型:使用OpenAI GPT-4或兼容的API(可配置)
- 需要互联网:对于ArXiv API访问和引用验证
配置
编辑 config.yaml 自定义:
agents:
reader:
port: 5001
max_tokens: 4000
critic:
port: 5002
max_tokens: 2000
meta_reviewer:
port: 5003
max_tokens: 3000
cite_agent:
port: 5004
max_tokens: 1500
llm:
provider: "openai" # or "anthropic", "cohere"
model: "gpt-4"
temperature: 0.3
api_key: "${OPENAI_API_KEY}"
arxiv:
max_results: 10
sort_by: "relevance"
cache_enabled: true评估指标
系统跟踪:
- 成功率:成功处理的论文百分比
- 平均延迟:每篇论文的时间(端到端)
- 工具调用计数:每个代理的工具调用次数
- 约束违规:违反协议/模式
- 审核质量分数:人工评估审查质量
- 引文准确性:相关论文建议的正确性
测试
# Run end-to-end tests
python eval/run_eval.py --mode e2e贡献
- 复刻仓库
- 创建要素分支(
git checkout -b feature/new-agent) - 提交更改(
git commit -am 'Add new agent') - 推送到分支(
git push origin feature/new-agent) - 创建拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
联系
如有疑问或问题,请打开GitHub问题或联系维护人员。
致谢
- ArXiv为研究论文提供开放获取
- MCP协议规范
- LangGraph框架
- Streamlit用于快速UI开发
