当前位置: 首页 > news >正文

RAG知识问答,DeepSeek API,百度文心一言接口,Django+Vue前后端分离 智慧农业deepseek结合-AgriScan农业病虫害识别系统 deepseek接口

智慧农业-AgriScan农业病虫害识别系统


,系统源码,RAG知识问答,DeepSeek API,百度文心一言接口,Django+Vue前后端分离,用户端,管理员端,YOLOv8s,农业害虫检测,102类害虫识别,批量图片检测,视频逐帧检测,摄像头实时检测,模型在线训练验证,CSV导出,MySQL数据库,ECharts可视化,

1

1

1

1

这是一个非常完整且功能强大的全栈农业 AI 项目。根据你提供的截图和描述,AgriScan 农业病虫害智能识别系统集成了YOLOv8s 目标检测RAG 知识问答DeepSeek/文心一言大模型以及Django + Vue 前后端分离架构。

由于完整项目代码量巨大(通常包含数千行代码),无法在单次回复中全部展示。但我将为你提供核心架构搭建指南以及最关键模块的完整代码实现,帮助你快速从零构建这个系统。


1. 项目架构设计

技术栈
  • 前端:Vue 3 + Vite + Element Plus + ECharts。
  • 后端:Django + Django REST Framework (DRF)。
  • AI 核心:Ultralytics YOLOv8s(害虫检测) + LangChain(RAG 框架) + DeepSeek API/百度文心一言。
  • 数据库:MySQL。
目录结构建议
AgriScan/ ├── backend/ # Django 后端 │ ├── api/ # DRF 接口 │ ├── core/ # AI 核心逻辑 (YOLO + RAG) │ ├── media/ # 上传的图片/视频 │ └── manage.py └── frontend/ # Vue 前端 ├── src/ │ ├── views/ # 页面 │ └── api/ # 请求封装

2. 后端核心代码 (Django)

环境依赖 (requirements.txt)
Django>=4.2 djangorestframework ultralytics>=8.0.0 langchain openai # 用于调用 DeepSeek pymysql pillow pandas
数据库模型 (backend/api/models.py)

定义了用户、检测记录和知识库文档。

fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUserclassUser(AbstractUser):ROLE_CHOICES=(('admin','管理员'),('farmer','农户'))role=models.CharField(max_length=10,choices=ROLE_CHOICES,default='farmer')phone=models.CharField(max_length=20,blank=True)classDetectionRecord(models.Model):user=models.ForeignKey(User,on_delete=models.CASCADE)image=models.ImageField(upload_to='detections/')result_json=models.JSONField()# 存储YOLO检测到的类别和坐标created_at=models.DateTimeField(auto_now_add=True)classKnowledgeBase(models.Model):pest_name=models.CharField(max_length=100,unique=True)description=models.TextField()# 防治方法、特征描述embedding=models.JSONField(blank=True,null=True)# 存储向量(实际生产建议用向量数据库)
AI 核心逻辑:YOLOv8s 检测 (backend/core/yolo_inference.py)

这是实现“102 类害虫识别”的核心。

fromultralyticsimportYOLOimportos# 加载预训练权重 (需在项目中放入 best.pt)MODEL_PATH=os.path.join(os.path.dirname(__file__),'weights','best.pt')model=YOLO(MODEL_PATH)defdetect_pests(image_path):""" 执行害虫检测 :param image_path: 图片路径 :return: 包含检测框、类别、置信度的字典 """results=model(image_path,conf=0.25)# 置信度阈值 0.25result_data=[]forresultinresults:boxes=result.boxesforboxinboxes:# 获取坐标和类别xyxy=box.xyxy[0].tolist()# x1, y1, x2, y2conf=box.conf[0].item()# 置信度cls_id=int(box.cls[0].item())# 类别IDcls_name=result.names[cls_id]# 类别名称result_data.append({'box':xyxy,'confidence':round(conf,2),'class':cls_name})returnresult_data
RAG 知识问答与大模型接口 (backend/core/rag_service.py)

利用 DeepSeek 或 文心一言 结合本地知识库进行回答。

importosfromopenaiimportOpenAI# DeepSeek 兼容 OpenAI 接口defget_ai_advice(pest_name):""" 基于检索增强生成 (RAG) 的问答 1. 先从本地数据库查找 pest_name 的防治知识 2. 将知识作为上下文喂给 DeepSeek/文心一言 """# 模拟从数据库检索知识context=f"关于{pest_name}的防治方法:建议使用高效氯氰菊酯进行喷雾..."client=OpenAI(api_key="YOUR_DEEPSEEK_API_KEY",base_url="https://api.deepseek.com")prompt=f""" 你是一个农业专家。请根据以下信息回答用户问题: 背景知识:{context}用户问题:{pest_name}怎么治? 要求:回答专业、简洁,适合农民阅读。 """response=client.chat.completions.create(model="deepseek-chat",messages=[{'role':'user','content':prompt}],stream=False)returnresponse.choices[0].message.content
API 接口视图 (backend/api/views.py)

处理图片上传、检测触发和结果返回。

