基于 FastAPI + LangChain + 大模型 构建的"多模态反诈智能研判系统"后端服务。本项目采用全异步架构,集成了基于 ChromaDB 的 RAG(检索增强生成)外挂知识库,以及自动化爬虫数据飞轮。
- Agent 1 (研判专家):接收 Android 端设备特征与文本,检索本地防诈向量库,输出高精度研判报告与处置建议。
- Agent 2 (洗稿内勤):配合定时爬虫,异步清洗互联网海量反诈长文,提取高维特征并持续"喂"给向量数据库,实现系统自我进化。
- Agent 3 (视觉刑警):接收前端截屏上传,调用多模态大模型(Vision LLM)精准识别伪造应用 UI、屏幕共享诱导等高危视觉元素。
guardian_backend/
├── app/ # 应用核心代码目录
│ ├── __init__.py # 应用包初始化
│ ├── main.py # FastAPI 绝对入口 (生命周期与路由挂载)
│ ├── core/ # 核心配置层
│ │ ├── __init__.py # 核心包初始化
│ │ └── config.py # 强类型环境变量管理 (Pydantic V2)
│ ├── api/ # 路由接口层
│ │ ├── __init__.py # API 包初始化
│ │ ├── health.py # 探活接口
│ │ ├── analyze.py # 文本/行为研判接口
│ │ └── vision.py # 多模态视觉研判接口
│ ├── schemas/ # Pydantic 数据验证层
│ │ ├── __init__.py # Schema 包初始化
│ │ └── payload.py # 请求与响应模型定义
│ ├── services/ # 业务大脑层
│ │ ├── __init__.py # Services 包初始化
│ │ ├── agent_analyst.py # Agent 1 核心逻辑 (含正则脱壳与兜底策略)
│ │ ├── agent_etl.py # Agent 2 核心逻辑
│ │ ├── agent_vision.py # Agent 3 核心逻辑
│ │ └── prompts.py # 集中管理的 Prompt 模板库
│ ├── database/ # 数据持久层
│ │ ├── __init__.py # Database 包初始化
│ │ └── vector_store.py # ChromaDB 向量数据库封装
│ └── tasks/ # 后台异步任务层
│ ├── __init__.py # Tasks 包初始化
│ ├── crawler.py # 异步网络爬虫 (防屏蔽处理)
│ └── scheduler.py # APScheduler 定时任务调度器
├── .env # 本地环境变量 (需配置 API KEY)
├── requirements.txt # Python 依赖清单
└── README.md # 项目说明文档
Android 端应用数据
↓
POST /api/analyze
↓
数据解析与验证
↓
构建分析文本
↓
向量数据库搜索相似案例
↓
构建大模型提示词
↓
LangChain 调用文字处理模型
↓
解析 JSON 结果
↓
构建响应对象
↓
返回研判结果
↓ (大模型调用失败时)
基于规则的兜底分析
Android 端图片
↓
POST /api/analyze_image
↓
文件格式校验
↓
读取图片并转换为 Base64
↓
构建视觉模型提示词
↓
AsyncOpenAI 调用视觉模型
↓
解析 JSON 结果
↓
返回分析结果
↓ (模型调用失败时)
容灾降级兜底响应
建议使用 Python 3.10+ 环境。
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt在根目录创建 .env 文件,并填入你的 API 配置(推荐使用硅基流动等兼容 OpenAI 协议的服务):
# LLM API 配置
LLM_API_KEY=your_actual_api_key
LLM_BASE_URL=https://api.siliconflow.cn/v1
LLM_TEXT_MODEL_NAME=Qwen/Qwen2.5-7B-Instruct
LLM_VISION_MODEL_NAME=Qwen/Qwen2-VL-7B-Instruct
# 向量数据库配置
VECTOR_DB_PATH=./vector_db
# 服务器配置
HOST=0.0.0.0
PORT=8000
# 爬虫配置
CRAWLER_INTERVAL=86400
# 在项目根目录执行
uvicorn app.main:app --host 0.0.0.0 --port 8000分析应用包名、权限、行为特征,并结合知识库返回评估结果。
- 接口地址:POST /api/analyze
- 请求体示例:
{
"app_package": "com.hacker.fakefinance",
"app_name": "内幕理财VIP",
"permissions": ["android.permission.READ_SMS"],
"network_connections": [],
"suspicious_behavior": ["诱导开启屏幕共享"],
"user_input": "网友推荐的理财APP"
}- 响应示例:
{
"risk_level": "high",
"risk_type": "疑似诈骗",
"confidence": 0.9,
"explanation": "应用申请了敏感权限,存在诈骗风险",
"similar_cases": ["相似案例1", "相似案例2"],
"recommended_actions": ["立即卸载", "修改密码"]
}通过图片分析界面中的诈骗风险点(如冒充公检法、诱导转账截图等)。
- 接口地址:POST /api/analyze_image
- 请求参数:使用 multipart/form-data 格式上传文件
file: 图片文件user_profile: string 用户画像 (可选)device_id: string 设备ID (可选)
- 响应示例:
{
"is_true": true,
"risk_level": "high",
"reason": "图片中包含伪造的公检法证件,疑似诈骗"
}- 接口地址:GET /api/health
- 响应示例:
{
"status": "healthy",
"message": "Guardian Backend is running"
}| 配置项 | 说明 | 默认值 |
|---|---|---|
| LLM_API_KEY | 大模型 API 密钥 | 必填 |
| LLM_BASE_URL | 自定义模型端点 | 可选 |
| LLM_TEXT_MODEL_NAME | 文字处理模型名称 | gpt-3.5-turbo |
| LLM_VISION_MODEL_NAME | 视觉模型名称 | gpt-4o |
| VECTOR_DB_PATH | 向量数据库存储路径 | ./vector_db |
| HOST | 服务器监听地址 | 0.0.0.0 |
| PORT | 服务器监听端口 | 8000 |
| CRAWLER_INTERVAL | 爬虫执行间隔(秒) | 86400 |
- 实时反诈研判 - 接收 Android 端数据,结合向量数据库中的案例,通过大模型进行智能研判
- 图像反诈识别 - 接收 Android 端上传的截图,通过多模态大模型识别图片中的诈骗元素
- 自动案例更新 - 定时从官方渠道抓取最新反诈案例,清洗后存入向量数据库
- 三 Agent 架构 - 分离研判、数据处理和视觉识别逻辑,提高系统稳定性和可维护性