Akash-AIML/Agriculture-AI

GitHub: Akash-AIML/Agriculture-AI

一套整合多机器学习模型与 LLM 建议的端到端智慧农业平台,帮助农户实现植物病害检测、土壤分类与作物推荐的数据驱动决策。

Stars: 0 | Forks: 0

# Agriculture-AI 多模型农业 AI:疾病检测、土壤分析、作物推荐以及基于 LLM 的建议 —— 全面支持多种语言(英语、泰米尔语、印地语、泰卢固语)。 ## 项目结构 ``` agri-ai/ ├── backend/ │ ├── main.py # FastAPI app (all routes) │ ├── requirements.txt │ ├── .env.example # Copy to .env and configure │ ├── models/ │ │ ├── disease_model.py # Disease CNN wrapper │ │ ├── soil_model.py # Soil CNN wrapper │ │ └── crop_model.py # CatBoost crop wrapper │ ├── services/ │ │ ├── orchestrator.py # Merges model outputs + confidence thresholds │ │ ├── rag_service.py # FAISS RAG over your .txt knowledge base │ │ └── llm_service.py # Anthropic Claude streaming advice │ ├── middleware/ │ │ └── auth.py # JWT auth (disable by leaving JWT_SECRET_KEY empty) │ ├── utils/ │ │ ├── preprocessing.py # Image validation + transforms │ │ └── cache.py # Redis cache with in-memory fallback │ └── rag_docs/ # Drop .txt files here for RAG knowledge base └── frontend/ ├── index.html ├── vite.config.js ├── package.json └── src/ ├── App.jsx # Root: header, tabs, language state ├── index.css # Full dark-earthy theme ├── i18n/ │ └── translations.js # EN / Tamil / Hindi / Telugu strings └── components/ ├── DiseaseTab.jsx ├── SoilTab.jsx ├── CropTab.jsx ├── AdviceTab.jsx # Streaming LLM response ├── ImageUpload.jsx └── ConfidenceBar.jsx ``` ## 设置 ### 1. 复制你的训练模型 ``` # 路径在 backend/.env 中配置 # 默认期望您的模型相对于 backend/ 目录 ls ../dataset/agri_ai_dataset/models/ # crop_model.pkl disease_model_fp16.pth label_enoder_crop.pkl soil_model.pth ``` ### 2. 后端 ``` cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 配置环境 cp .env.example .env # 编辑 .env: # - 设置模型路径(已与您现有的路径匹配) # - 添加您的 ANTHROPIC_API_KEY # - 可选设置 REDIS_URL, JWT_SECRET_KEY # 启动服务器 uvicorn main:app --reload --host 0.0.0.0 --port 8000 # API 文档位于: # http://localhost:8000/docs ``` ### 3. 添加 RAG 知识(可选但推荐) ``` mkdir -p backend/rag_docs # 添加任何包含农业知识的 .txt 文件: # - 作物疾病治疗指南 # - 土壤管理实践 # - 区域作物日历 # RAG 服务会在首次查询时自动对它们进行索引。 # 示例: echo "Late blight in tomatoes is caused by Phytophthora infestans. Apply metalaxyl + mancozeb fungicide at first sign of infection. Destroy infected plant material immediately." > backend/rag_docs/tomato_diseases.txt ``` ### 4. 前端 ``` cd frontend npm install npm run dev # 在 http://localhost:5173 打开 # API 调用通过 vite.config.js 代理到 http://localhost:8000 ``` ## 模型配置 编辑 `backend/.env` 以匹配你的具体配置: | 变量 | 默认值 | 描述 | |----------------------|---------------------------------------------------|------------------------------------| | `DISEASE_MODEL_PATH` | `../dataset/agri_ai_dataset/models/disease_model_fp16.pth` | 你的疾病 CNN | | `SOIL_MODEL_PATH` | `../dataset/agri_ai_dataset/models/soil_model.pth` | 你的土壤 CNN | | `CROP_MODEL_PATH` | `../dataset/agri_ai_dataset/models/crop_model.pkl` | 你的 CatBoost | | `LABEL_ENCODER_PATH` | `../dataset/agri_ai_dataset/models/label_enoder_crop.pkl` | Label encoder | | `DISEASE_NUM_CLASSES`| `38` | CNN 输出类别 | | `SOIL_NUM_CLASSES` | `4` | CNN 输出类别 | **如果你的模型架构与 ResNet-50 (疾病) / ResNet-18 (土壤) 不同**,请编辑相应模型文件中的 `_build_resnet50` / `_build_resnet18` 函数,使其与你的架构完全匹配。 ## API 端点 | 方法 | 端点 | 描述 | |--------|---------------------------|-------------------------------------------| | GET | `/api/v1/health` | 检查所有模型及服务状态 | | POST | `/api/v1/analyze/disease` | 上传植物叶片图像 → 疾病结果 | | POST | `/api/v1/analyze/soil` | 上传土壤图像 → 土壤分类 | | POST | `/api/v1/analyze/full` | 同时上传两张图像 | | POST | `/api/v1/recommend/crop` | 发送 N/P/K + 气候 → 作物推荐| | POST | `/api/v1/advice` | 从所有结果中获取流式 LLM 建议 | | POST | `/api/v1/auth/token` | 获取 JWT token (用户名/密码) | ## 自定义 ### 添加作物疾病标签 编辑 `backend/models/disease_model.py` 中的 `DISEASE_CLASSES` 列表和 `TREATMENTS` 字典。 ### 添加土壤类型 编辑 `backend/models/soil_model.py` 中的 `SOIL_CLASSES` 和 `SOIL_PROPERTIES`。 ### 添加语言 1. 在 `frontend/src/i18n/translations.js` 的 `LANGUAGES` 数组中添加条目 2. 在你新增的语言代码下添加完整的翻译对象 3. 在 `backend/main.py` 的 `lang` 校验正则表达式中添加该语言 (`pattern="^(en|ta|hi|te|xx)$"`) ### 更改 LLM 行为 编辑 `backend/services/llm_service.py` 中的 `SYSTEM_PROMPT`。 ### 调整置信度阈值 编辑 `backend/services/orchestrator.py` 中的 `DISEASE_THRESHOLD`、`SOIL_THRESHOLD` 和 `CROP_MIN_PROB`。 ## 生产环境部署 ``` # 后端 — 使用 gunicorn + uvicorn workers pip install gunicorn gunicorn main:app -w 2 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 # 前端 — 构建静态文件 cd frontend && npm run build # 使用 nginx 或任何静态主机服务 dist/ # Redis — 在生产环境中强烈推荐 docker run -d -p 6379:6379 redis:alpine # 在 .env 中设置 REDIS_URL=redis://localhost:6379 # 设置真实的 JWT_SECRET_KEY export JWT_SECRET_KEY=$(openssl rand -hex 32) ```
标签:Apex, AV绕过, DLL 劫持, FastAPI, RAG, 作物推荐, 凭据扫描, 土壤分析, 大语言模型, 搜索引擎查询, 智慧农业, 机器学习, 疾病检测, 自定义脚本, 逆向工具