fromrest_framework.viewsimportAPIViewfromrest_framework.responseimportResponsefrom.modelsimportDetectionRecordfromcore.yolo_inferenceimportdetect_pestsclassDetectView(APIView):defpost(self,request):# 1. 获取上传的图片img_file=request.FILES.get('image')record=DetectionRecord.objects.create(user=request.user,image=img_file)# 2. 调用 YOLO 模型进行检测image_path=record.image.path results=detect_pests(image_path)# 3. 保存结果并返回record.result_json=results record.save()returnResponse({'status':'success','data':results,'image_url':record.image.url})

3. 前端核心代码 (Vue 3)

图片检测页面 (frontend/src/views/Detection.vue)

实现了图片上传、预览以及调用后端接口显示检测框。

<template> <div class="detection-container"> <el-upload class="upload-demo" drag action="/api/detect/" :on-success="handleSuccess" :headers="{ Authorization: 'Bearer ' + token }" > <el-icon class="el-icon--upload"><upload-filled /></el-icon> <div class="el-upload__text">拖拽图片到此处或 <em>点击上传</em></div> </el-upload> <div v-if="imageUrl" class="result-area"> <h3>检测结果:</h3> <!-- 使用 canvas 或直接 img 显示结果,这里简化为显示图片 --> <img :src="imageUrl" class="detected-image" /> <el-table :data="detectionResults" style="width: 100%"> <el-table-column prop="class" label="害虫名称" /> <el-table-column prop="confidence" label="置信度" /> </el-table> </div> </div> </template> <script setup> import { ref } from 'vue' import { ElMessage } from 'element-plus' const imageUrl = ref('') const detectionResults = ref([]) const token = localStorage.getItem('token') const handleSuccess = (response) => { if (response.status === 'success') { imageUrl.value = 'http://127.0.0.1:8000' + response.image_url detectionResults.value = response.data ElMessage.success('检测完成!') } } </script> <style scoped> .detection-container { padding: 20px; } .detected-image { max-width: 100%; border: 2px solid #42b983; margin-top: 20px; } </style>

4. 如何运行

  1. 准备模型:下载训练好的best.pt(YOLOv8s) 放入backend/core/weights/目录。
  2. 配置数据库:在backend/settings.py中配置 MySQL 连接,运行python manage.py migrate
  3. 启动后端python manage.py runserver
  4. 启动前端:进入frontend目录,运行npm install然后npm run dev

这套代码框架已经覆盖了你截图中展示的核心业务流程(上传 -> 检测 -> 显示 -> 问答)。

http://www.cnnetsun.cn/news/2015717.html

相关文章:

  • 从代码到财富:程序员的量化投资跃迁之路
  • SAP ABAP实战:用BAPI_PR_CHANGE批量更新采购申请,附审批状态联动修改完整代码
  • 锐捷NFPP与DAI/IPSG联动实战:如何构建多层防ARP欺骗体系?
  • 3步解决Windows 11 LTSC微软商店缺失问题:完整恢复方案
  • 别再乱配Celery了!从Worker启动到队列配置,一份避坑指南帮你搞定生产环境
  • OpenClaw 工具调用完整链路
  • 新手别怕!从零玩转ZYNQ-7000:手把手配置Vivado工程、搭建PetaLinux系统全流程
  • AI写教材大揭秘!低查重的秘密武器,一键打造专业教材框架和内容!
  • 别只装TensorRT!用tar包安装后,手把手带你跑通第一个PyTorch模型推理Demo
  • MySQL外键怎么定义?数据关联怎么更清晰稳固?
  • fluent数值波高衰减怎么设置?为什么会出现衰减?
  • real-anime-z企业知识库集成:对接内部素材库实现角色一致性生成
  • P1180 驾车旅游【洛谷算法习题】
  • 5步掌握JD-GUI:让Java字节码反编译变得如此简单
  • 英雄联盟自动化工具:3大核心功能让你告别繁琐操作
  • EPLAN P8新手避坑指南:从删格设置到快捷键,这10个基础设置让你效率翻倍
  • 不止是F4:用MCNP探测器(Tally)实现空间分辨计数的进阶玩法
  • 实战:用WRF-Chem V3.9.1.1模拟一次华北雾霾过程(附完整namelist配置与排放数据处理心得)
  • 如何选择最适合你的编程字体:Maple Mono完整指南与实战配置
  • 看不到日志的坑!
  • 如何一键永久保存QQ空间全部说说?GetQzonehistory终极备份指南
  • Simulink代码生成避坑指南:当Matlab Function遇上指针型C函数,这几个细节千万别忽略
  • 告别闪退!手把手教你用NP管理器V3.0.18搞定APK签名与共存(附Root/Xposed环境避坑指南)
  • MATLAB R2022b新功能实测:用stem函数直接画表格数据,效率提升不止一点点
  • 再探 Harness Engineering 该做点什么?
  • 3步解锁:如何快速解密RPG Maker加密资源文件?
  • 实测5款降AI率工具:2026最值得选的工具排行
  • 高数小白必看!3种不定积分解法+经典例题详解(附李林880同款练习题)
  • 一劳永逸解决Windows和Office激活难题:KMS_VL_ALL_AIO终极指南
  • 软件工程 3.0:大模型驱动的研发新范式,重塑软件全生命周期