基于多智能体辩论协议(DDP)的可解释作物病害诊断系统。将作物病害诊断从传统图像分类问题重新定义为多模态推理与结构化辩论问题,通过三个 AI 专家的对抗验证机制输出可解释、可追溯的诊断报告。
1# 克隆项目
2git clone https://github.com/Light0305/AgriMind.git
3cd AgriMind
4
5# Linux / macOS / WSL
6bash setup.sh
7
8# Windows(双击运行或命令行执行)
9setup.bat
1# 终端 1:启动后端
2source venv/bin/activate # Linux/macOS
3# venv\Scripts\activate # Windows
4cd backend && uvicorn app.main:app --host 0.0.0.0 --port 8000
5
6# 终端 2:启动前端
7cd frontend && npm run dev
1export AGRIMIND_API_KEY=sk-your-key-here # Linux/macOS
2set AGRIMIND_API_KEY=sk-your-key-here # Windows
用户上传图片
│
▼
┌─────────────────────┐
│ 结构化问诊 (4 题) │ ← 采集种植地区、季节、天气、症状描述
└─────────┬───────────┘
▼
┌─────────────────────┐
│ 主动视觉问诊 (AVD) │ ← VLM 评估图片充分度,智能追问
└─────────┬───────────┘
▼
┌─────────────────────────────────────────────┐
│ 诊断辩论协议 (DDP) │
│ │
│ ┌───────────┐ ┌───────────┐ ┌─────────┐ │
│ │ 初诊专家 │→│ 质疑专家 │→│ 仲裁专家 │ │
│ │ Proposer │ │ Challenger│ │ Arbiter │ │
│ └───────────┘ └───────────┘ └─────────┘ │
│ ↑ ↑ ↑ │
│ 相似病例 对抗验证 RAG 知识库 │
└─────────────────────┬───────────────────────┘
▼
┌───────────────┐
│ 诊断报告 │ ← 结论 + 证据 + 鉴别诊断 + 防治建议
└───────────────┘
AgriMind/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── agents/ # DDP 三智能体
│ │ │ ├── proposer.py # 初诊专家
│ │ │ ├── challenger.py # 质疑专家
│ │ │ ├── arbiter.py # 仲裁专家
│ │ │ └── ddp.py # DDP 编排器
│ │ ├── avd/ # 主动视觉问诊
│ │ │ ├── engine.py # AVD 评估引擎
│ │ │ └── session.py # 会话状态管理
│ │ ├── api/
│ │ │ ├── routes.py # REST API
│ │ │ └── websocket.py # WebSocket 实时推送
│ │ ├── model/
│ │ │ └── inference.py # VLM 推理 (本地 + API 双模式)
│ │ ├── rag/ # RAG 知识检索
│ │ └── retrieval/ # 相似病例检索
│ ├── tests/ # 单元测试 (112 项)
│ └── requirements.txt
├── frontend/ # React 前端
│ └── src/
│ ├── components/ # UI 组件
│ ├── hooks/ # 状态管理 Hooks
│ └── pages/ # 页面
├── benchmark/ # AgriReason 评测框架
│ ├── evaluate.py # 模型评测
│ ├── ablation.py # 消融实验 (6 配置)
│ └── baselines/ # 基线方法
├── training/ # QLoRA 微调
│ ├── train_qlora.py # 训练脚本
│ ├── merge_adapter.py # 合并 LoRA 权重
│ └── scripts/ # 数据生成
├── test_images/ # 50 张测试图片 (24 类)
├── docs/ # 技术文档
├── setup.sh # Linux/macOS 一键安装
├── setup.bat # Windows 一键安装
└── docker-compose.yml # Docker 部署
1# 1. 生成单轮诊断训练数据
2python training/scripts/generate_instructions.py \
3 --input data/processed/unified_dataset.jsonl \
4 --output data/processed/sft_single.jsonl
5
6# 2. 生成辩论训练数据
7python training/scripts/generate_multiturn.py \
8 --input data/processed/unified_dataset.jsonl \
9 --output data/processed/sft_debate.jsonl
1# 编辑训练配置
2vim training/configs/qlora_qwen_vl.yaml
3
4# 启动训练 (单卡 A100/4090,约 4-6 小时)
5python training/train_qlora.py --config training/configs/qlora_qwen_vl.yaml
6
7# 合并 LoRA 权重为完整模型
8python training/merge_adapter.py \
9 --base-model models/qwen2.5-vl-7b \
10 --adapter checkpoints/agrimind-qlora-v2/checkpoint-final \
11 --output models/agrimind-v2
1# 生成 AgriReason 评测数据 (800 样本)
2python benchmark/generate_agrireason.py \
3 --input data/processed/unified_dataset.jsonl \
4 --output benchmark/data/agrireason_v1.json \
5 --max-samples 800
6
7# 运行消融实验 (6 配置)
8python benchmark/ablation.py \
9 --benchmark benchmark/data/agrireason_v1.json \
10 --base-model models/qwen2.5-vl-7b \
11 --finetuned-model models/agrimind-v2 \
12 --output-dir benchmark/results
1cd backend && python -m pytest tests/ -v
2# 预期: 112 passed
1docker-compose up -d
2# 后端: http://localhost:8000
3# 前端: http://localhost:3000